2011-06-14 28 views

回答

4

Rails支持用于翻译的非YAML存储。如果您想将翻译存储在表格中,请使用i18n-active_record宝石。

在可定制的I18n后端上观看Railscast

如果使用i18n-active_record宝石,确保memoizeflatten以获得最佳性能的关键如下图所示(摘自readmei18n-active_record宝石代码示例)

I18n.backend = I18n::Backend::ActiveRecord.new 
I18n::Backend::ActiveRecord.send(:include, I18n::Backend::Memoize) 
I18n::Backend::ActiveRecord.send(:include, I18n::Backend::Flatten) 
I18n::Backend::Simple.send(:include, I18n::Backend::Memoize) 
I18n::Backend::Simple.send(:include, I18n::Backend::Pluralization) 
I18n.backend = I18n::Backend::Chain.new(I18n::Backend::Simple.new, I18n.backend) 
0

您应该创建一个名为translations的表。

在您的产品型号:

has_many :labels 

在你的标签型号:

has_one :translation 

然后你需要你的翻译表可以有尽可能多的语言:

Product.first.labels.first.translation.en 
Product.first.labels.first.translation.cn 
Product.first.labels.first.translation.fn 

有了这个您可以拨打的逻辑:

Product.all.each do |p| 
    p.lables.each do |l| 
     l.translation.en 
     l.translation.cn 
     #etc.... 
    end 
end