ここでの中心的な問題は、$cookies を構成ブロックに挿入できないことです。Angular Translateでの静的ファイルの読み込みの構成は、構成ブロックでのみ実行できるようです。静的翻訳ファイルのクエリ パラメータとして使用して、リリース間でキャッシュ バスティングの形式を持たせたいアプリ バージョンを含む Cookie があります。
コードは次のとおりです。
(function( ) {
'use strict';
angular.module( 'vcp.core' ).
config( configureTranslationResources );
function configureTranslationResources( $translateProvider ) {
var $cookies;
angular.injector(['ngCookies']).invoke(['$cookies', function(_$cookies_) {
$cookies = _$cookies_;
}]);
var vcpVersion = $cookies ? $cookies.get('vcp-version') : '';
$translateProvider.useStaticFilesLoader({
prefix: '/v2/assets/i18n/',
suffix: '.json?v=' + vcpVersion
});
}
})( );
これは奇妙に感じ、より良い方法があるはずです。実行ブロックで静的ファイルの読み込みを構成する方法を Angular Translate docs から直感的に理解することはできません (このアプローチよりもはるかに優れているとは言えません)。また、構成内の Cookie を取得する方法もないようです。 $cookiesProvider を介してブロックします。
おそらく、このアプローチはまったく悪い考えであり、問題を解決するためのより良い方法がありますか?