Middleware i18n provides app Internationalization and Localization for Macaron Instances.
GitHub
go get github.com/go-macaron/i18n
// main.goimport ("github.com/go-macaron/i18n""gopkg.in/macaron.v1")func main() {m := macaron.Classic()m.Use(i18n.I18n(i18n.Options{Langs: []string{"en-US", "zh-CN"},Names: []string{"English", "简体中文"},}))m.Get("/", func(locale i18n.Locale) string {return "current language is" + locale.Lang})// Use in handler.m.Get("/trans", func(ctx *macaron.Context) string {return ctx.Tr("hello %s", "world")})m.Run()}
<!-- templates/hello.tmpl --><h2>{{.i18n.Tr "hello %s" "world"}}!</h2>
To use i18n feature in pongo2 with middleware pongo2:
<!-- templates/hello.tmpl --><h2>{{Tr(Lang,"hello %s","world")}}!</h2>
i18n.I18n
comes with a variety of configuration options(i18n.Options
):
// ...m.Use(i18n.I18n(i18n.Options{// Directory to load locale files. Default is "conf/locale".Directory: "conf/locale",// Languages that will be supported, order is meaningful.Langs: []string{"en-US", "zh-CN"},// Human friendly names corresponding to Langs list.Names: []string{"English", "简体中文"},// Locale file naming style. Default is "locale_%s.ini".Format: "locale_%s.ini",// Name of language parameter name in URL. Default is "lang".Parameter: "lang",// Redirect when user uses get parameter to specify language. Default is false.Redirect: false,// Name that maps into template variable. Default is "i18n".TmplName: "i18n",}))// ...
By default, locale files should be put in conf/locale
:
conf/||__ locale/||__ locale_en-US.ini||__ locale_zh-CN.ini
See unknwon/i18n for specification of translation.
See Peach Docs as a study example.