Ich verwende Angular -Translate für i18n in einer AngularJS-Anwendung.
Für jede Anwendungsansicht gibt es einen dedizierten Controller. In den folgenden Controllern habe ich den Wert festgelegt, der als Seitentitel angezeigt werden soll.
Code
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';
}])
Ich lade die Übersetzungsdateien mit der Erweiterung angle-translate-loader-url .
Problem
Beim ersten Laden der Seite wird der Übersetzungsschlüssel anstelle der Übersetzung für diesen Schlüssel angezeigt. Die Übersetzung ist Hello, World!
, aber ich sehe HELLO_WORLD
.
Wenn ich zum zweiten Mal auf die Seite gehe, ist alles in Ordnung und die übersetzte Version wird angezeigt.
Ich gehe davon aus, dass das Problem damit zusammenhängt, dass die Übersetzungsdatei möglicherweise noch nicht geladen ist, wenn der Controller den Wert zuweist $scope.pageTitle
.
Anmerkung
Bei Verwendung von <h1>{{ pageTitle | translate }}</h1>
und $scope.pageTitle = 'HELLO_WORLD';
funktioniert die Übersetzung vom ersten Mal an perfekt. Das Problem dabei ist, dass ich nicht immer Übersetzungen verwenden möchte (z. B. für den zweiten Controller möchte ich nur eine rohe Zeichenfolge übergeben).
Frage
Ist dies ein bekanntes Problem / eine Einschränkung? Wie kann das gelöst werden?