Я использую версию фильтра маршрутизации 0.4.0.pre для Rails 4 по предложению человека, который разместил эту версию в RubyGems. Вы не найдете эту версию при поиске на веб-сайте RubyGems. Я узнал об этом, когда опубликовал комментарий к существующей проблеме в GitHub.
https://rubygems.org/gems/routing-filter/versions/0.4.0.pre
Я нахожу различия между этой версией и той, которую я сейчас использую в своих приложениях Rails 3. Я считаю, что это последняя версия 0.3.1. С помощью этого драгоценного камня языковой стандарт включен в мои URL-адреса и в отладочную информацию внизу при запуске localhost, как ожидалось. Однако, когда я использую версию 0.4.0.pre, языковые стандарты не отображаются в URL-адресах или в отладочной информации. У меня есть ссылки вверху раздела заголовка, где человек может выбрать свой языковой стандарт. При щелчке по одной из этих ссылок в URL-адресе появляется языковой стандарт. Когда я нажимаю другую ссылку (текст или значок), языковой стандарт исчезает, но языковой стандарт устанавливается в файле cookie (предполагается, что нет, но пока он останется). Переводы верны для выбранного языкового стандарта, но если я не сделаю что-то особенное в своих ссылках, чтобы человек знал, на какой из них он щелкнул, никто не узнает языковой стандарт. Это проблема, потому что сейчас я настраиваю файлы локали, и все они будут на английском языке, пока я не смогу получить переводы для других языков.
Вот код, который у меня есть в обоих приложениях в application_controller.rb, где я устанавливаю языковой стандарт и создаю файл cookie.
before_filter :set_locale
private
def set_locale
I18n.locale = (params[:locale] if params[:locale].present?) || cookies[:locale] || 'en'
cookies[:locale] = I18n.locale if cookies[:locale] != I18n.locale.to_s
end
Вот код, который у меня есть в config / routes.rb.
filter :locale
Вот код моей строки локали в моем заголовке в моем приложении Rails 4. У меня есть похожий код в моем приложении Rails 3.2.13.
<%= link_to_unless_current "English", locale: "en" %> <%= link_to_unless_current "Español", locale: "es" %> <%= link_to_unless_current "Français", locale: "fr" %>
Я не уверен, связана ли проблема с гемом 0.4.0.pre или мне нужно внести дополнительные изменения i18n в мое приложение Rails 4. Читая документацию по i18n, я не вижу ничего лишнего, что мне нужно сделать. Нет специальной документации по 0.4.0.pre, поэтому я предполагаю, что смогу делать то, что делаю, с версией routing-filter для Rails 3.
Я разместил это в разделе проблем для гема на GitHub. Я провел поиск в Интернете об использовании этой версии фильтра маршрутизации, но не могу их найти. Думаю, это было опубликовано в прошлом месяце.
Любая помощь будет оценена по достоинству.