diff --git a/lib/i18n/backend/base.rb b/lib/i18n/backend/base.rb
index 043d8460..668a4221 100644
--- a/lib/i18n/backend/base.rb
+++ b/lib/i18n/backend/base.rb
@@ -62,6 +62,9 @@ def exists?(locale, key)
# format string. Takes a key from the date/time formats translations as
# a format argument (e.g., :short in :'date.formats').
def localize(locale, object, format = :default, options = {})
+ if object.nil? && options.include?(:default)
+ return options[:default]
+ end
raise ArgumentError, "Object must be a Date, DateTime or Time object. #{object.inspect} given." unless object.respond_to?(:strftime)
if Symbol === format
diff --git a/lib/i18n/tests/localization/date.rb b/lib/i18n/tests/localization/date.rb
index a7234752..fba5fe5c 100644
--- a/lib/i18n/tests/localization/date.rb
+++ b/lib/i18n/tests/localization/date.rb
@@ -51,6 +51,10 @@ def setup
assert_nothing_raised { I18n.l(@date, options.freeze) }
end
+ test "localize Date: given nil with default value it returns default" do
+ assert_equal 'default', I18n.l(nil, :default => 'default')
+ end
+
test "localize Date: given nil it raises I18n::ArgumentError" do
assert_raise(I18n::ArgumentError) { I18n.l(nil) }
end
diff --git a/test/i18n_test.rb b/test/i18n_test.rb
index ed3d9871..728e7ed9 100644
--- a/test/i18n_test.rb
+++ b/test/i18n_test.rb
@@ -269,6 +269,10 @@ def setup
assert_raise(I18n::ArgumentError) { I18n.l nil }
end
+ test "localize given nil and default returns default" do
+ assert_equal nil, I18n.l(nil, :default => nil)
+ end
+
test "localize given an Object raises an I18n::ArgumentError" do
assert_raise(I18n::ArgumentError) { I18n.l Object.new }
end