Как установить локаль для ошибок.по?
Как установить локаль в Phoenix, чтобы использовать priv / gettext/{lang}/LC_MESSAGES / errors.по?
В качестве теста я построил файл локали с 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
в config/config.ex
, но это не работает.
config :login_study, LoginStudy.Endpoint, default_locale: "ja",
С Наилучшими Пожеланиями,
1 ответ:
Отличные вопросы @hykw! Поскольку поддержка Gettext в Phoenix является новой, документация только сейчас начинает появляться.
Хорошей отправной точкой является этот превосходный пост в блоге Ребекки Скиннер: http://sevenseacat.net/2015/12/20/i18n-in-phoenix-apps.html Например, если вы хотите установить японский язык только для некоторых ваших веб-запросов, вы можете определить плагин, как она сделала сMyApp.Locale
, и запустить его в начале жизненного цикла вашего запроса. Я просто не советую этого делать сохраните языковой стандарт в сеансе, но сохраните его скорее как часть URL-адреса или какого-либо другого параметра.Однако, если вы хотите, чтобы локаль всегда была японской, вы можете записать в свой конфигурационный файл:
config :my_app, MyApp.Gettext, default_locale: "ja"
Вы можете найти дополнительную информацию об этом в документах Gettext: http://hexdocs.pm/gettext/Gettext.html