2

Angular-material と I18next を使用しています。これが私の簡単な例です:

<md-select ng-init="val='en'" ng-model="val">
    <md-option ng-value="en">{{'en' | i18next}}</md-option>
    <md-option ng-value="de">{{'de' | i18next}}</md-option>
</md-select>

選択したタイトルは 'English' ではなく 'en' で初期化されます。しかし、他の値を選択するとすぐに、正しい国際化された値が新しい選択タイトルとして表示されます。

初期化から国際化された値を表示する選択要素を取得する方法はありますか?

ありがとう、マックス

注意:「English」またはオプションの値とは異なるその他の値で直接初期化すると、select 要素はまったく初期化されません。

更新: md-option 要素の内部値が国際化される前に、md-select 要素のタイトルが初期化されるようです。これを解決する方法がわかりません。

4

1 に答える 1

1

これは、 Github Issueを参照していた古い angular-material.js のバグであり、新しいバージョンで解決されました。

angular-material.js を最新 (ver. 1.3.6) に更新すると、適切に値が選択されます。

HTML

<md-select ng-init="val='en'" ng-model="val">
    <md-option ng-value="en">{{'en' | i18next}}</md-option>
    <md-option ng-value="de">{{'de' | i18next}}</md-option>
</md-select>

働くプランカー

アップデート

フィルターを使用して事前に選択された値をドロップダウンi18nextするには、useLocalStorage オプションを true に設定して、「useLocalStorage: true」などのすべてのファイルを保持する必要があります。

設定

app.config(['$i18nextProvider',
  function($i18nextProvider) {
    $i18nextProvider.options = {
      fallbackLng: 'en',
      useCookie: true,
      useLocalStorage: true, //set to true
      resGetPath: 'i18n-__lng__.json',
      lngWhitelist: ['en', 'de'],
      preload: ['en', 'de']
    };
  }
]);

更新されたPlunkr

うまくいけば、これはあなたを助けるでしょう、ありがとう。

于 2015-03-07T12:45:26.440 に答える