java - 从Java中的国家代码获取默认语言
问题描述
我需要根据国家代码找到语言。对于国家代码“US”,它应该返回“en”或“CN”应该返回“zh”。我经历过java.util.Locale
,它适用于 LanguageCode 而不是 countryCode。此外,Locale.getAvailableLocales
这里没有帮助,因为它为同一个国家代码返回多种语言。有没有其他有用的东西。我想避免在文件中初始化所有有用的语言环境然后使用它。(因为每当我们必须使用新的语言环境时,它可能需要定期更新)
提前致谢
查看了其他 stackoverflow 问题,找不到答案,因此在此处发布了一个新问题。
解决方案
您可以构建一个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]
推荐阅读
- r - 在 x 轴上加倍条,同时在 ggplot 中保留 1 个常见图例
- python - 加入 PySpark 数据集中每个月的上个月数据
- superset - 超集显示来自查询的动态内容(降价)
- xaml - 如何在选择时更改 xamarin shell 中 flyoutitem 的视觉效果?
- c++ - 有没有办法按照 Arduino IDE 中随机生成的列表的顺序运行函数?
- android - 带有房间和状态处理的 Kotlin Coroutines Flow
- linux - 升级到 Ubunto 19.10 后,我的 Laravel 应用程序无法加载吗?
- javascript - 在 json 数组中的每个 json 对象中添加另一个 json 对象
- django - django 是否可以一次聚合查询集的所有字段
- php - Unity C# - 运行 php 并读取 html 结果