Följande ger dig möjlighet att globalt formatera datum och tid i en Railsapplikation. Ursprungligt tips kommer härifrån.

Skapa filen lib/overrides.rb med följande innehåll:


Date::MONTHS.update({ 'Januari' => 1, 'Februari' => 2, 'Mars' => 3, 'April' => 4, 'Maj' => 5, 'Juni' => 6, 'Juli' => 7, 'Augusti' => 8, 'September'=> 9, 'Oktober' =>10, 'Novmber' =>11, 'December' =>12 })
Date::DAYS.update({ 'Söndag' => 0, 'Måndag' => 1, 'Tisdag' => 2, 'Onsdag' => 3, 'Torsdag'=> 4, 'Fredag' => 5, 'Lördag' => 6 })
Date::ABBR_MONTHS.update({ 'Jan' => 1, 'Feb' => 2, 'Mar' => 3, 'Apr' => 4, 'Maj' => 5, 'Jun' => 6, 'Jul' => 7, 'Aug' => 8, 'Sep' => 9, 'Okt' =>10, 'Nov' =>11, 'Dec' =>12 })
Date::ABBR_DAYS.update({ 'Sö' => 0, 'Må' => 1, 'Ti' => 2, 'On' => 3, 'To' => 4, 'Fr' => 5, 'Lö' => 6 })
Date::MONTHNAMES.replace([nil] + %w(Januari Februari Mars April Maj Juni Juli Augusti September Oktober November December))
Date::DAYNAMES.replace(%w(Söndag Måndag Tisdag Onsdag Torsdag fredag Lördag))
Date::ABBR_MONTHNAMES.replace([nil] +  %w(Jan Feb Mar Apr Maj Jun Jul Aug Sep Okt Nov Dec))
Date::ABBR_DAYNAMES.replace(%w(Sö Må Ti On To Fr Lö))

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

Lägg till följande sist i config/environment.rb:


ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.update(:default => '%Y-%m-%d %H:%M')
ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.update(:default => '%Y-%m-%d')
require 'overrides'

—-

En vecka börjar, av någon anledning, på söndag i Ruby och många andra programmeringsspråk. Så alla dagar blev förskjutna med en, ändrade så att det bör visas rätt nu. -ba
—Ursprungligen, sedan flera hundra år före Kristus, så räknas lördagen, sabbaten, som den sjunde dagen, och därför söndagen som den första dagen i veckan. Vi i Sverige har bytt till måndag som första dag, men det har vi gjort rätt nyligen, ca 10 år sen om jag minns rätt. Perherman—

—-

En liten kommentar till detta dock. Exemplet du hänvisar till kommer ursprungligen från ett blogginlägg som jag tyvärr glömt av. Blogginläggets exempel är dock baserat på översättning via gettext istället för att hårdkoda in datumen såhär. Detta exemplet kanske fungerar för många, och är fullt tillräckligt, men om man vill översätta till flera språk bör man spana in gettext, och kanske specifikt ruby-gettext

—-

Anledningen till att en vecka börjar på söndag är för att det är så i USA. Eftersom de flesta programmeringsspråk har sitt ursprung från USA så har de även skrivit veckohanteringen enligt amerikansk standard.

—-

lade till .replace och .update, ville inte fungera annars med rails 1.2 iaf. //moofius

—-

Pass på!, det verkar som om man i Ruby 1.8.6 har frusit arrayerna och helt tagit bort hasharna. Jag har inte hittat någon alternativ lösning för det här (än). —lenbust

Revised on March 18, 2011 10:52:49 by Anders Bengtsson