.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "LOCALE::PO4A::SGML.3PM 1" .TH LOCALE::PO4A::SGML.3PM 1 2024-06-26 "perl v5.38.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NOMBRE .IX Header "NOMBRE" Locale::Po4a::Sgml \- Convierte documentos SGML desde/a ficheros PO .SH DESCRIPCIÓN .IX Header "DESCRIPCIÓN" El objetivo del proyecto po4a («PO for anything», PO para todo) es facilitar la traducción (y más interesante, el mantenimiento de las traducciones) usando las herramientas de gettext en ámbitos dónde no previstos, como la documentación. .PP Locale::Po4a::Sgml es un módulo que asiste en la traducción de documentación en formato SGML a otros lenguajes (humanos). .PP Este módulo usa \fBonsgmls\fR(1) para analizar los ficheros SGML. Asegúrese de que está instalado. Asegúrese también de que el DTD de los ficheros SGML están instalados en el sistema. .SH "OPCIONES ACEPTADAS POR ESTE MODULO" .IX Header "OPCIONES ACEPTADAS POR ESTE MODULO" .IP \fBdebug\fR 4 .IX Item "debug" Lista separada por espacios de palabras clave que indican qué categoría de mensajes de depuración adicionales deben mostrarse. Los valores posibles son: \f(CW\*(C`entidades\*(C'\fR, \f(CW\*(C`genérico\*(C'\fR, \f(CW\*(C`onsgml\*(C'\fR, \f(CW\*(C`refs\*(C'\fR y \f(CW\*(C`etiqueta\*(C'\fR. .IP \fBverbose\fR 4 .IX Item "verbose" Muestra más información sobre qué está pasando. .IP \fBtranslate\fR 4 .IX Item "translate" Lista separada por espacios de etiquetas adicionales (además de las proporcionadas por el DTD) cuyo contenido debe formar un msgid adicional, es decir, que debe traducirse. .IP \fBsection\fR 4 .IX Item "section" Lista separada por espacios de etiquetas adicionales (además de las proporcionadas por el DTD) que contienen otras etiquetas, algunas de ellas de la categoría \fBtranslate\fR. .IP \fBindent\fR 4 .IX Item "indent" Lista separada por espacios de etiquetas que aumentan el nivel de la sangría. Esto afectará a la identación en el documento resultante. .IP \fBverbatim\fR 4 .IX Item "verbatim" La organización del contenido de estas etiquetas no se debe cambiar. El párrafo no se justificará ni se añadirán espacios de sangrado ni saltos de línea por motivos estéticos. .IP \fBempty\fR 4 .IX Item "empty" Etiquetas que no necesitan cierre. .IP \fBignore\fR 4 .IX Item "ignore" Etiquetas ignoradas y consideradas como datos char planos por po4a. Es decir, pueden formar parte de un msgid. Por ejemplo, es un buen candidato para esta categoría ya que ponerlo en la sección \fBtranslate\fR crearía un msgids sólo con su contenido, (y normalmente no es una frase entera), lo cual es malo. .IP \fBattributes\fR 4 .IX Item "attributes" Una lista separada por espacios de los atributos que deben traducirse. Puede especificar los atributos por su nombre (por ejemplo, \f(CW\*(C`lang\*(C'\fR), pero también puede anteponerle una jerarquía de etiquetas, para especificar que este atributo sólo se traducirá cuando esté dentro de la etiqueta especificada. Por ejemplo: \f(CW\*(C`lang\*(C'\fR especifica que el atributo lang sólo se traducirá si está en una etiqueta \f(CW\*(C`\*(C'\fR, que está en una etiqueta \f(CW\*(C`\*(C'\fR. Los nombres de las etiquetas son en realidad expresiones regulares, así que también puedes escribir cosas como \f(CW\*(C`lang\*(C'\fR para traducir sólo atributos \f(CW\*(C`lang\*(C'\fR que estén en una etiqueta \f(CW\*(C`\*(C'\fR o en una etiqueta \f(CW\*(C` >>.\*(C'\fR .IP \fBqualify\fR 4 .IX Item "qualify" Una lista separada por espacios de atributos para los que la traducción debe calificarse por el nombre del atributo, es decir, el texto extraído para la transalación incluirá tanto el nombre del atributo como su valor. Por ejemplo, para una etiqueta como \f(CW\*(C`\*(C'\fR se presentará a los traductores la cadena \f(CW\*(C`lang_en="foo"\*(C'\fR. Tenga en cuenta que esto también añade automáticamente el atributo dado a la lista \fBattributes\fR. .IP \fBforce\fR 4 .IX Item "force" Proceder incluso si el DTD es desconocido o si \fBonsgmls\fR encuentra errores en el archivo de entrada. .IP \fBinclude-all\fR 4 .IX Item "include-all" Por defecto, los msgids que contienen una sola entidad (como \f(CW\*(C`&version;\*(C'\fR) se omiten para comodidad de los traductores. Activando esta opción se evita esta optimización. Puede ser útil si el documento contiene una construcción como \f(CW\*(C`Á\*(C'\fR, aunque dudo que tales cosas ocurran nunca... .IP \fBignore-inclusion\fR 4 .IX Item "ignore-inclusion" Lista separada por espacios de entidades que no se alinearán. Utilice esta opción con precaución: puede provocar que \fBonsgmls\fR (utilizado internamente) añada etiquetas y haga que el documento de salida no sea válido. .SH "ESTADO DE ESTE MODULO" .IX Header "ESTADO DE ESTE MODULO" El resultado es perfecto. Es decir, los documentos generados son exactamente iguales a los originales. Pero sigue habiendo algunos problemas: .IP \(bu 2 La salida de error de \fBonsgmls\fR es redirigida a /dev/null por defecto, lo cual es claramente malo. No sé cómo evitarlo. .Sp El problema es que tengo que "proteger" las inclusiones condicionales (es decir, el \f(CW\*(C`\*(C'\fR cosas) de \fBonsgmls\fR. Si no, \fBonsgmls\fR se las come, y no sé cómo restaurarlas en el documento final. Para evitarlo, los reescribo en \f(CW\*(C`{PO4A\-beg\-foo}\*(C'\fR y \f(CW\*(C`{PO4A\-end}\*(C'\fR. .Sp El problema con esto es que \f(CW\*(C`{PO4A\-end}\*(C'\fR y otros que añado no son válidos en el documento (pero no en una etiqueta

o similar). .Sp Si desea ver la salida \fBonsgmls\fR, sólo tiene que añadir lo siguiente a su línea de órdenes (o línea de configuración de po4a): .Sp .Vb 1 \& \-o debug=onsgmls .Ve .IP \(bu 2 Esto sólo funciona con DebianDoc y DocBook DTD. Añadir compatibilidad para un nuevo DTD debería ser muy fácil. El mecanismo es común para todos los DTD, sólo tiene que dar una lista de las etiquetas existentes y algunas de sus características. .Sp Estoy de acuerdo, esto necesita un poco más de documentación, pero aún se considera beta, y odio documentar cosas que probablemente cambiarán. .IP \(bu 2 Advertencia: la compatibilidad con DTD es aún experimental. No leí ningún manual de referencia para mirar la definición de cada etiqueta. Fui añadiendo definiciones de etiquetas al módulo hasta que funcionaba para varios documentos que encontré en la red. Si su documento utiliza más etiquetas que el mío, no funcionará. Pero tal y como he dicho, arreglar esto debe ser muy fácil. .Sp Sólo probé DocBook con SAG (System Administrator Guide, Guia del administrador de sistemas), pero este documento es muy grande, y debe usar la mayoría de las características específicas de DocBook. .Sp Para DebianDoc, he probado algunos de los manuales de DDP, pero no todos aún. .IP \(bu 2 En el caso de inclusión de ficheros, la cadena de referencia del mensaje del fichero PO (p.e., líneas como \f(CW\*(C`#: en/titletoc.sgml:9460\*(C'\fR) serán incorrectas. .Sp Esto se debe a que preprocesar el archivo para proteger la inclusión condicional (es decir, la \f(CW\*(C`\*(C'\fR cosas) y algunas entidades (como \f(CW\*(C`&versión;\*(C'\fR) de \fBonsgmls\fR porque quiero que verbatim al documento generado. Para ello, hago una copia temporal del archivo de entrada y hago todos los cambios que quiero a esto antes de pasarlo a \fBonsgmls\fR para el análisis sintáctico. .Sp Para que esto funcione, reemplazo las entidades que incluyen un fichero con el contenido del fichero dado (de forma que puedo proteger lo que convenga del subfichero también). Pero por ahora no se hace nada para corregir las referencias después (p. ej., nombre de fichero y número de línea). No estoy seguro de cuál es la mejor solución. .SH AUTORES .IX Header "AUTORES" Este módulo es una versión adaptada de sgmlspl (postprocesador SGML para los analizadores SGMLS y ONSGMLS) que hizo: .PP .Vb 1 \& Copyright © 1995 David Megginson .Ve .PP La adaptación a po4a la realizó: .PP .Vb 2 \& Denis Barbier \& Martin Quinson (mquinson#debian.org) .Ve .SH TRADUCCION .IX Header "TRADUCCION" .Vb 2 \& Jordi Vilalta \& Omar Campagne .Ve .SH "DERECHO DE COPIA Y LICENCIA" .IX Header "DERECHO DE COPIA Y LICENCIA" .Vb 2 \& Copyright © 1995 David Megginson . \& Copyright © 2002\-2005 SPI, Inc. .Ve .PP Este programa es software libre; puede redistribuirlo y/o modificarlo bajo los términos de la GPL v2.0 o posterior (consulte el archivo COPYING). .SH "POD ERRORS" .IX Header "POD ERRORS" Hey! \fBThe above document had some coding errors, which are explained below:\fR .IP "Around line 65:" 4 .IX Item "Around line 65:" Unterminated C<< ... >> sequence