Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais] ·  Efetividade ·  Linux in Brazil ·  Floripa  

Tradução das mensagens do help do kernel gera projeto de internacionalização

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á :-)”



Comentários dos leitores

Os comentários abaixo são responsabilidade de seus autores e não são revisados ou aprovados pelo BR-Linux. Consulte os Termos de uso para informações adicionais. Esta notícia foi arquivada, não será possível incluir novos comentários.
Comentário de Micaelis
Boa iniciativa!: Realmente uma boa iniciativa! Muitas das mensagens de erro agora serão bem mais claras. Por mais que tenhamos desenvoltura na língua inglesa, nos momentos de aperto reduzir uma tarefa pode ser muito útil! ;D

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
Comentário de brain
Mensagens de erro não serão traduzidas: Micaelis, as mensagens de erro impressas pelo kernel durante sua execução (printk) não serão internacionalizadas nem traduzidas. A tradução é das demais mensagens.
Comentário de ferdam
No topico original, eu postei: No topico original, eu postei minha preocupacao quanto a volatilidade dos helps, respondido pelo Arnaldo com uma solucao utilizando uma palavra-chave contendo a "version" em questao.
OK! Isso deve resolver...creio eu, em parte. Explico (ou pergunto) :
Saindo uma nova versao do kernel, digamos, 2.6.12, sera feita a revisao help a help para saber se houveram alteracoes ou novidades e corrigi-las e/ou implementa-las ?
Pergunto isso, pois a quantidade de trabalho me parece enorme, ou eu estou enganado e este processo é mais facil do que eu imagino ?
Nao postei este comentario la, para nao causar ruido nas conversacoes.
Abraços,
Fernando
Comentário de Arnaldo Carvalho de Melo
volatilidade: Fernando, isto é resolvido usando as ferramentas GNU gettext e a ferramenta kxgettext, que escrevi e deverá ser incorporada no kernel, bastará:

make update-po-config

e um novo arquivo scritps/kconfig/linux.pot será gerado, este, por sua vez, deverá ser usado com a ferramenta msgmerge, do GNU gettext, para fazer o "merge" entre o que existe e os "novos" textos, a partir dai é usar o kbabel, que vem com o KDE, e ele indicará as mensagens novas ou modificadas.
Comentário de Alejandro Flores
Tradução !: Amigos,

No começo do ano passado começamos um projeto de tradução das mensagens do Kernel para pt_BR, a partir da idéia do amigo Rodrigo Ramos. Porém outras demandas apareceram e o projeto ficou meio de lado. Estavamos até pensando em quando iriamos colocar o projeto disponível para a comunidade, quando vi a materia no BR-Linux !
Temos um documento hoje com 193 páginas (aproximadamente 4500 linhas) de textos de help traduzidos e gostaria de saber como poderíamos juntar os esforços.

Abraço!
Alejandro Flores

Comentário de ferdam
OK! Arnaldo, entao era mais f: OK! Arnaldo, entao era mais facil do que eu imaginava...
Obrigado
Abraços,
Fernando
Comentário de Arnaldo Carvalho de Melo
Conversa com Andrew Morton, mantenedor da versão 2.6 do kernel: [04:30] *acme* here?
[05:27] *akpm* yup
[05:28] *acme* mmkay sir, take a look at this: http://bazar2.conectiva.com.br/~acme/kernel-i18n/kernel-pt_BR.png, tiny patch, doesn't touch any printks or anything outside of scripts/kconfig/
[05:29] *acme* some guys here in .br announced that they would be translating all this stuff, so I thought about doing the "right thing" 8)
[05:31] *acme* makes it easier for people that doesn't have english skills to tinker with the kernel options, augmenting the user base, hopefully in a beneficial way for the kernel testing effort, by using friends that have english skills to forward the problems/results to relevant developers/mailing lists
[05:32] *akpm* how on earth can you do that with a "tiny patch"?
[05:32] *acme* hey, take a look at this: http://bazar2.conectiva.com.br/~acme/kernel-i18n/Kconfig-i18n-2.6.patch
[05:33] *acme* its the patch sans the tool needed to extract the Kconfig strings/help texts into a GNU gettext potfile, that is here: http://bazar2.conectiva.com.br/~acme/kernel-i18n/kxgettext.c
[05:33] *acme* and no, I don't think having the translations together with the kernel sources is a requirement
[05:33] *akpm* ok.
[05:33] *akpm* Does it work in xconfig?
[05:33] *acme* it will
[05:33] *akpm* heh
[05:33] *acme* for now its only on menuconfig, but it is easy to have it in xconfig and gconfig
[05:34] *acme* translations would be made available thru kernel.org
[05:34] *acme* separate files per language
[05:35] *acme* I don't have a firm plan on how to ease fetching the translation files, but having something like "would you like to have the config process in your language?" at make *config start could be an option
[05:36] *acme* it would check if the translation isn't already on the user's harddisk before asking such question, or checking some file that would say 'no, I don't want such thing' on the users directory, not to get in the way of power users/developers
[05:37] *acme* sure this doesn't get in the way of bug reporting, as it doesn't touch any printk in any way
[05:41] *akpm* My only concern would be that Linus may get huffy and shoot it all down. Dunno.
[05:41] *acme* well, we'll only know when I submit this thing 8)
[05:42] *akpm* It'd be a shame to do all that work...
[05:42] *acme* I'm just talking with some people to see what they think
[05:42] *acme* so far nobody said this is something stupid
[05:42] *akpm* ok
[05:42] *acme* and if he vetoes this thing, no problem the resulting work goes to some sort of web page
[05:42] *acme* but I really think that this is something that will augment the tester base
[05:43] *acme* would you veto such thing?
[05:43] *akpm* nope
[05:43] *acme* ok, good news 8)
[05:43] *akpm* want me to ping linus?
[05:44] *acme* if you want, just copy and paste this discussion and add your comments, I'd appreciate
[05:45] *acme* can I pass this discussion to the interested parties so that they know the current status of "would-this-be-accepted-by-the-powers-that-be"? :-)
[05:46] *akpm* sure
[05:47] *acme* it is a public brazilian portuguese forum, any problem?
[05:47] *akpm* go wild
[05:47] *acme* thanks!
[05:47] *acme* people will be happy to be part of the process
[05:48] *acme* ok, thanks for your comments
[05:49] *acme* we'll be waiting for Linus comments
[05:49] *akpm* np.
[05:49] *akpm* yup.
Comentário de Arnaldo Carvalho de Melo
Último patch: suporte a gconfig e xconfig: Está no lugar de sempre: Kconfig-i18n-2.6.patch.

Agora os comandos

make xconfig -> interface QT
make gconfig -> interface GTK+

Estão parcialmente internacionalizados.
Comentário de Arnaldo Carvalho de Melo
Último patch: suporte a gconfig e xconfig (Complemento): Este patch já está em um formato próximo do que vou submeter, para usá-lo:

1. use fontes recentes do kernel, 2.6.11 parece ser ok
2. se descompactou em /usr/src/linux, aplique o patch assim:

cd /usr/src/linux
patch -p1 < ~/Kconfig-i18n-2.6.patch

3. baixe o pt_BR.po mantido pelo Roberto, em http://www.eletronica.org/linux/pt_BR.po.bz2

4. descompacte-o e em seguida use o msgfmt para instalar as traduções, como root:

bunzip2 pt_BR.po.bz2
msgfmt pt_BR.po -o /usr/share/locale/pt_BR/LC_MESSAGES/linux.mo

5. use um destes comandos para configurar o kernel em pt_BR (parcial):

make menuconfig

ou

make xconfig

ou

make gconfig

6. envie sugestões, correções, etc para a lista em http://listas.cipsga.org.br/cgi-bin/mailman/listinfo/kernel_ptbr.

Comentário de roberto
Beleza ;) : Beleza ;)

Esses eu só vou usar mais tarde... Assim que eu adiantar as traduções de hoje, jogo o pot no mesmo lugar.

sds,
Roberto Alcântara
Comentário de Leonardo S.R.
Sistemas online de tradução colaborativa: Por que não usar um dos sistemas de tradução colaborativa que tem na rede?
https://launchpad.ubuntu.com/rosetta ;
http://www.irmateam.com/.
Comentário de roberto
Leonardo, creio que seja uma: Leonardo, creio que seja uma boa idéia, desde que o número de colaboradores justifique...
Comentário de Micaelis
Andando rápido: Bom ver que as coisas estão andando rápido. Fica nossa torcida para que o Linus não vete esta inclusão no kernel! ;D

De qq forma, se ele vetar, acho q vai se tornar um patch como o supermount. Não faz parte do kernel oficial ( me corrijam se eu estou enganado. Até o 2.6.7, não fazia ), mas a maioria das pessoas instala! ;D

Devo fazer um upgrade no meu kernel e vou testar esse patch. Qq coisa, dou o meu feedback aqui.

Augusto, obrigado pela nota. Achei que seria um patch mais abrangente, mas acho que se fosse o caso, certamente seria vetado. Mas um patch para as mensagens do menuconfig/xconfig são ainda mais úteis para os iniciantes.

[],s a todos os envolvidos no projeto!

--
Micaelis
Comentário de Arnaldo Carvalho de Melo
Consegui carta branca do Linus :-): Vou arrumar mais algumas coisas nos próximos dias (tenho uma série de tarefas em projetos de clientes) e submeter, o Linus respondeu, vai aceitar.
Comentário de roberto
Pessoal,agora é com a gente.: Pessoal,agora é com a gente...

Que venham os voluntários!!! :-)
Comentário de vmedina
Requisitos: E quais seriam os requisitos para tanto?

[]s!

Vinícius Medina
Usuário Linux 383765
É usuário de Linux? Mostre a sua cara!
Comentário de roberto
Humm.. Basta ter um conhecime: Humm.. Basta ter um conhecimento bom da área que você escolher para traduzir, além do inglês, claro... :)
Comentário de Carlos Daniel de Mattos Mercer
Interessados em colaborar: Acessem o Wiki do Projeto Kernel_ptbr
BR-Linux.org
Linux® levado a sério desde 1996. Notícias, dicas e tutoriais em bom português sobre Linux e Código Aberto. "A página sobre software livre mais procurada no Brasil", segundo a Revista Isto É.
Expediente
Sobre o BR-Linux
Enviar notícia ou release
Contato, Termos de uso
FAQ, Newsletter, RSS
Banners e selos
Anunciar no BR-Linux
BR-Linux apóia
LinuxSecurity, Tempo Real
Suporte Livre, Drupal
Verdade Absoluta
Pandemonium
Efetividade, Floripa.net
sites da comunidade
Ajuda
Moderação
Flames: não responda!
Publicar seu texto
Computador para Todos
Notícias pré-2004
Tutoriais, HCL pré-2004