mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-03 20:50:19 +08:00
fix: fix bug in GetAcceptLanguage() (#1322)
This commit is contained in:
@ -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]
|
||||||
|
12
i18n/util.go
12
i18n/util.go
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user