LOCALE::PO4A::SGML.3PM(1) User Contributed Perl Documentation NOME Locale::Po4a::Sgml - converte documentos SGML de/para ficheiros PO DESCRICAO O objetivo do projeto po4a (PO for anything: PO para qualquer coisa) e facilitar traducoes (e o mais interessante, a manutencao das traducoes) a usar as ferramentas do gettext em areas em que nao se esperava, como na documentacao. Locale::Po4a::Sgml e um modulo para ajudar a traducao da documentacao no formato SGML em outros idiomas [humanos]. Este modulo usa onsgmls(1) para analisar os ficheiros SGML. Certifique-se de que e instalado. Certifique-se tambem de que o DTD dos ficheiros SGML esta instalado no sistema. OPCOES ACEITES POR ESTE MODULO debug Lista de palavras-chave separadas por espacos que indicam qual categoria de mensagens de depuracao extras deve ser mostrada. Os valores possiveis sao: "entities", "generic", "onsgml", "refs" e "tag". verbose Da mais informacoes sobre o que esta a acontecer. translate Lista separada por espacos das marcacoes extras (alem daquelas fornecidas por DTD) cujo conteudo deveria formar um msgid extra, isto e, deveria ser traduzido. section Lista separada por espacos das marcacoes extras (alem daquelas fornecidas por DTD) contendo outras marcacoes, algumas delas sendo da categoria translate. indent Lista separada por espacos de marcacoes que aumentam o nivel de indentacao. Isso afetara a indentacao no documento resultante. verbatim A apresentacao dentro dessas marcas nao deve ser alterada. Este paragrafo nao vai ficar envolvido e nao ha espaco de recuo adicional ou nova linha sera adicionada para finalidade estetica. empty Etiquetas que nao precisam ser fechadas. ignore Etiquetas ignoradas e consideradas como simples dados de caracteres pelo po4a. Isso quer dizer que elas podem ser parte de um identificador de mensagem. Por exemplo, e um bom candidato para esta categoria pois po-lo na seccao translate criaria identificadores de mensagens com apenas o seu conteudo, (e geralmente nao sao frases inteiras), o que e mau. attributes Uma lista separada por espacos de atributos que precisam ser traduzidos. Pode especificar os atributos pelos seus nomes (por exemplo, "lang"), mas tambem pode prefixa-la com uma hierarquia de etiquetas, para especificar que este atributo so sera traduzido quando estiver na etiqueta especificada. Por exemplo: "lang" especifica que o atributo lang so sera traduzido se ele estiver numa etiqueta "", que esta numa etiqueta "". Os nomes de etiquetas sao, na verdade, expressoes regulares, de forma que tambem pode escrever coisas como "lang" para traduzir apenas atributos "lang" que estao numa etiqueta "" ou uma etiqueta "". qualify Uma lista separada por espacos de atributos para os quais a traducao deve ser qualificada pelo nome do atributo, isto e, o texto extraido para a traducao incluira o nome e o valor do atributo. Por exemplo, para uma etiqueta como "" os tradutores receberao a cadeia "lang_en="foo"". Observe que isto tambem adiciona automaticamente o atributo fornecido a lista attributes. force Continua mesmo na eventualidade do DTD ser desconhecido ou se onsgmls encontrar erros no ficheiro de entrada. include-all Por predefinicao, msgids que contenham apenas uma entidade (como "&version;") sao ignorados para o conforto dos tradutores. Ao ativar esta opcao previne-se esta otimizacao. Ela pode ser util se a documentacao conter uma construcao como "Á", mesmo duvidando que este tipo de coisa venha a acontecer... ignore-inclusion Lista separada por espacos de entidades que nao serao embutidas. Use esta opcao com cuidado: ela pode levar o onsgmls (usado internamente) a adicionar etiquetas e invalidar o documento resultante. ESTADO DESTE MODULO O resultado e perfeito. Isto e, os documentos gerados sao exatamente os mesmos que os originais. Mas ainda ha alguns problemas: o A saida de erro do onsgmls e redirecionada para /dev/null por predefinicao, o que obviamente e ruim. Nao sei como evitar isso. O problema e que tenho que "proteger" as inclusoes condicionais (i.e. as "") do onsgmls. Caso contrario, onsgmls devora-as e nao sei como restaura-las no documento final. Para evitar isso, reescrevo-as para "{PO4A-beg-foo}" e "{PO4A-end}". O problema com isso e que o "{PO4A-end}" e outros que acrescento, sao invalidos no documento (nao numa etiqueta

ou semelhante). Se quiser ver a saida do onsgmls, adicione o seguinte a sua linha de comandos (ou linha de configuracao po4a): -o debug=onsgmls o Ele funciona apenas com o DebianDoc e DocBook DTD. Adicionar suporte para um novo DTD deve ser muito facil. O mecanismo e o mesmo para cada DTD, so tem que dar uma lista das etiquetas existentes e algumas das suas caracteristicas. Concordo. apenas necessita mais documentacao, no entanto pode ser considerado como beta e detesto conteudos de documentos que podem ainda ser sujeitos a alteracoes. o Aviso, o suporte para DTDs e bastante experimental. Nao li nenhum manual de referencia para encontrar a definicao de cada etiqueta. Adicionei a definicao de etiqueta para o modulo, ate que funciona para alguns documentos que eu encontrei na Internet. Se o documento usar mais etiquetas do que as minhas, nao vai funcionar. Mas como eu disse acima, reparar isto deve ser muito facil. Testei DocBook contra o SAG (Guia do Administrador do Sistema), mas tambem este documento e muito grande e deve usar mais especificidades do DocBook. Para DebianDoc, testei alguns dos manuais da DDP, mas nao todos ainda. o Em caso de inclusao de ficheiros, a cadeia de referencia de mensagens em ficheiros PO (ou seja, linhas como "#: en/titletoc.sgml:9460") vai estar errada. Isto porque eu pre-processei o ficheiro para proteger a inclusao condicional (i.e. aqueles "") e algumas entidades (como "&version;") do onsgmls porque quero eles verbatim no documento gerado. Para isto, faco uma copia temporaria do ficheiro de entrada e faco todas as alteracoes que quero nele antes de passa-lo para o onsgmls para analise. Assim ele funciona, substitui as entidades que pedem a inclusao de ficheiros pelo conteudo do ficheiro de dados (para que possa proteger tambem o que precisa de estar num sub-ficheiro tambem). Mas nada se fez ate agora para corrigir as referencias (ou seja o nome do ficheiro e o numero da linha) mais tarde. Nao tenho certeza qual e a melhor coisa a fazer. AUTORES Este modulo e uma versao adaptada do 'sgmlspl' (pos-processador SGML para os analisadores SGMLS e ONSGMLS) que foi: Copyright (C) 1995 David Megginson A adaptacao para po4a foi feita por: Denis Barbier Martin Quinson (mquinson#debian.org) DIREITOS DE AUTOR E LICENCA Copyright (C) 1995 David Megginson . Copyright (C) 2002-2005 SPI, Inc. Este programa e um software livre; pode redistribui-lo e/ou modifica-lo sob os termos da GPL v2.0 ou posterior (veja o ficheiro COPYING). perl v5.42.0 2025-11-22 LOCALE::PO4A::SGML.3PM(1)