Choix technique pour gérer le multilingue
Bonjour,
Je suis en train de coder un CMS maison en PHP à destination d'un Intranet (voui, je réinvente l'eau tiède, mais c'est justement ce qui me plait là dedans).
Globalement, l'appli est en pur MVC, mais je bute maintenant sur un aspect : la gestion des nombreuses "strings" présents dans les vues. Pour l'instant, les languages (mots, phrases) sont de simples variables Strings dans un bête fichier PHP en dur sur le serveur, chargé à chaque appel de la fonction Init (au niveau de l'hautentification, c'est de l'intranet), les vues se chargent ensuite de l'affichage de ces variables.
Le problème arrive dès que le futur administrateur souhaite créer son propre "dictionnaire" (dans sa langue), ou bien si il préfère dénommer son menu "Nouveautés" en "News", par exemple.
Je cherche donc la solution la plus simple (pour moi), la plus souple (pour l'utilisateur) et la moins lourde (le serveur est pas une bête de course)
J'ai plusieurs solutions dont :
- utiliser du XML pour mes "dictionnaires"
- tout bêtement insérer toutes les strings dans la BDD (me parait pas terrible, ça...)
- utiliser/parser des fichiers CSV (mes utilisateurs sont fans de ce format)
Chaque méthode ayant ses inconvénients et ses avantages, ben.... du coup je ne vois plus du tout dans quelle direction aller.
Quelle solution est adoptée dans les CMS que vous utilisez ? Quelle méthode vous semble préférable ?
Si ça peut interesser d'autres...
Bon, finalement, j'ai implémenté les 3 solutions :
Insérer les strings dans la BDD :
lourd, pas génial questions perf', et de toute façon, n'a rien à faire dans la BDD qui est là pour les datas des utilisateurs et rien d'autre (pi' d'ailleurs, si j'ai 15 languages à traduire, je créé 15 tables ??!).
Bricoler un parser de fichier CSV :
tout est dis dans le titre : trop bricolage. Perte de performances, lourdeur, du code en plus à se trainer et à maintenir....
Finalement, vainqueur par KO : utiliser un fichier XML
Super souple, très simple (via XML DOM), puissant, performant.... seul inconvénient, j'ai du fermer la porte à PHP4, mais bon, de toute façon, il faudra bien y passer un jour, à PHP5 !