2010-03-19 5 views
1

Je connais l'I18n intégré dans Rails, mais comment puis-je sélectionner un champ de base de données par locale?traduire les champs de base de données avec des rails

Ma structure de modèle est quelque chose comme ceci:

title #default (englisch) 
title_de #(german) 
title_it #(italian) 

Dans mon modèle, je veux être en mesure d'écrire seulement

<%= @model.title %> 

et devrait obtenir la valeur dans la bonne langue.

Existe-t-il un plugin ou une solution permettant d'utiliser différents champs pour différents paramètres régionaux avec une structure comme la mienne?

Répondre

0

Bien que l'architecture de votre db (des endroits différents codées en dur sous forme de colonnes de table) semble mal à moi, je pense que vous pouvez obtenir ce que vous voulez en ajoutant un pseudo-champ à votre modèle, quelque chose le long:

# example not tested 
class MyModel < ActiveRecord::Base 
    def localized_title(locale) 
    locale = locale == 'en' ? '' : '_' + locale 
    read_attribute("title#{locale}".to_sym") 
    end 
end 

Ou , à condition de rendre vos paramètres régionaux visibles pour vos modèles, vous pouvez également remplacer la méthode d'accès par défaut title.

Editer: Vous pouvez jeter un oeil à http://github.com/iain/translatable_columns, il semble assez compatible avec votre architecture ....

Questions connexes