Angular-Translate中缺少翻译的多条日志消息

时间:2017-01-14 09:43:12

标签: angularjs angular-translate

我在AngularJS应用程序上添加了Missing Translation Handler Log,在控制台上打印字符串的任何缺失翻译。但是,似乎所有消息都多次打印在控制台上。

这是日志:

Translation for deleteMyAccount doesn't exist angular.min.js:118
Translation for deleteMyAccount doesn't exist angular.min.js:118
Translation for deleteMyAccount doesn't exist angular.min.js:118
Translation for deleteMyAccount doesn't exist angular.min.js:118
Translation for deleteMyAccount doesn't exist angular.min.js:118
Translation for deleteMyAccount doesn't exist angular.min.js:118
Translation for deleteMyAccount doesn't exist angular.min.js:118
Translation for deleteMyAccount doesn't exist angular.min.js:118
Translation for deleteMyAccount doesn't exist angular.min.js:118

这是app.module.js文件中的AngularJS代码:

  translateConfig.$inject = ['$translateProvider', '$translatePartialLoaderProvider'];
    function translateConfig($translateProvider, $translatePartialLoaderProvider) {

        $translatePartialLoaderProvider.addPart('header');
        $translatePartialLoaderProvider.addPart('index');

        $translateProvider
            .useLoader('$translatePartialLoader', {
                urlTemplate: 'i18n/{lang}/{part}.json'
            })
        .useSanitizeValueStrategy('escape')
        .preferredLanguage('en')
        .useMissingTranslationHandlerLog();
    };

如何挖掘更多并找到问题的根源?

AngularJS 1.5.8

Angular-Translate 2.13.1

2 个答案:

答案 0 :(得分:0)

似乎告诉你翻译文件'i18n / en / deleteMyAccount.json'有404,所以请确保它存在。

至于重复错误,我注意到一旦找不到路径的部分文件,它会尝试在每次连续路由更改时再次加载它,导致这些404日志中的多个。

答案 1 :(得分:0)

根据reddit comment改编的答案。

您没有分享足够的代码。你如何使用它?如果您使用翻译过滤器并且不使用一次性绑定,它将尝试在每个摘要上翻译您的字符串,从而垃圾邮件您的控制台。它实际上揭示了可能的性能问题。

您使用translate="deleteMyAccount"属性指令还是{{ 'deleteMyAccount' | translate }}过滤器?在后一种情况下,Angular会在每次应用程序中发生任何更改时尝试转换字符串,从而导致错误消息多次出现。要解决此问题,您可以通过在起始括号后添加::将其转换为一次性绑定,如下所示:{{:: 'deleteMyAccount' | translate }}。我认为如果你不希望你的价值动态变化,总是使用一次性绑定是个好主意。