Как восстановить локаль приложения Android по умолчанию - PullRequest
11 голосов
/ 01 апреля 2011

У меня есть это Android-приложение, которое локализовано на нескольких языках. Если соответствующая строка для локали устройства существует, приложение автоматически отобразит ее. Пока все хорошо.

Далее я хочу разрешить пользователям приложения переключаться на один из предоставленных мной языков. Я могу сделать это, переопределив локаль по умолчанию. Здесь тоже нет проблем.

Вопрос здесь: есть ли способ предоставить мне вариант «по умолчанию» в списке языков, который позволил бы пользователям восстанавливать автоматический языковой стандарт по умолчанию? Рассмотрим следующий сценарий:
1. Язык устройства установлен на немецкий. Приложение отображает все на немецком языке.
2. Пользователь хочет, чтобы приложение было на французском языке, поэтому он меняет язык внутри приложения, и в результате приложение поворачивает на французский.
3. Тот же пользователь меняет локаль устройства на испанский. Приложение все еще французское.
4. Они выбирают настройку «По умолчанию». Приложение меняется на испанский и продолжает меняться при изменении локали.

Если это невозможно выполнить автоматически, то есть ли способ получить локаль для всего устройства, чтобы я мог установить в ней свое приложение, если выбрана опция «по умолчанию»?

Ответы [ 2 ]

16 голосов
/ 28 июня 2011

Я решил эту проблему, сохранив существующую настройку при первом запуске приложения (до внесения каких-либо изменений в локаль по умолчанию).В блоке, который запускается только при первом запуске моего приложения, я вызываю:

m_preferences.edit().putString(
                        MyConstants.PREFERENCE_SYSTEM_LANGUAGE,
                        getResources().getConfiguration().locale.getLanguage()
                        ).commit();

Позже, когда мне нужно получить его:

languageToLoad = m_preferences.getString(
                        MyConstants.PREFERENCE_SYSTEM_LANGUAGE,
                        MyConstants.LANGUAGE_DEFAULT);

При смене языка я сохраняюэто в другом предпочтении и обработать обновления для представления.

Редактировать : После того, как я немного побеспокоился, я нашел настройки системы.Я перешел на использование этого, а не приведенного выше кода.

Resources.getSystem().getConfiguration().locale.getLanguage();
2 голосов
/ 01 апреля 2011
Locale defaultLocale = Locale.getDefault();

Редактировать: Извините, я только что понял, что на самом деле это не отвечает на ваш вопрос, поскольку вы переопределяете значение по умолчанию, чтобы применить ваши изменения.

...