Traduire un programme internationalisé avec gettext

Problème

Un programme est prêt à être traduit et vous souhaitez démarrer la traduction des chaînes de caractères.

Solution

Créez un fichier PO en copiant le fichier modèle pour les traductions. Puis éditez-le pour traduire les chaînes de caractères qui correspondent à celles de l’interface utilisateur. Générez un fichier MO avec msgfmt et installez-le dans le répertoire des locales.

Discussion

La création d’un fichier PO s’effectue par copie du fichier modèle dont l’extension est .pot, et qui contient toutes les chaînes de caractères à traduire. Ce fichier n’existant pas forcément, voici comment le générer avec xgettext :

xgettext -L C --keyword=_ --keyword=N_ fichiers_source1.c
                             fichier_source2.c ... 

Si votre code contient comme le nôtre des caractères non ASCII, il se peut que xgettext ait des difficultés et vous invite à utiliser l’option --from-code. Dans ce cas, essayez un encodage autre que ASCII avec par exemple --from-code=UTF-8 ou --from-code=ISO-8859-15.

Cette commande génère un fichier message.po que nous renommons du même nom que le contenu de la macro PACKAGE utilisée dans le programme, avec l’extension pot, par exemple exemple.pot. Voici ce que contient un tel fichier (exemple généré à partir du programme d’exemple...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Internationaliser un programme avec gettext
Suivant
Maintenir à jour la liste des chaînes à traduire