Criando apps Android multi-idiomas

Share

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 post vamos te ensinar algumas práticas para facilitar o desenvolvimento e manutenção de aplicativos com suporte a mais que um idioma. Ao final do post você saberá como exibir textos e imagens de acordo com a localização e as preferências do usuário. Mãos a 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!”.

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.

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 a língua espanhola. Para isso vamos criar uma nova pasta, neste caso values-es, contendo um arquivo strings.xml com os textos originais traduzidos para o espanhol:

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

Vale considerar que há regras para nomear estas pastas. Após o nome da pasta incluímos o código da língua, definido por 2 letras conforme o padrãoISO 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 a língua francesa, sendo que o francês tem particularidades dependendo se é falado na França ou no Canadá. Desta 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:

E se você quiser exibir imagens diferentes para usuários de diferentes idiomas? Sem problemas! É só seguir os mesmos passos, mas ao invés 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 destas pastas conterá um arquivo chamado“flag.jpg” com a bandeira correspondente de cada país. Insira um ImageViewem 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:

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 post você aprendeu algumas das principais práticas para facilitar o desenvolvimento e manutenção de aplicativos com suporte a mais que 1 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 traduzí-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.

Artigo enviado pela MobGeek, publicado anteriormente em seu blog.