重构项目的实现,优化使用方法与使用逻辑

This commit is contained in:
2026-06-25 00:03:59 +08:00
parent a6e8101e09
commit 6072ec57e8
49 changed files with 1663 additions and 12534 deletions

View File

@@ -4,10 +4,9 @@ import (
"context"
"net/http"
"strings"
)
// LanguageKey context中存储语言的key
type languageKey struct{}
"git.toowon.com/jimmy/go-common/requestctx"
)
// LanguageHeaderName 语言请求头名称
const LanguageHeaderName = "X-Language"
@@ -15,15 +14,9 @@ const LanguageHeaderName = "X-Language"
// AcceptLanguageHeaderName Accept-Language 请求头名称
const AcceptLanguageHeaderName = "Accept-Language"
// DefaultLanguage 默认语言
const DefaultLanguage = "zh-CN"
// GetLanguageFromContext 从context中获取语言
// GetLanguageFromContext 从 context 中获取语言
func GetLanguageFromContext(ctx context.Context) string {
if lang, ok := ctx.Value(languageKey{}).(string); ok && lang != "" {
return lang
}
return DefaultLanguage
return requestctx.Language(ctx)
}
// Language 语言处理中间件
@@ -44,11 +37,10 @@ func Language(next http.Handler) http.Handler {
// 3. 如果都未设置,使用默认语言
if lang == "" {
lang = DefaultLanguage
lang = requestctx.DefaultLanguage
}
// 将语言存储到context中
ctx := context.WithValue(r.Context(), languageKey{}, lang)
ctx := requestctx.WithLanguage(r.Context(), lang)
next.ServeHTTP(w, r.WithContext(ctx))
})
}
@@ -74,8 +66,7 @@ func LanguageWithDefault(defaultLanguage string) func(http.Handler) http.Handler
lang = defaultLanguage
}
// 将语言存储到context中
ctx := context.WithValue(r.Context(), languageKey{}, lang)
ctx := requestctx.WithLanguage(r.Context(), lang)
next.ServeHTTP(w, r.WithContext(ctx))
})
}