Angular-Translate 中缺少翻译的多条日志消息
Multiple log messages for missing translations in Angular-Translate
我在我的 AngularJS 应用程序中添加了缺失翻译处理程序日志,以在控制台上打印任何缺失的字符串翻译。但是,似乎所有消息都多次打印在控制台上。
这是日志:
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-翻译 2.13.1
它似乎告诉你翻译文件 'i18n/en/deleteMyAccount.json' 有一个 404,所以请确保它存在。
至于重复错误,我注意到的是,一旦找不到某个路由的部分文件,它将在每次连续的路由更改时尝试重新加载它,从而导致这些 404 日志中的多个。
答案改编自我的 reddit comment。
您没有分享足够的代码。你如何使用它?如果您使用翻译过滤器而不使用 one-time 绑定,它将尝试在每个摘要中翻译您的字符串,从而向您的控制台发送垃圾邮件。它实际上揭示了一个可能的性能问题。
您使用 translate="deleteMyAccount"
属性指令还是 {{ 'deleteMyAccount' | translate }}
过滤器?在后一种情况下,Angular 会在您的应用程序每次发生任何更改导致错误消息多次出现时尝试翻译字符串。要解决此问题,您可以通过在起始括号后添加 ::
将其变成 one-time 绑定,如下所示:{{:: 'deleteMyAccount' | translate }}
。如果您不希望您的值动态变化,我认为始终使用 one-time 绑定是个好主意。
我在我的 AngularJS 应用程序中添加了缺失翻译处理程序日志,以在控制台上打印任何缺失的字符串翻译。但是,似乎所有消息都多次打印在控制台上。
这是日志:
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-翻译 2.13.1
它似乎告诉你翻译文件 'i18n/en/deleteMyAccount.json' 有一个 404,所以请确保它存在。
至于重复错误,我注意到的是,一旦找不到某个路由的部分文件,它将在每次连续的路由更改时尝试重新加载它,从而导致这些 404 日志中的多个。
答案改编自我的 reddit comment。
您没有分享足够的代码。你如何使用它?如果您使用翻译过滤器而不使用 one-time 绑定,它将尝试在每个摘要中翻译您的字符串,从而向您的控制台发送垃圾邮件。它实际上揭示了一个可能的性能问题。
您使用 translate="deleteMyAccount"
属性指令还是 {{ 'deleteMyAccount' | translate }}
过滤器?在后一种情况下,Angular 会在您的应用程序每次发生任何更改导致错误消息多次出现时尝试翻译字符串。要解决此问题,您可以通过在起始括号后添加 ::
将其变成 one-time 绑定,如下所示:{{:: 'deleteMyAccount' | translate }}
。如果您不希望您的值动态变化,我认为始终使用 one-time 绑定是个好主意。