Alterar definições de idioma (locale) para o dispositivo

? raychenon @ | Original: StackOverFlow

Eu sei que é possível ter vários idiomas em um único aplicativo através da res / string e dependendo da localidade. Aqui está um caso  http://stackoverflow.com/questions/2078289/android-controling-the-user-language

Agora, como eu posso mudar o idioma no telefone ? Como eu faria por Menu> Configurações> Idioma & amp ; Teclado> Selecionar local > idiomas

Existe algum código real para o acesso a essas configurações ? Ou devo criar intenção para um atalho para as configurações de idioma . Por favor, poste algum código

Edit: Com classe Locale developer.android.com/intl/fr/reference/java/util/Locale.html

O construtor é, no mínimo local (idioma String) A entrada é a linguagem. Como você pode recuperar a língua usada no dispositivo?

Top 5 Responder

1Jim Blackler @

Não tenho certeza sobre como configurar -lo diretamente a partir do app, mas se você quiser enviar o usuário lá para mudar por si próprios, tente o seguinte:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.android.settings", "com.android.settings.LanguageSettings");            
startActivity(intent);
2raychenon @

Eu encontrei outra resposta para a minha pergunta . Há um projeto de código-fonte aberto http://code.google.com/p/languagepickerwidget Ele está recriando uma ListActivity para exibir e escolha os idiomas .

Jim, sua solução é muito simples e exatamente o que eu precisava. É uma shorcut para as definições. Imediatamente depois de publicado, eu enviei um aplicativo chamado " raygional " no mercado. Se eu pudesse ( eu só tenho 6 pontos) eu ia fazer a sua resposta útil.

Há uma outra maneira de ver os processos e intenções . No emulador vá em Menu > Ferramentas de Desenvolvimento > Configurações de Desenvolvimento > e clique em Mostrar processos em execução

3caller9 @

Para expandir a resposta de Jim se você mudar a intenção de :

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

Ele vai cair o usuário off diretamente na lista de seleção de idioma e uma vez por idioma é selecionado ele irá retornar para a sua aplicação.

Ele remove um clique, não faz o usuário pensar sobre qual dos três (idioma, dicionário e teclado) opções para escolher e volta para o seu aplicativo imediatamente após a seleção.

4Edu Zamora @

Até onde eu sei, a única maneira de alterar a localidade do dispositivo sem usar as intenções ( o que as outras soluções propor ) está acessando classes internas através da reflexão (com os riscos que isso implica) .

Você pode encontrar um exemplo exato para este caso de uso aqui:  http://www.tutorialforandroid.com/2010/07/access-internal-classes-in-android.html

5Sergey @

Não há outra forma de abrir as configurações do sistema para alterar o idioma :

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

Ele mostra apenas a lista de idiomas, e quando você escolha um - ele muda o idioma do dispositivo.