A savoir des fichiers de traductions au format textes. L'objet $langs
est crée de manière globale par la classe "Translate",
ensuite en fonction des besoins on execute $langs->load("xxx") qui
permet de charger la traduction du fichier xxx ce qui
permet de créer des grouper les traductions par catégorie (catégorie
xxx) et permet de ne charger que les traductions
en rapport avec le besoin. Ensuite, pour afficher une chaine
$langs->trans("MyString");
Il y a de plus, une gestion cachée qui évite de lire plusieurs fois
le meme fichier si l'un d'eux est deja chargé ce qui permet
de charger un fichier de traduction ou on veut en fonction des
besoins sans que cela ne génère des accès disques inutiles.
je vais regarder cela de plus pres pour me faire une opinion.
J'ai fait un test avec gettext avec les dernieres sources de dolibarr,
et cela etait relativement facile.
L'avantage est que n'importe qui peut se lancer dans un travail de
traduction. Il sufiit de prendre les fichiers anglais dans le
rep en_US et de la copier traduit dans xx_XX ou xx_XX est le code de
la nouvelle langue.
Si une gestion avec gettext doit etre faite, elle peut etre incluse
dans la classe Translate, ce qui rend le code toujours opérationnel
sans y toucher mais je crains que ce ne soit pas une bonne idée d'un
point de vue portabilité. De plus, par expérience un logiciel qui a
des fichiers langues au format texte est très vite traduit (les
contributions fusent plus vite qu'au format gettext).
mais le format gettext est du texte ;-)
# French Squirrelmail Translation
# Copyright (c) 1999-2004 The Squirrelmail Development Team
# Antoine Hulin <address@hidden>, 2002-2003
# Alex Lemaresquier <address@hidden>, 2003-2004
# $Id: squirrelmail.po,v 1.8.2.8 2004/05/26 06:57:13 jervfors Exp $
msgid ""
msgstr ""
"Project-Id-Version: squirrelmail \n"
"POT-Creation-Date: 2004-05-23 18:06+0300\n"
"PO-Revision-Date: 2004-05-26 08:48+0200\n"
"Last-Translator: Alex Lemaresquier <address@hidden>\n"
"Language-Team: French <address@hidden>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Address Book"
msgstr "Carnet d'adresses"
msgid "All"
msgstr "Tout"
Avant d'inclure gettext dans la classe Translate, peut-etre faut-il
d'abord concentré ces efforts en remplacant dans les pages php
les chaines en dur par un $langs->trans("MyString").
Oui, cela nous permettra d'y reflechir encore ...
Bonne nuit