Как мы можем получить текущий язык, выбранный на устройстве Android?
Существует два языка.
Язык ОС по умолчанию:
Locale.getDefault().getDisplayLanguage();
Текущий язык приложения:
getResources().getConfiguration().locale.getDisplayLanguage();//return string
Вы можете использовать этот код, чтобы узнать текущее значение клавиатуры
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodSubtype ims = imm.getCurrentInputMethodSubtype(); String locale = ims.getLocale();
, если уровень API 24 или выше, используйте LocaleList.getDefault().get(0).getLanguage() еще использовать Locale.getDefault.getLanguage()
LocaleList.getDefault().get(0).getLanguage()
Locale.getDefault.getLanguage()
private fun getSystemLocale(): String { return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { return LocaleList.getDefault().get(0).getLanguage(); } else { return Locale.getDefault.getLanguage(); } }
ссылка: https://developer.android.com/guide/topics/resources/multilingual-support
Если вы выбираете язык, который вы не можете набрать, этот греческий может быть полезным.
getDisplayLanguage().toString() = English getLanguage().toString() = en getISO3Language().toString() = eng getDisplayLanguage()) = English getLanguage() = en getISO3Language() = eng
Теперь попробуйте его с греческим
getDisplayLanguage().toString() = Ελληνικά getLanguage().toString() = el getISO3Language().toString() = ell getDisplayLanguage()) = Ελληνικά getLanguage() = el getISO3Language() = ell
Правильный способ получить язык вашего устройства следующий:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { return context.getResources().getConfiguration().getLocales().get(0); } else { return context.getResources().getConfiguration().locale; }
Надеюсь, это поможет.
if(Locale.getDefault().getDisplayName().equals("हिन्दी (भारत)")){ // your code here }
Это решение сработало для меня.Это вернет вам язык устройства Android (не местный язык приложения)
String locale = getApplicationContext().getResources().getConfiguration().locale.getLanguage();
Это вернет «en» или «de» или «fr» или любой другой язык вашего устройства.
public class LocalUtils { private static final String LANGUAGE_CODE_ENGLISH = "en"; // returns application language eg: en || fa ... public static String getAppLanguage() { return Locale.getDefault().getLanguage(); } // returns device language eg: en || fa ... public static String getDeviceLanguage() { return ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration()).get(0).getLanguage(); } public static boolean isDeviceEnglish() { return getDeviceLanguage().equals(new Locale(LANGUAGE_CODE_ENGLISH).getLanguage()); } public static boolean isAppEnglish() { return getAppLanguage().equals(new Locale(LANGUAGE_CODE_ENGLISH).getLanguage()); } }
Log.i("AppLanguage: ", LocalUtils.getAppLanguage()); Log.i("DeviceLanguage: ", LocalUtils.getDeviceLanguage()); Log.i("isDeviceEnglish: ", String.valueOf(LocalUtils.isDeviceEnglish())); Log.i("isAppEnglish: ", String.valueOf(LocalUtils.isAppEnglish()));
Locale.getDefault().getDisplayLanguage()
даст вам Written имя для языка, например, English, Dutch, French
Written
English, Dutch, French
Locale.getDefault().getLanguage()
даст вам language code, например: en, nl, fr
language code
en, nl, fr
Оба метода возвращают строку
Остальные дали хорошие ответы для языка устройства,
, если вы хотите, чтобы приложение языка, самый простой способ сделать это, добавив app_lang введите strings.xml файл и укажите lang для каждого из языков.
app_lang
strings.xml
Таким образом, если язык по умолчанию вашего приложения отличается от языка устройства, вы можете отправить его в качестве параметраза ваши услуги.