2011-04-01 12 views
11

Tengo esta aplicación para Android que está traducida a varios idiomas. Si existe la cadena apropiada para la configuración regional del dispositivo, la aplicación la muestra automáticamente. Hasta aquí todo bien.Cómo restaurar la configuración regional predeterminada de una aplicación de Android

A continuación, deseo permitir que los usuarios de la aplicación cambien a uno de los idiomas que he proporcionado. Puedo hacer esto anulando la configuración regional predeterminada. No hay problema aquí, tampoco.

La pregunta aquí: ¿Hay alguna manera de que yo proporcione una opción "predeterminada" en la lista de idiomas que permita a los usuarios restablecer la configuración regional automática predeterminada? Tenga en cuenta la situación siguiente:
1. La configuración regional del dispositivo está establecida en alemán. La aplicación muestra todo en alemán.
2. El usuario desea que la aplicación esté en francés, por lo que cambia el idioma desde el interior de la aplicación, y la aplicación se convierte en francés como resultado.
3. El mismo usuario cambia la configuración regional del dispositivo al español. La aplicación todavía es francesa.
4. Seleccionan la configuración "Predeterminada". La aplicación cambia a español y cambia constantemente cuando se cambia la configuración regional.

Si esto no se puede hacer automáticamente, ¿hay alguna forma de que obtenga la configuración regional de todo el dispositivo para que pueda configurar mi aplicación si se selecciona mi opción "predeterminada"?

Respuesta

16

Resolví este problema almacenando la configuración existente en la primera ejecución de la aplicación (antes de realizar cualquier cambio en la configuración regional predeterminada). En un bloque que sólo se ejecuta la primera vez que mi aplicación se ejecuta, que llamo:

m_preferences.edit().putString(
         MyConstants.PREFERENCE_SYSTEM_LANGUAGE, 
         getResources().getConfiguration().locale.getLanguage() 
         ).commit(); 

Más tarde, cuando necesito recuperarlo:

languageToLoad = m_preferences.getString(
         MyConstants.PREFERENCE_SYSTEM_LANGUAGE, 
         MyConstants.LANGUAGE_DEFAULT); 

Al cambiar el idioma, ahorro que, en otra preferencia y manejar las actualizaciones de la vista.

Editar: Después de hurgar un poco más, encontré la configuración del sistema. Cambié a usar esto, en lugar del código anterior.

Resources.getSystem().getConfiguration().locale.getLanguage(); 
+2

La parte anterior en realidad no lo hace por mí, ya que la configuración regional del dispositivo aún puede cambiar después de que se guarde el idioma de mi aplicación. La segunda parte parece ser exactamente lo que estaba buscando, sin embargo. ¡Gracias! – Goldsmith

2
Locale defaultLocale = Locale.getDefault(); 

Editar: Lo siento, me he dado cuenta de este hecho no soluciona su problema, ya que está anulando el valor por defecto para efectuar el cambio.

Cuestiones relacionadas