Ruby on rails 从RubyonRails中的accept语言获取语言/国家名称

Ruby on rails 从RubyonRails中的accept语言获取语言/国家名称,ruby-on-rails,ruby,rails-i18n,http-accept-language,Ruby On Rails,Ruby,Rails I18n,Http Accept Language,我试图根据用户的accept language标题收集一些分析。将“en-US,en;q=0.8”转换为英语(美国),将非常有帮助 我真正了解的唯一方法是使用I18n并将名称放入yaml文件中。这似乎不是一个很好的解决方案,因为我必须“翻译”每一种可能性。如果我使用它来获取用户的首选语言并翻译页面,这是有意义的,但这是一个不同的用例 是否有任何gem/gist可用于查找该语言的显示名称?我只需从Wikipedia复制和代码列表,并将其转换为哈希: LANGUAGE_CODES = { aa:

我试图根据用户的
accept language
标题收集一些分析。将
“en-US,en;q=0.8”
转换为
英语(美国)
,将非常有帮助

我真正了解的唯一方法是使用I18n并将名称放入yaml文件中。这似乎不是一个很好的解决方案,因为我必须“翻译”每一种可能性。如果我使用它来获取用户的首选语言并翻译页面,这是有意义的,但这是一个不同的用例


是否有任何gem/gist可用于查找该语言的显示名称?

我只需从Wikipedia复制和代码列表,并将其转换为哈希:

LANGUAGE_CODES = {
  aa: 'Afar',
  ab: 'Abkhaz',
  # ...
  zu: 'Zulu'
}

COUNTRY_CODES = {
  AD: 'Andorra',
  AE: 'United Arab Emirates',
  # ...
  ZW: 'Zimbabwe'
}
使用此哈希,一个简单的方法(如以下)应该能够提取您感兴趣的语言和国家信息:

def language_info(accepted_language)
  language, country = accepted_language.scan(/(\w{2})-(\w{2})/)

  if language && country
    "#{LANGUAGE_CODES[language]} (#{COUNTRY_CODES[country]})"
  end
end

# language_info(request.env['HTTP_ACCEPT_LANGUAGE'])

该列表也可以从IANA注册页面获取-