I18n.locale.to_s 在 rails return 中的语言环境是什么

what locale does I18n.locale.to_s in rails return

我无法获取语言环境字符串 I18n.locale.to_s returns。它是代码运行的语言环境(即部署代码的服务器的语言环境)还是从请求中获取语言环境(请求 URL 的语言环境)?

我认为它应该是服务器的语言环境,就像我们(en_US) 的用户访问日本(ja_JP) 的服务器运行 一样,I18n.locale.to_s 应该return 语言环境为 JP。如果我的假设是错误的,请纠正我。

是的,你是对的。除非您使用额外的代码(例如额外的 gem),否则 Rails 不会查找访问者的 IP 地址,也不会考虑与浏览器有关的任何内容访客。

当您在控制器或代码中的其他地方调用 I18n.locale.to_s 时,您将获得服务器位置的默认语言环境。但是,如果您想更改当前访问者的区域设置,例如,他们单击 link 通过在请求中发送 :locale 参数来更改它,您可以这样做:

before_action :set_locale

def set_locale
  I18n.locale = params[:locale] || I18n.default_locale
end

然后,该请求中对 I18n.locale.to_s 的所有调用现在都将使用覆盖的语言环境进行响应。