当前位置:网站首页>第十六章 字符串本地化和消息字典(二)
第十六章 字符串本地化和消息字典(二)
2022-07-04 12:52:00 【yaoxin521123】
文章目录
第十六章 字符串本地化和消息字典(二)
XML 消息文件
XML 消息文件是消息字典的导出。这也是希望导入的任何消息的必需格式。
只要有可能,XML 消息文件应该使用 UTF-8 编码。但是,在某些情况下,开发人员或翻译人员可能会使用本地平台编码,例如 shift-jis,以便于编辑 XML 消息文件。无论 XML 文件使用何种编码,应用程序的语言环境都必须支持它,并且它必须能够表达该语言的消息。
XML 消息文件可能包含一种语言和多个域的消息。
Element
<MsgFile> 元素是 XML 消息文件的顶级容器,每个文件只有一个 <MsgFile>元素。
<MsgFile>元素有一个必需的属性,Language。 <MsgFile>Language 属性的值是一个全小写的 RFC1766 代码,用于标识文件的语言。它由一个或多个部分组成:主要语言标签(例如 en 或 ja)可选地后跟连字符 (-) 和次要语言标签(en-gb 或 ja-jp)。
在以下示例中,此语言为“en”(英语)。
<?xml version="1.0" encoding="utf-8" ?>
<MsgFile Language="en">
<MsgDomain Domain="sample">
<Message Id="source">Source</Message>
<Message Id="menu">Samples Menu</Message>
</MsgDomain>
</MsgFile>
<MsgFile>必须包含至少一个<MsgFile> 元素。它可能包含多个<MsgFile>。
Element
<MsgDomain>元素具有一个必需的属性域。 <MsgDomain> Domain 属性的值是用来组织应用程序中消息的域名之一。
任何 <MsgDomain>元素都可以包含零个或多个 <MsgDomain> 元素。
Element
<Message> 元素有一个必需的属性,Id。 <Message> Id 属性的值是用来组织应用程序中的消息的消息 ID 字符串之一。
任何 <Message> 元素都可以包含一个文本字符串。字符串可以由以下任何一项组成,单独或组合:
- 文件格式允许的简单文本
- 替换参数
%1、%2、%3或%4 HTML格式- ObjectScript 格式的字符串表达式
以下示例使用 %1、%2、用于粗体格式的 HTML 标记以及两个连续双引号字符表示单个双引号的 ObjectScript 字符串约定:
<Message>
The session $Username="<b>%1</b>" $Roles="<b>%2</b>"
</Message>
管理消息字典
本节总结了使用消息字典时最常用的 %Library.MessageDictionary 方法。可以使用这些方法:
- 从
XML消息文件导入消息 - 将消息导出到 XML 消息文件
- 从消息字典中删除消息
- 在消息字典中列出消息
导入 XML 消息文件
要导入 XML 消息文件,请打开终端并执行以下操作:
- 更改为正在开发应用程序的命名空间:
set $namespace = "myNamespace"
- 运行导入命令。默认情况下,每种语言都在一个单独的 XML 消息文件中,文件名末尾带有语言环境名称。因此:
- 只能导入特定语言的那些消息:
SET file="C:\myLocation\Messages_ja-jp.xml"
DO ##class(%Library.MessageDictionary).Import(file)
- 或者,为同一个应用程序导入多种语言:
SET myFiles="C:\myLocation"
DO ##class(%Library.MessageDictionary).ImportDir(myFiles,"d")
- 检查同一命名空间中的
^IRIS.Msg全局变量以查看结果。
以下主题总结了这两种导入方法。
导入特定 XML 消息文件
%Library.MessageDictionary 类方法 Import() 具有以下签名:
classmethod Import(filepath As %String, flag As %String = "") returns %Status
filepath- 导入由filepath指定的XML消息文件。确保目录中只有 XML 消息文件,因为其他 XML 文件会生成错误。flag- (可选)如果提供,d标志(显示)指示终端控制台将在导入文件时显示确认消息。否则,没有确认。
导入目录中的所有 XML 消息文件
%Library.MessageDictionary 类方法 ImportDir() 具有以下签名:
classmethod ImportDir(directory As %String, flag As %String = "") returns %Status
directory- 导入指定目录中的所有XML消息文件。flag- (可选)如果提供,d标志(显示)指示终端控制台将在导入文件时显示确认消息。否则,没有确认。
导出 XML 消息文件
要将消息字典的部分导出到 XML 消息文件,请在终端中执行以下操作:
- 更改为正在开发应用程序的命名空间:
set $namespace = "myNamespace"
- 识别输出文件及其位置:
SET file="C:\myLocation\Messages.xml"
- 运行导出命令:
- 仅导出特定域中的那些消息可能是可行的:
DO ##class(%Library.MessageDictionary).ExportDomainList(file,"myDomain")
- 或者,导出命名空间中的所有消息:
DO ##class(%Library.MessageDictionary).Export(file)
以一种语言导出特定域
%Library.MessageDictionary 类方法 ExportDomainList() 具有以下签名:
classmethod ExportDomainList(file As %String, domainList As %String, language As %String) returns %Status
file- (必需)此格式的输出文件名模板:filepath.ext实际输出文件名将语言值附加到扩展名为ext的文件路径中。domainList- (可选)要导出的域的逗号分隔列表。language- (可选)仅导出指定的语言。该值必须是全小写的RFC1766代码。如果未提供,则该值默认为系统默认语言,该值存储在特殊变量$$$DefaultLanguage中。
以特定语言导出所有域
%Library.MessageDictionary 类方法 Export() 具有以下签名:
file- (必需)此格式的输出文件名模板:filepath.ext输出文件的名称是filepathlanguage-code.ext例如,如果文件是c:/temp/mylang_.txt并且语言包括语言代码ja- jp,则输出文件之一命名为c:/temp/mylang_ja-jp.txtlanguages- (可选)以逗号分隔的语言代码列表。列表中的每个值都必须是全小写的RFC1766代码。如果未指定语言或为空,则导出数据库中的所有语言。每种语言都使用为file参数描述的约定导出到一个单独的文件中。flag- (可选)如果提供,则s标志(系统)指示除了应用程序消息字典之外还要导出系统消息字典。否则,仅导出应用程序消息字典。
删除消息
要删除消息,请使用以下命令:
Set status = ##class(%MessageDictionary).Delete(languages,flag)
语言是可选的以逗号分隔的语言列表。如果未指定语言,则删除所有语言。默认值是仅删除应用程序消息。 s 标志(系统)是一个可选标志,指示是否也删除系统消息。与包含文件关联的消息名称总是被删除,但包含文件不会。还支持 d 标志(显示)。
列出消息
要获取为指定域加载了消息的所有语言的列表,请使用 GetLanguages() 方法:
Set list = ##class(%MessageDictionary).GetLanguages(domain,flag)
GetLanguages() 以标准 RFC1766 格式返回语言代码的 %ListofDateTypes 格式列表,全部为小写。如果指定了域,则列表中仅包含指定域存在的语言。否则,所有语言都包含在列表中。 s 标志(系统)是一个可选标志,指示是否要返回系统或应用程序消息支持的语言。默认值是返回应用程序消息的语言。还支持 d 标志(显示)。
边栏推荐
- Supprimer les lettres dupliquées [avidité + pile monotone (maintenir la séquence monotone avec un tableau + Len)]
- R language uses follow up of epidisplay package The plot function visualizes the longitudinal follow-up map of multiple ID (case) monitoring indicators, and uses stress The col parameter specifies the
- gin集成支付宝支付
- Xcode 异常图片导致ipa包增大问题
- MySQL的触发器
- 商业智能BI财务分析,狭义的财务分析和广义的财务分析有何不同?
- Progress in architecture
- Understand chisel language thoroughly 10. Chisel project construction, operation and testing (II) -- Verilog code generation in chisel & chisel development process
- Excel quickly merges multiple rows of data
- 聊聊保证线程安全的 10 个小技巧
猜你喜欢

Understand chisel language thoroughly 10. Chisel project construction, operation and testing (II) -- Verilog code generation in chisel & chisel development process
![去除重复字母[贪心+单调栈(用数组+len来维持单调序列)]](/img/af/a1dcba6f45eb4ccc668cd04a662e9c.png)
去除重复字母[贪心+单调栈(用数组+len来维持单调序列)]

Understand chisel language thoroughly 11. Chisel project construction, operation and test (III) -- scalatest of chisel test

MySQL之详解索引

Test process arrangement (3)

Understand chisel language thoroughly 09. Chisel project construction, operation and testing (I) -- build and run chisel project with SBT

Install MySQL

How to package QT and share exe

【信息检索】链接分析

C# wpf 实现截屏框实时截屏功能
随机推荐
2022游戏出海实用发行策略
opencv3.2 和opencv2.4安装
【FAQ】华为帐号服务报错 907135701的常见原因总结和解决方法
利用Shap值进行异常值检测
ML之shap:基于boston波士顿房价回归预测数据集利用Shap值对LiR线性回归模型实现可解释性案例
sharding key type not supported
[FAQ] Huawei Account Service Error Report 907135701 Common reasons Summary and Solutions
NowCoder 反转链表
一种架构来完成所有任务—Transformer架构正在以一己之力统一AI江湖
Incremental ternary subsequence [greedy training]
PHP log debugging
LiveData
File creation, writing, reading, deletion (transfer) in go language
【Matlab】conv、filter、conv2、filter2和imfilter卷积函数总结
C# wpf 实现截屏框实时截屏功能
One architecture to complete all tasks - transformer architecture is unifying the AI Jianghu on its own
Visual Studio调试方式详解
golang fmt. Printf() (turn)
[matlab] summary of conv, filter, conv2, Filter2 and imfilter convolution functions
[MySQL from introduction to proficiency] [advanced chapter] (V) SQL statement execution process of MySQL