Na sexta feira publicamos uma
notícia sobre a proposta de Fabricio Vaccari Constanski de traduzir as mensagens de ajuda do kernel do Linux. Na seqüência dos comentários da notícia, outros leitores se interessaram pelo assunto, até que Manoel Pinho fez uma pergunta básica e importante: “
o kernel tem algum tipo de suporte à internacionalização do help ou de outras mensagens?” A resposta foi bem melhor do que se esperava, e também surgiu nos comentários do BR-Linux: não há suporte a internacionalização destas mensagens, mas o desenvolvedor brasileiro do kernel Arnaldo Carvalho de Melo criou o suporte necessário (permitindo o suporte a múltiplos idiomas - nas mensagens de ajuda, e não nos
printk) em pouco menos de 3 horas após saber da demanda, e já disponibilizou os
arquivos .po (cuidado, esta pode não ser a versão corrente. São 42.000+ linhas, hospedadas pelo leitor Roberto) para a tradução para o português brasileiro, que já estão sendo editados cooperativamente por alguns leitores e interessados, em um trabalho coordenado na
lista de discussão criada originalmente pelo Fabricio Constanski.
Arnaldo Carvalho de Melo, que é um
prestigiado desenvolvedor do kernel Linux, manifestou confiança de que o patch de internacionalização tem grande chance de ser aceito oficialmente, e pretende fazer a submissão inicial ao longo desta semana.
Veja abaixo um e-mail dele sintetizando a situação atual.
Segue reprodução do e-mail
-
“Date: Sun, 6 Mar 2005 23:58:38 -0300
From: Arnaldo Carvalho de Melo
To: roberto@---
Cc: kernel_ptbr@listas.cipsga.org.br, brain@---
Subject: [ATENÇÃO] novo pt_BR.po
Roberto,
Coloquei em:
http://linux-br.conectiva.com.br/~acme/kernel-i18n/pt_BR.po.bz2
o último pt_BR.po, já fiz o merge com as traduções que você disponibilizou
em sua página.
Este novo pt_BR.po não tem mensagens adicionais, mas tem uma nova
característica, a inclúsão de um "pseudo-arquivo" nos comentários acima de
cada msgstr, assim:
# sound/usb/Kconfig:18, SND_USB_USX2Y:00000
#: sound/usb/Kconfig:18
msgid ""
"Say Y here to include support for Tascam USB Audio/MIDI\n"
"interfaces or controllers US-122, US-224 and US-428.\n"
"\n"
"To compile this driver as a module, choose M here: the module\n"
"will be called snd-usb-usx2y.\n"
msgstr ""
o SND_USB_USX2Y:00000 é para associar o texto de helps à opção do kernel a
que o o help se refere, a idéia é usar uma função adicional para tentar
encontrar o help traduzido através da opção do kernel, assim diminuimos o
tamanho do arquivo compilado de traduções (o
/usr/share/locale/pt_BR/LC_MESSAGES/linux.mo), o 00000 no final é apenas
para o msgmerge não reclamar, assim ele pensa que é um arquivo:linux mesmo,
i.e. "enganamos" ele.
Assim durante todo o processo podemos usar as ferramentas GNU gettext
normalmente e tudo funciona, mas na versão final deveremos usar uma
ferramenta que vou escrever e que deverá ser usada antes do msgfmt, que
substituirá o msgid com o texto original por um msgid com o símbolo do
kernel a que o help se refere, seguido de um md5sum do texto original em
inglês, agora presente no msgid, ficaria mais ou menos assim no caso acima:
msgid "SND_USB_USX2Y-661df9ccaa99ff21274edde5b2de838c"
msgstr ""
"Tradução "
"desta opção "
"para pt_BR"
Nos fontes do menuconfig/xconfig/gconfig no caso das entradas de help eu
usarei um marcador diferente, o K_() e isto vai por sua vez chamar uma
funcão mais ou menos assim:
char *k_gettext(const char* kconfig_option, const char *help)
{
char *chave = strcat(kconfig_option, md5sum_str(help));
char *traducao = gettext(chave);
/* se não achamos a chave, paciência, por enquanto, talvez não
definitivamente, tente encontrar o texto original mesmo */
if (chave == NULL)
traducao = gettext(help);
return traducao;
}
#define N_(kconfig_option, help)
e no código ficaria mais ou menos assim (pseudocódio, a string na verdade
vem de um ponteiro, não aparece explicitamente assim):
rotinas_dos_kernel_config(N_("SND_USB_USX2Y", help-do-SND_USB_USX2Y));
Entendeu?
Espero durante esta semana terminar o que considero necessário para
uma primeira submissão para a lista desenvolvimento do Kernel, Linus e
Andrew, vamos ver o que eles falam... :-)
Abraços e continue o trabalho! E que venham mais voluntários!
- Arnaldo
PS.: Ah, esta idéia veio de uma conversa com um amigo meu, o Willy, que é o
mantenedor do porte do kernel Linux para a plataforma PA-RISC e trabalha
atualmente na HP, no Canadá :-)”
Sinceramente acredito que essa iniciativa irá beneficiar principalmente os países em desenvolvimento menores que o Brasil. Certamente a curva de aprendizado das funções do kernel será menor, se forem removidas ou reduzidas dificuldades, como o idioma.
De certa forma, mostra a importância de nosso país no processo de disseminação do Software Livre e neste caso, talvez uma conotação mais social.
Novamente, meus parabéns a todos os envolvidos neste projeto!
--
Micaelis