PO-DEBCONF(7) po-debconf PO-DEBCONF(7)

po-debconf - Introducción

La meta de "debconf" es facilitar la configuración de paquetes. Para ello, es importante asegurar que la pregunta se planteará al usuario en su propio idioma. Los traductores necesitan un marco de trabajo para trabajar en las traducciones sin necesidad de seguir el desarrollo del paquete; "po-debconf" está diseñado para que pueda trabajar con herramientas estándar de "gettext" al traducir ficheros de plantillas de debconf.

AÑADIR CAPACIDAD DE I18N A FICHEROS DE PLANTILLAS DE DEBCONF

Si está añadiendo a su paquete la compatibilidad con debconf, es que ha creado un fichero de plantilla que contiene texto en inglés. Para añadir la capacidad de i18n a su paquete, tiene que:

Este fichero contiene la lista de plantillas originales. Generalmente, contiene una sola línea:

  [type: gettext/rfc822deb] templates
    

Las rutas son relativas al directorio superior.

Habitualmente, se pueden traducir los campos "Description". "Choices" y "Default".
Creará el fichero debian/po/templates.pot que los traductores traducirán a su idioma.

Para ayudar a los traductores, los ficheros PO en su paquete deberían estar siempre actualizados o, de no ser así, puede que pierdan el tiempo traduciendo cadenas en desuso. Para ello, invoque la siguiente orden sin argumentos:

  $ debconf-updatepo

Debería ejecutar esta orden cada vez que modifique las plantillas en inglés, pero también cuando reciba una traducción nueva o actualizada, ya que puede que los traductores hayan trabajado con un fichero PO obsoleto.

Si renombra, añade o elimina algunos ficheros de plantillas, recuerde también editar debian/po/POTFILES.in. En caso contrario, las cadenas en inglés se omiten en los ficheros PO, y se mostrarán a los usuarios incluso si los ficheros PO están totalmente traducidos.

El programa debconf-updatepo es idempotente, modifica ficheros PO sólo si el contenido se ha actualizado. Por ello, la mejor forma de ofrecer ficheros actualizados en su paquete fuente es invocar esta orden desde el objetivo "clean" del fichero debian/rules.

Tenga en cuenta que necesita ejecutar debconf-updatepo incluso si usa dh_installdebconf. El último invoca po2debconf, que solía invocar debconf-updatepo si se detectaban ficheros desactualizados, pero este ya no es el caso ya que no era una buena solución por dos motivos:

1.
po2debconf dependía de marcas de tiempo para detectar ficheros desactualizados, y puede provocar un fallo al usar "pbuilder" o si se ha guardado en el disco una traducción desactualizada después de modificar las marcas de tiempo.
2.
dh_installdebconf se invoca mucho después de generar el fichero ".diff.gz".

Debe comprobar que se incluyan las traducciones en el paquete generado al compilar el paquete. Puede hacerlo manualmente, o automáticamente usando el script dh_installdebconf (compruebe que tiene una dependencia de construcción versionada sobre "debhelper (>= 4.1.16)").

Para hacerlo manualmente, tendrá que fusionar las plantillas y las traducciones en durante la compilación (y tiene que especificar una dependencia de construcción sobre "po-debconf") como puede ver a continuación:

  $ po2debconf debian/templates > debian/tmp/DEBIAN/templates

ADVERTENCIA: los dos ficheros llamados templates no son lo mismo. El primero sólo contiene el texto en inglés, con marcas que indican los campos a traducir, mientras que el segundo contiene todos los idiomas. Esto es, NO PUEDE guardar sólo las plantillas fusionadas, o no podrá tratar las traducciones a medida que las personas las envían.

El nuevo formato de fichero de plantilla fuente es casi idéntico a los ficheros de plantilla distribuidos, pero se antepone un guión bajo a los campos traducibles. Ejemplo:

  Template: debconf/frontend
  Type: select
  _Choices: Dialog, Readline, Gnome, Editor, Noninteractive
  Default: Dialog
  _Description: Interface to use for configuring packages:
   Packages that use debconf for configuration share a common look and
   feel.  You can select the type of user interface they use.
   .
   The dialog frontend is a full-screen, character based interface,
   while the readline frontend uses a more traditional plain text
   interface, and the gnome frontend is a modern X interface.  The
   editor frontend lets you configure things using your favorite text
   editor. The noninteractive frontend never asks you any questions.

DIVIDIR LA LISTA DE ELECCIONES

A partir de la versión 0.6.0 de "po-debconf", los ficheros localizados pueden contener dos guiones bajos prefijados. En este caso, se supone que el valor del campo es una lista de valores separados por comas, las cuales se ubican en msgids separados. Por ello, si el anterior ejemplo contenía

  __Choices: Dialog, Readline, Gnome, Editor, Noninteractive

habría 5 msgids diferentes. Note que los espacios después de las comas no son significativos.

"_Choices" es adecuado cuando la lista de elecciones nunca cambia. Por otra parte, dividir tales listas puede ayudar a evitar errores comunes en las traducciones tales como omitir una elección o usar comas no estándar. Debido a ello, el uso de "__Choices" facilitará el trabajo a los traductores y es altamente recomendado.

Por desgracia, si decide cambiar "_Choices" a "__Choices", todas las traducciones se marcarán como difusas. Aquí tiene una explicación de cómo realizar este cambio sin pérdida de traducciones (requiere "po-debconf" >= 1.0). Suponga que desea cambiar el ejemplo anterior a "__Choices". Para ello, copie el fichero templates a un fichero temporal.

  $ cp debian/templates debian/foo

Edite debian/foo y guarde sólo los campos "Template", "Type" y "_Choices", presentes en este ejemplo.

  Template: debconf/frontend
  Type: select
  _Choices: Dialog, Readline, Gnome, Kde, Editor, Noninteractive

Ejecute debconf-gettextize con las opciones "--merge" y "--choices" para construir ficheros PO como si se hubiese escrito "__Choices", y fusione estos ficheros PO con los existentes:

  $ debconf-gettextize --merge --choices debian/foo

Por último, elimine foo y edite debian/templates manualmente para reemplazar "_Choices" con "__Choices" antes de ejecutar debconf-updatepo.

INSERTAR COMENTARIOS PARA LOS TRADUCTORES

Los desarrolladores de "dpkg" decidieron que, por convención, las líneas que comienzan con un signo de almohadilla ("#") son comentarios en ficheros debian/control, y "po-debconf" respeta esta regla. Estos comentarios se insertan en los ficheros PO a partir de la versión 0.8.0 de "po-debconf", y pueden contener información valiosa para los traductores. Incidentalmente, todas las versiones anteriores de "po-debconf" ignoran líneas que no contienen dos puntos y, por ello, si sus comentarios no contienen dos puntos no necesita añadir una dependencia de construcción versionada sobre "po-debconf". Aquí tiene un ejemplo:

  Template: debconf/button-yes
  Type: text
  # Translators, this text will appear on a button, so KEEP IT SHORT
  _Description: Yes

La versión 1.0 de "po-debconf" introduce comentarios especiales para tratar con cadenas compuestas de varios elementos (como el campo Choices), o párrafos (como Description). Con estas normas, los desarrolladores tienen un mayor control sobre lo que se muestra a los traductores. Tienen la forma "#flag:norma"; las normas se detallan a continuación.

Sólo marca algunos elementos como traducibles; spec es una lista de números separados por comas, que define qué cadenas aparecen en los ficheros PO. También puede definir un rango mediante el signo de resta (por ejemplo "2-6"), y un asterisco ("*") implica a todas las cadenas. Por ejemplo, con

  Template: partman-basicfilesystems/fat_mountpoint
  Type: select
  #flag:translate:3,4
  __Choices: /dos, /windows, Enter manually, Do not mount it
  _Description: Mount point for this partition:
    

"Enter manually" y "Do not mount it" aparecerán en los ficheros PO, pero no "/dos" ni "/windows". Cuando un signo de exclamación sigue a la palabra clave translate, spec define qué cadenas descartar en los ficheros PO, y se muestran todas las demás cadenas. El ejemplo anterior es similar a

  Template: partman-basicfilesystems/fat_mountpoint
  Type: select
  #flag:translate!:1,2
  __Choices: /dos, /windows, Enter manually, Do not mount it
  _Description: Mount point for this partition:
    

La misma palabra clave también se puede aplicar al campo Description para asegurar que no se traducen algunas cadenas.

  Template: partman-crypto/options_missing
  Type: error
  #flag:translate!:3
  _Description: Required encryption options missing
   The encryption options for ${DEVICE} are incomplete. Please
   return to the partition menu and select all required options.
   .
   ${ITEMS}
    

Pero tiene peligro ya que puede que se pierda el contexto en algunos ficheros PO. En este caso, añada comentarios para que los traductores no se confundan.

El comentario a continuación de esta norma afecta a las cadenas definidas con spec, definido anteriormente. Por omisión, un comentario escrito antes de un campo traducible aparece en todas las cadenas que pertenecen a ese campo. (Nota: con "po-debconf" < 1.0, el comentario sólo aparecía en la primera cadena.)

  Template: arcboot-installer/prom-variables
  Type: note
  # Translators, the 4th string of this description has been dropped
  # from PO files.  It contains shell commands and should not be
  # translated.
  #flag:comment:3
  # "Stop for Maintenance" should be left in English
  #flag:translate!:4
  _Description: Setting PROM variables for Arcboot
   If this is the first Linux installation on this machine, or if the
   hard drives have been repartitioned, some variables need to be set
   in the PROM before the system is able to boot normally.
   .
   At the end of this installation stage, the system will reboot.
   After this, enter the command monitor from the "Stop for
   Maintenance" option, and enter the following commands:
   .
      setenv OSLoader arcboot
      setenv OSLoadFilename Linux
   .
   You will only need to do this once.  Afterwards, enter the "boot"
   command or reboot the system to proceed to the next stage of the
   installation.
    

El ejemplo anterior tiene un comentario sin la norma "#flag:comment", donde se añade implícitamente "#flag:comment:*". Este comentario aparece en todas las cadenas, pero el que se encuentra en torno a Stop for Maintenance sólo aparece antes de la cadena relevante.

Esta palabra clave indica a po2debconf que mantenga cadenas traducidas incluso si no se han traducido todas las cadenas. Úselo con precaución, esta palabra clave se ha introducido con propósitos muy específicos.

ENVIAR AVISOS A LOS TRADUCTORES ANTES DE ENVIAR EL PAQUETE

Generalmente, los traductores se informan en las páginas web de estadísticas (véase a continuación) de las traducciones desactualizadas, enviando parches a incluir en futuros envíos de paquetes. Se anima a las desarrolladores que contacten con los responsables de las traducciones desactualizadas para una actualización previa al envío del paquete. Se ha creado una herramienta específica para ello, podebconf-report-po. ¡No dude en abusar de él!

Verá que debconf-loadtemplate no aceptará un fichero de plantillas con marcas de i18n. Sin embargo, aceptará un fichero fusionado, así que si ha estado depurando su configuración mediante debconf de la siguiente manera

  rm /tmp/{config,templates}.dat{,-old}
  debconf-loadtemplate debian/templates
  DEBIAN_PRIORITY=low debconf -freadline debian/config configure 28.0

ahora tendrá que hacer algo así:

  po2debconf debian/templates > debian/tmp/DEBIAN/templates
  rm /tmp/{config,templates}.dat{,-old}
  debconf-loadtemplate debian/tmp/DEBIAN/templates
  DEBIAN_PRIORITY=low debconf -freadline debian/config configure 28.0

Las estadísticas de traducciones basadas en "po-debconf" están disponibles en <http://www.debian.org/intl/l10n/po-debconf/> (o réplicas); se actualizan automáticamente cuando se envían paquetes nuevos. Sólo se consideran los paquetes que contienen ficheros debian/po/templates.pot y debian/po/POTFILES.in, compruebe que su paquete fuente los proporciona.

Los traductores pueden obtener aquí ficheros PO y POT, pero siempre deben contactar con el anterior traductor (la dirección de correo electrónico está dentro del fichero PO) y puede que también con los otros traductores del equipo en debian-l10n-<idioma>@lists.debian.org (si existe tal lista de correo) para comprobar que nadie está trabajando en la misma traducción, y también revisar los informes de fallo remitidos al paquete que van a traducir para ver si ya se ha enviado una traducción.

Después de traducir estos ficheros, deberían enviar su trabajo al desarrollador como un informe de fallo con severidad wishlist, y la etiqueta patch.

debconf-gettextize(1), debconf-updatepo(1), dh_installdebconf(1), podebconf-report-po(1), po2debconf(1), debconf-devel(7).

  Martin Quinson <Martin.Quinson@ens-lyon.fr>
  Denis Barbier <barbier@linuxfr.org>

  Omar Campagne Polaino <ocampagne@gmail.com>, 2010.
  
  Esta traducción se ha realizado como parte del equipo de
  traducción al español de Debian, <debian-l10n-spanish.org>.
2020-12-30