1

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

4

2 回答 2

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);
}

我希望它会帮助你......

于 2013-07-15T17:55:05.253 回答
1

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

于 2013-07-16T15:43:31.357 回答