列出Android手机中所有已安装或受支持的语言 [英] List all the installed or supported languages in an android phone

查看:466
本文介绍了列出Android手机中所有已安装或受支持的语言的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How to get list of all the installed or supported languages that are listed under "Language and Input settings" programmatically in android. I have used Resources.getSystem().getAssets().getLocales() but it gives me only code of that language like en, en_us but I need both code and display name. I have also tried with Locale.getAvailableLocales() but it gives me repeated items and too big list.

请告诉我这样做的正确方法是什么.

Please tell me what is the correct way of doing this.

推荐答案

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

getAvailableLocales() gives you all Languages,but as one/more countries can have same language,it is repeated,you can filter it using

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;
}

好的,这将在输入设置下获取语言

Okay ,This will work to get Languages under input Settings

 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;
}

这篇关于列出Android手机中所有已安装或受支持的语言的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆