Internacionalização

Configuração

O tapestry possui suporte a internacionalização, isso permite separar o texto que aparece para o usuário, do resto da aplicação. Ele usa a "preferência de idioma" definida no browser do usuário. A internacionalização se aplica aos catálogos de mensagens, templates, e assets (imagens, css, recursos).

src/main/java/org.exemplo.t5teste.services. AppModule.java


configuration.add(SymbolConstants.SUPPORTED_LOCALES, "pt_BR,en");

O Tapestry usa UTF-8 Encoding como padrão.

Templates

O template Internacional.tml pode ter sua versão em inglês gravada no arquivo Internacional_en.tml, o tapestry vai mostrar a página em inglês quando o browser do usuário estiver configurado com a preferência desse idioma.

Criar uma página de teste com dois templates (default e inglês).

src/main/java/org.exemplo.t5teste.pages. Internacional.java

package org.exemplo.t5teste.pages;

public class Internacional
{
// A classe java é necessária para paginas e componentes, mesmo quando não tiver código.
}

src/main/webapp/ Internacional.tml

<html t:type="layout" title="Internacional"
t:sidebarTitle="Current Time" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
xmlns:p="tapestry:parameter">

<h1>Alo Mundo</h1>

</html>

src/main/webapp/ Internacional_en.tml

<html t:type="layout" title="Internacional"
t:sidebarTitle="Current Time" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
xmlns:p="tapestry:parameter">

<h1>Hello World</h1>

</html>

Reinicie e teste a aplicação, acessando a página antes e depois de mudar a preferência de idioma do navegador.

http://localhost:8080/t5teste/internacional

Internacional
Internacional_En

Catálogo de Mensagens

É um ou mais arquivos em texto puro no formato key=value (java.util.ResourceBundle), e com extensão “.properties”. Vamos criar as mensagens no(s) catálogo(s) e usar apenas uma expansão do tipo ${ message:key} diretamente dentro do template, onde a chave titulo tem o seu valor definido no arquivo de catálogo do respectivo idioma.

O arquivo src/main/webapp/WEB-INF/app.properties pode ser usado como um catálogo de mensagens global da aplicação. O catálogo de mensagens do componente estende e sobrescreve o catálogo da sua possível superclasse, e também sobrescreve o da aplicação.

Acessando uma mensagem (declarada no catálogo) a partir da classe Java usando o objeto Messages.


@Inject
private Messages _messages;

String titulo = _messages.get("titulo");

Também podemos "expandir" a mensagem diretamente no template sem precisar de nenhum código na classe Java.


${message:titulo}

Mais informações

Consulte o tópico Localization no site do tapestry. Veja também a página de referência dos componentes.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License