从java获取所有语言

时间:2018-03-11 21:42:57

标签: java

我想使用此代码获取所有语言:

public List<String> getGeneratePreferedLanguagesList()
    {
        String[] languageCodes = Locale.getISOLanguages();
        List<String> list = new ArrayList<>();

        for (String cc : languageCodes)
        {
            list.add(new Locale("", cc).getDisplayLanguage());
        }

        Collections.sort(list);

        return list;
    }

但最终名单是空的。你知道我哪里错了吗?

2 个答案:

答案 0 :(得分:4)

你不应该传递一个空字符串作为第一个参数,你应该传递语言。

用现在的语言。

Locale locale = new Locale(cc);
list.add(locale.getDisplayLanguage());

用自己的语言。

Locale locale = new Locale(cc);
list.add(locale.getDisplayLanguage(locale));

修改该行,您应该始终检查javadoc。 https://docs.oracle.com/javase/7/docs/api/java/util/Locale.html#Locale(java.lang.String)

答案 1 :(得分:3)

我假设“最终列表为空”表示该列表包含所有空蜇。如果这就是发生的事情,那是因为你使用了错误的Locale构造函数。尝试:

list.add(new Locale(cc).getDisplayLanguage());

要以自己的语言显示每种语言,您可以尝试:

Locale locale = new Locale(cc);
list.add(locale.getDisplayLanguage(locale));