如何为 errors.po 设置语言环境?
How to set locale for errors.po?
如何在 Phoenix 中设置语言环境,以便使用 priv/gettext/{lang}/LC_MESSAGES/errors.po?
作为测试,我用 mix gettext.merge priv/gettext --locale ja
构建了语言环境文件,并翻译了其中的一些单词。
如果我在模板文件中显式调用 web/views/error_helpers.ex
中的 put_locale/2
和 <%= translate_error(message) %>
,它会起作用,但它有点难看,有点干。
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",
此致,
很好的问题@hykw!由于 Phoenix 中的 Gettext 支持是新的,文档才刚刚开始出现。
丽贝卡·斯金纳 (Rebecca Skinner) 的这篇优秀博客 post 是一个很好的起点: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
如何在 Phoenix 中设置语言环境,以便使用 priv/gettext/{lang}/LC_MESSAGES/errors.po?
作为测试,我用 mix gettext.merge priv/gettext --locale ja
构建了语言环境文件,并翻译了其中的一些单词。
如果我在模板文件中显式调用 web/views/error_helpers.ex
中的 put_locale/2
和 <%= translate_error(message) %>
,它会起作用,但它有点难看,有点干。
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",
此致,
很好的问题@hykw!由于 Phoenix 中的 Gettext 支持是新的,文档才刚刚开始出现。
丽贝卡·斯金纳 (Rebecca Skinner) 的这篇优秀博客 post 是一个很好的起点: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