From 3c1576e364c911e38f7c002582fc794f16ca87dd Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Fri, 17 Dec 2010 08:34:29 +0000 Subject: [PATCH] Manually require i18n 0.4.2 before Rails tries to load the most recent gem (#7013). This workaround makes Redmine work even if i18n 0.5.0 gem is installed. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4516 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- config/boot.rb | 12 ++++++++++++ config/initializers/10-patches.rb | 2 +- lib/redmine/i18n.rb | 4 ++-- test/unit/lib/redmine/i18n_test.rb | 8 ++++---- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/config/boot.rb b/config/boot.rb index dd5e3b691..95bd6b885 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -106,5 +106,17 @@ module Rails end end +# TODO: Workaround for #7013 to be removed for 1.2.0 +# Loads i18n 0.4.2 before Rails loads any more recent gem +# 0.5.0 is not compatible with the old interpolation syntax +# Plugins will have to migrate to the new syntax for 1.2.0 +require 'rubygems' +begin + gem 'i18n', '0.4.2' +rescue Gem::LoadError => load_error + $stderr.puts %(Missing the i18n 0.4.2 gem. Please `gem install -v=0.4.2 i18n`) + exit 1 +end + # All that for this: Rails.boot! diff --git a/config/initializers/10-patches.rb b/config/initializers/10-patches.rb index b196dbd4c..25b20523b 100644 --- a/config/initializers/10-patches.rb +++ b/config/initializers/10-patches.rb @@ -86,7 +86,7 @@ module I18n module Base def warn_syntax_deprecation!(*args) return if @skip_syntax_deprecation - warn "The {{key}} interpolation syntax in I18n messages is deprecated. Please use %{key} instead.\nDowngrade your i18n gem to 0.3.7 (everything above must be deinstalled) to remove this warning, see http://www.redmine.org/issues/5608 for more information." + warn "The {{key}} interpolation syntax in I18n messages is deprecated and will be removed in Redmine 1.2. Please use %{key} instead, see http://www.redmine.org/issues/7013 for more information." @skip_syntax_deprecation = true end end diff --git a/lib/redmine/i18n.rb b/lib/redmine/i18n.rb index e7aac9f7e..1bfca81e4 100644 --- a/lib/redmine/i18n.rb +++ b/lib/redmine/i18n.rb @@ -37,7 +37,7 @@ module Redmine def format_date(date) return nil unless date - Setting.date_format.blank? ? ::I18n.l(date.to_date, :count => date.strftime('%d')) : date.strftime(Setting.date_format) + Setting.date_format.blank? ? ::I18n.l(date.to_date) : date.strftime(Setting.date_format) end def format_time(time, include_date = true) @@ -45,7 +45,7 @@ module Redmine time = time.to_time if time.is_a?(String) zone = User.current.time_zone local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time) - Setting.time_format.blank? ? ::I18n.l(local, :count => local.strftime('%d'), :format => (include_date ? :default : :time)) : + Setting.time_format.blank? ? ::I18n.l(local, :format => (include_date ? :default : :time)) : ((include_date ? "#{format_date(time)} " : "") + "#{local.strftime(Setting.time_format)}") end diff --git a/test/unit/lib/redmine/i18n_test.rb b/test/unit/lib/redmine/i18n_test.rb index 1439ac9e3..80e0b509f 100644 --- a/test/unit/lib/redmine/i18n_test.rb +++ b/test/unit/lib/redmine/i18n_test.rb @@ -29,7 +29,7 @@ class Redmine::I18nTest < ActiveSupport::TestCase set_language_if_valid 'en' today = Date.today Setting.date_format = '' - assert_equal I18n.l(today, :count => today.strftime('%d')), format_date(today) + assert_equal I18n.l(today), format_date(today) end def test_date_format @@ -47,7 +47,7 @@ class Redmine::I18nTest < ActiveSupport::TestCase format_date(Date.today) format_time(Time.now) format_time(Time.now, false) - assert_not_equal 'default', ::I18n.l(Date.today, :count => Date.today.strftime('%d'), :format => :default), "date.formats.default missing in #{lang}" + assert_not_equal 'default', ::I18n.l(Date.today, :format => :default), "date.formats.default missing in #{lang}" assert_not_equal 'time', ::I18n.l(Time.now, :format => :time), "time.formats.time missing in #{lang}" end assert l('date.day_names').is_a?(Array) @@ -63,8 +63,8 @@ class Redmine::I18nTest < ActiveSupport::TestCase now = Time.now Setting.date_format = '' Setting.time_format = '' - assert_equal I18n.l(now, :count => now.strftime('%d')), format_time(now) - assert_equal I18n.l(now, :count => now.strftime('%d'), :format => :time), format_time(now, false) + assert_equal I18n.l(now), format_time(now) + assert_equal I18n.l(now, :format => :time), format_time(now, false) end def test_time_format