Exemple d'utilisation de Gettext

Côté programmeur

Pour commencer, nous créons un petit programme Python (essai.py) :

   1 #!/usr/bin/env python
   2 # -*- coding: UTF-8 -*-
   3 
   4 print u'Hello, World.'

L'exécution de ce programme donne le résultat attendu :

$ ./essai.py
Hello, World.

Nous ajoutons les en-têtes utilisés par Gettext et nous instrumentons les chaînes de caractères à traduire :

   1 #!/usr/bin/env python
   2 # -*- coding: UTF-8 -*-
   3 
   4 import gettext
   5 gettext.bindtextdomain('essai', '.')
   6 gettext.textdomain('essai')
   7 _ = gettext.gettext
   8 
   9 # TRADUCTEURS : ce message ne doit pas
  10 # dépasser 72 caractères
  11 print _(u'Hello, World.')

Il ne reste plus qu'à extraire les chaînes à traduire avec l'outil xgettext :

xgettext -L python -o essai.pot \
         --add-comments='TRADUCTEURS :' \
         essai.py

Le fichier produit par xgettext est le suivant :

#. TRADUCTEURS : ce message ne doit pas
#. dépasser 72 caractères
#: essai.py:13
msgid "Hello, World."
msgstr ""

C'est ce fichier qui sera envoyé aux traducteurs (en le renommant .po). Ceux-ci n'auront plus qu'à ajouter dans les chaînes « msgstr » la traduction des chaînes « msgid ».

Côté traducteur

Le traducteur reçoit le fichier .po et le traduit :

#. TRADUCTEURS : ce message ne doit pas
#. dépasser 72 caractères
#: essai.py:13
msgid "Hello, World."
msgstr "Bonjour, Monde."

Il ne reste plus au traducteur qu'à compiler le fichier .po, à l'installer :

mkdir -p fr/LC_MESSAGES
msgfmt -c -o fr/LC_MESSAGES/essai.mo essai.po

Et à l'essayer :

$ ./essai.py
Bonjour, Monde.
Heberge par Ikoula