Veja neste artigo como criar uma aplicação que funcione no idioma que o dispositivo móvel estiver configurado. A pasta res possui as strings, ou seja, as palavras (caracteres) de qualquer aplicação Android. Então vamos dentro dela realizar as traduções para os idiomas que desejamos. É muito simples, de acordo com o idioma do dispositivo móvel o aplicativo vai procurar na pasta correspondente, por exemplo, se o celular da pessoa estiver no idioma espanhol a aplicação vai procurar pelo valor “es“, se o celular da pessoa estiver no idioma Inglês a aplicação vai procurar pelo valor en“ e assim sucessivamente. Caso o idioma não seja inglês nem espanhol, ele irá carregar o idioma que está na pasta values, ou seja, no nosso caso o idioma português. A pasta values deve conter os textos em português, na values-en, os textos em inglês, e na values-es os textos em espanhol da aplicação.

A tabela a seguir lista alguns códigos de linguagem possíveis usados para especificar várias definições do sistema. Cada idioma possui sua respectiva sigla, veja na listagem abaixo algumas delas:

  • es é a sigla do idioma espanhol (Espanhol)
  • en é a sigla do idioma inglês (Estados Unidos)
  • br é a sigla do idioma português (Brasil)
  • ca é a sigla do idioma Inglês (Canadá)

A pasta values dentro da pasta res possui obviamente os textos no idioma português conforme listagem 1.


<?xml version="1.0" encoding="utf-8"?>
<resources>

   <string name="app_name">fabio</string>
   <string name="menu_settings">Settings</string>
   <string name="hello_world">Olá mundo! Meu nome é Fabio!</string>
   
   <string name="btn_gravar">Gravar</string>
   <string name="txv_endereco">Endereço : </string>   
   <string name="txv_cidade">Cidade : </string> 
   <string name="txv_pais">Pais : </string> 
   <string name="txv_profissao">Profissão : </string> 
   <string name="txv_empresa">Empresa : </string> 
   <string name="txv_salario">Salário : </string> 
   <string name="txv_sexo">Sexo : </string> 
   <string name="txv_idade"></string>                 
      
   <string name="txt_endereco"> Rua José Mateus,77 </string>    
   <string name="txt_cidade"> Rio de Janeiro </string> 
   <string name="txt_pais"> Brasil </string> 
   <string name="txt_profissao"> Analista de Sistemas </string> 
   <string name="txt_empresa"> Microsoft </string> 
   <string name="txt_salario"> 5000,00 </string> 
   <string name="txt_sexo"> Masculino </string> 
   <string name="txt_idade"></string> 
        
</resources>
Listagem 1. strings.xml da pasta values

Criar uma pasta values-en dentro da pasta res, inserindo obviamente os textos no idioma inglês conforme listagem 2.


<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">fabio</string>
    <string name="menu_settings">Settings</string>
    <string name="hello_world">Hello world! My name is Fabio!</string>
    <string name="btn_gravar">Save</string>
    <string name="txv_endereco">address : </string> 
    <string name="txv_cidade">City : </string> 
    <string name="txv_pais">Country : </string> 
    <string name="txv_profissao">Profession : </string> 
    <string name="txv_empresa">Business :   </string> 
    <string name="txv_salario">Salary : </string> 
    <string name="txv_sexo">Sex : </string>   
    <string name="txv_idade"></string>                  
    <string name="txt_endereco"> Rua José Mateus,77 </string> 
    <string name="txt_cidade"> Rio de Janeiro </string> 
    <string name="txt_pais"> Brasil </string> 
    <string name="txt_profissao"> Analista de Sistemas </string> 
    <string name="txt_empresa">  Microsoft </string> 
    <string name="txt_salario"> 5000,00 </string> 
    <string name="txt_sexo"> Masculino </string> 
    <string name="txt_idade"></string>  
      
</resources>
Listagem 2. strings.xml da pasta values-en

Criar uma pasta values-es dentro da pasta res, inserindo obviamente os textos no idioma espanhol conforme listagem 3.


<?xml version="1.0" encoding="utf-8"?>
<resources>

   <string name="app_name">fabio</string>
   <string name="menu_settings">Settings</string>
   <string name="hello_world">Hola, mundo! Mi nombre es Fabio!</string>    
   <string name="btn_gravar">Gravar</string>
   <string name="txv_endereco">Dirección : </string> 
   <string name="txv_cidade">Ciudad : </string> 
   <string name="txv_pais">País : </string> 
   <string name="txv_profissao">Profesión : </string> 
   <string name="txv_empresa">Negocios : </string> 
   <string name="txv_salario">Salario : </string> 
   <string name="txv_sexo">Sexo : </string> 
   <string name="txv_idade"></string>      
   <string name="txt_endereco"> Rua José Mateus,77 </string> 
   <string name="txt_cidade"> Rio de Janeiro </string> 
   <string name="txt_pais"> Brasil </string> 
   <string name="txt_profissao"> Analista de Sistemas </string> 
   <string name="txt_empresa"> Microsoft </string> 
   <string name="txt_salario"> 5000,00 </string> 
   <string name="txt_sexo"> Masculino </string> 
   <string name="txt_idade"> </string> 
   
</resources>
Listagem 3. strings.xml da pasta values-es

Repare que os textos de todos os componentes da MainActivity.java estão fazendo referência ao arquivo strings.xml através do código: android:text="@string/nome_string" />.


<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"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/txv_olamundo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="39dp"
        android:layout_marginTop="46dp"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/btn_gravar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="48dp"
        android:layout_marginRight="68dp"
        android:text="@string/btn_gravar" />

    <TextView
        android:id="@+id/txv_endereco"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txv_olamundo"
        android:layout_below="@+id/txv_olamundo"
        android:layout_marginTop="55dp"
        android:text="@string/txv_endereco" />

    <TextView
        android:id="@+id/txv_cidade"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txv_olamundo"
        android:layout_below="@+id/txv_endereco"        
        android:text="@string/txv_cidade" />

    <TextView
        android:id="@+id/txv_pais"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txv_olamundo"
        android:layout_below="@+id/txv_cidade"
        android:text="@string/txv_pais" />

    <TextView
        android:id="@+id/txv_empresa"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txv_olamundo"
        android:layout_below="@+id/txv_pais"
        android:text="@string/txv_empresa" />

    <TextView
        android:id="@+id/txv_salario"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txv_olamundo"
        android:layout_below="@+id/txv_empresa"
        android:text="@string/txv_salario" />

    <TextView
        android:id="@+id/txv_profissao"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txv_salario"
        android:layout_below="@+id/txv_salario"
        android:text="@string/txv_profissao" />

    <TextView
        android:id="@+id/txv_sexo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txv_profissao"
        android:layout_below="@+id/txv_profissao"
        android:text="@string/txv_sexo" /> 

    <TextView
        android:id="@+id/txt_idade"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txt_empresa"
        android:layout_marginLeft="28dp"
        android:layout_toRightOf="@+id/txv_idade"
        android:text="@string/txt_idade" />

    <TextView
        android:id="@+id/txt_endereco"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/txv_endereco"
        android:layout_alignBottom="@+id/txv_endereco"
        android:layout_alignLeft="@+id/txt_idade"
        android:text="@string/txt_endereco" />

    <TextView
        android:id="@+id/txt_cidade"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txt_endereco"
        android:layout_below="@+id/txt_endereco"
        android:text="@string/txt_cidade" />

    <TextView
        android:id="@+id/txt_pais"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txt_cidade"
        android:layout_below="@+id/txt_cidade"
        android:text="@string/txt_pais" />

    <TextView
        android:id="@+id/txt_sexo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/txt_idade"
        android:layout_below="@+id/txv_profissao"
        android:text="@string/txt_sexo" />

    <TextView
        android:id="@+id/txt_empresa"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/txv_salario"
        android:layout_toRightOf="@+id/txt_idade"
        android:text="@string/txt_empresa" />

    <TextView
        android:id="@+id/txt_profissao"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txt_idade"
        android:layout_toRightOf="@+id/txv_profissao"
        android:text="@string/txt_profissao" />

    <TextView
        android:id="@+id/txv_idade"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/txv_sexo"
        android:layout_below="@+id/txv_sexo"
        android:text="@string/txv_idade" />

    <TextView
        android:id="@+id/txt_salario"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/txv_profissao"
        android:layout_alignLeft="@+id/txt_idade"
        android:text="@string/txt_salario" />


</RelativeLayout>
Listagem 4. Código da MainActivity

Para testar, basta substituir o idioma do dispositivo móvel para inglês, espanhol, português ou outro idioma que irá funcionar. Teste realizado com sucesso no dispositivo (Emulador Android) no idioma inglês, aplicação em inglês, veja na figura 1.

Teste realizado no dispositivo (Emulador Android)
Figura 1. Teste realizado no dispositivo (Emulador Android)