i18n型号无法正常工作

时间:2015-04-14 15:57:36

标签: javascript internationalization sapui5

我有一个代码,用于检查来自服务器的响应,并根据收到的信息显示消息框。我有两种语言的这些消息(用户在登录期间选择一种语言)。 这是一个例子:

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

这是i18n模型声明(当然在我使用模型之前声明):

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”而不是消息本身。

以前工作得很好,我无法弄清楚发生了什么。

可能导致此问题的原因以及如何解决?

谢谢。

1 个答案:

答案 0 :(得分: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 
      }
);

此外,您可以查看有关如何使用ResourceBundle here的最新指南。