From 7ac8c24d2a4a1db58204ba6ecf9fcdf08f406554 Mon Sep 17 00:00:00 2001 From: Yun Date: Fri, 22 Aug 2025 14:23:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=94=99=E8=AF=AF=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E7=9A=84=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- error.go | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/error.go b/error.go index 7abbb4e..79dde8f 100644 --- a/error.go +++ b/error.go @@ -5,10 +5,13 @@ import ( ) type LangError interface { - Error() string // 实现error接口&获取翻译后的错误信息 - GetCode() int // 获取翻译后的Code - GetKey() string // 获取原Key值 - GetFormat() map[string]string // 获取附加数据 + Copy() LangError // 复制错误信息 + Error() string // 实现error接口&获取翻译后的错误信息 + GetCode() int // 获取翻译后的Code + GetKey() string // 获取原Key值 + GetFormat() map[string]string // 获取附加数据 + SetFormat(format map[string]string) // 设置附加数据 + SetCtx(ctxhttp context.Context) // 设置上下文 } type langError struct { @@ -17,13 +20,19 @@ type langError struct { format map[string]string } -type errorConst string +func (l *langError) Copy() LangError { + return &langError{ + ctx: l.ctx, + key: l.key, + format: l.format, + } +} func (e *langError) Error() string { - errLang := e.ctx.Value(errorLang) + errLang := e.ctx.Value("Accept-Language") l := "" if errLang != nil { - l = string(errLang.(errorConst)) + l = string(errLang.(string)) } return GetFormat(l, e.key, e.format) } @@ -43,6 +52,14 @@ func (e *langError) GetFormat() map[string]string { return e.format } +func (e *langError) SetFormat(format map[string]string) { + e.format = format +} + +func (e *langError) SetCtx(ctx context.Context) { + e.ctx = ctx +} + func NewErrorFormat(ctx context.Context, key string, format map[string]string) error { return &langError{ ctx: ctx, @@ -58,8 +75,6 @@ func NewError(ctx context.Context, key string) error { } } -const errorLang errorConst = "errorLang" - func SetCtxLang(ctx context.Context, lang string) context.Context { - return context.WithValue(ctx, errorLang, lang) + return context.WithValue(ctx, "Accept-Language", lang) }