Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/locales.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/generate_resources.go36
-rw-r--r--cmd/locale_map.tmpl34
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