DOKK / manpages / debian 11 / po-debconf / po-debconf.7.fr
PO-DEBCONF(7) po-debconf PO-DEBCONF(7)

po-debconf - Introduction

L'objectif de « debconf » était de rendre la configuration de paquets conviviale. Afin d'arriver à ce but, il est important de s'assurer que les utilisateurs lisent les questions dans leur propre langue. Les traducteurs ont besoin d'une infrastructure qui leur permette de travailler facilement sur des traductions sans avoir besoin de suivre à la trace le développement du programme ; « po-debconf » a été conçu pour travailler avec les outils habituels de « gettext » pour traduire les questionnaires debconf.

Si vous utilisez debconf avec votre paquet, vous avez écrit un fichier questionnaire en anglais. Pour ajouter la gestion i18n à votre paquet, vous devez :

Ce fichier contient la liste des questionnaires maîtres, qui n'est souvent composé que d'une seule ligne :

  [type: gettext/rfc822deb] templates
    

Les chemins sont relatifs au répertoire parent.

Normalement, les champs « Description », « Choices » et parfois « Default » peuvent être traduits.
Ceci créera le fichier debian/po/templates.pot que les traducteurs traduiront dans leur langue.

Afin d'aider les traducteurs, vous devez faire en sorte que les fichiers PO soient constamment à jour, sinon ils risquent de traduire des chaînes qui ne sont plus utilisées. Pour cela, appelez simplement la commande suivante sans paramètre :

  $ debconf-updatepo

Cette commande doit être exécutée à chaque changement dans les chaînes en anglais, mais aussi lorsque vous recevez de nouvelles traductions ou des mises à jour, car le traducteur peut avoir traduit un fichier PO obsolète.

Si vous renommez, ajoutez ou supprimez des fichiers questionnaires, pensez aussi à modifier le fichier debian/po/POTFILES.in en conséquence, sinon les chaînes de ces fichiers n'apparaîtront pas dans les fichiers PO et seront affichées en anglais, alors que le fichier PO peut être complètement traduit.

Le programme debconf-updatepo ne modifie les fichiers PO que si leur contenu a été altéré. Ainsi, la meilleure solution pour fournir des fichiers PO à jour dans un paquet source consiste à exécuter cette commande depuis la règle « clean » du fichier debian/rules.

Il est important de savoir que debconf-updatepo doit être exécuté même si vous utilisez la commande dh_installdebconf. Celle-ci exécute po2debconf qui, auparavant, appelait debconf-updatepo si des fichiers obsolètes étaient détectés, mais ce n'est plus le cas parce que ce n'était pas une solution satisfaisante pour au moins deux raisons :

1.
po2debconf utilisait la date des fichiers enregistrés sur le disque pour détecter les fichiers obsolètes, ce qui n'est pas fiable si on utilise « pbuilder » ou si une traduction obsolète a été enregistrée sur le disque après modification de l'original ;
2.
dh_installdebconf est exécuté bien après que le fichier « .diff.gz » a été écrit ;

Vous devez vous assurer que, lors de la compilation de votre paquet, les traductions sont placées dans le paquet construit. Vous pouvez le faire vous-même, ou automatiquement en utilisant le script dh_installdebconf (assurez-vous d'avoir une dépendance de construction avec un numéro de version sur « debhelper (>= 4.1.16) »).

Pour le faire vous-même, vous devez fusionner le questionnaire et les traductions lors de la compilation (et avoir une dépendance de construction sur « po-debconf ») de cette manière :

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

ATTENTION : Les deux fichiers appelés templates ne sont pas les mêmes du tout. Le premier ne contient que le texte en anglais, avec des marques pour indiquer les champs à traduire, alors que le second contient toutes les traductions. Cela signifie que vous NE POUVEZ PAS conserver uniquement les questionnaires fusionnés, ou alors vous ne pourrez plus gérer les traductions qui vous seront soumises.

Le nouveau format source de fichier de questionnaires est pratiquement identique à celui des fichiers de questionnaires distribués, seul un souligné est ajouté devant les champs à traduire. Par exemple :

  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.

DÉCOUPER LA LISTE DES CHOIX

À partir de la version 0.6.0 de « po-debconf », les champs à traduire peuvent contenir deux soulignés. Dans ce cas, le champ est supposé contenir une liste de valeurs séparées par des virgules, elles seront placées dans des champs msgid différents. Ainsi si l'exemple précédent contenait :

  __Choices: Dialog, Readline, Gnome, Editor, Noninteractive

cinq champs msgid différents auraient été créés. Veuillez noter que les espaces après les virgules ne sont pas pris en compte.

Lorsqu'une liste de choix ne change jamais, « _Choices » peut être considéré comme adapté. Cependant, l'éclatement de ces listes permet d'éviter des erreurs fréquentes dans les traductions, notamment l'oubli d'un choix et l'utilisation de virgules non standard. Pour ces raisons, l'utilisation de « __Choices » facilitera le travail des traducteurs et est fortement recommandée.

Malheureusement si vous décidez de basculer entre ces deux formes, toutes les traductions sont marquées « fuzzy ». C'est une justification pour effectuer ce changement sans perdre de traduction (ceci requiert « po-debconf » >= 1.0). Supposez que vous voulez basculer l'exemple précédent vers « __Choices ». Vous copiez le fichier templates dans un fichier temporaire :

  $ cp debian/templates debian/foo

Éditez debian/foo et ne garder seulement que les champs « Template », « Type » et « _Choices » de cet exemple :

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

Exécutez debconf-gettextize avec les options « --merge » et « --choices » pour construire les fichiers PO :

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

Ensuite vous devez supprimer foo et éditer vous-même debian/templates pour modifier « _Choices » en « __Choices » avant d'exécuter debconf-updatepo.

AJOUTER DES COMMENTAIRES POUR LES TRADUCTEURS

Les responsables de « dpkg » ont décidé que, par convention, les lignes dans les fichiers debian/control qui commencent par un symbole dièse sont des commentaires et « po-debconf » suit cette règle. Depuis « po-debconf » 0.8.0, de tels commentaires sont automatiquement écrits dans les fichiers PO et peuvent donc contenir des informations qui intéressent les traducteurs. Heureuse coïncidence, toutes les versions précédentes de « po-debconf » ignorent les lignes ne contenant pas de symbole deux-points ; si vos commentaires ne contiennent pas ce symbole, ce n'est donc pas la peine d'ajouter une dépendance de construction sur une version récente de « po-debconf ». Voici un exemple d'utilisation :

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

Des commentaires spéciaux ont été introduits dans « po-debconf » 1.0 pour traiter les chaînes de caractères composées de plusieurs choix (les champs Choices) ou paragraphes (les champs Description). Avec ces directives, les développeurs ont un meilleur contrôle sur ce qui est exposé aux traducteurs. Les directives sont de la forme « #flag:directive » ; elles sont détaillées ci-dessous :

Ne marquez que quelques éléments comme traduisibles ; spec est une liste de nombres séparés par des virgules, elle indique quelles chaînes seront imprimées dans le fichier PO. Des intervalles peuvent aussi être définis avec un signe moins (par exemple, « 2-6 ») et une étoile (« * ») signifie toutes les chaînes. Par exemple, avec :

  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 » et « Do not mount it » apparaîtront dans les fichiers PO mais pas « /dos » et « /windows ». Quand un point d'exclamation suit le mot clé translate, spec indique quelles chaînes seront écartées des fichiers PO, toutes les autres chaînes étant enregistrées. L'exemple précédent est identique à :

  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:
    

Le même mot clé peut être aussi appliqué au champ Description pour être sûr que certaines chaînes ne seront pas traduites.

  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}
    

Mais ceci est hasardeux car le contexte peut être perdu depuis les fichiers PO. Ajoutez des commentaires dans ce cas pour ne pas induire le traducteur en erreur.

Ce commentaire juste en-dessous de cette directive s'applique aux chaînes indiquées par spec qui est défini au-dessus. Par défaut, un commentaire écrit avant un champ traduisible est affiché pour toutes les chaînes appartenant à ce champ. (Note : avec « po-debconf » < 1.0, le commentaire n'est écrit qu'avec la première chaîne.)

  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.
    

L'exemple ci-dessus possède un commentaire sans directive « #flag:comment », pour lequel un commentaire implicite « #flag:comment:* » est ajouté. Ce commentaire apparaît avec toutes les chaînes, mais celui à propos de « Stop for Maintenance » est affiché seulement avant la chaîne appropriée.

Ce mot clé signifie à po2debconf de garder les chaînes traduites même si elles ne sont pas toutes traduites. Utilisez ceci avec prudence, ce mot clé a été introduit pour des cas très particuliers.

AVERTIR LES TRADUCTEURS AVANT LA MISE À JOUR

Habituellement les traducteurs s'informent depuis les pages d'état des traductions (voyez ci-dessous) que des traductions ne sont pas à jour et envoient un correctif qui sera inclus dans une future mise à jour. Cependant, les développeurs sont encouragés à demander aux responsables de traductions en retard de fournir une mise à jour, par exemple une semaine avant. Un outil spécialisé, podebconf-report-po, a été écrit pour cet usage. N'hésitez pas à en abuser !

Vous remarquerez que debconf-loadtemplate n'accepte pas de fichier de traduction comportant des marques d'internationalisation. Cependant un fichier fusionné sera accepté, donc si vous avez débogué votre configuration debconf de la façon suivante

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

Vous aurez besoin de quelque chose comme cela à la place :

  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

  • La version 1.2.0 de « debconf » reconnaît les champs de la forme Nom-langue.codage, par exemple « Description-de.ISO-8859-1 » ou « Choices-ru.KOI8-R ». Par défaut, po2debconf crée les fichiers de questionnaire avec ce nouveau format. Les versions plus anciennes de « debconf » ignorent ces champs et affichent le texte en anglais. Consultez po2debconf(1) pour savoir comment modifier le codage et le format de sortie.
  • Une chaîne donnée en anglais ne peut avoir qu'une unique traduction par langue. Il est impossible de fournir deux traductions différentes en fonction du contexte. Pour résoudre ce problème, vous pouvez ajouter des balises spéciales aux différentes occurrences d'une chaîne pour les rendre distinctes (ces balises ne seront visibles que des traducteurs et seront supprimées de la chaîne avant l'affichage à l'utilisateur).

    De telles balises doivent être ajoutées à la fin des chaînes à traduire, elles doivent commencer par « [  » (un crochet ouvrant suivi d'une espace) et se terminer par « ] » (un crochet fermant) et peuvent contenir tout caractère hormis des crochets et des retours à la ligne. Par exemple « [ blabla] » est une balise valable alors que « [ bla[bla]bla] » ne l'est pas. Pour les mordus de Perl, les balises correspondent à (et sont supprimées avec) cette règle :

      $msg =~ s/\[\s[^\[\]]*\]$//s;
        
  • L'espacement n'est pas géré exactement de la même façon par « po-debconf » et « debconf-utils » ; avec ce dernier, les paragraphes sont reformatés lors de la mise à jour et de la fusion des traductions, « debconf-utils » est donc très élégant et les espaces ne sont pas considérés comme faisant partie des chaînes lors de la détermination des entrées approximatives (c'est-à-dire celles qui requièrent l'attention du traducteur suite à une modification des originales).

    D'un autre côté, « po-debconf » se repose sur « gettext » pour détecter les entrées approximatives et ne traite pas les espaces comme des caractères particuliers. Ainsi les espaces superflus doivent être supprimés à la fin des lignes des fichiers maîtres de questionnaires, sinon ils apparaîtront dans les fichiers PO et POT.

    Pour la même raison, debconf-gettextize peut marquer un texte comme approximatif à cause de différences dans les caractères espaces et les traducteurs devront modifier eux-mêmes de telles chaînes. Cela ne survient qu'une seule fois lors de la conversion des questionnaires au format « po-debconf », à moins que vous ne modifiez aléatoirement les espaces dans les fichiers maîtres de questionnaires, ce qui gênerait les traducteurs.

  • Normalement, le champ Default: ne doit pas être traduit pour les types de questionnaires Select et Multiselect. Dans de rares circonstances (par exemple lors du choix de la langue par défaut pour une application) une valeur régionale peut être plus appropriée.

    La valeur fournie par le traducteur ne doit pas être une simple traduction, mais doit au contraire être choisie parmi les valeurs en anglais listées dans le champ Choices. Le meilleur moyen de l'indiquer est d'ajouter un commentaire dans le fichier de questionnaire, qui sera recopié dans le fichier PO.

      Template: geneweb/lang
      Type: select
      __Choices: Danish (da), Dutch (nl), English (en), Esperanto (eo)
      #  You must NOT translate this string, but you can change its value.
      #  The comment between brackets is used to distinguish this msgid
      #  from the one in the Choices list; you do not have to worry about
      #  them, and have to simply choose a msgstr among the English values
      #  listed in the Choices field above, e.g. msgstr "Dutch (nl)"
      _Default: English (en)[ default language]
      _Description: Geneweb default language
        

    La valeur par défaut apparaît aussi dans le champ Choices et les deux ont des traductions différentes. Dans le premier cas, il s'agit d'une autre valeur en anglais choisie parmi la liste des valeurs possibles du champ Choices, alors que pour le second cas il s'agit d'une traduction classique. Comme « gettext » ne permet pas d'avoir deux traductions différentes du même texte, les deux champs msgid doivent être différenciés, ce qui est exactement le but original de l'utilisation des commentaires entre crochets, comme expliqué précédemment.

    Avant « po-debconf » 0.8.0, ces commentaires étaient inconnus et les responsables de paquets devaient remplacer le champ _Default: par _DefaultChoice: afin d'indiquer aux traducteurs le caractère spécial de ce champ :

      #. DefaultChoice
      msgid ""
      "English[ default: do not translate bracketed material, put your "
      "own language here but UNTRANSLATED.  If it is not in the list, "
      "put English (without bracketed material)]"
      msgstr ""
      "French"
        

    Les commentaires dans les fichiers de questionnaires permettent d'éviter plus facilement les erreurs des traducteurs et sont encouragés.

Les statistiques des traductions « po-debconf » sont disponibles sur <http://www.debian.org/intl/l10n/po-debconf/> (ou sur l'un des miroirs) ; ils sont automatiquement mis à jour lorsqu'un paquet est mis à jour. Seuls les paquets contenant des fichiers debian/po/templates.pot et debian/po/POTFILES.in sont pris en compte, vous devriez donc vous assurer que votre paquet source les fournit.

Les traducteurs peuvent récupérer les fichiers PO et POT depuis cette page, mais ils doivent toujours prendre contact avec le traducteur précédent (son adresse de courriel peut être trouvée dans le fichier PO) ou les membres de l'équipe de traduction sur debian-l10n-<langue>@lists.debian.org (si une telle liste existe, comme c'est le cas pour le français avec debian-l10n-french@lists.debian.org), pour vérifier que personne n'effectue actuellement le même travail. Lisez aussi les rapports de bogues sur le paquet que vous êtes en train de traduire pour vérifier si une traduction n'a pas déjà été soumise.

Après avoir traduit ces fichiers, ils devraient soumettre leur travail au responsable du paquet par un rapport de bogue de sévérité wishlist (souhaitable) avec le marqueur patch (rustine).

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>

  Nicolas Bertolissio <nico.bertol@free.fr>
  Denis Barbier <barbier@linuxfr.org>
2020-12-30