user.region,user.language,user.country和user.variant有什么区别?

时间:2013-09-20 13:45:08

标签: java locale

我最近在系统中遇到了Java语言环境问题,我试图使用这种配置运行项目:

-Duser.language=pt_BR
-Duser.country=BR

谷歌搜索后,我发现this site让我将配置更改为:

-Duser.language=pt
-Duser.region=BR
-Duser.country=BR

问题已经消失。另外,我发现页面like this正在讨论使用另一个名为user.variant的属性。

我不是在追求LC_ *属性,我只是想弄清楚这四个属性之间有什么区别?

user.language
user.region
user.country
user.variant

由于

2 个答案:

答案 0 :(得分:5)

请查看Locale http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html

的javadoc

它描述语言,变体等。

答案 1 :(得分:3)

如果有一天上面的链接中断...

https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html

粘贴的复制件

user.language

  

ISO 639 alpha-2或alpha-3语言代码,或注册语言子标签最多8个字母字母(用于将来的增强功能)。当语言同时具有alpha-2代码和alpha-3代码时,必须使用alpha-2代码。您可以在IANA语言子标签注册表中找到有效语言代码的完整列表(搜索"类型:语言")。语言字段不区分大小写,但Locale始终标准化为小写。       格式良好的语言值的格式为[a-zA-Z] {2,8}。请注意,这不是完整的BCP47语言生成,因为它不包括extlang。由于现代三字母语言代码取代了它们,因此不需要它们。      示例:" en" (英文)," ja" (日语)," kok" (孔卡尼语)

user.region / user.country

  

ISO 3166 alpha-2国家/地区代码或UN M.49数字-3区号。您可以在IANA语言子标签注册表中找到有效国家和地区代码的完整列表(搜索"类型:区域")。国家(地区)字段不区分大小写,但Locale始终规范化为大写。       格式良好的国家/地区值的格式为[a-zA-Z] {2} | [0-9] {3}       例如:"美国" (美国)," FR" (法国)," 029" (加勒比)

user.variant

  

用于表示区域设置变体的任意值。如果有两个或多个变量值,每个变量值都表示其自己的语义,则这些值应按重要性排序,最重要的是,首先用下划线分隔(' _')。变体字段区分大小写。

     

注意:IETF BCP 47对变体子标签设置了语法限制。此外,BCP 47子标签严格用于指示定义语言或其方言的其他变体,这些变体未被语言,脚本和区域子标签的任何组合所涵盖。您可以在IANA语言子标签注册表中找到有效变体代码的完整列表(搜索"类型:变体")。

     

但是,Locale中的变体字段历来用于任何类型的变体,而不仅仅是语言变体。例如,Java SE运行时环境中提供的一些受支持的变体表示其他文化行为,例如日历类型或数字脚本。在BCP 47中,这种不识别语言的信息由扩展子标签或私人使用子标签支持。

     

格式良好的变体值的格式为SUBTAG((' _' |' - ')SUBTAG)*其中SUBTAG = [0-9] [0-9a-zA -Z] {3} | [0-9A-ZA-Z] {5,8}。 (注意:BCP 47只使用连字符(' - ')作为分隔符,这样更宽松)。

     

示例:" polyton" (Polytonic Greek)," POSIX"

相关问题