0

私は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()どこにも方法が見つかりませんでした。

どんな助けでも深く認められます。

4

1 に答える 1

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();

ビューは自動的に更新されます。

于 2015-12-29T12:14:28.990 に答える