Есть ли способ вызвать действие при перезагрузке хранилища переводов? - PullRequest
1 голос
/ 14 февраля 2012

У меня есть несколько таблиц, которые содержат переводы.Чтобы упростить доступ ко всем переводам и обеспечить их кэширование, мне удалось после инициализации 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

Отлично работает, но в dev иногда хранилище переводов сбрасывается, и я теряю ранее добавленные переводы.

Это происходит в производстве?Могу ли я использовать обратный вызов для повторного заполнения моего перевода?Или есть лучший способ сделать то, что я хочу?

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

есть лучший способ сделать это. он называется I18n backends, и вы можете прочитать о них в руководствах: http://guides.rubyonrails.org/i18n.html#using-different-backends

также возможно связать бэкэнды, чтобы вы могли создавать запасные варианты для ваших переводов. I18n - довольно мощная библиотека, взгляните на документы https://github.com/svenfuchs/rails-i18n

0 голосов
/ 14 февраля 2012

Добавьте ваш перевод в сценарии seed.rb или только в файле config / locale.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...