我希望我的应用程序检查手机使用的语言。这个if语句应该这样做:
if (Locale.getDefault().getLanguage().equals("en")) {
yourYesResponse = "That is great " + usersName + "!";
}
else if (Locale.getDefault().getLanguage().equals("fr")) {
yourYesResponse = "C\'est bon " + usersName + "!";
}
但即使我的设备设置为法语,它仍会显示英语。这个if语句有什么问题吗?如果是,那又怎么样?
编辑:谢谢你的帮助。我很感激。答案 0 :(得分:6)
要获取设备语言,您可以使用:
Locale.getDefault().getDisplayLanguage();
,或者
Locale.getDefault().getLanguage(); //to get usual language code
答案 1 :(得分:5)
有系统语言:
Locale.getDefault().getDisplayLanguage();
答案 2 :(得分:5)
使用:
Locale.getDefault().getLanguage().contentEquals("en")
String#equals()
不仅会比较字符串的内容,还会检查另一个对象是否也是String
的实例。 String#contentEquals()
methods仅比较内容(字符序列),并且不检查其他对象是否也是String
的实例。它可以是任何内容,只要它是CharSequence
的实现或StringBuffer
的实例。
答案 3 :(得分:3)
您可以通过声明每种语言的字符串资源文件来解决此问题。
创建名为values-fr和values-en的资源文件夹,并将名为strings.xml的文件添加到两个文件夹中。
values-en:
中的string.xml文件<resources>
<string name="good">That is great </string>
</resources>
你加载这样的资源:
yourYesResponse = getResources().getText(R.string.good) + usersName + "!";
Niek更快......
答案 4 :(得分:2)
通常语言环境提供以下格式fr_FR,其中第一个fr是语言代码,第二个是国家/地区代码,这就是你应该使用的原因
Locale.getDefault().getLanguage().startsWith("fr")
但Android方式是使用resources
getString(R.string.hello, userName);
编辑:好的,对我感到羞耻,我没有注意到你调用了getLanguage(),但第二部分是正确的。
答案 5 :(得分:2)
正如每个人都已经解释过必须使用i18N(不同语言的字符串XML)来实现这个简单的事情,但如果您正在寻找其他用途的用户语言,那么请使用其中一个。
Locale.getDefault().getLanguage();
这将给出语言iso代码,即“de”,“ru”。
OR
Resources.getSystem().getConfiguration().locale;
返回全局共享Resources对象,该对象仅提供对系统资源的访问。
答案 6 :(得分:1)
Android的做法是使用xml资源,如Localizing with Resources中所述。
<强>值/ strings.xml中强>:
<resources>
<string name="yes_response">That is great, %s!</string>
</resources>
<强>值-FR / strings.xml中强>:
<resources>
<string name="yes_response">C\'est bon, %s!</string>
</resources>
<强>代码:强>
yourYesResponse = context.getString(R.string.yes_response, usersName);
动机:
最好使用Android资源框架进行分离 尽可能多地从应用程序的本地化方面 核心Java功能:
- 您可以放置应用程序用户的大部分或全部内容 接口到资源文件,如本文档和中所述 提供资源。
- 用户界面的行为,另一方面 手,由您的Java代码驱动。例如,如果用户输入数据 需要根据区域设置进行格式化或排序, 那么你将使用Java以编程方式处理数据。这个 文档没有介绍如何本地化您的Java代码。