From 3a3d1f24a1fcc49ba4db678a16b609ea59677968 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Lenoch?= Date: Wed, 2 Aug 2017 00:49:21 +0200 Subject: [PATCH] Update i18n middleware and toolkit methods to support IETF and RFC2616. Add IETF matching method to vendor unkwon/i18n. Update i18n middleware to support RFC2616. Former-commit-id: 186f08dec3eb98df13bf2a0da61f0a31fe135358 --- middleware/i18n/i18n.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/middleware/i18n/i18n.go b/middleware/i18n/i18n.go index da296387..4c6d8c7a 100644 --- a/middleware/i18n/i18n.go +++ b/middleware/i18n/i18n.go @@ -31,9 +31,16 @@ func (i *i18nMiddleware) ServeHTTP(ctx context.Context) { if len(language) > 0 { wasByCookie = true } else { - // try to get by the request headers(?) - if langHeader := ctx.GetHeader("Accept-Language"); i18n.IsExist(langHeader) { - language = langHeader + // try to get by the request headers. + langHeader := ctx.GetHeader("Accept-Language") + if len(langHeader) > 0 { + for _, langEntry := range strings.Split(langHeader, ",") { + lc := strings.Split(langEntry, ";")[0] + if lc, ok := i18n.IsExistSimilar(lc); ok { + language = lc + break + } + } } } }