我能简单地获取已国际化的日期名称吗?

10

我对Rails和Ruby都很陌生。

我只是想获取日期或时间中的星期几或月份的I18n.l,而不需要整个日期或时间。因为我没有它们。

例如,我只是想要国际化处理以下内容

= l Date::DAYNAMES[0]
= l Date::MONTHNAME[0]

可以吗?

3个回答

21

你可以使用以下代码来访问星期几的名称:

I18n.t(:"date.day_names")
#=> ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

并带有月份名称:

I18n.t(:"date.month_names")
#=> [nil, "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

换句话说,Date::DAYNAMES[0] 将被翻译为 I18n.t(:"date.day_names")[0]。 - Kristiyan Tsvetanov

3

我来自巴西。在我的Rails应用程序中,我有一个pt-BR.yml文件,放在config/locales目录下。 该文件内容如下:

"pt-BR":
  date:    
    day_names:
      - Domingo
      - Segunda
      - Terça
      - Quarta
      - Quinta
      - Sexta
      - Sábado

在我的application.rb中,月份名称等都是相同的...
config.i18n.default_locale = 'pt-BR'

那给了我翻译后的名称。阅读I18N指南获取更多信息。


0
据我所知,该信息不是由Rails I18N API直接公开的。可能最简单的方法是在需要的月份或工作日中编写一个日期,将其本地化,然后提取所需的字符串。

我想确实是这样的... 我找到了类似这样的内容,I18n.t "date.abbr_day_names",但我猜我需要先将其转换为数组。 - raulricardo21
如果您已经定义了它们的翻译,那么Date::ABBR_DAYNAMES.map{|s| I18n.t s}可能会起作用... - Mark Reed
@Mark Reed,我确实有定义好的翻译,事实上我发现这个I18n.t(Date::DAYNAMES[@prod.start_day])是因为缺少了“翻译”,然后我只需要在yaml文件中加入就行了。然而,Date :: DAYNAMES.zip((0..6).map{|s| I18n.t s})仅返回英文值。 - Jerome

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接