Как установить локаль для ошибок.по?


Как установить локаль в 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 5

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