2015-12-30 148 views
5

如何在Phoenix中设置语言环境,以便使用priv/gettext/{lang} /LC_MESSAGES/errors.po?如何设置error.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 

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

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

最好的问候,

回答

5

大问题@hykw!由于Phoenix中的Gettext支持是新的,文档现在刚刚开始出现。

一个很好的出发点就是这个优秀的博客文章由丽贝卡·斯金纳: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

+0

何塞

但是,如果你想要的语言环境总是是日本,您可以在配置文件中写,感谢您的网址和配置!它完美的工作! – hykw

相关问题