'$translate.uses(key)' undefined не является функцией в AngularJS

Я пытаюсь реализовать угловой перевод в своем приложении. Итак, я нашел следующий JSFiddle, который должен демонстрировать угловой перевод, но я получаю следующее сообщение об ошибке:

'undefined' не является функцией (оценка '$translate.uses(key)')

var myApp = angular.module('myApp', ['pascalprecht.translate']);

myApp.config(function($translateProvider) {
  $translateProvider.preferredLanguage('fr');
  $translateProvider.translations('en', {
    MONDAY: 'Monday',
    TUESDAY: 'Tuesday',
    WEDNESDAY: 'Wednesday',
    THURSDAY: 'Thursday',
    FRIDAY: 'Friday',
    SATURDAY: 'Saturday',
    SUNDAY: 'Sunday'
  });
  $translateProvider.translations('fr', {
    MONDAY: 'Lundi',
    TUESDAY: 'Mardi',
    WEDNESDAY: 'Mercredi',
    THURSDAY: 'Jeudi',
    FRIDAY: 'Vendredi',
    SATURDAY: 'Samedi',
    SUNDAY: 'Dimanche'
  });
});

myApp.constant('weekDays', [{
  id: 1,
  key: 'MONDAY'
}, {
  id: 2,
  key: 'TUESDAY'
}, {
  id: 3,
  key: 'WEDNESDAY'
}, {
  id: 4,
  key: 'THURSDAY'
}, {
  id: 5,
  key: 'FRIDAY'
}, {
  id: 6,
  key: 'SATURDAY'
}, {
  id: 7,
  key: 'SUNDAY'
}]);

myApp.controller('MyCtrl', ['$scope', '$translate', 'weekDays',
  function($scope, $translate, weekDays) {

    $scope.changeLanguage = function(key) {
      $translate.uses(key)
    }
    $scope.days = weekDays;
    $scope.name = 'user';
    console.log($scope.days);
  }
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>
<script src="http://rawgithub.com/PascalPrecht/bower-angular-translate/master/angular-translate.min.js"></script>

<body ng-app="myApp">
  <div ng-controller="MyCtrl">
    Hello, {{name}}!
    <div>
      <button ng-click="changeLanguage('fr')">fr</button>
      <button ng-click="changeLanguage('en')">en</button>
    </div>

    <ul>
      <li ng-repeat="day in days">
        {{ day.key | translate }}
      </li>
    </ul>

  </div>
</body>

Любая идея, почему это происходит?


person Abdullah Ramus    schedule 10.08.2015    source источник


Ответы (2)


$translate.uses(key) устарел, используйте вместо него $translate.use(key).

Узнайте больше о многоязычном angular-translate и уведомление об обновлении 2.0.0 (критические изменения).

var myApp = angular.module('myApp', ['pascalprecht.translate']);

myApp.config(function($translateProvider) {
  $translateProvider.preferredLanguage('fr');
  $translateProvider.translations('en', {
    MONDAY: 'Monday',
    TUESDAY: 'Tuesday',
    WEDNESDAY: 'Wednesday',
    THURSDAY: 'Thursday',
    FRIDAY: 'Friday',
    SATURDAY: 'Saturday',
    SUNDAY: 'Sunday'
  });
  $translateProvider.translations('fr', {
    MONDAY: 'Lundi',
    TUESDAY: 'Mardi',
    WEDNESDAY: 'Mercredi',
    THURSDAY: 'Jeudi',
    FRIDAY: 'Vendredi',
    SATURDAY: 'Samedi',
    SUNDAY: 'Dimanche'
  });
});

myApp.constant('weekDays', [{
  id: 1,
  key: 'MONDAY'
}, {
  id: 2,
  key: 'TUESDAY'
}, {
  id: 3,
  key: 'WEDNESDAY'
}, {
  id: 4,
  key: 'THURSDAY'
}, {
  id: 5,
  key: 'FRIDAY'
}, {
  id: 6,
  key: 'SATURDAY'
}, {
  id: 7,
  key: 'SUNDAY'
}]);

myApp.controller('MyCtrl', ['$scope', '$translate', 'weekDays',
  function($scope, $translate, weekDays) {

    $scope.changeLanguage = function(key) {
      $translate.use(key)
    }
    $scope.days = weekDays;
    $scope.name = 'user';
    console.log($scope.days);
  }
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>
<script src="http://rawgithub.com/PascalPrecht/bower-angular-translate/master/angular-translate.min.js"></script>

<body ng-app="myApp">
  <div ng-controller="MyCtrl">
    Hello, {{name}}!
    <div>
      <button ng-click="changeLanguage('fr')">fr</button>
      <button ng-click="changeLanguage('en')">en</button>
    </div>

    <ul>
      <li ng-repeat="day in days">
        {{ day.key | translate }}
      </li>
    </ul>

  </div>
</body>

person Matthias A. Eckhart    schedule 10.08.2015

Я думаю, вы имеете в виду $translate.use(key) вместо $translate.uses(key).

person nascosto    schedule 10.08.2015