我无法弄清楚如何使用I18n在Rails(3.0.1)中翻译模型数据。
示例情况:
我有一个表格,注册人选择他们的运动。运动选择是通过调用填充的下拉列表:
Sport.all.collect{ |s| [s.name, s.id]}
我很想天真地写:
Sport.all.collect{ |s| [t(s.name), s.id]}
但我不知道rails会如何知道搜索“Track and Field”这样的名字。我如何提供不同语言的名字?实施此目的的最佳做法是什么?
全部谢谢!
答案 0 :(得分:2)
如果Sport
是数据库中的模型,那么最好还是在数据库中保留翻译。在您的运动模型中添加language
列并填充
Sport.where(:language => I18n.locale).collect{|s| [s.name, s.id]}
答案 1 :(得分:0)
我认为最恰当的方法是使用globalize3
如果globalize gem在db:migrate
期间引发了质量分配错误,请将以下代码添加到初始化程序中:
Globalize::ActiveRecord::Translation.class_eval do
attr_accessible :locale
end