Babel Fish

Bonjour.

Je suis chagrin, j’ai un souci d’architecture…

J’ai cherché sur gogol, et je n’ai pas trouvé franchement ce que je cherchais

J’ai un site statique à refaire en dynamique. Et en bi ou trinlingue.

Donc je sens bien que je vais faire du CSS agogo pour virer mes vieilles tables toutes pourries.

Et de la database, ça c’est mode fashion, la database…

Et du php, c’est dynamique, ça aussi.

Seulement, je ne sais pas trop comment présenter ça, le site n’a rien d’un CMS, ça ne ressemble pas trop à la cafzone, et le détail qui me chagrine, c’est : comment faire pour gérer la base de données avec deux ou trois langues. Et l’architecture de la base aussi.

Bref, rien que de très simple. J’ai déjà utilisé papier et crayon pour essayer de faire ça propre, mais point de solution miracle n’a germé de mes cogitations…

Sachant qu’il y a globalement une arborescence, mais que il n’y a pas DU TOUT un modèle de page

Donc j’hésite à prendre un spip et à le torturer jusqu’à ce qu’il craque.

Ou à monter tout depuis le départ avec les risques de prendre des voies sans issues…

C’est très flou :confused: … mais ton principal problème c’est que ce soit trilingue c’est ça?

Bon, on dissipe le doute. Mon Seul et unique souci c’est comment faire du trilingue en PHP from scratch (happy face)

Pour faire tres hitech/fashion, tu peux aussi faire du xml/xsl : un fichier xml par langue, avec juste le “contenu” des pages, et un fichier xsl unique avec la présentation !

Pour faire tout simple en PHP, tu n’utilises que des variables pour les textes genre : _HELLO.

Ensuite, tu fais 3 fichiers php, un par langue, dans lequel tu mets des define :
dans english.php : define("_HELLO",“Hello”);
dans french.php : define("_HELLO",“Bonjour”);
dans german.php : define("_HELLO",“Guten Tag”);

ensuite tu fais include(“english/french/german.php”) selon la langue choisie.

Plusieurs possibilités :

1ere technique, dite du “mec qui a trop de temps libre” : tu te fait pas chier, tu fait 3 sites séparés dans des répertoires différents avec des includes à tout va pour les structures de pages.

2eme techinque, dite du “mec qui a pas vraiment réfléchi” : tu fait comme absolutvodka propose a savoir définir des variables qui contiennent les textes et jeter ca dans la page. Ca marche, c’est sur, mais je te raconte pas la geule de l’initialisation de page.

3eme technique, dite du “mec qui a plus réflechi, mais c’est pas encore ca” : tu reprends la technique numéro 2, mais tu met toutes les phrases dans une base de donnée. Plus simple à maintenir, ca permet (avec un export/import automatisé de filer la tache des traductions et des ajours futurs à d’autre. Le reste du contenu dynamique doit de toutes facons etre tapé dans les 3 langues et incorporé en fonction de.

[Edit] A noter que cette méthode n’est pas top dans le cas ou t’a pas mal de texte à l’écran. Si t’a que quelques lignes (moins d’une cinquantaine), c’est tout a fait envisageable.

4eme technique, dite du “mec qui commence à se faire une idée”, qui consiste à remixer tout ca et à se servir d’un peu de XML en passant. Ca devient vite une machine à gaz et la maintenance est pas toujours facile.

Il existe une 5eme méthode, appelée “la technique du template”, et qui consiste à créer des pages en html, avec des tags personnalisés dedans qui seront remplacés par la page php qui chargera ce modèle. Ca ressemble à la 4eme méthode, mais l’approche technique est un brin différente.

Grosso modo, on a du faire le tour, le reste reste mineurement disgréssatoire par rapport à ces 5 idées. Oui, il n’y a pas de solution miracle, pour la bonne et simple raison que les sites multilingues, c’est vraiment le bordel à faire. (J’en sais quelque chose, c’est moi qui me suis tapé la multinationalisation de http://www.updeal.com à l’époque). Si tu n’a pas envie de t’emmerder plus que de raison, la bonne idée serait de prendre un systeme CMS quelconque qui supporte le multilangue et les template et d’en faire autant qu’il y a de pages. Ce que tu perdra en temps à le triturer, tu le gagnera en temps de conception et d’outils d’admin (et Dieu sait pourtant que je suis partisans du “tout fait soi meme”). Après si c’est pour le challenge technique, fonce sur l’option template ou xml, c’est trés intéressant à faire (pour l’info, updeal.com utilise la méthode n°3). Si c’est juste pour le faire … te casse pas le cul et que c’est pas toi qui fait la maintenance, prends n’importe laquelle des 3 premieres méthodes.

Bon, sans vouloir faire le boulet, il doit exister une solution plus simple en asp.net, mais c’est pas débat.

Ce message a été édité par bishop le 19/12/2003

[quote]Bon, sans vouloir faire le boulet, il doit exister une solution plus simple en asp.net, mais c’est pas débat.[/quote]Oui, c’est deja tout prevu a la base dedans de faire un site multilingue, genre voir mon blog pour un exemple de comment ca peut marcher. Pour tester vous pouvez ou cliquer sur le filtrage de post, ou changer votre langue preferee pour votre navigateur (dans IE : tools-> options -> language). Bon bishop a raison c’est pas le debat donc je me tais.

En PHP c’est plutot gallere et la solution de remplacage de chaine, marche pas forcement toujours (meme si ca suffit 9 fois sur 10). En effet il y a des phrases qui passent pas d’une langue a l’autre (par exemple on va se retrouver avec un bouton en debut de phrase en anglais et en fin de phrase en chinois et ca fout une zone pas possible dans la mise en page). Donc il faut aussi bien reflechir son site a la base pour eviter ce genre de choses. J’ai une petite experience pour l’avoir fait moi meme sur plusieurs sites perso, et avoir regarde Kinik le faire de maniere pro pour http://wallet.msn.com et quelle que soit la solution choisie, c’est jamais simple Si t’as besoin de conseils “pratiques” une fois que t’as ta solution tu peux demander a Kinik il pourra t’aider.

Merci bien, de vos réponses…

Je vais chercher entre la méthode 1 (que copier coller editer parfois ça va VITE)

Et la méthode 3. Elle me plait bien la méthode 3, je vois plein d’endroits où je pourrais l’employer. Bon, faut que je fasse des interfaces d’admin chiantes (et dieu sait si j’aime pas réinventer la roue avec un clavier (alors qu’avec une scie, un tour, un poste à souder…)) mais ça me plait bien.

Encore que les templates, ça serait pas mal non plus.

A mi chemin entre ce qui me plait et le reste…

<
Ce qui me chagrine le plus c’est qu’il n’y ait pas de méthode terminale et efficace, pas d’architecture toute faite, pas de GRAND SECRET du site multilingue détenu par une poignée d’élus ayant appris les règles de la bouche d’un sage…

Bref, il va falloir bidouiller.

Je sens bien le au milieu de mes chers tableaux…

Avec affiche qui va chercher dans la bonne base et table avec une variable de session pour définir le langage, et qui colel un echo tout bourrin. au moins ça laissera de la marche pour faire plus compliqué

Je vous tiendrai au jus de mes errements, parce que je sens que je vais errer

Bon, il y a le magasin en ligne, facile sauf la hiérarchisation. La revue de presse, c’est une news avec un titre et une image-vignette, facile aussi. Des choses qu’on pourrait faire comme des news, donc même système… Et tout le baratin qu’on va traiter au coup par coup. Va y avoir une table par page, je le sens bien comme ça. Pages “spécifiques” baratin avec une fonction qui te ramène juste le texte, et mise en forme et images “à la mano”.

Merci pour vos réponses, en tout cas, ça me permet d’avancer avec moins de craintes…

Salut,

A part les techniques citées tu as aussi celle du module gettext en PHP (http://fr.php.net/gettext).
C’est l’implementation module gettext UNIX en PHP.

Peut être pas évident à mettre en place au début mais facile à maintenir et très puissant.

Voila sinon les autres méthodes sont aussi bonnes suivant la taillle du site, la maintenance etc…

Pisko