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.
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
 
  - Esto especifica el formato de referencia. Puede usar
      none, para no producir ninguna referencia, noline para no
      especificar el número de la línea, y full para incluir
      referencias completas.
 
Funciones sobre el catálogo de mensajes entero¶
  - 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.
 
  - 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)