我无法获得区域设置字符串I18n.locale.to_s
返回的内容。它是代码运行的语言环境(即部署代码的服务器的语言环境),还是从请求中获取语言环境(请求URL的语言环境)?
我认为它应该是服务器的语言环境,就像来自我们的用户(en_US)命中运行JP(ja_JP)的服务器一样,I18n.locale.to_s
应该将语言环境作为JP返回。如果我的假设是错误的,请纠正我。
答案 0 :(得分:2)
是的,你是对的。除非您使用其他代码(例如额外的宝石),否则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
的所有调用现在都将以覆盖的语言环境进行响应。