【问题标题】:How do I format my created_at output correctly with I18n?如何使用 I18n 正确格式化 created_at 输出?
【发布时间】:2013-04-23 02:47:02
【问题描述】:

我正在使用this I18n file

在我看来,我是这样称呼它的:

<td class="center"><%= l o.created_at %></td>

输出如下:

Mon, 22 May 2013 04:04:43 +0000

对于初学者,为什么显示May 22, 2013 而不是April 22

当我在控制台中执行此操作时,我得到了:

> o.created_at
 => Mon, 22 Apr 2013 04:04:43 UTC +00:00 

我不希望它显示时间,或者宁愿只说以下内容:

Monday, April 22, 2013 @ 4:04am

我该怎么做?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 internationalization rails-i18n


    【解决方案1】:

    您可以将自定义日期/时间格式添加到您的翻译文件中。要查看可能的基于时间的替换,请参阅strfime 的参考

    formats:
      default: ! '%Y-%m-%d'
      long: ! '%B %d, %Y'
      short: ! '%b %d'
      custom: ! '%A, %M %B, %Y @ %l:%M%P'
    

    在您看来,您可以按如下方式使用:

    <%= l o.created_at, :format => :custom %>
    

    您可能需要删除 en.yml 文件中的空白条目以更正翻译错误。

    【讨论】:

    • 当我使用它时,我得到这个错误:: #&lt;Psych::SyntaxError: (myapp/config/locales/en.yml): found character that cannot start any token while scanning for the next token at line 39 column 1&gt; 其中line 39custom 行。想法?
    • 这意味着 Psych(Rails 应用程序正在使用的 yaml 解析器)无法解析从 yaml 文件第 39 行开始的令牌。这经常发生在输入拼写错误或从网络复制粘贴代码时。没有看到你的 yaml 文件,我无法判断。
    • 我无法重现该错误,但我注意到您的缩进已关闭,您可能需要将“自定义”位添加到 time 格式。你使用的是什么版本的 Rails/Ruby/Psych?
    • 我正在使用 Rails 3.2.12/Ruby 1.9.3/不知道 Psych。
    • 在控制台尝试Psych::VERSION
    猜你喜欢
    • 2020-06-14
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多