我正在尝试以编程方式设置我的应用程序的语言,但它只会改变我的一些字符串。我有值文件夹,其中是英文的默认字符串。然后我创建了值-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());
但它只会更改一些字符串,例如我的首选项中的所有字符串都会更改,但主要活动中的字符串保持不变。知道是什么原因引起的吗?
答案 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();
为应用设置区域设置后,您需要重新启动活动才能使更改可见。