Я провел последние несколько часов, пытаясь сделать все возможное, чтобы это работало, гуглил, переделывал, тестировал и т. Д., Но почему-то это не работает.
хорошо, я хотел бы установить I18n.locale - довольно просто.
В основном я реализовал то, что написано в гайде здесь:
http://guides.rubyonrails.org/i18n.html
Application_controller.rb
before_action :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
На самом деле моя выглядит так:
class ApplicationController < ActionController::Base
logger.info "Point A..."
before_action :set_locale
def set_locale
logger.info "Point B..."
I18n.locale = extract_locale_from_accept_language_header
end
private
def extract_locale_from_accept_language_header
....
Эта проблема заключается в том, что языковой стандарт устанавливается до того, как я могу установить языковой стандарт при первом доступе к странице. Я хотел бы сначала прочитать настройки браузера пользователя, если языковой стандарт еще не установлен. Чтобы дать пользователю возможность попасть на свой локализованный сайт. Если они впоследствии изменят локаль (изменят язык - отлично, тогда локаль будет установлена, и они будут использовать ее, пока не решат снова переключиться).
Я поместил две строки в код выше, и это вывод:
Point A...
Processing by StaticPagesController#home as HTML
Parameters: {"locale"=>"en"}
Point B...
Я пробовал следующее: - удалил локаль по умолчанию в application.rb: #config.i18n.default_locale = :en - отключил все гемы, которые могли мешать (каждый раз перезапускал сервер)
Любая помощь будет оценена по достоинству. Спасибо, Г