gpt4 book ai didi

ruby-on-rails - 在 Rails 中使用 I18n.l 和 %p 时,AM/PM 不是大写

转载 作者:行者123 更新时间:2023-12-01 19:50:00 27 4
gpt4 key购买 nike

我遇到了一个我似乎无法解决的问题。我正在尝试使用我在 en.yml 文件中定义的自定义格式来格式化日期:

en:
hello: "Hello world"
time:
formats:
history_table: "%m/%d/%Y %I:%M:%S %p %Z"

这是使用“l”助手调用的:

l version.created_at, :format => :history_table

出于某种原因,这会以小写形式显示 AM/PM,而不是像 %p 那样以大写形式显示。

我在控制台中玩了一下,看起来本地化函数和 strftime 之间的行为有所不同:

ruby-1.9.2-p180 :043 > I18n.l user.updated_at, :format => "%m/%d/%Y %I:%M:%S %p %Z"
=> "03/23/2011 01:52:16 am UTC"
ruby-1.9.2-p180 :044 > user.updated_at.strftime("%m/%d/%Y %I:%M:%S %p %Z")
=> "03/23/2011 01:52:16 AM UTC"

我做错了什么吗?这是一个错误吗?非常感谢任何指导,因为我的额头因撞墙而疼痛。

编辑:这已经解决了(ish)。查看默认的 activesupport 本地化,%p 和 %P 之间没有任何区别。 https://github.com/rails/rails/blob/master/activesupport/lib/active_support/locale/en.yml

我在本地 en.yml 文件中重写了本地化以使用大写。不过,我真的很希望看到 Rails 支持这两种选项。

最佳答案

在源代码中查找积极支持,我在英语本地化下发现了以下内容:

  time:
formats:
default: "%a, %d %b %Y %H:%M:%S %z"
short: "%d %b %H:%M"
long: "%B %d, %Y %H:%M"
am: "am"
pm: "pm"

换句话说,本地化内置的 %P 和 %p 与 strftime 中没有区别。不幸的是,这意味着在单独的自定义格式中,无法在大写和小写表示之间进行选择,但可以通过覆盖您自己的 en.yml 文件中的默认格式来全局定义您想要的格式。例如,这是我更新的 en.yml 文件,现在它会输出大写的 AM/PM。

en:
hello: "Hello world"
time:
formats:
history_table: "%m/%d/%Y %I:%M:%S %p %Z"
am: "AM"
pm: "PM"

关于ruby-on-rails - 在 Rails 中使用 I18n.l 和 %p 时,AM/PM 不是大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5400160/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com