2014-11-21 131 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" 
       } 
      }, 

感謝阿倫!