当前位置:网站首页>第十六章 字符串本地化和消息字典(二)
第十六章 字符串本地化和消息字典(二)
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.txt
languages
- (可选)以逗号分隔的语言代码列表。列表中的每个值都必须是全小写的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
标志(显示)。
边栏推荐
- Understand chisel language thoroughly 07. Chisel Foundation (IV) - bundle and VEC
- Understand chisel language thoroughly 05. Chisel Foundation (II) -- combinational circuits and operators
- 92.(cesium篇)cesium楼栋分层
- How to operate and invest games on behalf of others at sea
- Migration from go vendor project to mod project
- sql优化之查询优化器
- 【FAQ】华为帐号服务报错 907135701的常见原因总结和解决方法
- php 日志调试
- Use of tiledlayout function in MATLAB
- 学内核之三:使用GDB跟踪内核调用链
猜你喜欢
为什么图片传输要使用base64编码
测试流程整理(3)
Why should Base64 encoding be used for image transmission
flink sql-client.sh 使用教程
Understand chisel language thoroughly 09. Chisel project construction, operation and testing (I) -- build and run chisel project with SBT
【FAQ】华为帐号服务报错 907135701的常见原因总结和解决方法
The font of markdown grammar is marked in red
sharding key type not supported
Understand chisel language thoroughly 06. Chisel Foundation (III) -- registers and counters
【MySQL从入门到精通】【高级篇】(五)MySQL的SQL语句执行流程
随机推荐
Apple 5g chip research and development failure: continue to rely on Qualcomm, but also worry about being prosecuted?
leetcode:6110. 网格图中递增路径的数目【dfs + cache】
Why should Base64 encoding be used for image transmission
2022游戏出海实用发行策略
ViewModel 初体验
The game goes to sea and operates globally
Haobo medical sprint technology innovation board: annual revenue of 260million Yonggang and Shen Zhiqun are the actual controllers
Blob, text geometry or JSON column'xxx'can't have a default value query question
数据埋点的一些问题和想法
Leetcode T47: 全排列II
R language uses bwplot function in lattice package to visualize box plot and par Settings parameter custom theme mode
NowCoder 反转链表
Ml: introduction, principle, use method and detailed introduction of classic cases of snap value
一种架构来完成所有任务—Transformer架构正在以一己之力统一AI江湖
GCC [6] - 4 stages of compilation
How to operate and invest games on behalf of others at sea
Understand chisel language thoroughly 06. Chisel Foundation (III) -- registers and counters
海外游戏代投需要注意的
2022 game going to sea practical release strategy
LiveData