diff options
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/generate_resources.go | 36 | ||||
-rw-r--r-- | cmd/locale_map.tmpl | 34 |
2 files changed, 70 insertions, 0 deletions
diff --git a/cmd/generate_resources.go b/cmd/generate_resources.go index 46bb537f..1f7ab48c 100644 --- a/cmd/generate_resources.go +++ b/cmd/generate_resources.go @@ -216,8 +216,13 @@ func main() { log.Panic(err) } + var locMap string + for _, trans := range translators { + locMap += `"` + trans.Locale + `" : ` + trans.Locale + `.New, +` + fmt.Println("Writing Data:", trans.Locale) if err = os.MkdirAll(fmt.Sprintf(locDir, trans.Locale), 0777); err != nil { @@ -250,6 +255,37 @@ func main() { log.Panic(err) } } + + fmt.Println("Writing final locale map") + + if err = os.MkdirAll(fmt.Sprintf(locDir, "locales-list"), 0777); err != nil { + log.Fatal(err) + } + + filename = fmt.Sprintf(locFilename, "locales-list", "locales") + + output, err = os.Create(filename) + if err != nil { + log.Fatal(err) + } + defer output.Close() + + if err := tmpl.ExecuteTemplate(output, "localeslist", locMap); err != nil { + log.Fatal(err) + } + + output.Close() + + // after file written run gofmt on file to ensure best formatting + cmd = exec.Command("goimports", "-w", filename) + if err = cmd.Run(); err != nil { + log.Panic(err) + } + + cmd = exec.Command("gofmt", "-s", "-w", filename) + if err = cmd.Run(); err != nil { + log.Panic(err) + } } func postProcess(cldr *cldr.CLDR) { diff --git a/cmd/locale_map.tmpl b/cmd/locale_map.tmpl new file mode 100644 index 00000000..d3e0db56 --- /dev/null +++ b/cmd/locale_map.tmpl @@ -0,0 +1,34 @@ +{{ define "localeslist" }} +package localeslist + +import ( + "sync" +) + +// LocaleFunc is the function to run in order to create +// a new instance of a given locale +type LocaleFunc func() locales.Translator + +// LocaleMap is map of locale string to instance function +type LocaleMap map[string]LocaleFunc + + +var ( + once sync.Once + localeMap LocaleMap +) + +func init() { + once.Do(func(){ + localeMap = map[string]LocaleFunc{ + {{ . }} + } + }) +} + +// Map returns the map of locales to instance New function +func Map() LocaleMap { + return localeMap +} + +{{ end }}
\ No newline at end of file |