FRENCH
Ce package comprend 2 outils distincts mais liés. Ils nécessitent tous deux PHP5, avec 5.1 pour le back-office.
- la classe oLocale permettant de gérer l'affichage des traducstions sur un site multilingue. Elle se base sur un flux XML ayant une structure simple, mais bien précise. Elle a besoin d'une langue demandée, et d'une langue par défaut (dans les deux cas, la classe les fixe à l'anglais si ces 2 paramètres ne sont pas passés), et d'un chemin où aller chercher les fichiers de traduction. Par défaut, le chemin est 'locales/'. La structure de ce répertoire doit être respectée, par contre.
Si elle ne trouve pas une traduction dans la langue demandée, elle affichera automatiquement la traduction dans la langue par défaut. Elle permet aussi de changer de langue (langue par défaut et langue demandée) en cours de script, sur une même page.
Un exemple d'utilisation basique se situe dans le fichier oloc.example.php.
De toute manière, la classe est simple d'utilisation.
Elle ne possède que 2 méthodes appelables : oLocale::getMsg() permettant d'aller chercher une traduction, et oLocale::getLoc() renvoyant la langue courante.
Et 2 propriétés initialisable : oLocale::LOCALE est la langue courante, oLocale::DEFAULT est la langue par défaut.
- une application back-office pour gérer ses traductions. Elle se lance via le fichier back.office.php. Une aide en ligne sommaire mais complète est disponible sur l'interface.
Ce back-office permet de créer des traductions pour autant de sites que vous le voulez, de gérer des modules de traduction, et des constantes de traduction (chaque message, en fait). Et ce, soit manuellement, soit via l'upload d'un fichier respectant le modèle présent dans le répertoire 'templates/'. Il s'agit d'un fichier Excel.
Le back-office ne supporte que ce template, et un process bien défini : il FAUT utiliser ce template, puis il FAUT utiliser OpenOffice (version 2.3 pour moi, à tester avec d'autres versions) pour sauvegarder ce fichier en HTML (et pas XHTML), et c'est ce fichier HTML obtenu que l'on uploadera dans le back-office. J'ai externalisé tout le process de parsing de fichier, ce qui rend "facile" la création d'un nouveau template si vous désirez changer de process, et donc le parsing à appliquer. Il y a 2 classes pour cela : 'class/class.genparser.php' qui ne devrait pas être touchée, elle gère l'upload et diverses petites choses. Et une classe spécialisée 'class/class.openoffice23htmlparser.php' qui étend genparser. Il vous faudra créer la votre si vous voulez changer de modèle.
Le back-office est livré avec un "site" test, contenant 2 modules, et leurs traductions dans un paquet de langues (Bulgare, Grec, Tchèque, anglais, allemand, français etc...). Vous pouvez donc afficher les traductions, les modifier, etc...afin de tester l'application.
Toute l'interface utilise Ajax (upload mis à part) pour une ergonomie plus agréable.
A noter que pour le moment, je n'ai pas réussi à faire tourner cette application (je parle uniquement du back-office là) sur IE. Il n'y a pas grand chose à modifier mais je n'ai pas encore trouvé l'astuce pour faire ça simplement (IE et le DOM, décidément...).
Testé sur Firefox 2, Opera 9, Flock 1.
ENGLISH
This package provides 2 different, but linked, tools. For both of them, PHP5 is mandatory, and PHP5.1 fopr the back-office.
- Class oLocale allows to manage the display of translations on a localized web application. It's based on an XML feed which structure is simple but must be respected. It needs the asked language, a default language (in both cases, if none is provided, English is set to default), and a path where to find localization files. Default path is 'locales/'. The folder structure must be kept.
If oLocale does not find a trabslation in the current language, it will automatically switch to default language for this translation. It allows you to change languages (current and default) in the same script.
A basic example is provided in the file 'oloc.example.php'.
But anyway, its use if very easy :
2 methods are callable :
oLocale::getMsg() which fetches and returns a translation
oLocale::getLoc() which returns current language
And 2 settable/gettable properties:
oLocale::LOCALE which allows you to change current language
oLocale::DEFAULT which allows you to change default language
- a back-office application to manage your translations. It's launched via file 'back.office.php'. A basic but complete online help is available on the back-office.
This application allows you to create translations for as many "sites" you need, to manage translation modules, and constants modules (each message, indeed).
You can do this either manually or by uploading a file. This file must be based on the template file you'll find in the 'templates/' folder. It's an Excel file.
This back-office, right now, does support only this template, and a defined process : you MUST use this template, then you MUST open it with OpenOffice (version 2.3 for me, but you can try with another one, with no guarantee it will work however), then you MUST save this file as an HTML file (HTML, NOT XHTML), and it's THIS file you will upload in the back-office.
The parser classes are outside the back-office, so you can "easily" create your own templates. To do that, you have 2 files :
'class/class.genparser.php' which should not need to be modified. Ut manages upload and other small stuff.
'class/class.openoffice23htmlparser.php' which extends genparser. This one, you'll have to modify if you want to create your own template.
The back-office provides an example "site" which contains 2 modules and their translations in many languages (Bulgarian, Greek, Czech, English, German, French...); you can thus display these translations, modify them and do whatever you want to do! Well, test the application!
The GUI is full AJax (only not the upload part).
I used Protoype to help coding the javascript.
You will also find in the 'countries/' folder an XML file which provide the names of all the countries in the world in 7 languages, as well as their ISO 3166-1 alpha2 and alpha3 codes, and a function of my own which return these codes, given a country name.
Can be handy. It's used by genparser anyway.
This version (20071101) is not supported by IE. Ther's not much to do, but I did not find the easy way to make it work on that browser.
Tested on Firefox 2, Opera 9, Flock 1.
|