首页 > 解决方案 > 从Java中的国家代码获取默认语言

问题描述

我需要根据国家代码找到语言。对于国家代码“US”,它应该返回“en”或“CN”应该返回“zh”。我经历过java.util.Locale,它适用于 LanguageCode 而不是 countryCode。此外,Locale.getAvailableLocales这里没有帮助,因为它为同一个国家代码返回多种语言。有没有其他有用的东西。我想避免在文件中初始化所有有用的语言环境然后使用它。(因为每当我们必须使用新的语言环境时,它可能需要定期更新)

提前致谢

查看了其他 stackoverflow 问题,找不到答案,因此在此处发布了一个新问题。

标签: javacollectionslocale

解决方案


您可以构建一个HashMap将国家/地区代码映射到一组语言,如下所示:

Locale[] locales = Locale.getAvailableLocales();
Map<String,HashSet<String>> countryLanguageMap = new HashMap<>();

for (Locale locale : locales) {
     String country = locale.getCountry(), language = locale.getLanguage();
     if(!country.isEmpty() && !language.isEmpty()) {
          if(countryLanguageMap.containsKey(country))
               countryLanguageMap.get(country).add(language);
          else
               countryLanguageMap.put(country, new HashSet<String>(Arrays.asList(language)));
     }
}

然后,获取国家代码的语言如下:

countryLanguageMap.get("US"); // [en, es]

推荐阅读