2023-12-27 19:08:09 +08:00
|
|
|
package errorx
|
|
|
|
|
|
|
|
|
|
import (
|
2025-10-26 20:32:02 +08:00
|
|
|
"context"
|
2023-12-27 19:08:09 +08:00
|
|
|
|
2025-10-26 20:32:02 +08:00
|
|
|
"github.com/yuninks/langx"
|
2023-12-27 19:08:09 +08:00
|
|
|
)
|
|
|
|
|
|
2025-10-26 20:45:21 +08:00
|
|
|
// 定义错误常量
|
2023-12-27 19:08:09 +08:00
|
|
|
|
2025-10-26 20:45:21 +08:00
|
|
|
type ErrorLanguage struct {
|
2025-10-26 20:58:12 +08:00
|
|
|
ErrorInterface
|
2023-12-27 19:08:09 +08:00
|
|
|
}
|
|
|
|
|
|
2025-10-26 20:45:21 +08:00
|
|
|
// 生成错误常量
|
|
|
|
|
func NewLanguage(uniKey string, code int, defaultValue string) ErrorLanguage {
|
|
|
|
|
langx.AppendCode(map[string]int{uniKey: code})
|
|
|
|
|
langx.AppendTrans(langx.GetDefaultLang(), map[string]string{uniKey: defaultValue})
|
2023-12-27 19:08:09 +08:00
|
|
|
|
2025-10-26 20:58:12 +08:00
|
|
|
l := NewStruct(context.Background(), uniKey, nil)
|
2023-12-27 19:08:09 +08:00
|
|
|
|
2025-10-26 20:45:21 +08:00
|
|
|
return ErrorLanguage{l}
|
2025-10-26 20:32:02 +08:00
|
|
|
}
|
2023-12-27 19:08:09 +08:00
|
|
|
|
2025-10-26 20:45:21 +08:00
|
|
|
// Key生成错误信息
|
|
|
|
|
func (l ErrorLanguage) Err() error {
|
|
|
|
|
return l
|
2023-12-27 19:08:09 +08:00
|
|
|
}
|
|
|
|
|
|
2025-10-26 20:45:21 +08:00
|
|
|
// Key生成错误信息
|
|
|
|
|
func (l ErrorLanguage) Errf(format map[string]string) error {
|
|
|
|
|
newLang := l.Copy()
|
|
|
|
|
newLang.SetFormat(format)
|
|
|
|
|
return newLang
|
2023-12-27 19:08:09 +08:00
|
|
|
}
|
2025-10-26 20:32:02 +08:00
|
|
|
|
2025-10-26 20:45:21 +08:00
|
|
|
func (l ErrorLanguage) ErrfKV(key, value string) error {
|
|
|
|
|
newLang := l.Copy()
|
|
|
|
|
newLang.SetFormatKV(key, value)
|
|
|
|
|
return newLang
|
2025-10-26 20:32:02 +08:00
|
|
|
}
|
|
|
|
|
|
2025-10-26 20:45:21 +08:00
|
|
|
// 获取翻译后的错误信息
|
|
|
|
|
func (l ErrorLanguage) Msg(ctx context.Context) string {
|
|
|
|
|
newLang := l.Copy()
|
|
|
|
|
newLang.SetCtx(ctx)
|
|
|
|
|
return newLang.Error()
|
2023-12-27 19:08:09 +08:00
|
|
|
}
|
|
|
|
|
|
2025-10-26 20:45:21 +08:00
|
|
|
// 获取翻译后的错误信息
|
|
|
|
|
func (l ErrorLanguage) Msgf(ctx context.Context, format map[string]string) string {
|
|
|
|
|
newLang := l.Copy()
|
|
|
|
|
newLang.SetCtx(ctx)
|
|
|
|
|
newLang.SetFormat(format)
|
|
|
|
|
return newLang.Error()
|
2023-12-27 19:08:09 +08:00
|
|
|
}
|
|
|
|
|
|
2025-10-26 20:45:21 +08:00
|
|
|
var (
|
|
|
|
|
Success ErrorLanguage = NewLanguage("success", 200, "操作成功")
|
|
|
|
|
Error ErrorLanguage = NewLanguage("error", 400, "操作失败")
|
|
|
|
|
ErrWithMsg ErrorLanguage = NewLanguage("error_with_msg", 400, "操作失败: #msg#")
|
|
|
|
|
)
|