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



我正试图根据用户的accept-language标头收集一些分析。将CCD_ 2转化为CCD_。

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

有什么宝石/要点可以用来查找语言的显示名称吗?

我只需要从维基百科复制语言和国家代码的列表,并将它们转换为哈希:

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'])

最新更新