2014-11-21 126 views
0

我正在寻找一种方法来“完全”更改在SAPUI5中使用的语言。如何更改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 ] 
}), 

按下开关按钮将立即改变势必“国际化>”示范文本: 要使用属性文件似乎不是一个问题,一个工作示例更改语言。 问题是,我也有来自oData服务的元数据(尤其是lables)的文本。

绑定路径看起来是这样的:

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

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

有没有办法做到这一点?或者是注销并重新登录的唯一方法?

回答

2

您可能需要重新初始化的ODataModel

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

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

它刚刚脱离我的头脑。你可以试试。

1

谢谢!我有一个问题需要更改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" 
       } 
      }, 

感谢阿伦!