go get github.com/go-macaron/i18n
// main.go
import (
"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
})
// 在处理器中使用
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>
<!-- templates/hello.tmpl -->
<h2>{{Tr(Lang,"hello %s","world")}}!</h2>
// ...
m.Use(i18n.I18n(i18n.Options{
// 存放本地化文件的目录,默认为 "conf/locale"
Directory: "conf/locale",
// 支持的语言,顺序是有意义的
Langs: []string{"en-US", "zh-CN"},
// 语言的本地化名称
Names: []string{"English", "简体中文"},
// 本地化文件命名风格,默认为 "locale_%s.ini"
Format: "locale_%s.ini",
// 指示当前语言的 URL 参数名,默认为 "lang"
Parameter: "lang",
// 当通过 URL 参数指定语言时是否重定向,默认为 false
Redirect: false,
// 存放在模板中的本地化对象变量名称,默认为 "i18n"
TmplName: "i18n",
}))
// ...
conf/
|
|__ locale/
|
|__ locale_en-US.ini
|
|__ locale_zh-CN.ini