Я використовую angular-translate для i18n у програмі AngularJS.
Для кожного перегляду програми існує спеціальний контролер. У контролерах нижче я встановлюю значення, яке відображатиметься як заголовок сторінки.
Код
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
.
Вдруге заходжу на сторінку, все добре і показується перекладена версія.
Я припускаю, що проблема пов'язана з тим, що, можливо, файл перекладу ще не завантажений, коли контролер призначає значення $scope.pageTitle
.
Зауваження
При використанні <h1>{{ pageTitle | translate }}</h1>
і $scope.pageTitle = 'HELLO_WORLD';
переклад ідеально працює з першого разу. Проблема в цьому полягає в тому, що я не завжди хочу використовувати переклади (наприклад, для другого контролера я просто хочу передати необроблений рядок).
Питання
Це відоме питання / обмеження? Як це можна вирішити?