Ruby on rails Rails 5:检测浏览器语言
我正在尝试检测浏览器语言,以便设置适当的i18n语言环境文件 这是我的设置:Ruby on rails Rails 5:检测浏览器语言,ruby-on-rails,Ruby On Rails,我正在尝试检测浏览器语言,以便设置适当的i18n语言环境文件 这是我的设置: class ApplicationController < ActionController::Base before_action :set_locale ALLOWED_LOCALES = %w(de en en-US en-GB en-CA en-IN es).freeze DEFAULT_LOCALE = 'en-US'.freeze def extract_locale_from_h
class ApplicationController < ActionController::Base
before_action :set_locale
ALLOWED_LOCALES = %w(de en en-US en-GB en-CA en-IN es).freeze
DEFAULT_LOCALE = 'en-US'.freeze
def extract_locale_from_header
browser_locale = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first
if ALLOWED_LOCALES.include?(browser_locale)
browser_locale
else
DEFAULT_LOCALE
end
end
end
private
def set_locale
I18n.locale = extract_locale_from_header
end
返回“en”而不是“en GB”
如何检测我在浏览器中设置的确切语言?它返回“en”,因为您的正则表达式与前两个字符匹配。将其更改为类似于
^[a-z]{2}(-a-z]{2})?
browser_locale = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first