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 :
- - 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
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.
À 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.
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.
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
[email protected]), 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 <[email protected]>
Denis Barbier <[email protected]>
Nicolas Bertolissio <[email protected]>
Denis Barbier <[email protected]>