Android

23 set, 2013

Criando apps Android multi-idiomas

Publicidade

Se você almeja criar um aplicativo com potencial de alcançar milhões e milhões de pessoas, é super importante desenvolver um app já preparado para suportar outros idiomas. Mas não se preocupe. Isso não é difícil de implementar. Neste artigo, vamos te ensinar algumas práticas para facilitar o desenvolvimento e manutenção de aplicativos com suporte mais que um idioma. Ao final do artigo, você saberá como exibir textos e imagens de acordo com a localização e as preferências do usuário. Mãos à obra!

Para começar, uma boa prática é separar bem o código Java, usado para desenvolver o app, dos textos que aparecem na interface do usuário. Para isso, é recomendável armazenar os textos em um arquivo separado, o arquivo/values/strings.xml.

Note que, em nosso arquivo exibido abaixo, há uma entrada de um recurso chamado “hello_world”, cujo valor correspondente é “Hello world!”.

android-1

Por sua vez, nossa interface de tela tem um TextView, cuja propriedade “text”não possui um texto fixo, mas sim uma referência para uma entrada“hello_world” disponível no arquivo strings.xml.

android-2

Assim, para alterar os textos de uma interface, não é preciso fazer qualquer alteração no código fonte. Basta editar o arquivo strings.xml. Simples, não?

Agora vamos supor que nosso aplicativo oferecerá suporte para a língua espanhola. Para isso, vamos criar uma nova pasta, nesse caso values-es, contendo um arquivo strings.xml com os textos originais traduzidos para o espanhol:

android-3android-4

Assim, configurando as preferências do emulador para o idioma espanhol, obtemos o seguinte resultado:

android-5

Vale considerar que há regras para nomear essas pastas. Após o nome da pasta, incluímos o código da língua, definido por 2 letras conforme o padrão ISO 639-1. Como desejamos traduzir nosso aplicativo para o espanhol, utilizamos o qualificador “es”. Opcionalmente, você também pode especificar o código da região. Imagine, por exemplo, que você deseja adicionar suporte para a língua francesa, sendo que o francês tem particularidades dependendo se é falado na França ou no Canadá. Dessa forma, após o código da língua, basta acrescentar a letra “r”, indicando região e o código da região, conforme o padrão ISO 3166-1-alpha-2:

android-6

E se você quiser exibir imagens diferentes para usuários de diferentes idiomas? Sem problemas! É só seguir os mesmos passos, mas em vez de criar uma nova pasta “values”, crie uma nova pasta “drawable” com os devidos qualificadores. Como exemplo, vamos criar as pastas “drawable-es” e “drawable-fr”. Cada uma dessas pastas conterá um arquivo chamado “flag.jpg” com a bandeira correspondente de cada país. Insira um ImageView em seu layout e configure sua propriedade src:

 android:src="@drawable/flag"

No próprio Layout Editor, você poderá visualizar as alterações no layout ao selecionar um idioma ou o outro:

android-7

E se você quiser traduzir seu aplicativo para um novo idioma. Precisa traduzir todas as entradas do arquivo strings.xml? Não. Suponha que nossa aplicação esteja sendo exibida em francês canadense. Caso algum controle referencie uma entrada que não esteja disponível no arquivo \values-fr-rCA\strings.xml, o Android irá automaticamente pesquisar pela mesma entrada no arquivo\values-fr\strings.xml (francês). Assim, basta que o arquivo francês canadense contenha apenas as entradas que são diferentes do francês comum. Por fim, caso o Android ainda não encontre esta entrada no arquivo francês comum, ele irá procurá-la no arquivo \values\strings.xml (default). Por isso, é recomendável que as pastas padrão (sem qualificadores de idioma) trabalhem com idiomas que sejam populares para a base de usuários a qual você deseja alcançar, como por exemplo o inglês.

Conclusão

Neste artigo, você aprendeu algumas das principais práticas para facilitar o desenvolvimento e manutenção de aplicativos com suporte a mais de um idioma. Mesmo que você não conheça outros idiomas, desenvolva seu aplicativo utilizando estas (e outras) práticas. Assim, futuramente, caso você queira traduzir seu aplicativo para um novo idioma, vai conseguir traduzi-lo sem alterar o código fonte, poupando muitas horas de trabalho.

Para aprender mais, recomendamos ler a documentação do Android sobre localização de apps, disponível aqui.

Abraços e até a próxima.