Я хотел бы использовать 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 в инициализатор.
Спасибо.