J'utilise angular-translate pour i18n dans une application AngularJS.
Pour chaque vue d'application, il existe un contrôleur dédié. Dans les contrôleurs ci-dessous, j'ai défini la valeur à afficher comme titre de page.
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';
}])
Je charge les fichiers de traduction à l'aide de l' extension angular-translate-loader-url .
Problème
Lors du chargement initial de la page, la clé de traduction est affichée à la place de la traduction de cette clé. La traduction est Hello, World!
, mais je vois HELLO_WORLD
.
La deuxième fois que je vais sur la page, tout va bien et la version traduite est affichée.
Je suppose que le problème est lié au fait que le fichier de traduction n'est peut-être pas encore chargé lorsque le contrôleur attribue la valeur à $scope.pageTitle
.
Remarque
Lors de l'utilisation <h1>{{ pageTitle | translate }}</h1>
et$scope.pageTitle = 'HELLO_WORLD';
, la traduction fonctionne parfaitement dès la première fois. Le problème avec ceci est que je ne veux pas toujours utiliser des traductions (par exemple, pour le deuxième contrôleur, je veux juste passer une chaîne brute).
Question
S'agit-il d'un problème / limitation connu? Comment cela peut-il être résolu?