I18n模型数据的翻译

时间:2010-11-15 01:27:19

标签: ruby-on-rails internationalization

我无法弄清楚如何使用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”这样的名字。我如何提供不同语言的名字?实施此目的的最佳做法是什么?

全部谢谢!

2 个答案:

答案 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
相关问题