chore: initial commit

This commit is contained in:
2026-07-22 17:50:33 +08:00
parent 82936a8987
commit ee9f50b859
107 changed files with 8346 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
package validator
import (
"errors"
"reflect"
"github.com/go-playground/locales/zh"
ut "github.com/go-playground/universal-translator"
"github.com/go-playground/validator/v10"
zhtranslations "github.com/go-playground/validator/v10/translations/zh"
)
var (
trans ut.Translator
validate *validator.Validate
)
func InitValidatorZh() {
langZh := zh.New()
uni := ut.New(langZh, langZh)
var found bool
trans, found = uni.GetTranslator("zh")
if !found {
panic("translator 'zh' not found")
}
err := zhtranslations.RegisterDefaultTranslations(validate, trans)
if err != nil {
panic("failed to register zh translations: " + err.Error())
}
}
func init() {
validate = validator.New()
// 注册自定义标签名称
validate.RegisterTagNameFunc(func(field reflect.StructField) string {
name := field.Tag.Get("json")
if name == "-" {
return ""
}
return name
})
// 初始化中文翻译器
InitValidatorZh()
}
func Translate(err error) []string {
var validateErrs validator.ValidationErrors
if errors.As(err, &validateErrs) {
messages := make([]string, 0, len(validateErrs))
for _, e := range validateErrs {
messages = append(messages, e.Translate(trans))
}
return messages
}
// 非校验错误 直接返回
return []string{err.Error()}
}
func Struct(s any) error {
return validate.Struct(s)
}