2010-05-02 6 views
0

J'ai des tables/modèles dans une application web qui aura un contenu multilingue. Par exemple une université, avec sa description dans une langue par défaut (anglais) et l'utilisateur veut qu'il puisse voir la même information dans une autre langue (si l'objet a ses champs traduits). S'il n'y avait que quelques langues alors je voudrais juste ajouter des champs comme name_en et name_de et ainsi de suite, mais le nombre de langues n'est pas fixé, de sorte que 'créerait un désordre. Je pourrais aussi simplement créer un nouvel objet avec les données traduites mais alors les clés étrangères ne fonctionneraient pas, et seulement certains des champs pourraient être traduits afin de créer des données dupliquées. Le stockage des traductions dans un fichier et l'utilisation de gettext ou de quelque chose de similaire n'est pas non plus une option puisque les champs d'objets peuvent être traduits par l'utilisateur du site, et pas seulement par les développeurs/administrateurs.Comment traduire les champs d'un modèle de base de données?

Quelle serait la meilleure façon de concevoir/d'architecturer une telle base de données? J'utilise PostgreSQL et Ruby of Rails, mais je ne cherche pas de solution technique, mais je ne cherche pas une solution technique, mais cela ne devrait pas nécessiter de créer des jointures complexes qui ralentiraient les requêtes

pour une idée générale comment le concevoir.

Répondre

0

Ne pas réinventer la roue. Installez le plugin globalize2 et voilà. Bien sûr, si vous voulez, vous pouvez aussi étudier comment cela fonctionne (en utilisant une table de traduction, et oui, avec des jointures). Il existe cependant une fourchette qui utilise la table principale pour la langue par défaut.

+0

Ok, semble assez bon, bien que je lui ai demandé comment concevoir la base de données pour cela. J'utiliserai le plugin model_translations, et je l'ai modifié pour que je puisse avoir des locales séparées pour l'ensemble de l'application et des modèles (au cas où quelqu'un voudrait modifier les données du modèle, il ne serait pas bon si vous éditez l'objet dans une autre langue) –

Questions connexes