2011-12-24 5 views
3

Je travaille sur un site web multilingue.La meilleure façon de stocker des traductions dans MySQL DB

Par exemple, table DB pages pour 1 lang ressemble que

enter image description here

Maintenant, j'ai 2 idées sur les traductions:

  1. Pour utiliser toutes les tables dans la langue par défaut - English et créer une deuxième table - translations utilisez-le seulement si nécessaire. Ou ajoutez des colonnes telles que, title_ru, title_en ... aux tables existantes, ou

Quel est le moyen le plus rapide et le plus efficace? Et s'il vous plaît expliquer votre idée (pourquoi vous pensez comme ça)

Répondre

4

Je ne choisirais aucune de vos solutions.

La création d'un nouveau tableau pour chaque langue n'est pas optimale, car vous devez ensuite modifier chaque requête en fonction de la langue sélectionnée. Aussi ce qui devrait être une tâche assez simple d'ajouter un nouveau langage, signifierait alors ajouter un nouveau schéma de table et mettre à jour votre base de code entière.

De même, l'ajout d'une nouvelle colonne pour chaque langue présente les mêmes problèmes.

Pourquoi ne pas simplement avoir une table de dictionnaire, avec un id de langue dans le cadre du PK. Ecrivez votre site pour sélectionner le texte basé sur l'id de langue actuelle (1 = anglais, 2 = russe etc)

Ensuite, pour passer à une autre langue à l'exécution, tout ce qui est impliqué est la définition de l'id de langue de 1 à 2 code, et toutes vos requêtes continueront à travailler.

+0

Ok, c'est une bonne idée. MAIS, vous voulez insérer 'id' (basé sur la table' dictionary') à la place du mot dans les champs 'name' et' title', n'est-ce pas? –

+0

Il existe plusieurs façons d'introduire une recherche de dictionnaire, mais l'idée la plus simple serait d'ajouter simplement l'ID de langue à votre table 'pages' et de stocker une page par ID par langue. . – carpii

Questions connexes