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:
- Christian Biere cbiere@users.sourceforge.net
- Thomas Schürger trancetip@users.sourceforge.net
- Murphy eqom14@users.sourceforge.net
- Daichi Kawahata daichi@xfce.org
- Stavros Giannouris stavrosg2002@freemail.gr
- Mike Massonnet mmassonnet@xfce.org
- Adicionou entradas sobre páginas web e documentação de po-doc
- Atualizou referências antigas de SVN para Git
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:
- Emacs com modo PO - Melhor modo para arquivos PO GNU gettext.
- Vim com po.vim - Um ftplugin para editar facilmente arquivos PO.
- Poedit - um editor de catálogos gettext multi-plataforma.
- Gtranslator - O programa de tradução do GNOME 2.x.
- KBabel - Um avançado e fácil de se usar, editor de arquivos PO.
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…)
- Uma explicação para o mecanismo de plural.
- Comentando com “
#
”.
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.
- Aqui estão os arquivos desktop que deveriam ser traduzidos:
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:
- Para o ramo 4.4
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.
- Mantenha a documentação (trabalho apra o mantenedor/desenvolvedor):
- Execute o script “
configure
” com a opção “--enable-xml2po
” - Atualize os arquivos POT e PO com “
make -C po-doc update-po
” - Atualize os arquivos XML com os arquivos PO recém-traduzidos usando “
make -C po-doc update-xml
”
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).
- Compile o DocBook para formato HTML (alguém que queira verificar os resultados)
- Execute o script “
configure
” com a opção “--enable-xsltproc
” - Execute “
make -C docs
” - O resultado estará compilado dentro de
docs/$o_docbook/$seu_locale/html/
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:
- Lista de discussão de traduções do Xfce xfce-i18n@xfce.org
Seu feedback será muito bem-vindo.
16. Apêndice
- O manual completo de GNU gettext:
- Padrão de códigos de países (ISO 3166):
- Padrão de códigos de idiomas (ISO 639):
- Especificação de entradas de desktop do Freedesktop.org:
- Translation Project:
- Estatísticas de traduções do Xfce: