Monkey patch rails to work around stupid I18n bug where it looks up
authorTom Hughes <tom@compton.nu>
Mon, 1 Mar 2010 00:55:27 +0000 (00:55 +0000)
committerTom Hughes <tom@compton.nu>
Mon, 1 Mar 2010 00:55:27 +0000 (00:55 +0000)
time.formats in the locale and then looks for the requested format in
that hash, thereby not doing fallback correctly. To make things worse
it then defaults to just using the requested format name as the format...

config/initializers/i18n.rb

index 54a925e3cd6ee85deab7f85cba7968be03168ce4..ac4ad81d62bce072b94291c2beea0a786c951634 100644 (file)
@@ -2,3 +2,26 @@ require 'globalize/i18n/missing_translations_log_handler'
 
 I18n.missing_translations_logger = Logger.new("#{RAILS_ROOT}/log/missing_translations.log")
 I18n.exception_handler = :missing_translations_log_handler
+
+module I18n
+  module Backend
+    class Simple
+      protected
+      alias_method :old_init_translations, :init_translations
+      
+      def init_translations
+        old_init_translations
+
+        friendly = translate('en', 'time.formats.friendly')
+
+        available_locales.each do |locale|
+          time_formats = I18n.t('time.formats', :locale => locale)
+
+          unless time_formats.has_key?(:friendly)
+            store_translations(locale, :time => { :formats => { :friendly => friendly } })
+          end
+        end
+      end
+    end
+  end
+end