From 6f3c65f6300f157e6ae5bfb839064383f3de11a9 Mon Sep 17 00:00:00 2001 From: Adam Prescott Date: Sat, 4 Apr 2015 12:46:45 -0400 Subject: [PATCH] Allow an array to be a default translation value. 4.2.1 introduced a change to the way `translate`/`t` works with an option of `default: [[]]`. In 4.2.0, this would give a default value of `[]`, but in 4.2.1, it leads to a missing translation. `default: [[]]` is again allowed for cases where a default of `[]` is needed. This addresses GitHub issue 19640. --- actionview/CHANGELOG.md | 8 ++++++++ actionview/lib/action_view/helpers/translation_helper.rb | 2 +- actionview/test/template/translation_helper_test.rb | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/actionview/CHANGELOG.md b/actionview/CHANGELOG.md index 74a677968f..a3d28ba37c 100644 --- a/actionview/CHANGELOG.md +++ b/actionview/CHANGELOG.md @@ -1,3 +1,11 @@ +* `translate` now allows `default: [[]]` again for a default value of `[]`. + + Fixes a regression introduced in 4.2.1. + + See #19640 and the fix in #19649. + + *Adam Prescott* + * `translate` should accept nils as members of the `:default` parameter without raising a translation missing error. Fixes a regression introduced 362557e. diff --git a/actionview/lib/action_view/helpers/translation_helper.rb b/actionview/lib/action_view/helpers/translation_helper.rb index 29a0860c00..9d7390f1fd 100644 --- a/actionview/lib/action_view/helpers/translation_helper.rb +++ b/actionview/lib/action_view/helpers/translation_helper.rb @@ -41,7 +41,7 @@ module ActionView remaining_defaults = Array(options.delete(:default)).compact if has_default && !remaining_defaults.first.kind_of?(Symbol) - options[:default] = remaining_defaults.shift + options[:default] = remaining_defaults end # If the user has explicitly decided to NOT raise errors, pass that option to I18n. diff --git a/actionview/test/template/translation_helper_test.rb b/actionview/test/template/translation_helper_test.rb index c4daaae221..df096b3c3a 100644 --- a/actionview/test/template/translation_helper_test.rb +++ b/actionview/test/template/translation_helper_test.rb @@ -195,6 +195,11 @@ class TranslationHelperTest < ActiveSupport::TestCase assert_equal 'A Generic String', translation end + def test_translate_with_array_of_array_default + translation = translate(:'translations.missing', default: [[]]) + assert_equal [], translation + end + def test_translate_does_not_change_options options = {} translate(:'translations.missing', options)