更改系统语言而不重新启动应用程序时,某些字符串不会被翻译

时间:2013-07-15 17:11:59

标签: android string localization appsettings

我遇到了一个问题,如果我打开我的Android应用程序,然后进入系统设置更改语言,然后再次打开应用程序,应用程序中的一些字符串将不会被翻译,除非该应用程序是强制退出并重新启动。知道为什么会这样吗?我的android:configChanges中的任何地方都没有"locale"设置AndroidManifest,所以这是不是意味着所有活动都应该自行重启?

2 个答案:

答案 0 :(得分:2)

我也有这个问题。我使用下面的代码在一些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);
}

我希望它能帮到你.......

答案 1 :(得分:0)

终于找到了问题所在。未翻译的字符串正在静态类中填充。因为这个类只被实例化一次,所以字符串没有通过正确的翻译再次重新填充。