Locale.getLanguage() 等于字符串

Locale.getLanguage() equalize to 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(); 会 return 只是 "en" 无论您的设备使用什么版本的英语 (British/American)。

以下调用将 return 字符串以您尝试在 .equals();

中使用的格式
Locale.getDefault().toString(); //e.g. returns "en_US"

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

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

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

(source)