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

pzi*_*zin 4 datetime ruby-on-rails internationalization

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

= l(a.created_at, :format => :short)
Run Code Online (Sandbox Code Playgroud)

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

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

mri*_*nck 10

来自德国de.yml语言环境的片段:

de:
  date:
    abbr_month_names:
    - 
    - Jan
    - Feb
    - Mär
Run Code Online (Sandbox Code Playgroud)

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

I18n.t :abbr_month_names, :scope => :date // returns ['', 'Jan', 'Feb', 'Mär']
Run Code Online (Sandbox Code Playgroud)

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

(I18n.t :abbr_month_names, :scope => :date)[Time.now.month]
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

  • 刚刚找到一种方法。如果我这样做`l(a.created_at,:format =>'%b')`则效果很好!无论如何,看到这比知识更幸运,如果有人可以确认这是做到这一点的最佳方法……? (3认同)