NOM¶
po4a-runtime - po4a et traduction gettext des messages affichés pendant
l'exécution sans Autotools
Introduction¶
Avec
po4a-build,
po4a peut aussi prendre en charge la traduction
des messages de sortie des scripts à l'aide de gettext. Pour cela, il
n'est pas nécessaire que le programme utilise les Autotools et le
processus
./configure habituel.
En utilisant les extraits de
Makefile en exemple, les paquets peuvent
exploiter
intltool avec un minimum d'efforts.
La traduction de la documentation ne devrait jamais utiliser le même
répertoire
po/ que la traduction des messages affichés
pendant l'exécution. Même si la traduction des messages
affichés pendant l'exécution peut utiliser des
répertoires ne s'appelant pas
po/, il est
généralement plus facile de respecter la convention.
Multiples langages¶
Juste un mot sur les paquets qui utilisent des scripts écrits dans
plusieurs langages de programmation, Perl et shell par exemple. Prenez
garde : gettext sera perturbé et oubliera des chaînes
d'un langage ou d'un autre sauf si les extensions de fichier sont
utilisées pour le langage qui pose le moins de problèmes.
Lors de l'utilisation de plusieurs langages, faites des essais avec
différents réglages de
po/Makevars jusqu'à avoir
toutes les chaînes nécessaires dans le fichier POT.
En particulier, indiquer deux langages dans
po/Makevars peut être
problématique. Plutôt que :
# Ne faites pas ça :
XGETTEXT_OPTIONS = -L Perl -L Shell --from-code=iso-8859-1
Envisagez de renommer (ou de mettre en place des liens symboliques pour) tous
les fichiers de l'un des langages impliqués et évitez les
options -L explicites. L'extension de fichier n'est nécessaire que
pendant le traitement de
po/POTFILES.in.
L'option --keywords peut également être utile, voir la
documentation de xgettext.
Remplissage de po/¶
D'abord, créez le répertoire
po/ de plus haut niveau puis
utilisez les fichiers exemples de
/usr/share/doc/po4a/examples/ pour le
remplir.
- LINGUAS
- Doit exister, même vide. C'est une liste des traductions, chaque
ligne qui ne commence pas par « # » doit
correspondre à un fichier PO existant. Par exemple, si
LINGUAS contient seulement une ligne
« fr », un fichier fr.po doit exister
à côté du fichier LINGUAS.
$ cat po/LINGUAS
cs
de
fr
$
Par convention, le fichier LINGUAS est ordonné
alphabétiquement, mais ce n'est pas automatiquement fait.
- POTFILES.in
- La liste des fichiers contenant des messages affichés pendant
l'exécution à traduire, c'est-à-dire les scripts. Si
le répertoire po/ de plus haut niveau est utilisé,
les chemins devraient être relatifs au répertoire de plus
haut niveau, pas au répertoire po/ lui-même.
$ ls -l
monscript.pl
unautre.pl
truc/gestion.pl
po/
po/POTFILES.in
$ cat po/POTFILES.in
monscript.pl
unautre.pl
truc/gestion.pl
$
Remarquez que les scripts eux-mêmes peuvent contenir des messages
affichés pendant l'exécution et de la documentation, tous
deux à traduire ; par exemple, ils peuvent utiliser les
fonctions de gettext pour les messages affichés pendant
l'exécution et des contenus POD embarqués pour la
documentation. Donc ça ne pose pas de problème d'avoir le
même fichier à la fois dans po/POTFILES.in et
doc/po4a-build.conf.
- Makevars-perl.example
- Si les scripts sont écrits en Perl, copiez ce fichier exemple vers
po/Makevars et modifiez-le selon vos besoins.
- Makevars-shell.example
- Si les scripts sont écrits en shell, copiez ce fichier exemple vers
po/Makevars et modifiez-le selon vos besoins.
- po4a-build.make
- Copiez ce fichier exemple vers po/Makefile, il ne devrait pas
être nécessaire de le modifier, mais vous pouvez vouloir le
garder à jour par rapport à
/usr/share/doc/po4a/examples/po4a-build.make. Celui-ci peut
être mis à jour au sein de po4a en fonction des
modifications de la prise en charge sous-jacente d'intltool. Le fichier
lui-même a été créé à partir
d'un autre projet utilisant les Autotools et intltool.
Construction¶
Ces extraits doivent être ajoutés au Makefile de plus haut niveau
ou à tout fichier nécessaire en fonction de la méthode
utilisée pour préparer les sources du programme pour sa
distribution.
clean:
$(MAKE) -C po/ clean
install:
$(MAKE) -C po/ install DESTDIR=$(DESTDIR)
dist:
$(MAKE) -C po/ pot
(Dans un projet utilisant les Autotools, l'ajout aurait été
automatique après avoir simplement ajouté
po à la
valeur "SUBDIRS" de
Makefile.am.)
Maintenance¶
La traduction des messages affichés pendant l'exécution n'est pas
aussi simple que
po4a-build car l'ajout d'une nouvelle traduction
nécessite de modifier
po/LINGUAS, mais à part cela, la
mise à jour des traductions se réduit simplement au remplacement
du fichier PO correspondant par sa nouvelle version.
En fonction de la façon de préparer l'archive source, il peut
être nécessaire d'indiquer la liste des nouveaux fichiers PO au
fichier
MANIFEST ou les ajouter aux scripts qui s'occupent de
préparer l'archive source (cette remarque s'applique aussi à
po4a-build).
Tous les fichiers
*.mo ou
*.gmo du répertoire
po/
peuvent être effacés.
Copyright¶
Même si les fichiers exemples font partie du projet po4a, vous
êtes libre de les utiliser, les modifier et les distribuer dans vos
projets sans avoir besoin de renvoyer vers po4a ou d'ajouter l'équipe
de po4a dans vos indications de copyright, de même que les autres
outils de construction comme Automake lui-même. Si vous voulez citer
po4a, c'est très bien aussi.
AUTEURS¶
Neil Williams <linux@codehelp.co.uk>
TRADUCTION¶
Martin Quinson (mquinson#debian.org)