Locale::Po4a::Man(3pm) | Ferramentas Po4a | Locale::Po4a::Man(3pm) |
Locale::Po4a::Man - converte páginas do manual de/para ficheiros files
O objetivo do projeto po4a (PO para tudo) é facilitar traduções (e mais interessante, a manutenção das traduções) usando ferramentas gettext em áreas onde eles não eram esperados como documentação.
Locale::Po4a::Man é um módulo para ajudar na tradução de documentação em formato nroff (a linguagem das páginas do manual) em outras línguas [humana].
Este módulo tenta com bastante força tornar a vida do tradutor mais fácil. Para isso, o texto apresentado aos tradutores não é uma cópia literal do texto encontrado na página do manual. De fato, as partes mais cruas do formato nroff estão escondidos, por isso os tradutores não se podem atrapalhar com elas.
Parágrafos sem recuo são automaticamente re-envolvidos para o tradutor. Isto pode levar a uma diferença menor na saída gerada, uma vez que as regras de reenvolvimento usadas por groff não são muito claras.Por exemplo, dois espaçosdepois de um parêntese às vezes são preservados.
De qualquer forma, a diferença será apenas sobre a posição dos espaços extrano parágrafo envolto e, eu acho que vale a pena.
A primeira mudança é sobre as especificações de mudança de font. Em nroff, existem várias maneiras para especificar se uma determinada palavra deve ser escrita em pequeno, negrito ou itálico. No texto para traduzir, só há um caminho, emprestado do formato POD (Perl documentação on-line):
Observação: O rosto CW não está disponível para todos os dispositivos groff. Não é recomendado usá-lo. Ele é fornecido para sua conveniência.
Po4a automaticamente translitera alguns carateres para facilitar a tradução ou revisão da tradução. Aqui está a lista das transliterações:
Os tradutores podem forçar um hífen usando o roff glyph '\[hy]' nas suas traduções.
Para evitar essas transliterações, os tradutores podem inserir um caratere roff largura zero (ou seja, usando `\ &` or '\&' respectivamente).
Desde que estes carateres são utilizadas para delimitar partes sob modificação da font, você não os pode usar na íntegra. Use E<lt> e E<gt> em vez (como em POD, mais uma vez).
Estas são as opções particulares deste módulo:
Seleciona um rigoroso suporte do formato mdoc dizendo a po4a para não traduzir a secção 'NOME'. Páginas mdoc cuja secção 'NOME' é traduzida não irá gerar qualquer cabeçalho ou rodapé.
De acordo com a página groff_mdoc, as
secções NOME, SINOPSE e DESCRIÇÃO
são obrigatórias. Não existem problemas conhecidos
com a secção SINOPSE traduzida ou a secção
DESCRIÇÃO,
mas também pode especificar estas secções da
seguinte forma: -o mdoc=NAME,SYNOPSIS,DESCRIPTION Esta questão
mdoc também pode ser resolvida com uma adenda como esta:
Po4a-HEADER:mode=before;position=^.Dd
.TH DOCUMENT_TITLE 1 " Month day, year"OS " Section
Name"
As seguintes opções permitem especificar o comportamento de uma nova macro (definida com um pedido .de), ou duma macro não suportada por po4a. Tomam como argumento uma lista de macros separadas por vírgula. Por exemplo:
-o noarg=FO,OB,AR -o translate_joined=BA,ZQ,UX
Nota: se uma macro não é suportada pelo po4a e se você considerar que é uma macro roff padrão, deve enviá-la para a equipa de desenvolvimento po4a.
Nota: nenhum teste é feito para garantir que um comando End corresponde ao seu comando begin; qualquer comando termina no modo no_wrap. Se você tem uma macro begin (respectivamente End) que não tem End (respectivamente begin),pode especificar um existente End (como fi) ou begin (como nf) como uma contrapartida. Estas macros (e seus argumentos) não vão ser traduzidas.
Este módulo é ainda muito limitado e, sempre vai ser, porque não é um intérprete nroff real. Seria possível fazer um intérprete nroff real, permitir que os autores usarem todas as macros existentes, ou até mesmo para definir novas nas suas páginas, mas não quiséssemos. Seria muito difícil, e nós pensamos que não era necessário. Pensamos que se os autores das páginas de manual quiserem ver as suas produções traduzidas, devem ter de se adaptar a facilitar o trabalho dos tradutores.
Portanto, o analisador de manual implementado em po4a tem algumas limitações conhecidas que são e não estamos realmente inclinados a corrigir, e que constituirá algumas armadilhas que tem de evitar se quiser ver tradutores cuidarem da sua documentação.
nroff é uma linguagem de programação completa, com a definição de macro, condicionais e assim por diante. Uma vez que este analisador está totalmente caracterizado como intérprete nroff, irá falhar em páginas que utilizam estas instalações (há cerca de 200 tais páginas na minha caixa).
Existem ainda algumas macros que não são suportadas por po4a::man. É assim porque eu não encontrei qualquer documentação sobre elas. Aqui está a lista de macros sem suporte utilizadas na minha caixa. Note-se que esta lista não é exaustiva uma vez que o programa falha na primeira macro sem suporte que encontra. Se você tem alguma informação sobre algumas dessas macros, ficarei feliz em adicionar suporte para elas. Devido a estas macros, cerca de 250 páginas na minha caixa são inacessíveis para po4a::man.
.. ." .AT .b .bank .BE ..br .Bu .BUGS .BY .ce .dbmmanage .do .En .EP .EX .Fi .hw .i .Id .l .LO .mf .N .na .NF .nh .nl .Nm .ns .NXR .OPTIONS .PB .pp .PR .PRE .PU .REq .RH .rn .S< .sh .SI .splitfont .Sx .T .TF .The .TT .UC .ul .Vb .zZ
Às vezes, o autor sabe que algumas partes não são traduzíveis, e não devem ser extraídas por po4a. Por exemplo, uma opção pode aceitar um argumento other, e other também pode aparecer como o último item duma lista. No primeiro caso, other não deve ser traduzido. E, no segundo caso, other deve ser traduzido.
Em tal caso, o autor pode evitar po4a para extrair algumas sequências, usando algumas construções especiais groff:
.if !'po4a'hide' .B other
(isto vai exigir o -o groff_code = verbatimoption)
A nova macro também pode ser definida para automatizar
isto:
.de IR_untranslated
. IR \\$@
..
.IR_untranslated \-q ", " \-\-quiet
(isto vai exigir as opções -o groff_code =verbatim e -o untranslated=IR_untranslated; com esta construção, o .if !'po4a'hide' condicional não é estritamente necessário uma vez que po4a não irá analisar o interno da definição da macro)
ou utilizando um alias:
.als IR_untranslated IR
.IR_untranslated \-q ", " \-\-quiet
Isso vai exigir o -o untranslated=als,IR_untranslated option.
Para resumir esta secção, manter simples, e não tente ser inteligente a quanto da autoria suas páginas de manual. Muitas coisas são possíveis em nroff, e não suportadas por este analisador. Por exemplo, não tente mexer com \c para interromper o processamento de texto (como 40 páginas na minha caixa de 'a fazer'). Ou, seja certo a colocar os argumentos da macro na mesma linha em que a macro está. Eu sei que é válido em nroff, mas iria complicar muito o analisador para ser tratado.
Of course, another possibility is to use another format, more translator friendly (like POD using po4a::pod, or one of the XML family like SGML), but thanks to po4a::man it isn't needed anymore. That being said, if the source format of your documentation is POD, or XML, it may be clever to translate the source format and not this generated one. In most cases, po4a::man will detect generated pages and issue a warning. It will even refuse to process POD generated pages, because those pages are perfectly handled by po4a::pod, and because their nroff counterpart defines a lot of new macros I didn't want to write support for. On my box, 1432 of the 4323 pages are generated from POD and will be ignored by po4a::man.
In most cases, po4a::man will detect the problem and refuse to process the page, issuing an adapted message. In some rare cases, the program will complete without warning, but the output will be wrong. Such cases are called "bugs" ;) If you encounter such case, be sure to report this, along with a fix when possible…
Este módulo pode ser usado para a maioria das páginas de manual existentes.
Alguns testes são regularmente executado em máquinas Linux:
Locale::Po4a::Pod(3pm), Locale::Po4a::TransTractor(3pm), po4a(7)
Denis Barbier <barbier@linuxfr.org> Nicolas François <nicolas.francois@centraliens.net> Martin Quinson (mquinson#debian.org)
Copyright © 2002-2008 SPI, Inc.
Este programa é software livre, você pode redistribuí-lo e/ou modificá-lo sob os termos da GPL (consulte o ficheiro CÓPIA).
2018-12-09 | Ferramentas Po4a |