Header-based language auto-detection (#11867)

This commit is contained in:
Michael Geers 2024-01-26 08:54:47 +01:00 • committed by GitHub
parent d406b81be8
commit f4473c17ed
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 21 additions and 14 deletions

View file

@ -18,10 +18,22 @@ import (
"github.com/evcc-io/evcc/util/jq"
"github.com/gorilla/mux"
"github.com/itchyny/gojq"
"golang.org/x/text/language"
)
var ignoreState = []string{"releaseNotes"} // excessive size
// getPreferredLanguage returns the preferred language as two letter code
func getPreferredLanguage(header string) string {
languages, _, err := language.ParseAcceptLanguage(header)
if err != nil || len(languages) == 0 {
return "en"
}
base, _ := languages[0].Base()
return base.String()
}
func indexHandler() http.HandlerFunc {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/html; charset=UTF-8")
@ -39,9 +51,12 @@ func indexHandler() http.HandlerFunc {
log.FATAL.Fatal("httpd: failed to create main page template:", err.Error())
}
defaultLang := getPreferredLanguage(r.Header.Get("Accept-Language"))
if err := t.Execute(w, map[string]interface{}{
"Version": Version,
"Commit": Commit,
"Version": Version,
"Commit": Commit,
"DefaultLang": defaultLang,
}); err != nil {
log.ERROR.Println("httpd: failed to render main page:", err.Error())
}