在过去的几个小时里,我一直在尽一切可能使这项工作,谷歌搜索,重新设计,测试等 - 但不知何故无法让它发挥作用。
好的,我想设置 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 - 禁用了所有可能干扰的 gem(每次都重新启动服务器)
任何帮助,将不胜感激。谢谢,G