github.com/l3x/learn-fp-go@v0.0.0-20171228022418-7639825d0b71/4-purely-functional/ch10-monads/04_i18n/main.go (about) 1 package main 2 3 import ( 4 "os" 5 "text/template" 6 "github.com/nicksnyder/go-i18n/i18n" 7 "fmt" 8 ) 9 10 var funcMap = map[string]interface{}{ 11 "T": i18n.IdentityTfunc, 12 } 13 14 var tmplIllegalBase64Data = template.Must(template.New("").Funcs(funcMap).Parse(` 15 {{T "illegal_base64_data" .}} 16 `)) 17 var tmplUnexpectedEndOfJson= template.Must(template.New("").Funcs(funcMap).Parse(` 18 {{T "unexpected_end_of_json_input"}} 19 `)) 20 var tmplJsonUnsupportedValue = template.Must(template.New("").Funcs(funcMap).Parse(` 21 {{T "json_unsupported_value" .}} 22 `)) 23 24 func illegalBase64(T i18n.TranslateFunc, bytePos string) { 25 tmplIllegalBase64Data.Execute(os.Stdout, map[string]interface{}{ 26 "BytePos": bytePos, 27 }) 28 } 29 func unexpectedEndOfJson(T i18n.TranslateFunc) { 30 tmplUnexpectedEndOfJson.Execute(os.Stdout, map[string]interface{}{ 31 }) 32 } 33 func jsonUnsupportedValue(T i18n.TranslateFunc, bytePos string) { 34 tmplJsonUnsupportedValue.Execute(os.Stdout, map[string]interface{}{ 35 "Val": bytePos, 36 }) 37 } 38 39 func main() { 40 i18n.MustLoadTranslationFile("en-us.all.json") 41 i18n.MustLoadTranslationFile("de-de.all.json") 42 43 for _, locale := range []string{"en-US", "de-DE"} { 44 fmt.Println("\nERROR MESSAGES FOR", locale) 45 T, _ := i18n.Tfunc(locale) 46 tmplIllegalBase64Data.Funcs(map[string]interface{}{ 47 "T": T, 48 }) 49 tmplUnexpectedEndOfJson.Funcs(map[string]interface{}{ 50 "T": T, 51 }) 52 tmplJsonUnsupportedValue.Funcs(map[string]interface{}{ 53 "T": T, 54 }) 55 56 illegalBase64(T, "136") 57 unexpectedEndOfJson(T) 58 jsonUnsupportedValue(T, "+Inf") 59 } 60 }