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

标签 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") 该怎么办?对于斯洛伐克语。所有国家都保留其英文名称,只有斯洛伐克语被正确翻译:SK EN:Slovak (Slovakia) FR:slovaque (Slovaquie) SK:Slovenčina (Slovenská republika) 。扩展java的正确方法是什么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();
      }
    });

输出:

JP EN:Japanese (Japan) FR:japonais (Japon) SK:Japanese (Japan)
PE EN:Spanish (Peru) FR:espagnol (Pérou) SK:Spanish (Peru)
 EN:English FR:anglais SK:English
JP EN:Japanese (Japan,JP) FR:japonais (Japon,JP) SK:Japanese (Japan,JP)
PA EN:Spanish (Panama) FR:espagnol (Panama) SK:Spanish (Panama)
CH EN:German (Switzerland) FR:allemand (Suisse) SK:German (Switzerland)
US EN:English (United States) FR:anglais (Etats-Unis) SK:English (United States)
SK EN:Slovak (Slovakia) FR:slovaque (Slovaquie) SK:Slovenčina (Slovenská republika)

最佳答案

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

关于java - 来自 java Locale.getAvailableLocales() 的国家/地区翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18401237/

相关文章:

java - 为什么即使存在默认构造函数,Java 也会报错 "No Valid Constructor"?

java - 无法滚动下面有 GridView 和 ListView 的屏幕

带有区域设置的 Java DateFormat/SimpleDateFormat(仅显示月份和月份的日期)

java - 手动更改语言在三星设备上不起作用

vba - 如何更改格式化日期的语言环境?

java - 如何在不使用资源包的情况下翻译带有大量文本的java页面?

java - OpenXava的经验

java - 在两个不同的 JFrame 中打开的相同菜单仅适用于最后一个

c# - 如何加载相对于 DLL 的附属程序集

java - 将 Microsoft Translator 与 Java/Jersey/REST 一起使用