Alterando o idioma da aplicação Android de acordo com o idioma do aparelho

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (3)  (0)

Veja neste artigo como criar uma aplicação que funcione no idioma que o dispositivo móvel estiver configurado.

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.

Listagem 1: strings.xml da pasta values

<?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>

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

Listagem 2: strings.xml da pasta values-en

<?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>

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

Listagem 3: strings.xml da pasta values-es

<?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>

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" />.

Listagem 4: Código da MainActivity

<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>

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)

Um abraço e até a próxima.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?