Я пытаюсь получить текущий локатор устройства с регионом, как «en_us», «en_gb».
Я Locale.getDefault().getLanguage()
и возвращает только два Locale.getDefault().getLanguage()
кода en
.
Формат «en_us» или «en_gb» имеет «код языка» _ «код страны»,
Объект Locale содержит код страны и код языка.
Таким образом, вы можете использовать ниже фрагмент, чтобы отформатировать собственный код.
String cCode = Locale.getDefault().getCountry(); String lCode = Locale.getDefault().getLanguage(); String code = lCode+"_"+cCode;
или
Вы можете использовать метод toString()
для объекта Locale для получения данных
String code = Locale.getDefault().toString();
По умолчанию Locale
статически создается во время выполнения для вашего прикладного процесса из параметров системного свойства, поэтому он будет отображать Locale
выбранную на этом устройстве, когда приложение было запущено . Как правило, это нормально, но это означает, что если пользователь изменит свой Locale
в настройках после запуска вашего прикладного процесса, значение getDefaultLocale()
вероятно, не будет немедленно обновлено.
Если вам нужно каким-то образом уловить такие события в вашем приложении, вы можете вместо этого попытаться получить Locale
доступную из объекта Configuration
ресурса, т. Е.
Locale current = getResources().getConfiguration().locale;
Вы можете обнаружить, что это значение обновляется быстрее после изменения настроек, если это необходимо для вашего приложения.
Я испытал это 🙂
Я получил от этого, поскольку ссылка может быть удалена, так что Ответ скопирован 🙂
использование
Locale.getDisplayName();
Это сокращение для
Locale.getDisplayName(Locale.getDefault());
Документация находится здесь: http://developer.android.com/reference/java/util/Locale.html