无法在Rails 3.1.1中的初始化文件中使用I18n.t调用

时间:2011-11-04 13:43:39

标签: ruby-on-rails internationalization initialization

我想在Rails 3.1.1中的初始化文件中使用I18n.t。

这个问题已经存在于Rails 2(http://stackoverflow.com/questions/3514536/unable-to-use-i18n-t-call-in-an-initializer-file)。据说,随后的版本回答了这个问题。它似乎是Rails 3.1.1中的一个问题。

问题:

我有一个名为dxl的自定义时间格式。 我想将Email.sent_at datetime格式化为:dxl。

解决方案:

可以将格式添加到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)。

我宁愿不复制en.yml和初始化程序中的strftime格式字符串。

不幸的是,看起来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格式复制/粘贴到初始化程序中,我确实验证了翻译是否正常工作。

感谢。

0 个答案:

没有答案