使用abbr_month_names(和similars)和I18n.l()

时间:2012-10-08 18:17:37

标签: ruby-on-rails datetime internationalization

我正在转向铁轨,有时候有点奇怪。安装es.yml文件后,我试图输出我的数据库的DATETIME列。如果我这样做:

= l(a.created_at, :format => :short)

没关系。它以西班牙语格式打印出一个漂亮的日期。但我对以这种方式使用 abbr_month_names 感到困惑。我已经尝试了很多不同的方式 - 相信我,我在这个问题上大约需要四个小时 - 但是我没有办法在短篇小说中输出月份名称“OCT。

我看了很多关于i18n和日期格式的网站,但文章总是以:format =>结尾。 :简短示例,并不关心其他显示日期的方法(好吧,有人还解释了如何使用:长格式...)

3 个答案:

答案 0 :(得分:10)

德语de.yml区域设置的摘录:

de:
  date:
    abbr_month_names:
    - 
    - Jan
    - Feb
    - Mär

您可以通过Rails的translate函数直接访问语言环境:

I18n.t :abbr_month_names, :scope => :date // returns ['', 'Jan', 'Feb', 'Mär']

因为abbr_month_names由多个条目组成(以连字符开头),所以它将返回一个数组。例如,您可以通过以下方式获取当前缩写的月份:

(I18n.t :abbr_month_names, :scope => :date)[Time.now.month]

答案 1 :(得分:5)

您可以使用a.created_at.strftime('%b')此链接显示所有可能的日期时间部分:

http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime

答案 2 :(得分:0)

在您的YAML文件中输入:

es:
  time:
    formats:
      abbr_month: "%b"

然后在您的视图中,您应该可以使用此功能:

= l(a.created_at, :format => :abbr_month)

从这里采取:http://guides.rubyonrails.org/i18n.html#adding-date-time-formats