如何获取语言的全名列表?我查看了Locale
类,并使用了getISOLanguages()
方法,但该方法返回的是2个字母的语言代码(例如“en”),而我需要的是完整的语言名称(例如“英语”)。
对此有更好的解决方案吗?
如何获取语言的全名列表?我查看了Locale
类,并使用了getISOLanguages()
方法,但该方法返回的是2个字母的语言代码(例如“en”),而我需要的是完整的语言名称(例如“英语”)。
对此有更好的解决方案吗?
最后,感谢Thomas的评论,我按照他的建议实现了以下方式:
SortedSet<String> allLanguages = new TreeSet<String>();
String[] languages = Locale.getISOLanguages();
for (int i = 0; i < languages.length; i++){
Locale loc = new Locale(languages[i]);
allLanguages.add(loc.getDisplayLanguage());
}
更新。还有更现代的样式:
Set<String> languages = Arrays.stream(Locale.getISOLanguages())
.map(Locale::new)
.map(Locale::getDisplayLanguage)
.collect(Collectors.toCollection(TreeSet::new));
getDisplayLanguage()
方法,最好传递一个locale,例如Locale.GERMAN.getDisplayLanguage(Locale.ENGLISH)
。要获取所有语言的列表,只需迭代getISOLanguages()
的结果,并执行类似于new Locale(isoLang).getDisplayLanguage( Locale.ENGLISH )
的操作。但请注意,并非每个iso语言都有名称。 - ThomasLocale.getAvailableLocales()
,它返回所有已安装语言环境的列表。请注意,这可能不会为每个语言代码返回一个语言环境,但可能会为其他语言代码返回多个语言环境(例如带有国家和地区部分的语言环境)。 - Thomas