在生命周期内无法更改应用本地化
Can't change an app localization during the lifetime
据我所知,UI5 根据浏览器的 HTTP header accept-language
以及 [=14] 的 supportedLocales
和 fallbackLocale
值确定所需的本地化=] 应用描述符。
但是,在我的例子中,最初用户看到的是英文授权对话框,授权后我想根据用户配置设置应用程序本地化,并在成功授权后加载。
基于Language switch in SAPUI5,我尝试申请:
sap.ui.getCore().getConfiguration().setLanguage("fr");
在视图 onInit()
中,但我在所需的本地化中看到了一个闪烁的视图,然后是一个空的 window。
由于 sap.ui.getCore().setLanguage()
does not guarantee 已经创建,语言相关 objects 将通过此调用更新,我已尝试 location.reload();
触发完整的页面重新加载和重建所有 UI5 元素,但没有帮助。
我不确定这是否可以在不重新加载的情况下完成。
对于 modern browsers,您可以使用此代码更改 URL:
const oURL = new URL(window.location.href);
window.location.href = oURL.searchParams.set("sap-ui-language", "en").toString();
如果由于某些原因,您的语言已经在 URL 中,您需要添加一个 cachebreaker。
我的首选是
sap.ui.getCore().getConfiguration().applySettings({
language: 'de',
});
这会切换使用的 i18n 包。
但是,仍有一些事件没有得到翻译,例如sap.m.PlanningCalendar
中的工作日标签,保留在浏览器的语言中。
据我所知,UI5 根据浏览器的 HTTP header accept-language
以及 [=14] 的 supportedLocales
和 fallbackLocale
值确定所需的本地化=] 应用描述符。
但是,在我的例子中,最初用户看到的是英文授权对话框,授权后我想根据用户配置设置应用程序本地化,并在成功授权后加载。
基于Language switch in SAPUI5,我尝试申请:
sap.ui.getCore().getConfiguration().setLanguage("fr");
在视图 onInit()
中,但我在所需的本地化中看到了一个闪烁的视图,然后是一个空的 window。
由于 sap.ui.getCore().setLanguage()
does not guarantee 已经创建,语言相关 objects 将通过此调用更新,我已尝试 location.reload();
触发完整的页面重新加载和重建所有 UI5 元素,但没有帮助。
我不确定这是否可以在不重新加载的情况下完成。
对于 modern browsers,您可以使用此代码更改 URL:
const oURL = new URL(window.location.href);
window.location.href = oURL.searchParams.set("sap-ui-language", "en").toString();
如果由于某些原因,您的语言已经在 URL 中,您需要添加一个 cachebreaker。
我的首选是
sap.ui.getCore().getConfiguration().applySettings({ language: 'de', });
这会切换使用的 i18n 包。
但是,仍有一些事件没有得到翻译,例如sap.m.PlanningCalendar
中的工作日标签,保留在浏览器的语言中。