我想获得语言和输入设置下的语言列表。 我已经能够获得设备支持的语言列表,但这是一个巨大的列表。这是我的代码获取列表,但给了我一个巨大的列表。我想只显示语言和输入设置下显示的语言。
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)
只需使用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();
}
}
如果它也适合你,请投票给我答案