Разве я не могу просто получить название дня I18n-ed?

Я новичок в рельсах и в рубине.

Я просто хочу получить I18n.l имени дня или названия месяца без полной даты или времени. Потому что у меня его нет.

Например, я просто хочу интернационализировать, например

= l Date::DAYNAMES[0]

or

= l Date::MONTHNAME[0]

Является ли это возможным?


person raulricardo21    schedule 11.10.2013    source источник


Ответы (3)


Вы можете получить доступ к названиям дней с помощью:

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"]
person Stefan    schedule 11.10.2013
comment
Или, другими словами, Date::DAYNAMES[0] будет преобразовано в I18n.t(:date.day_names)[0] - person Kristiyan Tsvetanov; 08.08.2016

Я из Бразилии. В моих приложениях 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.

person Felipe Regis Fernandes    schedule 11.10.2013

AFAICT, эта информация не предоставляется напрямую API Rails I18N. Вероятно, проще всего составить дату в нужном месяце или буднем дне, локализовать ее и извлечь нужную строку.

person Mark Reed    schedule 11.10.2013
comment
Боюсь, что так... Я нахожу что-то вроде этого, I18n.t date.abbr_day_names, но, думаю, мне нужно сначала превратиться в массив - person raulricardo21; 12.10.2013
comment
Date::ABBR_DAYNAMES.map{|s| I18n.t s} может работать, если вы определили для них перевод... - person Mark Reed; 12.10.2013
comment
@Mark Reed, у меня есть определенные переводы, на самом деле я наткнулся на этот I18n.t(Date::DAYNAMES[@prod.start_day]), потому что он дал мне отсутствующий перевод для элемента, и мне просто нужно было добавить файл yaml. Однако Date::DAYNAMES.zip((0..6).map{|s| I18n.ts} возвращает только значения EN - person Jerome; 27.03.2014