在Rails中将数千个产品标签国际化的最佳方法是什么? 我应该在YAML文件中输入所有千个标签吗?或者那里有更好的解决方案吗?
任何帮助都可以:)
答案 0 :(得分:4)
Rails支持非YAML存储进行翻译。如果要将翻译存储在表格中,请使用i18n-active_record gem。
关注可自定义的I18n后端的Railscast。
如果您使用i18n-active_record gem,请确保memoize
和flatten
密钥以获得最佳效果,如下所示(代码示例取自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