Rails : Avoir des noms de jours/mois en français -- Override Dates
Par Christophe, mercredi 14 mars 2007 à 19:01 :: Développement :: #129 :: rss
Ce qui suit permet de franciser les élements de Date et de les rendres disponibles dans les formats de sortie de Time.
Donc, avec table People et un champ created_at en datetime (que ActiveRecord renseignera automatiquement à la création de la ligne), l'on pourra faire Person.find(:first).created_at.to_s(:fr_long) ce qui donnera quelquechose comme mercredi 14 mars 2007 à 13h37
. Ceci grace à ActiveRecord qui converti les champs SQL Date et DateTime en objets Time.
### config/environment.rb # Include your application configuration below [...] require 'lib/date_overrides' [...]
### lib/date_overrides.rb
Date::MONTHS.replace({'Janvier' => 1, 'Fevrier' => 2, 'Mars' => 3, 'Avril' => 4, 'Mai' => 5, 'Juin' => 6, 'Juillet' => 7, 'Aout' => 8, 'Septembre'=> 9, 'Octobre' =>10, 'Novembre' =>11, 'Decembre' => 12})
Date::DAYS.replace({'Dimanche' => 0, 'Lundi' => 1, 'Mardi' => 2, 'Mercredi' => 3, 'Jeudi'=> 4, 'Vendredi' => 5, 'Samedi' => 6})
Date::ABBR_MONTHS.replace({'jan' => 1, 'fev' => 2, 'mar' => 3, 'avr' => 4, 'mai' => 5, 'juin' => 6, 'juil' => 7, 'aou' => 8, 'sep' => 9, 'oct' =>10, 'nov' =>11, 'dec' => 12})
Date::ABBR_DAYS.replace({'dim' => 0, 'lun' => 1, 'mar' => 2, 'mer' => 3, 'jeu' => 4, 'ven' => 5, 'sam' => 6})
Date::MONTHNAMES.replace [nil] + %w(Janvier Fevrier Mars Avril Mai Juin Juillet Aout Septembre Octobre Novembre Decembre )
Date::DAYNAMES.replace %w(Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi)
Date::ABBR_MONTHNAMES.replace [nil] + %w(jan fev mar avr mai juin juil aou sep oct nov dec)
Date::ABBR_DAYNAMES.replace %w(dim lun mar mer jeu ven sam)
class Time
alias :strftime_nolocale :strftime
def strftime(format)
format = format.dup
format.gsub!(/%a/, Date::ABBR_DAYNAMES[self.wday])
format.gsub!(/%A/, Date::DAYNAMES[self.wday])
format.gsub!(/%b/, Date::ABBR_MONTHNAMES[self.mon])
format.gsub!(/%B/, Date::MONTHNAMES[self.mon])
self.strftime_nolocale(format)
end
end
# exemples de formats de date
Time::DATE_FORMATS[:fr_date] = '%d-%m-%y'
Time::DATE_FORMATS[:fr] = '%d-%m-%y %H:%M'
Time::DATE_FORMATS[:fr_long] = '%A %d %B %Y à %Hh%I'
Time::DATE_FORMATS[:frs] = '%d-%m-%y %H:%M:%s'

Commentaires
1. Le jeudi 15 mars 2007 à 09:15, par geoffrey
2. Le jeudi 15 mars 2007 à 09:24, par Christophe
3. Le jeudi 15 mars 2007 à 19:37, par Matt.Rixx
4. Le jeudi 15 mars 2007 à 21:23, par Christophe
5. Le lundi 26 mars 2007 à 19:25, par burningHat
6. Le mardi 27 mars 2007 à 00:23, par burningHat
7. Le mardi 27 mars 2007 à 02:33, par Christophe
8. Le mardi 27 mars 2007 à 11:28, par burningHat
9. Le mardi 27 mars 2007 à 12:20, par Christophe
10. Le mardi 3 avril 2007 à 23:56, par Bolo
11. Le dimanche 17 juin 2007 à 18:48, par Guillaume
12. Le jeudi 5 juillet 2007 à 22:51, par xenical
13. Le dimanche 21 octobre 2007 à 19:17, par nicoo
14. Le dimanche 21 octobre 2007 à 20:51, par Christophe
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.