mirror of
https://github.com/Fishwaldo/validator.git
synced 2025-07-08 14:10:18 +00:00
enhancement: add zh translations for tag alphaunicode,alphanumunicode,containsrune,startswith,endswith (#799)
This commit is contained in:
parent
44c2696cbd
commit
61a982014e
2 changed files with 196 additions and 111 deletions
|
@ -1000,6 +1000,16 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
|
||||||
translation: "{0}只能包含字母和数字",
|
translation: "{0}只能包含字母和数字",
|
||||||
override: false,
|
override: false,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
tag: "alphanumunicode",
|
||||||
|
translation: "{0}只能包含字母数字和Unicode字符",
|
||||||
|
override: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: "alphaunicode",
|
||||||
|
translation: "{0}只能包含字母和Unicode字符",
|
||||||
|
override: false,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
tag: "numeric",
|
tag: "numeric",
|
||||||
translation: "{0}必须是一个有效的数值",
|
translation: "{0}必须是一个有效的数值",
|
||||||
|
@ -1090,6 +1100,21 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
|
||||||
return t
|
return t
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
tag: "containsrune",
|
||||||
|
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
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
tag: "excludes",
|
tag: "excludes",
|
||||||
translation: "{0}不能包含文本'{1}'",
|
translation: "{0}不能包含文本'{1}'",
|
||||||
|
@ -1135,6 +1160,36 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
|
||||||
return t
|
return t
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
tag: "endswith",
|
||||||
|
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
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: "startswith",
|
||||||
|
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
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
tag: "isbn",
|
tag: "isbn",
|
||||||
translation: "{0}必须是一个有效的ISBN编号",
|
translation: "{0}必须是一个有效的ISBN编号",
|
||||||
|
|
|
@ -31,117 +31,122 @@ func TestTranslations(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Test struct {
|
type Test struct {
|
||||||
Inner Inner
|
Inner Inner
|
||||||
RequiredString string `validate:"required"`
|
RequiredString string `validate:"required"`
|
||||||
RequiredNumber int `validate:"required"`
|
RequiredNumber int `validate:"required"`
|
||||||
RequiredMultiple []string `validate:"required"`
|
RequiredMultiple []string `validate:"required"`
|
||||||
LenString string `validate:"len=1"`
|
LenString string `validate:"len=1"`
|
||||||
LenNumber float64 `validate:"len=1113.00"`
|
LenNumber float64 `validate:"len=1113.00"`
|
||||||
LenMultiple []string `validate:"len=7"`
|
LenMultiple []string `validate:"len=7"`
|
||||||
MinString string `validate:"min=1"`
|
MinString string `validate:"min=1"`
|
||||||
MinNumber float64 `validate:"min=1113.00"`
|
MinNumber float64 `validate:"min=1113.00"`
|
||||||
MinMultiple []string `validate:"min=7"`
|
MinMultiple []string `validate:"min=7"`
|
||||||
MaxString string `validate:"max=3"`
|
MaxString string `validate:"max=3"`
|
||||||
MaxNumber float64 `validate:"max=1113.00"`
|
MaxNumber float64 `validate:"max=1113.00"`
|
||||||
MaxMultiple []string `validate:"max=7"`
|
MaxMultiple []string `validate:"max=7"`
|
||||||
EqString string `validate:"eq=3"`
|
EqString string `validate:"eq=3"`
|
||||||
EqNumber float64 `validate:"eq=2.33"`
|
EqNumber float64 `validate:"eq=2.33"`
|
||||||
EqMultiple []string `validate:"eq=7"`
|
EqMultiple []string `validate:"eq=7"`
|
||||||
NeString string `validate:"ne="`
|
NeString string `validate:"ne="`
|
||||||
NeNumber float64 `validate:"ne=0.00"`
|
NeNumber float64 `validate:"ne=0.00"`
|
||||||
NeMultiple []string `validate:"ne=0"`
|
NeMultiple []string `validate:"ne=0"`
|
||||||
LtString string `validate:"lt=3"`
|
LtString string `validate:"lt=3"`
|
||||||
LtNumber float64 `validate:"lt=5.56"`
|
LtNumber float64 `validate:"lt=5.56"`
|
||||||
LtMultiple []string `validate:"lt=2"`
|
LtMultiple []string `validate:"lt=2"`
|
||||||
LtTime time.Time `validate:"lt"`
|
LtTime time.Time `validate:"lt"`
|
||||||
LteString string `validate:"lte=3"`
|
LteString string `validate:"lte=3"`
|
||||||
LteNumber float64 `validate:"lte=5.56"`
|
LteNumber float64 `validate:"lte=5.56"`
|
||||||
LteMultiple []string `validate:"lte=2"`
|
LteMultiple []string `validate:"lte=2"`
|
||||||
LteTime time.Time `validate:"lte"`
|
LteTime time.Time `validate:"lte"`
|
||||||
GtString string `validate:"gt=3"`
|
GtString string `validate:"gt=3"`
|
||||||
GtNumber float64 `validate:"gt=5.56"`
|
GtNumber float64 `validate:"gt=5.56"`
|
||||||
GtMultiple []string `validate:"gt=2"`
|
GtMultiple []string `validate:"gt=2"`
|
||||||
GtTime time.Time `validate:"gt"`
|
GtTime time.Time `validate:"gt"`
|
||||||
GteString string `validate:"gte=3"`
|
GteString string `validate:"gte=3"`
|
||||||
GteNumber float64 `validate:"gte=5.56"`
|
GteNumber float64 `validate:"gte=5.56"`
|
||||||
GteMultiple []string `validate:"gte=2"`
|
GteMultiple []string `validate:"gte=2"`
|
||||||
GteTime time.Time `validate:"gte"`
|
GteTime time.Time `validate:"gte"`
|
||||||
EqFieldString string `validate:"eqfield=MaxString"`
|
EqFieldString string `validate:"eqfield=MaxString"`
|
||||||
EqCSFieldString string `validate:"eqcsfield=Inner.EqCSFieldString"`
|
EqCSFieldString string `validate:"eqcsfield=Inner.EqCSFieldString"`
|
||||||
NeCSFieldString string `validate:"necsfield=Inner.NeCSFieldString"`
|
NeCSFieldString string `validate:"necsfield=Inner.NeCSFieldString"`
|
||||||
GtCSFieldString string `validate:"gtcsfield=Inner.GtCSFieldString"`
|
GtCSFieldString string `validate:"gtcsfield=Inner.GtCSFieldString"`
|
||||||
GteCSFieldString string `validate:"gtecsfield=Inner.GteCSFieldString"`
|
GteCSFieldString string `validate:"gtecsfield=Inner.GteCSFieldString"`
|
||||||
LtCSFieldString string `validate:"ltcsfield=Inner.LtCSFieldString"`
|
LtCSFieldString string `validate:"ltcsfield=Inner.LtCSFieldString"`
|
||||||
LteCSFieldString string `validate:"ltecsfield=Inner.LteCSFieldString"`
|
LteCSFieldString string `validate:"ltecsfield=Inner.LteCSFieldString"`
|
||||||
NeFieldString string `validate:"nefield=EqFieldString"`
|
NeFieldString string `validate:"nefield=EqFieldString"`
|
||||||
GtFieldString string `validate:"gtfield=MaxString"`
|
GtFieldString string `validate:"gtfield=MaxString"`
|
||||||
GteFieldString string `validate:"gtefield=MaxString"`
|
GteFieldString string `validate:"gtefield=MaxString"`
|
||||||
LtFieldString string `validate:"ltfield=MaxString"`
|
LtFieldString string `validate:"ltfield=MaxString"`
|
||||||
LteFieldString string `validate:"ltefield=MaxString"`
|
LteFieldString string `validate:"ltefield=MaxString"`
|
||||||
AlphaString string `validate:"alpha"`
|
AlphaString string `validate:"alpha"`
|
||||||
AlphanumString string `validate:"alphanum"`
|
AlphanumString string `validate:"alphanum"`
|
||||||
NumericString string `validate:"numeric"`
|
AlphanumUnicodeString string `validate:"alphanumunicode"`
|
||||||
NumberString string `validate:"number"`
|
AlphaUnicodeString string `validate:"alphaunicode"`
|
||||||
HexadecimalString string `validate:"hexadecimal"`
|
NumericString string `validate:"numeric"`
|
||||||
HexColorString string `validate:"hexcolor"`
|
NumberString string `validate:"number"`
|
||||||
RGBColorString string `validate:"rgb"`
|
HexadecimalString string `validate:"hexadecimal"`
|
||||||
RGBAColorString string `validate:"rgba"`
|
HexColorString string `validate:"hexcolor"`
|
||||||
HSLColorString string `validate:"hsl"`
|
RGBColorString string `validate:"rgb"`
|
||||||
HSLAColorString string `validate:"hsla"`
|
RGBAColorString string `validate:"rgba"`
|
||||||
Email string `validate:"email"`
|
HSLColorString string `validate:"hsl"`
|
||||||
URL string `validate:"url"`
|
HSLAColorString string `validate:"hsla"`
|
||||||
URI string `validate:"uri"`
|
Email string `validate:"email"`
|
||||||
Base64 string `validate:"base64"`
|
URL string `validate:"url"`
|
||||||
Contains string `validate:"contains=purpose"`
|
URI string `validate:"uri"`
|
||||||
ContainsAny string `validate:"containsany=!@#$"`
|
Base64 string `validate:"base64"`
|
||||||
Excludes string `validate:"excludes=text"`
|
Contains string `validate:"contains=purpose"`
|
||||||
ExcludesAll string `validate:"excludesall=!@#$"`
|
ContainsAny string `validate:"containsany=!@#$"`
|
||||||
ExcludesRune string `validate:"excludesrune=☻"`
|
ContainsRune string `validate:"containsrune=☻"`
|
||||||
ISBN string `validate:"isbn"`
|
Excludes string `validate:"excludes=text"`
|
||||||
ISBN10 string `validate:"isbn10"`
|
ExcludesAll string `validate:"excludesall=!@#$"`
|
||||||
ISBN13 string `validate:"isbn13"`
|
ExcludesRune string `validate:"excludesrune=☻"`
|
||||||
UUID string `validate:"uuid"`
|
EndsWith string `validate:"endswith=end"`
|
||||||
UUID3 string `validate:"uuid3"`
|
StartsWith string `validate:"startswith=start"`
|
||||||
UUID4 string `validate:"uuid4"`
|
ISBN string `validate:"isbn"`
|
||||||
UUID5 string `validate:"uuid5"`
|
ISBN10 string `validate:"isbn10"`
|
||||||
ASCII string `validate:"ascii"`
|
ISBN13 string `validate:"isbn13"`
|
||||||
PrintableASCII string `validate:"printascii"`
|
UUID string `validate:"uuid"`
|
||||||
MultiByte string `validate:"multibyte"`
|
UUID3 string `validate:"uuid3"`
|
||||||
DataURI string `validate:"datauri"`
|
UUID4 string `validate:"uuid4"`
|
||||||
Latitude string `validate:"latitude"`
|
UUID5 string `validate:"uuid5"`
|
||||||
Longitude string `validate:"longitude"`
|
ASCII string `validate:"ascii"`
|
||||||
SSN string `validate:"ssn"`
|
PrintableASCII string `validate:"printascii"`
|
||||||
IP string `validate:"ip"`
|
MultiByte string `validate:"multibyte"`
|
||||||
IPv4 string `validate:"ipv4"`
|
DataURI string `validate:"datauri"`
|
||||||
IPv6 string `validate:"ipv6"`
|
Latitude string `validate:"latitude"`
|
||||||
CIDR string `validate:"cidr"`
|
Longitude string `validate:"longitude"`
|
||||||
CIDRv4 string `validate:"cidrv4"`
|
SSN string `validate:"ssn"`
|
||||||
CIDRv6 string `validate:"cidrv6"`
|
IP string `validate:"ip"`
|
||||||
TCPAddr string `validate:"tcp_addr"`
|
IPv4 string `validate:"ipv4"`
|
||||||
TCPAddrv4 string `validate:"tcp4_addr"`
|
IPv6 string `validate:"ipv6"`
|
||||||
TCPAddrv6 string `validate:"tcp6_addr"`
|
CIDR string `validate:"cidr"`
|
||||||
UDPAddr string `validate:"udp_addr"`
|
CIDRv4 string `validate:"cidrv4"`
|
||||||
UDPAddrv4 string `validate:"udp4_addr"`
|
CIDRv6 string `validate:"cidrv6"`
|
||||||
UDPAddrv6 string `validate:"udp6_addr"`
|
TCPAddr string `validate:"tcp_addr"`
|
||||||
IPAddr string `validate:"ip_addr"`
|
TCPAddrv4 string `validate:"tcp4_addr"`
|
||||||
IPAddrv4 string `validate:"ip4_addr"`
|
TCPAddrv6 string `validate:"tcp6_addr"`
|
||||||
IPAddrv6 string `validate:"ip6_addr"`
|
UDPAddr string `validate:"udp_addr"`
|
||||||
UinxAddr string `validate:"unix_addr"` // can't fail from within Go's net package currently, but maybe in the future
|
UDPAddrv4 string `validate:"udp4_addr"`
|
||||||
MAC string `validate:"mac"`
|
UDPAddrv6 string `validate:"udp6_addr"`
|
||||||
IsColor string `validate:"iscolor"`
|
IPAddr string `validate:"ip_addr"`
|
||||||
StrPtrMinLen *string `validate:"min=10"`
|
IPAddrv4 string `validate:"ip4_addr"`
|
||||||
StrPtrMaxLen *string `validate:"max=1"`
|
IPAddrv6 string `validate:"ip6_addr"`
|
||||||
StrPtrLen *string `validate:"len=2"`
|
UinxAddr string `validate:"unix_addr"` // can't fail from within Go's net package currently, but maybe in the future
|
||||||
StrPtrLt *string `validate:"lt=1"`
|
MAC string `validate:"mac"`
|
||||||
StrPtrLte *string `validate:"lte=1"`
|
IsColor string `validate:"iscolor"`
|
||||||
StrPtrGt *string `validate:"gt=10"`
|
StrPtrMinLen *string `validate:"min=10"`
|
||||||
StrPtrGte *string `validate:"gte=10"`
|
StrPtrMaxLen *string `validate:"max=1"`
|
||||||
OneOfString string `validate:"oneof=red green"`
|
StrPtrLen *string `validate:"len=2"`
|
||||||
OneOfInt int `validate:"oneof=5 63"`
|
StrPtrLt *string `validate:"lt=1"`
|
||||||
JsonString string `validate:"json"`
|
StrPtrLte *string `validate:"lte=1"`
|
||||||
LowercaseString string `validate:"lowercase"`
|
StrPtrGt *string `validate:"gt=10"`
|
||||||
UppercaseString string `validate:"uppercase"`
|
StrPtrGte *string `validate:"gte=10"`
|
||||||
Datetime string `validate:"datetime=2006-01-02"`
|
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
|
var test Test
|
||||||
|
@ -172,6 +177,8 @@ func TestTranslations(t *testing.T) {
|
||||||
|
|
||||||
test.AlphaString = "abc3"
|
test.AlphaString = "abc3"
|
||||||
test.AlphanumString = "abc3!"
|
test.AlphanumString = "abc3!"
|
||||||
|
test.AlphanumUnicodeString = "abc3啊!"
|
||||||
|
test.AlphaUnicodeString = "abc3啊"
|
||||||
test.NumericString = "12E.00"
|
test.NumericString = "12E.00"
|
||||||
test.NumberString = "12E"
|
test.NumberString = "12E"
|
||||||
|
|
||||||
|
@ -179,6 +186,9 @@ func TestTranslations(t *testing.T) {
|
||||||
test.ExcludesAll = "This is Great!"
|
test.ExcludesAll = "This is Great!"
|
||||||
test.ExcludesRune = "Love it ☻"
|
test.ExcludesRune = "Love it ☻"
|
||||||
|
|
||||||
|
test.EndsWith = "this is some test text"
|
||||||
|
test.StartsWith = "this is some test text"
|
||||||
|
|
||||||
test.ASCII = "カタカナ"
|
test.ASCII = "カタカナ"
|
||||||
test.PrintableASCII = "カタカナ"
|
test.PrintableASCII = "カタカナ"
|
||||||
|
|
||||||
|
@ -329,6 +339,14 @@ func TestTranslations(t *testing.T) {
|
||||||
ns: "Test.ISBN13",
|
ns: "Test.ISBN13",
|
||||||
expected: "ISBN13必须是一个有效的ISBN-13编号",
|
expected: "ISBN13必须是一个有效的ISBN-13编号",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
ns: "Test.EndsWith",
|
||||||
|
expected: "EndsWith必须以文本'end'结尾",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ns: "Test.StartsWith",
|
||||||
|
expected: "StartsWith必须以文本'start'开头",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
ns: "Test.Excludes",
|
ns: "Test.Excludes",
|
||||||
expected: "Excludes不能包含文本'text'",
|
expected: "Excludes不能包含文本'text'",
|
||||||
|
@ -341,6 +359,10 @@ func TestTranslations(t *testing.T) {
|
||||||
ns: "Test.ExcludesRune",
|
ns: "Test.ExcludesRune",
|
||||||
expected: "ExcludesRune不能包含'☻'",
|
expected: "ExcludesRune不能包含'☻'",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
ns: "Test.ContainsRune",
|
||||||
|
expected: "ContainsRune必须包含字符'☻'",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
ns: "Test.ContainsAny",
|
ns: "Test.ContainsAny",
|
||||||
expected: "ContainsAny必须包含至少一个以下字符'!@#$'",
|
expected: "ContainsAny必须包含至少一个以下字符'!@#$'",
|
||||||
|
@ -397,6 +419,14 @@ func TestTranslations(t *testing.T) {
|
||||||
ns: "Test.NumericString",
|
ns: "Test.NumericString",
|
||||||
expected: "NumericString必须是一个有效的数值",
|
expected: "NumericString必须是一个有效的数值",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
ns: "Test.AlphaUnicodeString",
|
||||||
|
expected: "AlphaUnicodeString只能包含字母和Unicode字符",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ns: "Test.AlphanumUnicodeString",
|
||||||
|
expected: "AlphanumUnicodeString只能包含字母数字和Unicode字符",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
ns: "Test.AlphanumString",
|
ns: "Test.AlphanumString",
|
||||||
expected: "AlphanumString只能包含字母和数字",
|
expected: "AlphanumString只能包含字母和数字",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue