PO4A-GETTEXTIZE.1P(1) User Contributed Perl Documentation PO4A-GETTEXTIZE.1P(1)

po4a-gettextize - Convierte un fichero original (y su traducción) a un fichero PO

po4a-gettextize -f fmt -m master.doc -l XX.doc -p XX.po

(XX.po es la salida, todos los otros son entrada)

po4a (PO para cualquier cosa) facilita el mantenimiento de la traducción de documentación utilizando las herramientas clásicas de gettext. La característica principal de po4a es que desacopla la traducción del contenido de la estructura del documento. Consulte la página po4a (7) para obtener una breve introducción a este proyecto.

El script po4a-gettextize le ayuda a convertir sus traducciones ya existentes a un flujo de trabajo basado en po4a. Esto solo debe hacerse una vez para salvar una traducción existente al convertir a po4a, no de forma regular tras la conversión de su proyecto. Este tedioso proceso se explica en detalle en la sección 'Convertir una traducción manual a po4a' más abajo.

Debe proporcionar tanto un archivo maestro (por ejemplo, la fuente en inglés) como un fichero traducido existente (por ejemplo, un intento de traducción anterior sin po4a). Si proporciona más de un archivo maestro o de traducción, se usarán en secuencia, pero puede ser más fácil gettextizar cada página o capítulo por separado y luego usar msgmerge para fusionar todos los archivos PO producidos. Como desee.

Si el documento original contiene caracteres no ASCII, el fichero PO generado estará en UTF-8. Si el documento maestro está completamente en ASCII, el PO generado utilizará la codificación del documento traducido de entrada.

El formato de la documentación que desea tratar. Use la opción --help-format para ver la lista de los formatos disponibles.
El fichero que contiene el documento original o principal a traducir. Puede usar esta opción varias veces si desea gettextizar varios documentos.
El juego de caracteres del fichero que contiene el documento a traducir.
El fichero que contiene el documento localizado (traducido). Si introdujo varios documentos originales, puede que desee introducir varios documentos localizados usando esta opción más de una vez.
El juego de caracteres del fichero que contiene la versión localizada del documento.
El fichero dónde se debería escribir el catálogo de mensajes. Si no se proporciona, el catálogo de mensajes se escribirá por la salida estándar.
Opción(es) adicionales a introducir a la extensión del formato. Consulte la documentación de cada extensión para más información acerca de las opciones aceptadas y su significado. Por ejemplo, puede pasar '-o tablecells' al intérprete AsciiDoc, mientras que el intérprete de texto aceptaría '-o tabs=split'.
Muestra un mensaje corto de ayuda.
Listado de formatos de documentación reconocidos por po4a.
Mantenga los archivos temporales maestro y localizado POT creados antes de la fusión. Esto puede ser útil para entender por qué estos archivos se desincronizan, dando lugar a problemas de gettextización
Muestra la versión del script y cierra.
Aumenta la cantidad de mensajes informativos del programa.
Devuelve por la salida información de depuración de fallos.
Define el destinatario de los informes de fallo en los msgid. Por omisión, los ficheros POT creados no tienen el campo «Report-Msgid-Bugs-To».
Define el titula de los derechos de reproducción en la cabecera del POT. El valor predefinido es «Free Software Foundation, Inc.»
Define el nombre del paquete en la cabecera del POT. El valor por omisión es «PACKAGE».
Define la versión del paquete en la cabecera del POT. El valor por omisión es «VERSION».

po4a-gettextize sincronizará los archivos maestro y localizado para extraer su contenido a un archivo PO. El contenido del archivo maestro está en msgid, mientras que el contenido del archivo localizado está en msgtr. Este proceso es algo frágil: la enésima cadena del archivo traducido se toma como la traducción de la enésima cadena del original.

La gettextización funciona mejor si consigue recuperar la versión exacta del documento original que se utilizó para la traducción. Aun así, si el traductor original modificó la estructura de los archivos, es posible que tenga que manipular tanto el archivo maestro como el localizado para alinear su estructura, por lo que se recomienda trabajar con copias de los archivos.

Internamente, cada intérprete po4a comunica el tipo sintáctico de cada cadena extraída. Esto es como la desincronización es detectada durante la gettextización. En el ejemplo mostrado abajo, es muy poco probable que la cuarta cadena de la traducción (de tipo 'capítulo') sea la traducción de la cuarta cadena del original (de tipo 'párrafo'). Es más probable que un parágrafo nuevo fuera añadido al original, o que dos parágrafos originales fueran combinados en la traducción.

  Original         Traducción
capítulo           capítulo
  párrafo            párrafo
  párrafo            párrafo
  párrafo          capítulo
capítulo             párrafo
  párrafo            párrafo

po4a-gettextize diagnosticará detalladamente cualquier desincronización de estructura. Cuando esto ocurre, debería editar manualmente los archivos para añadir párrafos simulados o retirar algún contenido aquí y allá hasta que la estructura de ambos documentos coincidan. Se dan algunos trucos en la siguiente sección para salvar la mayor parte posible de la traducción al hacerlo.

Si tiene la fortuna de tener una coincidencia perfecta entre las estructuras de los archivos sin hacer nada, crear un fichero PO correcto es una cuestión de segundos. Si no, pronto entenderá por qué este proceso tiene un nombre tan feo :) Aun así, la gettextización sigue siendo más rápida que traducirlo todo de nuevo. Yo gettexticé la traducción al francés de toda la documentación Perl en un día a pesar de los l<muchos> problemas de sincronización. Dada la cantidad de texto (2Mb de texto original), reiniciar la traducción sin salvar primero las traducciones antiguas hubiera requerido varios meses de trabajo. Además, este trabajo pesado es el precio que hay que pagar para obtener el confort de po4a. Una vez hecha la conversión, la sincronización entre documentos maestros y las traducciones siempre será completamente automática.

Tras una gettextización correcta, los documentos producidos deben comprobarse manualmente para detectar disparidades y errores silenciosos, como se explica a continuación.

Consejos y trucos para el proceso de gettextización

La gettextización se detiene en cuanto se detecta una desincronización. Cuando esto ocurre, es necesario editar los archivos tanto como sea necesario para realinear sus estructuras. po4a-gettextize es bastante verboso cuando las cosas van mal. Informa de las cadenas que no coinciden, sus posiciones en el texto, y el tipo de cada una de ellas. Además, el archivo PO generado hasta el momento se vuelca como gettextization.failed.po para su posterior inspección.

Aquí hay algunos trucos para ayudarle en este proceso tedioso y asegurarse de que salva lo máximo posible de la traducción anterior:

  • Retire todo el contenido adicional de la traducción, como la sección con los créditos de los traductores. Se debe añadir por separado a po4a como addendas (vea po4a(7)).
  • Si necesita editar los ficheros para alinear sus estructuras, es preferible editar la traducción si es posible. Ciertamente, si los cambios al original son demasiado intrusivos, las versiones antigua y nueva no serán coincidentes durante la primera ejecución de po4a después de la gettextización (vea más abajo). Cualquier traducción que no coincida será descartada de todas formas. Dicho esto, es recomendable editar el documento original si es demasiado difícil conseguir que la gettextización proceda de otra forma, incluso si esto significa que un párrafo de la traducción se descarte. Lo importante es obtener un fichero PO con el que comenzar.
  • No dude en eliminar cualquier contenido original que no existiese dentro de la versión traducida. Este contenido será reintroducido automáticamente después, cuando sincronice el fichero PO con el documento.
  • Probablemente debería informar al autor original de cualquier cambio estructural dentro de la traducción que parezca justificado. Si hay problemas con el documento original debería comunicarlo al autor. Arreglarlas en su traducción solo las soluciona a una parte de la comunidad. Y además, es imposible hacerlo así cuando se usa po4a ;) Pero probablemente quieras esperar al final de la conversión a po4a antes de cambiar los archivos originales.
  • A veces el contenido del párrafo encaja, pero no sus tipos. Arreglar eso depende más bien del formato. En POD y man, a menudo es culpa de que una de las líneas empieza con un espacio y la otra no. En estos formatos, este párrafo no se podría justificar y su tipo cambiaría. Simplemente elimine el espacio y ya está. También puede tratarse de un error tipográfico en el nombre de la etiqueta en XML.

    De manera parecida, dos párrafos se podrían fusionar en un POD cuando la línea de separación contiene algunos espacios, o cuando no hay una línea de separación entre la línea =item y el contenido del elemento («item»).

  • A veces, el mensaje de desincronización parece raro porque la traducción está emparejada con el párrafo original equivocado. Esto indica que hay un problema no detectado anteriormente en el proceso. Busque el punto de desincronización actual inspeccionando el archivo gettextization.failed.po, y repare el problema donde realmente está.
  • Otros problemas pueden provenir de cadenas duplicadas en el original o en la traducción. Las cadenas duplicadas se fusionan en archivos PO, con dos referencias. Esto constituye una dificultad para el algoritmo de gettextización, que es un simple emparejamiento uno a uno entre las msgids de los archivos maestro y localizado. Sin embargo, se cree que las versiones recientes de po4a tratan adecuadamente las cadenas duplicadas, por lo que debería informar de cualquier problema restante que pueda encontrar.

Cualquier archivo producido por po4a-gettextize debe ser revisado manualmente, incluso cuando el script termina con éxito. Debería hojear el fichero PO, asegurándose de que el msgid y el msgstr coinciden realmente. No es necesario asegurarse todavía de que la traducción es perfectamente correcta, ya que todas las entradas se marcan como fuzzies de todas formas. Solo necesita comprobar los problemas obvios de concordancia, porque las traducciones mal emparejadas serán desechadas en pasos posteriores, y usted quiere salvarlas.

Afortunadamente, este paso no requiere dominar las lenguas de destino, ya que solo se trata de reconocer elementos similares en cada msgid y su correspondiente msgstr. Como hablante de francés, inglés y algo de alemán, puedo hacer esto al menos para todas las lenguas europeas, aunque no sepa decir ni una palabra en la mayoría de ellas. A veces consigo detectar problemas de concordancia en lenguas no latinas fijándome en la longitud de las cadenas, las estructuras de las frases (¿coincide la cantidad de signos de interrogación?) y otras pistas, pero prefiero que sea otra persona quien revise esas lenguas.

Si detecta un desajuste, edite los archivos original y traducido como si po4a-gettextize informara de un error, e inténtelo de nuevo. Una vez que tenga un archivo PO decente para su traducción anterior, haga una copia de seguridad hasta que consiga que po4a funcione correctamente.

La forma más sencilla de configurar po4a es escribir un archivo de configuración po4a.conf, y usar el programa po4a integrado (po4a-updatepo y po4a-translate están obsoletos). Por favor, consulte la sección "FICHERO DE CONFIGURACIÓN" en la documentación de po4a(1) para más detalles.

Cuando po4a se ejecuta por primera vez, se utilizará la versión actual de los documentos maestros para actualizar los archivos PO que contienen las traducciones antiguas que rescató mediante la gettextización. Esto puede llevar bastante tiempo, porque muchos de los msgids de la gettextización no coinciden exactamente con los elementos del fichero POT construido a partir de los archivos maestros recientes. Esto obliga a gettext a buscar el más cercano utilizando un costoso algoritmo de proximidad de cadenas. Por ejemplo, la primera ejecución sobre la traducción al francés de la documentación de Perl (fichero PO de 5,5 MB) tardó unas 48 horas (sí, dos días) mientras que las siguientes sólo tardan segundos.

Tras esta primera ejecución, los archivos PO están listos para ser revisados por los traductores. Todas las entradas fueron marcadas como fuzzies en el archivo PO por po4a-gettextization, forzando su cuidadosa revisión antes de su uso. Los traductores deben tomar cada entrada para verificar que la traducción rescatada coincide realmente con el texto original actual, actualizar la traducción según sea necesario y eliminar los marcadores fuzzy.

Una vez que se hayan eliminado suficientes marcadores fuzzy, po4a empezará a generar los archivos de traducción en disco, y ya estará listo para pasar su flujo de trabajo de traducción a producción. Algunos proyectos encuentran útil usar Weblate para coordinar a traductores y mantenedores, pero eso está fuera del alcance de po4a.

VÉASE TAMBIÉN

po4a(1), po4a-normalize(1), po4a-translate(1), po4a-updatepo(1), po4a(7).

Denis Barbier <barbier@linuxfr.org>
Nicolas François <nicolas.francois@centraliens.net>
Martin Quinson (mquinson#debian.org)

Jordi Vilalta <jvprat@gmail.com>
Omar Campagne <ocampagne@gmail.com>

Copyright 2002-2023 por SPI, inc.

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).

2024-02-07 perl v5.38.1