Sto usando angular-translate per i18n in un'applicazione AngularJS.
Per ogni visualizzazione dell'applicazione, c'è un controller dedicato. Nei controller di seguito, ho impostato il valore da mostrare come titolo della pagina.
Codice
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';
}])
Sto caricando i file di traduzione utilizzando l' estensione angular-translate-loader-url .
Problema
Al caricamento della pagina iniziale, viene mostrata la chiave di traduzione invece della traduzione per quella chiave. La traduzione è Hello, World!
, ma sto vedendo HELLO_WORLD
.
La seconda volta che vado sulla pagina, va tutto bene e viene mostrata la versione tradotta.
Presumo che il problema abbia a che fare con il fatto che forse il file di traduzione non è ancora caricato quando il controller sta assegnando il valore a $scope.pageTitle
.
osservazione
Quando si utilizza <h1>{{ pageTitle | translate }}</h1>
e $scope.pageTitle = 'HELLO_WORLD';
, la traduzione funziona perfettamente dalla prima volta. Il problema con questo è che non voglio sempre usare le traduzioni (es. Per il secondo controller voglio solo passare una stringa grezza).
Domanda
Si tratta di un problema / limitazione noto? Come risolverlo?