SlideShare une entreprise Scribd logo
1  sur  13
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

Contenu connexe

Tendances

Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
Emerson Cardoso
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
Armando Daniel
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
Armando Daniel
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
Armando Daniel
 
Java introdução ao eclipse
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipse
Armando Daniel
 
Criando uma aplicação com delphi
Criando uma aplicação com delphiCriando uma aplicação com delphi
Criando uma aplicação com delphi
Mundo Orbe
 

Tendances (20)

Exercícios PL/SQL
Exercícios PL/SQLExercícios PL/SQL
Exercícios PL/SQL
 
Java14
Java14Java14
Java14
 
Java12
Java12Java12
Java12
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
 
Java13
Java13Java13
Java13
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Python 01
Python 01Python 01
Python 01
 
Java11
Java11Java11
Java11
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 
Java3
Java3Java3
Java3
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Classes csharp
Classes csharpClasses csharp
Classes csharp
 
Php 08 Oo
Php 08 OoPhp 08 Oo
Php 08 Oo
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
Minicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPRMinicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPR
 
Java introdução ao eclipse
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipse
 
Minicurso Java
Minicurso JavaMinicurso Java
Minicurso Java
 
Introdução a Linguagem de Programação PHP
Introdução a Linguagem de Programação PHPIntrodução a Linguagem de Programação PHP
Introdução a Linguagem de Programação PHP
 
Criando uma aplicação com delphi
Criando uma aplicação com delphiCriando uma aplicação com delphi
Criando uma aplicação com delphi
 

En vedette (8)

Palm e web os
Palm e web osPalm e web os
Palm e web os
 
Utilizando O Cell Id Para Popularizar Os Sistemas Lbs
Utilizando O Cell Id Para Popularizar Os Sistemas LbsUtilizando O Cell Id Para Popularizar Os Sistemas Lbs
Utilizando O Cell Id Para Popularizar Os Sistemas Lbs
 
Internacionalizando um aplicativo BlackBerry API
Internacionalizando um aplicativo BlackBerry APIInternacionalizando um aplicativo BlackBerry API
Internacionalizando um aplicativo BlackBerry API
 
Como criar interfaces gráficas com android
Como criar interfaces gráficas com androidComo criar interfaces gráficas com android
Como criar interfaces gráficas com android
 
Trechos interessantes
Trechos interessantesTrechos interessantes
Trechos interessantes
 
Bada
BadaBada
Bada
 
Intel edison Primeiro Projeto
Intel edison Primeiro ProjetoIntel edison Primeiro Projeto
Intel edison Primeiro Projeto
 
Diferentes culturas do mundo
Diferentes culturas do mundoDiferentes culturas do mundo
Diferentes culturas do mundo
 

Similaire à Internacionalizacao

Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)
jose-junior89
 
Lista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a ObjetosLista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a Objetos
unifesptk
 
Construindo aplicações com netbeans
Construindo aplicações com netbeansConstruindo aplicações com netbeans
Construindo aplicações com netbeans
Sliedesharessbarbosa
 

Similaire à Internacionalizacao (20)

Introdução a programação para plataforma iOS
Introdução a programação para plataforma iOSIntrodução a programação para plataforma iOS
Introdução a programação para plataforma iOS
 
Tutorial1
Tutorial1Tutorial1
Tutorial1
 
Crud
CrudCrud
Crud
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)
 
Tw Course Ajax 2007 Ap05
Tw Course Ajax 2007 Ap05Tw Course Ajax 2007 Ap05
Tw Course Ajax 2007 Ap05
 
Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3
 
Java5
Java5Java5
Java5
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e Python
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dados
 
Lista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a ObjetosLista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a Objetos
 
Apostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a ParteApostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a Parte
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
CURSO JAVA 02
CURSO JAVA 02CURSO JAVA 02
CURSO JAVA 02
 
Tutorial Rodando Python no C#
Tutorial Rodando Python no C#Tutorial Rodando Python no C#
Tutorial Rodando Python no C#
 
Construindo aplicações com netbeans
Construindo aplicações com netbeansConstruindo aplicações com netbeans
Construindo aplicações com netbeans
 
Apostila: Netbeans
Apostila: NetbeansApostila: Netbeans
Apostila: Netbeans
 
Kotlin first
Kotlin firstKotlin first
Kotlin first
 

Plus de Ricardo Ogliari

Plus de Ricardo Ogliari (7)

IoT além do Arduino
IoT além do ArduinoIoT além do Arduino
IoT além do Arduino
 
Clean Code/Architecture com Android e Flutter
Clean Code/Architecture com Android e FlutterClean Code/Architecture com Android e Flutter
Clean Code/Architecture com Android e Flutter
 
Mobile, Flutter e Mercado
Mobile, Flutter e MercadoMobile, Flutter e Mercado
Mobile, Flutter e Mercado
 
Aula 1 view model livedata e databinding.pptx
Aula 1   view model livedata e databinding.pptxAula 1   view model livedata e databinding.pptx
Aula 1 view model livedata e databinding.pptx
 
Programando em ruby para arduino
Programando em ruby para arduinoProgramando em ruby para arduino
Programando em ruby para arduino
 
Instalando e Configurando o JIL SDK. Crie seu primeiro widget com a ferramenta.
Instalando e Configurando o JIL SDK. Crie seu primeiro widget com a ferramenta.Instalando e Configurando o JIL SDK. Crie seu primeiro widget com a ferramenta.
Instalando e Configurando o JIL SDK. Crie seu primeiro widget com a ferramenta.
 
A hora de criar LBS para pequenos dispositivos é agora!!
A hora de criar LBS para pequenos dispositivos é agora!!A hora de criar LBS para pequenos dispositivos é agora!!
A hora de criar LBS para pequenos dispositivos é agora!!
 

Internacionalizacao

  • 1. 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.
  • 2. Informe o nome do projeto e escolha Finish.
  • 3. 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.
  • 4. 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.
  • 5. 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.
  • 6. 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.
  • 7. 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.
  • 8. 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.
  • 9. 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:
  • 10.
  • 11. 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; }
  • 12. 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(); } };
  • 13. 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