文本字符串本地化
创建对象:
- 开发人员
- 用户
文本字符串本地化允许图像目录包含同一字符串值的多个特定于区域设置的表示形式。
服务器将与locale=
指定的区域设置匹配的表示返回到客户端,从而避免客户端本地化,并允许应用程序通过发送相应的locale=
值和IS文本请求来切换区域设置。
范围
文本字符串本地化应用于以下目录字段中包含本地化令牌 ^loc= *
locId*^
的所有字符串元素:
目录字段 | 字段中的字符串元素 |
---|---|
目录::图像集 |
包含可翻译字符串的任何子元素(由分隔符“,”“;”“:”和/或字段的开始/结束位置的任何组合分隔)。 可本地化字段开头的 0xrrggbb 颜色值从本地化中排除,无需修改即可传递。 |
目录::映射 | 任何单引号或双引号属性值,但坐标= 和形状= 属性的值除外。 |
目录::目标 | 任何目标的值。*.label 和目标*.userdata 属性。 |
目录::UserData | 任何属性的值。 |
字符串语法
图像目录中启用了本地化的 string
元素由一个或多个本地化字符串组成,每个字符串前面都有一个本地化令牌。
stringElement | [ defaultString ]*{ localizationToken localizedString } |
本地化令牌 | ^loc= locStr ^ |
locId | localizedString 的内部区域设置ID位于此 localizedToken 之后。 |
localizedString | 本地化的字符串。 |
默认字符串 | 用于未知区域设置的字符串。 |
locId
必须是ASCII格式,不能包括“^”。
“^”可能出现在具有或不具有HTTP编码的子字符串中的任何位置。 服务器将整个 localizationToken
^loc=locId^
模式匹配为分隔子字符串。
stringElements
不包含至少一个 localizationToken
,不考虑进行本地化。
翻译图
attribute::LocaleStrMap
定义服务器用于确定哪个 localizedStrings
返回到客户端的规则。 它包含输入 locales
的列表(与使用locale=
指定的值匹配),每个列表均不含一个或多个内部区域设置ID ( locId
)。 例如:
attribute::LocaleStrMap= en,E|nl,N|de,D|,
空 locId
值表示应返回 defaultString
(如果可用)。
有关详细信息,请参阅attribute::LocaleStrMap
的说明。
翻译过程
给定上面的示例翻译映射和请求/is/image/myCat/myItem?req=&locale=nl
,服务器首先在区域设置映射中查找“nl
”。 匹配的条目nl,N
指示对于每个 stringElement
,应返回标记为 localizedString
的^loc=N^
。 如果 localizationToken
中不存在此 stringElement
,则返回空值。
假设catalog::UserData
的myCat/myItem
包含以下内容(为清楚起见,插入了换行符):
val1=111?? str1=Default1^loc=N^Dutch1^loc=D^German1?? val2=value2?? str2=^loc=E^English2^loc=N^Dutch2^loc=D^German2?? str3=Default3^loc=N^Dutch3^loc=D^German3
服务器将返回以下内容以响应示例请求:
val1=111 str1=Dutch1 val2=value2 str2=Dutch2 str3=Dutch3
未知区域设置
在上例中,attribute::LocaleStrMap
有一个包含空 locale
值的条目。 服务器使用此条目处理翻译映射中未明确指定的所有locale=
值。
示例翻译映射指定在这种情况下,应返回 defaultString
(如果可用)。 因此,如果将此翻译映射应用于请求/is/image/myCat/myItem?req=&locale=ja
,则会返回以下内容:
val1=111 str1=Default1 val2=value2 str2= str3=Default3
示例
语言系列
多个 locId
值可以与翻译映射中的每个 locale
关联。 原因在于,它允许为所选 stringElements
支持特定于国家或地区的变体(例如,美国英语与英国英语),同时处理大多数具有通用基本区域设置的内容(例如,国际英语)。
例如,添加了对特定于美国的英语(*
locId* EUS
)和特定于英国的英语(*
locId* EUK
)的支持,以支持偶尔的替代拼写。 如果EUK或EUS不存在,则它回退到E。同样,奥地利特定的德语变体(DAT
)可以在大多数情况下返回通用德语 localizedStrings
(用D
标记)时根据需要提供。
attribute::LocaleStrMap
将如下所示:
en,E|en_us,EUS,E|en_uk,EUK,E|de,D|de_at,DAT,D|de_de,D
下表描述了某些代表 stringElement
和 locale
组合的输出:
stringElement | 区域设置 | 输出字符串 |
---|---|---|
^loc=E^English^loc=D^German |
en, en_us, en_uk de, de_at, de_de 所有其他 |
英文 德文 - |
^loc=E^English^loc=UKE^UK-English^loc=D^German^loc=DAT^Audiential |
en, en_us en_uk de, de_de de_at 所有其他 |
英文 UK — 英语 德文 奥地利语 - |
^ loc=en^English^loc=USE^US-English^loc=D^German^loc=DDE^Deutsch 对于此示例, locId DDE在属性::LocaleStrMap 中不存在,因此从不返回与此 locId 关联的子字符串。 |
en, en_uk en_us de, de_at, de_de 所有其他 |
英文 美式英语 德文 - |