Невозможно использовать вызов I18n.t в файле инициализатора в Rails 3.1.1. - PullRequest
1 голос
/ 04 ноября 2011

Я хотел бы использовать I18n.t в файле инициализатора в Rails 3.1.1.

Этот вопрос уже существует для Rails 2 (/2559692/nevozmozhno-ispolzovat-vyzov-i18n-t-v-faile-initsializatora). Предположительно, на него был дан ответ в последующем выпуске. Похоже, это снова проблема в Rails 3.1.1.

Проблема:

У меня есть пользовательский формат времени, который называется: dxl. Я хотел бы отформатировать дату и время в Email.sent_at как: dxl.

Решение:

In может добавить формат в en.yml (time.formats.dxl) и использовать его с:

I18n.localize(email.sent_at, :format => :dxl)

Я также хочу показать точное время. Я не вижу способа использовать I18n для этого, поэтому я использую:

email.sent_at.utc.to_s(:dxl)

руб:

Для поддержки to_s(format), мне кажется, мне нужно назначить Time::DATE_FORMATS[:dxl] в инициализаторе (например, config / initializers / time_formats.rb).

Я бы предпочел не дублировать строку формата strftime в en.yml и инициализаторе.

К сожалению, похоже, что I18n не может использоваться в инициализаторе. Когда я добавляю это в config / initializers / time_formats.rb:

Time::DATE_FORMATS[:dxl] = I18n.translate('time.formats.dxl')

Я получаю:

> Time.now.utc.to_s(:dxl)
=> "translation missing: en.time.formats.dxl"

Есть ли способ убедиться, что I18n готов (прочитал файл en.yml) в инициализаторе?

Я проверил, что перевод работает правильно, если я скопировал / вставил формат strftime в инициализатор.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...