2010-09-30 16 views
5

Tengo una configuración en mi aplicación que permite al usuario seleccionar diferentes localizaciones (lenguaje), es decir, Chinese, German, etc.android: refleje el cambio de idioma de la interfaz de usuario en la marcha sin la aplicación de recarga/reinicio

Lo que me gustaría hacer es que una vez que el usuario haga su elección, actualice inmediatamente el diseño con cadenas en el idioma seleccionado actualmente. Por supuesto, quiero que el cambio de idioma se propague a TODAS las actividades actuales, sin volver a cargar la aplicación.

Encontré esto (todavía no lo he intentado), pero me preguntaba si existe una forma más clara de hacerlo.

http://www.tutorialforandroid.com/2009/01/force-localize-application-on-android.html

Gracias

+0

Hola, ¿Encontraste la mejor práctica para esto? thx –

Respuesta

2

También tuve esta issue.I utiliza el código de abajo y luego se cambió el lenguaje sin la restauración de la actividad

public void setLocale(String lang) { 

    myLocale = new Locale(lang); 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    conf.locale = myLocale; 
    res.updateConfiguration(conf, dm); 
    onConfigurationChanged(conf); 
    /*Intent refresh = new Intent(this, AndroidLocalize.class); 
    startActivity(refresh);*/ 
} 
@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // refresh your views here 
    lblLang.setText(R.string.langselection); 
    super.onConfigurationChanged(newConfig); 
} 

espero que le ayudaría .. .....

+1

Copiado de la respuesta más votada en el siguiente enlace. Incluso el código comentado. http://stackoverflow.com/questions/12908289/how-change-language-of-app-on-user-select-language –

0

Hay algunos pasos que debe implementar

En primer lugar, es necesario cambiar la configuración regional de la configuración

Resources resources = context.getResources(); 

    Configuration configuration = resources.getConfiguration(); 
    configuration.locale = new Locale(language); 

    resources.updateConfiguration(configuration, resources.getDisplayMetrics()); 

En segundo lugar, si se desea que los cambios se aplican directamente a la disposición que es visible, o bien puede actualizar las vistas directamente o simplemente puede llamar a la actividad .recreate() para reiniciar la actividad actual.

Y también debe mantener sus cambios porque después de que el usuario cierre su aplicación, usted perdería el cambio de idioma.

me explicó solución más detallada sobre mi blog Change Language Programmatically in Android

Básicamente, que acaba de llamar LocaleHelper.onCreate() en su clase de aplicación y si desea cambiar la configuración regional sobre la marcha puede llamar LocaleHelper.setLocale()

Cuestiones relacionadas