Souvent, lors de l’utilisation d’un programme ou d’un outil externalisant ces messages, tels que les plugins ou thèmes des CMS, on trouve que l’outil ne prend pas en charge notre langue ou qui la traduction n’est pas complète. La plus part des outils utilisent des fichiers de traductions d’une extension mo (machine object) et po (portable object). Dans cet article j’essayerai d’expliquer comment peut-on appliquer notre traduction aux fichiers po et mo.
Les po représentent des fichiers éditables contenant des messages utilisés par l’outil, il comporte un en-tête pour décrit le fichier et une alternance de message origine d’écrit dans la source du programme (msgid) et la traduction sur la ligne suivante (msgstr). Ci-dessous un exemple extrait de la traduction française du CMS WordPress (/[Blog-name]/wp-includes/languages):
# Copyright (C) 2010 WordPress
# This file is distributed under the same license as the WordPress package.
#
# French translation by the WordPress-Francophone team:
# Xavier Borderie
# Amaury Balmer
#
msgid ""
msgstr ""
"Project-Id-Version: WordPress 3.0.1\n"
"Report-Msgid-Bugs-To: wp-polyglots@lists.automattic.com\n"
"POT-Creation-Date: 2010-07-29 21:05+0000\n"
"PO-Revision-Date: 2011-01-18 18:48+0100\n"
"Last-Translator: WordPress Francophone\n"
"Language-Team: WordPress Francophone\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1\n"
"X-Poedit-Language: French\n"
"X-Poedit-Country: France\n"
"X-Poedit-SourceCharset: utf-8\n"
#: wp-admin/admin-ajax.php:36
#, php-format
msgid "<strong>ALERT: You are logged out!</strong> Could not save draft. <a href="\" target="\"_blank\"">Please log in again.</a>"
msgstr "<strong>ALERTE : vous êtes déconnecté(e) !</strong> Impossible d’enregistrer le brouillon. <a href="\" target="\"blank\"">Veuillez vous reconnecter.</a>"
Au contraire des po, les mo représentent des fichiers binaires compilés des po, donc on ne peut pas les éditer via un éditeur de texte tel que gedit.
Conversion po to mo
Traduire les messages consiste à éditer les fichiers po en affectant pour chaque msgid un msgstr. Quand le po est complet, pour qu’il soit utilisable par l’outil, il faut le compilé et le convertir en mo.
Sous un système GNU linux, pour convertir un fichier po vers un mo, il faut utiliser la commande « msgfmt » du paquet « gettext » (disponible par défaut dans Ubuntu) comme suit :
Sous windows, je recommande l’utilisation de la solution libre Poedit. Télécharger et installer Poedit, et lancer la commande :
Conversion mo to po
Dans quelques cas, le programme ne fournie pas son fichier po, mais juste son fichier compilé mo. Pour qu’on puisse ajouter notre apport à sa traduction, il est nécessaire de convertir le mo en po.
Sous GNU Linux, on peut utiliser la commande « msgunfmt » du paquet « gettext » comme suit :
Sous windows, après installerPoedit, essayer la commande suivante :
Dans le cas ou vous avez traduit l’outil vers une nouvelle langue ou vous avez complété sa traduction, adopter un esprit de partage et partager votre modification sur le site officiel du programme.
salut,
l’article est très intéressant. par contre de temps a autre tu mélanges PO et MO et même a un moment tu utilises le terme OO pour parler de MO…
peux-tu apporter les modifactions a l’article. il en sera encore plus claire.
Bonjour,
Merci pour tes remarques. Les modifications on été apportées à l’article. J’espère qu’il est plus clair maintenant.
Bonjour, je trouve trés intérréssant l’article qui explique le principe de fonctionnement en conversion.
Mon problème est de traduire dans une autre langue (sachant qu’il existe déja des mo et po).
Si je veus traduire je prends comme base, le po ou je dois remonter sur les fichiers d’origine et compiler avec un autre logiciel (exple: Fichier php pour theme wordpress).
Merci pour les réponses que vous pourrez m’apportez.
Bonjour ;
S’il n’y a aucune mise à jour dans tes fichiers PHP, pourquoi régénérer un fichier po? Tu peux utiliser le fichier po existant, faire ta traduction et ensuite générer un fichier mo (c’est ce que j’ai fait pour ce blog).
La régénération des fichiers po sera utile quand tes fichiers PHP ont été mises à jour (ajout de nouveaux messages par exemple), dans ce cas tu peux utiliser Poedit pour générer les po que tu convertiras par la suite à des fichiers compilés mo.
J’espère que ça t’aidera.
Bonjour, très inéressant, mais la commande ne marche pas.
Fichier .bat créé avec la commande dedans, mais le fichier .po n’est pas généré (aucune erreur de frappe).
(pour le jeu World of Tanks)
Merci de toute réponse.
Cordialement,
Erwin0859
intéressant*
Bonjour Erwin, quelle commande qui ne marche pas (msgfmt ou msgunfmt)? Je ne sais pas de quel fichier .bat tu parle. les deux commandes ne génèrent pas de fichier .bat
Merci de m’éclaircir plus ton problème?
If you want to convert po files to mo files, you can use this online converter http://po2mo.net/
Thank you Wayne for the extra link. 100% Working!
Bonjour, tout d’abord merci pour l’article. très instructif. je viens de suivre tes conseils, néanmoins Poedit ne lit toujours pas le fichier mo.
Existe t il une autre méthode ?
Cordialement
Salut
Merci pour ce tuto.
Quand j’essaie de télécharger des fichiers po sur internet, j’ai le fichier qui s’ouvre dans une nouvelle page web au lieu d’avoir un téléchargement du fichier dans un dossier sur mon pc. Je me retrouve avec le code complet affiché et je ne vois pas quoi faire avec. (pas de soucis pour le fichier mo)
Peux tu m’aider?
Par avance merci.
Bonjour Jeremyg,
Les fichiers po sont des fichiers éditables, et donc il est possible de voir leur contenu directement dans le navigateur. Cependant si tu as des souci de téléchargement je te propose de faire clique droit sur le lien po et choisir enregistrer la cible du lien sous… (ou ce qui est similaire selon ton navigateur).
root@khalid
Effectivement, le téléchargement fonctionne avec cette méthode mais je n’arrive pas à l’ouvrir avec Poedit (fichier corrompu) Peut être tombé sur un mauvais fichier. J’ai réussi à me débrouillé en partant d’un fichier de trad d’une autre langue en l’ouvrant avec un éditeur de texte puis changement complet du code. Mais c’est un peu de la bidouille à mon sens.
Merci pour ton aide.
tres tres pertinnent.mci