|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre extrêmement actif
![]() Inscription : mars 2007 Messages : 726 ![]() |
En cherchant un peu j'ai trouvé plusieurs solutions pour faire un site multi langues.
Certains préconisent l'emploi de fichiers php pour chaque langue dans lequel on on définit des constantes pour les zones de texte. D'autres préconisent de faire ça avec une base de donnée. Comment mettre en oeuvre ce dernier point? Il faudrait une table "phrase" dans laquelle on stocke le texte en différente langues? Merci de m'éclairer sur ce point. |
|
|
00
|
|
|
#2 | ||
|
Membre expérimenté
![]() Inscription : octobre 2006 Messages : 572 ![]() |
Bonjour,
Ce que je ferais (mais cela n'engage que moi) : créer une table pour chaque langue utilisée, par exemple interface_fr, interface_en etc... Comme ça, il suffit de faire une seule requête pour l'interface, et la langue peut changer dynamiquement. Code php :
Mais chacun aura sa vision. C'est ensuite assez facile à maintenir via une interface d'administration.
__________________
GAMIN !!!! ![]() _______________________________________________ PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX |
||
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Inscription : décembre 2005 Messages : 303 ![]() |
Pour avoir un peu d'experience pro dans ce domaine au niveau e-commerce nous gerons un site multilangues de la facon suivante :
Tout le texte "statique" est dans des fichiers, exemple : accueil, panier, se connecter, les cgv... Ensuite, tout le texte d'article, ou ayant du html dans le texte est sotcke en base de données avec une table par pays/langue avec une structure identique. |
|
|
00
|
|
|
#4 |
|
Membre extrêmement actif
![]() Inscription : mars 2007 Messages : 726 ![]() |
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() |
Oui, je pense aussi que c'est préférable (a partir du moment ou tu as besoin de la traduction bien sûr).
Lorsque je débutais, j'avais rajouté des champs pour chaque langue au sein de la meme table mais niveau maintenance, j'ai un peu galéré par la suite avec ce projet (a chaque fois qu'on rajoutait, supprimait une langue, c'etait pas évident de se rappeller des champs multilangues existants et ma documentation laissait à désirer). Donc oui, une partie statique en fichier et le dynamique dans des tables dédiées pour chaque langue me semble être une bonne solution. |
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() Inscription : octobre 2006 Messages : 572 ![]() |
Oui, c'est ça
Sur mon site, je fais exactement la même chose que Pimpmyride et je trouve que c'est très performant (il n'y a que 3 langues, c'est tout de même facile à gérer) Pour ma part, je déconseillerais tout de même la solution de la base de donnée seule (interface + contenu) car cela devient vite lourd pour le serveur. Je t'ai donné cette solution car j'avais cru comprendre que c'était ce que tu voulais. Ce thread te donnera d'autres points de vue. Bon développement
__________________
GAMIN !!!! ![]() _______________________________________________ PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX |
|
|
00
|
|
|
#7 |
|
Membre extrêmement actif
![]() Inscription : mars 2007 Messages : 726 ![]() |
Mais avec la solution de dupliquer les tables dans lequel je dois traduire des choses je multiplie la taille de la base de données, de plus comment maintenir cela ? Car si je fais une insertion par exemple je devrai systématiquement la faire 3 fois alors (pour un site avec 3 langues)... ?
Ne puis-ja pas rajouter dans ma bdd une table "Langue" qui stocke les identifiants d'une langue puis à côté une table "se traduit" qui contient 2 clés externes: l'identifiant de la langue et l'identifiant de la table avec le champ à traduire. En plus de cela on aurait alors la traduction dans la table "se traduit". Est - ce judicieux? Suis - je clair? merci |
|
|
00
|
|
|
#8 | ||||
|
Membre expérimenté
![]() Inscription : octobre 2006 Messages : 572 ![]() |
Je ne pense pas que cela soit difficile à maintenir d'avoir une table pour chaque langue.
Code xhtml :
Code php :
Tu peux bien entendu automatiser grâce à une table "langues" tout cela pour ne pas avoir à te taper le code à chaque fois. C'est idem pour un update... (le mieux étant de combiner l'ensemble) Le seul inconvénient en effet est que tu dois traduire la totalité du contenu de chaque table (à moins que tu ne fasses un message du genre "Cette page n'est pas visible dans votre langue)...
__________________
GAMIN !!!! ![]() _______________________________________________ PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX |
||||
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Inscription : décembre 2005 Messages : 303 ![]() |
la solution d'avoir une table par pays/langue te permet de ne pas forcement afficher les memes texte dans toutes les langues.
Tu peux avoir une page lien en francais qui n'existe pas en anglais. Ainsi, la structure des tables restent identiques mais en plus, ca t'evite d'avoir des enregistrements vides si tu mets tout ton texte dans une seule table. De plus, le SELECT en bdd est beacoup plus rapide et crois moi quand tu commences a avoir pas mal de texte tu gagnes en temps processeur, ce qui n'est pas négligable |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com