Rails:如何让 Date strftime 知道默认的语言环境?
Posted
技术标签:
【中文标题】Rails:如何让 Date strftime 知道默认的语言环境?【英文标题】:Rails: How to make Date strftime aware of the default locale? 【发布时间】:2011-06-03 07:06:46 【问题描述】:我在environment.rb
中将默认语言环境设置为de
(德语)。
我还看到了德语的所有错误消息,因此服务器选择了区域设置。但是当我尝试使用strftime
打印日期时,如下所示:
some_date.strftime('%B, %y')
它以英语 (January, 11
) 打印,而不是预期的德语 (Januar, 11
)。
如何根据默认语言环境打印日期?
【问题讨论】:
【参考方案1】:使用l
(localize
的别名)方法代替原始 strftime,如下所示:
l(date, format: '%B %d, in the year %Y')
更多信息请查看here,希望对您有所帮助。
您还可以定义“命名”格式,其中一些(short
、long
)已经预定义。
【讨论】:
如何使用 localize 以格式打印日期?它是否接受任何格式字符串,如 '%B, %y' ? 我想通了:I18n.localize(some_date, :format => '%B, %y' 谢谢 您需要确保已安装此 gem:github.com/svenfuchs/rails-i18n 这样您就可以拥有不同的语言环境并调用他们的format: short
或您想引用的任何内容。在此处查看参考示例:github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml
或者,一旦你安装了我上面提到的那个 gem,你就可以做这样的事情......l @item.created_at, :format => "%b %e, %Y", :locale => 'en'
【参考方案2】:
你也可以缩短:
l(some_date, :format => '%d %B %Y')
【讨论】:
【参考方案3】:在 es.yml 中放入:
es:
date:
formats:
default: "%d / %m / %Y"
在 index.html.erb 中放:
<%= l somemodel.datefield %>
【讨论】:
实际上应该是time
而不是date
?这取决于我相信传递的对象的类。以上是关于Rails:如何让 Date strftime 知道默认的语言环境?的主要内容,如果未能解决你的问题,请参考以下文章
PHP:strftime()、date() 或 DateTime,哪个更好?
在 nil 对象上使用 strftime - 如何防止错误?