mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-29 20:13:27 +00:00
Fix switch language (#14484)
Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: Lauris BH <lauris@nix.lv>
This commit is contained in:
parent
af7f71207c
commit
669ff8e9b1
|
@ -15,24 +15,22 @@ import (
|
||||||
|
|
||||||
// Locale handle locale
|
// Locale handle locale
|
||||||
func Locale(resp http.ResponseWriter, req *http.Request) translation.Locale {
|
func Locale(resp http.ResponseWriter, req *http.Request) translation.Locale {
|
||||||
hasCookie := false
|
|
||||||
|
|
||||||
// 1. Check URL arguments.
|
// 1. Check URL arguments.
|
||||||
lang := req.URL.Query().Get("lang")
|
lang := req.URL.Query().Get("lang")
|
||||||
|
var changeLang = lang != ""
|
||||||
|
|
||||||
// 2. Get language information from cookies.
|
// 2. Get language information from cookies.
|
||||||
if len(lang) == 0 {
|
if len(lang) == 0 {
|
||||||
ck, _ := req.Cookie("lang")
|
ck, _ := req.Cookie("lang")
|
||||||
if ck != nil {
|
if ck != nil {
|
||||||
lang = ck.Value
|
lang = ck.Value
|
||||||
hasCookie = true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check again in case someone modify by purpose.
|
// Check again in case someone modify by purpose.
|
||||||
if lang != "" && !i18n.IsExist(lang) {
|
if lang != "" && !i18n.IsExist(lang) {
|
||||||
lang = ""
|
lang = ""
|
||||||
hasCookie = false
|
changeLang = false
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Get language information from 'Accept-Language'.
|
// 3. Get language information from 'Accept-Language'.
|
||||||
|
@ -43,8 +41,8 @@ func Locale(resp http.ResponseWriter, req *http.Request) translation.Locale {
|
||||||
lang = tag.String()
|
lang = tag.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
if !hasCookie {
|
if changeLang {
|
||||||
req.AddCookie(NewCookie("lang", lang, 1<<31-1))
|
SetCookie(resp, "lang", lang, 1<<31-1)
|
||||||
}
|
}
|
||||||
|
|
||||||
return translation.NewLocale(lang)
|
return translation.NewLocale(lang)
|
||||||
|
|
Loading…
Reference in a new issue