2012-09-28 2 views
0

J'essaie de définir la langue de mon application par programmation, mais cela ne change que certaines de mes chaînes. J'ai des valeurs de dossier où sont les chaînes par défaut en anglais. Ensuite, j'ai créé values-fr et traduit chaque chaîne en français moi-même, alors maintenant j'ai le dossier des valeurs par défaut (anglais) où j'ai mes fichiers anglais strings.xml et values-fr où j'ai mes chaînes françaises.xmlLangue ne changera pas

et voici le code que j'utilise pour changer le onCreate linguistique et onResume:

String languageToLoad = "fr"; // your language 
Locale locale = new Locale(languageToLoad); 
Locale.setDefault(locale); 
Configuration config = new Configuration(); 
config.locale = locale; 
getBaseContext().getResources().updateConfiguration(config, 
getBaseContext().getResources().getDisplayMetrics()); 

mais il ne change que quelques-unes des chaînes, par exemple toutes les chaînes dans ma préférence se changer, mais les cordes de l'activité principale restent les mêmes . Une idée de ce qui pourrait causer ça?

+0

Ce code est-il appelé avant de gonfler votre vue d'activité? – UgglyNoodle

+0

Supprimer 'getBaseContext()'. Essayez 'getResources() ...' à la place 'getBaseContext(). GetResources() ...' – pawelzieba

+0

oui il est appelé dans onCreate et aussi dans onResume –

Répondre

0

Essayez ceci:

Resources standardResources = getApplicationContext(); 
DisplayMetrics metrics = standardResources.getDisplayMetrics(); 
Configuration config = new Configuration(standardResources.getConfiguration()); 
config.locale = new Locale("fr") // change 
standardResources.updateConfiguration(config, metrics); 
0

Faites ceci:

Locale localeFR = new Locale("fr", "FR"); 
Resources res = getResources(); 
DisplayMetrics dm = res.getDisplayMetrics(); 
Configuration conf = res.getConfiguration(); 
conf.locale = localeFR; 
res.updateConfiguration(conf, dm); 
Intent refresh = new Intent(MyActivity.this, MyActivity.class); 
startActivity(refresh); 
finish(); 

Une fois que vous définissez les paramètres régionaux pour votre application, vous devez redémarrer l'activité afin de rendre les changements visibles.

Questions connexes