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

Mis*_* D. 6 java string android 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 + "!";
 }
Run Code Online (Sandbox Code Playgroud)

但即使我的设备设置为法语,它仍然显示英语.这个if语句有什么问题,如果是,那又怎么样?

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

Tar*_*rek 6

为了获得设备语言,您可以使用:

Locale.getDefault().getDisplayLanguage();
Run Code Online (Sandbox Code Playgroud)

要么,

Locale.getDefault().getLanguage(); //to get usual language code
Run Code Online (Sandbox Code Playgroud)


小智 6

使用 :

 Locale.getDefault().getLanguage().contentEquals("en")
Run Code Online (Sandbox Code Playgroud)

String#equals()不仅比较字符串的内容,而且还会检查其他的对象也是的一个实例String.该方法只比较的内容(字符序列)和不检查其他对象也是的一个实例.它可以是任何东西,只要它是实现或实例.String#contentEquals() StringCharSequenceStringBuffer


Mar*_*hah 5

有系统语言:

Locale.getDefault().getDisplayLanguage();
Run Code Online (Sandbox Code Playgroud)


小智 4

您可以通过为每种语言声明一个字符串资源文件来解决这个问题。

创建名为values-fr 和values-en 的资源文件夹,并将名为strings.xml 的文件添加到这两个文件夹中。

value-en 中的 string.xml 文件:

<resources>
<string name="good">That is great </string> 
</resources>
Run Code Online (Sandbox Code Playgroud)

然后你像这样加载资源:

yourYesResponse = getResources().getText(R.string.good) + usersName + "!";
Run Code Online (Sandbox Code Playgroud)

尼克更快...