Автоматическая перезагрузка файлов rails yml в config/locales
в rails файлы yml в config / locales позволяют вам давать директивы текста и форматирования для конкретной локали. Например, можно указать форматирование даты следующим образом:
# config/locales/en.yml
date:
formats:
month: "%B, %Y"
тогда в ваших представлениях вы можете использовать помощник, например:
<%= l(Date.today, format: :month) %> => "December, 2013"
досадно, rails загружает только файлы локали при запуске сервера, поэтому вам нужно перезапустить сервер разработки, если вы хотите внести изменения. Можно ли автоматически перезагрузить это при изменении файла?
2 ответов
Я думаю, что Rails пропускает новые файлы перевода, но добавление переводов в существующий файл должно работать.
попробуйте принудительно перезагрузить его с I18n.backend.reload!
надеюсь, это поможет;)
есть попытка поддержки этого в rails 3.2:
https://github.com/rails/rails/blob/v3.2.16/activesupport/lib/active_support/i18n_railtie.rb
однако, он поставляется с этой оговоркой:
# Add <tt>I18n::Railtie.reloader</tt> to ActionDispatch callbacks. Since, at this
# point, no path was added to the reloader, I18n.reload! is not triggered
# on to_prepare callbacks. This will only happen on the config.after_initialize
# callback below.
в rails 4 есть более красивый код, поэтому эта проблема может быть исправлена (я еще не использую rails 4).
я добавил следующий инициализатор, который проверяет наличие измененных файлов-config / locales и перезагружает Как i18n:
# config/initializers/reload_locale.rb
if Rails.env == 'development'
locale_reloader = ActiveSupport::FileUpdateChecker.new(Dir["config/locales/*yml"]) do
I18n.backend.reload!
end
ActionDispatch::Callbacks.to_prepare do
locale_reloader.execute_if_updated
end
end