我的环境:rails=>3.0.6,ruby=>1.9.2我把我的地区设置为意大利。事实上,在控制台内
I18n.locale#=>:it
我的区域设置文件工作正常,但我无法正确显示日期。对于前任在我的控制台
当前日期=>2011年6月5日,周日
而不是
05 Giugno 2011
但如果我尝试其他方法,它会返回正确的翻译输出
helper.number_to_currency(30)#=>"30.00€"
区域设置问题仅与日期有关。为什么?
Date.current => Sun, 05 Jun 2011
不会通过localizer
运行您的代码,您应该使用
I18n.localize(Date.current)
I18n.l(Date.current)
Rails中还有一些helper方法,它们将尊重区域设置,但仅(通常)在视图中可用,此处提供了这些生命的文档:http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html
以下是Rails3.0.7应用程序中IRB会话的简短摘录(我没有其他可用的语言环境)
ruby-1.9.2-p180 :001 > Date.current
=> Sun, 05 Jun 2011
ruby-1.9.2-p180 :002 > I18n.locale
=> :en
ruby-1.9.2-p180 :003 > I18n.l(Date.current)
=> "2011-06-05"
ruby-1.9.2-p180 :004 > I18n.locale = :ru
=> :ru
ruby-1.9.2-p180 :005 > I18n.l(Date.current)
=> I18n::MissingTranslationData: translation missing: ru.date.formats.default
尝试
I18n.localize(Date.today)
或者在视图中只有
l(Date.today)
来源:http://guides.rubyonrails.org/i18n.html#adding-日期-时间格式