@@ -217,17 +217,18 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
217217 customTransFunc : func (ut ut.Translator , fe validator.FieldError ) string {
218218 var err error
219219 var t string
220-
220+ var f64 float64
221221 var digits uint64
222222 var kind reflect.Kind
223223
224- if idx := strings .Index (fe .Param (), "." ); idx != - 1 {
225- digits = uint64 (len (fe .Param ()[idx + 1 :]))
226- }
224+ fn := func () (err error ) {
225+ if idx := strings .Index (fe .Param (), "." ); idx != - 1 {
226+ digits = uint64 (len (fe .Param ()[idx + 1 :]))
227+ }
227228
228- f64 , err : = strconv .ParseFloat (fe .Param (), 64 )
229- if err != nil {
230- goto END
229+ f64 , err = strconv .ParseFloat (fe .Param (), 64 )
230+
231+ return
231232 }
232233
233234 kind = fe .Kind ()
@@ -240,6 +241,11 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
240241
241242 var c string
242243
244+ err = fn ()
245+ if err != nil {
246+ goto END
247+ }
248+
243249 c , err = ut .C ("min-string-character" , f64 , digits , ut .FmtNumber (f64 , digits ))
244250 if err != nil {
245251 goto END
@@ -250,6 +256,11 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
250256 case reflect .Slice , reflect .Map , reflect .Array :
251257 var c string
252258
259+ err = fn ()
260+ if err != nil {
261+ goto END
262+ }
263+
253264 c , err = ut .C ("min-items-item" , f64 , digits , ut .FmtNumber (f64 , digits ))
254265 if err != nil {
255266 goto END
@@ -258,6 +269,16 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
258269 t , err = ut .T ("min-items" , fe .Field (), c )
259270
260271 default :
272+ if fe .Type () == reflect .TypeOf (time .Duration (0 )) {
273+ t , err = ut .T ("min-number" , fe .Field (), fe .Param ())
274+ goto END
275+ }
276+
277+ err = fn ()
278+ if err != nil {
279+ goto END
280+ }
281+
261282 t , err = ut .T ("min-number" , fe .Field (), ut .FmtNumber (f64 , digits ))
262283 }
263284
@@ -305,17 +326,18 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
305326 customTransFunc : func (ut ut.Translator , fe validator.FieldError ) string {
306327 var err error
307328 var t string
308-
329+ var f64 float64
309330 var digits uint64
310331 var kind reflect.Kind
311332
312- if idx := strings .Index (fe .Param (), "." ); idx != - 1 {
313- digits = uint64 (len (fe .Param ()[idx + 1 :]))
314- }
333+ fn := func () (err error ) {
334+ if idx := strings .Index (fe .Param (), "." ); idx != - 1 {
335+ digits = uint64 (len (fe .Param ()[idx + 1 :]))
336+ }
315337
316- f64 , err : = strconv .ParseFloat (fe .Param (), 64 )
317- if err != nil {
318- goto END
338+ f64 , err = strconv .ParseFloat (fe .Param (), 64 )
339+
340+ return
319341 }
320342
321343 kind = fe .Kind ()
@@ -328,6 +350,11 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
328350
329351 var c string
330352
353+ err = fn ()
354+ if err != nil {
355+ goto END
356+ }
357+
331358 c , err = ut .C ("max-string-character" , f64 , digits , ut .FmtNumber (f64 , digits ))
332359 if err != nil {
333360 goto END
@@ -338,6 +365,11 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
338365 case reflect .Slice , reflect .Map , reflect .Array :
339366 var c string
340367
368+ err = fn ()
369+ if err != nil {
370+ goto END
371+ }
372+
341373 c , err = ut .C ("max-items-item" , f64 , digits , ut .FmtNumber (f64 , digits ))
342374 if err != nil {
343375 goto END
@@ -346,6 +378,16 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
346378 t , err = ut .T ("max-items" , fe .Field (), c )
347379
348380 default :
381+ if fe .Type () == reflect .TypeOf (time .Duration (0 )) {
382+ t , err = ut .T ("max-number" , fe .Field (), fe .Param ())
383+ goto END
384+ }
385+
386+ err = fn ()
387+ if err != nil {
388+ goto END
389+ }
390+
349391 t , err = ut .T ("max-number" , fe .Field (), ut .FmtNumber (f64 , digits ))
350392 }
351393
0 commit comments