java - Locale.getLanguage() 等于 String
问题描述
我正在尝试制作一个具有多种语言的 android 应用程序。我有一个字符串数组。我想做的是为多种语言制作这个数组。例如; 我有一个英文数组,例如“Mercury, Venus, Earth, Mars”。我还有一个土耳其语数组,如“Merkür、Venüs、Dünya、Mars”。我正在使用“Locale”属性学习设备的主要语言,我可以显示该语言。但我想做的是显示语言数组取决于设备的主要语言。
正如我所说,我有两个数组。我试图学习设备的语言并均衡字符串数组。但由于 .equals 参数,我无法均衡它们。它没有用。
String[] TurkishPlanetNames ={"Merkür", "Venüs", "Dünya", "Mars", "Jüpiter", "Satürn", "Uranüs", "Neptün"};
String[] PlanetNames ={"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"};
Locale locale = ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration()).get(0);
if (locale.getLanguage().equals("en-US")){
Toast.makeText(getApplicationContext(), "It worked!", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "It didn't work!", Toast.LENGTH_LONG).show();
}
那么,我怎样才能均衡设备的语言和像“en-US”这样的字符串。.equals - .compareTo - .contentEquals - .matches 不起作用。
解决方案
locale.getLanguage();
无论您的设备使用什么版本的英语(英式/美式),都只会返回“en”。
以下调用将以您尝试在您的.equals();
Locale.getDefault().toString(); //e.g. returns "en_US"
但请确保使用下划线而不是连字符。
或者,使用您当前使用的方法,如下所示:
if (locale.getLanguage().equals(new Locale("en").getLanguage())) {
//...
}
(来源)
推荐阅读
- java - 通过 Hibernate 从数据库中检索数据的方法
- android - Android WebRTC 在不同的网络上不起作用 - 没有视频
- prolog - 在 Prolog 中比较数值变量时遇到问题
- node.js - How to use $geoNear using mongodb feathersjs without mongoose
- wso2 - MFA步骤之间的WSO2用户名匹配
- python - 执行程序并将文本粘贴到其中(逐行)
- node.js - 如何在 express 中从服务器端公开 x-token
- javascript - 无法在ie 11中打印
- linux - 直接进行系统调用的语言
- c# - 如何停止等待任务但保持任务在后台运行?