2015-04-14 48 views
1

我有一個代碼,用於檢查服務器的響應,並根據收到的信息顯示消息框。我有兩種語言的這些消息(用戶在登錄時選擇一種語言)。 這裏是例子:i18n型號無法正常工作

if(sResponse == 'IDfail'){ 
    sap.m.MessageBox.alert 
    ("{i18nResourceModel>idnotnine}", 
     {icon: sap.m.MessageBox.Icon.ERROR, 
     title: "{i18nResourceModel>error}"} 
    ); 
} 

這裏是國際化模型聲明(這是以前我用的模型,當然申報):

var oResourceModel = new sap.ui.model.resource.ResourceModel 
    ({bundleUrl: "i18n/i18n.properties", bundleLocale: "en"}); 
sap.ui.getCore().setModel(oResourceModel, "i18nResourceModel"); 

我有2個.properties文件:i18n.properties(英文)和i18n_iw.properties (希伯來文)。

奇怪的是,消息框的title被正確翻譯,但代替消息本身,我看到文本:「i18nResourceModel> idnotnine」。

它工作得很好,我無法弄清楚發生了什麼。

什麼可能導致此問題,我該如何解決?

謝謝。

+0

你有沒有idnotnine = .properties文件中的一些文本? –

+0

@jumpifzero當然,我確實。此外,如果我把''{i18nResourceModel> idnotnine}「'作爲'title'的文本,我確實看到了這個消息。 – keshet

回答

3

數據綁定通常不適用於像sap.m.MessageBox.alert()這樣的函數調用。你必須得到文本手動喜歡:

var resourceModel = sap.ui.getCore().getModel("i18nResourceModel"); 
var alertText = resourceModel.getProperty("idnotnine"); 
var alertTitle = resourceModel.getProperty("error"); 

sap.m.MessageBox.alert(alertText, { 
      icon: sap.m.MessageBox.Icon.ERROR, 
      title: alertTitle 
     } 
); 

此外,您可以看看如何使用資源包here最新的指南。

+0

我嘗試了一些你在你的代碼中做的事情,它確實有效。我的沮喪來自數據綁定DID的工作,現在它只在消息框的主體中不起作用。所有的控制標籤和消息框標題都很好。 – keshet

+0

我明白了你的觀點。其實我真的很想知道爲什麼它以前適合你。根據SAPUI5/OpenUI5的文檔,數據綁定語法僅適用於從ManagedObject繼承的控件。 –