Java 如何选择区域设置常量?

Java 如何选择区域设置常量?,java,locale,Java,Locale,Java类有一组用于语言/国家的公共静态final字段,用于直接引用特定地区。其他区域设置可以通过适当的构造函数轻松使用 然而,对我来说,价值观的选择似乎相当随意 这些语言(按照它们在源代码中出现的顺序):英语、法语、德语、意大利语、日语、韩语、汉语、简体中文、繁体中文 这些国家是:法国、德国、意大利、日本、韩国、中国、中国、台湾、英国、美国、加拿大和法国(适用于法语区) 有人知道(甚至猜测)这些语言/国家是如何被选择的吗?我想这只是为了方便开发人员而最常用的语言环境 从Javadoc: Loc

Java类有一组用于语言/国家的
公共静态final
字段,用于直接引用特定地区。其他区域设置可以通过适当的构造函数轻松使用

然而,对我来说,价值观的选择似乎相当随意

这些语言(按照它们在源代码中出现的顺序):英语、法语、德语、意大利语、日语、韩语、汉语、简体中文、繁体中文

这些国家是:法国、德国、意大利、日本、韩国、中国、中国、台湾、英国、美国、加拿大和法国(适用于法语区)


有人知道(甚至猜测)这些语言/国家是如何被选择的吗?

我想这只是为了方便开发人员而最常用的语言环境

从Javadoc:

Locale类提供了许多方便的常量,您可以使用这些常量为常用的区域设置创建区域设置对象


这些代码由ISO国家代码和语言代码标准定义。另请参见本页

编辑:

重读这个问题,OP已经知道了这一点:-)

根据《太阳报》的文章,这些值被选为示例,它甚至告诉我们:

因为预制区域设置太少了, 你应该尽量避免这些 完全是静态对象


我的猜测是,他们使用他们的第1层语言——即JRE本地化的语言。至于国家,我认为他们只是将其与语言相匹配。嗯,除非有人参与进来,否则我们可能永远都不会知道。

我相信OP已经知道了这一点。这也不是OP所要求的。OP会问,为什么要将此区域设置子集用作常量。在什么条件下,区域设置被定义为常量?例如,为什么它不包含世界第二大母语西班牙语?@BalusC:汉语第一,西班牙语第二,英语第三?嗯,我不太确定,但它肯定是排名靠前的国家之一:)此外,我认为墨西哥应该在国家名单上(因为es MX通常用于软件翻译)@BalusC我不知道为什么西班牙语不在其中,但可能有一个历史原因,即大多数软件都是用上述语言编写的,或者西班牙国家在软件开发中没有那么大的作用。这可能不再是真的,但这些常量可以追溯到Java 1.1(即1997年),到那时可能是真的。我个人的猜测是,这组常量是1997年Sun客户地理分布的一个小视图;-)换句话说,,这可能只是早期Java版本中的一个基本错误,它们只是为了向后兼容或其他原因而保留。我不知道,但我今天发现的一件愚蠢的事情是有一个名为
Locale的常量。UK
UK
不是有效的国家代码-对应的国家代码是
GB
。。。