如何从SAPUI5中的OData服务创建i18n?

如何从SAPUI5中的OData服务创建i18n?,sapui5,Sapui5,我想去掉SAPUI5应用程序中的i18n文件。我开发了一个OData服务,提供所有的翻译,并从manifest.json中删除了i18n模型。我还在Component.js中基于我的OData服务创建i18n模型。但是我不知道为什么元素没有绑定到我的i18n模型的数据 以下是我创建Odata模型的代码: oDataModel.read("/TranslationConfigSet", { async: false, filters: aFilter

我想去掉
SAPUI5
应用程序中的i18n文件。我开发了一个OData服务,提供所有的翻译,并从
manifest.json
中删除了
i18n
模型。我还在
Component.js
中基于我的OData服务创建
i18n
模型。但是我不知道为什么元素没有绑定到我的i18n模型的数据

以下是我创建Odata模型的代码:

oDataModel.read("/TranslationConfigSet", {
            async: false,
            filters: aFilter,
            success: function(oData, response) {
                var aI18n = {};
                var results = oData.results;
                for (var i = 0; i < results.length; i++) {
                    aI18n[results[i]["ZStringKey"]] = results[i]["ZTranslation"];
                }
                var oI18nModel = new JSONModel(aI18n);
                _this.setModel(oI18nModel, "i18n");
            },
            error: function(oError) {

            }
        });

而TESTSTRING存在于我的数据和数组中。

您似乎错过了绑定语法中的斜杠(/)。JSON模型的语法与资源包语法不同。所以你的绑定应该是

text="{i18n>/TESTSTRING}"

在这种情况下,您如何定义“_this”?顺便说一句,这个主意很棒。。。如果你解决了这个问题,让社区知道。棒极了!我希望能够解决这个问题<代码>变量_this=this在回调函数之外。我不明白,为什么这应该是个好主意?添加与OData相关的开销以加载翻译,将翻译存储在JSONModel中,并且必须采用不同的绑定语法,从而丢失ResourceModel的功能。。。优势在哪里?我也不明白@为什么这是个好主意?马丁:你介意分享一下你做出决定的原因吗?为什么您希望从服务器获取翻译(并支付额外的同步往返),而不是将其存储在客户端?我在SAP NW/GW方面缺乏经验,所以我真的很好奇。@boghyon首先,它与SAP NW无关。它与SAPUI5有关。数据库中数据的第二次操作比某些文件更容易。唯一的问题是它在从后端接收数据之前呈现视图。如何在呈现或延迟呈现之前加载此文件?因为您是从odata服务加载它,它将取决于odata延迟。你可能有一个繁忙的指示器集,一旦模型完成,它就可以隐藏。阅读完成是的,这是一个选项,但我会问这个问题,看看还有没有其他的可能性?延迟渲染可能不是一个好主意。为此打开一个新线程是一个好主意。那里的社区可能有一些好主意
text="{i18n>/TESTSTRING}"