Изменить языковые настройки (локаль) для устройства - PullRequest
18 голосов
/ 08 апреля 2010

Я знаю, что можно использовать несколько языков в одном приложении через res / string и в зависимости от локали. Вот случай (ANDROID) управление языком пользователя

Теперь, как я могу изменить язык в телефоне? Как я бы сделал Меню> Настройки> Язык и клавиатура> Выбор языка> Языки

Есть ли настоящий код для доступа к этим настройкам? Или я должен создать намерение для ярлыка к настройкам языка. Пожалуйста, оставьте код

Редактировать: С классом Locale developer.android.com/intl/fr/reference/java/util/Locale.html

Конструктор, по крайней мере, Locale (строковый язык) Входной язык. Как вы можете получить текущий язык, используемый на устройстве?

Ответы [ 5 ]

43 голосов
/ 08 апреля 2010

Не уверен насчет настройки его прямо из приложения, но если вы хотите отправить туда пользователя, чтобы он сам изменил его, попробуйте это:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.android.settings", "com.android.settings.LanguageSettings");            
startActivity(intent);
12 голосов
/ 02 июня 2013

Существует еще один способ открыть системные настройки для изменения языка:

Intent i = new Intent( android.provider.Settings.ACTION_LOCALE_SETTINGS );
startActivity( i );

Показывает только список языков, а при выборе одного - меняет язык на устройстве.

6 голосов
/ 10 апреля 2010

Я нашел другой ответ на свой вопрос. Существует проект с открытым исходным кодом code.google.com / p / languagepickerwidget Он воссоздает ListActivity для отображения и выбора языков.

Джим, ваше решение очень простое и именно то, что мне было нужно. Это ярлык к настройкам. Сразу после того, как вы опубликовали, я выложил на рынок приложение под названием «raygional». Если бы я мог (у меня есть только 6 баллов), я бы сделал ваш ответ полезным.

Есть еще один способ увидеть процессы и намерения. В эмуляторе перейдите в Меню> Инструменты разработчика> Настройки разработки> и нажмите Показать запущенные процессы

3 голосов
/ 19 августа 2012

Насколько я знаю, единственный способ изменить локаль устройства без использования Intents (что предлагают другие решения) - это получить доступ к внутренним классам через рефлексию (с рисками, которые это подразумевает).

Точный пример этого варианта использования можно найти здесь: http://www.tutorialforandroid.com/2010/07/access-internal-classes-in-android.html

1 голос
/ 18 мая 2012

Чтобы расширить ответ Джима, если вы измените намерение на:

intent.setClassName("com.android.settings", "com.android.settings.LocalePicker"); 

Это приведет к отключению пользователя непосредственно в списке выбора языка, и после выбора языка он вернется в ваше приложение.

Он удаляет щелчок, не заставляет пользователя думать о том, какой из трех вариантов (язык, словарь и клавиатура) выбрать, и возвращается в приложение сразу после выбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...