Esse artigo faz parte da revista Java Magazine edição 30. Clique aqui para ler todos os artigos desta edição

OR: windowtext; FONT-FAMILY: Verdana">"MARGIN: 0cm 0cm 6pt">Saiba como usar uma nova API na construção de aplicações adaptáveis a cada região e país no Java Micro Edition

Rafael Torres e José Ferreira

 

Um software é geralmente construído seguindo o idioma e as convenções culturais familiares aos usuários de uma região ou país. Por exemplo, um desenvolvedor na França constrói aplicações com textos em francês, usando o Euro como moeda e números formatados com espaços como separadores de milhar e vírgula como separador decimal; por exemplo, €123 456 789,00. Já seguindo as convenções brasileiras, o mesmo exemplo ficaria R$ 123.456.789,00. Um software construído para se adaptar às convenções culturais de várias regiões ou países é chamado de software internacionalizado.

Até há pouco tempo, a plataforma Java ME (o novo nome para o J2ME) não contava com mecanismos padronizados para a internacionalização de aplicações. Para suprir essa carência, foi criada a Mobile Internationalization API (JSR-238), um pacote opcional do Java ME. Como a MIAPI foi concebida tomando como base o Java SE, boa parte das técnicas também é aplicável à plataforma padrão do Java. Na prática, isso traz para o desenvolvedor uma sensação de familiaridade com a API, pois foram mantidos, sempre que possível, nomes de classes, interfaces e métodos encontrados no pacote java.text.* do Java SE.

Neste artigo serão apresentados conceitos gerais de internacionalização, e demonstrados os recursos da API para a criação de MIDlets internacionalizados.

Características e requisitos

A MIAPI define recursos para formatação de datas, horas, números e valores monetários – além de oferecer facilidades para a construção de mensagens parametrizadas e recuperação de recursos do dispositivo ou da aplicação. Inclui ainda sofisticados algoritmos de comparação de strings baseados nas regras da localidade corrente.

Os requisitos mínimos para o suporte à MIAPI são a configuração CLDC (Connected Limited Device Configuration) 1.1 e o perfil MIDP (Mobile Information Device Profile) 2.0. Para saber se um dispositivo suporta a API, pode-se consultar a propriedade de sistema microedition.global.version, que retorna a versão suportada, ou null se o dispositivo não oferece suporte.

Conceitos essenciais

Antes de detalhar o uso da MIAPI, precisamos apresentar alguns conceitos fundamentais de internacionalização. Uma localidade (locale) representa uma região ou país ao qual está associado um conjunto de arquivos (strings de mensagens, imagens etc.), além de regras para formatação de dados e comparação de strings. Localidades são indicadas por um identificador de localidade, sendo comum chamar esse identificador simplesmente de "localidade".

Um identificador de localidade começa com um código de idioma com duas letras minúsculas, definido pela norma ISO 639-1 (ex.: pt, en, jp), seguido por um código de país com duas letras maiúsculas, definido pela norma ISO 3166-1 (ex.: BR, US, JP), e depois por um código opcional chamado Variant (ex.: RJ, CA, TK) [1].

Recursos

Recursos são informações na aplicação (ou nativas ao dispositivo) que estão fora do código propriamente dito. Exemplos são imagens, sons, e textos em componentes visuais. A MIAPI define duas categorias de recursos:

§       Recursos de aplicação – Empacotados junto com a aplicação para distribuição, e geralmente específicos a uma aplicação ou conjunto de aplicações relacionadas.

§       Recursos de dispositivo – Embutidos no dispositivo. A API não especifica quais devem ser os recursos de dispositivo, nem como serão armazenados, deixando a decisão para o fabricante.

 

A classe javax.microediton.global.ResourceManager dá acesso a recursos através de sobrecargas do seu método getManager(). É permitido acessar apenas uma categoria de recursos em cada instância de ResourceManager. Ao fazer a instanciação para recursos de aplicação, é passado um string que representa o base-name. (Um base-name é usado para agrupar recursos e construir o nome do arquivo de recursos utilizado.)

O seguinte exemplo cria um ResourceManager vinculado ao base-name "telas":

 

ResourceManager resAp = ResourceManager.getManager (“telas”);

 

Para indicar o acesso a recursos de dispositivo, usa-se a constante ResourceManager.DEVICE:

 

ResourceManager resDisp =

   ResourceManager.getManager(ResourceManager.DEVICE);

Recuperação

Para recuperar um recurso, é necessário conhecer seu identificador (ID). A MIAPI define IDs de recursos como números na faixa de 0 a 0x7FFFFFFF, que devem ser únicos dentro de cada base-name. (Detalhes sobre como os IDs são gerados são mostrados na especificação).

Os métodos getResource(int id), ...

Quer ler esse conteúdo completo? Tenha acesso completo