Как определить, является ли язык на английском (все варианты) на Android? - PullRequest
14 голосов
/ 16 июня 2011

Я хочу показать кнопку только для английских пользователей, есть ли способ определения языковых настроек?

Я знаю, как получить текущее значение Locale, но не знаю, сравниваю ли егопротив Locale.English достаточно, так как должно быть много английских вариаций и т. д.

Кто-нибудь испытывает это?

Ответы [ 8 ]

23 голосов
/ 16 июня 2011

Из Locale документов :

Языковые коды представляют собой двухбуквенные строчные коды языка ISO (например, «en»), как определено в ISO 639-1. Коды стран представляют собой двухбуквенные прописные коды стран ИСО (например, «США»), как определено в ИСО 3166-1.

Это означает, что

Locale.getDefault().getLanguage().equals("en")

должно быть true. Я бы позаботился о том, чтобы скрыть / показать интерфейс только по умолчанию Locale. Во многих странах может быть много пользователей, которые предпочитают другой язык, но отлично владеют английским языком.

14 голосов
/ 16 июня 2011
Locale.getDefault().getDisplayLanguage() will give your default language of your device

Пример

System.out.println("My locale::"+Locale.getDefault().getDisplayLanguage());

Результат

Моя локаль :: Английский

4 голосов
/ 04 июня 2013

А как насчет использования Java startWith () для проверки, является ли текущая локаль английским вариантом или нет.

Locale.getDefault().getLanguage().startsWith("en")
2 голосов
/ 15 ноября 2015

Вероятно, правильный путь:

boolean def_english = Locale.getDefault().getISO3Language().equals(Locale.ENGLISH.getISO3Language());
2 голосов
/ 16 июня 2011

Альтернативным решением будет создание локализованной английской версии формы.Подробнее см. http://developer.android.com/guide/topics/resources/localization.html.

1 голос
/ 22 августа 2017

Все, что я могу сказать о языке, это:

1 - чтобы получить текущий язык самого приложения, вы должны использовать

String CurrentLang = getResources (). GetConfiguration (). Locale.getLanguage ();

2 - чтобы узнать текущий язык устройства, вы должны использовать

String CurrentLang = Locale.getDefault (). GetLanguage ();

0 голосов
/ 06 сентября 2017

Locale.getDefault().getDisplayLanguage();

if(Locale.getDefault().getDisplayLanguage().equals("English")){

    //do something
}
0 голосов
/ 29 мая 2017

Чтобы узнать, является ли язык по умолчанию английским вариантом (en_GB или en_AU или en_IN или en_US), попробуйте это

if (Locale.getDefault().getLanguage().equals(new Locale("en").getLanguage())) {
    Log.d(TAG, "Language is English");
}
...