@@ -217,17 +217,18 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
217
217
customTransFunc : func (ut ut.Translator , fe validator.FieldError ) string {
218
218
var err error
219
219
var t string
220
-
220
+ var f64 float64
221
221
var digits uint64
222
222
var kind reflect.Kind
223
223
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
+ }
227
228
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
231
232
}
232
233
233
234
kind = fe .Kind ()
@@ -240,6 +241,11 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
240
241
241
242
var c string
242
243
244
+ err = fn ()
245
+ if err != nil {
246
+ goto END
247
+ }
248
+
243
249
c , err = ut .C ("min-string-character" , f64 , digits , ut .FmtNumber (f64 , digits ))
244
250
if err != nil {
245
251
goto END
@@ -250,6 +256,11 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
250
256
case reflect .Slice , reflect .Map , reflect .Array :
251
257
var c string
252
258
259
+ err = fn ()
260
+ if err != nil {
261
+ goto END
262
+ }
263
+
253
264
c , err = ut .C ("min-items-item" , f64 , digits , ut .FmtNumber (f64 , digits ))
254
265
if err != nil {
255
266
goto END
@@ -258,6 +269,16 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
258
269
t , err = ut .T ("min-items" , fe .Field (), c )
259
270
260
271
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
+
261
282
t , err = ut .T ("min-number" , fe .Field (), ut .FmtNumber (f64 , digits ))
262
283
}
263
284
@@ -305,17 +326,18 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
305
326
customTransFunc : func (ut ut.Translator , fe validator.FieldError ) string {
306
327
var err error
307
328
var t string
308
-
329
+ var f64 float64
309
330
var digits uint64
310
331
var kind reflect.Kind
311
332
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
+ }
315
337
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
319
341
}
320
342
321
343
kind = fe .Kind ()
@@ -328,6 +350,11 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
328
350
329
351
var c string
330
352
353
+ err = fn ()
354
+ if err != nil {
355
+ goto END
356
+ }
357
+
331
358
c , err = ut .C ("max-string-character" , f64 , digits , ut .FmtNumber (f64 , digits ))
332
359
if err != nil {
333
360
goto END
@@ -338,6 +365,11 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
338
365
case reflect .Slice , reflect .Map , reflect .Array :
339
366
var c string
340
367
368
+ err = fn ()
369
+ if err != nil {
370
+ goto END
371
+ }
372
+
341
373
c , err = ut .C ("max-items-item" , f64 , digits , ut .FmtNumber (f64 , digits ))
342
374
if err != nil {
343
375
goto END
@@ -346,6 +378,16 @@ func RegisterDefaultTranslations(v *validator.Validate, trans ut.Translator) (er
346
378
t , err = ut .T ("max-items" , fe .Field (), c )
347
379
348
380
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
+
349
391
t , err = ut .T ("max-number" , fe .Field (), ut .FmtNumber (f64 , digits ))
350
392
}
351
393
0 commit comments