如何为errors.po设置语言环境?

时间:2015-12-30 22:55:05

标签: phoenix-framework

如何在凤凰城设置语言环境,以使用priv / gettext / {lang} /LC_MESSAGES/errors.po?

作为测试,我使用mix gettext.merge priv/gettext --locale ja构建了语言环境文件,并在其中翻译了一些单词。

如果我在模板文件中明确地调用了put_locale/2web/views/error_helpers.ex中的<%= translate_error(message) %>,那就有效了,但是在DRY中它有点难看。

def translate_error(msg) do
   Gettext.put_locale(LoginStudy.Gettext, "ja")
   Gettext.dgettext(LoginStudy.Gettext, "errors", msg)
end

有没有更好的方法来设置默认语言环境?我在default_locale中指定了config/config.ex,但它无效。

config :login_study, LoginStudy.Endpoint, default_locale: "ja",

最诚挚的问候,

1 个答案:

答案 0 :(得分:5)

很棒的问题@hykw!由于凤凰城的Gettext支持是新的,文档现在才开始出现。

一个很好的起点是Rebecca Skinner撰写的优秀博客文章:http://sevenseacat.net/2015/12/20/i18n-in-phoenix-apps.html

例如,如果您只想为某些Web请求将语言环境设置为日语,则可以像使用MyApp.Locale一样定义插件,并在请求生命周期的开始时运行它。我只是不建议将语言环境存储在会话中,而是将其保留为URL或其他参数的一部分。

但是,如果您希望始终的区域设置为日语,则可以在配置文件中写入:

config :my_app, MyApp.Gettext, default_locale: "ja"

您可以在Gettext文档中找到有关此内容的更多信息:http://hexdocs.pm/gettext/Gettext.html