Cursos / Informática para Internet / Desenvolvimento Web I / Aula

arrow_back Aula 08 - JSTL – Internacionalização, Taglib functions e expression language

A taglib I18N II

Continuando com as tags de internacionalização, uma vez que já sabemos como indicar qual a localidade (ou preferência) do usuário (ex: pt_BR), vamos agora ver as tags de mensagem. A tag fmt:bundle define o contexto de localização, baseado em um arquivo de propriedades (resource bundle) que será usado apenas dentro do corpo da tag. Um arquivo de propriedades é um arquivo de texto com a extensão “.properties”. Esse arquivo contém dados específicos de uma localidade (idioma/região). Os arquivos de propriedade são os mecanismos para termos um sistema multilíngue, em que cada idioma/região suportada está associada a um arquivo de propriedades como as mensagens do sistema naquela linguagem. Dessa maneira, cada linha de um arquivo de propriedades contém uma palavra-chave e um valor, por exemplo:

MSG_ERRO_SISTEMA=Ocorreu um erro inesperado no sistema!

Já adiantando, a ideia é que o código do sistema trabalhe com a chave MSG_ERRO_SISTEMA e que as tags de internacionalização troquem a chave pelo texto correspondente.

A tag fmt:setBundle também pode ser utilizada para identificar um arquivo de propriedades, associando-o a um determinado escopo. Se deseja usar, por exemplo, um arquivo de propriedades para a toda a sua aplicação, você pode usar a tag fmt:setBundle, como mostrado na Listagem 2. Porém, se em determinada página quisermos outro arquivo de propriedades, podemos usar a tag fmt:bundle e aninhar dentro dela o conteúdo que desejamos usar em outro arquivo, como mostra a Listagem 3.

Listagem 2 - Código JSP que define o resource bundle para ser usado pela aplicação. Listagem 3 - Código JSP que define um resource bundle específico para ser usado dentro do corpo da tag.

Aqui, é importante algumas explicações. Na linha 01 da Listagem 2, a tag basename define qual o arquivo de propriedades da aplicação, ou seja, qual o nome do arquivo .properties que será usado. No caso, é o de nome messages. Na linha 01 da Listagem 3, estamos dizendo que usaremos um outro arquivo chamado messages2 como arquivo de propriedades. Na linha 02, estamos dizendo que existe uma propriedade neste arquivo cujo nome (ou chave) é message.helloWorld e que o seu valor será usado dentro do corpo da tag fmt:bundle. Para ficar mais claro, vamos a um exemplo.

Para exemplificar, foi criado um projeto chamado “aula08”, um pacote dentro dele também chamado “aula08” e dentro desse pacote foi adicionado um servlet que, por enquanto, só redireciona a requisição para o nosso JSP, como mostrado a seguir.

Exemplo de Servlet que redireciona requisições.

O nosso JSP define o arquivo de propriedades como messages e solicita que o valor associado à chave message.helloWorld seja exibido.

Exemplo de código JSP que utiliza um arquivo de propriedades.

O nosso arquivo de propriedades messages (mostrado a seguir) possui uma chave que é message.helloWorld cujo valor é Alô Mundo!!!. Note, no JSP acima, que essa é a mesma chave que nós estamos usando na tag fmt:message (falaremos sobre essa tag mais a frente). Note que a versão em português do arquivo tem nome “messages_pt_BR.properties”, ou seja, o arquivo procurado pelo sistema será sempre o nome indicado (ex: messages) concatenado com “_”, a localidade (ex: pt_BR) e a extensão “.properties”. O arquivo messages_pt_BR.properties pode ser adicionado dentro de um pacote, por exemplo o pacote aula08 criado nesse projeto. Isso é importante pois o JSP faz referência ao arquivo de propriedades utilizando o nome do pacote que ele se encontra (basename=”aula08.messages”). Para criar um arquivo dentro de um pacote basta clicar com o botão direito do mouse sobre o pacote (aula08, por exemplo), escolher a opção New->Other… e depois escolher a opção “File”, adicionando o nome desejado ao arquivo na sequência.

Estrutura do projeto e localização do arquivo messages_pt_BR.properties (a esquerda) e o seu conteúdo (a direita).

Versão 5.3 - Todos os Direitos reservados