我正在实现基于Accept-Language
标头的多语言 Web 服务。我使用下一个代码来解析标头并获取请求的语言:
var matcher = language.NewMatcher([]language.Tag{
language.English,
language.Russian,
})
header:="ru, RUS, ru-RU, ru-ru"
tags, q, err := language.ParseAcceptLanguage(header)
for key, tag := range tags {
matched, _, c := matcher.Match(tag)
fmt.Printf("%s=>%f Matched as: %s (confidence: %s)\n", tag, q[key], matched, c)
}
我得到的结果是
ru=>1.000000 Matched as: ru (confidence: Exact)
ru=>1.000000 Matched as: ru (confidence: Exact)
ru-RU=>1.000000 Matched as: ru-u-rg-ruzzzz (confidence: Exact)
ru-RU=>1.000000 Matched as: ru-u-rg-ruzzzz (confidence: Exact)
为什么“ru-RU”被匹配为奇怪的标签“ru-u-rg-ruzzzz”?如何将“ru-Ru”匹配为“ru”?