Localizing Dates and Times in Rails 2.2
- October 8th, 2008
- Posted in Ruby on Rails . Tips
- Write comment
Here is the next installment of a series of guides I’m writing for internationalizing a Rails 2.2 application. Please read the first part, Translating ActiveRecord, if you haven’t already. This time I’m going to talk about how to localize dates and times to a specific language.
First a small recap in how to load locales. Add this to a new initializer:
I18n.load_path += Dir.glob("#{RAILS_ROOT}/app/locales/**/*.yml")
This has been changed at a very late moment. I18n.store_translations and I18n.load_translations have been removed.
After that, you need to create a place to store your locales. Make the directory app/locales/nl-NL/ and place your yaml files in there. Here is the English version of the locale-file:
en-US:
date:
formats:
# Use the strftime parameters for formats.
# When no format has been given, it uses default.
# You can provide other formats here if you like!
default: "%Y-%m-%d"
short: "%b %d"
long: "%B %d, %Y"
day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
# Don't forget the nil at the beginning; there's no such thing as a 0th month
month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
# Used in date_select and datime_select.
order: [ :year, :month, :day ]
time:
formats:
default: "%a, %d %b %Y %H:%M:%S %z"
short: "%d %b %H:%M"
long: "%B %d, %Y %H:%M"
am: "am"
pm: "pm"All you need to do is replace the English terms with the translated versions. Remember that all these keys are necessary to have. If you leave out, say month_names, it won’t work at all.
After this is done, translate dates and times like this:
I18n.localize(Date.today)
If you want to use any of the other formats, specify this in the options hash:
I18n.localize(Date.today, :format => :short)
One more tip: you can add as many formats as you like, but remember that formats like :db are reserved for obvious reasons. Here is an overview of the strftime syntax in Ruby.
PS. Rails 2.2 RC1 is really really close now!
No comments yet.