在生命周期内无法更改应用本地化

Can't change an app localization during the lifetime

据我所知,UI5 根据浏览器的 HTTP header accept-language 以及 [=14] 的 supportedLocalesfallbackLocale 值确定所需的本地化=] 应用描述符。

但是,在我的例子中,最初用户看到的是英文授权对话框,授权后我想根据用户配置设置应用程序本地化,并在成功授权后加载。

基于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 中的工作日标签,保留在浏览器的语言中。