我最近在系统中遇到了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
由于
答案 0 :(得分:5)
请查看Locale
http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html
它描述语言,变体等。
答案 1 :(得分:3)
如果有一天上面的链接中断...
从https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html
粘贴的复制件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" (孔卡尼语)
ISO 3166 alpha-2国家/地区代码或UN M.49数字-3区号。您可以在IANA语言子标签注册表中找到有效国家和地区代码的完整列表(搜索"类型:区域")。国家(地区)字段不区分大小写,但Locale始终规范化为大写。 格式良好的国家/地区值的格式为[a-zA-Z] {2} | [0-9] {3} 例如:"美国" (美国)," FR" (法国)," 029" (加勒比)
用于表示区域设置变体的任意值。如果有两个或多个变量值,每个变量值都表示其自己的语义,则这些值应按重要性排序,最重要的是,首先用下划线分隔(' _')。变体字段区分大小写。
注意: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"