Salut,
Je m'intéresse à ce sujet, je suis justement en train de réfléchir à un système du genre. De mon côté pour le moment je développe une solution personnelle "XML couplé avec SMARTY (moteur de templates PHP)". Celle-ci est adaptée à mon besoin.
Dans l'idée si ça vous intéresse
Je vais stocker en DB les traductions de manière "légère", une table unique (3 ou 4 champs dont la langue, la page, un libellé (genre "para01") et le texte) et donc aucune jointure. Peut-être (et même surement je pense) que je serai amené à éclaircir cette table en la découpant en deux ou en rajoutant un champ ou deux pour identifier le texte maiiiiis pour l'instant je reste sur cette idée.
Un plugin Smarty me permettera de récupérer l'information désirée qui sera rangée dans un fichier XML.
Un plugin que je m'imagine bêtement simplifié ainsi pour le moment :
getContent("accueil","para01"); // oui comme dans JS ^^
On lui passe la page en cours, et le code d'identification du texte désiré. Je numéroterai implicitement chaque libellé afin de simplifer l'agencement au niveau du code. Il suffira donc de faire des appels dans l'ordre des textes (de gauche à droite et de haut en bas lol).
TOUS les XML seront générés en une seule fois à chaque mise à jour des données de la DB. Ainsi il s'agira d'un accès fichier. Le plugin pourra, si nécessaire, récupérer les données depuis la DB directement (si c'est pratique) ou depuis le XML lui-même. La gestion de la langue se fera par $_SESSION et celle du type d'accès (fichier ou DB) directement dans le plugin smarty ou bien à l'appel du plugin (moyennant un troisième paramètre initialisé ou non), ça peut être utile pour une donnée mise à jour toutes les n secondes/minutes.
Je vous déballe ça en speed hein...rien n'est analysé encore mais le système me plait bien pour le moment.
J'en déduis ceci :
AVANTAGES :
- Code dépouillé, dépourvu de textes, chaque texte = getContent("aa","bb")
- Choix XML propre, j'aime bien le XML, c'est structuré et facile à lire et relire.
- Accès fichier ou accès DB en cas de soucis de l'un ou l'autre.
- Je peux ainsi proposer un système à la "wikipédia" ou quiconque disposant d'un droit pourra traduire toutes les pages du site. Moyennant un petit accès réservé et une pré-validation de saisie.<== C'est surtout ça qui m'intéresse dans l'idée à vrai dire, que ceux qui veulent puissent participer aux traductions.
- Interface d'administration complètement envisageable.
INCONVENIENTS :
- Textes non accessibles dans le code (on peut lire les xml cela dit)
- Omniprésence des appels du plugin (plusieurs getContent() dans le code) peut être gênante. De mon côté je ne pense pas que ça me gênera si je suis clair dans ma tête et que tout est bien numéroté dans l'ordre.
- Dans le cas d'un plantage de la DB les XML sont éventuellement faciles à maintenir si on veut rajouter du texte. Seulement après il faut prévoir une réintégration dans la base, rien de gênant en fait...
- SMARTY EST UN MOTEUR DE TEMPLATES : bah oui, smarty est fait pour ça en partie, pour avoir plusieurs templates!!...mais ce n'est pas de cette utilité là dont je me sers chez lui. Je génère plusieurs templates de design et de mise en forme et non pas de données!! Mais ça peut en faire râler quelques uns...
Voilà c'est en cours de réflexion et d'optimisation...je verrai ce que ça donne! Mais pour le moment je suis sûr que ça me plaira!
Bonne journée!
Partager