重构项目的实现,优化使用方法与使用逻辑
This commit is contained in:
@@ -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))
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user