这是一个重复的问题,但我没有从这些答案中得到解决方案,这就是为什么我发布这个问题,我正在寻找超过一周的解决方案..
在Android中,Oreo Localization有时不起作用。所有字符串仅以设备语言显示。
if (languagecode.equals("1")) {
Resources res = getApplicationContext().getResources();
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf =
res.getConfiguration();
conf.locale = new Locale("ml");
res.updateConfiguration(conf, dm);
txt_details.setText(R.string.card_det);
txt_no.setText(R.string.card_number);
}
if (languagecode.equals("2")) {
Resources res = getApplicationContext().getResources();
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf =
res.getConfiguration();
conf.locale = new Locale("ta");
res.updateConfiguration(conf, dm);
txt_details.setText(R.string.card_det);
txt_no.setText(R.string.card_number);
}
我试过
Android N change language programmatically
In android Oreo localization is not working
How to change Android O / Oreo / api 26 app language
https://www.reddit.com/r/androiddev/comments/8b2rol/solution_for_locale_language_change_not_working/
这些答案没有给出解决方案请帮帮我
答案 0 :(得分:1)
这段代码过去对我有用,它来自我所参与的一个了不起的项目:
也许您错过了if
声明中的内容:
public void setLocale(String localeString) {
Resources res = getResources();
Configuration conf = res.getConfiguration();
Locale locale = new Locale(localeString);
Locale.setDefault(locale);
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
conf.setLocale(locale);
getApplicationContext().createConfigurationContext(conf);
}
DisplayMetrics dm = res.getDisplayMetrics();
if (VERSION.SDK_INT >= VERSION_CODES.N) {
conf.setLocales(new LocaleList(locale));
} else {
conf.locale = locale;
}
res.updateConfiguration(conf, dm);
}
无论如何,不要复制代码,而是使用所需的本地字符串调用setLocale()
方法:)