My Rails App находится на рельсах 4.0.2, и у меня есть проблема переключения переводов с переменной locale
и params[:locale]
по схеме URL, следующей за официальными рельсами guide. У меня есть сайт с одной страницей по адресу my site.Локаль не переключается в Rails 4
Мои маршруты Интернационализация:
scope "(:locale)", locale: /en|de/ do
#my routes here
end
Мой контроллер приложения
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
#Rails.application.routes.default_url_options[:locale]= I18n.locale
end
# app/controllers/application_controller.rb
def default_url_options(options = {})
{ locale: I18n.locale }.merge options
end
Ссылки для изменения переменных локали в представлении:
<%= link_to_unless I18n.locale == :en, "English", locale: :en %>
|
<%= link_to_unless I18n.locale == :de, "Deutsch", locale: :de %>
Что происходит: locale
установлена переменная правильно, но переводы не переключаются. Если я удалю один из файлов перевода (в настоящее время для английского и немецкого языков), языки переключаются на оставшийся файл перевода. Когда я возвращаю другой файл перевода и пытаюсь переключиться на него, изменив переменную locale, он никогда не переключается на другой язык.
Почему мой код не меняет переводов?
Я надеюсь, что вы можете исправить, что, поскольку Rails 4.0.2 имеет некоторые серьезные проблемы безопасности , и использование 4.0.13 настоятельно рекомендуется. Такой инструмент, как [Gem Canary] (https://gemcanary.com/), может помочь вам справиться с такими проблемами, прежде чем они станут проблемой. – tadman
Я закрепил рельсы gemset 4.0.13, спасибо за совет. – nuxxxx