Я хотел бы изменить язык приложения на уровне приложения.У меня есть 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();
}
});
Я думаю, с помощью приведенного выше кода, после того, как пользователь выбрал язык, диалоговое окно закрывается, приложение должно загрузить строку в соответствии с выбранным языковым стандартом (например, значения-fr / strings.xml).Но моя строка приложения не меняется после закрытия диалога.
Полагаю, мой Java-код должен сообщить приложению о необходимости перезагрузить конфигурацию и выполнить обновление, но я не знаю, как это сделать в Android.
Итак,как изменить локаль на уровне приложения, чтобы после выбора пользователем языка приложение могло обновлять и отображать последние выбранные строки локали?