Angular Translate在视图中非常适合作为过滤器使用。
我正在使用angular-translate-loader-static-files和外部文件,如locale-en.json
等。
问题在于我尝试做这样的事情:
var placeholder = $translate('placeholder.NAME')
.then(function (translatedValue) {
return translatedValue;
});
我总是得到一个承诺,在UI中它显示为{}
,而不是英文名称NAME等。
使用angular-translate在JS中翻译的正确方法是什么?
编辑: 试过这个并得到以下结果(仍未解决)
var placeholder = '';
$translate('placeholder.NAME').then(function (translatedValue) {
console.log(translatedValue);
placeholder = translatedValue;
}, function(err){
console.log(err); // returns placeholder.NAME
});
console.log(placeholder); // returns empty string
答案 0 :(得分:0)
var placeholder = '';
$translate('placeholder.NAME').then(function (translatedValue) {
placeholder = translatedValue;
});
答案 1 :(得分:0)
我建议让您的控制器免于翻译逻辑,并在您的视图中直接翻译您的字符串,如下所示:
<h1>{{ 'TITLE.HELLO_WORLD' | translate }}</h1>
答案 2 :(得分:0)
您可以使用instant
函数获取没有承诺的值:
var translation = $translate.instant('placeholder.NAME');
但是,这并不等待翻译文件加载。您应确保在加载翻译文件后调用此方法。
答案 3 :(得分:0)
来自网站http://angular-translate.github.io/docs/#/guide/03_using-translate-service635
app.controller('Ctrl', ['$scope', '$translate', function ($scope, $translate) {
$translate(['HEADLINE', 'PARAGRAPH', 'NAMESPACE.PARAGRAPH']).then(function (translations) {
$scope.headline = translations.HEADLINE;
$scope.paragraph = translations.PARAGRAPH;
$scope.namespaced_paragraph = translations['NAMESPACE.PARAGRAPH'];
});
}]);