我正在开发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()
方法。
任何帮助都会得到深深的承认。
答案 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();
并且视图将自动更新。