diff --git a/modules/middlewares/locale.go b/modules/middlewares/locale.go index 7cfba81bda..21980ad486 100644 --- a/modules/middlewares/locale.go +++ b/modules/middlewares/locale.go @@ -15,24 +15,22 @@ import ( // Locale handle locale func Locale(resp http.ResponseWriter, req *http.Request) translation.Locale { - hasCookie := false - // 1. Check URL arguments. lang := req.URL.Query().Get("lang") + var changeLang = lang != "" // 2. Get language information from cookies. if len(lang) == 0 { ck, _ := req.Cookie("lang") if ck != nil { lang = ck.Value - hasCookie = true } } // Check again in case someone modify by purpose. if lang != "" && !i18n.IsExist(lang) { lang = "" - hasCookie = false + changeLang = false } // 3. Get language information from 'Accept-Language'. @@ -43,8 +41,8 @@ func Locale(resp http.ResponseWriter, req *http.Request) translation.Locale { lang = tag.String() } - if !hasCookie { - req.AddCookie(NewCookie("lang", lang, 1<<31-1)) + if changeLang { + SetCookie(resp, "lang", lang, 1<<31-1) } return translation.NewLocale(lang)