Estou usando angular-translate para i18n em um aplicativo AngularJS.
Para todas as visualizações de aplicativos, há um controlador dedicado. Nos controladores abaixo, defino o valor a ser mostrado como o título da página.
Código
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';
}])
Estou carregando os arquivos de tradução usando a extensão angular-translate-loader-url .
Problema
No carregamento inicial da página, a chave de conversão é mostrada em vez da tradução dessa chave. A tradução é Hello, World!
, mas estou vendo HELLO_WORLD
.
Na segunda vez que vou à página, tudo está bem e a versão traduzida é mostrada.
Suponho que o problema esteja relacionado ao fato de que talvez o arquivo de tradução ainda não esteja carregado quando o controlador estiver atribuindo o valor $scope.pageTitle
.
Observação
Ao usar <h1>{{ pageTitle | translate }}</h1>
e$scope.pageTitle = 'HELLO_WORLD';
, a tradução funciona perfeitamente desde a primeira vez. O problema disso é que nem sempre quero usar traduções (por exemplo, para o segundo controlador, só quero passar uma string bruta).
Questão
Esse é um problema / limitação conhecido? como isso pode ser resolvido?