Question about MySQL

Fermé
kalimbra Messages postés 469 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 - 5 nov. 2008 à 16:33
xxkirastarothxx Messages postés 380 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 - 6 nov. 2008 à 10:41
Bonjour,

je me pose une question.. je dois créer un site internet dynamique multilingue, et je me demandais ce qui était mieux... tout les textes et leur traductions dans une seule table ou une table par langue.?

qu'est ce qui vous semble la meilleure approche ?

merci d'avance...

3 réponses

xxkirastarothxx Messages postés 380 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
5 nov. 2008 à 17:04
Ca dépend vraiement de ce que tu appelle les textes de ton site =)

si tu veux que ton site soit multiluingue, je te conseil de tout d'abbord créer deux fichier: french.php et english.php ou tu stoquera tout les mots que tu n'enregistre pas dans ta base de donnée, et de définir leur valeur en fonction de la langue.
exemple:
french.php:
define("_TITLE", "titre");
define("_WELCOM", "Bienvenue sur mon super site-web");
define("_CONTENT", "contenu");
define("_ERROR", "erreur");
...
...
-----------------------------
english.php:
define("_TITLE", "title");
define("_WELCOM", "Welcom on my super Web-Site");
define("_CONTENT", "content");
define("_ERROR", "error");
...
...
Car tu n'enregistre surement pas tout les mot de ton site en SQL ^^
Pour le mettre en place dans ton php, plutot que d'ecrire <?php echo "titre";?> ecrit plutot <?php echo _TITLE;?>
Ensuite definis par exemple une variable de session que l'utilisateur pourra modifier afin de définir sa langue,
et dans ton index.php, fait un include sous condition:
If($_SESSION['lang'] == fr){ include('lang/french.php');}
elseif($_SESSION['lang'] == en) {include('lang/english.php}

Ensuite pour les donnée que tu enregistre dans ta bdd, comme les news, ou les articles ...
Je te conseil de tout laisser dans la même table:
genre:
-id
-title
-date
-textfr
-texten
...
...

et dans ta page ou tu affiche ces données:
If($_SESSION['lang'] == fr){ $text = $donnees['textfr'];}
else {$text = $donnees['texten'];}
0
kalimbra Messages postés 469 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 72
6 nov. 2008 à 10:23
merci beaucoup pour cette idée. Je la retiens, bien sur.

En fait le problème est que je vais avoir un nombre, pour le moment indéfini, de traductions. Donc j'ai peur qu'au bout d'un moment, si je fais une seule table, qu'elle soit beaucoup sollicitée en simultanée si on a pas mal de visite sur le site...

c'est pourquoi je voyais plutot au niveau de mon CMS une procédure de création de lanque qui créerait toutes les tables nécessaires à une nouvelle langue. (table des textes, table des éléments graphiques traduits, etc... )
0
xxkirastarothxx Messages postés 380 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
6 nov. 2008 à 10:41
Oui, mais chaque utilisateur n'utilisera les données que d'un seul champ à chaque fois:
Imaginons que tu ai 200 utilisateurs français, il y aura 200 requêtes sur la même tables,
et si tu as 100 utilisateurs français et 100 anglais, ça serra pareil,
ou 30 fr, 30en, 30de, 30be, 30es ......

ce qui compte c'est le nombre d'utilisateurs qui se connectera, pas le nombre de différentes traductions.
Si tu penses que tu aura un nombre d'utilisateurs vraiment important, tu peux effectivement penser à séparer les tables afin d'alléger le tout, mais je ne pense vraiment pas que ça soit nécessaire.
0