2010-06-28 8 views
5

Je recherche des conseils sur les meilleures pratiques pour localiser les données stockées dans la base de données. Je travaille sur une application web dans laquelle tout le texte statique est localisé en utilisant des fichiers. Nous avons plusieurs options que l'administrateur peut configurer à l'aide de l'interface utilisateur qui sont stockées dans la base de données et doivent localiser ces valeurs.localisation de données dynamiques

Nous avons trouvé quelques idées possibles. Que pensez-vous de ces solutions? Existe-t-il une meilleure option ou même une meilleure pratique standard?

par spécialité Localisation

Ceci est la solution proposée pour best practices for multilanguage database design. Nous créerions une table distincte pour chaque champ localisé. Par exemple, supposons que nous avions la table colors avec color_id, color_name et color_description colonnes, nous pourrions sortir dehors dans une table color avec les données non localisées et un color_translations tableau color_id, locale, color_name et color_description champs.

Cependant, nos clients envoient souvent les fichiers de localisation à un tiers pour effectuer la traduction, ce qui devient délicat.

Simple Table Localisation

Une autre option serait de créer une seule table pour représenter l'ensemble de la localisation de la base de données:

CREATE TABLE localized_text 
(
    key   VARCHAR(256) NOT NULL, 
    locale  CHAR(5) NOT NULL, 
    value  VARCHAR(256), 
    PRIMARY KEY (key, locale) 
); 

Ce serait plus facile d'exporter pour la localisation hors site, mais ajoute un niveau d'indirection.

+0

Y a-t-il une raison pour que ces "plusieurs options" ne soient pas seulement stockées en tant que codes dans la base de données et traduites au niveau de la présentation de l'application? Quoi qu'il en soit, je pense que l'option un est beaucoup plus propre, car une table géante avec beaucoup de différentes traductions pour beaucoup diff. les modèles peuvent tourner à l'enfer rapidement –

+1

Je pense que l'objection principale à la simple mémorisation des codes dans la base de données est que l'utilisateur doit ensuite se rendre à deux endroits différents pour le configurer. C'est bien pour nos plus gros clients qui envoient les fichiers de localisation pour la traduction, mais pas idéal pour les petits clients. Même les grandes entreprises devront copier les clés de l'interface utilisateur dans le fichier pour traduction. Une solution possible à cela pourrait être de mettre à jour l'interface utilisateur pour modifier les fichiers de localisation si nécessaire. Quelqu'un a-t-il des idées à ce sujet? – Ross

+1

Faites l'option # 1 et implémentez un outil simple d'importation/exportation que vos clients utiliseront pour traduire le contenu personnalisé en dehors de l'application. –

Répondre

1

Nous créerions une table distincte pour chaque champ localisé. Par exemple, supposons que nous avions les couleurs de table avec color_id, color_name et color_description colonnes ....

Supposant votre table colors est que texte statique, le choix évident est d'ajouter une colonne à elle, peut-être nommé locale et ajoutez des lignes pour tous les paramètres régionaux qui vous intéressent. Joignez-vous ensuite aux paramètres régionaux du client pour produire la description unique souhaitée. Pour que cela fonctionne, vous devez séparer les descriptions statiques des données indépendantes des paramètres régionaux, car les descriptions localisées introduisent une relation plusieurs-à-un. En guise de bouche-trou, vous pouvez laisser les descriptions en anglais dans la table principale et les laisser tomber une fois que toutes les références à celles-ci auront disparu.

Questions connexes