Как использовать угловой трансляционный фильтр внутри контроллера?

0

Я создал 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".

Теги:

1 ответ

0
Лучший ответ

$ translate является асинхронным и возвращает обещание вместо переведенной строки, поэтому его можно использовать следующим образом:

$translate('HEADLINE_TEXT').then(function (translation) {
  $scope.translatedText = translation;
});

Дополнительная информация https://angular-translate.github.io/docs/#/api/pascalprecht.translate.$translate

  • 0
    работает. Благодарю. Я также достиг цели, используя translationString = $ translate.instant ('HELLO');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню