2010-11-15 6 views
1

Je n'arrive pas à comprendre comment traduire les données du modèle dans Rails (3.0.1) avec I18n.I18n traduction des données du modèle

Exemple Situation:

J'ai une forme où une personne inscrite choisit son sport. Le sport est sélectionnez un menu déroulant peuplé en appelant:

Sport.all.collect{ |s| [s.name, s.id]} 

Je suis tenté d'écrire naïvement:

Sport.all.collect{ |s| [t(s.name), s.id]} 

Mais je ne vois pas comment les rails ne sauraient pour rechercher des noms comme « Track and Champ". Comment pourrais-je fournir les noms dans différentes langues? Quelles sont les meilleures pratiques pour mettre en œuvre cela?

Merci à tous!

Répondre

2

Si Sport est un modèle dans la base de données, vous feriez mieux de conserver les traductions dans la base de données. Ajouter une language colonne à votre modèle Sport et remplir avec

Sport.where(:language => I18n.locale).collect{|s| [s.name, s.id]} 
0

Je pense que la façon la plus appropriée est d'utiliser globalize3

Si la gemme Globalize génère l'erreur d'affectation de masse au cours db:migrate, puis ajoutez le code suivant à votre initialiseur :

Globalize::ActiveRecord::Translation.class_eval do 
    attr_accessible :locale 
end