Android strings.xml —Detalhes que não podemos esquecer
Crie um arquivo para cada idioma
É básico, mas é necessário falar
Quando você desenvolve um aplicativo, deseja que ele alcance o maio número de pessoas, e sabemos que nem todos falam português ou inglês ou alemão, temos pessoas de várias nacionalidades que tem seu próprio idioma. Desta maneira o aplicativo deve se adaptar a esses diferentes cenários.
Desta forma, no código java você terá que fazer condições, além disso o Android trabalha de forma diferente. O correto é criar dois arquivos de strings. Um em inglês e outro em português.
Não reutilize
Não use a mesma string para cenas diferentes
- Imagine que você tem um dialog de carregamento para as telas de Sign In e Sign Up. Ambas as telas tem o dialog de carregamento e você decidiu usar a mesma string — R.string.loading.
Até ai tudo bem. Porém, imagine que mais tarde você decidiu usar diferentes mensagens para cada tela. Desta forma você terá que fazer duas strings e modificar no código java. Se você estivesse criado duas strings diferentes desde do inicio, só precisaria mudar no strings.xml.
Organização
A organização em programação ajuda muito. E não é diferente no strings.xml
Uma dica que ajuda muito é separar as strings que pertencem à mesma tela via prefixo e comentário.
- Adicionar prefixo do nome de tela a cada string ajuda a reconhecer imediatamente a tela à qual a string atual pertence.
- O arquivo clean strings.xml ajuda a manter e traduzir facilmente strings para diferentes idiomas — tela após tela.
Criar um arquivo strings.xml separado para cada tela.
O Android permite criar um arquivo strings.xml para cada tela, por exemplo: login-strings.xml, profile-strings.xml. Mas normalmente, os aplicativos tem de 10–20 telas e criar um arquivo para cada tela deixaria tudo muito bagunçado.
Formato
Use sempre o Resources#getString(int id, Object… formatArgs) para formatar as strings
Nunca concatene sua string usando um operador +, porque em outros idiomas a ordem das palavras podem variar.
O jeito correto é usar Resources#getString(int id, Object… formatArgs).
Plurais
Use Resources#getQuantityString(int id,int quantity)
Nunca resolva os plurais via código java, porque idiomas diferentes têm regras diferentes para acordo gramatical com quantidade.
O correto é usar o Resources#getQuantityString(int id,int quantity)
Obrigado pela leitura! Espero que tenham gostado do artigo :) Se você conversar é só chamar no Twitter. Caso queira vê um pouco de código, segue no Github.