列出Android手机中所有已安装或支持的语言

时间:2015-10-19 12:47:33

标签: android locale

如何获取"语言和输入设置"中列出的所有已安装或支持的语言的列表。以编程方式在android中。 我已经使用了Resources.getSystem()。getAssets()。getLocales()但它只给了我那个语言的代码,比如en,en_us,但是我需要代码和显示名称。 我也尝试过Locale.getAvailableLocales(),但它给了我重复的项目和太大的列表。

请告诉我这样做的正确方法。

2 个答案:

答案 0 :(得分:2)

getAvailableLocales()为您提供所有语言,但由于一个/多个国家/地区可以使用相同的语言,因此会重复,您可以使用

过滤它
public ArrayList<String> getAllLanguages()
{
 Locale[] locales = Locale.getAvailableLocales();
 ArrayList<String> languages=new ArrayList<String>();
 for(Locale temp : locales)
 {
   if(!languages.Contains(temp.getDisplayLanguage()))
     languages.Add(temp.getDisplayLanguage());
 }
  return languages;
}

好的,这样可以将语言设置为输入设置

 private ArrayList<String> getInputLanguages() {
       ArrayList<String> inputlanguages=new ArrayList<String>();
       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
       List<InputMethodInfo> ims = imm.getEnabledInputMethodList();

       for (InputMethodInfo method : ims){
           List<InputMethodSubtype> submethods = imm.getEnabledInputMethodSubtypeList(method, true);
           for (InputMethodSubtype submethod : submethods){
              if (submethod.getMode().equals("keyboard")){
                 String currentLocale = submethod.getLocale();
                 Locale locale = new Locale(localeString);
                 String currentLanguage = locale.getDisplayLanguage();   
                 inputlanguages.Add(currentLanguage );        

               }
           }
     }
 return inputlangauges;
}

答案 1 :(得分:1)

是的,您可以获得与语言和输入设置相同的列表 使用

String[] systemLocaleIetfLanguageTags = Resources.getSystem().getAssets().getLocales();