Получить текущий язык в устройстве - PullRequest
560 голосов
/ 18 ноября 2010

Как мы можем получить текущий язык, выбранный на устройстве Android?

Ответы [ 24 ]

3 голосов
/ 18 ноября 2014

Существует два языка.

Язык ОС по умолчанию:

Locale.getDefault().getDisplayLanguage();

Текущий язык приложения:

getResources().getConfiguration().locale.getDisplayLanguage();//return string
3 голосов
/ 11 сентября 2013

Вы можете использовать этот код, чтобы узнать текущее значение клавиатуры

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
InputMethodSubtype ims = imm.getCurrentInputMethodSubtype();
String locale = ims.getLocale();
3 голосов
/ 25 июня 2018

, если уровень API 24 или выше, используйте 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

2 голосов
/ 17 мая 2017

Если вы выбираете язык, который вы не можете набрать, этот греческий может быть полезным.

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
1 голос
/ 11 июля 2017

Правильный способ получить язык вашего устройства следующий:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    return context.getResources().getConfiguration().getLocales().get(0);
} else {
    return context.getResources().getConfiguration().locale;
}

Надеюсь, это поможет.

1 голос
/ 24 ноября 2015
if(Locale.getDefault().getDisplayName().equals("हिन्दी (भारत)")){
    // your code here
}
1 голос
/ 21 февраля 2019

Это решение сработало для меня.Это вернет вам язык устройства Android (не местный язык приложения)

String locale = getApplicationContext().getResources().getConfiguration().locale.getLanguage();

Это вернет «en» или «de» или «fr» или любой другой язык вашего устройства.

1 голос
/ 12 февраля 2019
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()));
1 голос
/ 10 июля 2018
Locale.getDefault().getDisplayLanguage()

даст вам Written имя для языка, например, English, Dutch, French

Locale.getDefault().getLanguage()

даст вам language code, например: en, nl, fr

Оба метода возвращают строку

0 голосов
/ 01 июля 2019

Остальные дали хорошие ответы для языка устройства,

, если вы хотите, чтобы приложение языка, самый простой способ сделать это, добавив app_lang введите strings.xml файл и укажите lang для каждого из языков.

Таким образом, если язык по умолчанию вашего приложения отличается от языка устройства, вы можете отправить его в качестве параметраза ваши услуги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...