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
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
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
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.
4º Passo: Criar um novo ficheiro strings.xml na pasta values-en
Agora com a criação deste novo ficheiro é que vamos realmente dar suporte ao novo idioma, sendo que este novo ficheiro strings.xml
deverá ter uma estrutura idêntica ao ficheiro strings.xml
padrão.
Ao escolhermos a criação do novo ficheiro XML, devemos ter em atenção alguns aspetos, tais como o Resource Type que deverá ser do tipo values como mostra a imagem acima.
Logo de seguida seremos presenteados com mais algumas opções, sobre as quais devemos selecionar Country Code, e escolher o identificador, neste caso o en referente à língua Inglesa.
Tal como havia dito acima a estrutura deste novo ficheiro strings será em tudo muito semelhante ao ficheiro strings padrão, pelo que deverá copiar todo o conteúdo do ficheiro strings padrão para este novo ficheiro strings, alterando apenas o conteúdo de duas linhas.
A estrutura deste novo ficheiro deverá ser a seguinte:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">MultiLinguaApp</string> <string name="action_settings">Settings</string> <string name="button_pt">English Language</string> <string name="mensagem">English Message!!!</string> </resources>
Como é percetível a estrutura do ficheiro é em tudo semelhante ao ficheiro padrão, tendo sido apenas alteradas as linhas que possuíam o conteúdo do nome do button e da mensagem.
5º Passo: Definir o método actionMethod no MainActivity.java
Depois de termos definido os conteúdos referentes aos dois idiomas vamos agora definir o método que nos permitirá fazer o click no button e nos ser apresentada a mensagem definida.
Para isso devemos navegar até à pasta src/nome_package
e abrir o ficheiro MainActivity.java
ao qual adicionaremos o seguinte método no final:
//Método ActionMethod public void actionMethod(View v) { String msg = (String)getText(R.string.mensagem); //Acesso à string alojada no ficheiro "strings" Toast.makeText(getBaseContext(), msg, Toast.LENGTH_LONG).show(); //Apresntação da mensagem no ecrã }
Este método irá ser chamado cada vez que o button for clicado, apresentando então a mensagem definida.
6º Passo: Alteração do Idioma no Sistema Operativo e Respetivo Teste
Se tudo correu como o previsto a nossa aplicação estará agora preparada para lidar com dois idiomas, mas para isso iremos testar e verificar se tudo correu como o que desejávamos.
Antes de mais supomos que o idioma definido pelo Sistema Operativo é o Português, e assim sendo a aplicação deveria apresentar o seguinte resultado:
Agora necessitamos de alterar o idioma do Sistema Operativo para Inglês de modo a que possamos testar se tudo está como o previsto. Para alterar o idioma deveremos aceder ao Menu Definições, Idioma e entrada, Idioma escolhendo então o Inglês.
Definido o idioma para “Inglês” o resultado da aplicação deverá ser o seguinte:
Se tudo correu como o esperado, ambos os idiomas estarão disponíveis na aplicação, sendo que a aplicação irá sempre verificar qual é o idioma definido pelo Sistema Operativo para então depois escolher o idioma a utilizar.
Para suporte a mais idiomas seria necessário apenas repetir o processo, para os idiomas pretendidos.
Existem outras formas de dotar as apps Android com suporte a múltiplos idiomas, algumas delas recorrendo a tradutores. Neste pequeno tutorial o objetivo era apenas demonstrar uma forma simples de adicionar suporte a múltiplos idiomas ao desenvolvimento de uma aplicação Android.