有没有办法在重新加载翻译商店时触发操作?

时间:2012-02-14 13:55:28

标签: ruby-on-rails ruby-on-rails-3.2 internationalization translation

我有一些包含翻译的表格。为了简化对所有翻译的访问并让它们被缓存,我在Rails初始化之后管理了读取表并将其内容注入翻译库。

  #store translations in the I18n store
  I18n.available_locales.each do |lang|
    storage_hash = {:text => {}, :permalink => {}}
    Translation.where(:translatable_type => self.name, :language=> lang).each do |c| 
        storage_hash[:text][c.translatable_id.to_s] = c.text
        storage_hash[:permalink][c.translatable_id.to_s] = c.permalink
    end
    I18n.backend.store_translations(lang, self.name.downcase => storage_hash)
  end

它工作得很好,但在开发中,有时翻译存储被重置,我放弃了我之前添加的翻译。

是否会在生产中发生?我可以使用回调来重新填充我的翻译吗?或者有更好的方法来做我想要的事情吗?

2 个答案:

答案 0 :(得分:1)

有一种更好的方法可以做到这一点。它被称为I18n后端,你可以在指南中阅读它们:http://guides.rubyonrails.org/i18n.html#using-different-backends

它也可以链接后端,以便您可以为翻译建立后备。 I18n是一个非常强大的库,仔细查看文档https://github.com/svenfuchs/rails-i18n

答案 1 :(得分:0)

在seed.rb脚本中添加您的翻译,或仅在config / locale文件中添加您的翻译。