【问题标题】:Can't change an app localization during the lifetime在生命周期内无法更改应用本地化
【发布时间】:2021-11-07 05:40:43
【问题描述】:

据我所知,UI5 根据浏览器的 HTTP 标头 accept-language 相对于 manifest.json 应用程序描述符的 supportedLocalesfallbackLocale 值确定所需的本地化。

然而,就我而言,最初用户会看到一个英文授权对话框,授权后我想根据用户配置设置应用本地化,并在成功授权后加载。

基于Language switch in SAPUI5,我尝试过申请:

sap.ui.getCore().getConfiguration().setLanguage("fr");

在视图 onInit() 中,但我在所需的本地化中得到一个闪烁的视图,然后是一个空窗口。

由于 sap.ui.getCore().setLanguage() does not guarantee 已经创建,此调用将更新与语言相关的对象,我已尝试 location.reload(); 触发完整的页面重新加载和重建所有 UI5 元素,但它没有帮助。

【问题讨论】:

    标签: sapui5


    【解决方案1】:

    我不确定这是否可以在不重新加载的情况下完成。

    对于modern browsers,您可以使用此代码更改网址:

    const oURL = new URL(window.location.href);
    window.location.href = oURL.searchParams.set("sap-ui-language", "en").toString();
    

    如果由于某些原因,您的 URL 中已包含该语言,则需要添加 cachebreaker

    【讨论】:

    • 虽然这种方法有效,但它会将?sap-ui-language=en 添加到 URL 中,我希望避免这种情况。除了可能缓存问题。
    【解决方案2】:

    我的首选是

    sap.ui.getCore().getConfiguration().applySettings({ 语言:'de', });

    这会切换使用的 i18n 包。

    但是,仍有一些事件没有得到翻译,例如sap.m.PlanningCalendar 中的工作日标签,保留在浏览器的语言中。

    【讨论】:

      猜你喜欢
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多