SAPUI5增强后访问错误的i18n文件

时间:2018-12-12 11:21:51

标签: javascript properties internationalization sapui5

我正在这样增强我的应用程序中的主要i18n文件:

var i18n = this.getCallbackAPI().getView().getModel('i18n');
i18n.enhance({bundleUrl:"/sap/bc/ui5_ui5/sap/myWorkspace/webapp/app/i18n/i18n.properties"});

bundleUrl中有两个不同的.properties文件:

  1. i18n_de.properties

  2. i18n_en.properties

由于某种原因,即使URL中将语言明确设置为德语,应用程序也只能访问英语文件。

我觉得我缺少一些可以动态使用正确文件的部分。

(在主应用程序中,还有两个.properties文件,并且该应用程序始终使用正确的语言。)

我想念什么?

3 个答案:

答案 0 :(得分:0)

尝试将此行添加到您的组件文件中: oModel是应用程序的主要模型

 oModel.aUrlParams[0] = "sap-language=" + 
 sap.ui.getCore().getConfiguration().getLanguage();

答案 1 :(得分:0)

从那里读取文档:https://sapui5.hana.ondemand.com/#/api/sap.ui.model.resource.ResourceModel/methods/enhance

似乎您可以在初始化时将语言环境传递给包

如果您尝试

var i18n = this.getCallbackAPI().getView().getModel('i18n')
i18n.enhance({
  bundleUrl:"/sap/bc/ui5_ui5/sap/myWorkspace/webapp/app/i18n/i18n.properties",
  bundleLocale:"de"
})

您得到更好的结果吗?如果可以,您可以检查返回的内容是什么

sap.ui.getCore().getConfiguration().getLocale()

答案 2 :(得分:0)

您也可以尝试在资源模型中找到一个URL。专注于: oI18nCustom.getResourceBundle()。oUrlInfo.url

var oI18nBase = this.getModel("i18n");
var oI18nCustom = this.getModel("i18nCustom");
oI18nBase.enhance({bundleUrl: oI18nCustom.getResourceBundle().oUrlInfo.url });

在增强应用清单中,您必须指定自定义i18n模型,例如:

"models": {
    ...
        "i18nCustom": {
            "type": "sap.ui.model.resource.ResourceModel",
            "settings": {
                "bundleName": "namespace.path.extensionApp.i18n.i18n"
            }
        }
    ...
}