Bonjour,
je dois créer une application multilingue, permettant l'ajout de nouveaux messages textuels en temps réelle dans différentes langues, qui peuvent elles aussi être ajoutées au cours de la vie de l'application.
Est-il préférable de créer
- une table par langue
- ou une seule table contenant tous les messages de toutes les langues, avec un index sur [langue, num_message]
?
Autre contrainte: l'application sera client-serveur, et il doit être possible de charger les messages de certaines langues sur le client, mais pas forcément toutes les langues. Tous les messages seront par contre présents sur le serveur.
Compte tenu de toutes ces informations, je me pose des question sur les points suivants:
- la performance, cet index sur 2 clef sera-t-il aussi efficace qu'un index sur une clef, la jointure devant alors prendre en compte la table en question;
- l'évolutivité, pourrait-il se poser des problème dans une des deux solutions auxquels je n'ai pas pensé?
- la simplicité d'utilisation et la clarté des requêtes
- ...
[Edit:]
- les collations, la méthode avec différentes tables permettrait d'avoir des collations différentes par langue (tout message sera de toute façon stocké en UTF quelque soit la langue), ceci est peut-être un des points les plus important et je ne connais rien sur le sujet, je viens seulement d'apprendre que ça existait. Quels problèmes pourraient survenir? Sachant que l'application devra gérer des langues aussi dissemblables que le français et le chinois, avec leurs problèmes propres si j'en crois ce que je lis. Quel impact chaque méthode aura-t-elle sur 1) la recherche 2) le tri.
Y aurait-il d'autres avantages et inconvénients à chaque solution?
Merci d'avance.
Partager