0

所以我使用I18n Indonesia本地化。I18n本地化Activerecord模型值日期strftime在Rails控制檯上

我在config/locales上有一個id.yml。

我想created_at(日期時間)的儲值代碼(串)和月翻譯我的語言環境之前保存..

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. 

我如何可以本地化月份值?

感謝您的幫助!

+0

將所有的日期時間作爲utc存儲在數據庫中 - 然後使用'I18n.localize'來顯示它們以格式化並抵消當地時區 - 即'I18n.l(account.created_at,format::short)'you除了長短之外,還可以添加自己的自定義格式 - 另請參閱http://guides.rubyonrails.org/i18n.html#adding-date-time-formats,並參閱此id.yml語言環境文件 - https:// github。 com/svenfuchs/rails-i18n/blob/master/rails/locale/id.yml – house9 2013-03-19 21:27:49

+0

我不會顯示那個..但I18n本地化Activerecord模型值,我希望'created_at'(datetime)的存儲值爲'code'(字符串)和Month翻譯到我的語言環境'before_save' .. – 2013-03-20 02:18:45

回答

4

按照rails guide日期不應與#translate方法(I18n.t),但與#localize方法(I18n.l)進行本地化。

我還建議您使用包含常用翻譯的例如月份名稱的rails-i18n gem

讓我知道你是否仍然無法找到解決方案。

+0

我試過了,但'對象必須是日期,日期時間或時間對象。 「16March2013' – 2013-03-19 19:23:53

+0

不要做'l(Account.last.created_at.strftime(」%d%B%Y「)。to_s)'而是'l(Account.last.created_at)'。簡單地給一個Date到l方法,不是一個字符串 – pjam 2013-03-19 19:30:59