Para internacionalização (tradução e localização) é recomendado a adição de um AngularJS Filter registrado com o nome de i18n. Este filter deverá ser uma função que irá receber uma literal ou uma chave para tradução. Após a definição do mecanismo de internacionalização sua utilização se resume a:
{{ 'label-to-translate' | i18n }} |
Quando necessário utilizar o filtro programaticamente, é recomendado que este seja linkado ao $rootScope do AngularJS para que seja acessível de qualquer ponto do aplicativo. Utilizando a implementação da aplicação de referencia, basta no index.js ao fazer o bootstrap da aplicação, após já ter realizado o registro do filtro de internacionalização, adicionar a referencia ao $rootScopt conforme exemplo:
app.run(['$rootScope', '$filter', function ($rootScope, $filter) {
// Adiciona o filtro de i18n, caso exista, ao $rootScope para facilitar o acesso
// ao mesmo programaticamente.
if ($filter('i18n')) {
$rootScope.i18n = $filter('i18n');
}
}]); |
Tendo adicionado o link do filtro ao $rootScope atraves do alias 'i18n', basta injetar o $rootScope ao AngularJS Controller ou AngularJS Service e acessar a função da seguinte maneira:
sampleService.$inject = ['$rootScope'];
function sampleService($rootScope) {
this.label = $rootScope.i18n('label-to-translate');
} |
Cada produto é livre para definir a forma como irá gerenciar suas traduções. No entanto, o TOTVS | HTML Framework confia que o AngularJS Filter seja registrado com o alias de i18n e que receba como parâmetro a palavra ou código a ser traduzido.