2012-07-25 5 views
6

Possible en double:
Schema for a multilanguage databaseComment stocker des données multilingues?

Je construis une application web très occupé qui dispose de données multilingues. Toutes ces données sont stockées dans une base de données MySQL. Quel est le meilleur moyen de stocker ces données? J'ai quelques suppositions cependant:

  1. colonnes distinctes dans la table pour chaque langue (comme Title_fr, title_fr)
  2. tables séparées pour chaque langue (comme pages_en, pages_fr)
  3. tableau croisé pour les traductions (ayant un identifiant dans la table des pages et ayant cet id lié dans une table de traduction où il y a plusieurs colonnes comme trans_fr, trans_fr)
  4. ayant des données non multilingues dans un tableau par exemple des pages et des traductions dans une table par langue (pages_fr, pages_fr
  5. autre?
+0

Ok Je vois un problème avec la deuxième solution car si vous ajoutez une nouvelle langue et créez une nouvelle table, toutes les colonnes non multilingues doivent être copiées dans cette nouvelle table. Mais c'est probablement plus rapide que la première solution car la taille de la table est plus petite. –

+0

Troisième solution rend les tables primaires très propre, mais il est difficile de faire la maintenance manuelle et la table de traduction sera tueur –

+0

Deuxième solution est facile à étendre à de nouvelles langues (juste ajouter des colonnes), mais peut encore devenir très grand si les langues agrandir) ... Un peu coincé ici ... –

Répondre

1

Si je devais faire un site multilingue, alors je concevoir le db comme suit:

enter image description here

Chaque page dans l'application peut avoir plusieurs langues. Vous n'avez qu'à filtrer sur l'identifiant de langue pour obtenir la langue souhaitée pour la page.