语言不会改变

时间:2012-09-28 17:20:04

标签: android locale

我正在尝试以编程方式设置我的应用程序的语言,但它只会改变我的一些字符串。我有值文件夹,其中是英文的默认字符串。然后我创建了值-fr并将每个字符串翻译成法语我自己,所以现在我有(英语)默认值文件夹,我有我的英语strings.xml和values-fr文件夹,我有我的法语strings.xml

这是我用来更改onCreate和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());

但它只会更改一些字符串,例如我的首选项中的所有字符串都会更改,但主要活动中的字符串保持不变。知道是什么原因引起的吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

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

答案 1 :(得分:0)

这样做:

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

为应用设置区域设置后,您需要重新启动活动才能使更改可见。