在Java中获取完整语言名称列表

7

如何获取语言的全名列表?我查看了Locale类,并使用了getISOLanguages()方法,但该方法返回的是2个字母的语言代码(例如“en”),而我需要的是完整的语言名称(例如“英语”)。

对此有更好的解决方案吗?


3
尝试使用getDisplayLanguage()方法,最好传递一个locale,例如Locale.GERMAN.getDisplayLanguage(Locale.ENGLISH)。要获取所有语言的列表,只需迭代getISOLanguages()的结果,并执行类似于new Locale(isoLang).getDisplayLanguage( Locale.ENGLISH )的操作。但请注意,并非每个iso语言都有名称。 - Thomas
或者可以遍历 Locale.getAvailableLocales(),它返回所有已安装语言环境的列表。请注意,这可能不会为每个语言代码返回一个语言环境,但可能会为其他语言代码返回多个语言环境(例如带有国家和地区部分的语言环境)。 - Thomas
1个回答

11

最后,感谢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));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接