Ответ 1
Locale.getDefault().getDisplayLanguage() will give your default language of your device
Пример
System.out.println("My locale::"+Locale.getDefault().getDisplayLanguage());
Результат
Моя локаль:: English
Я хочу показать кнопку только для пользователей на английском языке, есть ли способ определить языковые настройки?
Я знаю, как получить текущий Locale
, но я не знаю, достаточно ли сравнить его с Locale.English
, так как должно быть много английских вариаций и т.д.
Кто-нибудь это делает?
Locale.getDefault().getDisplayLanguage() will give your default language of your device
System.out.println("My locale::"+Locale.getDefault().getDisplayLanguage());
Моя локаль:: English
Из Locale
docs:
Коды языков представляют собой двухбуквенные коды языка ISO (например, "en" ), как определено в ISO 639-1. Коды стран представляют собой двухбуквенные коды стран с наименьшим кодом страны (такие как "США" ), как определено в стандарте ISO 3166-1.
Это означает, что
Locale.getDefault().getLanguage().equals("en")
должен быть true
. Я бы осторожно скрывал/показывал интерфейс только по умолчанию Locale
. Во многих странах может быть много пользователей, которые предпочитают другой язык, но отлично владеют английским языком.
Как использовать функцию Java startsWith(), чтобы проверить, является ли текущая локаль английским вариантом или нет.
Locale.getDefault().getLanguage().startsWith("en")
Альтернативным решением было бы создать локализованную английскую версию формы. Подробнее см. http://developer.android.com/guide/topics/resources/localization.html.
Правильный способ:
boolean def_english = Locale.getDefault().getISO3Language().equals(Locale.ENGLISH.getISO3Language());
Все, что я могу сказать о языке, это то, что:
1-, чтобы получить текущий язык приложения, вы должны использовать
Строка CurrentLang = getResources(). getConfiguration(). locale.getLanguage();
2-, чтобы получить текущий язык устройства, которое вы должны использовать
Строка CurrentLang = Locale.getDefault(). getLanguage();
Чтобы узнать, является ли язык по умолчанию английским вариантом (en_GB или en_AU или en_IN или en_US), попробуйте это
if (Locale.getDefault().getLanguage().equals(new Locale("en").getLanguage())) {
Log.d(TAG, "Language is English");
}
Locale.getDefault().getDisplayLanguage();
if(Locale.getDefault().getDisplayLanguage().equals("English")){
//do something
}