Internacionalizacao
Upcoming SlideShare
Loading in...5
×
 

Internacionalizacao

on

  • 1,507 views

A maioria dos aplicativos modernos entrega seu conteúdo para diferentes países, línguas e culturas, utilizando um conceito chamado de internacionalização, ou i18n. Em algumas plataformas essa ...

A maioria dos aplicativos modernos entrega seu conteúdo para diferentes países, línguas e culturas, utilizando um conceito chamado de internacionalização, ou i18n. Em algumas plataformas essa tarefa é maçante ou, até mesmo impossível, porém, com a BlackBerry API o programar tem vida fácil.

Para exemplificar e consolidar os conceitos, vamos criar um projeto de exemplo, que consta de um simples cadastro de cliente com três campos. Inimaginável no mundo real, mas possível neste artigo.

Abra seu eclipse e pegue a xícara de café...

Statistics

Views

Total Views
1,507
Views on SlideShare
1,423
Embed Views
84

Actions

Likes
0
Downloads
19
Comments
0

2 Embeds 84

http://www.javamovel.com 83
http://wildfire.gigya.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Internacionalizacao Internacionalizacao Document Transcript

  • Internacionalizando um aplicativo BlackBerry API A maioria dos aplicativos modernos entrega seu conteúdo para diferentes países, línguas e culturas, utilizando um conceito chamado de internacionalização, ou i18n. Em algumas plataformas essa tarefa é maçante ou, até mesmo impossível, porém, com a BlackBerry API o programar tem vida fácil. Para exemplificar e consolidar os conceitos, vamos criar um projeto de exemplo, que consta de um simples cadastro de cliente com três campos. Inimaginável no mundo real, mas possível neste artigo. Abra seu eclipse e pegue a xícara de café... Criando o projeto Nos exemplos iremos utilizar a IDE Eclipse, porém, os códigos podem ser transportados sem problemas para o NetBeans. No Eclipse, navegue até File-New-Project. No wizard apresentado, marque a opção BlackBerry -> BlackBerry Project. Clique Next para seguir o processo.
  • Informe o nome do projeto e escolha Finish.
  • Depois que a IDE criou toda estrutura de pastas necessárias para nosso projeto, vamos codificar. Código, código.. Clique com o botão direito na pasta src. Escolha a opção new->class. No wizard que aparecer configure as seguintes informações: Package: com.estudo.blackberry. Se preferir outro pacote, fique a vontade. Name: nome da classe, no nosso caso FormularioInternacional. Superclass: de vital importância que seja net.rim.device.api.ui.UiApplication. Para facilitar a digitação escreva Ui e use o atalho ctrl + espaço. Depois Finish. Check Box´s: Marque os três checkbox´s que estão logo abaixo a opção de interfaces. Com isso, o Eclipse já cria a classe com o construtor e um método main.
  • Até o presente momento não há nenhuma surpresa. Veja o código gerado na Listagem abaixo: package com.estudo.blackberry; import net.rim.device.api.ui.UiApplication; public class FormularioInternacional extends UiApplication { public FormularioInternacional() { // TODO Auto-generated constructor stub } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub } } Reescreva o construtor e o método main para que fiquem da seguinte maneira: public FormularioInternacional() { FIScreen mainScreen = new FIScreen(); pushScreen(mainScreen); } /** * @param args */ public static void main(String[] args) { FormularioInternacional app = new FormularioInternacional(); app.enterEventDispatcher(); } O Eclipse reclamará, com razão, da não existência da classe FIScreen . Clique na imagem da lâmpada que fica ao lado esquerdo da linha errônea.
  • Escolha a opção que automaticamente cria a classe que está faltando. A IDE lhe apresentará um novo wizard (Figura abaixo). Modifique apenas a superclasse, herdando de MainScreen e clique Finish.
  • O Eclipse nos entrega a seguinte classe: package com.estudo.blackberry; import net.rim.device.api.ui.container.MainScreen; public class FIScreen extends MainScreen { public FIScreen(long style) { super(style); // TODO Auto-generated constructor stub } } Lembrando que este artigo é sobre internacionalização e não sobre os componentes da API, portanto, vamos passar batido pelos campos de texto e caixas de seleção.
  • Reescreva o construtor da classe para: public FIScreen() { super(FullScreen.DEFAULT_MENU | FullScreen.DEFAULT_CLOSE); // TODO Auto-generated constructor stub edtNome = new EditField("Nome: ", ""); edtEmail = new EditField("Email: ", "", 40, EditField.FILTER_EMAIL); String itens[] = {"Masculino", "Feminino"}; choiceSexo = new ObjectChoiceField("Sexo: ", itens); add(edtNome); add(edtEmail); add(choiceSexo); } Nossa interface ficou assim: Perceba no código que os rótulos dos componentes, assim como as opções de gênero estão todas em português e não apresentam nenhuma maneira de internacionalização. É agora que a brincadeira começa. Exportando a aplicação Vamos imaginar que queremos exportar nossa aplicação para a América Latina inteira e para os Estados Unidos, logo, devemos nos preocupar também com a língua espanhola e inglesa. Na internacionalização da BB API, sempre devemos criar primeiramente arquivos com a extensão .rrh, ou os arquivos de recursos. Para isso, navegue para File- >New->Other. Na wizard que receber, masque a opção BlackBerry Resources File.
  • Na tela a seguir, informe o local onde deseja criar o arquivo de recurso. No nosso caso colocamos junto aos códigos fontes da aplicação. Porém, o ideal é criar uma pasta res, por exemplo, para melhor organização. Também, informe o nome do arquivo, que deve sempre ter a extensão .rrh. Usamos Localização.rrh no nosso exemplo. Perceba que o Eclipse se encarrega de criar mais um arquivo, o Localização.rrc.
  • O arquivo .rrc representa a língua padrão, inglês. Vamos criar mais dois arquivo: Localização_es.rrc e Localização_pt.rrc. O uso dos sufixos es e pt refere-se a espanhol e português, respectivamente. Estes sufixos obedecem a uma padronização de nomes. Dê um duplo clique no arquivo .rrh. Adicione as seguintes chaves (opção Add Key): EMAIL, ESPANHOL, FEMININO, INGLES, MASCULINO, NOME, PORTUGUES e SEXO. Perceba que nas abas inferiores existem as opções es e pt. Agora basta preencher os valores:
  • Depois que os valores para as chaves são inseridos e o arquivo é salvo, modifique a classe FIScreen da seguinte maneira: public class FIScreen extends MainScreen implements LocalizacaoResource{ private static ResourceBundle _res = ResourceBundle.getBundle(BUNDLE_ID, BUNDLE_NAME); private EditField edtNome; private EditField edtEmail; private ObjectChoiceField choiceSexo; public FIScreen() { super(FullScreen.DEFAULT_MENU | FullScreen.DEFAULT_CLOSE); // TODO Auto-generated constructor stub edtNome = new EditField(_res.getString(NOME)+": ", ""); edtEmail = new EditField(_res.getString(EMAIL)+": ", "", 40, EditField.FILTER_EMAIL); String itens[] = {_res.getString(MASCULINO), _res.getString(FEMININO)}; choiceSexo = new ObjectChoiceField(_res.getString(SEXO)+": ", itens); add(edtNome); add(edtEmail); add(choiceSexo); } } A classe LocalizacaoResource, utilizada no implements, é criada pela própria IDE. Ela sempre terá o nome do arquivo rrh mais a palavra Resource. Também é necessário criar uma instância de ResourceBundle. Novamente, a IDE cria as constantes BUNDLE_ID e BUNDLE_NAME baseados no nome da classe com seu pacote. Para os mais curiosos, veja a classe gerada: package com.estudo.blackberry; public interface LocalizacaoResource { // Hash of: "com.estudo.blackberry.Localizacao". long BUNDLE_ID = 0x85202c56b3fe29dfL; String BUNDLE_NAME = "com.estudo.blackberry.Localizacao"; int INGLES = 6; int SEXO = 4; int ESPANHOL = 7; int EMAIL = 1; int FEMININO = 3; int MASCULINO = 2; int NOME = 0; int PORTUGUES = 5; }
  • Continuando na listagem de código da classe FIScreen, note que não utilizamos mais valores fixos para rótulos, mas sim um esquema como: _res.getString(CHAVE) _res.getString(NOME) Onde usamos a instância de ResourceBundle e o seu método getString(), passando como parâmetro o nome da chave da qual queremos obter o valor. Agora nosso aplicativo ficou no idioma inglês, como padrão. Finalizando a aplicação Para deixar a aplicação pronta basta apenas colocar os itens de menu que permitem a mudança de idioma. Adicione o código abaixo a classe FIScreen: protected void makeMenu(Menu menu, int instance) { menu.add(miEspanhol); menu.add(miIngles); menu.add(miPortugues); } private MenuItem miIngles=new MenuItem(_res.getString(INGLES),110,10){ public void run() { Locale.setDefault(Locale.get(Locale.LOCALE_en, null)); refresh(); } };
  • private MenuItem miPortugues=new MenuItem(_res.getString(PORTUGUES), 110,10) { public void run() { Locale.setDefault(Locale.get(Locale.LOCALE_pt, null)); refresh(); } }; private MenuItem miEspanhol = new MenuItem(_res.getString(ESPANHOL), 110, 10) { public void run() { Locale.setDefault(Locale.get(Locale.LOCALE_es, null)); refresh(); } }; private void refresh() { edtNome.setLabel(_res.getString(NOME)); edtEmail.setLabel(_res.getString(EMAIL)); choiceSexo.setLabel(_res.getString(SEXO)); choiceSexo.setChoices(new String[]{_res.getString(MASCULINO), _res.getString(FEMININO)}); } Atenção ao método setDefault da classe Locale. É ele quem redefine a linguagem de aplicação. E, para o método refresh(), que atualiza os rótulos dos componente da interface gráfica. Pronto, a aplicação já está internacionalizada. Autor Ricardo da Silva Ogliari rogliariping@gmail.com www.mobilidadetudo.com www.javamovel.com