2010-04-07 26 views
18

Sé que es posible tener varios idiomas en una sola aplicación a través de la cadena/res y según la configuración regional. Aquí hay un caso (ANDROID) controling the user languageCambiar la configuración de idioma (configuración regional) para el dispositivo

¿Cómo puedo cambiar el idioma del teléfono? Al igual que lo haría por Menú> Configuración> Idioma & teclado> Configuración local> idiomas

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

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

El constructor es al menos local (idioma String) La entrada es lenguaje. ¿Cómo puede recuperar el idioma actual utilizado en el dispositivo?

Respuesta

40

No está seguro acerca de la configuración directamente desde la aplicación, pero si desea enviar el usuario no cambiar ellos mismos, intente esto:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.setClassName("com.android.settings", "com.android.settings.LanguageSettings");    
startActivity(intent); 
+0

Hola Jim, muchas gracias. Solo otra pregunta, ¿cómo sabía sobre el nombre del paquete y el nombre de clase para la configuración? –

+5

Lo que hice fue usar mi teléfono mientras estaba conectado a mi PC en USB, y ver la salida de logcat. Cada intento iniciado se registra en la salida. La línea decía I/ActivityManager (1018): Actividad de inicio: Intención {act = android.intent.action.MAIN cmp = com.android.settings/.LanguageSettings} En una corazonada fui a Google Code Search y busqué "LanguageSettings Android". Intención "y encontré un ejemplo de alguien que hace exactamente esto. Lo probé yo mismo y simplifiqué el código para un fragmento aquí. –

+0

Encontré otra respuesta a mi propia pregunta. Hay un proyecto de código fuente abierto http://code.google.com/p/languagepickerwidget/ Está recreando una ListActivity para mostrar y elegir los idiomas. Jim, su solución es muy simple y es exactamente lo que necesitaba. Es un recorte a la configuración. Inmediatamente después de que publicó, cargué una aplicación llamada "raygional" en el mercado. Si pudiera (solo tengo 6 puntos), haría que tu respuesta fuera útil. Hay otra manera de ver los procesos e intenciones. En el emulador, vaya a Menú> Herramientas de desarrollo> Configuración de desarrollo> y haga clic en Mostrar procesos en ejecución. –

6

he encontrado otra respuesta a mi propia pregunta. Hay un proyecto de código fuente abierto code.google.com/p/languagepickerwidget Está recreando una ListActivity para mostrar y seleccionar los idiomas.

Jim, su solución es muy simple y es exactamente lo que necesitaba. Es un recorte a la configuración. Inmediatamente después de que publicó, cargué una aplicación llamada "raygional" en el mercado. Si pudiera (solo tengo 6 puntos), haría que tu respuesta fuera útil.

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

+0

¿Hay algún otro proyecto similar a este, que muestre cómo cambiar la configuración regional del sistema operativo, pero con una licencia de Apache o algo similar? –

1

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

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

caerá el usuario fuera directamente la lista de selección de idioma y una vez que se selecciona un idioma, regresará a su aplicación.

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

+0

no funcionó en un Samsung Galaxy Tab 2 (provoca ActivityNotFoundException: no se puede encontrar la clase de actividad explícita). ¿Hay quizás un intento actualizado disponible? – Jane

+0

esto no funciona en samsung galaxy s2 tampoco – dumazy

+0

esto no funciona en Android 4.4.2 –

11

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); 

Esto demuestra la lista de idiomas, y cuando eliges uno, cambia el idioma en el dispositivo.

+1

La desventaja de este enfoque es que si el usuario presiona el ícono superior izquierdo (con la "<" al lado), regresa a la pantalla "Idioma y entrada". – CJBS

Cuestiones relacionadas