Rails中数以千计的产品标签的国际化

时间:2011-06-14 03:28:37

标签: ruby-on-rails ruby internationalization

在Rails中将数千个产品标签国际化的最佳方法是什么? 我应该在YAML文件中输入所有千个标签吗?或者那里有更好的解决方案吗?

任何帮助都可以:)

2 个答案:

答案 0 :(得分:4)

Rails支持非YAML存储进行翻译。如果要将翻译存储在表格中,请使用i18n-active_record gem。

关注可自定义的I18n后端的Railscast

如果您使用i18n-active_record gem,请确保memoizeflatten密钥以获得最佳效果,如下所示(代码示例取自readme i18n-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)

答案 1 :(得分: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