JSF – Usando arquivos de propriedades(Resource Bundle) para internacionalização de aplicativos

Este artigo tem como objetivo mostrar o uso de arquivos .properties...

JSF – Usando arquivos de propriedades(Resource Bundle) para internacionalização de aplicativos

 

Este artigo tem como objetivo mostrar o uso de arquivos .properties (os Resources Bundles), eles servem pra inúmeras coisas, mas nesse artigo iremos dar um enfoque maior em seu uso para internacionalização de aplicações em JSF.

 

index.jsp

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

   "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>JSF - Usando Properties Files</title>

</head>

<body>

<h1>JSF - Usando Properties Files</h1>

<br/>

<li><a href="./simples.jsf">Exemplo Mensagens Simples</a></li>

<li><a href="./parametros.jsf">Exemplo Mensagens Parametrizadas</a></li>

<li><a href="./parametros.jsf">Internacionalização</a></li>

</body>

</html>

 

simples.jsp

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>

<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Mensagens Simples</title>

</head>

<body>

<f:view>

<h1>JSF - Usando Properties Files</h1>

<f:loadBundle basename="recursos.mensagens" var="msgs"/>

<h2><h:outputText value="#{msgs.title}"/></h2>

<BR>

<h:outputText value="#{msgs.text}"/>

<P>

  <h:form>

<table border="0" cellspacing="2" cellpadding="2">

<tbody>

<tr>

<td> <h:outputText value="#{msgs.firstNamePrompt}"/>:</td>

<td><h:inputText /></td>

</tr>

<tr>

<td><h:outputText value="#{msgs.lastNamePrompt}"/>:</td>

<td> <h:inputText /></td>

</tr>

<tr>

<td><h:outputText value="#{msgs.emailAddressPrompt}"/>:</td>

<td><h:inputText /></td>

</tr>

<tr>

<td><h:commandButton

value="#{msgs.buttonLabel}"/></td>

<td></td>

</tr>

</tbody>

</table>

</h:form>

</f:view>

</body>

</html>

 

Altere o contéudo do arquivo web.xml acrescentando as seguintes linhas:

 

<servlet>

<servlet-name>Faces Servlet</servlet-name>

<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>Faces Servlet</servlet-name>

<url-pattern>*.jsf</url-pattern>

 </servlet-mapping>

<welcome-file-list>

<welcome-file>

index.jsp

</welcome-file>

</welcome-file-list>

 

Agora vamos criar um pacote chamado recursos e dentro do pacote recursos vamos criar um arquivo com extensão .properties, vamos chama-lo de mensagens.properties.

 

E nele adicionaremos o seguinte conteúdo:

 

title=Inscrição para Workshop

text=Por favor insira o seu nome e sobrenome e email.

firstNamePrompt=Nome

lastNamePrompt=Sobrenome

emailAddressPrompt=Email

buttonLabel=Inscrever

 

Ao Executarmos o nosso aplicativo nós nos depararemos com a tela mostrada na figura1, que é nossa pagina índice:

 

 

Figura1

 

Clique no link Exemplo Mensagens Simples.

 

E você será levado para o conteúdo da figura2:

 

 

Figura2

 

Como pode ver o nosso formulário foi composto com os campos existentes no arquivo mensagens.properties.

 

Pode parecer meio inútil mas vamos prosseguir e você começara a ver utilidades pro exemplo a seguir.

 

Crie o arquivo parametros.jsp e insira o segundo contéudo:

 

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>

<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Mensagens Parametrizadas</title>

</head>

<body>

<div align="center">

<f:view locale="#{facesContext.externalContext.request.locale}">

<f:loadBundle basename="recursos.mensagens2" var="msgs"/>

<h1><h:outputText value="#{msgs.title}"/></h1>

<h:outputFormat value="#{msgs.text}">

<f:param value="#{msgs.firstName}"/>

<f:param value="#{msgs.lastName}"/>

<f:param value="#{msgs.emailAddress}"/>

</h:outputFormat>

</div>

<P>

<h:form>

<table border="0" cellspacing="2" cellpadding="2" align="center">

<tbody>

<tr>

<td> <h:outputFormat value="#{msgs.prompt}">

<f:param value="#{msgs.firstName}"/>

</h:outputFormat>:</td>

<td><h:inputText /></td>

</tr>

<tr>

<td><h:outputFormat value="#{msgs.prompt}">

<f:param value="#{msgs.lastName}"/>

</h:outputFormat>:</td>

<td><h:inputText /></td>

</tr>

<tr>

<td><h:outputFormat value="#{msgs.prompt}">

<f:param value="#{msgs.emailAddress}"/>

</h:outputFormat>:</td>

<td><h:inputText /></td>

</tr>

<tr>

<td><h:commandButton

value="#{msgs.buttonLabel}" />

</td>

<td></td>

</tr>

 </tbody>

</table>  

</h:form>

</f:view>

</body>

</html>

 

Agora vamos criar o arquivo mensagens2,properties também no pacote recursos.

 

O conteúdo dele é o mostrado a seguir:

 

title=WorkShop Registration

firstName=first name

lastName=last name

emailAddress=email address

text=Please enter your , , and .

prompt=Enter

buttonLabel=Register Me

 

Como pode ver no conteúdo de mensagens.properties usamos valores entre cochetes, para a formar uma frase e com isso evitar escrevermos nomes dos campos novamente num properties file, usamos isso na pratica  no arquivo parametros.jsp:

 

<h:outputFormat value="#{msgs.text}">

<f:param value="#{msgs.firstName}"/>

<f:param value="#{msgs.lastName}"/>

<f:param value="#{msgs.emailAddress}"/>

</h:outputFormat>

 

O resultado é mostrado a seguir:

 

 

Figura3

 

Agora vamos ver o  uso dos Properties Files para Internacionalização de aplicativos, graças a estes arquivos é possível fazer uma aplicação que atenda a varios usuários de nacionalidades diferentes sem necessáriamente ter que criar uma versão da aplicação para cada idioma.

 

Vamos criar arquivos para 4 idiomas :  Inglês, Português, Espanhol e Francês;

 

mensagens2_en.properties

# Sample ResourceBundle properties file

title=Registration

firstName=first name

lastName=last name

emailAddress=email address

text=Please enter your , , and .

prompt=Enter

buttonLabel=Register Me

 

mensagens2_pt.properties

# Sample ResourceBundle properties file

title=Cadastro

firstName=nome

lastName=Sobrenome

emailAddress=endereço de email

text=Informe por favor seu , , e .

prompt=Informe

buttonLabel=Enviar

 

mensagens2_es.properties

# Sample ResourceBundle properties file

title=Registro

firstName=primer nombre

lastName=apellido

emailAddress=dirección de email

text=Incorpore por favor su , , y .

prompt=Incorpore

buttonLabel=Coloqúeme

 

mensagens2_fr.properties

# Sample ResourceBundle properties file

title=Enregistrement

firstName=prénom

lastName=nom

emailAddress=adresse électronique

text=Merci de entrer votre , , et .

prompt=Entrez votre

buttonLabel=Enregistrez moi

 

A rodar a aplicação ela irá verificar qual a localidade do Browser usado pelo visitante e ira carregar a pagina de acordo com o idioma setado, caso não encontre ela usa o idioma padrão contido no arquivo mensagens2,properties.

 

Para isso é necessário modificar o idioma usado no navegador e reiniciar a pagina para ver a pagina sendo exibida em outro idioma.

 

No Firefox use Edit Preferences e configure conforme mostrados nas figuras  e  mostradas abaixo:

 

 

Figura4

 

Em Languages(Linguagem) clique em Choose(escolher).

 

 

Figura5

 

Para priorizar um idioma clique na seta move up(mover para cima) ou move down(mover para baixo).

 

Caso você use Netscape é bem parecido, no IE eu não me lembro e no Opera  é só ir em  Tools >>  Preferences >> General >> Languages e escolher o idioma desejado.

 

O resultado é mostrado:

 

 

Figura6

 

 

Figura7

 

 

Figura8

 

 

Figura9

 

Sobre este artigo:

IDE utilizada: Netbeans 5.5

Versão do Bd: não se aplica.

Navegadores Utilizados: Firefox 2.x, Opera 9.x

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados