Dans la définition des étapes et des transitons d'un cycle de vie, nous avons vu qu'il n'était pas possible de mettre des espaces et des caractères accentués dans les noms.
En effet, ces noms sont utilisés comme attributs de la famille cycle de vie. Ils correspondent également aux noms des champs de la table dans la base de données.
Le but de ce document est donc d'expliquer comment utiliser la localisation pour traduire ces attributs en textes plus complet dans la langue de votre choix (en français ou en anglais)
Voici l'exemple de cycle que nous allons réaliser dans ce document :
Avoir déjà mis en place un cycle de vie simple comme indiqué dans cette documentation :
Pour ce document, nous allons mettre en place un cycle de vie très simple avec seulement deux étapes et deux transitions.
Attention : Les lignes en commentaire avec les _() et N_() sont importantes car ce sont elles qui nous permettrons de localiser les textes dans les différentes langues (français et anglais)
<?php include_once("FDL/Class.WDoc.php"); define ("i18n","i18n"); Class WDocTest extends WDoc { public $attrPrefix="WDT"; public $firstState="wdt_Draft"; public $transitions = array("wdt_Approvement"=>array(),# _("wdt_Approvement") _("wdt_Correction") _("wdt_Chechin") "wdt_Correction"=>array(), "wdt_Chechin"=>array(), "wdt_Destroy"=>array()); public $cycle = array(array("e1"=>"wdt_Draft", # _("wdt_Destroy") _("wdt_Draft") _("wdt_Approved") _("wdt_Check") _("wdt_Obsolete") "e2"=>"wdt_Approved", "t"=>"wdt_Approvement"), array("e1"=>"wdt_Approved", "e2"=>"wdt_Check", "t"=>"wdt_Chechin"), array("e1"=>"wdt_Approved", "e2"=>"wdt_Draft", "t"=>"wdt_Correction"), array("e1"=>"wdt_Draft", "e2"=>"wdt_Obsolete", "t"=>"wdt_Destroy"), array("e1"=>"wdt_Approved", "e2"=>"wdt_Obsolete", "t"=>"wdt_Destroy")); function postConstructor() { $this->stateactivity=array("wdt_Draft"=>N_("writting"), "wdt_Approved"=>N_("check in")); } } ?>
La première étape consiste à récupérer le contenu des constantes du fichier .php précédent pour générer un nouveau fichier .po qui nous permettra de renseigner les traductions :
# xgettext --keyword='N_' --language=c --keyword='_' -j -o test_fr.po Class.WDocTest.php
Ensuite, il faut éditer ce fichier texte « .po », indiquer le bon encodage sur la ligne « Content-Type » et ajouter les traductions. Exemple :
msgid "" msgstr "" "Project-Id-Version: TEST\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-01-02 23:42+0100\n" "PO-Revision-Date: 2009-01-02 23:56+0100\n" "Last-Translator: me\n" "Language-Team: french <LL2@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: Class.WDocTest.php:10 msgid "wdt_Approvement" msgstr "Approbation" #: Class.WDocTest.php:10 msgid "wdt_Correction" msgstr "Correction" #: Class.WDocTest.php:10 msgid "wdt_Chechin" msgstr "Archivage" #: Class.WDocTest.php:15 msgid "wdt_Destroy" msgstr "Destruction" #: Class.WDocTest.php:15 msgid "wdt_Draft" msgstr "Initialisé" #: Class.WDocTest.php:15 msgid "wdt_Approved" msgstr "Validé" #: Class.WDocTest.php:15 msgid "wdt_Check" msgstr "Archivé" #: Class.WDocTest.php:15 msgid "wdt_Obsolete" msgstr "Obsolète" #: Class.WDocTest.php:31 msgid "writting" msgstr "En rédaction" #: Class.WDocTest.php:32 msgid "check in" msgstr "En cours d'archivage"
Remarques : * Pour mettre en place une traduction en anglais, il faut créer un deuxième fichier .po et indiquer les traductions en anglais.
Il faut commencer par convertir le fichier texte « .po » en fichier binaire « .mo » :
# msgfmt test_fr.po -o /usr/share/what/locale/fr/LC_MESSAGES/test.mo
Remarque : La commande « msgunfmt » permet de faire l'inverse :
# msgunfmt fichier.mo -o fichier.po
Remarque : Pour mettre en place une traduction en anglais, il faut utiliser le dossier “locale/en/LC_MESSAGES/”
Assembler les différents fichiers « .mo » dans « what.mo » utilisé par Freedom :
# /usr/share/what/whattext
Recharger Apache :
# /etc/init.d/apache2 reload
Remarque : Le cycle de vie doit apparaître traduit immédiatement.
Pour avoir le graphe en anglais, on procède de la même façon en copiant le fichier de traduction dans le répertoire “locale/en/LC_MESSAGES/”.
Pour avoir l'interface de Freedom en anglais pour tout les utilisateurs, il faut modifier ce paramètre :
Pour avoir l'interface de Freedom en anglais pour un utilisateur particulier, il faut modifier ce paramètre :
Remarques :