Как мы можем получить текущий язык, выбранный на устройстве Android?
android
localization
Pinki
источник
источник
Ответы:
Если вы хотите получить выбранный язык вашего устройства, это может помочь вам:
источник
Locale.getDefault().getLanguage();
чтобы получить обычный код языка (например, "de", "en").Locale.setDefault("ru")
, а язык в системных настройках установлен на английский, методLocale.getDefault().getLanguage()
вернет «ru» , но не «en» . Есть ли другой способ получить реальный язык / язык SYSTEM? Я нашел недокументированное решение здесь , но есть ли более элегантное решение?Locale.getDefault().toString()
который дает строку, которая полностью идентифицирует локаль, например, "en_US".Я проверил методы Locale на моем устройстве Android 4.1.2 и результаты:
источник
Locale.getDefault().getDisplayLanguage()
который возвращается"English"
Что сработало для меня:
Resources.getSystem()
возвращает глобальный объект общих ресурсов, который обеспечивает доступ только к системным ресурсам (без ресурсов приложения) и не настроен для текущего экрана (не может использовать единицы измерения, не изменяется в зависимости от ориентации и т. д.).Поскольку
getConfiguration.locale
это устарело, предпочтительным способом получения основной локали в Android Nougat является:Чтобы гарантировать совместимость с предыдущими версиями Android, возможное решение будет простой проверкой:
Обновить
Начиная с библиотеки поддержки,
26.1.0
вам не нужно проверять версию Android, поскольку она предлагает удобный метод обратной совместимостиgetLocales()
.Просто позвоните:
источник
ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration())
getLocales
- это путь. Я обновил свой ответ.Вы можете «извлечь» язык из текущей локали. Вы можете извлечь языковой стандарт через стандартный API Java или с помощью контекста Android. Например, две строки ниже эквивалентны:
источник
Locale.setDefault()
другой регион заранее, и вы получите другие результаты.Чтобы сэкономить время и / или путаницу, я хотел бы поделиться с вами тем, что я попробовал две альтернативы, предложенные Йоханом Пелгримом выше, и на моем устройстве они эквивалентны - независимо от того, было ли изменено расположение по умолчанию.
Таким образом, по умолчанию на моем устройстве установлен английский (United Kindom), и в этом состоянии, как и ожидалось, обе строки в ответе Йохана дают одинаковый результат. Если я затем изменю язык в настройках телефона (скажем, italiano (Италия)) и перезапущу, то обе строки в ответе Йохана дают язык как italiano (Италия).
Поэтому я считаю, что первоначальный пост Йохана был правильным, а комментарий Грегма - неверным.
источник
Вы можете использовать это
когда "xx" - это любой код языка, например "en", "fr", "sp", "ar" .... и т. д.
источник
Как описано в справочнике по языку, лучший способ получить язык:
этот метод возвращает строку с идентификатором языка в соответствии со стандартом ISO 639-1
источник
если уровень API 24 или выше, используйте
LocaleList.getDefault().get(0).getLanguage()
другое использованиеLocale.getDefault.getLanguage()
ссылка: https://developer.android.com/guide/topics/resources/multilingual-support
источник
Добавить к ответу Йохана Пелгрима
эквивалентны, потому что
android.text.format.DateFormat
класс использует оба взаимозаменяемо, например,а также
источник
Вы можете попробовать получить локаль из системных ресурсов:
источник
Ответы выше не различают простой китайский и традиционный китайский.
Locale.getDefault().toString()
работает, который возвращает "zh_CN", "zh_TW", "en_US" и т. д.Ссылки на: https://developer.android.com/reference/java/util/Locale.html , ISO 639-1 - СТАРЫЙ.
источник
Это решение сработало для меня. Это вернет вам язык устройства Android (не местный язык приложения)
Это вернет «en» или «de» или «fr» или любой другой язык вашего устройства.
источник
Вы можете использовать этот код, чтобы узнать ток клавиатуры
источник
Есть два языка.
Язык ОС по умолчанию:
Текущий язык приложения:
источник
Если вы выбираете язык, который вы не можете набрать, этот греческий может быть полезным.
Теперь попробуйте это с греческим
источник
Если вы хотите проверить текущий язык, используйте ответ @Sarpe (@Thorbear):
источник
DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault()).format(Date())
.источник
Правильный способ получить язык вашего устройства заключается в следующем:
Надеюсь, поможет.
источник
даст вам
Written
имя для языка, например,English, Dutch, French
даст вам
language code
, например:en, nl, fr
Оба метода возвращают строку
источник
источник
Другие дали хорошие ответы на язык устройства,
если вы хотите, чтобы язык приложения был самым простым способом сделать это, добавив
app_lang
ключ к вашемуstrings.xml
файлу, а также укажите lang для каждого из langs.Таким образом, если язык вашего приложения по умолчанию отличается от языка устройства, вы можете отправить его в качестве параметра для своих служб.
источник
источник
Мое решение таково
а потом
показано ---> ru
источник
Вот код для получения страны устройства. Совместим со всеми версиями Android, даже Oreo.
Решение: если у пользователя нет сим-карты, чем получить страну, он используется во время настройки телефона или выбора текущего языка.
источник
Если вы хотите выполнить определенное задание для пользователей, проживающих в Индии, которые говорят на хинди, используйте нижеприведенное условие
источник