String.to_datetime doesn't translate the monthname

453 views
Skip to first unread message

Jeroen van Ingen

unread,
Jan 4, 2012, 5:45:14 AM1/4/12
to rails...@googlegroups.com
For example I have this translation file:
https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/it.yml
And I've set:
I18n.locale = :it

This works fine:
I18n.localize Time.now -> "Mer 04 Gen 2012, 11:26:17 +0100"
"02 Novembre 2012".to_datetime => Fri, 02 Nov 2012 00:00:00 +0000

But this gives an invalid date:
"02 Gennaio 2012".to_datetime

Date::MONTHNAMES returns:
[nil, "January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"]

The fastest way to solve this problem is to add the months to the YAML
file and translate them into English months. Like this:
Gennaio: January
etc....
Then I do:
"02 #{I18n.t(Gennaio)} 2012".to_datetime => Mon, 02 Jan 2012 00:00:00
+0000

But I was wondering if there is a more cleaner way so I can get it to
work like this:
"02 Gennaio 2012".to_datetime

--
Posted via http://www.ruby-forum.com/.

Christopher Dell

unread,
Jan 4, 2012, 5:52:20 AM1/4/12
to rails-i18n
The question is "how to get a DateTime object from an Italian date
string"?

Jeroen van Ingen

unread,
Jan 4, 2012, 6:12:07 AM1/4/12
to rails...@googlegroups.com
Yup, that's right

But even better: how to get a DateTime object from a date string where
the language is other then English?

hel...@lingohub.com

unread,
Sep 12, 2013, 8:55:32 AM9/12/13
to rails...@googlegroups.com
Basically you are looking for something like Chronic (https://github.com/mojombo/chronic), but for Italien not English?

As far as I know Chronic only supports English, but if you are interested we could work on making it available to multiple languages. I think many Ruby devs would need something similar.
Reply all
Reply to author
Forward
0 new messages