本地化您的应用

中间件 i18n 为 Macaron 实例 提供了国际化和本地化应用的功能。

下载安装

  1. go get github.com/go-macaron/i18n

使用示例

  1. // main.go
  2. import (
  3. "github.com/go-macaron/i18n"
  4. "gopkg.in/macaron.v1"
  5. )
  6. func main() {
  7. m := macaron.Classic()
  8. m.Use(i18n.I18n(i18n.Options{
  9. Langs: []string{"en-US", "zh-CN"},
  10. Names: []string{"English", "简体中文"},
  11. }))
  12. m.Get("/", func(locale i18n.Locale) string {
  13. return "current language is" + locale.Lang
  14. })
  15. // 在处理器中使用
  16. m.Get("/trans", func(ctx *macaron.Context) string {
  17. return ctx.Tr("hello %s", "world")
  18. })
  19. m.Run()
  20. }
  1. <!-- templates/hello.tmpl -->
  2. <h2>{{i18n.Tr "hello %s" "world"}}!</h2>

Pongo2 模板引擎

pongo2 模板引擎中使用 i18n 中间件:

  1. <!-- templates/hello.tmpl -->
  2. <h2>{{Tr(Lang,"hello %s","world")}}!</h2>

自定义选项

该服务允许接受一个参数来进行自定义选项(i18n.Options):

  1. // ...
  2. m.Use(i18n.I18n(i18n.Options{
  3. // 存放本地化文件的目录,默认为 "conf/locale"
  4. Directory: "conf/locale",
  5. // 支持的语言,顺序是有意义的
  6. Langs: []string{"en-US", "zh-CN"},
  7. // 语言的本地化名称
  8. Names: []string{"English", "简体中文"},
  9. // 本地化文件命名风格,默认为 "locale_%s.ini"
  10. Format: "locale_%s.ini",
  11. // 指示当前语言的 URL 参数名,默认为 "lang"
  12. Parameter: "lang",
  13. // 当通过 URL 参数指定语言时是否重定向,默认为 false
  14. Redirect: false,
  15. // 存放在模板中的本地化对象变量名称,默认为 "i18n"
  16. TmplName: "i18n",
  17. }))
  18. // ...

加载本地化文件

默认情况下,本地化文件应当存放在相对当前目录的 conf/locale 文件夹下:

  1. conf/
  2. |
  3. |__ locale/
  4. |
  5. |__ locale_en-US.ini
  6. |
  7. |__ locale_zh-CN.ini

其它说明

  • 请查看 Unknwon/i18n 包来了解本地化使用规范。
  • 您可以将 Peach 作为学习案例。