AngularJSアプリケーションでi18nのangular-translateを使用しています。
すべてのアプリケーションビューに対して、専用のコントローラーがあります。以下のコントローラーでは、ページタイトルとして表示される値を設定します。
コード
HTML
<h1>{{ pageTitle }}</h1>
JavaScript
.controller('FirstPageCtrl', ['$scope', '$filter', function ($scope, $filter) {
$scope.pageTitle = $filter('translate')('HELLO_WORLD');
}])
.controller('SecondPageCtrl', ['$scope', '$filter', function ($scope, $filter) {
$scope.pageTitle = 'Second page title';
}])
angular-translate-loader-url拡張機能を使用して翻訳ファイルをロードしています。
問題
最初のページの読み込み時に、そのキーの翻訳の代わりに翻訳キーが表示されます。翻訳はHello, World!
ですが見HELLO_WORLD
ます。
2回目にこのページにアクセスすると、問題はなく、翻訳されたバージョンが表示されます。
この問題は、コントローラーがに値を割り当てているときに変換ファイルがまだ読み込まれていない可能性があるという事実に関係していると思います$scope.pageTitle
。
リマーク
<h1>{{ pageTitle | translate }}</h1>
およびを使用すると$scope.pageTitle = 'HELLO_WORLD';
、翻訳は最初から完璧に機能します。この問題は、常に翻訳を使用する必要がないことです(たとえば、2番目のコントローラーの場合、生の文字列を渡したいだけです)。
質問
これは既知の問題/制限ですか?これをどのように解決できますか?