NOM
po-debconf − Introduction
DESCRIPTION
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.
AJOUTER LA GESTION I18N POUR 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 :
− créer le fichier
debian/po/POTFILES.in
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.
− ajouter un
caractère souligné devant les champs
traduisibles dans
chaque questionnaire.
Normalement, les champs « Description », « Choices » et parfois « Default » peuvent être traduits.
− exécuter debconf-updatepo
Ceci créera le fichier debian/po/templates.pot que les traducteurs traduiront dans leur langue.
− ajouter une
dépendance de construction sur
"po−debconf" dans
debian/control
METTRE À 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 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 ; |
FUSIONNER DES TRADUCTIONS ET 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 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.
NOUVEAUX MODÈLES MAÎTRES
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 :
translate:spec, translate!:spec
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.
comment:spec, comment!:spec
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.
partial
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 !
DÉBOGAGE
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
AVERTISSEMENTS
• |
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.
PAGES WEB SUR L’ÉTAT DES TRADUCTIONS
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 [AT] lists.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).
VOIR AUSSI
debconf−gettextize(1), debconf−updatepo(1), dh_installdebconf(1), podebconf−report−po(1), po2debconf(1), debconf−devel(7).
AUTEURS
Martin Quinson <Martin.Quinson@ens−lyon.fr> Denis Barbier <barbier [AT] linuxfr.org>
TRADUCTION
Nicolas Bertolissio <nico.bertol [AT] free.fr> Denis Barbier <barbier [AT] linuxfr.org>