Como Suportar Diferentes Idiomas numa App Android

O mundo das aplicações móveis é cada vez mais abrangente, fazendo já parte do dia-a-dia de qualquer um dos mortais com smartphone. Esta fragmentação e abrangência na utilização de aplicações móveis torna complicada a tarefa de ter um público-alvo bem definido, pois “geralmente” as aplicações estão disponíveis para a globalidade dos utilizadores e não limitadas a regiões.

Esta situação torna a definição dos idiomas para o público-alvo da aplicação um requisito fundamental para o correto desenvolvimento de uma aplicação. Neste pequeno tutorial irei dar a conhecer uma forma de implementar o suporte a múltiplos idiomas numa aplicação Android.

Não irei dar destaque à instalação e configuração do ambiente de desenvolvimento, partindo do princípio que todo o ambiente está corretamente instalado e configurado.

1º Passo: Criar um Android Application Project

Android multi-lingua: criar projeto

Neste primeiro passo iremos criar um Android Application Project, onde definimos o nome da app, nome do projeto, assim como as versões Android suportadas. É ainda criada uma Main Activity que será a nossa view principal neste tutorial.

2º Passo: Desenhar a view

Android multi-língua: desenhar view

Após a criação do projeto vamos então dar início à construção da nossa view, basicamente à construção do aspeto gráfico que neste exemplo concreto terá apenas uma view, ou seja uma activity.

Para este exemplo iremos apenas criar um button e colocá-lo numa qualquer posição do ecrã à nossa escolha, como é demonstrado na imagem acima.

De seguida e se olharmos para o código no ficheiro activity_main.xml teremos a seguinte estrutura:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.nuno.multilinguaapp.MainActivity" >

  <Button
      android:id="@+id/button1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="120dp"
      android:text="Button"
      android:onClick="actionMethod" />
</RelativeLayout>

Será então aqui que começarão as alterações com vista a tornarmos a nossa aplicação com suporte para múltiplos idiomas.

Vamos agora dar atenção à seguinte linha:

android:text="Button"

 Esta linha é responsável por definir o nome a apresentar no button e que neste caso é Button. Para podermos ter acesso posterior e permissão para alterarmos dinamicamente o conteúdo a apresentar como nome do button termos de mudar para o seguinte:

android:text="@string/button_pt"

Com esta linha iremos então fazer com que o conteúdo a apresentar como nome do button seja fornecido por uma string que irá estar alojada na pasta res/values, ficheiro strings.

Temos ainda de adicionar a seguinte linha para que mais tarde possamos aceder ao método click do nosso button:

android:onClick="actionMethod"

Olhando agora para o ficheiro strings que está presente na pasta res/values ele deverá ter uma estrutura semelhante à apresentada abaixo:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">MultiLinguaApp</string>
    <string name="action_settings">Settings</string>
 
    <string name="button_pt">Lingua Portuguesa</string>
    <string name="mensagem">Mensagem em Português!!!</string>
</resources>

Aqui as duas linhas importantes são as seguintes:

<string name="button_pt">Lingua Portuguesa</string>
<string name="mensagem">Mensagem em Português!!!</string>

A primeira linha é a responsável pelo conteúdo do nome do button, a segunda linha será a mensagem definida que será apresentada no momento em que o button for clicado.

3º Passo: Criar uma nova pasta values para o novo idioma

Android multi-língua: pasta values do idioma

Para que possamos então dar o suporte a múltiplos idiomas à nossa aplicação teremos de criar uma nova pasta values, mas desta vez com uma alteração devido a este ter de ser diferenciada para o novo idioma, como por exemplo values-en.

Neste exemplo eu defini o idioma base como Português e o idioma secundário o Inglês e por esse mesmo motivo estou a usar a pasta values-en. Poderão ter acesso a todos os códigos de idiomas suportados pelo Android aqui: http://developer.android.com/reference/java/util/Locale.html.

Publicado na edição 47 (PDF) da Revista PROGRAMAR.