sexta-feira, 16 de agosto de 2013

Suportando Vários Idiomas

É sempre uma boa pratica extrair todo o texto da interface do usuário do código do seu aplicativo e manter em um arquivo externo. Android facilita essa ação com os recursos de diretório em cada projeto Android.
Se você criou seu projeto usando as ferramentas do Android SDK (leia Criando um projeto para Android), as ferramentas criam o diretório res/ em um nível superior do projeto. Dentro deste diretório res/ os subdiretórios de vários tipos de recursos. Existem também alguns poucos arquivos padrão tais como res/values/strings.xml, que mantém o valor do texto.
Criando Diretórios de Localidade e Arquivos Textos


Para adicionar suporte para mais idiomas, crie adicionalmente os diretórios values dentro do res/ que incluem um hífen e o código ISO para o país ao fim do nome do diretório. Por exemplo, values-es/ é um diretório contendo recursos simples para o Idioma com a linguagem de código “es”. Android carrega os recursos apropriados de acordo com as configurações de idioma no dispositivo enquanto funciona.
Uma vez que tenha decidido quais idiomas você irá dar suporte, crie subdiretórios de recursos e arquivos texto de recurso. Por exemplo:
MyProject/
    res/
       values/
           strings.xml
       values-es/
           strings.xml
       values-fr/
           strings.xml
Adicione o valor de texto para cada idioma no arquivo apropriado.
Durante a execução, o sistema Android usa as definições apropriadas do recurso de texto baseado nas configurações de idioma do dispositivo do usuário.
Por exemplo, a seguir temos diferentes arquivos de recursos de texto para diferentes idiomas.
Inglês (default locale), /values/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
   
<string name="title">My Application</string>
   
<string name="hello_world">Hello World!</string>
</resources>
Espanhol/values-es/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
   
<string name="title">Mi Aplicación</string>
   
<string name="hello_world">Hola Mundo!</string>
</resources>
Francês/values-fr/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
   
<string name="title">Mon Application</string>
   
<string name="hello_world">Bonjour le monde !</string>
</resources>
Nota: Você pode usar o qualificador local (ou qualquer qualificador local) em qualquer tipo de recurso, tais como se você precise fornecer versões locais. Para maiores informações, veja Localização.
Usando os Recursos de Texto


Você pode referenciar os recursos de texto em seu código fonte e outros arquivos XML usando o nome do recurso definidos pelo atributo name do elemento <string>.
Dentro do seu código fonte, você pode referenciar o recurso do texto com a sintaxe R.string.<string_name>. Existem vários métodos que aceitam o recurso de texto desta forma.
Por exemplo:
// Get a string resource from your app's Resources
String hello = getResources().getString(R.string.hello_world);

// Or supply a string resource to a method
// That requires a string
TextView textView = new TextView(this);
textView
.setText(R.string.hello_world);

Em outros arquivos XML, você sempre pode referir a um recurso do texto com a sintaxe @string/<string_name> s sempre que o atributo XML aceitar o valor do texto.
Por exemplo:
<TextView
   
android:layout_width="wrap_content"
   
android:layout_height="wrap_content"
   
android:text="@string/hello_world" />

Nenhum comentário:

Postar um comentário