2011-06-21 8 views
8

Duplicar posibles:
Changing Locale within the app itselfcómo forzar la lengua en la aplicación para Android

en mi aplicación tengo que idioma "fuerza" Digamos que tengo la configuración regional en Inglés como esmalte de defecto y finlandés, de acuerdo con that post había creado la función publicada también a continuación, la función se llama en createActivity(), pero el problema es que no funciona .... alguna idea de por qué? ¿Alguna sugerencia?

private void setLocale(String localeCode){ 
     Locale locale = new Locale(localeCode); 
     Locale.setDefault(locale); 
     Configuration config = new Configuration(); 
     config.locale = locale; 
     getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 
    } 

Respuesta

3

Añadir lo siguiente en el manifiesto (para cada actividad):

android:configChanges="locale" 

gracias Deepak

11

Esto es lo que tengo hasta ahora. Sé que esta pregunta está resuelta, pero mi solución es más fácil y más compacta. No se necesitan otros cambios, ningún atributo android: configurationChanges para todas las actividades en su manifiesto.

public class SigmaMiddleEastApplication extends PPGApplication { 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     newConfig.locale = Locale.ENGLISH; 
     super.onConfigurationChanged(newConfig); 

     Locale.setDefault(newConfig.locale); 
     getBaseContext().getResources().updateConfiguration(newConfig, getResources().getDisplayMetrics()); 
    } 
} 

TEN CUIDADO esto puede causar problemas: What could cause an Android activity to relaunch itself infinitely when returning from camera?

+3

Sólo envolver todo en torno a un "si (newConfig.locale = targetLocale!)" Debería resolver el problema relanzamiento infinita. – Edison

Cuestiones relacionadas