2010-06-30 4 views
1

J'ai une collection de catégories et chaque catégorie a un tableau de hashes contenant des noms d'attributs et des unités pour créer un formulaire inout avec, pour ajouter un produit de cette catégorie. Par exemple les champs de catégorie de voiture - {nom: longueur, unité: mm}, {nom: poids, unité: kg}.mongodapp mongodb multilingue

Le problème est que ce site est multilingue et doit donc stocker les noms de champs par langue.

je pouvais les mettre en ligne:

par exemple catégorie des champs de voiture - {en-nom: longueur, nom cn-: ....., de nom: ....., unité: mm }

Y a-t-il un meilleur moyen?

Je ne sais pas si c'est la meilleure façon que je veux pouvoir transmettre un document de noms devant être traduits au traducteur pour tous les noms de champs pour toutes les catégories, donc stocker de cette façon je devrais saisir tout puis mettre dans un autre document puis traduire et insérer de nouvelles naes traduites !!!

Une aide ou des idées?

Merci rick

+0

Merci beaucoup Michael Je suis tryin g utiliser votre point essentiel dans mon application et son travail sur un champ appelé test, mais si je crée un nouveau champ appelé test2 du même type comme clé: test2, LocalizedString la valeur de test3 est le même comme test, et je n'ai encore rien ajouté pour test2. je ne dois faire le type de LocalizedString2 i faire etc comme je veux l'utiliser pour beaucoup de champs. S'il vous plaît aider et merci beaucoup pour votre aide à ce jour c'est juste ce que je dois.Meilleures salutations Richard – rick

Répondre

1

La meilleure façon serait de mettre les traductions dans les fichiers de paramètres régionaux (dans config/locales /). Par exemple (locale anglais):

en: 
    categories: 
    car: 
     length: Length 

Et puis quelque chose comme ça lors de l'affichage nom du champ:

I18n.t("categories.#{category.name}.#{field_name}") 

De cette façon, vous pouvez maintenir un seul fichier de paramètres régionaux et envoyer les autres au traducteur .

+0

Merci pour la solution. Seul problème est que j'ai besoin de redémarrer l'application pour tirer de nouvelles modifications aux fichiers de paramètres régionaux. ou je ne suis pas? Est-il également possible pour mes utilisateurs d'ajouter la traduction de certains champs à ces fichiers à partir de mon application? merci –

+0

Oui, vous devez redémarrer l'application pour recharger les fichiers de paramètres régionaux. Je pensais que les noms de champs déjà connus et que vous avez juste besoin d'un moyen simple de les traduire, je ne supposais pas que vous voulez que vos utilisateurs ajoutent des traductions via l'application en cours d'exécution. Si tel est le cas, ma solution pourrait ne pas être facilement applicable. De toute façon, si vous avez besoin d'un moyen simple de travailler sur les traductions, vous devriez vérifier http://99translations.com –

+0

Les fichiers régionaux sont très bien si vous voulez seulement que l'interface utilisateur soit multilingue, mais que faire si vous voulez que le contenu soit également multilingue? C'est-à-dire, si vous voulez seulement le contenu espagnol sur la version espagnole du site, etc. Souhaitez-vous employer des bases de données séparées pour ceci? Une paire clé-valeur par langue, par colonne? par exemple. $ obj [nom] [anglais] = la table –

0

traduction du modèle est assez facile à MongoDB.

est ici un point essentiel qui utilise un type de MongoMapper personnalisé pour gérer de manière transparente localisation: https://gist.github.com/828114

Votre LocalizedString ressemblerait

name: { 
    en: '...', 
    cn: '...', 
    de: '...' 
} 

Le type personnalisé juste magasins/retourne la valeur de la I18n.locale actuelle