Angular Translate firefox和safari行为

时间:2015-10-09 08:40:52

标签: javascript angularjs firefox safari angular-translate

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的请求被取消。 enter image description here

1 个答案:

答案 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)

}]);

现在请求不再被取消。