| package middleware |
|
|
| import ( |
| "github.com/gin-gonic/gin" |
|
|
| "github.com/QuantumNous/new-api/common" |
| "github.com/QuantumNous/new-api/constant" |
| "github.com/QuantumNous/new-api/dto" |
| "github.com/QuantumNous/new-api/i18n" |
| ) |
|
|
| |
| func I18n() gin.HandlerFunc { |
| return func(c *gin.Context) { |
| lang := detectLanguage(c) |
| c.Set(string(constant.ContextKeyLanguage), lang) |
| c.Next() |
| } |
| } |
|
|
| |
| |
| func detectLanguage(c *gin.Context) string { |
| |
| if userSetting, ok := common.GetContextKeyType[dto.UserSetting](c, constant.ContextKeyUserSetting); ok { |
| if userSetting.Language != "" && i18n.IsSupported(userSetting.Language) { |
| return userSetting.Language |
| } |
| } |
|
|
| |
| acceptLang := c.GetHeader("Accept-Language") |
| if acceptLang != "" { |
| lang := i18n.ParseAcceptLanguage(acceptLang) |
| if i18n.IsSupported(lang) { |
| return lang |
| } |
| } |
|
|
| |
| return i18n.DefaultLang |
| } |
|
|
| |
| func GetLanguage(c *gin.Context) string { |
| if lang := c.GetString(string(constant.ContextKeyLanguage)); lang != "" { |
| return lang |
| } |
| return i18n.DefaultLang |
| } |
|
|