当前位置:网站首页>第十六章 字符串本地化和消息字典(二)
第十六章 字符串本地化和消息字典(二)
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
标志(显示)。
边栏推荐
- 流行框架:Glide的使用
- Map of mL: Based on Boston house price regression prediction data set, an interpretable case is realized by using the map value to the LIR linear regression model
- Mask wearing detection based on yolov1
- Blob, text geometry or JSON column'xxx'can't have a default value query question
- Use of arouter
- Progress in architecture
- R language uses the DOTPLOT function of epidisplay package to visualize the frequency of data points in different intervals in the form of point graph, and uses the by parameter to specify the groupin
- 使用CLion编译OGLPG-9th-Edition源码
- Code hoof collection of wonderful secret place
- NowCoder 反转链表
猜你喜欢
Intelligence d'affaires bi analyse financière, analyse financière au sens étroit et analyse financière au sens large sont - ils différents?
How to package QT and share exe
Product identification of intelligent retail cabinet based on paddlex
失败率高达80%,企业数字化转型路上有哪些挑战?
leetcode:6110. 网格图中递增路径的数目【dfs + cache】
The font of markdown grammar is marked in red
测试流程整理(2)
TestSuite and testrunner in unittest
DDD application and practice of domestic hotel transactions -- Code
ML之shap:基于boston波士顿房价回归预测数据集利用shap值对XGBoost模型实现可解释性案例
随机推荐
[antd] how to set antd in form There is input in item Get input when gourp Value of each input of gourp
Rich text editing: wangeditor tutorial
redis 日常笔记
One architecture to complete all tasks - transformer architecture is unifying the AI Jianghu on its own
Xcode 异常图片导致ipa包增大问题
【Matlab】conv、filter、conv2、filter2和imfilter卷积函数总结
Test process arrangement (3)
Visual Studio调试方式详解
Mongodb commonly used 28 query statements (forward)
R language uses the mutation function of dplyr package to standardize the specified data column (using mean function and SD function), and calculates the grouping mean of the standardized target varia
Understand chisel language thoroughly 11. Chisel project construction, operation and test (III) -- scalatest of chisel test
codeforce:C. Sum of Substrings【边界处理 + 贡献思维 + 灵光一现】
数据中台概念
C # WPF realizes the real-time screen capture function of screen capture box
如何游戏出海代运营、游戏出海代投
卷积神经网络经典论文集合(深度学习分类篇)
【云原生】我怎么会和这个数据库杠上了?
Why should Base64 encoding be used for image transmission
富文本编辑:wangEditor使用教程
Understand chisel language thoroughly 10. Chisel project construction, operation and testing (II) -- Verilog code generation in chisel & chisel development process