Cambiar la configuración de idioma (configuración regional) para el dispositivo

? raychenon @ | Original: StackOverFlow
---

Sé que es posible tener varios idiomas en una sola aplicación a través de la res / cuerda y según la zona. He aquí un caso  http://stackoverflow.com/questions/2078289/android-controling-the-user-language

Ahora, ¿cómo puedo cambiar el idioma en el teléfono ? Al igual que lo haría por Menú> Configuración> Idioma & amp ; Teclado> Configuración local > idiomas

¿Hay algún código real para acceder a estos ajustes ? ¿O debería crear intención para un acceso directo a la configuración de idioma . Por favor, publique algún código

Editar: Con clase Locale developer.android.com/intl/fr/reference/java/util/Locale.html

El constructor es al menos la configuración regional (idioma String) La entrada es el lenguaje. ¿Cómo se puede recuperar el lenguaje utilizado en el dispositivo?

---

Top 5 Respuesta

1Jim Blackler @

No estoy seguro acerca de la configuración directamente desde la aplicación, pero si usted quiere enviar al usuario hay que cambiar ellos mismos, intente esto:

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

He encontrado otra respuesta a mi propia pregunta . Hay un proyecto de código fuente abierto http://code.google.com/p/languagepickerwidget Se recrea un ListActivity para mostrar y recoger los idiomas.

Jim, su solución es mucho más simple y exactamente lo que necesitaba . Es un atajo a la configuración . Inmediatamente después de que se publicó, he subido una aplicación llamada " raygional " en el mercado. Si pudiera ( sólo tengo 6 puntos ) que me gustaría hacer tu respuesta útil .

Hay otra manera de ver los procesos y las intenciones . En el emulador vaya a Menú > Herramientas Dev > Configuración de desarrollo> y haga clic en Mostrar procesos en ejecución

3caller9 @

Para ampliar la respuesta de Jim si cambia la intención de:

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

Se bajará el usuario fuera directamente en la lista de selección de idioma y una vez que se selecciona un idioma que volverá a su aplicación.

Elimina un clic, no hace que el usuario piense en cuál de los tres (idioma, diccionario, y teclado) opciones para elegir y regresa a su aplicación inmediatamente después de la selección .

4Edu Zamora @

Por lo que yo sé, la única forma de cambiar la configuración regional del dispositivo sin utilizar Intenciones ( lo que proponen las otras soluciones) está accediendo clases internos a través de la reflexión (con los riesgos que esto implica ) .

Usted puede encontrar un ejemplo exacto para este caso de uso aquí:  http://www.tutorialforandroid.com/2010/07/access-internal-classes-in-android.html

5Sergey @

Hay otra manera de abrir la configuración del sistema para cambiar el idioma :

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

Se muestra sólo la lista de idiomas, y cuando se elige uno - cambia el idioma en el dispositivo.