从Java中的国家/地区代码获取默认语言

Ami*_*mar 3 java collections locale

我需要根据国家/地区代码查找语言。对于国家代码“US”,应返回“en”或“CN”应返回“zh”。我经历过java.util.Locale,它适用于语言代码而不是国家代码。另外,Locale.getAvailableLocales这里没有帮助,因为它返回同一国家/地区代码的多种语言。还有什么可以用的吗。我想避免初始化文件中所有有用的区域设置然后使用它。(因为每当我们必须使用新的语言环境时,它可能需要定期更新)

提前致谢

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

Maj*_*awi 5

您可以构建一个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)));
     }
}
Run Code Online (Sandbox Code Playgroud)

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

countryLanguageMap.get("US"); // [en, es]
Run Code Online (Sandbox Code Playgroud)