Изменение языковых настроек (локали) для устройства
Я знаю, что возможно иметь несколько языков в одном приложении через res/string и в зависимости от Locale.
Вот случай
(ANDROID), управляющий языком пользователя
Теперь, как я могу изменить язык в телефоне?
Как я бы сделал
Меню > Настройки > Язык и клавиатурa > Выбрать язык > Языки
Есть ли какой-нибудь реальный код для доступа к этим настройкам?
Или я должен создать намерение для быстрого доступа к языковым настройкам.
Пожалуйста, разместите код
Изменить:
С классом Locale
developer.android.com/intl/fr/reference/java/util/Locale.html
Конструктор не менее Locale (String language)
Ввод - это язык.
Как вы можете получить текущий язык, используемый на устройстве?
Ответы
Ответ 1
Не уверен, что нужно установить его прямо из приложения, но если вы хотите отправить его там, чтобы сами его изменить, попробуйте следующее:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.android.settings", "com.android.settings.LanguageSettings");
startActivity(intent);
Ответ 2
Существует другой способ открыть системные настройки для изменения языка:
Intent i = new Intent( android.provider.Settings.ACTION_LOCALE_SETTINGS );
startActivity( i );
Он показывает только список языков, а когда вы выбираете один - он меняет язык на устройстве.
Ответ 3
Я нашел еще один ответ на свой вопрос.
Существует проект с открытым исходным кодом code.google.com/p/languagepickerwidget
Он воссоздает ListActivity для отображения и выбора языков.
Джим, ваше решение очень просто и точно, что мне нужно. Это привязка к настройкам. Сразу после публикации я загрузил на рынок приложение под названием "raygional". Если бы я мог (у меня всего 6 баллов), я бы сделал ваш ответ полезным.
Есть еще один способ увидеть процессы и намерения. На эмуляторе перейдите в Меню > Инструменты разработчикa > Настройки разработки > и нажмите "Показать запущенные процессы"
Ответ 4
Насколько я знаю, единственный способ изменить Locale устройства без использования намерений (что предлагают другие решения) - это доступ к внутренним классам через отражение (с учетом рисков, которые это подразумевает).
Здесь вы можете найти точный пример этого варианта использования:
http://www.tutorialforandroid.com/2010/07/access-internal-classes-in-android.html
Ответ 5
Чтобы развернуть Джим, если вы измените намерение на:
intent.setClassName("com.android.settings", "com.android.settings.LocalePicker");
Он отключит пользователя непосредственно в списке выбора языка, и после выбора языка он вернется в ваше приложение.
Он удаляет клик, не заставляет пользователя задумываться о том, какой из трех (язык, словарь и клавиатура) выбрать и сразу же после выбора вернется в ваше приложение.