我在控制器中更改语言时遇到问题。当我选择其他语言时,模板中的值会更改正确的翻译,但控制器中的翻译仍然相同 我该如何解决这个问题?
我使用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;
});
答案 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)
它工作得足够好,因为当点击其他语言时,默认语言不会改变。但是当我回到默认语言时,翻译会更改为默认值。