如何在凤凰城设置一个语言环境,以使用priv/gettext/{lang} /LC_MESSAGES/errors.po?
作为测试,我用它构建了语言环境文件mix gettext.merge priv/gettext --locale ja
,并在其中翻译了一些单词.
它的工作原理,如果我显式调用put_locale/2
的web/views/error_helpers.ex
,并<%= translate_error(message) %>
在模板文件中,但它是一个有点难看,干点.
def translate_error(msg) do Gettext.put_locale(LoginStudy.Gettext, "ja") Gettext.dgettext(LoginStudy.Gettext, "errors", msg) end
有没有更好的方法来设置默认语言环境?我指定了default_locale
in config/config.ex
,但它不起作用.
config :login_study, LoginStudy.Endpoint, default_locale: "ja",
最好的祝福,
很棒的问题@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