我正在尝试制作具有多种语言的android应用。我有一个字符串数组。我正在尝试做的是使此数组用于多种语言。例如;我有一个英语数组,例如“水星,金星,地球,火星”。我也有一些土耳其语,例如“Merkür,Venüs,Dünya,火星”。我正在使用“语言环境”属性学习设备的主要语言,并且可以显示该语言。但是我想做的是显示语言数组取决于设备的主要语言。
正如我所说,我有两个阵列。我试图学习设备的语言并均衡字符串数组。但是由于.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不起作用。
答案 0 :(得分:1)
locale.getLanguage();
只会返回“ en”,无论您的设备使用哪种英语版本(英国/美国)。
以下调用将以您尝试在.equals();
Locale.getDefault().toString(); //e.g. returns "en_US"
但是请确保使用下划线而不是连字符。
或者,如下使用当前使用的方法:
if (locale.getLanguage().equals(new Locale("en").getLanguage())) {
//...
}
(source)