Ответ 1
Я думаю, что Rails пропускает новые файлы перевода, но добавление переводов в существующий файл должно работать.
Попробуйте перезагрузить его с помощью I18n.backend.reload!
Я надеюсь, что это поможет;)
В рельсах файлы yml в config/locales позволяют вам указывать директивы для текста и форматирования, относящиеся к языку. Например, вы можете указать форматирование даты следующим образом:
# config/locales/en.yml
date:
formats:
month: "%B, %Y"
Затем в ваших представлениях вы можете использовать помощник, например:
<%= l(Date.today, format: :month) %> => "December, 2013"
Раздражающе, рельсы загружают только файлы локали при запуске вашего сервера, поэтому вам нужно перезапустить сервер разработки, если вы хотите внести изменения. Можно ли автоматически перезагрузить это при изменении файла?
Я думаю, что Rails пропускает новые файлы перевода, но добавление переводов в существующий файл должно работать.
Попробуйте перезагрузить его с помощью I18n.backend.reload!
Я надеюсь, что это поможет;)
Там была попытка поддержать это в рельсах 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.
Там какой-то лучший код в рельсах 4, поэтому эта проблема может быть исправлена там (пока я еще не использую рельсы 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