Tradução/Howto

Ir para: navegação, pesquisa


i18n

A internacionalização (processo denominado na linguagem geek como i18n porque a palavra em inglês tem 18 letras) se faz no Linux mediante os utilitários gettext (ver info gettext). Durante o desenvolvimento de um programa extraem-se as mensagens do código fonte original, gerando um arquivo 'mensagens.pot'. A partir desde, se cria um arquivo mensagens.po para cada idioma: por exemplo bootloader.pt_BR.po.: É este o arquivo que traduzimos. Durante a compilação, este arquivo é examinado e se gera um arquivo binário (.mo ou .gmo) que se instalará en algum local, tal como /usr/share/YaST2/locale/pt_BR/LC_MESSAGES/bootloader.mo. Durante a execução, o programa carregará o arquivo de mensagens, substituindo o texto original em inglês pelo texto traduzido (se o encontrar).

Mais informações: Trabalho de Localização do openSUSE com Arquivos PO - em inglês
Digite info gettext ou o equivalente no Konqueror.

Traduzindo

Usamos programas como o emacs, poEdit o Kbabel para fazer nossa parte do trabalho; sobretudo os dois últimos são programas que automatizam alguma parte do mesmo e que em algumas ocasiões podem dar problemas. Também programas como o "mc" ou o editor "mcedit" podem servir.

Os arquivos .po

O texto a traduzir vem em arquivos de extensão .po, divididos em mensagens com este formato aproximado:

#. translators: help for 'help' option on command line
#: library/commandline/src/CommandLine.ycp:34
msgid "Print the help for this module"
msgstr "Mostrar a ajuda para este módulo"

O campo msgid é o original em inglês e não se pode mexer, mesmo estando errado (é necessário o preenchimento de um bug para isto). É gerado automaticamente pelas ferramentas gettext a partir de um arquivo .pot. O campo msgstr marca a tradução. Os # são os comentários e marcas.

Marcas nas mensagens

O texto nos arquivos .po podem ter várias marcas de comentários, que são:

  1. #: Reference (gerado pelo gettext, não mexer) marca a fonte, de onde vem cada linha (string).
  2. #. Extracted comment (gerado pelo gettext, não mexer). São notas do programador para o tradutor.
  3. #, Flag, gerado pelo programa de tradução para suas próprias marcas, como fuzzy.
  4. # Comentários do tradutor: os únicos que podemos criar impunemente. :-P

O que é uma mensagem marcada como fuzzy

São mensagens cuja parte em inglês sofreu ligeiras modificações desde a versão anterior e se marcam assim para as anular sem perder a tradução como um todo; enquanto não for revisado, o programa mostrará essa mensagem em inglês. Também se marcam assim as mensagens traduzidas automaticamente.

Aceleradores

Algumas vezes o texto em inglês contém letras precedidas pelo símbolo &, sobretudo nos textos dos menus. Este símbolo marca a letra que corresponde à tecla "aceleradora", a que serve para acessar rapidamente o menu sem navegar por ele.

Deve-se marcar igualmente outra letra no menu traduzido, tendo em conta que o mesmo menu não tenha nenhuma outra entrada com a mesma letra marcada.

O dífícil é saber quais são todas as entradas do mesmo menu, sem poder executar o programa.

Plural

Em alguns casos a mensagem em inglês vem dividida em versões singular e plural; deve-se estar atento e gerar também estas traduções, e que sejam consistentes. E dar graças, porque existem idiomas com quatro ou cinco formas plurais :-p

Marcas de variáveis

As mensagens podem conter cadeias como %i, que são trocadas na execução do programa pelo conteúdo formatado de uma variável. É crucial manter o mesmo número e tipo de variável do original, ou o programa pode travar. A maioria das vezes os erros serão detectados a tempo automaticamente antes de se aceitar o arquivo, mas não se pode garantir nada.

Marcas de formato

O texto pode conter marcas de formato como <b>negrito</b> que também se deve respeitar.

Outros erros

Existem inúmeros erros que podem ser cometidos na tradução e que programas como o kbabel detectam automaticamente. Por exemplo, se o original em inglês termina em ".", será detectado o erro se a tradução terminar em "palavra" ou "palavra. ". Deve-se estar atento à coisas como a existência de retornos de linha forçados (\n). Se é usada uma ferramenta que permita a verificação do arquivo, é importante perder um tempo antes de dar por terminado o arquivo e verificá-lo para evitar possíveis bugzillas.