Как использовать angular-gettext на этапе конфигурации?

Я использую angular-gettext, angular-breadcrumb и angular-ui -маршрутизатор.

У меня есть конфигурация моего приложения, подобная этой:

app.config(function($stateProvider) {

  $stateProvider.state('welcome', {
     url : '/',
     templateUrl: 'index.html',
     ncyBreadcrumb : {
        label : 'Home'
     }
  });

});

Я хотел бы иметь возможность перевести метку хлебной крошки ('Home') на angular-gettext. Для этого мне нужно включить инструменты gettext в функцию app.config(). Что-то вроде этого было бы идеально, однако gettextCatalog недоступен на этапе настройки:

app.config(function($stateProvider, gettextCatalog) {

  $stateProvider.state('welcome', {
     url : '/',
     templateUrl: 'index.html',
     ncyBreadcrumb : {
        label : gettextCatalog.getString('Home')
     }
  });

});

Есть ли другой способ добиться этого с помощью этих плагинов, особенно с angular-gettext?


person knuhol    schedule 15.04.2015    source источник


Ответы (1)


Согласно документам angular-breadcrumb:

Свойство ncyBreadcrumbLabel может содержать привязки, которые оцениваются по отношению к области действия текущего контроллера состояния.

Я не проверял это, но я думаю, что вы могли бы использовать модуль gettextCatalog в своем контроллере:

$stateProvider.state('home', {
  url: '/',
  templateUrl: 'index.html',
  controller: function($scope, gettextCatalog) {
    $scope.label = gettextCatalog.getString('Home');
  },
  ncyBreadcrumb: {
    label: '{{label}}'
  }
})
person Corey    schedule 15.04.2015
comment
Это, пожалуй, лучшее решение. Другой вариант — вот этот. Даже label: '{{label|translate}}' тоже работает, однако ни одно из этих двух выражений не обнаруживается при извлечении grunt-angular-gettext, поэтому они бесполезны. - person knuhol; 22.04.2015