Skip to content

Commit

Permalink
enhancement: add zh translations for tag json, lowercase, uppercase, …
Browse files Browse the repository at this point in the history
…datetime
  • Loading branch information
cncal committed Apr 19, 2020
1 parent c68441b commit 8509886
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 1 deletion.
30 changes: 30 additions & 0 deletions translations/zh/zh.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
29 changes: 28 additions & 1 deletion translations/zh/zh_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -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 {
Expand Down

0 comments on commit 8509886

Please sign in to comment.