【问题标题】:How to change the SAPUI5 language?如何更改 SAPUI5 语言?
【发布时间】:2015-01-19 16:52:25
【问题描述】:

我正在寻找一种“完全”更改 SAPUI5 中使用的语言的方法。 使用属性文件更改语言似乎不是问题,一个工作示例:

new sap.m.Switch({
    state : false,
    customTextOn : "EN",
    customTextOff : "DE",
    visible : true,
    change : [ function(oEvent) {
        var control = oEvent.getSource();
        var state = control.getState();
        if (state) {
            i18nModel = new sap.ui.model.resource.ResourceModel({bundleUrl:"i18n/i18n.properties", bundleLocale:"en"});
            sap.ui.getCore().setModel(i18nModel, "i18n");
        } else {
            i18nModel = new sap.ui.model.resource.ResourceModel({bundleUrl:"i18n/i18n.properties", bundleLocale:"de"});
            sap.ui.getCore().setModel(i18nModel, "i18n");
        }
    }, this ]
}),

按下切换按钮将立即更改绑定到“i18n>”模型的文本。 问题是,我还有来自 oData 服务的元数据(尤其是标签)的文本。

绑定路径可能如下所示:

{modelName>/#Entity/Attribute/@sap:label} 

此语言在首次登录时定义。现在我正在寻找一种在语言更改后重新加载元数据(以及数据)的方法。

有什么办法吗?或者是退出并重新登录的唯一方法?

【问题讨论】:

    标签: internationalization sapui5


    【解决方案1】:

    您可能需要重新初始化ODataModel

    var oModel = new sap.ui.model.odata.ODataModel("/your_odata_service",
                      {metadataUrlParams:{"sap-language":"de"}}
                 );
    

    这样它将再次通过$metadata?sap-language=de 检索德语的OData 元数据。

    这只是我的想法。你可以试一试。

    【讨论】:

      【解决方案2】:

      谢谢!我在更改 smartforms/smartfields 用于标签的语言时遇到了问题,因为我无法控制在 metadata.xml 文件中声明标签的语言。艾伦解决方案对我有用!我正在使用 SAP Web IDE,我更改了 manifest.json 文件,添加了这一行是定义了原理或主(无名,“”)模型:

      "models": {
              "i18n": {
                  "type": "sap.ui.model.resource.ResourceModel",
                  "settings": {
                      "bundleName": "mpo.i18n.i18n"
                  }
              },
              "": {
                  "dataSource": "mainService",
                  "settings": {
                      "defaultBindingMode": "TwoWay",
                      "metadataUrlParams": {
                          "sap-documentation": "heading",
                          "sap-language": "en"
                      }
                  },
      

      谢谢艾伦!

      【讨论】:

        【解决方案3】:

        艾伦几乎是对的。

        要使用附加的sap-language 参数重新加载元数据文件,您需要先销毁模型然后reinit 新的模型。重要的是,您没有同一服务的任何其他 ODataModel 实例。

        this.getModel().destroy();
        var oModel = new sap.ui.model.odata.v2.ODataModel("/youService", {
            metadataUrlParams: {"sap-language":"de"}
        });
        

        【讨论】:

          猜你喜欢
          • 2013-09-28
          • 1970-01-01
          • 2020-04-12
          • 1970-01-01
          • 2016-05-20
          • 2013-07-03
          • 2019-02-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多