Получение языка / названия страны из accept-language в Ruby on Rails
Я пытаюсь собрать аналитику, основанную на пользователях accept-language
заголовок. Было бы очень полезно включить "en-US,en;q=0.8"
в English (United States)
,
Единственный способ, который я действительно видел, - это использовать I18n и поместить имя в файл yaml. Это не похоже на отличное решение, потому что мне придется "переводить" каждую возможность. Было бы целесообразно использовать его для выбора предпочтительного языка пользователя и перевода страницы, но это другой вариант использования.
Могу ли я использовать какой-нибудь драгоценный камень / гист, чтобы найти отображаемое имя языка?
1 ответ
Я просто скопировал бы список языков и кодов стран из Википедии и перенес их в хеши:
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'])