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

标签 android locale

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

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

最佳答案

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

关于android - 列出 Android 手机中所有已安装或支持的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33214819/

相关文章:

android - 如何将默认文本设置为 Spinner

java - 条件接口(interface)实现

javascript - 使用 javascript 在正则表达式中使用语言环境字符

winapi - 在 Windows XP 和 Vista 上设置线程 UI 语言?

ruby-on-rails - Rails en.yml 在哪里

android - 在不触发 InvalidAuthenticityToken 的情况下将图像从 Android 客户端发布到 Rails 服务器

android - 在 Facebook 上分享 图片+AppLink Android

android - 安卓专业版 2 : What are getTextView() and registerMenu()?

android - 无法从 Android 中特定区域的文件夹中读取字符串

安卓 : in-app Billing problem- getting the order Id from the response