Я создал translateProvider следующим образом:
angular.module('app')
.config(['$translateProvider', function($translateProvider){
$translateProvider.translations('en', {
'HELLO' : 'Hello'
});
$translateProvider.translation('de', {
'HELLO' : 'Hallo'
});
$translateProvider.prefferedLanguage('en');
}])
и я могу перевести строки в HTML, используя выражение с фильтром, как:
{{ 'HELLO' | translate }}
показывает "Hello" (или "Hallo" в зависимости от предпочтительной настройки языка).
Как я могу использовать этот фильтр сейчас в Javascript, скажем, в контроллере?
Мой текущий подход не работает:
angular.module('app')
.controller('ExampleController', [ '$scope', '$translate'], function($scope, $translate){
$scope.obj = {
translatedString = $translate('HELLO')
};
});
поскольку он показывает [object Object] вместо перевода для "HELLO".
$ translate является асинхронным и возвращает обещание вместо переведенной строки, поэтому его можно использовать следующим образом:
$translate('HEADLINE_TEXT').then(function (translation) {
$scope.translatedText = translation;
});
Дополнительная информация https://angular-translate.github.io/docs/#/api/pascalprecht.translate.$translate