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】:

使用llocalize 的别名)方法代替原始 strftime,如下所示:

l(date, format: '%B %d, in the year %Y')

更多信息请查看here,希望对您有所帮助。

您还可以定义“命名”格式,其中一些(shortlong)已经预定义。

【讨论】:

如何使用 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,哪个更好?

datetime和date如何转json

在 nil 对象上使用 strftime - 如何防止错误?

Rails:在时区获取#beginning_of_day

如何从Rails中的date_select或select_date获取日期?

如何最好地使用批量数据json在rails中渲染?