diff --git a/error.go b/error.go index 0f0257e..e6d2f01 100644 --- a/error.go +++ b/error.go @@ -4,7 +4,16 @@ import ( "context" ) -type LangError struct { +type LangError interface { + NewError(ctx context.Context, key string) error + NewErrorFormat(ctx context.Context, key string, format map[string]string) error + Error() string + GetCode() int + GetMsg() string + GetFormat() map[string]string +} + +type langError struct { ctx context.Context key string format map[string]string @@ -14,7 +23,7 @@ type errorConst string const errorLang errorConst = "errorLang" -func (e *LangError) Error() string { +func (e *langError) Error() string { errLang := e.ctx.Value(errorLang) l := "" if errLang != nil { @@ -23,15 +32,15 @@ func (e *LangError) Error() string { return GetFormat(l, e.key, e.format) } -func (e *LangError) GetCode() int { +func (e *langError) GetCode() int { return GetCode(e.key) } -func (e *LangError) GetMsg() string { +func (e *langError) GetMsg() string { return e.key } -func (e *LangError) GetFormat() map[string]string { +func (e *langError) GetFormat() map[string]string { if e.format == nil { e.format = make(map[string]string) } @@ -39,7 +48,7 @@ func (e *LangError) GetFormat() map[string]string { } func NewErrorFormat(ctx context.Context, key string, format map[string]string) error { - return &LangError{ + return &langError{ ctx: ctx, key: key, format: format, @@ -47,7 +56,7 @@ func NewErrorFormat(ctx context.Context, key string, format map[string]string) e } func NewError(ctx context.Context, key string) error { - return &LangError{ + return &langError{ ctx: ctx, key: key, } diff --git a/error_test.go b/error_test.go index e39ad7e..60608e1 100644 --- a/error_test.go +++ b/error_test.go @@ -35,7 +35,7 @@ func TestError(t *testing.T) { err = langx.NewError(ctx, "error") // fmt.Printf("err: %v\n", err) t.Log(err.Error()) - val, ok := err.(*langx.LangError) + val, ok := err.(langx.LangError) if ok { t.Log(val.GetCode()) } @@ -44,7 +44,7 @@ func TestError(t *testing.T) { "name": "yuninks", }) t.Log(err.Error()) - val, ok = err.(*langx.LangError) + val, ok = err.(langx.LangError) if ok { t.Log(val.GetCode()) } diff --git a/readme.md b/readme.md index 2f911dd..393f2ba 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,9 @@ # 简介 -这是简单的一个多语言响应工具 +这是简单的一个多语言响应工具,能够通过多种方式加载资源文件,然后进行匹配。同时支持占位符替换的形式在多语言响应的时候替换特定字符,让响应更友好。 + +# 使用方法 + +看example