我无法获取I18n.locale.to_s
返回的区域设置字符串。它是代码运行的区域设置(即部署代码的服务器的区域设置(还是从请求中获取区域设置(请求 URL 的区域设置(?
我相信它应该是服务器的语言环境,就像我们(en_US(的用户点击以JP(ja_JP(运行的服务器一样,I18n.locale.to_s
应该将语言环境返回为JP。如果我的假设是错误的,请纠正我。
是的,你是对的。除非您使用额外的代码(例如额外的 gem(,否则 Rails 不会查找访问者的 IP 地址,也不会考虑与访问者的浏览器相关的任何内容。
在控制器或代码中的其他位置调用I18n.locale.to_s
时,将恢复服务器位置的默认区域设置。但是,如果您想根据当前访问者单击链接通过发送:locale
参数来更改当前访问者的区域设置,则可以这样做:
before_action :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
然后,该请求中对I18n.locale.to_s
的所有调用现在都将使用覆盖的区域设置进行响应。