当我改变语言时,angular translate不会在控制器中刷新翻译

时间:2016-09-23 09:53:21

标签: javascript angularjs angular-translate

我在控制器中更改语言时遇到问题。当我选择其他语言时,模板中的值会更改正确的翻译,但控制器中的翻译仍然相同 我该如何解决这个问题?

我使用useStaticFilesLoader

.config(function($translateProvider) {
  $translateProvider.useStaticFilesLoader({
    prefix: 'lang/',
    suffix: '.json'
  });

$translate(['safemode_title','safemode_message','server_error']).then(function (translations) {
  $scope.safemode_title = translations.safemode_title;
  $scope.safemode_message = translations.safemode_message;
  $scope.serverError = translations.server_error;
});

2 个答案:

答案 0 :(得分:1)

尝试收听$translateChangeStart事件,这样您就可以了解用户何时更改语言。

因此,请将您的代码更改为:

$rootScope.$on('$translateChangeStart', function (event, a) {
       $translate(['safemode_title','safemode_message','server_error']).then(function (translations) {
            $scope.safemode_title = translations.safemode_title;
            $scope.safemode_message = translations.safemode_message;
            $scope.serverError = translations.server_error;
      });
});

对于ng-translate(以及过滤器)你不需要这个监听器,因为它会自动为你做。

很明显,请记住注入$rootScope依赖。

答案 1 :(得分:0)

它工作得足够好,因为当点击其他语言时,默认语言不会改变。但是当我回到默认语言时,翻译会更改为默认值。