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 语言环境扩展的信息。使用前面的德语语言环境示例描述了这些方法。

私人用途扩展

只要值格式正确,由'x'密钥代码或PRIVATE_USE_EXTENSION常量指定的私人用途 extensions 可以是任意值。

以下是可能的私人用途扩展的示例:

x-jdk-1-7
x-linux
首页