Toujours du texte

Publié le 07 novembre 2007 par Peck

Cet article est sur http://linux-attitude.fr/post/Toujours-du-texte
Niveau :


Résumé : setlocale ; xgettext ; gettextize

Maintenant vous savez utiliser gettext. Allons un peu plus loin. Vous avez internationalisé votre application et commencé à la traduire. Mais vous voudriez aussi l'installer et la rendre utilisable par tous facilement.

Pour cela il faut choisir la bonne locale en fonction de l'utilisateur. La solution retenue dépendra du type de l'application.

Si c'est une application web, basez vous sur la langue du navigateur, fournie pendant la négociation http ou la lange du serveur par défaut.


Notez qu'ici on modifie LC_ALL qui impacte tous les éléments de locale (date, monnaie ...). Si vous ne voulez modifier que la locale liée à la tradution utilisez LC_MESSAGES à la place.


Si votre application est un programme local, basez vous sur la locale du système grâce aux variables d'environnement. Pour cela, il suffit d'appeler simplement setlocale :

/* code C, transposable aisément :-) */
setlocale( "LC_ALL", "");

Atention, quel que soit le langage, setlocale doit etre appelée avant vos appels à bindtext et textdomain.

Pour installer vos traductions sur un système unix, mettez les dans /usr/share/locale/fr/LC_MESSAGES.


Il vous faudra aussi maintenir vos traductions, pour cela vous devrez utiliser régulièrement xgettext pour extraire vos chaînes mises à jour. De plus à force de traduire, vous verrez que ce n'est pas toujours drôle de repérer les dernières modifications ou de faire des recherches avec un éditeur de texte normal. C'est pourquoi il vous faudra apprendre à utiliser un outil comme poedit pour éditer les fichiers .po