我使用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元素内部值被国际化之前被初始化。我不知道如何解决这个问题。
答案 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>
<强>更新强>
为了使用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']
};
}
]);
希望这对你有所帮助,谢谢。