PO4A-GETTEXTIZE.1P(1) User Contributed Perl Documentation NOMBRE po4a-gettextize - Convierte un fichero original (y su traduccion) a un fichero PO SINOPSIS po4a-gettextize -f fmt -m master.doc -l XX.doc -p XX.po (XX.po es la salida, todos los otros son entrada) DESCRIPCION po4a (PO para cualquier cosa) facilita el mantenimiento de la traduccion de documentacion utilizando las herramientas clasicas de gettext. La caracteristica principal de po4a es que desacopla la traduccion del contenido de la estructura del documento. Consulte la pagina po4a (7) para obtener una breve introduccion 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 traduccion existente al convertir a po4a, no de forma regular tras la conversion de su proyecto. Este tedioso proceso se explica en detalle en la seccion 'Convertir una traduccion manual a po4a' mas abajo. Debe proporcionar tanto un archivo maestro (por ejemplo, la fuente en ingles) como un fichero traducido existente (por ejemplo, un intento de traduccion anterior sin po4a). Si proporciona mas de un archivo maestro o de traduccion, se usaran en secuencia, pero puede ser mas facil gettextizar cada pagina o capitulo 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 estara en UTF-8. Si el documento maestro esta completamente en ASCII, el PO generado utilizara la codificacion del documento traducido de entrada. OPCIONES -f, --format El formato de la documentacion que desea tratar. Use la opcion --help-format para ver la lista de los formatos disponibles. -m, --master El fichero que contiene el documento original o principal a traducir. Puede usar esta opcion varias veces si desea gettextizar varios documentos. -M, --master-charset El juego de caracteres del fichero que contiene el documento a traducir. -l, --localized El fichero que contiene el documento localizado (traducido). Si introdujo varios documentos originales, puede que desee introducir varios documentos localizados usando esta opcion mas de una vez. -L, --localized-charset El juego de caracteres del fichero que contiene la version localizada del documento. -p, --po El fichero donde se deberia escribir el catalogo de mensajes. Si no se proporciona, el catalogo de mensajes se escribira por la salida estandar. -o, --option Opcion(es) adicionales a introducir a la extension del formato. Consulte la documentacion de cada extension para mas informacion acerca de las opciones aceptadas y su significado. Por ejemplo, puede pasar '-o tablecells' al interprete AsciiDoc, mientras que el interprete de texto aceptaria '-o tabs=split'. -h, --help Muestra un mensaje corto de ayuda. --help-format Listado de formatos de documentacion reconocidos por po4a. -k --keep-temps Conserve los archivos POT localizados originales y temporales generados antes de la fusion. Esto puede ser util para comprender por que estos archivos no estan sincronizados, lo que genera problemas de obtencion de texto. -V, --version Muestra la version del script y cierra. -v, --verbose Aumenta la cantidad de mensajes informativos del programa. -d, --debug Devuelve por la salida informacion de depuracion de fallos. --msgid-bugs-address correo-e@direccion Define el destinatario de los informes de fallo en los msgid. Por omision, los ficheros POT creados no tienen el campo <>. --copyright-holder cadena Define el titula de los derechos de reproduccion en la cabecera del POT. El valor predefinido es <> --package-name string Define el nombre del paquete en la cabecera del POT. El valor por omision es <>. --package-version string Define la version del paquete en la cabecera del POT. El valor por omision es <>. Convertir una traduccion manual a po4a po4a-gettextize sincronizara los archivos maestro y localizado para extraer su contenido a un archivo PO. El contenido del archivo maestro esta en msgid, mientras que el contenido del archivo localizado esta en msgtr. Este proceso es algo fragil: la enesima cadena del archivo traducido se toma como la traduccion de la enesima cadena del original. La gettextizacion funciona mejor si consigue recuperar la version exacta del documento original que se utilizo para la traduccion. Aun asi, si el traductor original modifico 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 interprete po4a comunica el tipo sintactico de cada cadena extraida. Esto es como la desincronizacion es detectada durante la gettextizacion. En el ejemplo mostrado abajo, es muy poco probable que la cuarta cadena de la traduccion (de tipo 'capitulo') sea la traduccion de la cuarta cadena del original (de tipo 'parrafo'). Es mas probable que un paragrafo nuevo fuera anadido al original, o que dos paragrafos originales fueran combinados en la traduccion. Original Traduccion capitulo capitulo parrafo parrafo parrafo parrafo parrafo capitulo capitulo parrafo parrafo parrafo po4a-gettextize diagnosticara detalladamente cualquier desincronizacion de estructura. Cuando esto ocurre, deberia editar manualmente los archivos para anadir parrafos simulados o retirar algun contenido aqui y alla hasta que la estructura de ambos documentos coincidan. Se dan algunos trucos en la siguiente seccion para salvar la mayor parte posible de la traduccion 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 cuestion de segundos. Si no, pronto entendera por que este proceso tiene un nombre tan feo :) Aun asi, la gettextizacion sigue siendo mas rapida que traducirlo todo de nuevo. Yo gettextice la traduccion al frances de toda la documentacion Perl en un dia a pesar de los l problemas de sincronizacion. Dada la cantidad de texto (2MB de texto original), reiniciar la traduccion sin salvar primero las traducciones antiguas hubiera requerido varios meses de trabajo. Ademas, este trabajo pesado es el precio que hay que pagar para obtener el confort de po4a. Una vez hecha la conversion, la sincronizacion entre documentos maestros y las traducciones siempre sera completamente automatica. Tras una gettextizacion correcta, los documentos producidos deben comprobarse manualmente para detectar disparidades y errores silenciosos, como se explica a continuacion. Consejos y trucos para el proceso de gettextizacion La gettextizacion se detiene en cuanto se detecta una desincronizacion. 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. Ademas, el archivo PO generado hasta el momento se vuelca como gettextization.failed.po para su posterior inspeccion. Aqui hay algunos trucos para ayudarle en este proceso tedioso y asegurarse de que salva lo maximo posible de la traduccion anterior: o Eliminar todo el contenido extra de las traducciones, como la seccion que da creditos a los traductores. Deberan anadirse por separado a po4a como apendices (vease po4a(7)). o Si necesita editar los ficheros para alinear sus estructuras, es preferible editar la traduccion si es posible. Ciertamente, si los cambios al original son demasiado intrusivos, las versiones antigua y nueva no seran coincidentes durante la primera ejecucion de po4a despues de la gettextizacion (vea mas abajo). Cualquier traduccion que no coincida sera descartada de todas formas. Dicho esto, es recomendable editar el documento original si es demasiado dificil conseguir que la gettextizacion proceda de otra forma, incluso si esto significa que un parrafo de la traduccion se descarte. Lo importante es obtener un fichero PO con el que comenzar. o No dude en eliminar cualquier contenido original que no existiese dentro de la version traducida. Este contenido sera reintroducido automaticamente despues, cuando sincronice el fichero PO con el documento. o Probablemente deberia informar al autor original de cualquier cambio estructural dentro de la traduccion que parezca justificado. Si hay problemas con el documento original deberia comunicarlo al autor. Arreglarlas en su traduccion solo las soluciona a una parte de la comunidad. Y ademas, es imposible hacerlo asi cuando se usa po4a ;) Pero probablemente quieras esperar al final de la conversion a po4a antes de cambiar los archivos originales. o A veces el contenido del parrafo encaja, pero no sus tipos. Arreglar eso depende mas bien del formato. En POD y man, a menudo es culpa de que una de las lineas empieza con un espacio y la otra no. En estos formatos, este parrafo no se podria justificar y su tipo cambiaria. Simplemente elimine el espacio y ya esta. Tambien puede tratarse de un error tipografico en el nombre de la etiqueta en XML. De manera parecida, dos parrafos se podrian fusionar en un POD cuando la linea de separacion contiene algunos espacios, o cuando no hay una linea de separacion entre la linea =item y el contenido del elemento (<>). o A veces, el mensaje de desincronizacion parece raro porque la traduccion esta emparejada con el parrafo original equivocado. Esto indica que hay un problema no detectado anteriormente en el proceso. Busque el punto de desincronizacion actual inspeccionando el archivo gettextization.failed.po, y repare el problema donde realmente esta. o Otros problemas pueden provenir de cadenas duplicadas en el original o en la traduccion. Las cadenas duplicadas se fusionan en archivos PO, con dos referencias. Esto constituye una dificultad para el algoritmo de gettextizacion, 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 deberia informar de cualquier problema restante que pueda encontrar. Revision de los archivos producidos por po4a-gettextize Cualquier archivo producido por po4a-gettextize debe ser revisado manualmente, incluso cuando el script termina con exito. Deberia hojear el fichero PO, asegurandose de que el msgid y el msgstr coinciden realmente. No es necesario asegurarse todavia de que la traduccion 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 seran 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 frances, ingles y algo de aleman, puedo hacer esto al menos para todas las lenguas europeas, aunque no sepa decir ni una palabra en la mayoria de ellas. A veces consigo detectar problemas de concordancia en lenguas no latinas fijandome en la longitud de las cadenas, las estructuras de las frases (?coincide la cantidad de signos de interrogacion?) 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 intentelo de nuevo. Una vez que tenga un archivo PO decente para su traduccion anterior, haga una copia de seguridad hasta que consiga que po4a funcione correctamente. Ejecutar po4a por primera vez La forma mas facil de configurar po4a es escribir un fichero de configuracion po4a.conf, y usar el programa integrado po4a (po4a-updatepo y po4a-translate estan obsoletos). Consulte la seccion "ARCHIVO DE CONFIGURACION" de la documentacion de po4a(1) para obtener mas informacion. Cuando po4a se ejecuta por primera vez, se utilizara la version actual de los documentos maestros para actualizar los archivos PO que contienen las traducciones antiguas que rescato mediante la gettextizacion. Esto puede llevar bastante tiempo, porque muchos de los msgids de la gettextizacion no coinciden exactamente con los elementos del fichero POT construido a partir de los archivos maestros recientes. Esto obliga a gettext a buscar el mas cercano utilizando un costoso algoritmo de proximidad de cadenas. Por ejemplo, la primera ejecucion sobre la traduccion al frances de la documentacion de Perl (fichero PO de 5,5 MB) tardo unas 48 horas (si, dos dias) mientras que las siguientes solo tardan segundos. Pasar sus traducciones a produccion Tras esta primera ejecucion, los archivos PO estan listos para ser revisados por los traductores. Todas las entradas fueron marcadas como fuzzies en el archivo PO por po4a-gettextization, forzando su cuidadosa revision antes de su uso. Los traductores deben tomar cada entrada para verificar que la traduccion rescatada coincide realmente con el texto original actual, actualizar la traduccion segun sea necesario y eliminar los marcadores fuzzy. Una vez que se hayan eliminado suficientes marcadores fuzzy, po4a empezara a generar los archivos de traduccion en disco, y ya estara listo para pasar su flujo de trabajo de traduccion a produccion. Algunos proyectos encuentran util usar Weblate para coordinar a traductores y mantenedores, pero eso esta fuera del alcance de po4a. VEASE TAMBIEN po4a(1), po4a-normalize(1), po4a-translate(1), po4a-updatepo(1), po4a(7). AUTORES Denis Barbier Nicolas Francois Martin Quinson (mquinson#debian.org) TRADUCCION Jordi Vilalta Omar Campagne DERECHO DE COPIA Y LICENCIA Copyright 2002-2023 por SPI, inc. Este programa es software libre; puede redistribuirlo y/o modificarlo bajo los terminos de la GPL v2.0 o posterior (consulte el archivo COPYING). perl v5.38.2 2024-06-26 PO4A-GETTEXTIZE.1P(1)