Rails i18n.default_locale和日期格式......似乎不像默认行为

时间:2012-03-13 18:14:43

标签: ruby-on-rails-3 datetime date internationalization

除非我另有说法,否则我希望Rails(3.2)使用美国日期格式03/14/2012。

我安装了I18n gem,下载(并修改了)config/locales/en-US.yml文件,使其默认格式为default: ! '%m/%d/%Y',将我的application.rb默认语言环境设置为config.i18n.default_locale = "en-US",并重新启动。

当显示日期时(例如简单视图),它们的格式仍为2012-03-14。如果我使用I18n.l方法,日期会根据需要显示,03/14/2012。因此本地化正在通过I18n课程。

我想我期待“默认”的含义是,“如果你没有被告知要进行本地化或翻译,那就是使用它。”显然我错了: - )

因此,进一步挖掘显示我可以在初始化程序中更改日期和时间的默认值,例如config/initializers/date_formats.rb,例如

Date::DATE_FORMATS[:default]="%m/%d/%Y"
Time::DATE_FORMATS[:default]="%m/%d/%Y %H:%M"

这似乎做我想要的。几个警告帖子表明,这将搞砸数据库中日期的存储方式,但我的测试(使用PostgreSQL)表明这不是问题。

所以(咆哮)为什么所有应用程序都不应该观察默认的语言环境而不用lt帮助器包裹地球表面上的每个日期?

并且(实际问题)我会通过在初始化程序中更改我的应用程序的默认日期和时间格式来对我或他人造成永久性伤害吗?

1 个答案:

答案 0 :(得分:2)

我有同样的问题,这个宝石帮助了我https://github.com/jeremyevans/ruby-american_date

只需将其添加到您的Gemfile中,无需任何设置