当前位置:网站首页>第十六章 字符串本地化和消息字典(二)
第十六章 字符串本地化和消息字典(二)
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 标志(显示)。
边栏推荐
- 为什么图片传输要使用base64编码
- 【MySQL从入门到精通】【高级篇】(四)MySQL权限管理与控制
- 测试流程整理(2)
- 奇妙秘境 码蹄集
- Understand chisel language thoroughly 09. Chisel project construction, operation and testing (I) -- build and run chisel project with SBT
- 92.(cesium篇)cesium楼栋分层
- Understand chisel language thoroughly 05. Chisel Foundation (II) -- combinational circuits and operators
- Test process arrangement (3)
- Golang uses JSON unmarshal number to interface{} number to become float64 type (turn)
- Haobo medical sprint technology innovation board: annual revenue of 260million Yonggang and Shen Zhiqun are the actual controllers
猜你喜欢
随机推荐
NowCoder 反转链表
基于51单片机的超声波测距仪
2022 practice questions and mock exams for the main principals of hazardous chemical business units
[FAQ] summary of common causes and solutions of Huawei account service error 907135701
Migration from go vendor project to mod project
Leetcode T49: 字母异位词分组
尊重他人的行为
C# wpf 实现截屏框实时截屏功能
10.(地图数据篇)离线地形数据处理(供Cesium使用)
How to operate and invest games on behalf of others at sea
Xcode 异常图片导致ipa包增大问题
MySQL的存储过程练习题
学内核之三:使用GDB跟踪内核调用链
Detailed index of MySQL
R language ggplot2 visualization: gganimate package creates animated graph (GIF) and uses anim_ The save function saves the GIF visual animation
Test evaluation of software testing
Ws2818m is packaged in cpc8. It is a special circuit for three channel LED drive control. External IC full-color double signal 5v32 lamp programmable LED lamp with outdoor engineering
The game goes to sea and operates globally
Can mortgage with housing exclude compulsory execution
海外游戏代投需要注意的








![去除重复字母[贪心+单调栈(用数组+len来维持单调序列)]](/img/af/a1dcba6f45eb4ccc668cd04a662e9c.png)
