i18n 简介
i18n 通常有两种方式,一种是前端翻译,一种是后端渲染前翻译,前端翻译的代表是Google Translate和LocalizeJS,后端一般是由各个框架提供,在模板层面替换指定字符串至指定语言。
Gettext 简介
Gettext是Phoenix默认的i18n功能套件,功能十分强大。
我们可以在Phoenix的config.exs中定义默认locale
config :my_app, MyApp.Gettext, default_locale: "zh"
Gettext最主要的命令有两个:
mix gettext.extract
mix gettext.merge priv/gettext
其中 extract 命令会提取所有文件中的 gettext("msgid") 生成模板
merge 命令会根据模板生成对应语言的翻译列表。然后我们修改生成的 .po 文件中的 msgstr 即可。
mix gettext.merge priv/gettext --locale zh
Created directory priv/gettext/zh/LC_MESSAGES
Wrote priv/gettext/zh/LC_MESSAGES/errors.po
Wrote priv/gettext/zh/LC_MESSAGES/coherence.po
[1] http://sevenseacat.net/2015/12/20/i18n-in-phoenix-apps.html
[2] http://blog.plataformatec.com.br/2016/03/using-gettext-to-internationalize-a-phoenix-application/
[3] https://hexdocs.pm/gettext/Gettext.html
[4] http://code.parent.co/practical-i18n-with-phoenix-and-elixir/