BCP 47 扩展
Java SE 7 发行版符合 IETF BCP 47 标准,该标准支持向Locale
添加 extensions。可以使用任何单个字符来表示 extensions,但是有两个 预定义的 extensions 代码:'u'
指定* Unicode 语言环境 extensions和'x'
指定专用使用 extensions*。
Unicode 语言环境扩展由 Unicode 通用语言环境数据存储库(CLDR)项目定义。它们用于指定非语言特定的信息,例如 calendar 或货币。专用 extensions 可用于指定任何其他信息,例如平台(例如 Windows,UNIX 或 Linux)或发行信息(例如 6u23 或 JDK 7)。
extensions 指定为键/值对,其中键是单个字符(通常为'u'
或'x'
)。格式正确的值具有以下格式:
SUBTAG ('-' SUBTAG)*
以这种格式:
SUBTAG = [0-9a-zA-Z]{2,8} For key='u'
SUBTAG = [0-9a-zA-Z]{1,8} For key='x'
请注意,私有用途 extensions 允许使用单个字符的值。但是,Unicode 语言环境 extensions 中的值的最小值为 2 个字符。
扩展字符串 不区分大小写,但是Locale
类将所有键和值 Map 为小写。
getExtensionKeys()方法返回Locale
的扩展键集(如果有)。 getExtension(key)方法返回指定键的值字符串(如果有)。
Unicode 语言环境扩展
如前所述,Unicode 语言环境扩展由'u'
键代码或UNICODE_LOCALE_EXTENSION
常量指定。值本身也由键/类型对指定。合法值在Unicode网站的Key/Type Definitions表中定义。密钥代码由两个字母字符指定。下表列出了 Unicode 语言环境扩展键:
Key Code | Description |
---|---|
ca | calendar algorithm |
co | collation type |
ka | collation parameters |
cu | currency type |
nu | number type |
va | 普通变体类型 |
Note:
指定 Unicode 语言环境 extensions(例如数字格式)并不能保证基础平台的语言环境服务将接受该请求。
下表显示了 Unicode 语言环境扩展的键/类型对的一些示例。
Key/Type pair | Description |
---|---|
ca-buddhist | 泰国佛教 calendar |
co-pinyin | 拉丁语拼音 Order |
cu-usd | U.S. dollars |
nu-jpanfin | 日本财务数字 |
tz-aldav | Europe/Andorra |
以下字符串 使用 Linux 平台 Order 的电话簿样式表示德国国家/地区的德语语言环境。此示例还包含一个名为"email"
的属性。
de-DE-u-email-co-phonebk-x-linux
以下Locale
方法可用于访问有关 Unicode 语言环境扩展的信息。使用前面的德语语言环境示例描述了这些方法。
-
getUnicodeLocaleKeys() –返回 Unicode 语言环境键代码;如果语言环境中没有,则返回一个空集。对于德语示例,这将返回包含单个字符串
"co"
的集合。 -
getUnicodeLocaleType(String) –返回与 Unicode 语言环境键代码关联的 Unicode 语言环境类型。对于德国示例,调用
getUnicodeLocaleType("co")
将返回字符串"phonebk"
。 -
getUnicodeLocaleAttributes() –返回与此语言环境关联的 Unicode 语言环境属性集。在德语示例中,这将返回一个包含单个字符串
"email"
的集合。
私人用途扩展
只要值格式正确,由'x'
密钥代码或PRIVATE_USE_EXTENSION
常量指定的私人用途 extensions 可以是任意值。
以下是可能的私人用途扩展的示例:
x-jdk-1-7
x-linux