I18n локализовать Activerecord Значение модели Дата strftime В консоли Rails

Поэтому я использую локализацию I18n для Индонезии.

У меня есть id.yml в config/locales.

Я хочу сохранить значение created_at (datetime) для кода (строка) и перевести месяц на мой язык перед сохранением.

self.code = account.created_at.strftime("%d%B%Y").to_s

Я пытаюсь убедиться, что перевод работает в консоли Rails.

Итак, я попытался:

irb(main):003:0> account = Account.last.created_at
   ←[1m←[36mAccount Load (35.0ms)←[0m  ←[1mSELECT "public"."accounts".* FROM "pub
lic"."accounts" ORDER BY "public"."accounts"."id" DESC LIMIT 1←[0m
=> Sat, 16 Mar 2013 10:07:37 UTC +00:00
irb(main):004:0> account.strftime("%d%B%Y").to_s
=> "16March2013"
irb(main):007:0> I18n.default_locale
=> :id
irb(main):008:0> I18n.t account.strftime("%d%B%Y").to_s
=> "translation missing: id.16March2013"
irb(main):006:0> I18n.l account.strftime("%d%B%Y").to_s
#<Class:0x6fc52c8>: Object must be a Date, DateTime or Time object. "16March2013
" given.

Как я могу локализовать значение месяца?

Спасибо за вашу помощь!


person rails_id    schedule 19.03.2013    source источник
comment
сохраните все свои даты и время в базе данных как utc - затем отобразите их, используя I18n.localize для форматирования и смещения по местному часовому поясу - т.е. I18n.l(account.created_at, format: :short) вы можете добавить свои собственные пользовательские форматы помимо длинного и короткого - см. также guides.rubyonrails.org/i18n.html#adding-date-time-formats и см. также этот файл локалей id.yml — github.com/svenfuchs /rails-i18n/blob/master/rails/locale/id.yml   -  person house9    schedule 20.03.2013
comment
я не буду отображать это .. но I18n локализует значение модели Activerecord, я хочу сохранить значение created_at (дата-время) в code (строка) и перевод месяца на мой язык before_save ..   -  person rails_id    schedule 20.03.2013


Ответы (1)


Согласно руководству по рельсам, дата не должна быть локализована с помощью #translate метод (I18n.t), но с методом #localize (I18n.l).

Я также рекомендую вам использовать гем rails-i18n, который содержит общие переводы, такие как, например, названия месяцев. .

Дайте мне знать, если вам все еще не удается найти решение.

person pjam    schedule 19.03.2013
comment
я пытался, но Object must be a Date, DateTime or Time object. "16March2013 - person rails_id; 19.03.2013
comment
Делайте не l(Account.last.created_at.strftime("%d%B%Y").to_s), а l(Account.last.created_at). Проще говоря, дайте Date методу l, а не строку - person pjam; 19.03.2013