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  }