如何获取语言和输入设置下显示的语言列表

时间:2016-05-12 09:16:33

标签: android

我想获得语言和输入设置下的语言列表。 我已经能够获得设备支持的语言列表,但这是一个巨大的列表。这是我的代码获取列表,但给了我一个巨大的列表。我想只显示语言和输入设置下显示的语言。

 Locale[] locales = Locale.getAvailableLocales();
        ArrayList<String> localcountries=new ArrayList<String>();
        for(Locale l:locales)
        {
            localcountries.add(l.getDisplayLanguage().toString());
        }
String[] languages=(String[]) localcountries.toArray(new String[localcountries.size()]);

3 个答案:

答案 0 :(得分:0)

只需使用LinkedHashSet插入语言..最后,您将获得所有语言而无需重复

LinkedHashSet<String> hashSet = new LinkedHashSet<String>();
            Locale[] locales = Locale.getAvailableLocales();
            for(Locale l:locales)
            {
                hashSet.add(l.getDisplayLanguage());
            }
祝你好运,'。

答案 1 :(得分:0)

我认为你正在寻找这样的东西..希望它对我的朋友很有帮助;)

Locale[] locales = Locale.getAvailableLocales();
    ArrayList<String> localCountries = new ArrayList<String>();
    for(Locale l:locales)
    {
        localCountries.add(l.getDisplayLanguage() + " (" + l.getDisplayCountry() + ")");
    }
System.out.println(localCountries.subList(1, localCountries.size())); 

答案 2 :(得分:0)

最后,我得到了很多大脑萦绕后我正在寻找的东西。这给了我在langauge和输入设置下显示的语言列表

 public void getLangs()
    {
        String[] systemLocaleIetfLanguageTags = getAssets().getLocales();
        Arrays.sort(systemLocaleIetfLanguageTags);
        this.data = new ArrayList();
        for (String ietfLanguageTag : systemLocaleIetfLanguageTags)
        {
            if (ietfLanguageTag != null && ietfLanguageTag.length() == 5)
            {
                this.data.add(new Loc(ietfLanguageTag));
            }
        }
    }

还创建一个类来获取所有语言

public class Loc {
    protected Locale locale;

    public Loc(String ietfLanguageTag) {
        this.locale = null;
        String[] l = ietfLanguageTag.split("_");
        if (l.length == 2) {
            this.locale = new Locale(l[0], l[1]);
        }
    }

    public String oneLineLanguageCountry() {
        return String.format("%s (%s)", new Object[]{toTitleCase(this.locale.getDisplayLanguage(this.locale)), toTitleCase(this.locale.getDisplayCountry(this.locale))});
    }

    public String twoLinesLanguageCountry() {
        return String.format("%s\n%s", new Object[]{toTitleCase(this.locale.getDisplayLanguage(this.locale)), toTitleCase(this.locale.getDisplayCountry(this.locale))});
    }

    public String getIetfLanguageTag() {
        return String.format("%s_%s", new Object[]{this.locale.getLanguage(), this.locale.getCountry()});
    }

    public Locale getLocale() {
        return this.locale;
    }

    private static String toTitleCase(String s) {
        return s.length() == 0 ? s : new StringBuilder(String.valueOf(Character.toUpperCase(s.charAt(0)))).append(s.substring(1)).toString();
    }

    public boolean isLocaleCurrentLocale() {
        return Locale.getDefault().equals(getLocale());
    }

    public String toString() {
        return oneLineLanguageCountry();
    }
}

如果它也适合你,请投票给我答案