Как восстановить локальный стандарт по умолчанию для Android-приложения

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

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

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

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

Ответ 1

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

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

Locale defaultLocale = Locale.getDefault();

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