man po-debconf (Conventions) - introduction

NOM

po-debconf - introduction

DESCRIPTION

L'objectif de CWdebconf é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. Un système (appelé CWdebconf-utils dans ce document) avait ainsi été conçu pour permettre la traduction des questionnaires debconf.

Mais ce système avait quelques inconvénients, et le besoin d'une nouvelle solution s'est fait sentir. CWpo-debconf essaye de résoudre ces problèmes par l'utilisation des quelques idées qui se sont révélées utiles dans le contexte de la traduction de messages.

AVANTAGES DE CE SYSTÈME

-
Les traductions ne sont pas conservées avec l'original (comme c'était trop souvent le cas avec l'ancien système), ce qui permet de détecter les traductions obsolètes.
-
Les traductions sont conservées chacune dans un fichier séparé. Cela signifie que des traducteurs de deux langues différentes peuvent mettre à jour leur travail en même temps sans difficulté particulière pour le responsable du paquet. De plus, un traducteur ne peut pas casser le codage d'autres langues.
-
Il est basé de manière interne sur CWintltool (la réponse de GNOME aux difficultés d'internationalisation), qui est lui-même basé sur CWgettext (mais CWpo-debconf offre une interface très simple vous dispensant d'en comprendre le fonctionnement interne). Ainsi, il n'est pas nécessaire de réinventer la roue, et grâce à leur utilisation répandue, ces outils devraient être plus ou moins exempts de bogues.
-
Rien n'est modifié pour l'utilisateur final (à part le fait que les traductions sont plus faciles à gérer :). Le fichier de questionnaire distribué dans le paquet binaire est exactement le même (les problèmes de codage en moins ;).
-
Les traducteurs n'ont pas besoin d'apprendre une nouvelle syntaxe de fichier et leur éditeur de fichiers po préféré (comme le mode po d'emacs, kbabel ou gtranslator) fonctionne parfaitement.

En résumé, CWpo-debconf est un système qui facilite le travail des traducteurs et l'insertion de leur travail dans CWdebconf sans modifier ce qui ne devrait pas l'être.

CONVERSION DE VOTRE PAQUET À CE SYSTÈME

Pour convertir vos questionnaires debconf et vos traductions existantes, appelez debconf-gettextize à partir du répertoire principal avec en argument les noms des questionnaires maîtres. Par exemple :

  $ debconf-gettextize debian/toto.templates debian/tata.templates

Cette commande réalise les tâches suivantes :

- création des fichiers debian/po/xx.po
xx est le code de la langue dans laquelle le fichier est traduit ;
- création de debian/po/POTFILES.in
fichier contenant la liste des questionnaires maîtres et utilisé par debconf-updatepo ; dans cet exemple, le suffixe CW.old est ajouté aux fichiers toto.templates et tata.templates, et de nouveaux fichiers maîtres remplacent ceux-ci (voir ci-dessous).

Afin de terminer la conversion, vous devez :

a.
Vérifier que, dans les nouveaux fichiers questionnaires, le nom de tous les champs à traduire (et seulement ceux-ci) sont préfixés d'un souligné CW_ (voir Nouveaux questionnaires maîtres ci-dessous) ;
b.
Supprimer les fichiers obsolètes : master.old et les questionnaires traduits (par exemple templates.xx) ;
c.
Ajouter CWdebhelper (>= 4.1.16) à Build-Depends ou à Build-Depends-Indep dans debian/control pour utiliser dh_installdebconf. Si vous n'utilisez pas CWdebhelper, votre paquet devrait avoir une dépendance de construction directement envers CWpo-debconf ;
d.
Vous assurer que le fichier debian/rules génère le fichier de questionnaire traduit, soit par dh_installdebconf soit par po2debconf ;
e.
Si des fichiers debian/po/*.po.unknown ont été générés, cela signifie que le script n'a pas réussi à déterminer automatiquement le codage des langues correspondantes. Dans ce cas, vous devriez contacter le traducteur pour résoudre ce problème, ou demander de l'aide sur debian-i18n@lists.debian.org. Supprimez les suffixes CW.unknown lorsque le codage est corrigé (la plupart du temps, les étapes b et c ci-dessus sont suffisantes si vous utilisez dh_installdebconf).

MISE À JOUR DES MODÈLES

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 argument :

  $ 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'apparaitront 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 mailleure solution pour fournir des fichiers PO à jour consiste à exécuter cette commande depuis la règle CWclean 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 à son tour va appeler debconf-updatepo si des fichiers obsolètes sont détectés, mais ce n'est pas une solution satisfaisante pour au moins trois raisons :

1.
po2debconf utilise 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 CWpbuilder ou si une traduction obsolète a été enregistrée sur disque après modification de l'original ;
2.
dh_installdebconf est exécuté bien après que le fichier CW.diff.gz a été écrit ;
3.
à cause des points précédents, po2debconf sera modifié dans une version future et n'exécutera plus debconf-updatepo.

FUSION DES TRADUCTIONS ET DE L'ORIGINAL

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 numéro de version envers CWdebhelper (>= 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 envers CWpo-debconf) comme ceci :

  $ po2debconf debian/templates > debian/templates.merged

Puis, vous devriez installer le fichier résultant au bon endroit :

  $ cp debian/templates.merged debian/tmp/DEBIAN/templates

FAITES ATTENTION : Les deux fichiers appelés templates dans ces deux lignes ne sont pas les mêmes du tout. Le premier ne contient que le texte en anglais et les marques des champs à traduire, alors que le second contient toutes les traductions. C'est-à-dire que vous NE POUVEZ PAS ne conserver que les questionnaires fusionnés, ou alors vous ne pourrez plus gérer les traductions qui vous seront soumises.

En fait, c'était l'un des principaux inconvénients de l'ancien système CWdebconf-utils. Il était vraiment trop tentant pour les développeurs de ne conserver que le questionnaire fusionné, mais cela empêchait les traducteurs de garder la trace des modifications en anglais. Heureusement, comme les deux versions de ces fichiers n'ont pas exactement la même syntaxe, cette erreur ne sera plus faite.

NOUVEAUX MODÈLES MAÎTRES

Le nouveau format source de fichier de questionnaire est pratiquement identique à celui des fichiers de questionnaire 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: What interface should be used 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 CWpo-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 msgids différents. Ainsi si l'exemple précédent avait contenu :

  __Choices: Dialog, Readline, Gnome, Editor, Noninteractive

cinq msgids différents auraient été créés. Veuillez noter que les espaces après les virgules ne sont pas significatifs.

En fait, lorsqu'une liste de choix ne change jamais, CW_Choices convient, dans le cas contraire, CW__Choices facilite la vie du traducteur.

AJOUTER DES COMMENTAIRES POUR LES TRADUCTEURS

Les responsables de CWdpkg ont décidé que, par convention, les lignes dans les fichiers debian/control qui commencent par un symbole dièse sont des commentaires, et CWpo-debconf suit cette règle. Depuis CWpo-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 CWpo-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 CWpo-debconf. Un exemple d'utilisation se trouve dans la section suivante.

AVERTISSEMENTS

-
La version 1.2.0 de CWdebconf reconnaît les champs de la forme Nom-langue.codage, par exemple CWDescription-de.ISO-8859-1 ou CWChoices-ru.KOI8-R. Par défaut, po2debconf crée les fichiers de questionnaire à ce nouveau format. Les versions plus anciennes de CWdebconf ignorent ces champs et affichent le texte en anglais. Voir po2debconf(1) pour savoir comment modifier le codage et le format de sortie.
-
Une chaîne en anglais donnée 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 CW[ (un crochet ouvrant suivi d'un espace) et se terminer par CW] (un crocher fermant), et peuvent contenir tout caractère hormis des crochets et des retours à la ligne. Par exemple CW[ blabla] est une balise valide alors que CW[ 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 CWpo-debconf et CWdebconf-utils ; avec ce dernier, les paragraphes sont reformatés lors de la mise à jour et de la fusion des traductions, CWdebconf-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é, CWpo-debconf se repose sur CWgettext pour détecter les entrées approximatives, et ne traite pas les espaces comme des caractères particuliers. Ainsi les espaces superfétatoires 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 CWpo-debconf, à moins que vous ne modifiiez 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 (l'exemple est en français, mais il faut évidemment l'écrire en anglais).
  Template: geneweb/lang
  Type: select
  __Choices: Danish (da), Dutch (nl), English (en), Esperanto (eo)
  #  Vous NE devez PAS traduire cette chaîne, mais vous pouvez changer
  #  sa valeur. Les commentaires entre crochets sont utilisés pour
  #  différencier ce msgid de celui obtenu à partir du champ Choices.
  #  Vous n'avez pas besoin de vous en préoccuper, et devez simplement
  #  choisir une des valeurs listées dans le champ Choices ci-dessus,
  #  par exemple 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 CWgettext ne permet pas d'avoir deux traductions différentes du même texte, les deux msgids 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 CWpo-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[ valeur par défaut : ne traduisez pas la partie entre "
  "crochets, indiquez ici votre propre langue SANS la traduire. "
  "Si elle n'apparaît pas dans la liste, indiquez English (sans la "
  "partie entre crochets)]"
  msgstr ""
  "French"
Les commentaires dans les fichiers de questionnaire permettent d'éviter plus facilement les erreurs des traducteurs, et sont encouragés.

PAGES WEB SUR L'ÉTAT DES TRADUCTIONS

Les traducteurs peuvent récupérer les fichiers PO et POT à partir de <http://www.debian.org/intl/l10n/po-debconf/> (ou de miroirs). Après avoir traduit ces fichiers, ils devraient soumettre leur travail au responsable du paquet par un rapport de bogue de sévérité minor (mineur) avec le marqueur patch (rustine).

La page ci-dessus est mise à jour automatiquement quand de nouveaux paquets sont téléchargés. 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.

VOIR AUSSI

AUTEURS

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

TRADUCTION

  Nicolas Bertolissio <nico.bertol@free.fr>