POEdit¶
POEdit est un éditeur de traductions de chaînes en plusieurs langues. Les chaînes présentes dans l’interface des applications openMairie sont celles présentes dans le code.
Les étapes sont les suivantes :
1 - avoir dans le code .php les chaînes à traduire, comme argument de la fonction gettext()
(alias _()
)
2 - préparer les dossiers de traductions dans le dossier de locales
3 - avoir préalablement installé et configuré POEdit
- 4 - configurer le projet dans POEdit et effectuer un scan du code afin de détecter
- les chaînes à traduire
5 - traduire les chaînes dans POEdit et sauvegarder
- 6 - à l’exécution du PHP la chaine est traduite, un redémarrage du serveur web peut être
- nécessaire
Spécification dans le code des chaînes à traduire¶
Les chaînes peuvent être traduites, soit en français, soit dans d’autres langues. Pour cela il est nécessaire qu’elles soient présentes dans les fichiers.php en respectant la syntaxe suivante
``__('Ma chaine à traduire')``
Toutes les chaînes de caractères correspondant aux noms de tables et de champs sont générées par le générateur et sont ainsi directement disponibles pour une traduction.
Depuis OM 4.9, la fonction __()
surcharge la fonction _()
. Cette fonction cherche
à traduire en utilisant:
- d’abord le domaine de traduction applicatif:
./locales/fr_FR/LC_MESSAGES/openmairie.po
- sinon le domaine de traduction framework:
./core/locales/fr_FR/LC_MESSAGES/framework-openmairie.po
- sinon en renvoyant un second argument communicable par la fonction
__($msg_id, $msg_default)
- sinon le texte est renvoyé en l’état
(exemple pour l’environnement système fr_FR
)
Préparation des dossiers de locales¶
Chaque application openMairie comporte, à la racine, un dossier appelé
locales
.
Ce dossier comporte une structure de type
locales/
fr_FR/
LC_MESSAGES/
openmairie.po
openmairie.mo
Il est nécessaire de créer un dossier de langue (par exemple en_US
) avec
son sous-dossier LC_MESSAGES
pour chaque langue supplémentaire.
Le fichier .po contient les définitions de traductions ; il peut être modifié au moyen de POEdit ou directement depuis un éditeur de texte simple.
Le fichier .mo contient les traductions sous une forme compilée. Il est généré par POEdit automatiquement lors de chaque sauvegarde des traductions.
Installation et configuration de POEdit¶
Installation¶
POEdit est disponible nativement dans la plupart des systèmes linux. Il est possible de le télécharger depuis le site officiel pour tous Linux, Windows et Mac OSX.
http://www.poedit.net/download.php
Sous Linux Ubuntu ou Debian, il faut, en root, exécuter la commande
apt-get install poedit
Gestion de plusieurs langues¶
Une fois installé, il faut s’assurer que les locales
(fichiers de définition
de langues) sont correctement installés sur le système.
Sous Linux Ubuntu, pour ajouter une locale, il faut ajouter sa définition dans
le fichier de pays correspondant (exemple : /var/lib/locales/supported.d/fr
)
puis lancer la commande, en root, dpkg-reconfigure locales
. Cela ne sera
nécessaire que pour ajouter la prise en charge d’une nouvelle langue.
Configuration d’un projet dans POEdit¶
Ouvrir le projet en ouvrant le fichier
./locales/fr_FR/LC_MESSAGES/openmairie.po
Configurer le projet: menu
Catalogue > Propriétés ...
- Propriétés de traduction
- Nom et version du projet:
openmonapplication
- Equipe de langue: Nom contact <contact@monorganisation.org>``
- Langue:
français
pour fr_FR - Jeux de caractètre: UTF-8
- Nom et version du projet:
- Chemin des sources
- Chemin de base: le répertoire racine de l’application
./
… le chemin sera peut-être affiché en absolu, mais sera bien stocké en relatif par POEdit - Chemins:
.
… ceci permet d’inclure par défaut tout répertoire ajouté à vos sources - Chemins exclus: les chemins pris en charge par le domaine de traduction du framework
core
gen/obj/om*
gen/sql/pgsql/om*
lib
php
- Chemin de base: le répertoire racine de l’application
- Mots-clés sources
- Ajouter
__
pour pouvoir utiliser la fonction__()
en plus de_()
- Cocher
Utiliser également les mots-clés par défaut pour les langues supportées
- Ajouter
- Propriétés de traduction
Cliquer alors sur le bouton “Mettre à jour tous les catalogues du projet” : un scan de code est alors effectué par POEdit. Cela va parcourir tous les fichiers .php du dossier afin de détecter toutes les chaînes encadrées par
__()
et_()
.Le scan peut comporter des erreurs (des chaînes à traduire vides etc.). Dans ce cas le fichier et la ligne concernée sont indiqués dans le rapport d’erreur. Il est recommandé de corriger l’erreur et recommencer la mise à jour.
Le rapport affiche les chaînes désuètes (celles qui ne figurent plus dans le code) et les nouvelles chaînes. Les chaînes désuètes sont alors commentées dans le fichier .po et n’apparaissent plus dans l’interface de traduction.
Pour les chaînes relevant du framework openMairie, mais importée dans les sources lors d’une surcharge, on recommande de laisser intraduit. On peut ajouter un commentaire pour guider les prochains traducteurs. Pour les chaines qu’on souhaitent avoir traduites à l’identique, mieux vaut indiquer une traduction identique pour mieux identifier les chaines intraduites.
Traduction des chaînes¶
Depuis l’écran du projet dans POEdit, double-cliquer sur le fichier de la langue concernée. La liste des chaînes à traduire apparaît alors. Les nouvelles chaînes sont en premier, les chaînes modifiées en second et les autres chaînes ensuite. Il suffit de cliquer sur une chaîne et entrer la traduction dans le bloc de texte inférieur.
Il y a des raccourcis pour gagner du temps:
CTRL+B
: copier le texte-source dans la traductionCTRL+BAS
: passer au texte-source suivantclick-droit
indique les fichiers source concernés
A chaque sauvegarde, le fichier est compilé en un fichier .mo
, l’application
affiche alors les chaînes traduites à la place des libellés originaux.
Attention, sur certaines configurations, un redémarrage du serveur web peut être nécessaire pour que les traductions soient mises à jour.