如果你的 AngularJS 应用程序在升级到版本 1.6.5 后出现了翻译问题,这里有一个可能的解决方法。
问题描述:
AngularJS 1.6.5版本引入了更改,可能会导致在使用 ng-translate 库时翻译出现问题,特别是对于需要切换语言的应用程序。这可能会导致翻译在模板中没有正确地显示。
解决方案:
在你的应用程序中需要添加语言切换的代码:
app.config(function ($translateProvider) {
$translateProvider.useStaticFilesLoader({
prefix: 'locale-', // path to translations files
suffix: '.json' // suffix, currently- extension of the translations
});
$translateProvider.preferredLanguage('en_US'); // is applied on first load
$translateProvider.useLocalStorage(); // saves selected language to localStorage
});
然后,你需要添加这样一个方法:
// directive for translate
app.directive('translate', ['$compile', '$translate', function ($compile, $translate) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var translationID = attrs.translate;
// for 2 way binding
attrs.$observe('translate', function (translationID) {
element.html($translate.instant(translationID));
});
scope.$on('languageChanged', function () {
element.html($translate.instant(translationID));
});
}
}
}]);
这样你就可以在模板中使用 ng-translate,如下所示:
在切换语言时,这将确保翻译在模板中正确显示。