10 boas práticas de Localização

Localização e Internacionalização de Sistemas

 

O processo de localização visa adaptar um software ou um site para outro país ou região, incluindo tanto a tradução do idioma quanto a escolha de palavras e expressões culturais.

 

A internacionalização permite que um usuário possa escolher o idioma que julgar mais apropriado enquanto utiliza o software ou navega pelo site.

 

Tanto a localização quanto a internacionalização exigem em geral uma tradução de todo o conteúdo textual do sistema. Nesse artigo veremos quais são os pontos de atenção ao realizar esse processo.

 

As 10 Boas práticas de sistemas localizáveis

 

1. Sempre que possível utilize o suporte nativo da linguagem de programação para realizar o tratamento de idiomas. Java possui um mecanismo nativo de internacionalização. Caso a linguagem de programação utilizada não possua um tratamento nativo para múltiplos idiomas, experimente usar uma biblioteca de software livre, como a GetText (http://www.gnu.org/software/gettext)

 

2. Centralize todo o texto da aplicação em um só lugar. Uma boa prática é usar arquivos de configuração ou XMLs com os textos. Em Java são usados arquivos de propriedades (.properties) com a extensão que codifica o idioma (ex: en/US para inglês americano, pt/BR para português brasileiro, etc). Essa prática tem a vantagem de não exigir que o código seja recompilado ao incluir ou alterar um idioma suportado, além de facilitar o trabalho do tradutor.

 

3. Idiomas não-ocidentais, como japonês, chinês, hebreu ou árabe, possuem uma quantidade bem mais variada de caracteres, que não cabem em uma codificação ASCII, que usa 1 byte por caractere. O melhor é usar uma codificação Unicode, com 2 bytes por caractere. As Strings em Java já são Unicode por padrão.

 

4. Pelo mesmo motivo do item anterior, use fontes TrueType (TTF), pois elas já possuem suporte para outros idiomas. Criar uma fonte nova que suporte todos os caracteres de um outro idioma é algo muito trabalhoso.

 

5. Nunca inclua texto em imagens (GIFs, PNGs, JPEGs, etc), a não ser que seja estritamente necessário. Caso contrário, a cada tradução para um novo idioma, será necessário recriar as imagens com o novo texto.

 

6. É natural que o texto traduzido em outro idioma possua um tamanho diferente do texto original. Esteja preparado para reservar o espaço necessário para exibir o texto, ou alterar o tamanho da fonte de forma dinâmica, para evitar que o trabalho do tradutor seja limitado por essas restrições.

 

7. Alguns idiomas são lidos da direita para esquerda (árabe, hebreu...), ou de cima para baixo (alguns idiomas asiáticos). Se existir a mínima possibilidade desses idiomas serem suportados em algum momento, prepare a sua aplicação ou leiaute para lidar com esses casos.

 

8. Os teclados são diferentes ao redor do mundo. Evite depender muito do design dos teclados. Por exemplo, navegar em uma área usando as teclas W, A, S e D ao invés das teclas direcionais, costuma ser uma prática recorrente. Permita que o usuário possa configurar essas teclas livremente, pois o que faz sentido em um teclado QWERTY pode não fazer sentido em um AZERTY (francês), ou mesmo de um idioma ainda mais exótico que o inglês.

 

9. Funcionalidades da aplicação podem ser alteradas ao serem transpostas para um outro idioma. Os atalhos devem ser descritos em um arquivo de configuração a parte, pois Ctrl+S pode fazer sentido para a função “Salvar” em português ou inglês (Save...), mas não em espanhol (Guardar...). Outra funcionalidade que pode ser afetada pela alteração do idioma é a ordenação de registros, cujo critério pode variar dependendo do conjunto de caracteres.

 

10. Às vezes o texto a ser exibido possui um parâmetro variável. Por exemplo: “Foram atualizados 500 registros”, onde 500 é um parâmetro. Nesse caso, é uma boa prática usar um símbolo para realizar a substituição em tempo de execução: “Foram atualizados $1 registros”.  Considere também o tratamento do plural, caso exista apenas 1 registro. Esteja preparado para lidar com múltiplos parâmetros, como no exemplo: “Usuário joão atualizou 500 registros”, parametrizado como “Usuário $1 atualizou $2 registros”. Nesses casos é importante ser flexível o suficiente para que a variável seja colocada no local mais adequado na frase. Existem idiomas que obedecem a uma ordem SVO (sujeito-verbo-objeto), como o português, mas outros idiomas possuem ordens distintas – o alemão costuma colocar o verbo no final, SOV (sujeito-objeto-verbo), por exemplo. Nesse caso o tradutor deveria apenas alterar a ordem dos parâmetros $1 e $2 em relação à frase, quando for conveniente.

 

Em um próximo artigo, será detalhado o mecanismo de internacionalização da plataforma Java, e como aplicar algumas das boas práticas acima em um sistema desenvolvido nessa linguagem.

Comments