sapui5中的本地化(i18n)没有出现fragment.xml文件

时间:2014-09-03 05:09:31

标签: localization sapui5

我有一个按钮(创建应用程序),如果我点击一个按钮,将出现一个碎片对话框。这里能够显示碎片化的对话框。但内部化(i18n)没有出现在字段中。 (对于能够显示xml的{​​{1}}个文件,但i18n文件无法显示fragment.xml /)

i18n

component.js

createContent : function() { // create root view var oView = sap.ui.view({ id : "app", viewName : "sap.gss.program.view.App", type : "JS", viewData : { component : this } }); var i18nModel = new sap.ui.model.resource.ResourceModel({ bundleUrl : "i18n/appTexts_fr.properties" }); oView.setModel(i18nModel, "i18n"); return oView; }

Controller.js

createApplication: function (oEvent) { if (!this.oDialogFragment) { this.oDialogFragment = sap.ui.xmlfragment("sap.gss.program.view.myFragment", this); } this.oDialogFragment.open(); }

fragment.xml

4 个答案:

答案 0 :(得分:14)

您可以使用dependents聚合,将对话框连接到视图;您不需要明确设置任何模型。

所以在你的情况下你会这样做:

createApplication: function (oEvent) {
    if (!this.oDialogFragment) {
        this.oDialogFragment = sap.ui.xmlfragment("sap.gss.program.view.myFragment", this);
    }
    this.getView().addDependent(oDialogFragment); // <--
    this.oDialogFragment.open();
}

有关详情,请参阅my answer至“What is the usage of "dependents" aggregation in SAPUI5?”。

答案 1 :(得分:4)

你也应该为对话框片段设置i18n资源模型。

createApplication: function(oEvent) {

    if (!this.oDialogFragment) {

        this.oDialogFragment = sap.ui.xmlfragment("sap.gss.program.view.myFragment", this);     
        var i18nModel = new sap.ui.model.resource.ResourceModel({
                            bundleUrl : "i18n/appTexts_fr.properties"
                        });
        this.oDialogFragment.setModel(i18nModel, "i18n");      

    }

   this.oDialogFragment.open();
}

答案 2 :(得分:1)

它往往是最简单的方式。只需ResourceModel设置全局:

sap.ui.getCore().setModel(i18nModel, "i18n");

现在,您可以从应用程序的任何位置引用它,并像您一样绑定它,无需在视图甚至控制级别再次设置它。

答案 3 :(得分:1)

我遇到了同样的问题,因此在Component中全局和本地设置模型。它工作正常。

sap.ui.getCore().setModel(i18nModel, "i18n");
this.setModel(i18nModel, "i18n");