Lokalizujeme datumy
Na českém Rails fóru jsem nalezl pochvalný ohlas na článek Localizing datetime format. Nerad bych byl za rejpala, ale autorův přístup je velice pěkný jako demostrace možností Ruby, jako řešení nastíněného probému je to zbytečný overkill.
K podobným praktikám mají Rails lepší a daleko jednodužší prostředky. Ve spoustě tříd definuje ActiveSupport metodu to_formatted_s, mimo jiné taky ve všech třídách pro datum a čas (Time, Date a DateTime). K lokalizovanému výstupu datumových objektů je pak potřeba udelat dvě věci.
Nadefinovat vystupní formáty
Kromě základních formátů, které definují Rails ve výše linkovaných souborech si následujícím způsobem v environment.rb můžeme dodefinovat vlastní:
ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
:cz_datetime => "%d.%m.%Y %H:%M",
:cz_time => "%H:%M",
:cz_date => "%d.%m.%Y"
)
ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!(
:cz_datetime => "%d.%m.%Y %H:%M",
:cz_date => "%d.%m.%Y"
)
V šabloně použít metodu to_formatted_s
<%= muj_datum.to_formatted_s(:cz_datetime) %>
A hle, máme lokalizované datumy. Není co dodat. Rails rocks!