如何在android中检查设备语言?
Posted
技术标签:
【中文标题】如何在android中检查设备语言?【英文标题】:How to check for a device language in android? 【发布时间】:2014-12-14 13:06:52 【问题描述】:我希望我的应用程序检查手机使用的是哪种语言。这个 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 语句有什么问题吗?如果是,那又是什么?
编辑:感谢您的帮助。我很感激。
【问题讨论】:
你不能用Localizing with Resources吗? 对不起,我还在学习 Java 和 android 开发。但我会调查的。 【参考方案1】:使用:
Locale.getDefault().getLanguage().contentEquals("en")
String#equals()
不仅比较字符串的内容,还检查其他对象是否也是String
的实例。 String#contentEquals()
methods 仅比较内容(字符序列)并且不检查其他对象是否也是String
的实例。它可以是任何东西,只要它是CharSequence
的实现或StringBuffer
的实例。
【讨论】:
【参考方案2】:为了得到设备语言,你可以这样:
Locale.getDefault().getDisplayLanguage();
或者,
Locale.getDefault().getLanguage(); //to get usual language code
【讨论】:
【参考方案3】:对于有系统语言:
Locale.getDefault().getDisplayLanguage();
【讨论】:
【参考方案4】:您可以通过为每种语言声明一个字符串资源文件来解决此问题。
创建名为 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 更快...
【讨论】:
【参考方案5】:正如大家已经解释的那样,必须使用 i18N(不同语言的字符串 XML)来实现这个简单的事情,但如果您正在为其他目的寻找用户语言,那么请使用其中之一。
Locale.getDefault().getLanguage();
这将给出语言 iso 代码,即“de”、“ru”。
或
Resources.getSystem().getConfiguration().locale;
这将返回全局共享资源对象,该对象仅提供对系统资源的访问。
【讨论】:
【参考方案6】:通常使用以下格式 fr_FR 提供语言环境,其中第一个 fr 是语言代码,第二个是国家/地区代码,这就是您应该使用的原因
Locale.getDefault().getLanguage().startsWith("fr")
但Android方式是使用resources
getString(R.string.hello, userName);
已编辑:好吧,真不好意思,我没有注意到你调用了 getLanguage(),但第二部分是正确的。
【讨论】:
【参考方案7】:Android 执行此操作的方式是使用 xml 资源,如 Localizing with Resources 中所述。
values/strings.xml:
<resources>
<string name="yes_response">That is great, %s!</string>
</resources>
values-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 代码。
【讨论】:
以上是关于如何在android中检查设备语言?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android 中检查我的 android 设备是不是有互联网连接? [复制]
如果在android中打开了移动设备或wifi,如何检查互联网是不是可用[重复]