【问题标题】:Rails: How to make Date strftime aware of the default locale?Rails:如何让 Date strftime 知道默认的语言环境?
【发布时间】:2011-06-03 07:06:46
【问题描述】:

我在environment.rb 中将默认语言环境设置为de(德语)。

我还看到了德语的所有错误消息,因此服务器选择了区域设置。但是当我尝试使用strftime 打印日期时,如下所示:

some_date.strftime('%B, %y')

它以英语 (January, 11) 打印,而不是预期的德语 (Januar, 11)。

如何根据默认语言环境打印日期?

【问题讨论】:

    标签: ruby-on-rails ruby localization rails-i18n strftime


    【解决方案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?这取决于我相信传递的对象的类。
      猜你喜欢
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 2017-03-20
      • 2017-07-17
      • 2011-10-29
      • 2016-09-07
      相关资源
      最近更新 更多