Chrome中的一切正常,只有在Safari和Firefox中才能更改语言。
angular.module('angularApp')
.config(['$translateProvider', function ($translateProvider) {
$translateProvider.usePostCompiling(true)
.useStaticFilesLoader({
prefix: 'i18n/locale-',
suffix: '.json'
})
.registerAvailableLanguageKeys(['de','en'],{
'de_DE': 'de',
'en-*': 'en'
})
.preferredLanguage('de')
.determinePreferredLanguage()
.fallbackLanguage('de');
}]);
在我的控制器中,我使用以下内容更改语言,如前面提到的在Chrome中可以使用,但在Safari和Firefox中则不行。没有错误,控制台中没有任何内容......
.controller('NavbarCtrl', function ($scope, $translate) {
$scope.changeLanguage = function (langKey) {
$translate.use(langKey).catch(function (err) {
$translate.use($translate.fallbackLanguage());
});
};
});
/////编辑 当我将语言切换为英语时,我在Chrome中遇到同样的错误。由于某种原因,加载locale-de.json的请求被取消。
答案 0 :(得分:0)
好的,我发现为什么它表现得很奇怪。我重新安排了$ translateProvider设置的顺序,并更改了fallbackLanguage:
.config(['$translateProvider', function ($translateProvider) {
$translateProvider
.useStaticFilesLoader({
prefix: 'i18n/locale-',
suffix: '.json'
})
.registerAvailableLanguageKeys(['de','en'],{
'de_DE': 'de',
'en_*': 'en'
})
.determinePreferredLanguage()
.fallbackLanguage('de_DE')
.useSanitizeValueStrategy(null)
}]);
现在请求不再被取消。