【问题标题】:How to detect if the language is English (All variants) on Android?如何在 Android 上检测语言是否为英语(所有变体)?
【发布时间】:2011-09-16 03:03:58
【问题描述】:

我只想为英语用户显示一个按钮,有没有办法检测语言设置?

我知道如何获取当前的Locale,但我不知道将其与Locale.English 进行比较是否足够,因为必须有很多英文变体等。

有没有人这样做过?

【问题讨论】:

标签: android locale


【解决方案1】:

来自Locale docs

语言代码是 ISO 639-1 定义的两个字母的小写 ISO 语言代码(例如“en”)。国家/地区代码是由 ISO 3166-1 定义的两个大写字母 ISO 国家/地区代码(例如“US”)。

这意味着

Locale.getDefault().getLanguage().equals("en")

应该是true。我会小心隐藏/显示 UI 默认情况下 Locale 虽然。许多国家/地区可能有很多用户更喜欢另一种语言,但英语非常流利。

【讨论】:

  • 但是有没有可能只得到en而不是英文?
  • @MaxAllan 这不仅是一种可能性,这也是这段代码的意图。这就是我与"en" 进行比较的原因。在我看来,这尤其是在一般情况下更可取,因为这样您就不必考虑或担心诸如“Español”与“Spanish”之类的情况。西班牙语有一个普遍接受的语言代码:es
  • 是的,我理解那部分,但如果我想从数据库中选择列 lang = 'sv' 为瑞典语的行,那我该怎么做?如果 UI 是瑞典语。
  • @MaxAllan Locale.getDefault().getLanguage().equals("sv")
  • 它可以是 Locale.getDefault().getLanguage().contains("en") 来检查所有的英语变种
【解决方案2】:
Locale.getDefault().getDisplayLanguage() will give your default language of your device

示例

System.out.println("My locale::"+Locale.getDefault().getDisplayLanguage());

结果

我的语言环境::英语

【讨论】:

    【解决方案3】:

    如何使用 Java 的 startsWith() 函数来检查当前语言环境是否为英语变体。

    Locale.getDefault().getLanguage().startsWith("en")
    

    【讨论】:

      【解决方案4】:

      另一种解决方案是创建表单的本地化英文版本。详情请见http://developer.android.com/guide/topics/resources/localization.html

      【讨论】:

        【解决方案5】:

        正确的做法大概是:

        boolean def_english = Locale.getDefault().getISO3Language().equals(Locale.ENGLISH.getISO3Language());
        

        【讨论】:

          【解决方案6】:

          关于语言我只能说:

          1-为了获得应用程序本身的当前语言,您应该使用

          String CurrentLang = getResources().getConfiguration().locale.getLanguage();

          2-为了获得您应该使用的设备的当前语言

          String CurrentLang = Locale.getDefault().getLanguage();

          【讨论】:

          • 这是有用的信息;但是,它没有回答 OP 的问题,即如何判断它是否是英语的 变体,即 en-GB 等。
          【解决方案7】:

          要了解默认语言是否为英语变体(en_GB 或 en_AU 或 en_IN 或 en_US),请尝试此操作

          if (Locale.getDefault().getLanguage().equals(new Locale("en").getLanguage())) {
              Log.d(TAG, "Language is English");
          }
          

          【讨论】:

            【解决方案8】:

            Locale.getDefault().getDisplayLanguage();

            if(Locale.getDefault().getDisplayLanguage().equals("English")){
            
                //do something
            }
            

            【讨论】:

              猜你喜欢
              • 2017-03-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-07-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多