Francisation : Surdéfinition de la classe date

Bonjour à tous,

dans le cadre de la francisation de mon application, j’ai mis en place
une
librairire overrides.lib qui me permet de franciser tout ce qui se
rattache
aux dates.

Au départ, j’avais placé ceci :

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)

Mon application qui tourne sur linux avec rails 1.2.3 et ruby 1.8.5 ne
me
pose aucun soucis.
Mais lorsque j’ai voulu porter l’application sur windows, avec les mêmes
versions de rails et ruby, j’ai eu un plantage m’interdisant d’utiliser
replace sur ces tableaux avec cela :“uninitialized constant Date:MONTS”

J’ai alors modifié comme ceci :

Date::MONTHS={‘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={‘Dimanche’ => 0, ‘Lundi’ => 1, ‘Mardi’ => 2, ‘Mercredi’ =>
3,
‘Jeudi’=> 4, ‘Vendredi’ => 5, ‘Samedi’ => 6}
Date::ABBR_MONTHS={‘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={‘dim’ => 0, ‘lun’ => 1, ‘mar’ => 2, ‘mer’ => 3, ‘jeu’
=> 4,
‘ven’ => 5, ‘sam’ => 6}
Date::MONTHNAMES = [nil] + %w(Janvier Fevrier Mars Avril Mai Juin
Juillet
Aout Septembre Octobre Novembre Decembre )
Date::DAYNAMES = %w(Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi)
Date::ABBR_MONTHNAMES = [nil] + %w(jan fev mar avr mai juin juil aou sep
oct
nov dec)
Date::ABBR_DAYNAMES = %w(dim lun mar mer jeu ven sam)

Ce qui passe, mais cela me génère des warnings car je modifie des
tableaux
“freezés”. J’ai beau cherché, mais je ne trouve pas d’autre solution.
Quelqu’un aurait il une idée ?

Merci,

Edouard

On 7/9/07, edouard cante [email protected] wrote:

Bonjour à tous,

dans le cadre de la francisation de mon application, j’ai mis en place une
librairire overrides.lib qui me permet de franciser tout ce qui se
rattache aux dates.

Si tu veux j’ai ça dans mes cartons (en pièce jointe).

Par contre tu ne devrais pas redéfinir les constantes de base. Certaines
parties de Rails ou des bibliothèques risquent de dérapper parce
qu’elles ne
reconnaissent pas ce qu’elles devraient. Pour exemple Rails ne pourra
plus
envoyer l’entête HTTP “Date”, recevoir et interprêter l’entête
“If-Modified-Since”, envoyer l’entête “Last-Modified”, etc.


Éric Daspet
http://eric.daspet.name/

Tout d’abord merci pour la réponse.

J’ai cependant un soucis avec ta méthode, c’est comment l’exploité par
défaut pour les affichages ?

Je comprends bien le problème que tu expliques avec certaine partie du
framework, mais j’utilise par exemple calendar_helper ou Date_kit et
je souhaiterai éviterai de modifier le code de ces plugins.

Y a t il donc un moyen qui me permette de faire cela sans impacter le
framework?

Merci du coup de main !

Edouard

tu peux aussi éssayer le plugin globalite qui vient avec une
francisation de rails (c’est fait par un français).

http://code.google.com/p/globalite/