我正在尝试根据用户的accept-language
标题收集一些分析。"en-US,en;q=0.8"
变成English (United States)
. _
我真正见过的唯一方法是使用 I18n 并将名称放入 yaml 文件中。这似乎不是一个很好的解决方案,因为我必须“翻译”每种可能性。如果我使用它来获取用户的首选语言并翻译页面,那将是有意义的,但这是一个不同的用例。
我可以使用任何 gem/gist 来查找语言的显示名称吗?
我正在尝试根据用户的accept-language
标题收集一些分析。"en-US,en;q=0.8"
变成English (United States)
. _
我真正见过的唯一方法是使用 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'])