我遇到了一个关于应用程序本地化的小问题:
情况是这样的 - 我为我的用户提供了始终使用挪威语应用程序的选项,无论系统语言如何。
它在大多数情况下都工作得很好(我进入设置,选中复选框以强制挪威语,按“后退”,之前的活动以挪威语显示 - 同样的“相反”),但是 - 仅语言发生变化似乎正确更新(重新加载资源)我的“后堆栈”中的第一个活动。
举例说明一个典型场景:
用户启动应用程序,并看到主要活动(英文)。从那里,他选择第二个活动(也是英语)。然后,他进入设置(从第二个活动的菜单中)并将偏好设置为强制挪威语。
然后,当他返回时,第二个活动会正确更新并以挪威语显示(到目前为止一切顺利)。然而,当他再次按“返回”返回主活动时,它仍然以英文显示......
如果他返回并再次启动应用程序,主要活动将以挪威语正确显示......
这里有聪明人建议我应该做什么吗?
每个活动中包含的用于设置显示语言的代码:
在 onCreate 中:Globals.locale_default = Locale.getDefault().getDisplayLanguage();
public void onStart() {
super.onStart();
forceNorwegian = settings.getBoolean(getString(R.string.pref_key_forceNorwegian).toString(), false);
if (forceNorwegian) {
languageCheck("no");
} else {
Globals.locale = null;
languageCheck(Globals.locale_default);
}
}
public void languageCheck(String lang) {
Globals.locale = new Locale( lang );
// Check the current system locale and change it to Norwegian if it's not already the default
Globals.checkLocale( this );
if (Globals.language_changed) …Run Code Online (Sandbox Code Playgroud)