无需重新启动应用程序更改系统语言时,某些字符串没有翻译(Some strings are not t

2019-10-18 09:09发布

我有一个问题,如果我打开我的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