我有一个问题,如果我打开我的Android应用程序,然后进入系统设置更改语言,然后再次打开该应用,在应用中的一些字符串将不会被翻译,除非应用程序是强制退出并重新启动。 任何想法,为什么出现这种情况? 我没有android:configChanges
设置为"locale"
在我的任何地方AndroidManifest
,所以并不这是否意味着所有的活动应该对自己的重新启动?
Answer 1:
我也有过这样issue.I使用低于被张贴在一些StackOverflow的答案代码,然后它改变了语言,而无需刷新活动
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
onConfigurationChanged(conf);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// refresh your views here
lblLang.setText(R.string.langselection);
super.onConfigurationChanged(newConfig);
}
我希望它会帮助你.......
Answer 2:
终于想通了这个问题。 那些没有被翻译的字符串,正在一个静态类内填充。 所以,因为这个类只被实例化一次,串并没有获得再次与适当的译文重新填充。
文章来源: Some strings are not translated when changing system language without restarting app