第五十五章 本地化和基于标签的开发
介绍
在基于标记的CSP
页面开发过程中,可以配置某些标记,以便它们用消息字典条目替换文本。
为此,在标记内部提供本地化属性language
、domain
或textid
。
以下标签支持这些属性:
-
<csp:text>
-
<span>
-
<div>
-
<input>
(当类型为“SUBMIT”
、“BUTTON”
或“RESET”
时)
在大多数情况下,这些标记只在运行时工作,当为language
、domain
和textid
提供的值指示要从消息字典检索哪条消息时。
然而,在有限的情况下,这些标记在编译时和运行时具有不同的用途。
它们可以在编译时自动为消息字典生成条目,然后在运行时检索和显示这些条目。
以下部分将解释这是如何工作的:
- 运行时的本地化标记
- 编译时的本地化标记
要进行本地化CSP
应用程序的简单演示,在运行Caché时输入以下URL: http://localhost:57772/csp/samples/language.csp
运行时的本地化标记
重要提示:此主题仅适用于CSP
标记<CSP:text>
, <span>
, <div>
, <input>
和<button>
。
在运行时,当CSP
页面显示时,标记将自身及其内容替换为消息字典中的文本。
文本的选择由标记提供的语言、域和textid
属性值指定。
例如,以下语法将被fr(法语)语言、样例域和菜单消息ID
指定的消息替换。
<csp:text>
标签内提供的文本(在本例中是菜单)被忽略:
<csp:text textid="menu" language="fr" domain="sample">Menu</csp:text>
如果任何属性被省略或为空(值""
),language
, domain
和textid
的默认值是可用的:
- 如果没有指定
language
,则%response
。
使用语言。 - 如果没有指定
domain
,则%response
。
域使用。 Textid
是必需的
默认的语言
大多数开发人员有意不提供任何语言属性,以便在运行时,语言默认为适合地区。
如果没有提供,language
默认为%response
的值。
语言,该语言自动从浏览器设置获取其运行时值。
可以在SAMPLES
名称空间中的本地化示例的源代码中看到这种约定的示例。
如下所示:
Start Studio
.- 更改为
SAMPLES
名称空间。 - 在
Workspace
窗口中,单击Namespace
选项卡。 - 选择
CSP
文件。 - 打开文件
/csp/samples/language.csp
。
默认域
使用CSP
页面类的DOMAIN
参数的值初始化%Response.Domain
属性。还可以使用标记的DOMAIN
属性设置%Response.DOMAIN
的值,如下所示:
<csp:class domain="myDomainName">
消息参数
如果消息文本包含参数(%1
,%2
,%3
,%4
),下面的标记属性允许指定相应的替换文本:arg1
, arg2
, arg3
, arg4
。
可以提供文字值或使用变量。
例如:
<csp:text textid="sessionInfo" arg1="#(userName)#" arg2="#(roleID)#" />
按钮文字
在基于标记的CSP
文件中,按钮上显示的文本通常使用<input type="button">
或<button>
标记的值属性指定。
当<input>
标记使用本地化属性(语言、域或textid
)时,value
属性将被忽略。
按钮上显示的文本是来自消息字典的文本。
如果想本地化<button>
标记上的文本,请使用<csp:text>
标记的language
、domain
或textid
属性。
编译时的本地化标记
重要提示:本主题仅适用于CSP
标记<CSP:text>
, <span>
, <div>
和<input>
。
textid
属性可以有空值""
。
如果是这样,在编译基于标记的CSP
文件时,将在消息字典中自动生成一条新消息。
生成的消息的文本由CSP
标记的内容组成。
Caché通过计算文本的32
位CRC(循环冗余校验)生成消息ID。
只有<csp:text>
标记允许实际上省略所需的textid
属性。
其他的本地化标记要求您至少提供一个空值“”
。
如果<csp:text>
标签缺少textid
属性,系统将自动生成一条新的消息和消息ID
值。
在<csp:text>
中省略textid
的情况下,标记内的文本可以在开头包含一个可选的@textID@
字符串。
textID
是希望分配给消息的消息ID
。
例如:
<csp:text>@simpleMenu@Menu</csp:text>
在上面的示例中,Caché不生成消息ID
。
它生成一条文本为Menu
的消息,并为其提供消息ID simpleMenu
。
当CSP
标记用于在编译时生成消息字典条目时,它仍然作为引用在运行时检索该条目。