В моем двуязычном приложении Rails 4 У меня есть LocalesController
вроде этого:Как изменить локаль через URL?
class LocalesController < ApplicationController
def change_locale
if params[:set_locale]
session[:locale] = params[:set_locale]
url_hash = Rails.application.routes.recognize_path URI(request.referer).path
url_hash[:locale] = params[:set_locale]
redirect_to url_hash
end
end
end
Пользователя может изменить свою локаль через эту форму:
def locale_switcher
form_tag url_for(:controller => 'locales', :action => 'change_locale'), :method => 'get', :id => 'locale_switcher' do
select_tag 'set_locale', options_for_select(LANGUAGES, I18n.locale.to_s)
end
Это работает.
Однако, теперь у пользователя нет возможности изменить язык по URL-адресу.
E.g. если пользователь находится на странице www.app.com/en/projects
, а затем вручную изменяет URL-адрес на www.app.com/fr/projects
, он должен посмотреть французскую версию страницы, но вместо этого ничего не происходит.
Это может не иметь значения во многих приложениях Rails, но в моем случае это очень важно.
Как это можно исправить?
Спасибо за любую помощь.
Вам нужно будет проверить и настроить соответствующие правила маршрутизации для обработки специфических для локали путей. –