Este documento descreve como internacionalizar aplicativos Android. Ele explica como criar um projeto simples com uma interface de formulário e como definir strings em arquivos separados para diferentes idiomas como inglês e espanhol. O Android facilita o processo de internacionalização ao buscar automaticamente as strings traduzidas dependendo da localidade do dispositivo.
1. Internacionalizando Aplicativos
Android
• Introdução
Cada vez mais a internacionalização de nossos aplicativos móveis se
faz necessária. Um bom motivo para isso pode ser a proliferação das lojas
virtuais. Android, iPhone, Nokia (Symbian) e RIM, as principais
plataformas existente hoje, tem suas lojas, que são acessadas de qualquer
parte do mundo.
Além disso, a falta de suporte por parte das plataformas já não é mais
um empecilho para isso. Um bom exemplo é a diferença entre o Java ME
presente nos telefones celulares mais comuns e o Java ME presente nos
aparelhos BlackBerry. Este último já fornece API´s que facilitam e muito o
processo de internacionalização de uma aplicação.
Mas neste artigo vamos mostrar como desenvolver uma aplicação em
Android, que pode ser visualizada em diferentes idiomas.
Nosso aplicativo será bem simples, visto que, o objetivo deste artigo
não é construção de interfaces, mas sim a internacionalização.
• 1° Passo: Criar Projeto
Vamos criar um projeto bem simples, apenas uma tela de formulário,
onde o usuário insere seu nome e endereço.
Navegue para File->new->Android Project no Eclipse. Veja na
Figura 1 os valores necessários:
2. Figura 1: Criando projeto CadastroInternacional.
• 2° Passo: Editar main.xml e strings.xml
Vamos definir nossa interface mo arquivo main.xml. Edite-e
conforme mostra a Listagem 1:
3. Listagem 1:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android" >
<TableRow>
<TextView
android:text="@string/nome"
android:layout_width="100px" />
<EditText android:id="@+id/EditText01"
android:layout_width="200px" />
</TableRow>
<TableRow>
<TextView android:text="@string/endereco"/>
<EditText android:id="@+id/EditText02" />
</TableRow>
<TableRow>
<TextView />
<Button android:id="@+id/Button01"
android:text="@string/enviar" />
</TableRow>
</TableLayout>
Utilizamos o gerenciador TableLayout para dar o formato da Figura
2 a nossa aplicação:
Figura 2: Interface do projeto CadastroInternacional.
4. Perceba que tanto o rótulo da caixa de texto de nome e endereço,
como o rótulo do botão enviar, estão usando o formato @string/. Isso quer
dizer que os textos para estes componentes estão no strings.xml, localizado
em res/values.
Logo, o próximo passo é editar justamente o arquivo de strings.
Edite-o conforme a Listagem 2:
Listagem 2:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, CadastroInternacional!</string>
<string name="app_name">CadastroInternacional</string>
<string name="nome">Nome:</string>
<string name="endereco">Endereço:</string>
<string name="enviar">Enviar:</string>
</resources>
Até agora não vimos absolutamente nada de internacionalização,
assim, qualquer que seja a linguagem e localização do aparelho Android, os
textos configurados no strings.xml serão usados como rótulos dos
componentes de interface. Porém, vamos começar a mudar esta história
agora.
• 3° Passo: Internacionalizando
Se os rótulos dos componentes são buscados no strings.xml, é lógico
que devemos ter mais arquivos xml correspondentes a outras línguas, as
quais queremos internacionalizar o aplicativo. Vamos definir apenas duas:
inglês e espanhol.
Navegue para File->new->Android XML File. Ou ainda, clique na
imagem mostrada circulada na Figura 3.
Figura 3: Novo arquivo XML do android.
5. Independente do caminho utilizado, o vamos receber o wizard
mostrado na Figura 4:
Figura 4: Wizard.
Perceba que logo ao lado do Language existe um botão ->. Clique no
mesmo. Seu wizard ganhará um novo campo, veja na Figura 5:
Figura 5: Escolha da linguagem.
6. Com o campo language em mãos, devemos definir a linguagem que
o xml vai trabalhar. Digite es e dê Ok na parte inferior do wizard.
Veja como ficou nossa estrutura de projeto no Eclipse:
Figura 5: Estrutura do Projeto.
Faça o mesmo para o inglês (se código é en).
Em outras plataformas, ainda deveríamos codificar algumas coisas
para que os componentes entendessem que devem buscar os textos de uma
fonte dependente de idioma. Porém, nesse ponto (e em outros também) o
Android é muito poderoso. Nossa aplicação simplesmente já está
internacionalizada, não precisamos fazer mais nada.
Execute novamente o aplicativo e verás a interface mostrada na
Figura 6:
Figura 6: Aplicativo rodando em aparelho com localidade en.
No caso do meu emulador, ele já estava configurado com localidade
em, sendo assim ele já modificou os rótulos dos componentes. Porém,
vamos modificar a localidade do aparelho para o Japão. Para fazer isso vá
até a tela dos aplicativos do Android e selecione CustomLocale:
7. Figura 7: CustomLocale.
Teremos que clicar e segurar por alguns segundos o item da lista para
que um diálogo peça a confirmação de mudança de idioma para o japonês.
Depois disso reinicie a nossa aplicação e, surpresa, vemos o idioma
português, porque?
Isso acontece porque configuramos o português como o idioma
padrão, se o Android não encontra um values-idioma referente aquele
sendo usado pelo aparelho, ele utiliza o values/strings.xml.
Agora altere a localidade para o espanhol e veremos o aplicativo
desta forma:
Figura 8: Aplicativo em espanhol.
8. Antes que o leitor ache que acabamos por aqui, volte para a Figura
7. Perceba que existe o de para definir que a localidade do aparelho é a
Alemanha. Mas oque será o de_AT, de_CH e de_DE. Nesses casos
podemos especificar a localidade e língua utilizada pelo aparelho. Por
exemplo, es_EN quer dizer que o aparelho está na Espanha mas o idioma
usado deve ser o inglês.
Esse comportamento também pode ser criado na internacionalização
de nossos aplicativos. Copie a pasta values-en, cole na pasta res e mude o
nome para values-es-rEN, de forma que a estrutura de seus diretórios fique
igual a Figura 9:
Figura 9: Nova estrutura de diretórios.
Agora altere a localização e idioma do aparelho para es_EN. No meu
caso tive que adicionar este novo local:
Quando o aplicativo for novamente executado estará no idioma
inglês. Para finalizar, volte a configuração de localidade somente para es e
execute o aplicativo, verás os textos em idioma espanhol novamente.
9. • Conclusão
Das plataformas móveis que já trabalhei mais profundamente
(BlackBerry, Java ME), Android tem o melhor framework para
internacionalização, chega a ser impressionante a facilidade como podemos
exportar nossa uma aplicação para diferentes idiomas.
• Sobre Mim
Meu nome é Ricardo da Silva Ogliari, sou graduado em Ciência da
Computação pela Universidade de Passo Fundo. Atualmente também estou
cursando uma pós-graduação em web, estratégias de inovação e tecnologia,
no Senac SP. Trabalho com mobile a 6 anos, escrevo artigos para algumas
revistas nacionais especializadas. Sou criador e mantenedor do
http://www.mobilidadetudo.com e sou um dos membros do
www.javamovel.com. Palestrei em eventos nacionais e internacionais,
como o FISL e o JustJava, além de ter dezenas de artigos meus espalhados
pelo mundão da internet.