来自java的国家/地区的翻译Locale.getAvailableLocales()

时间:2013-08-23 11:01:28

标签: java locale language-translation

我希望列出所有国家/地区。我发现java Locale非常适用于此目的。 Locale.getAvailableLocales()返回JRE上所有已安装的语言环境。

问题是:

  1. 是否可以安全地使用不同的JRE?让我们说OpenJDK,IBM Java,Oracle Java,1.6,1.7?有更好的实施吗?
  2. 可以将Locale.getCountry()翻译成特定的区域设置吗?我发现只有少数提供的语言环境可用ENGLISH,FRENCH,GERMAN,ITALIAN,JAPANESE,KOREAN,CHINESE,SIMPLIFIED_CHINESE,TRADITIONAL_CHINESE,FRANCE,GERMANY,ITALY,JAPAN,KOREA,CHINA,PRC,TAIWAN,UK,US,CANADA_FRENCH 但是,如果我想将其翻译成斯洛伐克语Locale("sk", "SK")该怎么办?所有国家/地区都保留其英文名称,只有斯洛伐克语被正确翻译:{{1​​}}。什么是使用新翻译扩展可用国家/地区翻译的java SK EN:Slovak (Slovakia) FR:slovaque (Slovaquie) SK:Slovenčina (Slovenská republika)目录的正确方法。

  3. Locale

    输出:

    private static final Locale SLOVAK = new Locale("sk", "SK");
    Collection<?> COUNTRIES_LIST_EN = (Collection<?>) CollectionUtils
        .collect(Arrays.asList(Locale.ENGLISH.getAvailableLocales()), new Transformer() {
          @Override
          public String transform(Object input) {
            System.out.println(String.format("%s EN:%s FR:%s SK:%s", ((Locale) input).getCountry(),
                                             ((Locale) input).getDisplayName(),
                                             ((Locale) input).getDisplayName(Locale.FRANCE),
                                             ((Locale) input).getDisplayName(SLOVAK)));
            return ((Locale) input).getDisplayCountry();
          }
        });
    

1 个答案:

答案 0 :(得分:1)

根据API Locale.getAvaliableLocale至少返回一个等于Locale.US的Locale实例。那就是API并不能保证所有JRE的结果都相同