0

我正在尝试以编程方式设置我的应用程序的语言,但它只改变了我的一些字符串。我有值文件夹,其中是英文的默认字符串。然后我创建了 values-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());

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

4

2 回答 2

0

尝试这个:

Resources standardResources = getApplicationContext();
DisplayMetrics metrics = standardResources.getDisplayMetrics();
Configuration config = new Configuration(standardResources.getConfiguration());
config.locale = new Locale("fr") // change
standardResources.updateConfiguration(config, metrics);
于 2012-11-06T23:53:27.027 回答
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();

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

于 2017-04-11T15:55:25.247 回答