I18n.locale.to_s Rails 中的语言环境返回什么区域设置



我无法获取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的所有调用现在都将使用覆盖的区域设置进行响应。

最新更新