2010-09-30 5 views
5

J'ai un paramètre dans mon application qui permet à l'utilisateur de sélectionner une autre localisation (langue), par exemple Chinese, German, etc.android: reflète le changement de langue de l'interface utilisateur à la volée sans recharger/redémarrer l'application

Ce que je voudrais faire est qu'une fois que l'utilisateur fait son choix, mettre immédiatement à jour la mise en page avec des chaînes dans la langue actuellement sélectionnée. Bien sûr, je veux que la modification de la langue soit propagée à TOUTES les activités en cours, sans recharger l'application.

J'ai trouvé ceci (havent essayé encore), mais je me demandais s'il y a une manière plus propre de le faire.

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

Gracias

+0

Bonjour, Avez-vous trouvé la meilleure pratique pour cela? thx –

Répondre

2

J'avais aussi ce issue.I utilisé le code ci-dessous et il a changé la langue sans rafraîchir l'activité

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

J'espère que cela vous aiderait ..

+1

Copié à partir de la réponse la plus votée sur le lien suivant. Même le code commenté. http://stackoverflow.com/questions/12908289/how-change-language-of-app-on-user-select-language –

0

Il y a quelques étapes que vous devez mettre en œuvre

Tout d'abord, vous devez modifier les paramètres régionaux de votre configuration

Resources resources = context.getResources(); 

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

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

Deuxièmement, si vous souhaitez que vos modifications sont directement applicables à la mise en page qui est visible, vous pouvez soit mettre à jour les vues directement ou vous pouvez simplement appeler l'activité .recreate() pour redémarrer l'activité en cours.

Et vous devez également persister vos modifications car après que l'utilisateur ferme votre application, vous perdriez le changement de langue.

j'ai expliqué solution plus détaillée sur mon blog Change Language Programmatically in Android

Fondamentalement, vous appelez simplement LocaleHelper.onCreate() sur votre classe d'application et si vous voulez modifier les paramètres linguistiques à la volée, vous pouvez appeler LocaleHelper.setLocale()

Questions connexes