Table of Contents

Breve Guia Sobre Tradução de Mensagens

0. Licença e Autores

Este documento é fornecido sob a Licença Pública Creative Commons 2.5, sendo baseado nas contribuições dos seguintes autores:

1. Introdução

Este é um breve resumo sobre a documentação do gettext. Veja o Apêndice, se esta informação não for suficiente para você.

2. Pegar os arquivos PO

Você pode pegar os últimos arquivos PO da plataforma Transifex, disponível em http://translations.xfce.org/. Vá para Idiomas, pegue seu idioma, então escolha a coleção que você quer traduzir, agora desça para a seção Download e clique no botão “Pegar zip” ou “Pegar tar.gz”.

Em relação à coleção, é recomendável ter tradução para a atual versão estável em um primeiro momento, na versão de desenvolvimento seriam mudados freqüentemente, a menos que tenham sido congelados pelo desenvolvedor.

3. Pegar o editor para editar o arquivo PO

Você pode usar um editor de texto Emacs com `po-mode', Vim com ftplugin `po.vim' oy um editor gráfico de arquivo PO como `poEdit (requer wxWidgets)', `gtranslator (requer GNOME)', `KBabel (requer KDE)'… Esses editores possuem recursos especiais para a edição de arquivos PO. Você pode usar um editor normal como Mousepad, Vi, etc. Claro, mas é altamente recomendado que se use um dos daqueles editores.

Aqui estão os links:

Se você pretende continuar como tradutor, você pode querer aprender a usar pelo menos uma das acima.

4. Fale com o tradutor anterior de seu idioma

Para evitar de gastar seu tempo com trabalho já em curso, é melhor contatar o tradutor no linha cabeçalho:

  Last-Translator: Último tradutor <foo@bar>

Se que o endereço não é mais usado ou você não conseguir contato com último tradutor, então favor enviar a sua mensagem para a lista de discussão de traduções do (xfce-i18n@xfce.org).

5. Prepare o arquivo PO

Para criar o arquivo PO de seu idioma, simplesmente digite,

$ msginit

no diretório de po alvo, de acordo com seu locale. Este comando cria lang.po, no qual as strings adquadas do cabeçalho são dadas automaticamente sem incomodar você. O novo arquivo PO criado, porém, pode não ter a codificação de caracteres (charset) UTF-8. Dependendo de seu locale, você posteriormente precisará converter este charset para UTF-8.

Nota: o comando msginit funciona somente se o diretório de po alvo tenha o arquivo .pot criado.

6. Traduza as mensagens

No arquivo PO, você encontrará algo como:

#: main.c:42
msgid "Hello world"
msgstr ""

Se você quisesse traduzir para Alemão, você teria que alterar a terceira linha para o seguinte:

msgstr "Hallo Welt"

Não toque na string em “msgid”

Se você encontrar erros de grafia ou algo parecido, esta string deve ser corrigida no arquivo fonte. Se você vir uma string com um “%” dentro, então deixe a parte com “%” do jeito que está e não altere a ordem dessas “palavras”. Também mantenha o caractere depois de “\” do jeito que está. Por exemplo:
msgid "%-8s are %d time faster than %s.\n"
msgstr "%-8s sind %d mal schneller als %s.\n"

\n” significa “newline”, com a qual a partir de uma linha será criada uma nova linha na saída, ou outro exemplo do Xfmedia:

msgid ""
"This is a printf-like format string controlling the display of the "
"playlist.  Xfmedia will replace the following symbols:\n"
"\t%p: Artist/Performer\n"
"\t%t: Track Title\n"
"\t%a: Album Name\n"
"\t%T: Track Number\n"
"\t%g: Genre\n"
"\t%y: Year\n"
"\t%f: Filename\n"
"\t%%: a percent sign"

neste caso, “\t” insere o espaço “tab” na saída. Note que na tradução, você deveria usar o “tab” ou “enter” reais, ao invés de inserir “\t” ou “\n”.

Você não tem que traduzir todas as mensagens. Se você não consegue ou não quiser traduzir uma mensagem, simplesmente deixe “msgstr ”“” como estiver. Não copie a string de msgid!

Algumas strings contêm um sumblinhado singular (Ex: “_Edit list…” de Xfdesktop). Neste caso, o sublinhado declara que a letra seguinte é uma tecla aceleradora. Neste exemplo, a combinação de teclas <Alt>+E ou, às vezes, <Ctrl>+E ativaria o elemento de interface gráfica associado com esta string. Você deveria usar um caractere apropriado como acelerador na tradução também. Basta acrescentar um sumblinhado ao caractere escolhido:

msgid "_Edit list..."
msgstr "_Liste bearbeiten..."

Se você alterar a tecla aceleradora, tente ter certeza de que a tecla escolhida não conflite com outra no mesmo escopo. Em casos raros, você pode querer descartar o sublinhado para que nenhum acelerador esteja disponível para o elemento de interface gráfica.

Ok, algumas vezes você vê mercações especiais, indicadores-de-formato em seu arquivo PO como no exemplo abaixo:

#: ../xfce4-about/info.c:262
#, fuzzy
msgid "About Xfce 4"
msgstr "O XFce 4"

Com o a marcação “fuzzy”, sua tradução nunca terá efeito. Provavelmente você deve estar se perguntando “Que raios é fuzzy ?” . Não se preocupe, pois quanto mais familiar você estiver com tradução sob mecanismo de gettext, mas você irá entender o que “fuzzy” significa. De qualquer forma, se você traduz uma string, exclua a linha do “fuzzy”:

#: ../xfce4-about/info.c:262
msgid "About Xfce 4"
msgstr "O XFce 4"

Agora, a string traduzida vai funcionar para o local específico. “Então, como eu deveria fazer no caso a seguir?”, você deve estar se perguntando:

#: ../thunar/thunar-properties-dialog.c:547
#, fuzzy, c-format
msgid "%s Info"
msgstr "%s Info"

Neste caso, “c-format” é um indicador-de-formato. Por exemplo, a string “%s Info“deve ser uma string no formato C e, como mencionado acima, você terá que manter ”%s” como está. Simplesmente remova “, fuzzy”:

#: ../thunar/thunar-properties-dialog.c:547
#, c-format
msgid "%s Info"
msgstr "%s Info"

(continua…)

FIXME

6.1 Contexto de Tradução

A interface gráfica normalmente usa palavras singulares ou combinação de palavras pequenas. Quando usado como título de um quadro, dois pontos é anexado após o inglês para evitar ambiguidade. Outra possibilidade para evitar ambiguidade especialmente em strings pequenas é o uso do caractere “|” como separador. Se o texto em inglês contiver este caracter, a parte anterior ao “|” pode conter um comentário para o tradutor e/ou simplesmente declarar um espaço de nome para que a palavra possa ser traduzida em um determinado sentido mesmo se a mesma palavra for usada com sentido diferente em outros lugares. Por exemplo (do Xfce4-panel):

msgid "tip|Info"
msgstr "Información"

Na string traduzida descarte tudo até o primeiro “|” e traduza todo o resto.

6.2 Mudança de ordem

Algumas vezes é necessário mudar a ordem dos c-formats. Para isso, vocÊ terá que multar o %<format> para %<position>$<format>.

msgid "Device %s has %s space left"
msgstr "%2$s space left on device %1$s"

7 Converta a saída para UTF-8 (se já não está codificada para UTF-8)

$ iconv -f CHARSET -t UTF-8 ${lang}.po > utf8.po
$ mv utf8.po ${lang}.po

Substitua CHARSET pelo que você usar. ex: se você é da Europa Oriental, provavelmente seria ISO-8859-1. Do contrário, veja o que echo $LC_CTYPE diz para você, e remova a parte até o . (ponto) . Por exemplo:

$ echo $LC_CTYPE
ja_JP.eucJP
$ iconv -f eucJP -t UTF-8 lang.po > utf8.po
$ mv utf8.po ${lang}.po

Se você usa Vim, você pode também pode converter linhas durante a tradução assim:

:,!iconv -f ISO-8859-1 -t UTF-8

Isso normalmente funciona mesmo se seu terminal não tiver suporte a codificação de caracteres UTF-8 definida.

8. Conferindo e Enviando o arquivo PO

Primeiro, verifique se o seu arquivo PO está válido:

$ msgfmt --check --check-accelerators=_ -o /dev/null ${lang}.po

Você deve receber nenhum aviso, mas se você recebeu algum, corrija de acordo com as mensagens de aviso retornadas. Depois da verificação, você pode enviar sua tradução para a plataforma Transifex do Xfce. Para obter uma conta com permissão para upload, vocÊ pode seguir as instruções da página wiki de traduções na seção Primeiros Passos.

Nota: Essa parte é tão importante que POR FAVOR não poste suas traduções para a lista a menos que você não receba aviso na verificação.

9. Atualizações do modelo

As mensagens podem ser alteradas de lançamento para lançamento e com aumento de funcionalidades, haverá mais mensagens que devem ser traduzidas. Portanto, tradução não é algo estático. A cada poucos meses haverá mais sentenças para serem traduzidas.

A parte seguinte trata dos mantenedores de projeto. Para atualizar os arquivos PO para refletir quaisquer alterações para strings traduzíveis nos arquivos fontes, requer código fonte completo no qual você deverá executar:

$ ./autogen.sh

Será necessário fazer isso no diretório de cada módulo no começo, para depois simplesmente atualizar seus arquivos:

  $ cd po
  $ make update-po

Isso vai rastrear os arquivos fonte por strings traduzíveis, vai recriar o arquivo “pacote.pot” e vai usar msgmerge para atualizar os arquivos PO de arquivo POT.

Algumas vezes, é necessária a atualização do POTFILES.in primeiro, quando há strings em novos arquivos fonte.

10. Arquivos Desktop (ramo 4.2 somente e precisa de código fonte completo)

Os arquivos desktop para o ramo 4.4 são traduzidos diretamente nos arquivos po. Você somente precisa seguir este procedimento para o ramo xfce 4.2.

As variáveis Name, GenericName, e Coment devem ser traduzidas. O formato é:

  Key[locale]=localestring

Por exemplo (do Xfcalendar):

  Name=Xfce Calendar
  [...]
  Name[he]=לוח שנה Xfce

Certifique-se que o arquivo se mantenha codificado em UTF-8, ordem de idioma deve ser alfabética.

Isso não é necessário se você estiver recebendo traduções para versão trunk de SVN, ao invés você tem que instalar um intltool decente. Se você estiver usando Emacs, “desktop-entry-mode” será útil para verificar a validade do arquivo.

  xfcalendar/branches/xfce_4_2/plugin/xfce-xfcalendar-settings.desktop
  xfcalendar/branches/xfce_4_2/xfcalendar.desktop
  xfce-mcs-manager/branches/xfce_4_2/xfce-setting-show/xfce-settings-manager.desktop
  xfce-mcs-plugins/branches/xfce_4_2/plugins/display_plugin/xfce-display-settings.desktop
  xfce-mcs-plugins/branches/xfce_4_2/plugins/keyboard_plugin/xfce-keyboard-settings.desktop
  xfce-mcs-plugins/branches/xfce_4_2/plugins/mouse_plugin/xfce-mouse-settings.desktop
  xfce-mcs-plugins/branches/xfce_4_2/plugins/ui_plugin/xfce-ui-settings.desktop
  xfce-utils/branches/xfce_4_2/gdm/xfce.desktop
  xfce-utils/branches/xfce_4_2/xftaskbar/plugin/xfce-taskbar-settings.desktop
  xfce4-appfinder/branches/xfce_4_2/src/xfce4-appfinder.desktop
  xfce4-iconbox/branches/xfce_4_2/settings/xfce-iconbox-settings.desktop
  xfce4-mixer/branches/xfce_4_2/settings/xfce-mixer-settings.desktop
  xfce4-panel/branches/xfce_4_2/settings/xfce-panel-settings.desktop
  xfce4-session/branches/xfce_4_2/settings/session/xfce-session-settings.desktop
  xfce4-session/branches/xfce_4_2/settings/splash/xfce-splash-settings.desktop
  xfdesktop/branches/xfce_4_2/menueditor/xfce-menueditor.desktop
  xfdesktop/branches/xfce_4_2/settings/xfce-backdrop-settings.desktop
  xffm/branches/xfce_4_2/plugin-mcs/xfce-filemanager-settings.desktop
  xffm/branches/xfce_4_2/src/Xfbook.desktop
  xffm/branches/xfce_4_2/src/Xfdiff.desktop
  xffm/branches/xfce_4_2/src/Xffm.desktop
  xffm/branches/xfce_4_2/src/Xffstab.desktop
  xffm/branches/xfce_4_2/src/Xfglob.desktop
  xffm/branches/xfce_4_2/src/Xfmime_edit.desktop
  xffm/branches/xfce_4_2/src/Xfsamba.desktop
  xffm/branches/xfce_4_2/src/Xftree.desktop
  xfprint/branches/xfce_4_2/mcs-plugin/xfce-xfprint-settings.desktop
  xfprint/branches/xfce_4_2/xfprint-manager/xfprint-manager.desktop
  xfprint/branches/xfce_4_2/xfprint/xfprint.desktop
  xfwm4/branches/xfce_4_2/mcs-plugin/xfce-wm-settings.desktop
  xfwm4/branches/xfce_4_2/mcs-plugin/xfce-workspaces-settings.desktop

11. Arquivos XML para menu desktop (precisa de código fonte completo)

As traduções do menu desktop são traduzidas diretamente nos arquivos po para o ramo de desenvolvimento (posterior ramo 4.4). Você somente precisa seguir este procedimento para os ramos 4.2 e 4.4.

Você pode querer localizar o menu desktop que aparece com botão direito no desktop. Seus arquivos são:

  xfdesktop/menu.xml.${lang}
  xfdesktop/modules/menu/xfce-registered-categories.xml.${lang}

Para traduzir para seu idioma, siga as instruções destes arquivos. Depois de terminadas traduções e instalação, o menu desktop será automaticamente localizado.

Nota: se você já tem instalado aqueles arquivos XML, mas gostaria de verirficar suas traduções “on-the-fly”, remova

  ${HOME}/.config/xfce4/desktop/menu.xml

Então, as novas traduções aparecerão.

12. Verificando suas traduções no atual estado

Com relação ao ramo de desenvolvimento, o módulo relevante deveria ser compilado e instalado. Isso somente se aplica aos bravos e aqueles que sabem o que fazer, instruções e informações deve ser encontradas em outro lugar.

Quanto ao ramo 4.4, e pressumindo que o tradutor tenha instalado, é uma questão de executar:

$ msgfmt -c -o ${lang}.mo ${lang}.po
$ su
# cp ${lang}.mo ${xfce-prefix}/share/locale/${lang}/LC_MESSAGES/${pacote}.mo

E reiniciar a aplicação.

13. Tradução da Documentação

As documentações estão traduzidas dentro dos diretórios po-doc, os quais contêm os arquivos PO e POT. Aqueles arquivos são atualizados pelo mantenedor da aplicação, e são formatados em DocBook.

Nota: precisa da ferramenta xml2po. Ela pode ser compilada a partir do CVS do GNOME ou instalado pela sua distribuição (verifique por um pacote poxml, gnome-doc-utils ou similar).

O que você tem que fazer como tradutor consiste em editar o arquivo PO de seu locale dentro do diretório po-doc. Se seu locale não existe ainda, execute msginit dentro de po-doc.

14. Tradução das Páginas Web

O linha de comando abaixo realiza checkout dos arquivos traduzíveis para as web pages. Isso vai criar uma árvore svn local, na qual você pode começar traduzindo para seu idioma o conteúdo da página web do Xfce.

 $ svn co http://svn.xfce.org/svn/www/www.xfce.org/trunk/i18n/ www

15. Feedback

Se você tiver comentários, ideias ou correções, use:

Seu feedback será muito bem-vindo.

16. Apêndice