我想在应用级别更改应用程序语言。我有values-fr/string.xml
,values-cn/string.xml
和values-en/string.xml
。
在我的应用程序Java代码中,我有一个对话框,它显示了一个语言选项列表,我尝试使用以下代码来更改我的应用程序的语言:
//user select a language from the dialog list
language_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String language="";
switch (position) {
case 0:
language="fr";
break;
case 1:
language="cn";
break;
case 2:
language="en";
break;
}
Locale locale= new Locale(language);
Locale.setDefault(locale);
Configuration config= new Configuration();
config.locale=locale;
context.getResources().updateConfiguration(config,context.getResources().getDisplayMetrics());
dissmissDialog();
}
});
我认为使用上面的代码,在用户选择语言后,对话框被解除,应用程序应该根据所选的语言环境加载字符串(例如values-fr / strings.xml)。但是我的应用字符串在对话框解除后没有改变。
我想我的Java代码应该告诉应用重新加载配置,并进行刷新,但我不知道如何在Android中执行此操作。
通常,如何在应用程序级别更改语言环境,以便在用户选择语言后,应用程序可以刷新并显示最新选择的语言环境字符串?