fix: fix bug in GetAcceptLanguage() (#1322)

This commit is contained in:
Mr Forest
2022-11-24 20:43:35 +08:00
committed by GitHub
parent 29ec1d2d9c
commit ba9d1e2388
3 changed files with 8 additions and 10 deletions

View File

@ -17,6 +17,7 @@ package controllers
import ( import (
"fmt" "fmt"
"strconv" "strconv"
"strings"
"github.com/casdoor/casdoor/conf" "github.com/casdoor/casdoor/conf"
"github.com/casdoor/casdoor/i18n" "github.com/casdoor/casdoor/i18n"
@ -56,7 +57,7 @@ func (c *ApiController) T(error string) string {
// GetAcceptLanguage ... // GetAcceptLanguage ...
func (c *ApiController) GetAcceptLanguage() string { func (c *ApiController) GetAcceptLanguage() string {
lang := c.Ctx.Request.Header.Get("Accept-Language") lang := c.Ctx.Request.Header.Get("Accept-Language")
if lang == "" { if lang == "" || !strings.Contains(conf.GetConfigString("languages"), lang[0:2]) {
lang = "en" lang = "en"
} }
return lang[0:2] return lang[0:2]

View File

@ -17,7 +17,6 @@ package i18n
import ( import (
"embed" "embed"
"fmt" "fmt"
"log"
"strings" "strings"
"github.com/casdoor/casdoor/util" "github.com/casdoor/casdoor/util"
@ -27,10 +26,7 @@ import (
//go:embed languages/*.ini //go:embed languages/*.ini
var f embed.FS var f embed.FS
var ( var langMapConfig = make(map[string]*ini.File)
langMapConfig = make(map[string]*ini.File)
isNotFirstLoad = make(map[string]bool)
)
func getI18nFilePath(language string) string { func getI18nFilePath(language string) string {
return fmt.Sprintf("../web/src/locales/%s/data.json", language) return fmt.Sprintf("../web/src/locales/%s/data.json", language)
@ -77,16 +73,14 @@ func applyData(data1 *I18nData, data2 *I18nData) {
func Translate(lang string, error string) string { func Translate(lang string, error string) string {
parts := strings.Split(error, ".") parts := strings.Split(error, ".")
if !strings.Contains(error, ".") || len(parts) != 2 { if !strings.Contains(error, ".") || len(parts) != 2 {
log.Println("Invalid Error Name") return "Translate Error: " + error
return ""
} }
if isNotFirstLoad[lang] { if langMapConfig[lang] != nil {
return langMapConfig[lang].Section(parts[0]).Key(parts[1]).String() return langMapConfig[lang].Section(parts[0]).Key(parts[1]).String()
} else { } else {
file, _ := f.ReadFile("languages/locale_" + lang + ".ini") file, _ := f.ReadFile("languages/locale_" + lang + ".ini")
langMapConfig[lang], _ = ini.Load(file) langMapConfig[lang], _ = ini.Load(file)
isNotFirstLoad[lang] = true
return langMapConfig[lang].Section(parts[0]).Key(parts[1]).String() return langMapConfig[lang].Section(parts[0]).Key(parts[1]).String()
} }
} }

View File

@ -553,6 +553,9 @@ export function setLanguage(language) {
} }
export function getAcceptLanguage() { export function getAcceptLanguage() {
if (i18next.language === null || i18next.language === "") {
return "en;q=0.9,en;q=0.8";
}
return i18next.language + ";q=0.9,en;q=0.8"; return i18next.language + ";q=0.9,en;q=0.8";
} }