使用i18n进行md-select初始化

时间:2015-03-07 12:27:24

标签: angularjs i18next angular-material

我使用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>

选择标题初始化为&#39; en&#39;而不是&#39;英语&#39; 。但是一旦我选择了另一个值,正确的国际化值就会显示为新的选择标题。

知道如何让select元素从初始化中显示国际化值吗?

谢谢, 最大

N.B。如果我直接使用&#39;英文&#39;或者与选项中的值不同的任何其他值,select元素根本不会被初始化。

更新:看起来md-select元素标题在md-option元素内部值被国际化之前被初始化。我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

那是你所指的Github Issue&amp;中较老的angular-material.js中的错误。它已在较新版本中得到解决。

尝试更新您的angular-material.js到最新版本(版本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>

Working Plunkr

<强>更新

为了使用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']
    };
  }
]);

Updated Plunkr

希望这对你有所帮助,谢谢。