2016-05-12 58 views
1

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

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()]); 
+0

对不起,我不明白你,你可以更明确吗?你期望得到什么? –

+0

是的,现在当你进入你的设备设置,你会看到设置语言和输入里面,你有语言点击你将得到的语言列表。 – tanmeet

+0

我希望在我的应用中获得相同的列表 – tanmeet

回答

0

只需使用LinkedHashSet插入语言..由最终你会得到所有的语言不重复

LinkedHashSet<String> hashSet = new LinkedHashSet<String>(); 
      Locale[] locales = Locale.getAvailableLocales(); 
      for(Locale l:locales) 
      { 
       hashSet.add(l.getDisplayLanguage()); 
      } 

祝你好运,“。

+0

我的目标不是去除重复项。正如我所提到的,我希望获得与我在语言和输入设置下获得的列表相同的列表我设置了我的设备language.if你去你的设备设置甚至英语来了很多次。所以使用hashset不是解决方案。我再次说我的目标是获得语言和输入设置下显示在设备设置中的相同语言。 – tanmeet

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())); 
+0

没有兄弟,我没有找到this.This将给我只是郎和国家我想要的是在langauge和输入设置下显示的语言列表。检查您的设备设置一次。 – tanmeet

+0

哦,我的天啊... http://stackoverflow.com/questions/7973023/what-is-the-list-of-supported-languages-locales-on-android希望它是你正在寻找的... –

+0

不,我不是在寻找那个,但是我已经完成了我脑海里的很多事情之后所需要的。 – tanmeet

0

最后我得到了我一直在寻找后很多脑hamering.this的给我的名单被下的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(); 
    } 
} 

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