• Nenhum resultado encontrado

12 Internacionalização do código

No documento Linguagem Java COMPLETA (páginas 157-159)

Em java a partir da versão 5.0 é possível fazer de forma adequada a internacionalização do código de uma aplicação desktop, com Swing utilizando recurso de formatação de Data e Números, principalmente monetário.

A internacionalização significa sua aplicação rodar em mais de um idioma, criando de forma parametrizada os dados de labels a serem mostrados em arquivos .properties.

A formatação baseia-se na Localização do idioma informada, seja pelo Sistema Operacional (SO) ou informado através de parametro pelo usuário. A classe java.util.Locale que é responsável por determinar o idioma a ser utilizado para internacionalização. Locale você define a região conforme exemplo:

Locale local = new Locale(“pt”, “BR”); //Brasil

O primeiro parâmetro define o idioma e o segundo o país, conforme ISO-

CODE, isso porque existe país que fala dois idiomas, possibilitando então ser

totalmente configurável.

Para recuperar a localização do SO, ou seja, da JVM deve ser feito conforme exemplo abaixo:

Locale local = Locale.getDefault();

12.1 Formatação

Existe a classe DateFormat e NumberFormat para trabalhar com formatação baseado no Locale informado, utilizadas para formatar datas e números respectivamente. Para criação de objeto dessas classes não se utiliza o operador new e sim o método estático de getInstance() conforme abaixo:

DateFormat dataFormatador = DateFormat.getInstance();

NumberFormat numeroFormatador = NumberFormat.getInstance();

Para o exemplo acima o Locale utilizado é o padrão, ou seja, da JVM. Para determinar um Locale específico você deve passar o Locale como parametro conforma abaixo:

Internacionalização significa você ter umna

aplicação com a possibilidade de mudar

o seu idioma baseado no SO ou através de

seleção do usuário, conhecido também

//atribuindo valor a variável referência Carro carro1 = new Carro();

carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização //criando novo alias

Carro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de Instância

Cada objeto criado deverá ter sua própria instância de variáveis (atributos) definidas pela classe. Os métodos definem o comportamento de um objeto. Isto é importante, pois denota que um método pertence a cada objeto da classe. Porém não devemos confundir isto com a implementação do método, que é compartilhada por todas as instâncias da classe.

2.3.1 Invocação de Métodos

Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operação apropriada que foi definida no objeto. Em Java, isto é feito pela

chamada de um método em um objeto usando o operador binário "." (ponto),

devendo especificar a mensagem completa: o objeto que é o recebedor da mensagem, o método a ser invocado e os argumentos para o método (se houver). O método invocado no recebedor pode também enviar informações de volta ao objeto chamador através de um valor de retorno. O método chamado deve ser um que esteja definido pelo objeto.

Os valores das variáveis em um objeto constituem

o seu estado. Dois objetos distintos têm

o mesmo estado se suas variáveis membro têm os

mesmos valores. Locale ptBR = new Locale("pt", "BR");

DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL, ptBR); NumberFormat numberFormat = NumberFormat.getNumberInstance(ptBR);

Com o objeto de formatação criado para um Locale determinado o processo de formatação é simples, basta utilizar o método format() do objeto passando como parâmetro o objeto que deseja formatar.

dateFormat.format(new Date()); numberFormat.format(13.23); com as respectivas saídas:

Sexta-feira, 21 de Setembro de 2007 13,23

Você pode utilizar o objeto de formatação para converter textos em Objetos com o método parse(), veja abaixo:

dateFormat.parse("Sexta-feira, 21 de Setembro de 2007"); numberFormat.parse("13,23");

12.2ResourceBoundle

A classe ResourceBoundle é a responsável por acessar o arquivo .properties de internacionalização baseado no Locale definido. Existe um padrão para nomear os arquivos de internacionalização, deve ser composto por messages_“iso-code-language”_“iso-code-country”.properties conforme exemplo abaixo para o Brasil.

messages_pt_BR.properties

O arquivo .properties e composto por uma lista de registros com chave e valor, onde a chave será a mesma para todos os arquivos de todos idiomas e o valor que será diferente para cada um.

messages_pt_BR.properties welcome=Bem vindo!

messages_en_US.properties welcome=Hello!

Para carregar o arquivo do respectivo Locale definido é necessário utilizar o método getBoundle() da classe passando o nome inicial do arquivo e o Locale conforme abaixo:

Locale ptBR = new Locale("pt","BR");

ResourceBundle bundle = ResourceBundle.getBundle("messages", ptBR); System.out.println(bundle.getString("welcome"));

A procura pelo arquivo .properties ocorre de três formas, primeiro ele procura pelo nome completo definido pelo locale, se não encontrar então procura com somente a definição do idioma e caso não encontre ele procura com somente o nome do arquivo.

messages_pt_BR.properties //pesquisa 1 messages_pt.properties //pesquisa 2 messages.properties //pesquisa 3

12.3Mensagens Formatadas

Da mesma forma que existe as classes que ajudam a formatação de data e número, existe a classe

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 12

//atribuindo valor a variável referência Carro carro1 = new Carro();

carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização //criando novo alias

Carro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de Instância

Cada objeto criado deverá ter sua própria instância de variáveis (atributos) definidas pela classe. Os métodos definem o comportamento de um objeto. Isto é importante, pois denota que um método pertence a cada objeto da classe. Porém não devemos confundir isto com a implementação do método, que é compartilhada por todas as instâncias da classe.

2.3.1 Invocação de Métodos

Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operação apropriada que foi definida no objeto. Em Java, isto é feito pela

chamada de um método em um objeto usando o operador binário "." (ponto),

devendo especificar a mensagem completa: o objeto que é o recebedor da mensagem, o método a ser invocado e os argumentos para o método (se houver). O método invocado no recebedor pode também enviar informações de volta ao objeto chamador através de um valor de retorno. O método chamado deve ser um que esteja definido pelo objeto.

Os valores das variáveis em um objeto constituem

o seu estado. Dois objetos distintos têm

o mesmo estado se suas variáveis membro têm os

mesmos valores.

159

No documento Linguagem Java COMPLETA (páginas 157-159)

Documentos relacionados