【发布时间】:2011-09-16 03:03:58
【问题描述】:
我只想为英语用户显示一个按钮,有没有办法检测语言设置?
我知道如何获取当前的Locale,但我不知道将其与Locale.English 进行比较是否足够,因为必须有很多英文变体等。
有没有人这样做过?
【问题讨论】:
我只想为英语用户显示一个按钮,有没有办法检测语言设置?
我知道如何获取当前的Locale,但我不知道将其与Locale.English 进行比较是否足够,因为必须有很多英文变体等。
有没有人这样做过?
【问题讨论】:
来自Locale docs:
语言代码是 ISO 639-1 定义的两个字母的小写 ISO 语言代码(例如“en”)。国家/地区代码是由 ISO 3166-1 定义的两个大写字母 ISO 国家/地区代码(例如“US”)。
这意味着
Locale.getDefault().getLanguage().equals("en")
应该是true。我会小心隐藏/显示 UI 默认情况下 Locale 虽然。许多国家/地区可能有很多用户更喜欢另一种语言,但英语非常流利。
【讨论】:
en而不是英文?
"en" 进行比较的原因。在我看来,这尤其是在一般情况下更可取,因为这样您就不必考虑或担心诸如“Español”与“Spanish”之类的情况。西班牙语有一个普遍接受的语言代码:es。
lang = 'sv' 为瑞典语的行,那我该怎么做?如果 UI 是瑞典语。
Locale.getDefault().getDisplayLanguage() will give your default language of your device
System.out.println("My locale::"+Locale.getDefault().getDisplayLanguage());
我的语言环境::英语
【讨论】:
如何使用 Java 的 startsWith() 函数来检查当前语言环境是否为英语变体。
Locale.getDefault().getLanguage().startsWith("en")
【讨论】:
另一种解决方案是创建表单的本地化英文版本。详情请见http://developer.android.com/guide/topics/resources/localization.html。
【讨论】:
正确的做法大概是:
boolean def_english = Locale.getDefault().getISO3Language().equals(Locale.ENGLISH.getISO3Language());
【讨论】:
关于语言我只能说:
1-为了获得应用程序本身的当前语言,您应该使用
String CurrentLang = getResources().getConfiguration().locale.getLanguage();
2-为了获得您应该使用的设备的当前语言
String CurrentLang = Locale.getDefault().getLanguage();
【讨论】:
要了解默认语言是否为英语变体(en_GB 或 en_AU 或 en_IN 或 en_US),请尝试此操作
if (Locale.getDefault().getLanguage().equals(new Locale("en").getLanguage())) {
Log.d(TAG, "Language is English");
}
【讨论】:
Locale.getDefault().getDisplayLanguage();
if(Locale.getDefault().getDisplayLanguage().equals("English")){
//do something
}
【讨论】: