首页 > 解决方案 > 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 不起作用。

标签: javaandroidarrayslocale

解决方案


locale.getLanguage();无论您的设备使用什么版本的英语(英式/美式),都只会返回“en”。

以下调用将以您尝试在您的.equals();

Locale.getDefault().toString(); //e.g. returns "en_US"

但请确保使用下划线而不是连字符。

或者,使用您当前使用的方法,如下所示:

if (locale.getLanguage().equals(new Locale("en").getLanguage())) {
    //...
}

来源


推荐阅读