缺少Java中的语言环境?

时间:2010-01-21 17:12:19

标签: java

我在java语言环境中找到了许多缺少的国家/ - 如果我打印出可用语言环境列表,

TreeSet< String > m = new TreeSet< String >();
for ( Locale l : Locale.getAvailableLocales() ) {
    m.add( l.getDisplayCountry() );
}
for ( String s : m ) {
    System.out.println( s );
}

我遗失了一些国家,包括尼日利亚,伊朗,吉尔吉斯斯坦和巴基斯坦。任何人都可以对此有所了解,或者是否有更好(更全面)的方式在java中获取国家/地区列表?

1.6.0_16-B01

4 个答案:

答案 0 :(得分:6)

Sun Java 6仅支持有限的语言环境子集。支持格式化类/写入系统/等的向量。列在JDK documentation

现在,我还没有这样做,但是......

您可以通过SPI插入对其他语言环境的支持(描述为here)。例如,要为新语言环境提供日期格式化程序,可以通过实施DateFormatProvider服务来实现。您可以通过修改现有实现来完成此操作 - 我将查看ICU4J库,看看它是否提供了您想要的支持。

答案 1 :(得分:3)

世界各国和地区之间没有一对一的映射。区域设置指定区域。它们旨在标记语言多样性等内容。只是一个澄清的例子:印度,斯里兰卡,巴基斯坦,孟加拉国都是不同的国家......但他们使用英语的方式在任何重要方面都没有区别......人口统计的东西......所有这些国家都可以依赖于印度语区域

答案 2 :(得分:2)

静态方法Locale.getISOCountries()返回ISO 3166 Countries列表中国家/地区的所有两个字母代码。如果您运行以下代码:

String[] codes = Locale.getISOCountries();
for (String code : codes) {
    System.out.println(code);
}

您会注意到PK(PAKISTAN),NG(NIGERIA)和KG(KYRGYZSTAN)都在列表中。请注意,这并不意味着安装了与国家/地区关联的区域设置。如果要实现任何特定于语言环境的行为,则支持的唯一语言环境是Locale.getAvailableLocales返回的语言环境。

答案 3 :(得分:1)

如果您想支持比Sun JDK目前​​更多的区域设置/国家/地区,请考虑向java.ext.dirs添加ICU4J个坛 - 您不仅可以获得更完整的国家/地区列表,也支持CollatorDateFormat