Day name with I18n

Fellow Stranger picture Fellow Stranger · Nov 12, 2015 · Viewed 8.2k times · Source

Without translation, this would get me today's day name:

Date.today.strftime("%A")

How would I localize it?

I.e. "Mardi" if I18n.locale is set to fr.

Answer

MrYoshiji picture MrYoshiji · Nov 12, 2015

You probably have in your locale file(s) the following:

# example with fr
fr:
  date:
    day_names: [Dimanche, Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi]
#               ^^^^^^^^ a week starts with a Sunday, not a Monday

In order to get today's name, you could do:

week_day = Date.today.wday # Returns the day of week (0-6, Sunday is zero)
I18n.t('date.day_names')[week_day]

or eventually

I18n.l(Date.today, format: '%A')