Browse Source

Revert "initial plural rule generation rewrite."

This reverts commit e2b44a56261bf8daf5060399720b3e6bff307936.
joeybloggs 10 years ago
parent
commit
367e66a6c5
100 changed files with 2101 additions and 2288 deletions
  1. 760 1153
      cmd/resources/generate_resources.go
  2. 0 29
      cmd/resources/translator.tmpl
  3. 0 36
      resources/locales/af/af.go
  4. 4 0
      resources/locales/af/calendar.go
  5. 4 0
      resources/locales/af/currency.go
  6. 18 0
      resources/locales/af/main.go
  7. 8 0
      resources/locales/af/number.go
  8. 3 0
      resources/locales/af/plural.go
  9. 0 36
      resources/locales/af_NA/af_NA.go
  10. 4 0
      resources/locales/af_NA/calendar.go
  11. 5 0
      resources/locales/af_NA/currency.go
  12. 18 0
      resources/locales/af_NA/main.go
  13. 8 0
      resources/locales/af_NA/number.go
  14. 3 0
      resources/locales/af_NA/plural.go
  15. 0 36
      resources/locales/af_ZA/af_ZA.go
  16. 0 26
      resources/locales/agq/agq.go
  17. 4 0
      resources/locales/agq/calendar.go
  18. 4 0
      resources/locales/agq/currency.go
  19. 18 0
      resources/locales/agq/main.go
  20. 8 0
      resources/locales/agq/number.go
  21. 3 0
      resources/locales/agq/plural.go
  22. 0 26
      resources/locales/agq_CM/agq_CM.go
  23. 0 36
      resources/locales/ak/ak.go
  24. 5 0
      resources/locales/ak/calendar.go
  25. 4 0
      resources/locales/ak/currency.go
  26. 18 0
      resources/locales/ak/main.go
  27. 8 0
      resources/locales/ak/number.go
  28. 3 0
      resources/locales/ak/plural.go
  29. 0 36
      resources/locales/ak_GH/ak_GH.go
  30. 813 0
      resources/locales/all.go
  31. 0 41
      resources/locales/am/am.go
  32. 4 0
      resources/locales/am/calendar.go
  33. 4 0
      resources/locales/am/currency.go
  34. 18 0
      resources/locales/am/main.go
  35. 8 0
      resources/locales/am/number.go
  36. 3 0
      resources/locales/am/plural.go
  37. 0 41
      resources/locales/am_ET/am_ET.go
  38. 0 44
      resources/locales/ar/ar.go
  39. 4 0
      resources/locales/ar/calendar.go
  40. 4 0
      resources/locales/ar/currency.go
  41. 18 0
      resources/locales/ar/main.go
  42. 8 0
      resources/locales/ar/number.go
  43. 3 0
      resources/locales/ar/plural.go
  44. 0 44
      resources/locales/ar_001/ar_001.go
  45. 0 44
      resources/locales/ar_AE/ar_AE.go
  46. 4 0
      resources/locales/ar_AE/calendar.go
  47. 5 0
      resources/locales/ar_AE/currency.go
  48. 18 0
      resources/locales/ar_AE/main.go
  49. 8 0
      resources/locales/ar_AE/number.go
  50. 3 0
      resources/locales/ar_AE/plural.go
  51. 0 44
      resources/locales/ar_BH/ar_BH.go
  52. 0 44
      resources/locales/ar_DJ/ar_DJ.go
  53. 4 0
      resources/locales/ar_DJ/calendar.go
  54. 5 0
      resources/locales/ar_DJ/currency.go
  55. 18 0
      resources/locales/ar_DJ/main.go
  56. 8 0
      resources/locales/ar_DJ/number.go
  57. 3 0
      resources/locales/ar_DJ/plural.go
  58. 0 44
      resources/locales/ar_DZ/ar_DZ.go
  59. 4 0
      resources/locales/ar_DZ/calendar.go
  60. 5 0
      resources/locales/ar_DZ/currency.go
  61. 18 0
      resources/locales/ar_DZ/main.go
  62. 8 0
      resources/locales/ar_DZ/number.go
  63. 3 0
      resources/locales/ar_DZ/plural.go
  64. 0 44
      resources/locales/ar_EG/ar_EG.go
  65. 0 44
      resources/locales/ar_EH/ar_EH.go
  66. 4 0
      resources/locales/ar_EH/calendar.go
  67. 5 0
      resources/locales/ar_EH/currency.go
  68. 18 0
      resources/locales/ar_EH/main.go
  69. 8 0
      resources/locales/ar_EH/number.go
  70. 3 0
      resources/locales/ar_EH/plural.go
  71. 0 44
      resources/locales/ar_ER/ar_ER.go
  72. 4 0
      resources/locales/ar_ER/calendar.go
  73. 5 0
      resources/locales/ar_ER/currency.go
  74. 18 0
      resources/locales/ar_ER/main.go
  75. 8 0
      resources/locales/ar_ER/number.go
  76. 3 0
      resources/locales/ar_ER/plural.go
  77. 0 44
      resources/locales/ar_IL/ar_IL.go
  78. 0 44
      resources/locales/ar_IQ/ar_IQ.go
  79. 0 44
      resources/locales/ar_JO/ar_JO.go
  80. 0 44
      resources/locales/ar_KM/ar_KM.go
  81. 0 44
      resources/locales/ar_KW/ar_KW.go
  82. 0 44
      resources/locales/ar_LB/ar_LB.go
  83. 4 0
      resources/locales/ar_LB/calendar.go
  84. 5 0
      resources/locales/ar_LB/currency.go
  85. 18 0
      resources/locales/ar_LB/main.go
  86. 8 0
      resources/locales/ar_LB/number.go
  87. 3 0
      resources/locales/ar_LB/plural.go
  88. 0 44
      resources/locales/ar_LY/ar_LY.go
  89. 4 0
      resources/locales/ar_LY/calendar.go
  90. 5 0
      resources/locales/ar_LY/currency.go
  91. 18 0
      resources/locales/ar_LY/main.go
  92. 8 0
      resources/locales/ar_LY/number.go
  93. 3 0
      resources/locales/ar_LY/plural.go
  94. 0 44
      resources/locales/ar_MA/ar_MA.go
  95. 4 0
      resources/locales/ar_MA/calendar.go
  96. 5 0
      resources/locales/ar_MA/currency.go
  97. 18 0
      resources/locales/ar_MA/main.go
  98. 8 0
      resources/locales/ar_MA/number.go
  99. 3 0
      resources/locales/ar_MA/plural.go
  100. 0 44
      resources/locales/ar_MR/ar_MR.go

+ 760 - 1153
cmd/resources/generate_resources.go

@@ -1,15 +1,22 @@
 package main
 
 import (
+	"bytes"
 	"fmt"
-	"log"
+	"go/format"
+	"io/ioutil"
 	"os"
-	"os/exec"
+	"path/filepath"
 	"strings"
+	"sync"
+	"text/template"
+	"time"
+
+	"gopkg.in/yaml.v2"
 
 	"golang.org/x/text/unicode/cldr"
 
-	"text/template"
+	i18n "github.com/go-playground/universal-translator"
 )
 
 // numbers:
@@ -29,1304 +36,904 @@ import (
 //     USD:
 //       symbol: $
 
-// type pluralInfo struct {
-// 	path   string
-// 	locale string
-// 	plural string
-// }
+type pluralInfo struct {
+	path   string
+	locale string
+	plural string
+}
 
-// type translator struct {
-// 	locale string
+func main() {
 
-// }
-//
+	//plurals
+	rules := "data/rules"
+	plurals := map[string]*pluralInfo{}
+	basePlurals := map[string]string{}
 
-const (
-	locDir      = "../../resources/locales/%s"
-	locFilename = locDir + "/%s.go"
-)
+	err := filepath.Walk(rules, func(path string, info os.FileInfo, err error) error {
 
-var (
-	prVarFuncs = map[string]string{
-		"n": `n, err := locales.N(num)
 		if err != nil {
-			return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue:num, InnerError: err}
+			panic(err)
 		}
 
-		`,
-		"i": `i, err := locales.I(num)
-		if err != nil {
-			return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue:num, InnerError: err}
+		if info.IsDir() {
+			return nil
 		}
 
-		`,
-		"v": "v := locales.V(num)\n\n",
-		"w": `w, err := locales.W(num)
+		in, err := ioutil.ReadFile(path)
 		if err != nil {
-			return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue:num, InnerError: err}
+			panic(err)
 		}
 
-		`,
-		"f": `f, err := locales.F(num)
-		if err != nil {
-			return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue:num, InnerError: err}
+		var out yaml.MapSlice
+		if err = yaml.Unmarshal(in, &out); err != nil {
+			panic(err)
 		}
 
-		`,
-		"t": `t, err := locales.T(num)
-		if err != nil {
-			return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue:num, InnerError: err}
+		var plural string
+		for _, item := range out {
+			if item.Key == "plural" {
+				plural = item.Value.(string)
+			}
 		}
 
-		`,
-	}
-)
+		locale := strings.Replace(info.Name(), filepath.Ext(info.Name()), "", 1)
+		locale = strings.ToLower(strings.Replace(locale, "-", "_", -1))
 
-type translator struct {
-	Locale       string
-	CardinalFunc string
-}
+		plurals[locale] = &pluralInfo{
+			path:   path,
+			locale: locale,
+			plural: plural,
+		}
 
-var tmpl *template.Template
+		if plural == "" {
+			return nil
+		}
 
-func main() {
+		basePlurals[locale] = plural
 
-	var err error
+		return nil
+	})
 
-	// load template
-	tmpl, err = template.ParseGlob("*.tmpl")
 	if err != nil {
-		log.Fatal(err)
+		panic(err)
 	}
 
-	// load CLDR recourses
+	for _, p := range plurals {
+
+		if p.plural == "" {
+
+			var ok bool
+
+			fmt.Print("can't find plurals in ", p.path, " attempting to locate base language plural rules...")
+
+			base := strings.SplitN(p.locale, "_", 2)
+
+			p.plural, ok = basePlurals[base[0]]
+			if !ok {
+				fmt.Println("Not Found")
+				continue
+			}
+
+			fmt.Println("Found")
+		}
+	}
+
+	// cldr
+
 	var decoder cldr.Decoder
 	cldr, err := decoder.DecodePath("data/core")
 	if err != nil {
 		panic(err)
 	}
 
-	// cardinalPlurals := map[string]
+	locs := map[string]string{}
+	numbers := map[string]i18n.Number{}
+	calendars := map[string]i18n.Calendar{}
+	locales := cldr.Locales()
+	for _, loc := range locales {
+
+		ldml := cldr.RawLDML(loc)
+		if ldml.Numbers == nil {
+			continue
+		}
+		var number i18n.Number
+
+		number.Currencies = make(i18n.CurrencyFormatValue)
 
-	// for _, p := range ldr.Supplemental().Plurals {
+		if len(ldml.Numbers.Symbols) > 0 {
+			symbol := ldml.Numbers.Symbols[0]
+			if len(symbol.Decimal) > 0 {
+				number.Symbols.Decimal = symbol.Decimal[0].Data()
+			}
+			if len(symbol.Group) > 0 {
+				number.Symbols.Group = symbol.Group[0].Data()
+			}
+			if len(symbol.MinusSign) > 0 {
+				number.Symbols.Negative = symbol.MinusSign[0].Data()
+			}
+			if len(symbol.PercentSign) > 0 {
+				number.Symbols.Percent = symbol.PercentSign[0].Data()
+			}
+			if len(symbol.PerMille) > 0 {
+				number.Symbols.PerMille = symbol.PerMille[0].Data()
+			}
+		}
+		if len(ldml.Numbers.DecimalFormats) > 0 && len(ldml.Numbers.DecimalFormats[0].DecimalFormatLength) > 0 {
+			number.Formats.Decimal = ldml.Numbers.DecimalFormats[0].DecimalFormatLength[0].DecimalFormat[0].Pattern[0].Data()
+		}
 
-	// 	for _, pr := range p.PluralRules {
+		if len(ldml.Numbers.CurrencyFormats) > 0 && len(ldml.Numbers.CurrencyFormats[0].CurrencyFormatLength) > 0 {
 
-	// 		fmt.Println(pr.Locales)
+			number.Formats.Currency = ldml.Numbers.CurrencyFormats[0].CurrencyFormatLength[0].CurrencyFormat[0].Pattern[0].Data()
+			number.Formats.CurrencyAccounting = number.Formats.Currency
 
-	// 		for _, rule := range pr.PluralRule {
-	// 			fmt.Println(rule.Count, rule.Common.Data())
-	// 		}
-	// 	}
-	// }
+			if len(ldml.Numbers.CurrencyFormats[0].CurrencyFormatLength[0].CurrencyFormat) > 1 {
+				number.Formats.CurrencyAccounting = ldml.Numbers.CurrencyFormats[0].CurrencyFormatLength[0].CurrencyFormat[1].Pattern[0].Data()
+			}
+		}
+		if len(ldml.Numbers.PercentFormats) > 0 && len(ldml.Numbers.PercentFormats[0].PercentFormatLength) > 0 {
+			number.Formats.Percent = ldml.Numbers.PercentFormats[0].PercentFormatLength[0].PercentFormat[0].Pattern[0].Data()
+		}
+		if ldml.Numbers.Currencies != nil {
 
-	for _, l := range cldr.Locales() {
+			for _, currency := range ldml.Numbers.Currencies.Currency {
 
-		// // work on uk for the moment
-		// if l != "uk" && l != "fil" && l != "gd" {
-		// if l != "gd" {
-		// 	continue
-		// }
-		fmt.Println(l)
+				var c i18n.Currency
+
+				c.Currency = currency.Type
+
+				if len(currency.DisplayName) > 0 {
+					c.DisplayName = currency.DisplayName[0].Data()
+				}
 
-		baseLocale := strings.SplitN(l, "_", 2)[0]
+				if len(currency.Symbol) > 0 {
+					c.Symbol = currency.Symbol[0].Data()
+				}
 
-		trans := &translator{
-			Locale:       l,
-			CardinalFunc: parseCardinalPluralRuleFunc(cldr, baseLocale),
+				number.Currencies[c.Currency] = c
+			}
 		}
+		numbers[loc] = number
+		locs[loc] = strings.ToLower(strings.Replace(loc, "_", "", -1))
 
-		// cardinalRules := getLocaleCardinalPluralRules(cldr, baseLocale)
-		// fmt.Println("CardinalRules:", l, cardinalRules)
-		// Start Plural Rules
+		if ldml.Dates != nil && ldml.Dates.Calendars != nil {
 
-		// for _, p := range cldr.Supplemental().Plurals {
+			var calendar i18n.Calendar
+			ldmlCar := ldml.Dates.Calendars.Calendar[0]
 
-		// 	for _, pr := range p.PluralRules {
+			for _, cal := range ldml.Dates.Calendars.Calendar {
+				if cal.Type == "gregorian" {
+					ldmlCar = cal
+				}
+			}
 
-		// 		locales := strings.Split(pr.Locales, " ")
+			if ldmlCar.DateFormats != nil {
+				for _, datefmt := range ldmlCar.DateFormats.DateFormatLength {
+					switch datefmt.Type {
+					case "full":
+						calendar.Formats.DateEra.BC.Full = datefmt.DateFormat[0].Pattern[0].Data()
+						calendar.Formats.DateEra.AD.Full = calendar.Formats.DateEra.BC.Full
+
+					case "long":
+						calendar.Formats.DateEra.BC.Long = datefmt.DateFormat[0].Pattern[0].Data()
+						calendar.Formats.DateEra.AD.Long = calendar.Formats.DateEra.BC.Long
+
+						// Overrides TODO: Split Each Section into separate function, getting to big to maintain
+
+					case "medium":
+						calendar.Formats.DateEra.BC.Medium = datefmt.DateFormat[0].Pattern[0].Data()
+						calendar.Formats.DateEra.AD.Medium = calendar.Formats.DateEra.BC.Medium
+					case "short":
+						calendar.Formats.DateEra.BC.Short = datefmt.DateFormat[0].Pattern[0].Data()
+						calendar.Formats.DateEra.AD.Short = calendar.Formats.DateEra.BC.Short
+					}
+				}
 
-		// 		for _, loc := range locales {
+				// Overrides TODO: Split Each Section into separate function, getting to big to maintain
+				switch loc {
+				case "th":
+					calendar.Formats.DateEra.BC.Full = "EEEEที่ d MMMM y GGGG"
+					calendar.Formats.DateEra.AD.Full = "EEEEที่ d MMMM GGGG y"
+					calendar.Formats.DateEra.BC.Long = "d MMMM y GG"
+					calendar.Formats.DateEra.AD.Long = "d MMMM GG y"
+				case "en":
+					calendar.Formats.DateEra.BC.Full = "EEEE, MMMM d, y GGGG"
+					calendar.Formats.DateEra.BC.Long = "MMMM d, y GG"
+					// calendar.Formats.DateEra.BC.Medium = "MMM d, y GG"
+					// calendar.Formats.DateEra.BC.Short = "M/d/yy G"
+				}
+			}
 
-		// 			if loc == baseLocale {
+			if ldmlCar.TimeFormats != nil {
+				for _, datefmt := range ldmlCar.TimeFormats.TimeFormatLength {
+					switch datefmt.Type {
+					case "full":
+						calendar.Formats.Time.Full = datefmt.TimeFormat[0].Pattern[0].Data()
+					case "long":
+						calendar.Formats.Time.Long = datefmt.TimeFormat[0].Pattern[0].Data()
+					case "medium":
+						calendar.Formats.Time.Medium = datefmt.TimeFormat[0].Pattern[0].Data()
+					case "short":
+						calendar.Formats.Time.Short = datefmt.TimeFormat[0].Pattern[0].Data()
+					}
+				}
+			}
+			if ldmlCar.DateTimeFormats != nil {
+				for _, datefmt := range ldmlCar.DateTimeFormats.DateTimeFormatLength {
+					switch datefmt.Type {
+					case "full":
+						calendar.Formats.DateTime.Full = datefmt.DateTimeFormat[0].Pattern[0].Data()
+					case "long":
+						calendar.Formats.DateTime.Long = datefmt.DateTimeFormat[0].Pattern[0].Data()
+					case "medium":
+						calendar.Formats.DateTime.Medium = datefmt.DateTimeFormat[0].Pattern[0].Data()
+					case "short":
+						calendar.Formats.DateTime.Short = datefmt.DateTimeFormat[0].Pattern[0].Data()
+					}
+				}
+			}
+			if ldmlCar.Months != nil {
+
+				for _, monthctx := range ldmlCar.Months.MonthContext {
+
+					for _, months := range monthctx.MonthWidth {
+
+						i18nMonth := make(i18n.CalendarMonthFormatNameValue)
+
+						for _, m := range months.Month {
+							switch m.Type {
+							case "1":
+								i18nMonth[time.January] = m.Data()
+							case "2":
+								i18nMonth[time.February] = m.Data()
+							case "3":
+								i18nMonth[time.March] = m.Data()
+							case "4":
+								i18nMonth[time.April] = m.Data()
+							case "5":
+								i18nMonth[time.May] = m.Data()
+							case "6":
+								i18nMonth[time.June] = m.Data()
+							case "7":
+								i18nMonth[time.July] = m.Data()
+							case "8":
+								i18nMonth[time.August] = m.Data()
+							case "9":
+								i18nMonth[time.September] = m.Data()
+							case "10":
+								i18nMonth[time.October] = m.Data()
+							case "11":
+								i18nMonth[time.November] = m.Data()
+							case "12":
+								i18nMonth[time.December] = m.Data()
+							}
+						}
+						switch months.Type {
+						case "abbreviated":
+							calendar.FormatNames.Months.Abbreviated = i18nMonth
+						case "narrow":
+							calendar.FormatNames.Months.Narrow = i18nMonth
+						case "short":
+							calendar.FormatNames.Months.Short = i18nMonth
+						case "wide":
+							calendar.FormatNames.Months.Wide = i18nMonth
+						}
+					}
+				}
+			}
+			if ldmlCar.Days != nil {
+				for _, dayctx := range ldmlCar.Days.DayContext {
+
+					for _, days := range dayctx.DayWidth {
+
+						i18nDay := make(i18n.CalendarDayFormatNameValue)
+
+						for _, d := range days.Day {
+
+							switch d.Type {
+							case "sun":
+								i18nDay[time.Sunday] = d.Data()
+							case "mon":
+								i18nDay[time.Monday] = d.Data()
+							case "tue":
+								i18nDay[time.Tuesday] = d.Data()
+							case "wed":
+								i18nDay[time.Wednesday] = d.Data()
+							case "thu":
+								i18nDay[time.Thursday] = d.Data()
+							case "fri":
+								i18nDay[time.Friday] = d.Data()
+							case "sat":
+								i18nDay[time.Saturday] = d.Data()
+							}
+						}
+
+						switch days.Type {
+						case "abbreviated":
+							calendar.FormatNames.Days.Abbreviated = i18nDay
+						case "narrow":
+							calendar.FormatNames.Days.Narrow = i18nDay
+						case "short":
+							calendar.FormatNames.Days.Short = i18nDay
+						case "wide":
+							calendar.FormatNames.Days.Wide = i18nDay
+						}
+					}
+				}
+			}
+
+			if ldmlCar.DayPeriods != nil {
+
+				for _, ctx := range ldmlCar.DayPeriods.DayPeriodContext {
+
+					for _, width := range ctx.DayPeriodWidth {
 
-		// 				// plural rule found
-		// 				fmt.Println("Locale Plural Rules Found:", loc, baseLocale, l)
-		// 			}
-		// 		}
-		// 		// fmt.Println(pr.Locales)
+						// var i18nPeriod i18n.CalendarPeriodFormatNameValue
+						i18nPeriod := make(i18n.CalendarPeriodFormatNameValue)
 
-		// 		// for _, rule := range pr.PluralRule {
-		// 		// 	fmt.Println(rule.Count, rule.Common.Data())
-		// 		// }
-		// 	}
-		// }
+						for _, d := range width.DayPeriod {
 
-		// End Plural Rules
+							if _, ok := i18nPeriod[d.Type]; !ok {
+								i18nPeriod[d.Type] = d.Data()
+							}
+						}
+
+						switch width.Type {
+						case "abbreviated":
+							calendar.FormatNames.Periods.Abbreviated = i18nPeriod
+						case "narrow":
+							calendar.FormatNames.Periods.Narrow = i18nPeriod
+						case "short":
+							calendar.FormatNames.Periods.Short = i18nPeriod
+						case "wide":
+							calendar.FormatNames.Periods.Wide = i18nPeriod
+						}
+					}
+				}
+				// var empty i18n.CalendarPeriodFormatNameValue
+				// if calendar.FormatNames.Periods.Abbreviated == empty {
+				// 	calendar.FormatNames.Periods.Abbreviated = calendar.FormatNames.Periods.Wide
+				// }
+			}
+
+			if ldmlCar.Eras != nil {
+
+				var eras i18n.Eras
+
+				if ldmlCar.Eras.EraNames != nil && len(ldmlCar.Eras.EraNames.Era) > 0 {
+					eras.BC.Full = ldmlCar.Eras.EraNames.Era[0].Data()
+				}
+
+				if ldmlCar.Eras.EraAbbr != nil && len(ldmlCar.Eras.EraAbbr.Era) > 0 {
+					eras.BC.Abbrev = ldmlCar.Eras.EraAbbr.Era[0].Data()
+				}
+
+				if ldmlCar.Eras.EraNarrow != nil && len(ldmlCar.Eras.EraNarrow.Era) > 0 {
+					eras.BC.Narrow = ldmlCar.Eras.EraNarrow.Era[0].Data()
+				}
 
-		if err = os.MkdirAll(fmt.Sprintf(locDir, l), 0777); err != nil {
-			log.Fatal(err)
+				if ldmlCar.Eras.EraNames != nil && len(ldmlCar.Eras.EraNames.Era) > 2 {
+					eras.AD.Full = ldmlCar.Eras.EraNames.Era[2].Data()
+				}
+
+				if ldmlCar.Eras.EraAbbr != nil && len(ldmlCar.Eras.EraAbbr.Era) > 2 {
+					eras.AD.Abbrev = ldmlCar.Eras.EraAbbr.Era[2].Data()
+				}
+
+				if ldmlCar.Eras.EraNarrow != nil && len(ldmlCar.Eras.EraNarrow.Era) > 2 {
+					eras.AD.Narrow = ldmlCar.Eras.EraNarrow.Era[2].Data()
+				}
+
+				calendar.FormatNames.Eras = eras
+			}
+
+			calendars[loc] = calendar
 		}
+	}
 
-		filename := fmt.Sprintf(locFilename, l, l)
+	for locale := range locs {
 
-		output, err := os.Create(filename)
-		if err != nil {
-			log.Fatal(err)
+		if !strings.Contains(locale, "_") {
+			continue
 		}
-		defer output.Close()
 
-		if err := tmpl.ExecuteTemplate(output, "translator", trans); err != nil {
-			log.Fatal(err)
+		calendar := calendars[locale]
+
+		bString := strings.SplitN(locale, "_", 2)
+		base := bString[0]
+
+		baseCal := calendars[base]
+
+		// copy base calendar objects
+
+		// Dates
+		if calendar.Formats.DateEra.AD.Full == "" {
+			calendar.Formats.DateEra.BC.Full = baseCal.Formats.DateEra.BC.Full
+			calendar.Formats.DateEra.AD.Full = baseCal.Formats.DateEra.AD.Full
 		}
 
-		output.Close()
+		if calendar.Formats.DateEra.AD.Long == "" {
+			calendar.Formats.DateEra.BC.Long = baseCal.Formats.DateEra.BC.Long
+			calendar.Formats.DateEra.AD.Long = baseCal.Formats.DateEra.AD.Long
+		}
 
-		// after file written run gofmt on file to ensure best formatting
-		cmd := exec.Command("gofmt", "-s", "-w", filename)
-		if err = cmd.Run(); err != nil {
-			log.Panic(err)
+		if calendar.Formats.DateEra.AD.Medium == "" {
+			calendar.Formats.DateEra.BC.Medium = baseCal.Formats.DateEra.BC.Medium
+			calendar.Formats.DateEra.AD.Medium = baseCal.Formats.DateEra.AD.Medium
 		}
-	}
-}
 
-// TODO: cleanup function logic perhaps write a lexer... but it's working right now, and
-// I'm already farther down the rabbit hole than I'd like and so pulling the chute here.
-func parseCardinalPluralRuleFunc(current *cldr.CLDR, baseLocale string) (results string) {
-
-	var prCardinal *struct {
-		cldr.Common
-		Locales    string "xml:\"locales,attr\""
-		PluralRule []*struct {
-			cldr.Common
-			Count string "xml:\"count,attr\""
-		} "xml:\"pluralRule\""
-	}
+		if calendar.Formats.DateEra.AD.Short == "" {
+			calendar.Formats.DateEra.BC.Short = baseCal.Formats.DateEra.BC.Short
+			calendar.Formats.DateEra.AD.Short = baseCal.Formats.DateEra.AD.Short
+		}
+
+		// times
+		if calendar.Formats.Time.Full == "" {
+			calendar.Formats.Time.Full = baseCal.Formats.Time.Full
+		}
 
-	for _, p := range current.Supplemental().Plurals {
+		if calendar.Formats.Time.Long == "" {
+			calendar.Formats.Time.Long = baseCal.Formats.Time.Long
+		}
 
-		for _, pr := range p.PluralRules {
+		if calendar.Formats.Time.Medium == "" {
+			calendar.Formats.Time.Medium = baseCal.Formats.Time.Medium
+		}
 
-			locs := strings.Split(pr.Locales, " ")
+		if calendar.Formats.Time.Short == "" {
+			calendar.Formats.Time.Short = baseCal.Formats.Time.Short
+		}
 
-			for _, loc := range locs {
+		// date & times
+		if calendar.Formats.DateTime.Full == "" {
+			calendar.Formats.DateTime.Full = baseCal.Formats.DateTime.Full
+		}
 
-				if loc == baseLocale {
-					prCardinal = pr
-				}
+		if calendar.Formats.DateTime.Long == "" {
+			calendar.Formats.DateTime.Long = baseCal.Formats.DateTime.Long
+		}
+
+		if calendar.Formats.DateTime.Medium == "" {
+			calendar.Formats.DateTime.Medium = baseCal.Formats.DateTime.Medium
+		}
+
+		if calendar.Formats.DateTime.Short == "" {
+			calendar.Formats.DateTime.Short = baseCal.Formats.DateTime.Short
+		}
+
+		// months
+
+		if calendar.FormatNames.Months.Abbreviated == nil {
+			calendar.FormatNames.Months.Abbreviated = make(i18n.CalendarMonthFormatNameValue)
+		}
+
+		if calendar.FormatNames.Months.Narrow == nil {
+			calendar.FormatNames.Months.Narrow = make(i18n.CalendarMonthFormatNameValue)
+		}
+
+		if calendar.FormatNames.Months.Short == nil {
+			calendar.FormatNames.Months.Short = make(i18n.CalendarMonthFormatNameValue)
+		}
+
+		if calendar.FormatNames.Months.Wide == nil {
+			calendar.FormatNames.Months.Wide = make(i18n.CalendarMonthFormatNameValue)
+		}
+
+		for k, v := range baseCal.FormatNames.Months.Abbreviated {
+
+			val, ok := calendar.FormatNames.Months.Abbreviated[k]
+			if !ok {
+				calendar.FormatNames.Months.Abbreviated[k] = v
+				continue
+			}
+
+			if val == "" {
+				calendar.FormatNames.Months.Abbreviated[k] = v
 			}
 		}
-	}
 
-	// no plural rules for locale
-	if prCardinal == nil {
-		return
-	}
+		for k, v := range baseCal.FormatNames.Months.Narrow {
 
-	vals := make(map[string]struct{})
-	first := true
+			val, ok := calendar.FormatNames.Months.Narrow[k]
+			if !ok {
+				calendar.FormatNames.Months.Narrow[k] = v
+				continue
+			}
 
-	// pre parse for variables
-	for _, rule := range prCardinal.PluralRule {
+			if val == "" {
+				calendar.FormatNames.Months.Narrow[k] = v
+			}
+		}
 
-		data := strings.Replace(strings.Replace(strings.Replace(strings.TrimSpace(strings.SplitN(rule.Common.Data(), "@", 2)[0]), " = ", " == ", -1), " or ", " || ", -1), " and ", " && ", -1)
+		for k, v := range baseCal.FormatNames.Months.Short {
 
-		if len(data) == 0 {
-			if len(prCardinal.PluralRule) == 1 {
+			val, ok := calendar.FormatNames.Months.Short[k]
+			if !ok {
+				calendar.FormatNames.Months.Short[k] = v
+				continue
+			}
 
-				results = "return locales." + pluralStringToString(rule.Count) + ", nil"
+			if val == "" {
+				calendar.FormatNames.Months.Short[k] = v
+			}
+		}
 
-			} else {
+		for k, v := range baseCal.FormatNames.Months.Wide {
 
-				results += "\n\nreturn locales." + pluralStringToString(rule.Count) + ", nil"
-				// results += "else {\nreturn locales." + locales.PluralStringToString(rule.Count) + ", nil\n}"
+			val, ok := calendar.FormatNames.Months.Wide[k]
+			if !ok {
+				calendar.FormatNames.Months.Wide[k] = v
+				continue
 			}
 
-			continue
+			if val == "" {
+				calendar.FormatNames.Months.Wide[k] = v
+			}
 		}
 
-		if strings.Contains(data, "n") {
-			vals[prVarFuncs["n"]] = struct{}{}
+		// days
+
+		if calendar.FormatNames.Days.Abbreviated == nil {
+			calendar.FormatNames.Days.Abbreviated = make(i18n.CalendarDayFormatNameValue)
 		}
 
-		if strings.Contains(data, "i") {
-			vals[prVarFuncs["i"]] = struct{}{}
+		if calendar.FormatNames.Days.Narrow == nil {
+			calendar.FormatNames.Days.Narrow = make(i18n.CalendarDayFormatNameValue)
 		}
 
-		if strings.Contains(data, "v") {
-			vals[prVarFuncs["v"]] = struct{}{}
+		if calendar.FormatNames.Days.Short == nil {
+			calendar.FormatNames.Days.Short = make(i18n.CalendarDayFormatNameValue)
 		}
 
-		if strings.Contains(data, "w") {
-			vals[prVarFuncs["w"]] = struct{}{}
+		if calendar.FormatNames.Days.Wide == nil {
+			calendar.FormatNames.Days.Wide = make(i18n.CalendarDayFormatNameValue)
 		}
 
-		if strings.Contains(data, "f") {
-			vals[prVarFuncs["f"]] = struct{}{}
+		for k, v := range baseCal.FormatNames.Days.Abbreviated {
+
+			val, ok := calendar.FormatNames.Days.Abbreviated[k]
+			if !ok {
+				calendar.FormatNames.Days.Abbreviated[k] = v
+				continue
+			}
+
+			if val == "" {
+				calendar.FormatNames.Days.Abbreviated[k] = v
+			}
 		}
 
-		if strings.Contains(data, "t") {
-			vals[prVarFuncs["t"]] = struct{}{}
+		for k, v := range baseCal.FormatNames.Days.Narrow {
+
+			val, ok := calendar.FormatNames.Days.Narrow[k]
+			if !ok {
+				calendar.FormatNames.Days.Narrow[k] = v
+				continue
+			}
+
+			if val == "" {
+				calendar.FormatNames.Days.Narrow[k] = v
+			}
 		}
 
-		// fmt.Println(rule.Count, data)
+		for k, v := range baseCal.FormatNames.Days.Short {
+
+			val, ok := calendar.FormatNames.Days.Short[k]
+			if !ok {
+				calendar.FormatNames.Days.Short[k] = v
+				continue
+			}
 
-		if first {
-			results += "if "
-			first = false
-		} else {
-			results += "else if "
+			if val == "" {
+				calendar.FormatNames.Days.Short[k] = v
+			}
 		}
 
-		stmt := ""
+		for k, v := range baseCal.FormatNames.Days.Wide {
 
-		// real work here
-		//
-		// split by 'or' then by 'and' allowing to better
-		// determine bracketing for formula
+			val, ok := calendar.FormatNames.Days.Wide[k]
+			if !ok {
+				calendar.FormatNames.Days.Wide[k] = v
+				continue
+			}
 
-		ors := strings.Split(data, "||")
+			if val == "" {
+				calendar.FormatNames.Days.Wide[k] = v
+			}
+		}
 
-		for _, or := range ors {
+		// periods
+		if calendar.FormatNames.Periods.Abbreviated == nil {
+			calendar.FormatNames.Periods.Abbreviated = make(i18n.CalendarPeriodFormatNameValue)
+		}
 
-			stmt += "("
+		if calendar.FormatNames.Periods.Narrow == nil {
+			calendar.FormatNames.Periods.Narrow = make(i18n.CalendarPeriodFormatNameValue)
+		}
 
-			ands := strings.Split(strings.TrimSpace(or), "&&")
+		if calendar.FormatNames.Periods.Short == nil {
+			calendar.FormatNames.Periods.Short = make(i18n.CalendarPeriodFormatNameValue)
+		}
 
-			for _, and := range ands {
+		if calendar.FormatNames.Periods.Wide == nil {
+			calendar.FormatNames.Periods.Wide = make(i18n.CalendarPeriodFormatNameValue)
+		}
 
-				inArg := false
-				pre := ""
-				lft := ""
-				preOperator := ""
-				args := strings.Split(strings.TrimSpace(and), " ")
+		for k, v := range baseCal.FormatNames.Periods.Abbreviated {
 
-				for _, a := range args {
+			val, ok := calendar.FormatNames.Periods.Abbreviated[k]
+			if !ok {
+				calendar.FormatNames.Periods.Abbreviated[k] = v
+				continue
+			}
 
-					if inArg {
-						// check to see if is a value range 2..9
+			if val == "" {
+				calendar.FormatNames.Periods.Abbreviated[k] = v
+			}
+		}
 
-						multiRange := strings.Count(a, "..") > 1
-						cargs := strings.Split(strings.TrimSpace(a), ",")
-						hasBracket := len(cargs) > 1
-						bracketAdded := false
-						lastWasRange := false
+		for k, v := range baseCal.FormatNames.Periods.Narrow {
 
-						for _, carg := range cargs {
+			val, ok := calendar.FormatNames.Periods.Narrow[k]
+			if !ok {
+				calendar.FormatNames.Periods.Narrow[k] = v
+				continue
+			}
+
+			if val == "" {
+				calendar.FormatNames.Periods.Narrow[k] = v
+			}
+		}
 
-							if rng := strings.Split(carg, ".."); len(rng) > 1 {
+		for k, v := range baseCal.FormatNames.Periods.Short {
 
-								if multiRange {
-									pre += " ("
-								} else {
-									pre += " "
-								}
+			val, ok := calendar.FormatNames.Periods.Short[k]
+			if !ok {
+				calendar.FormatNames.Periods.Short[k] = v
+				continue
+			}
 
-								switch preOperator {
-								case "==":
-									pre += lft + " >= " + rng[0] + " && " + lft + "<=" + rng[1]
-								case "!=":
-									pre += lft + " < " + rng[0] + " && " + lft + " > " + rng[1]
-								}
+			if val == "" {
+				calendar.FormatNames.Periods.Short[k] = v
+			}
+		}
 
-								if multiRange {
-									pre += ") || "
-								} else {
-									pre += " || "
-								}
+		for k, v := range baseCal.FormatNames.Periods.Wide {
 
-								lastWasRange = true
-								continue
-							}
+			val, ok := calendar.FormatNames.Periods.Wide[k]
+			if !ok {
+				calendar.FormatNames.Periods.Wide[k] = v
+				continue
+			}
 
-							if lastWasRange {
-								pre = strings.TrimRight(pre, " || ") + " && "
-							}
+			if val == "" {
+				calendar.FormatNames.Periods.Wide[k] = v
+			}
+		}
 
-							lastWasRange = false
+		calendars[locale] = calendar
 
-							if hasBracket && !bracketAdded {
-								pre += "("
-								bracketAdded = true
-							}
+		number := numbers[locale]
+		baseNum := numbers[base]
 
-							// single comma separated values
-							switch preOperator {
-							case "==":
-								pre += " " + lft + preOperator + carg + " || "
-							case "!=":
-								pre += " " + lft + preOperator + carg + " && "
-							}
+		// symbols
+		if number.Symbols.Decimal == "" {
+			number.Symbols.Decimal = baseNum.Symbols.Decimal
+		}
 
-						}
+		if number.Symbols.Group == "" {
+			number.Symbols.Group = baseNum.Symbols.Group
+		}
 
-						pre = strings.TrimRight(pre, " || ")
-						pre = strings.TrimRight(pre, " && ")
-						pre = strings.TrimRight(pre, " || ")
+		if number.Symbols.Negative == "" {
+			number.Symbols.Negative = baseNum.Symbols.Negative
+		}
 
-						if hasBracket && bracketAdded {
-							pre += ")"
-						}
+		if number.Symbols.Percent == "" {
+			number.Symbols.Percent = baseNum.Symbols.Percent
+		}
 
-						continue
-					}
+		if number.Symbols.PerMille == "" {
+			number.Symbols.PerMille = baseNum.Symbols.PerMille
+		}
 
-					if strings.Contains(a, "=") || a == ">" || a == "<" {
-						inArg = true
-						preOperator = a
-						continue
-					}
+		// formats
+		if number.Formats.Decimal == "" {
+			number.Formats.Decimal = baseNum.Formats.Decimal
+		}
 
-					lft += a
-				}
+		if number.Formats.Currency == "" {
+			number.Formats.Currency = baseNum.Formats.Currency
+		}
 
-				stmt += pre + " && "
-			}
+		if number.Formats.CurrencyAccounting == "" {
+			number.Formats.CurrencyAccounting = baseNum.Formats.CurrencyAccounting
+		}
 
-			stmt = strings.TrimRight(stmt, " && ") + ") || "
+		if number.Formats.Percent == "" {
+			number.Formats.Percent = baseNum.Formats.Percent
 		}
 
-		stmt = strings.TrimRight(stmt, " || ")
+		// currency
+		for k, v := range baseNum.Currencies {
 
-		results += stmt
+			val, ok := number.Currencies[k]
+			if !ok {
+				// number.Currencies[k] = v
+				continue
+			}
 
-		results += " {\n"
+			if val.Currency == "" {
+				val.Currency = v.Currency
+			}
 
-		// return plural rule here
-		results += "return locales." + pluralStringToString(rule.Count) + ", nil\n"
+			if val.DisplayName == "" {
+				val.DisplayName = v.DisplayName
+			}
 
-		results += "}"
-	}
+			if val.Symbol == "" {
+				val.Symbol = v.Symbol
+			}
 
-	pre := "\n"
+			number.Currencies[k] = val
+		}
 
-	for k := range vals {
-		pre += k
+		numbers[locale] = number
 	}
 
-	pre += "\n"
+	var wg sync.WaitGroup
+	wg.Add(len(numbers))
+	for locale, number := range numbers {
+		go func(locale string, number i18n.Number) {
 
-	if len(results) == 0 {
-		results = "return locales.PluralRuleUnknown,nil"
-	}
+			localeLowercase := strings.ToLower(locale)
 
-	results = pre + results
+			defer func() { wg.Done() }()
+			path := "../../resources/locales/" + locale
 
-	return
-}
+			if _, err := os.Stat(path); err != nil {
+				if err = os.MkdirAll(path, 0777); err != nil {
+					panic(err)
+				}
+			}
 
-func pluralStringToString(pr string) string {
-
-	pr = strings.TrimSpace(pr)
-
-	switch pr {
-	case "zero":
-		return "PluralRuleZero"
-	case "one":
-		return "PluralRuleOne"
-	case "two":
-		return "PluralRuleTwo"
-	case "few":
-		return "PluralRuleFew"
-	case "many":
-		return "PluralRuleMany"
-	case "other":
-		return "PluralRuleOther"
-	default:
-		return "PluralRuleUnknown"
-	}
-}
+			path += "/"
 
-// //plurals
-// rules := "data/rules"
-// plurals := map[string]*pluralInfo{}
-// basePlurals := map[string]string{}
+			mainFile, err := os.Create(path + "main.go")
+			if err != nil {
+				panic(err)
+			}
+			defer mainFile.Close()
+
+			calendar := calendars[locale]
+
+			mainCodes, err := format.Source([]byte(fmt.Sprintf(`package %s
+			import "github.com/go-playground/universal-translator"
+
+			var locale = &ut.Locale{
+				Locale: %q,
+				Number: ut.Number{
+					Symbols: symbols,
+					Formats: formats,
+					Currencies: currencies,
+				},
+				Calendar: calendar,
+				PluralRule:   pluralRule,
+			}
 
-// err := filepath.Walk(rules, func(path string, info os.FileInfo, err error) error {
-
-// 	if err != nil {
-// 		panic(err)
-// 	}
-
-// 	if info.IsDir() {
-// 		return nil
-// 	}
-
-// 	in, err := ioutil.ReadFile(path)
-// 	if err != nil {
-// 		panic(err)
-// 	}
-
-// 	var out yaml.MapSlice
-// 	if err = yaml.Unmarshal(in, &out); err != nil {
-// 		panic(err)
-// 	}
-
-// 	var plural string
-// 	for _, item := range out {
-// 		if item.Key == "plural" {
-// 			plural = item.Value.(string)
-// 		}
-// 	}
-
-// 	locale := strings.Replace(info.Name(), filepath.Ext(info.Name()), "", 1)
-// 	locale = strings.ToLower(strings.Replace(locale, "-", "_", -1))
-
-// 	plurals[locale] = &pluralInfo{
-// 		path:   path,
-// 		locale: locale,
-// 		plural: plural,
-// 	}
-
-// 	if plural == "" {
-// 		return nil
-// 	}
-
-// 	basePlurals[locale] = plural
-
-// 	return nil
-// })
-
-// if err != nil {
-// 	panic(err)
-// }
-
-// for _, p := range plurals {
-
-// 	if p.plural == "" {
-
-// 		var ok bool
-
-// 		fmt.Print("can't find plurals in ", p.path, " attempting to locate base language plural rules...")
-
-// 		base := strings.SplitN(p.locale, "_", 2)
-
-// 		p.plural, ok = basePlurals[base[0]]
-// 		if !ok {
-// 			fmt.Println("Not Found")
-// 			continue
-// 		}
-
-// 		fmt.Println("Found")
-// 	}
-// }
-
-// cldr
-
-// var decoder cldr.Decoder
-// cldr, err := decoder.DecodePath("data/core")
-// if err != nil {
-// 	panic(err)
-// }
-
-// 	locs := map[string]string{}
-// 	numbers := map[string]i18n.Number{}
-// 	calendars := map[string]i18n.Calendar{}
-// 	locales := cldr.Locales()
-// 	for _, loc := range locales {
-
-// 		ldml := cldr.RawLDML(loc)
-// 		if ldml.Numbers == nil {
-// 			continue
-// 		}
-// 		var number i18n.Number
-
-// 		number.Currencies = make(i18n.CurrencyFormatValue)
-
-// 		if len(ldml.Numbers.Symbols) > 0 {
-// 			symbol := ldml.Numbers.Symbols[0]
-// 			if len(symbol.Decimal) > 0 {
-// 				number.Symbols.Decimal = symbol.Decimal[0].Data()
-// 			}
-// 			if len(symbol.Group) > 0 {
-// 				number.Symbols.Group = symbol.Group[0].Data()
-// 			}
-// 			if len(symbol.MinusSign) > 0 {
-// 				number.Symbols.Negative = symbol.MinusSign[0].Data()
-// 			}
-// 			if len(symbol.PercentSign) > 0 {
-// 				number.Symbols.Percent = symbol.PercentSign[0].Data()
-// 			}
-// 			if len(symbol.PerMille) > 0 {
-// 				number.Symbols.PerMille = symbol.PerMille[0].Data()
-// 			}
-// 		}
-// 		if len(ldml.Numbers.DecimalFormats) > 0 && len(ldml.Numbers.DecimalFormats[0].DecimalFormatLength) > 0 {
-// 			number.Formats.Decimal = ldml.Numbers.DecimalFormats[0].DecimalFormatLength[0].DecimalFormat[0].Pattern[0].Data()
-// 		}
-
-// 		if len(ldml.Numbers.CurrencyFormats) > 0 && len(ldml.Numbers.CurrencyFormats[0].CurrencyFormatLength) > 0 {
-
-// 			number.Formats.Currency = ldml.Numbers.CurrencyFormats[0].CurrencyFormatLength[0].CurrencyFormat[0].Pattern[0].Data()
-// 			number.Formats.CurrencyAccounting = number.Formats.Currency
-
-// 			if len(ldml.Numbers.CurrencyFormats[0].CurrencyFormatLength[0].CurrencyFormat) > 1 {
-// 				number.Formats.CurrencyAccounting = ldml.Numbers.CurrencyFormats[0].CurrencyFormatLength[0].CurrencyFormat[1].Pattern[0].Data()
-// 			}
-// 		}
-// 		if len(ldml.Numbers.PercentFormats) > 0 && len(ldml.Numbers.PercentFormats[0].PercentFormatLength) > 0 {
-// 			number.Formats.Percent = ldml.Numbers.PercentFormats[0].PercentFormatLength[0].PercentFormat[0].Pattern[0].Data()
-// 		}
-// 		if ldml.Numbers.Currencies != nil {
-
-// 			for _, currency := range ldml.Numbers.Currencies.Currency {
-
-// 				var c i18n.Currency
-
-// 				c.Currency = currency.Type
-
-// 				if len(currency.DisplayName) > 0 {
-// 					c.DisplayName = currency.DisplayName[0].Data()
-// 				}
-
-// 				if len(currency.Symbol) > 0 {
-// 					c.Symbol = currency.Symbol[0].Data()
-// 				}
-
-// 				number.Currencies[c.Currency] = c
-// 			}
-// 		}
-// 		numbers[loc] = number
-// 		locs[loc] = strings.ToLower(strings.Replace(loc, "_", "", -1))
-
-// 		if ldml.Dates != nil && ldml.Dates.Calendars != nil {
-
-// 			var calendar i18n.Calendar
-// 			ldmlCar := ldml.Dates.Calendars.Calendar[0]
-
-// 			for _, cal := range ldml.Dates.Calendars.Calendar {
-// 				if cal.Type == "gregorian" {
-// 					ldmlCar = cal
-// 				}
-// 			}
-
-// 			if ldmlCar.DateFormats != nil {
-// 				for _, datefmt := range ldmlCar.DateFormats.DateFormatLength {
-// 					switch datefmt.Type {
-// 					case "full":
-// 						calendar.Formats.DateEra.BC.Full = datefmt.DateFormat[0].Pattern[0].Data()
-// 						calendar.Formats.DateEra.AD.Full = calendar.Formats.DateEra.BC.Full
-
-// 					case "long":
-// 						calendar.Formats.DateEra.BC.Long = datefmt.DateFormat[0].Pattern[0].Data()
-// 						calendar.Formats.DateEra.AD.Long = calendar.Formats.DateEra.BC.Long
-
-// 						// Overrides TODO: Split Each Section into separate function, getting to big to maintain
-
-// 					case "medium":
-// 						calendar.Formats.DateEra.BC.Medium = datefmt.DateFormat[0].Pattern[0].Data()
-// 						calendar.Formats.DateEra.AD.Medium = calendar.Formats.DateEra.BC.Medium
-// 					case "short":
-// 						calendar.Formats.DateEra.BC.Short = datefmt.DateFormat[0].Pattern[0].Data()
-// 						calendar.Formats.DateEra.AD.Short = calendar.Formats.DateEra.BC.Short
-// 					}
-// 				}
-
-// 				// Overrides TODO: Split Each Section into separate function, getting to big to maintain
-// 				switch loc {
-// 				case "th":
-// 					calendar.Formats.DateEra.BC.Full = "EEEEที่ d MMMM y GGGG"
-// 					calendar.Formats.DateEra.AD.Full = "EEEEที่ d MMMM GGGG y"
-// 					calendar.Formats.DateEra.BC.Long = "d MMMM y GG"
-// 					calendar.Formats.DateEra.AD.Long = "d MMMM GG y"
-// 				case "en":
-// 					calendar.Formats.DateEra.BC.Full = "EEEE, MMMM d, y GGGG"
-// 					calendar.Formats.DateEra.BC.Long = "MMMM d, y GG"
-// 					// calendar.Formats.DateEra.BC.Medium = "MMM d, y GG"
-// 					// calendar.Formats.DateEra.BC.Short = "M/d/yy G"
-// 				}
-// 			}
-
-// 			if ldmlCar.TimeFormats != nil {
-// 				for _, datefmt := range ldmlCar.TimeFormats.TimeFormatLength {
-// 					switch datefmt.Type {
-// 					case "full":
-// 						calendar.Formats.Time.Full = datefmt.TimeFormat[0].Pattern[0].Data()
-// 					case "long":
-// 						calendar.Formats.Time.Long = datefmt.TimeFormat[0].Pattern[0].Data()
-// 					case "medium":
-// 						calendar.Formats.Time.Medium = datefmt.TimeFormat[0].Pattern[0].Data()
-// 					case "short":
-// 						calendar.Formats.Time.Short = datefmt.TimeFormat[0].Pattern[0].Data()
-// 					}
-// 				}
-// 			}
-// 			if ldmlCar.DateTimeFormats != nil {
-// 				for _, datefmt := range ldmlCar.DateTimeFormats.DateTimeFormatLength {
-// 					switch datefmt.Type {
-// 					case "full":
-// 						calendar.Formats.DateTime.Full = datefmt.DateTimeFormat[0].Pattern[0].Data()
-// 					case "long":
-// 						calendar.Formats.DateTime.Long = datefmt.DateTimeFormat[0].Pattern[0].Data()
-// 					case "medium":
-// 						calendar.Formats.DateTime.Medium = datefmt.DateTimeFormat[0].Pattern[0].Data()
-// 					case "short":
-// 						calendar.Formats.DateTime.Short = datefmt.DateTimeFormat[0].Pattern[0].Data()
-// 					}
-// 				}
-// 			}
-// 			if ldmlCar.Months != nil {
-
-// 				for _, monthctx := range ldmlCar.Months.MonthContext {
-
-// 					for _, months := range monthctx.MonthWidth {
-
-// 						i18nMonth := make(i18n.CalendarMonthFormatNameValue)
-
-// 						for _, m := range months.Month {
-// 							switch m.Type {
-// 							case "1":
-// 								i18nMonth[time.January] = m.Data()
-// 							case "2":
-// 								i18nMonth[time.February] = m.Data()
-// 							case "3":
-// 								i18nMonth[time.March] = m.Data()
-// 							case "4":
-// 								i18nMonth[time.April] = m.Data()
-// 							case "5":
-// 								i18nMonth[time.May] = m.Data()
-// 							case "6":
-// 								i18nMonth[time.June] = m.Data()
-// 							case "7":
-// 								i18nMonth[time.July] = m.Data()
-// 							case "8":
-// 								i18nMonth[time.August] = m.Data()
-// 							case "9":
-// 								i18nMonth[time.September] = m.Data()
-// 							case "10":
-// 								i18nMonth[time.October] = m.Data()
-// 							case "11":
-// 								i18nMonth[time.November] = m.Data()
-// 							case "12":
-// 								i18nMonth[time.December] = m.Data()
-// 							}
-// 						}
-// 						switch months.Type {
-// 						case "abbreviated":
-// 							calendar.FormatNames.Months.Abbreviated = i18nMonth
-// 						case "narrow":
-// 							calendar.FormatNames.Months.Narrow = i18nMonth
-// 						case "short":
-// 							calendar.FormatNames.Months.Short = i18nMonth
-// 						case "wide":
-// 							calendar.FormatNames.Months.Wide = i18nMonth
-// 						}
-// 					}
-// 				}
-// 			}
-// 			if ldmlCar.Days != nil {
-// 				for _, dayctx := range ldmlCar.Days.DayContext {
-
-// 					for _, days := range dayctx.DayWidth {
-
-// 						i18nDay := make(i18n.CalendarDayFormatNameValue)
-
-// 						for _, d := range days.Day {
-
-// 							switch d.Type {
-// 							case "sun":
-// 								i18nDay[time.Sunday] = d.Data()
-// 							case "mon":
-// 								i18nDay[time.Monday] = d.Data()
-// 							case "tue":
-// 								i18nDay[time.Tuesday] = d.Data()
-// 							case "wed":
-// 								i18nDay[time.Wednesday] = d.Data()
-// 							case "thu":
-// 								i18nDay[time.Thursday] = d.Data()
-// 							case "fri":
-// 								i18nDay[time.Friday] = d.Data()
-// 							case "sat":
-// 								i18nDay[time.Saturday] = d.Data()
-// 							}
-// 						}
-
-// 						switch days.Type {
-// 						case "abbreviated":
-// 							calendar.FormatNames.Days.Abbreviated = i18nDay
-// 						case "narrow":
-// 							calendar.FormatNames.Days.Narrow = i18nDay
-// 						case "short":
-// 							calendar.FormatNames.Days.Short = i18nDay
-// 						case "wide":
-// 							calendar.FormatNames.Days.Wide = i18nDay
-// 						}
-// 					}
-// 				}
-// 			}
-
-// 			if ldmlCar.DayPeriods != nil {
-
-// 				for _, ctx := range ldmlCar.DayPeriods.DayPeriodContext {
-
-// 					for _, width := range ctx.DayPeriodWidth {
-
-// 						// var i18nPeriod i18n.CalendarPeriodFormatNameValue
-// 						i18nPeriod := make(i18n.CalendarPeriodFormatNameValue)
-
-// 						for _, d := range width.DayPeriod {
-
-// 							if _, ok := i18nPeriod[d.Type]; !ok {
-// 								i18nPeriod[d.Type] = d.Data()
-// 							}
-// 						}
-
-// 						switch width.Type {
-// 						case "abbreviated":
-// 							calendar.FormatNames.Periods.Abbreviated = i18nPeriod
-// 						case "narrow":
-// 							calendar.FormatNames.Periods.Narrow = i18nPeriod
-// 						case "short":
-// 							calendar.FormatNames.Periods.Short = i18nPeriod
-// 						case "wide":
-// 							calendar.FormatNames.Periods.Wide = i18nPeriod
-// 						}
-// 					}
-// 				}
-// 				// var empty i18n.CalendarPeriodFormatNameValue
-// 				// if calendar.FormatNames.Periods.Abbreviated == empty {
-// 				// 	calendar.FormatNames.Periods.Abbreviated = calendar.FormatNames.Periods.Wide
-// 				// }
-// 			}
-
-// 			if ldmlCar.Eras != nil {
-
-// 				var eras i18n.Eras
-
-// 				if ldmlCar.Eras.EraNames != nil && len(ldmlCar.Eras.EraNames.Era) > 0 {
-// 					eras.BC.Full = ldmlCar.Eras.EraNames.Era[0].Data()
-// 				}
-
-// 				if ldmlCar.Eras.EraAbbr != nil && len(ldmlCar.Eras.EraAbbr.Era) > 0 {
-// 					eras.BC.Abbrev = ldmlCar.Eras.EraAbbr.Era[0].Data()
-// 				}
-
-// 				if ldmlCar.Eras.EraNarrow != nil && len(ldmlCar.Eras.EraNarrow.Era) > 0 {
-// 					eras.BC.Narrow = ldmlCar.Eras.EraNarrow.Era[0].Data()
-// 				}
-
-// 				if ldmlCar.Eras.EraNames != nil && len(ldmlCar.Eras.EraNames.Era) > 2 {
-// 					eras.AD.Full = ldmlCar.Eras.EraNames.Era[2].Data()
-// 				}
-
-// 				if ldmlCar.Eras.EraAbbr != nil && len(ldmlCar.Eras.EraAbbr.Era) > 2 {
-// 					eras.AD.Abbrev = ldmlCar.Eras.EraAbbr.Era[2].Data()
-// 				}
-
-// 				if ldmlCar.Eras.EraNarrow != nil && len(ldmlCar.Eras.EraNarrow.Era) > 2 {
-// 					eras.AD.Narrow = ldmlCar.Eras.EraNarrow.Era[2].Data()
-// 				}
-
-// 				calendar.FormatNames.Eras = eras
-// 			}
-
-// 			calendars[loc] = calendar
-// 		}
-// 	}
-
-// 	for locale := range locs {
-
-// 		if !strings.Contains(locale, "_") {
-// 			continue
-// 		}
-
-// 		calendar := calendars[locale]
-
-// 		bString := strings.SplitN(locale, "_", 2)
-// 		base := bString[0]
-
-// 		baseCal := calendars[base]
-
-// 		// copy base calendar objects
-
-// 		// Dates
-// 		if calendar.Formats.DateEra.AD.Full == "" {
-// 			calendar.Formats.DateEra.BC.Full = baseCal.Formats.DateEra.BC.Full
-// 			calendar.Formats.DateEra.AD.Full = baseCal.Formats.DateEra.AD.Full
-// 		}
-
-// 		if calendar.Formats.DateEra.AD.Long == "" {
-// 			calendar.Formats.DateEra.BC.Long = baseCal.Formats.DateEra.BC.Long
-// 			calendar.Formats.DateEra.AD.Long = baseCal.Formats.DateEra.AD.Long
-// 		}
-
-// 		if calendar.Formats.DateEra.AD.Medium == "" {
-// 			calendar.Formats.DateEra.BC.Medium = baseCal.Formats.DateEra.BC.Medium
-// 			calendar.Formats.DateEra.AD.Medium = baseCal.Formats.DateEra.AD.Medium
-// 		}
+			func init() {
+				ut.RegisterLocale(locale)
+			}
+		`, locale, locale)))
 
-// 		if calendar.Formats.DateEra.AD.Short == "" {
-// 			calendar.Formats.DateEra.BC.Short = baseCal.Formats.DateEra.BC.Short
-// 			calendar.Formats.DateEra.AD.Short = baseCal.Formats.DateEra.AD.Short
-// 		}
-
-// 		// times
-// 		if calendar.Formats.Time.Full == "" {
-// 			calendar.Formats.Time.Full = baseCal.Formats.Time.Full
-// 		}
-
-// 		if calendar.Formats.Time.Long == "" {
-// 			calendar.Formats.Time.Long = baseCal.Formats.Time.Long
-// 		}
-
-// 		if calendar.Formats.Time.Medium == "" {
-// 			calendar.Formats.Time.Medium = baseCal.Formats.Time.Medium
-// 		}
-
-// 		if calendar.Formats.Time.Short == "" {
-// 			calendar.Formats.Time.Short = baseCal.Formats.Time.Short
-// 		}
-
-// 		// date & times
-// 		if calendar.Formats.DateTime.Full == "" {
-// 			calendar.Formats.DateTime.Full = baseCal.Formats.DateTime.Full
-// 		}
+			if err != nil {
+				panic(err)
+			}
 
-// 		if calendar.Formats.DateTime.Long == "" {
-// 			calendar.Formats.DateTime.Long = baseCal.Formats.DateTime.Long
-// 		}
+			fmt.Fprintf(mainFile, "%s", mainCodes)
 
-// 		if calendar.Formats.DateTime.Medium == "" {
-// 			calendar.Formats.DateTime.Medium = baseCal.Formats.DateTime.Medium
-// 		}
+			numberFile, err := os.Create(path + "number.go")
+			if err != nil {
+				panic(err)
+			}
+			defer numberFile.Close()
+
+			numberCodes, err := format.Source([]byte(fmt.Sprintf(`package %s
+			import "github.com/go-playground/universal-translator"
+			var (
+				symbols = %#v
+				formats = %#v
+			)
+		`, locale, number.Symbols, number.Formats)))
+			if err != nil {
+				panic(err)
+			}
+			fmt.Fprintf(numberFile, "%s", numberCodes)
 
-// 		if calendar.Formats.DateTime.Short == "" {
-// 			calendar.Formats.DateTime.Short = baseCal.Formats.DateTime.Short
-// 		}
+			currencyFile, err := os.Create(path + "currency.go")
+			if err != nil {
+				panic(err)
+			}
+			defer currencyFile.Close()
+
+			currencyCodes, err := format.Source([]byte(fmt.Sprintf(`package %s
+			import "github.com/go-playground/universal-translator"
+			var currencies = %# v
+		`, locale, number.Currencies)))
+			if err != nil {
+				panic(err)
+			}
+			fmt.Fprintf(currencyFile, "%s", currencyCodes)
 
-// 		// months
+			calendarFile, err := os.Create(path + "calendar.go")
+			if err != nil {
+				panic(err)
+			}
+			defer calendarFile.Close()
+
+			calendarCodes, err := format.Source([]byte(fmt.Sprintf(`package %s
+			import "github.com/go-playground/universal-translator"
+			var calendar = %#v
+		`, locale, calendar)))
+			if err != nil {
+				panic(err)
+			}
+			fmt.Fprintf(calendarFile, "%s", calendarCodes)
 
-// 		if calendar.FormatNames.Months.Abbreviated == nil {
-// 			calendar.FormatNames.Months.Abbreviated = make(i18n.CalendarMonthFormatNameValue)
-// 		}
+			var ok bool
+			pluralCode := "1"
 
-// 		if calendar.FormatNames.Months.Narrow == nil {
-// 			calendar.FormatNames.Months.Narrow = make(i18n.CalendarMonthFormatNameValue)
-// 		}
+			pInfo, ok := plurals[localeLowercase]
+			if ok && pInfo.plural != "" {
+				pluralCode = pInfo.plural
+			}
 
-// 		if calendar.FormatNames.Months.Short == nil {
-// 			calendar.FormatNames.Months.Short = make(i18n.CalendarMonthFormatNameValue)
-// 		}
+			pluralFile, err := os.Create(path + "plural.go")
+			if err != nil {
+				panic(err)
+			}
+			defer pluralFile.Close()
 
-// 		if calendar.FormatNames.Months.Wide == nil {
-// 			calendar.FormatNames.Months.Wide = make(i18n.CalendarMonthFormatNameValue)
-// 		}
+			pluralCodes, err := format.Source([]byte(fmt.Sprintf(`package %s
 
-// 		for k, v := range baseCal.FormatNames.Months.Abbreviated {
+			var pluralRule = %q
+		`, locale, pluralCode)))
+			if err != nil {
+				panic(err)
+			}
+			fmt.Fprintf(pluralFile, "%s", pluralCodes)
+		}(locale, number)
+	}
 
-// 			val, ok := calendar.FormatNames.Months.Abbreviated[k]
-// 			if !ok {
-// 				calendar.FormatNames.Months.Abbreviated[k] = v
-// 				continue
-// 			}
+	wg.Wait()
 
-// 			if val == "" {
-// 				calendar.FormatNames.Months.Abbreviated[k] = v
-// 			}
-// 		}
+	localesFile, err := os.Create("../../resources/locales/all.go")
+	if err != nil {
+		panic(err)
+	}
+	defer localesFile.Close()
+
+	tmpl, err := template.New("").Parse(`package locales
 
-// 		for k, v := range baseCal.FormatNames.Months.Narrow {
-
-// 			val, ok := calendar.FormatNames.Months.Narrow[k]
-// 			if !ok {
-// 				calendar.FormatNames.Months.Narrow[k] = v
-// 				continue
-// 			}
-
-// 			if val == "" {
-// 				calendar.FormatNames.Months.Narrow[k] = v
-// 			}
-// 		}
-
-// 		for k, v := range baseCal.FormatNames.Months.Short {
-
-// 			val, ok := calendar.FormatNames.Months.Short[k]
-// 			if !ok {
-// 				calendar.FormatNames.Months.Short[k] = v
-// 				continue
-// 			}
-
-// 			if val == "" {
-// 				calendar.FormatNames.Months.Short[k] = v
-// 			}
-// 		}
-
-// 		for k, v := range baseCal.FormatNames.Months.Wide {
-
-// 			val, ok := calendar.FormatNames.Months.Wide[k]
-// 			if !ok {
-// 				calendar.FormatNames.Months.Wide[k] = v
-// 				continue
-// 			}
-
-// 			if val == "" {
-// 				calendar.FormatNames.Months.Wide[k] = v
-// 			}
-// 		}
-
-// 		// days
-
-// 		if calendar.FormatNames.Days.Abbreviated == nil {
-// 			calendar.FormatNames.Days.Abbreviated = make(i18n.CalendarDayFormatNameValue)
-// 		}
-
-// 		if calendar.FormatNames.Days.Narrow == nil {
-// 			calendar.FormatNames.Days.Narrow = make(i18n.CalendarDayFormatNameValue)
-// 		}
-
-// 		if calendar.FormatNames.Days.Short == nil {
-// 			calendar.FormatNames.Days.Short = make(i18n.CalendarDayFormatNameValue)
-// 		}
-
-// 		if calendar.FormatNames.Days.Wide == nil {
-// 			calendar.FormatNames.Days.Wide = make(i18n.CalendarDayFormatNameValue)
-// 		}
-
-// 		for k, v := range baseCal.FormatNames.Days.Abbreviated {
-
-// 			val, ok := calendar.FormatNames.Days.Abbreviated[k]
-// 			if !ok {
-// 				calendar.FormatNames.Days.Abbreviated[k] = v
-// 				continue
-// 			}
-
-// 			if val == "" {
-// 				calendar.FormatNames.Days.Abbreviated[k] = v
-// 			}
-// 		}
-
-// 		for k, v := range baseCal.FormatNames.Days.Narrow {
-
-// 			val, ok := calendar.FormatNames.Days.Narrow[k]
-// 			if !ok {
-// 				calendar.FormatNames.Days.Narrow[k] = v
-// 				continue
-// 			}
-
-// 			if val == "" {
-// 				calendar.FormatNames.Days.Narrow[k] = v
-// 			}
-// 		}
-
-// 		for k, v := range baseCal.FormatNames.Days.Short {
-
-// 			val, ok := calendar.FormatNames.Days.Short[k]
-// 			if !ok {
-// 				calendar.FormatNames.Days.Short[k] = v
-// 				continue
-// 			}
-
-// 			if val == "" {
-// 				calendar.FormatNames.Days.Short[k] = v
-// 			}
-// 		}
-
-// 		for k, v := range baseCal.FormatNames.Days.Wide {
-
-// 			val, ok := calendar.FormatNames.Days.Wide[k]
-// 			if !ok {
-// 				calendar.FormatNames.Days.Wide[k] = v
-// 				continue
-// 			}
-
-// 			if val == "" {
-// 				calendar.FormatNames.Days.Wide[k] = v
-// 			}
-// 		}
-
-// 		// periods
-// 		if calendar.FormatNames.Periods.Abbreviated == nil {
-// 			calendar.FormatNames.Periods.Abbreviated = make(i18n.CalendarPeriodFormatNameValue)
-// 		}
-
-// 		if calendar.FormatNames.Periods.Narrow == nil {
-// 			calendar.FormatNames.Periods.Narrow = make(i18n.CalendarPeriodFormatNameValue)
-// 		}
-
-// 		if calendar.FormatNames.Periods.Short == nil {
-// 			calendar.FormatNames.Periods.Short = make(i18n.CalendarPeriodFormatNameValue)
-// 		}
-
-// 		if calendar.FormatNames.Periods.Wide == nil {
-// 			calendar.FormatNames.Periods.Wide = make(i18n.CalendarPeriodFormatNameValue)
-// 		}
-
-// 		for k, v := range baseCal.FormatNames.Periods.Abbreviated {
-
-// 			val, ok := calendar.FormatNames.Periods.Abbreviated[k]
-// 			if !ok {
-// 				calendar.FormatNames.Periods.Abbreviated[k] = v
-// 				continue
-// 			}
-
-// 			if val == "" {
-// 				calendar.FormatNames.Periods.Abbreviated[k] = v
-// 			}
-// 		}
-
-// 		for k, v := range baseCal.FormatNames.Periods.Narrow {
-
-// 			val, ok := calendar.FormatNames.Periods.Narrow[k]
-// 			if !ok {
-// 				calendar.FormatNames.Periods.Narrow[k] = v
-// 				continue
-// 			}
-
-// 			if val == "" {
-// 				calendar.FormatNames.Periods.Narrow[k] = v
-// 			}
-// 		}
-
-// 		for k, v := range baseCal.FormatNames.Periods.Short {
-
-// 			val, ok := calendar.FormatNames.Periods.Short[k]
-// 			if !ok {
-// 				calendar.FormatNames.Periods.Short[k] = v
-// 				continue
-// 			}
-
-// 			if val == "" {
-// 				calendar.FormatNames.Periods.Short[k] = v
-// 			}
-// 		}
-
-// 		for k, v := range baseCal.FormatNames.Periods.Wide {
-
-// 			val, ok := calendar.FormatNames.Periods.Wide[k]
-// 			if !ok {
-// 				calendar.FormatNames.Periods.Wide[k] = v
-// 				continue
-// 			}
-
-// 			if val == "" {
-// 				calendar.FormatNames.Periods.Wide[k] = v
-// 			}
-// 		}
+		// Imports for all locales
+		import (
+			{{range $locale, $_ := .}}// Locale "{{$locale}}" import that automatically registers itslef with the universal-translator package
+			_ "github.com/go-playground/universal-translator/resources/locales/{{$locale}}"
+		{{end}})
+	`)
 
-// 		calendars[locale] = calendar
-
-// 		number := numbers[locale]
-// 		baseNum := numbers[base]
-
-// 		// symbols
-// 		if number.Symbols.Decimal == "" {
-// 			number.Symbols.Decimal = baseNum.Symbols.Decimal
-// 		}
-
-// 		if number.Symbols.Group == "" {
-// 			number.Symbols.Group = baseNum.Symbols.Group
-// 		}
-
-// 		if number.Symbols.Negative == "" {
-// 			number.Symbols.Negative = baseNum.Symbols.Negative
-// 		}
-
-// 		if number.Symbols.Percent == "" {
-// 			number.Symbols.Percent = baseNum.Symbols.Percent
-// 		}
-
-// 		if number.Symbols.PerMille == "" {
-// 			number.Symbols.PerMille = baseNum.Symbols.PerMille
-// 		}
-
-// 		// formats
-// 		if number.Formats.Decimal == "" {
-// 			number.Formats.Decimal = baseNum.Formats.Decimal
-// 		}
-
-// 		if number.Formats.Currency == "" {
-// 			number.Formats.Currency = baseNum.Formats.Currency
-// 		}
-
-// 		if number.Formats.CurrencyAccounting == "" {
-// 			number.Formats.CurrencyAccounting = baseNum.Formats.CurrencyAccounting
-// 		}
-
-// 		if number.Formats.Percent == "" {
-// 			number.Formats.Percent = baseNum.Formats.Percent
-// 		}
-
-// 		// currency
-// 		for k, v := range baseNum.Currencies {
-
-// 			val, ok := number.Currencies[k]
-// 			if !ok {
-// 				// number.Currencies[k] = v
-// 				continue
-// 			}
-
-// 			if val.Currency == "" {
-// 				val.Currency = v.Currency
-// 			}
-
-// 			if val.DisplayName == "" {
-// 				val.DisplayName = v.DisplayName
-// 			}
-
-// 			if val.Symbol == "" {
-// 				val.Symbol = v.Symbol
-// 			}
-
-// 			number.Currencies[k] = val
-// 		}
-
-// 		numbers[locale] = number
-// 	}
-
-// 	var wg sync.WaitGroup
-// 	wg.Add(len(numbers))
-// 	for locale, number := range numbers {
-// 		go func(locale string, number i18n.Number) {
-
-// 			localeLowercase := strings.ToLower(locale)
-
-// 			defer func() { wg.Done() }()
-// 			path := "../../resources/locales/" + locale
-
-// 			if _, err := os.Stat(path); err != nil {
-// 				if err = os.MkdirAll(path, 0777); err != nil {
-// 					panic(err)
-// 				}
-// 			}
-
-// 			path += "/"
-
-// 			mainFile, err := os.Create(path + "main.go")
-// 			if err != nil {
-// 				panic(err)
-// 			}
-// 			defer mainFile.Close()
-
-// 			calendar := calendars[locale]
-
-// 			mainCodes, err := format.Source([]byte(fmt.Sprintf(`package %s
-// 			import "github.com/go-playground/universal-translator"
-
-// 			var locale = &ut.Locale{
-// 				Locale: %q,
-// 				Number: ut.Number{
-// 					Symbols: symbols,
-// 					Formats: formats,
-// 					Currencies: currencies,
-// 				},
-// 				Calendar: calendar,
-// 				PluralRule:   pluralRule,
-// 			}
-
-// 			func init() {
-// 				ut.RegisterLocale(locale)
-// 			}
-// 		`, locale, locale)))
-
-// 			if err != nil {
-// 				panic(err)
-// 			}
-
-// 			fmt.Fprintf(mainFile, "%s", mainCodes)
-
-// 			numberFile, err := os.Create(path + "number.go")
-// 			if err != nil {
-// 				panic(err)
-// 			}
-// 			defer numberFile.Close()
-
-// 			numberCodes, err := format.Source([]byte(fmt.Sprintf(`package %s
-// 			import "github.com/go-playground/universal-translator"
-// 			var (
-// 				symbols = %#v
-// 				formats = %#v
-// 			)
-// 		`, locale, number.Symbols, number.Formats)))
-// 			if err != nil {
-// 				panic(err)
-// 			}
-// 			fmt.Fprintf(numberFile, "%s", numberCodes)
-
-// 			currencyFile, err := os.Create(path + "currency.go")
-// 			if err != nil {
-// 				panic(err)
-// 			}
-// 			defer currencyFile.Close()
-
-// 			currencyCodes, err := format.Source([]byte(fmt.Sprintf(`package %s
-// 			import "github.com/go-playground/universal-translator"
-// 			var currencies = %# v
-// 		`, locale, number.Currencies)))
-// 			if err != nil {
-// 				panic(err)
-// 			}
-// 			fmt.Fprintf(currencyFile, "%s", currencyCodes)
-
-// 			calendarFile, err := os.Create(path + "calendar.go")
-// 			if err != nil {
-// 				panic(err)
-// 			}
-// 			defer calendarFile.Close()
-
-// 			calendarCodes, err := format.Source([]byte(fmt.Sprintf(`package %s
-// 			import "github.com/go-playground/universal-translator"
-// 			var calendar = %#v
-// 		`, locale, calendar)))
-// 			if err != nil {
-// 				panic(err)
-// 			}
-// 			fmt.Fprintf(calendarFile, "%s", calendarCodes)
-
-// 			var ok bool
-// 			pluralCode := "1"
-
-// 			pInfo, ok := plurals[localeLowercase]
-// 			if ok && pInfo.plural != "" {
-// 				pluralCode = pInfo.plural
-// 			}
-
-// 			pluralFile, err := os.Create(path + "plural.go")
-// 			if err != nil {
-// 				panic(err)
-// 			}
-// 			defer pluralFile.Close()
-
-// 			pluralCodes, err := format.Source([]byte(fmt.Sprintf(`package %s
-
-// 			var pluralRule = %q
-// 		`, locale, pluralCode)))
-// 			if err != nil {
-// 				panic(err)
-// 			}
-// 			fmt.Fprintf(pluralFile, "%s", pluralCodes)
-// 		}(locale, number)
-// 	}
-
-// 	wg.Wait()
-
-// 	localesFile, err := os.Create("../../resources/locales/all.go")
-// 	if err != nil {
-// 		panic(err)
-// 	}
-// 	defer localesFile.Close()
-
-// 	tmpl, err := template.New("").Parse(`package locales
-
-// 		// Imports for all locales
-// 		import (
-// 			{{range $locale, $_ := .}}// Locale "{{$locale}}" import that automatically registers itslef with the universal-translator package
-// 			_ "github.com/go-playground/universal-translator/resources/locales/{{$locale}}"
-// 		{{end}})
-// 	`)
-
-// 	if err != nil {
-// 		panic(err)
-// 	}
-// 	var buf bytes.Buffer
-// 	if err := tmpl.Execute(&buf, locs); err != nil {
-// 		panic(err)
-// 	}
-// 	allCodes, err := format.Source(buf.Bytes())
-// 	if err != nil {
-// 		panic(err)
-// 	}
-// 	_, err = localesFile.Write(allCodes)
-// 	if err != nil {
-// 		panic(err)
-// 	}
-// }
+	if err != nil {
+		panic(err)
+	}
+	var buf bytes.Buffer
+	if err := tmpl.Execute(&buf, locs); err != nil {
+		panic(err)
+	}
+	allCodes, err := format.Source(buf.Bytes())
+	if err != nil {
+		panic(err)
+	}
+	_, err = localesFile.Write(allCodes)
+	if err != nil {
+		panic(err)
+	}
+}

+ 0 - 29
cmd/resources/translator.tmpl

@@ -1,29 +0,0 @@
-{{ define "translator" }}
-package {{ .Locale }}
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type {{ .Locale }} struct {
-	locale string
-}
-
-// New returns a new instance of translator for the '{{ .Locale }}' locale
-func New() locales.Translator {
-	return &{{ .Locale }}{
-		locale: "{{ .Locale }}",
-	}
-}
-
-// Locale returns the current translators string locale
-func(l *{{ .Locale }}) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func(l *{{ .Locale }}) CardinalPluralRule(num string) (locales.PluralRule, error) {
-	{{ .CardinalFunc }}
-}
-
-{{ end }}

+ 0 - 36
resources/locales/af/af.go

@@ -1,36 +0,0 @@
-package af
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type af struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'af' locale
-func New() locales.Translator {
-	return &af{
-		locale: "af",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *af) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *af) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 1 {
-		return locales.PluralRuleOne, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/af/calendar.go


File diff suppressed because it is too large
+ 4 - 0
resources/locales/af/currency.go


+ 18 - 0
resources/locales/af/main.go

@@ -0,0 +1,18 @@
+package af
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "af",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/af/number.go

@@ -0,0 +1,8 @@
+package af
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: ",", Group: "\u00a0", Negative: "-", Percent: "%", PerMille: "‰"}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "¤#,##0.00", CurrencyAccounting: "¤#,##0.00;(¤#,##0.00)", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/af/plural.go

@@ -0,0 +1,3 @@
+package af
+
+var pluralRule = "2A"

+ 0 - 36
resources/locales/af_NA/af_NA.go

@@ -1,36 +0,0 @@
-package af_NA
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type af_NA struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'af_NA' locale
-func New() locales.Translator {
-	return &af_NA{
-		locale: "af_NA",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *af_NA) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *af_NA) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 1 {
-		return locales.PluralRuleOne, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/af_NA/calendar.go


+ 5 - 0
resources/locales/af_NA/currency.go

@@ -0,0 +1,5 @@
+package af_NA
+
+import "github.com/go-playground/universal-translator"
+
+var currencies = ut.CurrencyFormatValue{"NAD": ut.Currency{Currency: "NAD", DisplayName: "Namibiese dollar", Symbol: "$"}}

+ 18 - 0
resources/locales/af_NA/main.go

@@ -0,0 +1,18 @@
+package af_NA
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "af_NA",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/af_NA/number.go

@@ -0,0 +1,8 @@
+package af_NA
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: ",", Group: "\u00a0", Negative: "-", Percent: "%", PerMille: "‰"}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "¤#,##0.00", CurrencyAccounting: "¤#,##0.00;(¤#,##0.00)", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/af_NA/plural.go

@@ -0,0 +1,3 @@
+package af_NA
+
+var pluralRule = "1"

+ 0 - 36
resources/locales/af_ZA/af_ZA.go

@@ -1,36 +0,0 @@
-package af_ZA
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type af_ZA struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'af_ZA' locale
-func New() locales.Translator {
-	return &af_ZA{
-		locale: "af_ZA",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *af_ZA) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *af_ZA) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 1 {
-		return locales.PluralRuleOne, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

+ 0 - 26
resources/locales/agq/agq.go

@@ -1,26 +0,0 @@
-package agq
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type agq struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'agq' locale
-func New() locales.Translator {
-	return &agq{
-		locale: "agq",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *agq) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *agq) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/agq/calendar.go


File diff suppressed because it is too large
+ 4 - 0
resources/locales/agq/currency.go


+ 18 - 0
resources/locales/agq/main.go

@@ -0,0 +1,18 @@
+package agq
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "agq",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/agq/number.go

@@ -0,0 +1,8 @@
+package agq
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: ",", Group: "\u00a0", Negative: "", Percent: "", PerMille: ""}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "#,##0.00¤", CurrencyAccounting: "#,##0.00¤", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/agq/plural.go

@@ -0,0 +1,3 @@
+package agq
+
+var pluralRule = "1"

+ 0 - 26
resources/locales/agq_CM/agq_CM.go

@@ -1,26 +0,0 @@
-package agq_CM
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type agq_CM struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'agq_CM' locale
-func New() locales.Translator {
-	return &agq_CM{
-		locale: "agq_CM",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *agq_CM) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *agq_CM) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-}

+ 0 - 36
resources/locales/ak/ak.go

@@ -1,36 +0,0 @@
-package ak
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ak struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ak' locale
-func New() locales.Translator {
-	return &ak{
-		locale: "ak",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ak) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ak) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n >= 0 && n <= 1 {
-		return locales.PluralRuleOne, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

+ 5 - 0
resources/locales/ak/calendar.go

@@ -0,0 +1,5 @@
+package ak
+
+import "github.com/go-playground/universal-translator"
+
+var calendar = ut.Calendar{Formats: ut.CalendarFormats{DateEra: ut.DateEra{BC: ut.CalendarDateFormat{Full: "EEEE, y MMMM dd", Long: "y MMMM d", Medium: "y MMM d", Short: "yy/MM/dd"}, AD: ut.CalendarDateFormat{Full: "EEEE, y MMMM dd", Long: "y MMMM d", Medium: "y MMM d", Short: "yy/MM/dd"}}, Time: ut.CalendarDateFormat{Full: "h:mm:ss a zzzz", Long: "h:mm:ss a z", Medium: "h:mm:ss a", Short: "h:mm a"}, DateTime: ut.CalendarDateFormat{Full: "", Long: "", Medium: "", Short: ""}}, FormatNames: ut.CalendarFormatNames{Months: ut.CalendarMonthFormatNames{Abbreviated: ut.CalendarMonthFormatNameValue{12: "M-Ɔ", 2: "K-Ɔ", 6: "O-A", 7: "A-K", 11: "Ɔ-O", 8: "D-Ɔ", 9: "F-Ɛ", 10: "Ɔ-A", 1: "S-Ɔ", 3: "E-Ɔ", 4: "E-O", 5: "E-K"}, Narrow: ut.CalendarMonthFormatNameValue(nil), Short: ut.CalendarMonthFormatNameValue(nil), Wide: ut.CalendarMonthFormatNameValue{12: "Mumu-Ɔpɛnimba", 1: "Sanda-Ɔpɛpɔn", 3: "Ebɔw-Ɔbenem", 4: "Ebɔbira-Oforisuo", 6: "Obirade-Ayɛwohomumu", 7: "Ayɛwoho-Kitawonsa", 9: "Fankwa-Ɛbɔ", 10: "Ɔbɛsɛ-Ahinime", 2: "Kwakwar-Ɔgyefuo", 5: "Esusow Aketseaba-Kɔtɔnimba", 8: "Difuu-Ɔsandaa", 11: "Ɔberɛfɛw-Obubuo"}}, Days: ut.CalendarDayFormatNames{Abbreviated: ut.CalendarDayFormatNameValue{1: "Dwo", 2: "Ben", 3: "Wuk", 4: "Yaw", 5: "Fia", 6: "Mem", 0: "Kwe"}, Narrow: ut.CalendarDayFormatNameValue{2: "B", 3: "W", 4: "Y", 5: "F", 6: "M", 0: "K", 1: "D"}, Short: ut.CalendarDayFormatNameValue(nil), Wide: ut.CalendarDayFormatNameValue{3: "Wukuda", 4: "Yawda", 5: "Fida", 6: "Memeneda", 0: "Kwesida", 1: "Dwowda", 2: "Benada"}}, Periods: ut.CalendarPeriodFormatNames{Abbreviated: ut.CalendarPeriodFormatNameValue{"pm": "EW", "am": "AN"}, Narrow: ut.CalendarPeriodFormatNameValue(nil), Short: ut.CalendarPeriodFormatNameValue(nil), Wide: ut.CalendarPeriodFormatNameValue{"am": "AN", "pm": "EW"}}, Eras: ut.Eras{AD: ut.CalendarEraFormatNames{Full: "", Abbrev: "", Narrow: ""}, BC: ut.CalendarEraFormatNames{Full: "Ansa Kristo", Abbrev: "AK", Narrow: ""}}}}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/ak/currency.go


+ 18 - 0
resources/locales/ak/main.go

@@ -0,0 +1,18 @@
+package ak
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "ak",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/ak/number.go

@@ -0,0 +1,8 @@
+package ak
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: ".", Group: ",", Negative: "", Percent: "", PerMille: ""}
+	formats = ut.NumberFormats{Decimal: "", Currency: "¤#,##0.00", CurrencyAccounting: "¤#,##0.00", Percent: ""}
+)

+ 3 - 0
resources/locales/ak/plural.go

@@ -0,0 +1,3 @@
+package ak
+
+var pluralRule = "2B"

+ 0 - 36
resources/locales/ak_GH/ak_GH.go

@@ -1,36 +0,0 @@
-package ak_GH
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ak_GH struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ak_GH' locale
-func New() locales.Translator {
-	return &ak_GH{
-		locale: "ak_GH",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ak_GH) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ak_GH) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n >= 0 && n <= 1 {
-		return locales.PluralRuleOne, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

+ 813 - 0
resources/locales/all.go

@@ -0,0 +1,813 @@
+package locales
+
+// Imports for all locales
+import (
+	// Locale "af" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/af"
+	// Locale "af_NA" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/af_NA"
+	// Locale "agq" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/agq"
+	// Locale "ak" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ak"
+	// Locale "am" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/am"
+	// Locale "ar" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar"
+	// Locale "ar_AE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar_AE"
+	// Locale "ar_DJ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar_DJ"
+	// Locale "ar_DZ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar_DZ"
+	// Locale "ar_EH" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar_EH"
+	// Locale "ar_ER" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar_ER"
+	// Locale "ar_LB" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar_LB"
+	// Locale "ar_LY" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar_LY"
+	// Locale "ar_MA" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar_MA"
+	// Locale "ar_MR" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar_MR"
+	// Locale "ar_SO" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar_SO"
+	// Locale "ar_SS" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar_SS"
+	// Locale "ar_TN" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ar_TN"
+	// Locale "as" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/as"
+	// Locale "asa" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/asa"
+	// Locale "ast" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ast"
+	// Locale "az" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/az"
+	// Locale "az_Cyrl" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/az_Cyrl"
+	// Locale "bas" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/bas"
+	// Locale "be" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/be"
+	// Locale "bem" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/bem"
+	// Locale "bez" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/bez"
+	// Locale "bg" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/bg"
+	// Locale "bm" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/bm"
+	// Locale "bn" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/bn"
+	// Locale "bo" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/bo"
+	// Locale "bo_IN" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/bo_IN"
+	// Locale "br" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/br"
+	// Locale "brx" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/brx"
+	// Locale "bs" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/bs"
+	// Locale "bs_Cyrl" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/bs_Cyrl"
+	// Locale "ca" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ca"
+	// Locale "ca_ES_VALENCIA" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ca_ES_VALENCIA"
+	// Locale "ca_FR" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ca_FR"
+	// Locale "ce" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ce"
+	// Locale "cgg" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/cgg"
+	// Locale "chr" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/chr"
+	// Locale "ckb" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ckb"
+	// Locale "cs" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/cs"
+	// Locale "cu" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/cu"
+	// Locale "cy" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/cy"
+	// Locale "da" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/da"
+	// Locale "dav" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/dav"
+	// Locale "de" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/de"
+	// Locale "de_AT" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/de_AT"
+	// Locale "de_CH" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/de_CH"
+	// Locale "de_LI" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/de_LI"
+	// Locale "de_LU" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/de_LU"
+	// Locale "dje" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/dje"
+	// Locale "dsb" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/dsb"
+	// Locale "dua" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/dua"
+	// Locale "dyo" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/dyo"
+	// Locale "dz" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/dz"
+	// Locale "ebu" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ebu"
+	// Locale "ee" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ee"
+	// Locale "el" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/el"
+	// Locale "en" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en"
+	// Locale "en_001" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_001"
+	// Locale "en_150" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_150"
+	// Locale "en_AG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_AG"
+	// Locale "en_AI" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_AI"
+	// Locale "en_AT" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_AT"
+	// Locale "en_AU" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_AU"
+	// Locale "en_BB" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_BB"
+	// Locale "en_BE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_BE"
+	// Locale "en_BI" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_BI"
+	// Locale "en_BM" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_BM"
+	// Locale "en_BS" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_BS"
+	// Locale "en_BW" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_BW"
+	// Locale "en_BZ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_BZ"
+	// Locale "en_CA" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_CA"
+	// Locale "en_CC" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_CC"
+	// Locale "en_CH" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_CH"
+	// Locale "en_CK" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_CK"
+	// Locale "en_CX" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_CX"
+	// Locale "en_DE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_DE"
+	// Locale "en_DK" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_DK"
+	// Locale "en_DM" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_DM"
+	// Locale "en_ER" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_ER"
+	// Locale "en_FI" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_FI"
+	// Locale "en_FJ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_FJ"
+	// Locale "en_FK" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_FK"
+	// Locale "en_GB" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_GB"
+	// Locale "en_GD" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_GD"
+	// Locale "en_GG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_GG"
+	// Locale "en_GH" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_GH"
+	// Locale "en_GI" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_GI"
+	// Locale "en_GM" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_GM"
+	// Locale "en_GY" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_GY"
+	// Locale "en_IM" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_IM"
+	// Locale "en_IN" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_IN"
+	// Locale "en_JE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_JE"
+	// Locale "en_JM" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_JM"
+	// Locale "en_KE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_KE"
+	// Locale "en_KI" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_KI"
+	// Locale "en_KN" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_KN"
+	// Locale "en_KY" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_KY"
+	// Locale "en_LC" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_LC"
+	// Locale "en_LR" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_LR"
+	// Locale "en_LS" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_LS"
+	// Locale "en_MG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_MG"
+	// Locale "en_MO" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_MO"
+	// Locale "en_MS" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_MS"
+	// Locale "en_MT" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_MT"
+	// Locale "en_MU" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_MU"
+	// Locale "en_MW" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_MW"
+	// Locale "en_MY" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_MY"
+	// Locale "en_NA" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_NA"
+	// Locale "en_NF" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_NF"
+	// Locale "en_NG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_NG"
+	// Locale "en_NL" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_NL"
+	// Locale "en_NR" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_NR"
+	// Locale "en_NU" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_NU"
+	// Locale "en_NZ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_NZ"
+	// Locale "en_PG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_PG"
+	// Locale "en_PH" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_PH"
+	// Locale "en_PK" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_PK"
+	// Locale "en_PN" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_PN"
+	// Locale "en_RW" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_RW"
+	// Locale "en_SB" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_SB"
+	// Locale "en_SC" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_SC"
+	// Locale "en_SE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_SE"
+	// Locale "en_SG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_SG"
+	// Locale "en_SH" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_SH"
+	// Locale "en_SI" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_SI"
+	// Locale "en_SL" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_SL"
+	// Locale "en_SS" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_SS"
+	// Locale "en_SX" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_SX"
+	// Locale "en_SZ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_SZ"
+	// Locale "en_TK" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_TK"
+	// Locale "en_TO" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_TO"
+	// Locale "en_TT" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_TT"
+	// Locale "en_TV" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_TV"
+	// Locale "en_TZ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_TZ"
+	// Locale "en_UG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_UG"
+	// Locale "en_US_POSIX" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_US_POSIX"
+	// Locale "en_VC" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_VC"
+	// Locale "en_VU" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_VU"
+	// Locale "en_WS" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_WS"
+	// Locale "en_ZA" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_ZA"
+	// Locale "en_ZM" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/en_ZM"
+	// Locale "eo" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/eo"
+	// Locale "es" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es"
+	// Locale "es_419" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_419"
+	// Locale "es_AR" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_AR"
+	// Locale "es_BO" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_BO"
+	// Locale "es_BR" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_BR"
+	// Locale "es_CL" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_CL"
+	// Locale "es_CO" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_CO"
+	// Locale "es_CR" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_CR"
+	// Locale "es_CU" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_CU"
+	// Locale "es_DO" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_DO"
+	// Locale "es_EC" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_EC"
+	// Locale "es_GQ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_GQ"
+	// Locale "es_GT" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_GT"
+	// Locale "es_HN" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_HN"
+	// Locale "es_MX" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_MX"
+	// Locale "es_NI" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_NI"
+	// Locale "es_PA" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_PA"
+	// Locale "es_PE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_PE"
+	// Locale "es_PH" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_PH"
+	// Locale "es_PR" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_PR"
+	// Locale "es_PY" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_PY"
+	// Locale "es_SV" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_SV"
+	// Locale "es_US" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_US"
+	// Locale "es_UY" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_UY"
+	// Locale "es_VE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/es_VE"
+	// Locale "et" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/et"
+	// Locale "eu" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/eu"
+	// Locale "ewo" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ewo"
+	// Locale "fa" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fa"
+	// Locale "fa_AF" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fa_AF"
+	// Locale "ff" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ff"
+	// Locale "ff_GN" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ff_GN"
+	// Locale "ff_MR" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ff_MR"
+	// Locale "fi" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fi"
+	// Locale "fil" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fil"
+	// Locale "fo" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fo"
+	// Locale "fo_DK" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fo_DK"
+	// Locale "fr" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr"
+	// Locale "fr_BE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_BE"
+	// Locale "fr_BI" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_BI"
+	// Locale "fr_CA" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_CA"
+	// Locale "fr_CD" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_CD"
+	// Locale "fr_CH" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_CH"
+	// Locale "fr_DJ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_DJ"
+	// Locale "fr_DZ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_DZ"
+	// Locale "fr_GN" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_GN"
+	// Locale "fr_HT" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_HT"
+	// Locale "fr_KM" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_KM"
+	// Locale "fr_LU" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_LU"
+	// Locale "fr_MA" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_MA"
+	// Locale "fr_MG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_MG"
+	// Locale "fr_MR" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_MR"
+	// Locale "fr_MU" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_MU"
+	// Locale "fr_RW" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_RW"
+	// Locale "fr_SC" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_SC"
+	// Locale "fr_SY" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_SY"
+	// Locale "fr_TN" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_TN"
+	// Locale "fr_VU" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fr_VU"
+	// Locale "fur" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fur"
+	// Locale "fy" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/fy"
+	// Locale "ga" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ga"
+	// Locale "gd" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/gd"
+	// Locale "gl" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/gl"
+	// Locale "gsw" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/gsw"
+	// Locale "gu" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/gu"
+	// Locale "guz" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/guz"
+	// Locale "gv" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/gv"
+	// Locale "ha" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ha"
+	// Locale "ha_GH" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ha_GH"
+	// Locale "haw" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/haw"
+	// Locale "he" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/he"
+	// Locale "hi" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/hi"
+	// Locale "hr" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/hr"
+	// Locale "hr_BA" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/hr_BA"
+	// Locale "hsb" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/hsb"
+	// Locale "hu" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/hu"
+	// Locale "hy" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/hy"
+	// Locale "id" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/id"
+	// Locale "ig" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ig"
+	// Locale "ii" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ii"
+	// Locale "is" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/is"
+	// Locale "it" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/it"
+	// Locale "it_CH" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/it_CH"
+	// Locale "ja" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ja"
+	// Locale "jgo" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/jgo"
+	// Locale "jmc" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/jmc"
+	// Locale "ka" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ka"
+	// Locale "kab" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/kab"
+	// Locale "kam" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/kam"
+	// Locale "kde" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/kde"
+	// Locale "kea" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/kea"
+	// Locale "khq" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/khq"
+	// Locale "ki" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ki"
+	// Locale "kk" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/kk"
+	// Locale "kkj" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/kkj"
+	// Locale "kl" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/kl"
+	// Locale "kln" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/kln"
+	// Locale "km" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/km"
+	// Locale "kn" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/kn"
+	// Locale "ko" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ko"
+	// Locale "kok" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/kok"
+	// Locale "ks" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ks"
+	// Locale "ksb" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ksb"
+	// Locale "ksf" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ksf"
+	// Locale "ksh" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ksh"
+	// Locale "kw" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/kw"
+	// Locale "ky" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ky"
+	// Locale "lag" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/lag"
+	// Locale "lb" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/lb"
+	// Locale "lg" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/lg"
+	// Locale "lkt" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/lkt"
+	// Locale "ln" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ln"
+	// Locale "ln_AO" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ln_AO"
+	// Locale "lo" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/lo"
+	// Locale "lrc" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/lrc"
+	// Locale "lt" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/lt"
+	// Locale "lu" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/lu"
+	// Locale "luo" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/luo"
+	// Locale "luy" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/luy"
+	// Locale "lv" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/lv"
+	// Locale "mas" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mas"
+	// Locale "mas_TZ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mas_TZ"
+	// Locale "mer" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mer"
+	// Locale "mfe" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mfe"
+	// Locale "mg" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mg"
+	// Locale "mgh" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mgh"
+	// Locale "mgo" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mgo"
+	// Locale "mk" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mk"
+	// Locale "ml" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ml"
+	// Locale "mn" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mn"
+	// Locale "mr" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mr"
+	// Locale "ms" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ms"
+	// Locale "ms_BN" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ms_BN"
+	// Locale "ms_SG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ms_SG"
+	// Locale "mt" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mt"
+	// Locale "mua" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mua"
+	// Locale "my" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/my"
+	// Locale "mzn" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/mzn"
+	// Locale "naq" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/naq"
+	// Locale "nb" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nb"
+	// Locale "nd" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nd"
+	// Locale "ne" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ne"
+	// Locale "nl" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nl"
+	// Locale "nl_AW" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nl_AW"
+	// Locale "nl_BE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nl_BE"
+	// Locale "nl_BQ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nl_BQ"
+	// Locale "nl_CW" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nl_CW"
+	// Locale "nl_SR" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nl_SR"
+	// Locale "nl_SX" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nl_SX"
+	// Locale "nmg" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nmg"
+	// Locale "nn" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nn"
+	// Locale "nnh" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nnh"
+	// Locale "nus" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nus"
+	// Locale "nyn" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/nyn"
+	// Locale "om" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/om"
+	// Locale "om_KE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/om_KE"
+	// Locale "or" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/or"
+	// Locale "os" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/os"
+	// Locale "os_RU" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/os_RU"
+	// Locale "pa" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/pa"
+	// Locale "pa_Arab" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/pa_Arab"
+	// Locale "pl" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/pl"
+	// Locale "prg" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/prg"
+	// Locale "ps" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ps"
+	// Locale "pt" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/pt"
+	// Locale "pt_AO" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/pt_AO"
+	// Locale "pt_CV" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/pt_CV"
+	// Locale "pt_LU" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/pt_LU"
+	// Locale "pt_MO" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/pt_MO"
+	// Locale "pt_MZ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/pt_MZ"
+	// Locale "pt_PT" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/pt_PT"
+	// Locale "pt_ST" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/pt_ST"
+	// Locale "qu" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/qu"
+	// Locale "qu_BO" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/qu_BO"
+	// Locale "qu_EC" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/qu_EC"
+	// Locale "rm" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/rm"
+	// Locale "rn" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/rn"
+	// Locale "ro" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ro"
+	// Locale "ro_MD" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ro_MD"
+	// Locale "rof" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/rof"
+	// Locale "root" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/root"
+	// Locale "ru" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ru"
+	// Locale "ru_BY" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ru_BY"
+	// Locale "ru_KG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ru_KG"
+	// Locale "ru_KZ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ru_KZ"
+	// Locale "ru_MD" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ru_MD"
+	// Locale "rw" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/rw"
+	// Locale "rwk" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/rwk"
+	// Locale "sah" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sah"
+	// Locale "saq" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/saq"
+	// Locale "sbp" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sbp"
+	// Locale "se" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/se"
+	// Locale "se_SE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/se_SE"
+	// Locale "seh" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/seh"
+	// Locale "ses" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ses"
+	// Locale "sg" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sg"
+	// Locale "shi" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/shi"
+	// Locale "shi_Latn" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/shi_Latn"
+	// Locale "si" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/si"
+	// Locale "sk" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sk"
+	// Locale "sl" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sl"
+	// Locale "smn" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/smn"
+	// Locale "sn" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sn"
+	// Locale "so" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/so"
+	// Locale "so_DJ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/so_DJ"
+	// Locale "so_ET" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/so_ET"
+	// Locale "so_KE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/so_KE"
+	// Locale "sq" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sq"
+	// Locale "sq_MK" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sq_MK"
+	// Locale "sr" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sr"
+	// Locale "sr_Latn" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sr_Latn"
+	// Locale "sv" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sv"
+	// Locale "sw" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sw"
+	// Locale "sw_CD" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sw_CD"
+	// Locale "sw_UG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/sw_UG"
+	// Locale "ta" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ta"
+	// Locale "ta_LK" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ta_LK"
+	// Locale "ta_MY" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ta_MY"
+	// Locale "ta_SG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ta_SG"
+	// Locale "te" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/te"
+	// Locale "teo" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/teo"
+	// Locale "teo_KE" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/teo_KE"
+	// Locale "th" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/th"
+	// Locale "ti" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ti"
+	// Locale "ti_ER" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ti_ER"
+	// Locale "tk" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/tk"
+	// Locale "to" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/to"
+	// Locale "tr" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/tr"
+	// Locale "twq" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/twq"
+	// Locale "tzm" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/tzm"
+	// Locale "ug" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ug"
+	// Locale "uk" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/uk"
+	// Locale "ur" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ur"
+	// Locale "ur_IN" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/ur_IN"
+	// Locale "uz" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/uz"
+	// Locale "uz_Arab" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/uz_Arab"
+	// Locale "uz_Cyrl" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/uz_Cyrl"
+	// Locale "vai" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/vai"
+	// Locale "vai_Latn" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/vai_Latn"
+	// Locale "vi" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/vi"
+	// Locale "vun" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/vun"
+	// Locale "wae" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/wae"
+	// Locale "xog" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/xog"
+	// Locale "yav" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/yav"
+	// Locale "yi" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/yi"
+	// Locale "yo" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/yo"
+	// Locale "yo_BJ" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/yo_BJ"
+	// Locale "yue" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/yue"
+	// Locale "zgh" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/zgh"
+	// Locale "zh" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/zh"
+	// Locale "zh_Hans_HK" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/zh_Hans_HK"
+	// Locale "zh_Hans_MO" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/zh_Hans_MO"
+	// Locale "zh_Hans_SG" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/zh_Hans_SG"
+	// Locale "zh_Hant" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/zh_Hant"
+	// Locale "zh_Hant_HK" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/zh_Hant_HK"
+	// Locale "zh_Hant_MO" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/zh_Hant_MO"
+	// Locale "zu" import that automatically registers itslef with the universal-translator package
+	_ "github.com/go-playground/universal-translator/resources/locales/zu"
+)

+ 0 - 41
resources/locales/am/am.go

@@ -1,41 +0,0 @@
-package am
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type am struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'am' locale
-func New() locales.Translator {
-	return &am{
-		locale: "am",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *am) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *am) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	i, err := locales.I(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if (i == 0) || (n == 1) {
-		return locales.PluralRuleOne, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/am/calendar.go


File diff suppressed because it is too large
+ 4 - 0
resources/locales/am/currency.go


+ 18 - 0
resources/locales/am/main.go

@@ -0,0 +1,18 @@
+package am
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "am",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/am/number.go

@@ -0,0 +1,8 @@
+package am
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: ".", Group: ",", Negative: "-", Percent: "%", PerMille: "‰"}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "¤#,##0.00", CurrencyAccounting: "¤#,##0.00;(¤#,##0.00)", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/am/plural.go

@@ -0,0 +1,3 @@
+package am
+
+var pluralRule = "2B"

+ 0 - 41
resources/locales/am_ET/am_ET.go

@@ -1,41 +0,0 @@
-package am_ET
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type am_ET struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'am_ET' locale
-func New() locales.Translator {
-	return &am_ET{
-		locale: "am_ET",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *am_ET) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *am_ET) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	i, err := locales.I(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if (i == 0) || (n == 1) {
-		return locales.PluralRuleOne, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

+ 0 - 44
resources/locales/ar/ar.go

@@ -1,44 +0,0 @@
-package ar
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar' locale
-func New() locales.Translator {
-	return &ar{
-		locale: "ar",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/ar/calendar.go


File diff suppressed because it is too large
+ 4 - 0
resources/locales/ar/currency.go


+ 18 - 0
resources/locales/ar/main.go

@@ -0,0 +1,18 @@
+package ar
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "ar",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/ar/number.go

@@ -0,0 +1,8 @@
+package ar
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: "٫", Group: "٬", Negative: "\u200f-", Percent: "٪", PerMille: "؉"}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "¤\u00a0#,##0.00", CurrencyAccounting: "¤\u00a0#,##0.00", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/ar/plural.go

@@ -0,0 +1,3 @@
+package ar
+
+var pluralRule = "6A"

+ 0 - 44
resources/locales/ar_001/ar_001.go

@@ -1,44 +0,0 @@
-package ar_001
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_001 struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_001' locale
-func New() locales.Translator {
-	return &ar_001{
-		locale: "ar_001",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_001) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_001) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

+ 0 - 44
resources/locales/ar_AE/ar_AE.go

@@ -1,44 +0,0 @@
-package ar_AE
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_AE struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_AE' locale
-func New() locales.Translator {
-	return &ar_AE{
-		locale: "ar_AE",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_AE) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_AE) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/ar_AE/calendar.go


+ 5 - 0
resources/locales/ar_AE/currency.go

@@ -0,0 +1,5 @@
+package ar_AE
+
+import "github.com/go-playground/universal-translator"
+
+var currencies = ut.CurrencyFormatValue{"BND": ut.Currency{Currency: "BND", DisplayName: "دولار بروناي", Symbol: "$"}}

+ 18 - 0
resources/locales/ar_AE/main.go

@@ -0,0 +1,18 @@
+package ar_AE
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "ar_AE",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/ar_AE/number.go

@@ -0,0 +1,8 @@
+package ar_AE
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: "٫", Group: "٬", Negative: "\u200f-", Percent: "٪", PerMille: "؉"}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "¤\u00a0#,##0.00", CurrencyAccounting: "¤\u00a0#,##0.00", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/ar_AE/plural.go

@@ -0,0 +1,3 @@
+package ar_AE
+
+var pluralRule = "1"

+ 0 - 44
resources/locales/ar_BH/ar_BH.go

@@ -1,44 +0,0 @@
-package ar_BH
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_BH struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_BH' locale
-func New() locales.Translator {
-	return &ar_BH{
-		locale: "ar_BH",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_BH) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_BH) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

+ 0 - 44
resources/locales/ar_DJ/ar_DJ.go

@@ -1,44 +0,0 @@
-package ar_DJ
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_DJ struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_DJ' locale
-func New() locales.Translator {
-	return &ar_DJ{
-		locale: "ar_DJ",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_DJ) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_DJ) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/ar_DJ/calendar.go


+ 5 - 0
resources/locales/ar_DJ/currency.go

@@ -0,0 +1,5 @@
+package ar_DJ
+
+import "github.com/go-playground/universal-translator"
+
+var currencies = ut.CurrencyFormatValue{"DJF": ut.Currency{Currency: "DJF", DisplayName: "فرنك جيبوتي", Symbol: "Fdj"}}

+ 18 - 0
resources/locales/ar_DJ/main.go

@@ -0,0 +1,18 @@
+package ar_DJ
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "ar_DJ",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/ar_DJ/number.go

@@ -0,0 +1,8 @@
+package ar_DJ
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: "٫", Group: "٬", Negative: "\u200f-", Percent: "٪", PerMille: "؉"}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "¤\u00a0#,##0.00", CurrencyAccounting: "¤\u00a0#,##0.00", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/ar_DJ/plural.go

@@ -0,0 +1,3 @@
+package ar_DJ
+
+var pluralRule = "1"

+ 0 - 44
resources/locales/ar_DZ/ar_DZ.go

@@ -1,44 +0,0 @@
-package ar_DZ
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_DZ struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_DZ' locale
-func New() locales.Translator {
-	return &ar_DZ{
-		locale: "ar_DZ",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_DZ) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_DZ) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/ar_DZ/calendar.go


+ 5 - 0
resources/locales/ar_DZ/currency.go

@@ -0,0 +1,5 @@
+package ar_DZ
+
+import "github.com/go-playground/universal-translator"
+
+var currencies = ut.CurrencyFormatValue{}

+ 18 - 0
resources/locales/ar_DZ/main.go

@@ -0,0 +1,18 @@
+package ar_DZ
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "ar_DZ",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/ar_DZ/number.go

@@ -0,0 +1,8 @@
+package ar_DZ
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: ",", Group: ".", Negative: "\u200f-", Percent: "٪", PerMille: "؉"}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "¤\u00a0#,##0.00", CurrencyAccounting: "¤\u00a0#,##0.00", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/ar_DZ/plural.go

@@ -0,0 +1,3 @@
+package ar_DZ
+
+var pluralRule = "1"

+ 0 - 44
resources/locales/ar_EG/ar_EG.go

@@ -1,44 +0,0 @@
-package ar_EG
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_EG struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_EG' locale
-func New() locales.Translator {
-	return &ar_EG{
-		locale: "ar_EG",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_EG) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_EG) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

+ 0 - 44
resources/locales/ar_EH/ar_EH.go

@@ -1,44 +0,0 @@
-package ar_EH
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_EH struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_EH' locale
-func New() locales.Translator {
-	return &ar_EH{
-		locale: "ar_EH",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_EH) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_EH) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/ar_EH/calendar.go


+ 5 - 0
resources/locales/ar_EH/currency.go

@@ -0,0 +1,5 @@
+package ar_EH
+
+import "github.com/go-playground/universal-translator"
+
+var currencies = ut.CurrencyFormatValue{}

+ 18 - 0
resources/locales/ar_EH/main.go

@@ -0,0 +1,18 @@
+package ar_EH
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "ar_EH",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/ar_EH/number.go

@@ -0,0 +1,8 @@
+package ar_EH
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: "٫", Group: "٬", Negative: "\u200f-", Percent: "٪", PerMille: "؉"}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "¤\u00a0#,##0.00", CurrencyAccounting: "¤\u00a0#,##0.00", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/ar_EH/plural.go

@@ -0,0 +1,3 @@
+package ar_EH
+
+var pluralRule = "1"

+ 0 - 44
resources/locales/ar_ER/ar_ER.go

@@ -1,44 +0,0 @@
-package ar_ER
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_ER struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_ER' locale
-func New() locales.Translator {
-	return &ar_ER{
-		locale: "ar_ER",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_ER) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_ER) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/ar_ER/calendar.go


+ 5 - 0
resources/locales/ar_ER/currency.go

@@ -0,0 +1,5 @@
+package ar_ER
+
+import "github.com/go-playground/universal-translator"
+
+var currencies = ut.CurrencyFormatValue{"ERN": ut.Currency{Currency: "ERN", DisplayName: "ناكفا أريتري", Symbol: "Nfk"}}

+ 18 - 0
resources/locales/ar_ER/main.go

@@ -0,0 +1,18 @@
+package ar_ER
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "ar_ER",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/ar_ER/number.go

@@ -0,0 +1,8 @@
+package ar_ER
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: "٫", Group: "٬", Negative: "\u200f-", Percent: "٪", PerMille: "؉"}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "¤\u00a0#,##0.00", CurrencyAccounting: "¤\u00a0#,##0.00", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/ar_ER/plural.go

@@ -0,0 +1,3 @@
+package ar_ER
+
+var pluralRule = "1"

+ 0 - 44
resources/locales/ar_IL/ar_IL.go

@@ -1,44 +0,0 @@
-package ar_IL
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_IL struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_IL' locale
-func New() locales.Translator {
-	return &ar_IL{
-		locale: "ar_IL",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_IL) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_IL) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

+ 0 - 44
resources/locales/ar_IQ/ar_IQ.go

@@ -1,44 +0,0 @@
-package ar_IQ
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_IQ struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_IQ' locale
-func New() locales.Translator {
-	return &ar_IQ{
-		locale: "ar_IQ",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_IQ) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_IQ) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

+ 0 - 44
resources/locales/ar_JO/ar_JO.go

@@ -1,44 +0,0 @@
-package ar_JO
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_JO struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_JO' locale
-func New() locales.Translator {
-	return &ar_JO{
-		locale: "ar_JO",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_JO) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_JO) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

+ 0 - 44
resources/locales/ar_KM/ar_KM.go

@@ -1,44 +0,0 @@
-package ar_KM
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_KM struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_KM' locale
-func New() locales.Translator {
-	return &ar_KM{
-		locale: "ar_KM",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_KM) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_KM) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

+ 0 - 44
resources/locales/ar_KW/ar_KW.go

@@ -1,44 +0,0 @@
-package ar_KW
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_KW struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_KW' locale
-func New() locales.Translator {
-	return &ar_KW{
-		locale: "ar_KW",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_KW) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_KW) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

+ 0 - 44
resources/locales/ar_LB/ar_LB.go

@@ -1,44 +0,0 @@
-package ar_LB
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_LB struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_LB' locale
-func New() locales.Translator {
-	return &ar_LB{
-		locale: "ar_LB",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_LB) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_LB) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/ar_LB/calendar.go


+ 5 - 0
resources/locales/ar_LB/currency.go

@@ -0,0 +1,5 @@
+package ar_LB
+
+import "github.com/go-playground/universal-translator"
+
+var currencies = ut.CurrencyFormatValue{"SDG": ut.Currency{Currency: "SDG", DisplayName: "جنيه سوداني", Symbol: "SDG"}}

+ 18 - 0
resources/locales/ar_LB/main.go

@@ -0,0 +1,18 @@
+package ar_LB
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "ar_LB",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/ar_LB/number.go

@@ -0,0 +1,8 @@
+package ar_LB
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: ",", Group: ".", Negative: "\u200f-", Percent: "٪", PerMille: "؉"}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "¤\u00a0#,##0.00", CurrencyAccounting: "¤\u00a0#,##0.00", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/ar_LB/plural.go

@@ -0,0 +1,3 @@
+package ar_LB
+
+var pluralRule = "1"

+ 0 - 44
resources/locales/ar_LY/ar_LY.go

@@ -1,44 +0,0 @@
-package ar_LY
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_LY struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_LY' locale
-func New() locales.Translator {
-	return &ar_LY{
-		locale: "ar_LY",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_LY) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_LY) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/ar_LY/calendar.go


+ 5 - 0
resources/locales/ar_LY/currency.go

@@ -0,0 +1,5 @@
+package ar_LY
+
+import "github.com/go-playground/universal-translator"
+
+var currencies = ut.CurrencyFormatValue{}

+ 18 - 0
resources/locales/ar_LY/main.go

@@ -0,0 +1,18 @@
+package ar_LY
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "ar_LY",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/ar_LY/number.go

@@ -0,0 +1,8 @@
+package ar_LY
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: ",", Group: ".", Negative: "\u200f-", Percent: "٪", PerMille: "؉"}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "¤\u00a0#,##0.00", CurrencyAccounting: "¤\u00a0#,##0.00", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/ar_LY/plural.go

@@ -0,0 +1,3 @@
+package ar_LY
+
+var pluralRule = "1"

+ 0 - 44
resources/locales/ar_MA/ar_MA.go

@@ -1,44 +0,0 @@
-package ar_MA
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_MA struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_MA' locale
-func New() locales.Translator {
-	return &ar_MA{
-		locale: "ar_MA",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_MA) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_MA) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

File diff suppressed because it is too large
+ 4 - 0
resources/locales/ar_MA/calendar.go


+ 5 - 0
resources/locales/ar_MA/currency.go

@@ -0,0 +1,5 @@
+package ar_MA
+
+import "github.com/go-playground/universal-translator"
+
+var currencies = ut.CurrencyFormatValue{}

+ 18 - 0
resources/locales/ar_MA/main.go

@@ -0,0 +1,18 @@
+package ar_MA
+
+import "github.com/go-playground/universal-translator"
+
+var locale = &ut.Locale{
+	Locale: "ar_MA",
+	Number: ut.Number{
+		Symbols:    symbols,
+		Formats:    formats,
+		Currencies: currencies,
+	},
+	Calendar:   calendar,
+	PluralRule: pluralRule,
+}
+
+func init() {
+	ut.RegisterLocale(locale)
+}

+ 8 - 0
resources/locales/ar_MA/number.go

@@ -0,0 +1,8 @@
+package ar_MA
+
+import "github.com/go-playground/universal-translator"
+
+var (
+	symbols = ut.Symbols{Decimal: ",", Group: ".", Negative: "\u200f-", Percent: "٪", PerMille: "؉"}
+	formats = ut.NumberFormats{Decimal: "#,##0.###", Currency: "¤\u00a0#,##0.00", CurrencyAccounting: "¤\u00a0#,##0.00", Percent: "#,##0%"}
+)

+ 3 - 0
resources/locales/ar_MA/plural.go

@@ -0,0 +1,3 @@
+package ar_MA
+
+var pluralRule = "1"

+ 0 - 44
resources/locales/ar_MR/ar_MR.go

@@ -1,44 +0,0 @@
-package ar_MR
-
-import (
-	"github.com/go-playground/universal-translator/resources/locales"
-)
-
-type ar_MR struct {
-	locale string
-}
-
-// New returns a new instance of translator for the 'ar_MR' locale
-func New() locales.Translator {
-	return &ar_MR{
-		locale: "ar_MR",
-	}
-}
-
-// Locale returns the current translators string locale
-func (l *ar_MR) Locale() string {
-	return l.locale
-}
-
-// CardinalPluralRule returns the PluralRule given 'num'
-func (l *ar_MR) CardinalPluralRule(num string) (locales.PluralRule, error) {
-
-	n, err := locales.N(num)
-	if err != nil {
-		return locales.PluralRuleUnknown, &locales.ErrBadNumberValue{NumberValue: num, InnerError: err}
-	}
-
-	if n == 0 {
-		return locales.PluralRuleZero, nil
-	} else if n == 1 {
-		return locales.PluralRuleOne, nil
-	} else if n == 2 {
-		return locales.PluralRuleTwo, nil
-	} else if n%100 >= 3 && n%100 <= 10 {
-		return locales.PluralRuleFew, nil
-	} else if n%100 >= 11 && n%100 <= 99 {
-		return locales.PluralRuleMany, nil
-	}
-
-	return locales.PluralRuleOther, nil
-}

Some files were not shown because too many files changed in this diff