diff --git a/translations/zh/zh.go b/translations/zh/zh.go index c3032b7..6b6cce1 100644 --- a/translations/zh/zh.go +++ b/translations/zh/zh.go @@ -1308,6 +1308,36 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er return s }, }, + { + tag: "json", + translation: "{0}必须是一个JSON字符串", + override: false, + }, + { + tag: "lowercase", + translation: "{0}必须是小写字母", + override: false, + }, + { + tag: "uppercase", + translation: "{0}必须是大写字母", + override: false, + }, + { + tag: "datetime", + translation: "{0}的格式必须是{1}", + override: false, + customTransFunc: func(ut ut.Translator, fe validator.FieldError) string { + + t, err := ut.T(fe.Tag(), fe.Field(), fe.Param()) + if err != nil { + log.Printf("警告: 翻译字段错误: %#v", fe) + return fe.(error).Error() + } + + return t + }, + }, } for _, t := range translations { diff --git a/translations/zh/zh_test.go b/translations/zh/zh_test.go index 26a21ae..d106e0d 100644 --- a/translations/zh/zh_test.go +++ b/translations/zh/zh_test.go @@ -4,9 +4,9 @@ import ( "testing" "time" + . "github.com/go-playground/assert/v2" zhongwen "github.com/go-playground/locales/zh" ut "github.com/go-playground/universal-translator" - . "github.com/go-playground/assert/v2" "github.com/go-playground/validator/v10" ) @@ -138,6 +138,10 @@ func TestTranslations(t *testing.T) { StrPtrGte *string `validate:"gte=10"` OneOfString string `validate:"oneof=red green"` OneOfInt int `validate:"oneof=5 63"` + JsonString string `validate:"json"` + LowercaseString string `validate:"lowercase"` + UppercaseString string `validate:"uppercase"` + Datetime string `validate:"datetime=2006-01-02"` } var test Test @@ -184,6 +188,13 @@ func TestTranslations(t *testing.T) { test.StrPtrMaxLen = &s test.StrPtrLen = &s + test.JsonString = "{\"foo\":\"bar\",}" + + test.LowercaseString = "ABCDEFG" + test.UppercaseString = "abcdefg" + + test.Datetime = "20060102" + err = validate.Struct(test) NotEqual(t, err, nil) @@ -614,6 +625,22 @@ func TestTranslations(t *testing.T) { ns: "Test.OneOfInt", expected: "OneOfInt必须是[5 63]中的一个", }, + { + ns: "Test.JsonString", + expected: "JsonString必须是一个JSON字符串", + }, + { + ns: "Test.LowercaseString", + expected: "LowercaseString必须是小写字母", + }, + { + ns: "Test.UppercaseString", + expected: "UppercaseString必须是大写字母", + }, + { + ns: "Test.Datetime", + expected: "Datetime的格式必须是2006-01-02", + }, } for _, tt := range tests {