Używam translacji kątowej dla i18n w aplikacji AngularJS.
Dla każdego widoku aplikacji jest dedykowany kontroler. W kontrolerach poniżej ustawiłem wartość, która ma być wyświetlana jako tytuł strony.
Kod
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';
}])
Ładuję pliki tłumaczeń za pomocą rozszerzenia angular-translate-loader-url .
Problem
Przy początkowym ładowaniu strony klucz tłumaczenia jest wyświetlany zamiast tłumaczenia tego klucza. Tłumaczenie jest Hello, World!
, ale widzę HELLO_WORLD
.
Za drugim razem, gdy wchodzę na stronę, wszystko jest w porządku i wyświetla się przetłumaczona wersja.
Zakładam, że problem polega na tym, że być może plik tłumaczenia nie jest jeszcze ładowany, gdy kontroler przypisuje wartość $scope.pageTitle
.
Uwaga
Podczas korzystania z <h1>{{ pageTitle | translate }}</h1>
i $scope.pageTitle = 'HELLO_WORLD';
tłumaczenie działa idealnie od pierwszego razu. Problem polega na tym, że nie zawsze chcę używać tłumaczeń (np. Dla drugiego kontrolera chcę tylko przekazać nieprzetworzony ciąg znaków).
Pytanie
Czy to znany problem / ograniczenie? Jak można to rozwiązać?