Provided by: po4a_0.57-2_all bug

NOMBRE

       Locale::Po4a::Po - Módulo para la manipulación de ficheros PO

SINOPSIS

           use Locale::Po4a::Po;
           my $pofile=Locale::Po4a::Po->new();

           # Leer el fichero PO
           $pofile->read('fichero.po');

           # Añadir una entrada
           $pofile->push('msgid' => 'Hello', 'msgstr' => 'hola',
                         'flags' => "wrap", 'reference'=>'file.c:46');

           # Extraer una traducción
           $pofile->gettext("Hello"); # devuelve 'Hola'

           # Escribir el resultado en un fichero
           $pofile->write('otrofichero.po');

DESCRIPCIÓN

       Locale::Po4a::Po es un módulo que permite manipular catálogos de mensajes. Con él puede
       leer y escribir desde/a un fichero (cuya extensión es a menudo po), puede crear nuevas
       entradas sobre en el momento o pedir la traducción de una cadena.

       Para una descripción más completa de los catálogos de mensajes en formato PO y su uso,
       consulte la documentación del programa gettext (nodo "`PO Files"').

       Este módulo es parte del proyecto po4a, cuyo objetivo es usar ficheros PO (diseñados
       originalmente para facilitar la traducción de mensajes de programa) para traducir de todo,
       incluyendo documentación (páginas de manual, manuales info), descripciones de paquetes,
       plantillas debconf, y cualquier cosa que se pueda beneficiar de esto.

OPCIONES ACEPTADAS POR ESTE MODULO

       --porefs type[,wrap|nowrap]
           Define el forma de referencia: El argumento type puede ser never para no generar
           ninguna referencia, file para solo especificar el fichero el número de línea, counter
           para sustituir el número de línea con un recuento ascendente, y full para incluir
           referencias completas (predefinido: full).

           El argumento puede preceder a una coma y a la palabra clave wrap o nowrap. Las
           referencias se escriben en una sola línea por omisión. La opción wrap justifica las
           referencias en varias líneas, para imitar a las herramientas gettext (xgettext y
           msgmerge). Esta opción será el comportamiento predefinido en el futuro, ya que es más
           inteligente. La opción nowrap está disponible para aquellos usuarios que deseen
           mantener el comportamiento antiguo.

       --msgid-bugs-address email@address
           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».

       --copyright-holder string
           Define el propietario del copyright en la cabecera del POT. El valor predefinido es
           «Free Software Foundation, Inc».

       --package-name string
           Define el nombre del paquete en la cabecera del POT. El valor por omisión es
           «PACKAGE».

       --package-version string
           Define la versión del paquete en la cabecera del POT. El valor por omisión es
           «VERSION».

Funciones pertinentes a todo el catálogo de mensajes

       new()
           Crea un nuevo catálogo de mensajes. Si se introduce un argumento, este será el nombre
           del fichero PO a cargar.

       read($)
           Lee un fichero PO (cuyo nombre se introduce como argumento). Las entradas
           anteriormente existentes no se eliminan, las nuevas se añaden al final del catálogo.

       write($)
           Escribe el catálogo actual al fichero dado.

       write_if_needed($$)
           Al igual que «write», pero si el fichero PO o POT ya existe, el objeto se escribirá en
           un fichero temporal para su comparación con el fichero existente, y así determinar si
           precisa una actualización (esto evita modificar el POT para sólo actualizar una línea
           de referencia o el campo «POT-Creation-Date»)

       gettextize($$)
           Esta función produce un catálogo de mensajes traducidos desde dos catálogos, el
           original y su traducción. Este proceso se describe en la sección de po4a(7)
           Gettextización: ¿cómo funciona?.

       filter($)
           Esta función extrae un catálogo desde uno existente. Sólo se colocan en el catálogo
           resultante las entradas que tengan una referencia en el fichero dado.

           Esta función analiza su argumento, lo convierte en una definición de una función de
           Perl, la pasa por «eval» y filtra los campos por los que esta función devuelve
           verdadero («true»).

           A veces me encanta Perl ;)

       to_utf8()
           Recodifica los msgtr del PO a UTF-8. No hace nada si el juego de caracteres no está
           especificado en el fichero PO (valor «CHARSET»), o si ya está en UTF-8 o ASCII.

Funciones para usar un catálogo de mensajes para traducciones

       gettext($%)
           Solicita la traducción de la cadena dada como argumento en el catálogo actual. La
           función devuelve la cadena original (sin traducir) si no se ha encontrado la cadena.

           Después de la cadena a traducir, puede pasar una serie asociativa («hash») de
           argumentos adicionales. Aquí están las entradas válidas:

           wrap
               Booleano que indica si se puede considerar que los espacios blancos de la cadena
               son irrelevantes. De ser así, la función canoniza la cadena antes de buscar su
               traducción, y justifica el resultado.

           wrapcol
               La columna en la que se debe hacer el salto de línea (por omisión: 76).

       stats_get()
           Devuelve estadísticas sobre la tasa de aciertos de gettext desde la última vez que se
           invocó «stats_clear()». Cabe destacar que éstas no son las mismas estadísticas que
           muestra «msgfmt --statistic». Estas son sobre el uso reciente del fichero PO, mientras
           que msgfmt informa del estado del fichero. Ejemplo de uso:

               [algún uso del fichero PO para traducir cosas]

               ($percent,$hit,$queries) = $pofile->stats_get();
               print "Hasta el momento hemos encontrado traducciones para el $percent\%  ($hit of $queries) de cadenas.\n";

       stats_clear()
           Limpia las estadísticas de aciertos de gettext.

Funciones para construir un catálogo de mensajes

       push(%)
           Inserta una nueva entrada al final del catálogo actual. Los argumentos deberían formar
           una tabla de elementos asociativos («hash»). Las claves válidas son:

           msgid
               La cadena en el idioma original.

           msgstr
               La traducción.

           reference
               Una indicación de dónde se encontró la cadena. Ejemplo: «fichero.c:46» (significa
               en la línea 46 del 'fichero.c'). Puede ser una lista separada por espacios en caso
               de múltiples apariciones.

           comment
               Un comentario añadido aquí manualmente (por los traductores). El formato aquí es
               libre.

           automatic
               Un comentario que añadió automáticamente el programa de extracción de cadenas.
               Consulte la opción --add-comments del programa xgettext para más información.

           flags
               Lista separada por espacios de todas la marcas («flags») definidas para ésta
               entrada.

               Las marcas válidas son: c-text, python-text, lisp-text, elisp-text, librep-text,
               smalltalk-text, java-text, awk-text, object-pascal-text, ycp-text, tcl-text, wrap,
               no-wrap y fuzzy.

               Consulte la documentación de gettext para conocer sus significados.

           type
               Este es principalmente un parámetro interno: se usa cuando se gettextizan
               documentos. La idea aquí es analizar el original y la traducción en un objeto PO,
               y fusionarlos, usando el msgid de uno como msgid y el msgid del otro como msgstr.
               Para asegurarnos de que todo va bien, a cada msgid de los objetos PO se le da un
               tipo, basado en su estructura (como «chapt», «sect1», «p» y demás en DocBook). Si
               los tipos de las cadenas no coinciden, significa que ambos ficheros no tienen la
               misma estructura, y el proceso devuelve un error.

               Esta información se escribe como un comentario automático en el fichero PO, ya que
               informa al traductor del contexto de la cadena a traducir.

           wrap
               Booleano que indica si los espacios en blanco se pueden manipular en reformateos
               cosméticos. Si es verdadero, la cadena se canoniza antes de su uso.

               Esta información se escribe en el fichero PO usando las marcas wrap o no-wrap.

           wrapcol
               La columna en la que se debe hacer el salto de línea (por omisión: 76).

               Esta información no se escribe en el fichero PO.

Funciones varias

       count_entries()
           Devuelve el número de entradas del catálogo (sin la cabecera)

       count_entries_doc()
           Devuelve el número de entradas del documento. Si una cadena aparece varias veces en el
           documento, se contará varias veces.

       equals_msgid(po)
           Devuelve ($uptodate, $diagnostic) con $uptodate, indiando si todos los msgid del
           fichero po actual también están presentes en el fichero introducido como parámetro
           (todos los otroso campos se omiten para la comparación de ficheros). of the current po
           file are also present in the one passed as parameter (all other fields are ignored in
           the file comparison).  De forma oficiosa, si $uptodate devuelve «false», los ficheros
           po son modificados al ser tratados por po4a-updatepo.

           Si $uptodate es «false», entonces $diagnostic contiene un diagnóstico del motivo de
           ello.

       msgid($)
           Devuelve el msgid con el número dado.

       msgid_doc($)
           Devuelve el msgid y su posición en el documento.

       get_charset()
           Devuelve el juego de caracteres especificado en la cabecera PO. Si no se le ha dado
           valor, devuelve «CHARSET».

       set_charset($)
           Esto define el juego de caracteres de la cabecera PO con el valor especificado en su
           primer argumento. Si nunca invoca esta función (y no se carga ningún fichero con un
           juego de caracteres especificado), el valor predefinido es «CHARSET». Este valor no
           cambia el comportamiento del módulo, simplemente se usa para llenar el campo de la
           cabecera, y para devolverlo en «get_charset()».

AUTORES

        Denis Barbier <barbier@linuxfr.org>
        Martin Quinson (mquinson#debian.org)

TRADUCCION

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