2017-01-23 19 views
0

ウェブアプリケーションに英語とドイツ語の2つの異なる言語(英語とドイツ語)があり、ユーザーは選択ボックスを通じてアプリケーションの言語を変更できます。最初は私はバックエンドからの優先言語を取得していると私は次のようにコアのロケールを設定しています。アプリケーション内でsap ui5アプリケーションのロケールを動的に変更する

sap.ui.getCore().getConfiguration().setLanguage("//according to whatever is coming from back-end") 

は今、ユーザーが制御すなわちのsap.m.datepickerを開くと、カレンダーが英語で表示されている、最初の言語が英語であると言うことができます。下に示すように、ユーザーは、私は再びコアで言語を変更していたアプリケーションからドイツ語に言語を変更した場合:

sap.ui.getCore().getConfiguration().setLanguage("de-DE") 

ユーザーが同じ日付ピッカー、それは利用者ならば、ドイツ語の代わりに英語で表示されていることを開く場合ドイツ語でレンダリングされている別のコントロールまたは日付ピッカーを開きます。

アプリで言語を変更しているうちに、ページが最新表示されていません。 コントロールのロケールを動的に変更するソリューションを提案してください。

答えて

1

多分私の答えhereはちょっと役立ちます。

多くの場合、ほとんどの場合でも、標準のUI5コントロールは読み込まれたときに言語を検出します。非常に多くの場合、コントロール開発者は言語の「動的な変更」を実装しませんでした。上記のリンクをチェックすると、言語の変化に反応する方法があることがわかりますが、何らかの理由で実装されていないことがよくあります。

しかし、あなたのケースでは、標準コントロールが動的言語の変更をサポートしていない可能性があります(ただし、コードはチェックしていません)。また、SAPのUI5ユーザーはこれをバグとは見なしていないようです(このgithub issue参照)。このような残念...

0

sap.ui.core.Core.attachLocalizationChanged(fnFunction, oListener)を使用し、コントローラのonInit機能に追加することをお勧めします。

これより、fnFunctionでは、ロケールの変更を動的にする必要があるコントロールを再構築します。

例:これはapi

の情報に基づいて行われるべきものの私の解釈である

onInit: function(oEvent) { 
    sap.ui.getCore().attachLocalizationChanged(this._handleLocalizationChanged, this); 
}, 
_handleLocalizationChanged: function() { 
    // ... Some logic to re-build/set locale for the dynamic controls. 
} 

関連する問題