SAPUI5 i18n oBundle.setText()

时间:2014-02-28 09:23:02

标签: internationalization sapui5

我正在开发SAPUI5应用程序。我们正在使用i18n本地化概念,其中我们已经为我们的应用程序声明了所有静态文本的属性,并为它们分配了值,例如:

var oButton = new sap.ui.commons.Button();
oButton.setText(oBundle.getText("LOGIN_BUTTON_NAME"));

现在我需要根据用户设置动态更新某些标签文本。这些文本在i18n包中定义。所以我正在寻找类似的东西:

//Update i18n bundle
oBundle.setText("USERNAME_LABEL", "Username");
//Use updated value
oLabel.setText(oBundle.getText("USERNAME_LABEL"));

但我无法在任何地方找到setText()方法。

任何帮助都会得到深深的承认。

1 个答案:

答案 0 :(得分:1)

对不起,我迟到了:D

你不应该这样做,因为i18n资源是静态文本。

最好的方法是定义一个额外的JSONModel 并在那里加载要从包中更改的数据。

如果您有以下标签:

<Label text="{/USERNAME_LABEL}" />

您可以使用以下代码:

var oModel = new JSONModel({
    USERNAME_LABEL: oBundle.getText("USERNAME_LABEL")
});

oLabel.setModel(oModel);

现在每次要更新文本时,都可以执行以下操作:

var oData = oModel.getData();
oData.USERNAME_LABEL = "bla...";
oModel.refresh();

并且视图将自动更新。