angular-translate 在控制器中翻译字典
angular-translate translate dict in controller
在我的应用程序中,我使用 https://github.com/angular-translate/angular-translate 进行本地化。但是我不明白如何在我的控制器中翻译字典值:
$scope.rx_usart_names = [
{'val': 0, 'name': 'UART 1'},
{'val': 2, 'name': 'UART 3'},
{'val': 3, 'name': 'UART 4'},
{'val': 5, 'name': 'UART 6'}
];
然后我将其显示在模板中,例如:
<md-select placeholder="Receiver Port" ng-model="RFDump.set.rx_usart">
<md-option ng-repeat="option in rx_usart_names" ng-value="option.val">
{{ option.name }}
</md-option>
</md-select>
如果我使用:
$translate.instant('UART 1')
然后当我改变语言时,我的值没有改变。
如果我使用 $translate('UART 1')
那么它 returns 承诺。
示例:
您可以使用翻译过滤器...
translate
过滤解决方案: (JsFiddle)
HTML:
<md-select>
<md-option ng-repeat="option in vm.rx_usart_names">
{{ option.name | translate }}
</md-option>
</md-select>
应用配置:
app.config(function($translateProvider) {
$translateProvider.translations('en', {
UART1: 'UART1 (English)',
UART2: 'UART2 (English)'
});
$translateProvider.translations('de', {
UART1: 'UART1 (German)',
UART2: 'UART2 (German)'
});
$translateProvider.preferredLanguage('en');
});
控制器:
function MyCtrl($translate) {
var vm = this;
vm.rx_usart_names= [{
'val': 0,
'name': 'UART1'
}, {
'val': 2,
'name': 'UART2'
}];
vm.changeLanguage = function(langKey) {
$translate.use(langKey);
};
}
我知道如果你有很多键要翻译,那不是使用过滤器的最快方法,但即使在 angular i18n docs 的例子中他们也在使用它。这不是一个纯粹的控制器解决方案,但至少它运行良好。我希望有人 post 有更好的方法...祝你好运
在我的应用程序中,我使用 https://github.com/angular-translate/angular-translate 进行本地化。但是我不明白如何在我的控制器中翻译字典值:
$scope.rx_usart_names = [
{'val': 0, 'name': 'UART 1'},
{'val': 2, 'name': 'UART 3'},
{'val': 3, 'name': 'UART 4'},
{'val': 5, 'name': 'UART 6'}
];
然后我将其显示在模板中,例如:
<md-select placeholder="Receiver Port" ng-model="RFDump.set.rx_usart">
<md-option ng-repeat="option in rx_usart_names" ng-value="option.val">
{{ option.name }}
</md-option>
</md-select>
如果我使用:
$translate.instant('UART 1')
然后当我改变语言时,我的值没有改变。
如果我使用 $translate('UART 1')
那么它 returns 承诺。
示例:
您可以使用翻译过滤器...
translate
过滤解决方案: (JsFiddle)
HTML:
<md-select>
<md-option ng-repeat="option in vm.rx_usart_names">
{{ option.name | translate }}
</md-option>
</md-select>
应用配置:
app.config(function($translateProvider) {
$translateProvider.translations('en', {
UART1: 'UART1 (English)',
UART2: 'UART2 (English)'
});
$translateProvider.translations('de', {
UART1: 'UART1 (German)',
UART2: 'UART2 (German)'
});
$translateProvider.preferredLanguage('en');
});
控制器:
function MyCtrl($translate) {
var vm = this;
vm.rx_usart_names= [{
'val': 0,
'name': 'UART1'
}, {
'val': 2,
'name': 'UART2'
}];
vm.changeLanguage = function(langKey) {
$translate.use(langKey);
};
}
我知道如果你有很多键要翻译,那不是使用过滤器的最快方法,但即使在 angular i18n docs 的例子中他们也在使用它。这不是一个纯粹的控制器解决方案,但至少它运行良好。我希望有人 post 有更好的方法...祝你好运