1

サーバーから翻訳を取得する独自のカスタム ローダーを使用して、angular translateを使用して Web サイトのローカリゼーションを処理しています。サーバー側には、不足している翻訳キーを処理するロジックがあり、何か (フォールバック言語からの翻訳またはキー自体) を返し、キーが要求されたことをシステムに報告します (したがって、翻訳 UI に表示されます)。サイトの他の場所)。現在、クライアント側で同様のものを構築するのに苦労しています。

には、以下を使用して、コンソールにキーがないことをログアウトするように正常に構成され$translateProviderたメソッドがあります。useMissingTranslationHandler(factory)

app.config(function ($translateProvider) {
    $translateProvider.useMissingTranslationHandler('translationMissingHandler');
});

app.factory('translationMissingHandler', translationMissingHandler);

translationMissingHandler.$inject = ['$window', '$log', '$http'];
function translationMissingHandler($window, $log, $http) {
    return function (translationId) {
        var culture = $window.preferredCulture, // workaround for another problem
            errorInfo = {
                key: translationId,
                culture: culture
            };
        $log.warning('Translation missing:', errorInfo);
        // $http.post('/api/v2/localization/missing', errorInfo);
    }
}

ただし、サーバーへのコメントを外し、キーが見つからないことを通知すると、ページは-POSTの 14394 行目でハングします。ここで、angular.jsthrow ee.message

[$rootScope:infdig] 10 回の $digest() 反復に達しました。中止します!最後の 5 回の繰り返しで発生したウォッチャー: []

これを回避するためにさまざまなことを試しました。たとえば、への呼び出しをラップする$http.post()$timeout$rootScope.$apply無駄にします。それでも同じエラー メッセージが表示されます。

$http.post()このエラーを発生させずにここからの通話をスケジュールする方法はありますか? もしそうなら、どのように?

4

0 に答える 0