2 Apr
Rails I18n: metodo .to_s() per formattare le date
Spero non sia solo un mio problema ma usando l’I18n di Rails per l’internazionalizzazione, funziona tutto correttamente a parte il metodo to_s(:format) usato sulle date (classe ActiveSupport::TimeWithZone) che restituisce la data formattata correttamente ma sempre in inglese.
Per ovviare al problema ho fatto l’overload del metodo to_s() per la classe TimeWithZone:
1 2 3 4 I18n.l(self, :format => format) 5 end 6 end 7 end
Così uso il metodo I18n.l passando il formato. I formati delle date li dovete inserire nel file .yml nel punto dove sono definiti i date-formats:
1 it: 2 date: 3 formats: 4 default: "%d-%m-%Y" 5 short: "%d %b" 6 long: "%d %B %Y" 7 only_day: "%e"


Sinceramente non mi sembra di avere il tuo stesso problema (verificherò meglio). In ogni caso segnalo a chi non la conoscesse questa utile risorsa: http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale
Grande Duccio, ciao!
Mitico Filippo… hai fatto benissimo a suggerire il link, non ci avevo pensato, ma effettivamente è utilissimo per chi usa I18n!!
Ciao duccio. No non sei l’unico, anch’io ho appena incontrato lo stesso problema!
Il mio file .yml è a posto, ho provato a fare l’overload sia in environment.rb che in un initializer appositamente creato, ho riavviato il server, ma niente da fare…
Dove devo inserire il tuo codice perché l’overload avvenga?
PS. se uso I18n.l diretttamente nella vista funziona
Ciao,
la mia era una soluzione un po’ velocina e poco testata!
volevo dirti che esiste un plugin che si chiama localize_date…. che fa quello che faccio io un po’ meglio
Perfetto! Non è che puoi darmi il link?
ruby script/plugin install git://github.com/clemens/localized_dates.git
Ah… peccato che non funziona con il plugin translate_routes!
Mi toccherà utilizzare i18n.t nelle viste finché Rails non offrirà qualcosa di meglio.
soluzione … Rails 2.2+
l n.updated_at, :format => ‘long’