如何在android中检查设备语言?

时间:2014-10-19 12:35:27

标签: java android string if-statement android-studio

我希望我的应用程序检查手机使用的语言。这个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语句有什么问题吗?如果是,那又怎么样?

编辑:谢谢你的帮助。我很感激。

7 个答案:

答案 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代码。
  •