2. Tradução de Software Livre
Existem varios papéis além do desenvolvedor
Testador (> conhecimento técnico, não precisa ser
programador)
Documentador (> conhecimento técnico, não
precisa ser programador)
Tradutor (nenhum conhecimento técnico, apenas
inglês e o seu idioma nativo)
4. Se não tiver...
Qual área de trabalho usas? GNOME? KDE?
XFCE? Comece por aí
Não gostou (ou usa Windows)? Usa o
LibreOffice? Qual é o teu browser? Ótimo :)
Ainda não gostou? Pense naquele programa
que foi custoso de achar e te quebrou o maior
galho
5. Já sei quem quero ajudar
Ótimo, entre em contato com os responsáveis
6. Entrando em contato
Tentar achar no site do projeto alguma idicação
para os tradutores
Se não existir, se inscreva na lista de
disussões e fale que quer traduzir
Se não houver lista, ache o e-mail do(s)
desenvolvedor(es) e avise-o(s) do interesse e
peça instruções
Não tem e-mail do(s) desenvolvedor(es)?
Chame a atenção dele
Comentando no blog que ele divulgou o projeto
Telepatia :-)
7. Traduzindo de verdade
Qualquer software livre que se preste usa
gettext
(Wikipedia) gettext é uma biblioteca do Projeto
GNU que faz a internacionalização de
softwares
Para o desenvolvedor não é problema:
printf(”Translate me.”);
printf(_(”Translate me.”));
Para os tradutores é a maior invenção do mundo
8. O arquivo .po
Ao término do desenvolvimento do software o
programador usará o gettext para gerar um
arquivo .po que conterá todas as frases que ele
usou a função _(). Exemplo do conteúdo de um
arquivo .po:
#: src/name.c:36
msgid "Translate me."
msgstr ””
9. O que fazemos? Traduzimos!
Nosso trabalho como tradutores é traduzir:
#: src/name.c:36
msgid "Translate me."
msgstr ”Traduza-me.”
10. Regras
Nunca alterar NADA que não comece com
msgstr
Sempre mantenha qualquer caractere(s)
diferente(s) da string original:
msgid "_applyn"
msgstr ”_aplicarn”
11. Quanto maior o projeto, mais fácil
Projetos maiores costumam ter FAQs para
tradutores, páginas com erros frequêntes e
mais pessoas para sanar as dúvidas
12. Automatização
Devo baixar os .po, traduzir e envia-lo para o
source do projeto?
Depende, em projetos pequenos talvez, pois
não haverá ninguém para validar tuas
traduções
Não precisa se meter no código fonte, envie
um e-mail para o programador com o .po
traduzido que ele fará o resto :-)
13. Projetos maiores, qual a infra?
Existem projetos de automatização
interessantes, o melhor deles é o Transifex
O Transifex é um site em que não precisamos
baixar nada, só logar, escolher o ”módulo” e
traduzir, tudo no browser
18. Já traduzi e submeti, e agora?
Se o projeto tiver um fluxo estabelecido (via
Transifex, lista de discussões, IRC, ou e-mail)
sua tradução será revisada por alguém e após
ser aprovada, será adicionada ao software
Se não houver fluxo estabelecido, mande a
tradução para o programador, ele adicionará ao
código imediatamente
19. Minha tradução não passou na
revisão, e agora?
Você não será expulso/chingado ou
menosprezado por isso
Não se preocupe, é errando que se aprende
Na dúvida olhe como os outros estão
traduzindo, se não for o suficiente, pergunte
Nos projetos grandes leia os FAQs, se for um
projeto pequeno e tu fores o único tradutor, vá
até um projeto grande e peça ajuda
20. E se não usarem o gettext?
Programador pode não conhecer o gettext e
usar alguma própria implementação para
internacionalização
Calma, as frases sempre devem estar em
algum lugar
Procure, se não achar, peça ao programador
21. Pode até ser em XML
<?xml version="1.0" encoding="UTF8"?>
<ressourceStrings>
<id_avm1file>Invalid AVM1 file!</id_avm1file>
<id_booklayout>Book layout</id_booklayout>
<id_close>Close</id_close>
<id_currentPage>Current page:</id_currentPage>
<id_currentZoom>Current zoom:</id_currentZoom>
<id_dimensions>Dimensions:</id_dimensions>
<id_docInfo>Document Informations</id_docInfo>
<id_filenotfound>File not found!</id_filenotfound>
<id_firstPage>First page</id_firstPage>
<id_fitToPage>Fit to page</id_fitToPage>
<id_lastPage>Last page</id_lastPage>
<id_monoPageLayout>Monopage layout</id_monoPageLayout>
<id_name>Name:</id_name>
<id_nextPage>Next page</id_nextPage>
<id_on>on</id_on>
<id_page>page</id_page>
<id_pixels>pixels</id_pixels>
<id_prevPage>Previous page</id_prevPage>
<id_stackLayout>Double stack layout</id_stackLayout>
<id_to>To</id_to>
<id_toFullScreen>Full screen</id_toFullScreen>
<id_toStandardSize>Standard size</id_toStandardSize>
<id_totalPages>Total pages:</id_totalPages>
<id_verticalListLayout>Vertical list layout</id_verticalListLayout>
<id_zoomMinus>Decrease zoom</id_zoomMinus>
<id_zoomPlus>Increase zoom</id_zoomPlus>
</ressourceStrings>