Codebase list golang-github-go-playground-validator-v10 / 578166f
Implement translation of ne-items akm 5 years ago
2 changed file(s) with 266 addition(s) and 208 deletion(s). Raw diff Collapse all Expand all
317317 },
318318 },
319319 {
320 tag: "ne",
321 translation: "{0}は{1}と異ならなければなりません",
322 override: false,
323 customTransFunc: func(ut ut.Translator, fe validator.FieldError) string {
324
325 t, err := ut.T(fe.Tag(), fe.Field(), fe.Param())
326 if err != nil {
327 fmt.Printf("warning: error translating FieldError: %#v", fe)
328 return fe.(error).Error()
329 }
330
331 return t
332 },
333 },
334 {
335 tag: "lt",
320 tag: "ne",
336321 customRegisFunc: func(ut ut.Translator) (err error) {
337
338 if err = ut.Add("lt-string", "{0}の長さは{1}よりも少なくなければなりません", false); err != nil {
339 return
340 }
341
342 if err = ut.AddCardinal("lt-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
343 return
344 }
345
346 if err = ut.AddCardinal("lt-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
347 return
348 }
349
350 if err = ut.Add("lt-number", "{0}は{1}よりも小さくなければなりません", false); err != nil {
351 return
352 }
353
354 if err = ut.Add("lt-items", "{0}は{1}よりも少ない項目を含まなければなりません", false); err != nil {
355 return
356 }
357
358 if err = ut.AddCardinal("lt-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
359 return
360 }
361
362 if err = ut.AddCardinal("lt-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
363 return
364 }
365
366 if err = ut.Add("lt-datetime", "{0}は現時刻よりも前でなければなりません", false); err != nil {
322 if err = ut.Add("ne-items", "{0}の項目の数は{1}と異ならなければなりません", false); err != nil {
323 fmt.Printf("ne customRegisFunc #1 error because of %v\n", err)
324 return
325 }
326 if err = ut.AddCardinal("ne-items-item", "{0}個", locales.PluralRuleOne, false); err != nil {
327 return
328 }
329
330 if err = ut.AddCardinal("ne-items-item", "{0}個", locales.PluralRuleOther, false); err != nil {
331 return
332 }
333 if err = ut.Add("ne", "{0}は{1}と異ならなければなりません", false); err != nil {
334 fmt.Printf("ne customRegisFunc #2 error because of %v\n", err)
367335 return
368336 }
369337
370338 return
371
372339 },
373340 customTransFunc: func(ut ut.Translator, fe validator.FieldError) string {
374341
395362 }
396363
397364 switch kind {
398 case reflect.String:
399
365 case reflect.Slice:
400366 var c string
401
402367 err = fn()
403368 if err != nil {
404369 goto END
405370 }
406371
407 c, err = ut.C("lt-string-character", f64, digits, ut.FmtNumber(f64, digits))
408 if err != nil {
409 goto END
410 }
411
412 t, err = ut.T("lt-string", fe.Field(), c)
413
414 case reflect.Slice, reflect.Map, reflect.Array:
415 var c string
416
417 err = fn()
418 if err != nil {
419 goto END
420 }
421
422 c, err = ut.C("lt-items-item", f64, digits, ut.FmtNumber(f64, digits))
423 if err != nil {
424 goto END
425 }
426
427 t, err = ut.T("lt-items", fe.Field(), c)
428
429 case reflect.Struct:
430 if fe.Type() != reflect.TypeOf(time.Time{}) {
431 err = fmt.Errorf("tag '%s' cannot be used on a struct type", fe.Tag())
432 goto END
433 }
434
435 t, err = ut.T("lt-datetime", fe.Field())
436
372 c, err = ut.C("ne-items-item", f64, digits, ut.FmtNumber(f64, digits))
373 if err != nil {
374 goto END
375 }
376
377 t, err = ut.T("ne-items", fe.Field(), c)
378 break
437379 default:
438 err = fn()
439 if err != nil {
440 goto END
441 }
442
443 t, err = ut.T("lt-number", fe.Field(), ut.FmtNumber(f64, digits))
380 t, err = ut.T("ne", fe.Field(), fe.Param())
444381 }
445382
446383 END:
453390 },
454391 },
455392 {
456 tag: "lte",
393 tag: "lt",
457394 customRegisFunc: func(ut ut.Translator) (err error) {
458395
459 if err = ut.Add("lte-string", "{0}の長さは最大でも{1}でなければなりません", false); err != nil {
460 return
461 }
462
463 if err = ut.AddCardinal("lte-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
464 return
465 }
466
467 if err = ut.AddCardinal("lte-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
468 return
469 }
470
471 if err = ut.Add("lte-number", "{0}は{1}かより小さくなければなりません", false); err != nil {
472 return
473 }
474
475 if err = ut.Add("lte-items", "{0}は最大でも{1}を含まなければなりません", false); err != nil {
476 return
477 }
478
479 if err = ut.AddCardinal("lte-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
480 return
481 }
482
483 if err = ut.AddCardinal("lte-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
484 return
485 }
486
487 if err = ut.Add("lte-datetime", "{0}は現時刻以前でなければなりません", false); err != nil {
396 if err = ut.Add("lt-string", "{0}の長さは{1}よりも少なくなければなりません", false); err != nil {
397 return
398 }
399
400 if err = ut.AddCardinal("lt-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
401 return
402 }
403
404 if err = ut.AddCardinal("lt-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
405 return
406 }
407
408 if err = ut.Add("lt-number", "{0}は{1}よりも小さくなければなりません", false); err != nil {
409 return
410 }
411
412 if err = ut.Add("lt-items", "{0}は{1}よりも少ない項目を含まなければなりません", false); err != nil {
413 return
414 }
415
416 if err = ut.AddCardinal("lt-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
417 return
418 }
419
420 if err = ut.AddCardinal("lt-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
421 return
422 }
423
424 if err = ut.Add("lt-datetime", "{0}は現時刻よりも前でなければなりません", false); err != nil {
488425 return
489426 }
490427
491428 return
429
492430 },
493431 customTransFunc: func(ut ut.Translator, fe validator.FieldError) string {
494432
524462 goto END
525463 }
526464
527 c, err = ut.C("lte-string-character", f64, digits, ut.FmtNumber(f64, digits))
528 if err != nil {
529 goto END
530 }
531
532 t, err = ut.T("lte-string", fe.Field(), c)
465 c, err = ut.C("lt-string-character", f64, digits, ut.FmtNumber(f64, digits))
466 if err != nil {
467 goto END
468 }
469
470 t, err = ut.T("lt-string", fe.Field(), c)
533471
534472 case reflect.Slice, reflect.Map, reflect.Array:
535473 var c string
539477 goto END
540478 }
541479
542 c, err = ut.C("lte-items-item", f64, digits, ut.FmtNumber(f64, digits))
543 if err != nil {
544 goto END
545 }
546
547 t, err = ut.T("lte-items", fe.Field(), c)
480 c, err = ut.C("lt-items-item", f64, digits, ut.FmtNumber(f64, digits))
481 if err != nil {
482 goto END
483 }
484
485 t, err = ut.T("lt-items", fe.Field(), c)
548486
549487 case reflect.Struct:
550488 if fe.Type() != reflect.TypeOf(time.Time{}) {
552490 goto END
553491 }
554492
555 t, err = ut.T("lte-datetime", fe.Field())
493 t, err = ut.T("lt-datetime", fe.Field())
556494
557495 default:
558496 err = fn()
560498 goto END
561499 }
562500
563 t, err = ut.T("lte-number", fe.Field(), ut.FmtNumber(f64, digits))
501 t, err = ut.T("lt-number", fe.Field(), ut.FmtNumber(f64, digits))
564502 }
565503
566504 END:
573511 },
574512 },
575513 {
576 tag: "gt",
514 tag: "lte",
577515 customRegisFunc: func(ut ut.Translator) (err error) {
578516
579 if err = ut.Add("gt-string", "{0}の長さは{1}よりも多くなければなりません", false); err != nil {
580 return
581 }
582
583 if err = ut.AddCardinal("gt-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
584 return
585 }
586
587 if err = ut.AddCardinal("gt-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
588 return
589 }
590
591 if err = ut.Add("gt-number", "{0}は{1}よりも大きくなければなりません", false); err != nil {
592 return
593 }
594
595 if err = ut.Add("gt-items", "{0}は{1}よりも多い項目を含まなければなりません", false); err != nil {
596 return
597 }
598
599 if err = ut.AddCardinal("gt-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
600 return
601 }
602
603 if err = ut.AddCardinal("gt-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
604 return
605 }
606
607 if err = ut.Add("gt-datetime", "{0}は現時刻よりも後でなければなりません", false); err != nil {
517 if err = ut.Add("lte-string", "{0}の長さは最大でも{1}でなければなりません", false); err != nil {
518 return
519 }
520
521 if err = ut.AddCardinal("lte-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
522 return
523 }
524
525 if err = ut.AddCardinal("lte-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
526 return
527 }
528
529 if err = ut.Add("lte-number", "{0}は{1}かより小さくなければなりません", false); err != nil {
530 return
531 }
532
533 if err = ut.Add("lte-items", "{0}は最大でも{1}を含まなければなりません", false); err != nil {
534 return
535 }
536
537 if err = ut.AddCardinal("lte-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
538 return
539 }
540
541 if err = ut.AddCardinal("lte-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
542 return
543 }
544
545 if err = ut.Add("lte-datetime", "{0}は現時刻以前でなければなりません", false); err != nil {
608546 return
609547 }
610548
644582 goto END
645583 }
646584
647 c, err = ut.C("gt-string-character", f64, digits, ut.FmtNumber(f64, digits))
648 if err != nil {
649 goto END
650 }
651
652 t, err = ut.T("gt-string", fe.Field(), c)
585 c, err = ut.C("lte-string-character", f64, digits, ut.FmtNumber(f64, digits))
586 if err != nil {
587 goto END
588 }
589
590 t, err = ut.T("lte-string", fe.Field(), c)
653591
654592 case reflect.Slice, reflect.Map, reflect.Array:
655593 var c string
659597 goto END
660598 }
661599
662 c, err = ut.C("gt-items-item", f64, digits, ut.FmtNumber(f64, digits))
663 if err != nil {
664 goto END
665 }
666
667 t, err = ut.T("gt-items", fe.Field(), c)
600 c, err = ut.C("lte-items-item", f64, digits, ut.FmtNumber(f64, digits))
601 if err != nil {
602 goto END
603 }
604
605 t, err = ut.T("lte-items", fe.Field(), c)
668606
669607 case reflect.Struct:
670608 if fe.Type() != reflect.TypeOf(time.Time{}) {
672610 goto END
673611 }
674612
675 t, err = ut.T("gt-datetime", fe.Field())
613 t, err = ut.T("lte-datetime", fe.Field())
676614
677615 default:
678616 err = fn()
680618 goto END
681619 }
682620
683 t, err = ut.T("gt-number", fe.Field(), ut.FmtNumber(f64, digits))
621 t, err = ut.T("lte-number", fe.Field(), ut.FmtNumber(f64, digits))
684622 }
685623
686624 END:
693631 },
694632 },
695633 {
696 tag: "gte",
634 tag: "gt",
697635 customRegisFunc: func(ut ut.Translator) (err error) {
698636
699 if err = ut.Add("gte-string", "{0}の長さは少なくとも{1}以上はなければなりません", false); err != nil {
700 return
701 }
702
703 if err = ut.AddCardinal("gte-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
704 return
705 }
706
707 if err = ut.AddCardinal("gte-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
708 return
709 }
710
711 if err = ut.Add("gte-number", "{0}は{1}かより大きくなければなりません", false); err != nil {
712 return
713 }
714
715 if err = ut.Add("gte-items", "{0}は少なくとも{1}を含まなければなりません", false); err != nil {
716 return
717 }
718
719 if err = ut.AddCardinal("gte-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
720 return
721 }
722
723 if err = ut.AddCardinal("gte-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
724 return
725 }
726
727 if err = ut.Add("gte-datetime", "{0}は現時刻以降でなければなりません", false); err != nil {
637 if err = ut.Add("gt-string", "{0}の長さは{1}よりも多くなければなりません", false); err != nil {
638 return
639 }
640
641 if err = ut.AddCardinal("gt-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
642 return
643 }
644
645 if err = ut.AddCardinal("gt-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
646 return
647 }
648
649 if err = ut.Add("gt-number", "{0}は{1}よりも大きくなければなりません", false); err != nil {
650 return
651 }
652
653 if err = ut.Add("gt-items", "{0}は{1}よりも多い項目を含まなければなりません", false); err != nil {
654 return
655 }
656
657 if err = ut.AddCardinal("gt-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
658 return
659 }
660
661 if err = ut.AddCardinal("gt-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
662 return
663 }
664
665 if err = ut.Add("gt-datetime", "{0}は現時刻よりも後でなければなりません", false); err != nil {
728666 return
729667 }
730668
764702 goto END
765703 }
766704
705 c, err = ut.C("gt-string-character", f64, digits, ut.FmtNumber(f64, digits))
706 if err != nil {
707 goto END
708 }
709
710 t, err = ut.T("gt-string", fe.Field(), c)
711
712 case reflect.Slice, reflect.Map, reflect.Array:
713 var c string
714
715 err = fn()
716 if err != nil {
717 goto END
718 }
719
720 c, err = ut.C("gt-items-item", f64, digits, ut.FmtNumber(f64, digits))
721 if err != nil {
722 goto END
723 }
724
725 t, err = ut.T("gt-items", fe.Field(), c)
726
727 case reflect.Struct:
728 if fe.Type() != reflect.TypeOf(time.Time{}) {
729 err = fmt.Errorf("tag '%s' cannot be used on a struct type", fe.Tag())
730 goto END
731 }
732
733 t, err = ut.T("gt-datetime", fe.Field())
734
735 default:
736 err = fn()
737 if err != nil {
738 goto END
739 }
740
741 t, err = ut.T("gt-number", fe.Field(), ut.FmtNumber(f64, digits))
742 }
743
744 END:
745 if err != nil {
746 fmt.Printf("warning: error translating FieldError: %s", err)
747 return fe.(error).Error()
748 }
749
750 return t
751 },
752 },
753 {
754 tag: "gte",
755 customRegisFunc: func(ut ut.Translator) (err error) {
756
757 if err = ut.Add("gte-string", "{0}の長さは少なくとも{1}以上はなければなりません", false); err != nil {
758 return
759 }
760
761 if err = ut.AddCardinal("gte-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
762 return
763 }
764
765 if err = ut.AddCardinal("gte-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
766 return
767 }
768
769 if err = ut.Add("gte-number", "{0}は{1}かより大きくなければなりません", false); err != nil {
770 return
771 }
772
773 if err = ut.Add("gte-items", "{0}は少なくとも{1}を含まなければなりません", false); err != nil {
774 return
775 }
776
777 if err = ut.AddCardinal("gte-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
778 return
779 }
780
781 if err = ut.AddCardinal("gte-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
782 return
783 }
784
785 if err = ut.Add("gte-datetime", "{0}は現時刻以降でなければなりません", false); err != nil {
786 return
787 }
788
789 return
790 },
791 customTransFunc: func(ut ut.Translator, fe validator.FieldError) string {
792
793 var err error
794 var t string
795 var f64 float64
796 var digits uint64
797 var kind reflect.Kind
798
799 fn := func() (err error) {
800
801 if idx := strings.Index(fe.Param(), "."); idx != -1 {
802 digits = uint64(len(fe.Param()[idx+1:]))
803 }
804
805 f64, err = strconv.ParseFloat(fe.Param(), 64)
806
807 return
808 }
809
810 kind = fe.Kind()
811 if kind == reflect.Ptr {
812 kind = fe.Type().Elem().Kind()
813 }
814
815 switch kind {
816 case reflect.String:
817
818 var c string
819
820 err = fn()
821 if err != nil {
822 goto END
823 }
824
767825 c, err = ut.C("gte-string-character", f64, digits, ut.FmtNumber(f64, digits))
768826 if err != nil {
769827 goto END
513513 ns: "Test.NeNumber",
514514 expected: "NeNumberは0.00と異ならなければなりません",
515515 },
516 // {
517 // ns: "Test.NeMultiple",
518 // expected: "NeMultipleの項目は0と異ならなければなりません",
519 // },
516 {
517 ns: "Test.NeMultiple",
518 expected: "NeMultipleの項目の数は0個と異ならなければなりません",
519 },
520520 {
521521 ns: "Test.EqString",
522522 expected: "EqStringは3と等しくありません",