diff options
author | Juan Broullon <juan.broullon@shopify.com> | 2018-07-03 11:50:02 -0400 |
---|---|---|
committer | Juan Broullon <juan.broullon@shopify.com> | 2018-07-03 11:50:02 -0400 |
commit | 42c353705abf133b76dd989bb477af449db8f9fb (patch) | |
tree | f59493fec950b7f5e2f33007fd9ba0c55c6428f6 /actionview | |
parent | 242ae67ebe98685464b8f23f527e2102dfc3df88 (diff) | |
download | rails-42c353705abf133b76dd989bb477af449db8f9fb.tar.gz rails-42c353705abf133b76dd989bb477af449db8f9fb.tar.bz2 rails-42c353705abf133b76dd989bb477af449db8f9fb.zip |
Add safe html support to arrays of translations
Diffstat (limited to 'actionview')
-rw-r--r-- | actionview/lib/action_view/helpers/translation_helper.rb | 7 | ||||
-rw-r--r-- | actionview/test/template/translation_helper_test.rb | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/actionview/lib/action_view/helpers/translation_helper.rb b/actionview/lib/action_view/helpers/translation_helper.rb index 80cb73d683..1c61d8dd29 100644 --- a/actionview/lib/action_view/helpers/translation_helper.rb +++ b/actionview/lib/action_view/helpers/translation_helper.rb @@ -85,8 +85,11 @@ module ActionView end end translation = I18n.translate(scope_key_by_partial(key), html_safe_options.merge(raise: i18n_raise)) - - translation.respond_to?(:html_safe) ? translation.html_safe : translation + if translation.respond_to?(:map) + translation.map { |element| element.respond_to?(:html_safe) ? element.html_safe : element } + else + translation.respond_to?(:html_safe) ? translation.html_safe : translation + end else I18n.translate(scope_key_by_partial(key), options.merge(raise: i18n_raise)) end diff --git a/actionview/test/template/translation_helper_test.rb b/actionview/test/template/translation_helper_test.rb index f40595bf4d..e756348938 100644 --- a/actionview/test/template/translation_helper_test.rb +++ b/actionview/test/template/translation_helper_test.rb @@ -164,8 +164,11 @@ class TranslationHelperTest < ActiveSupport::TestCase assert_equal "<a>Other <One></a>", translate(:'translations.count_html', count: "<One>") end - def test_translation_returning_an_array_ignores_html_suffix - assert_equal ["foo", "bar"], translate(:'translations.array_html') + def test_translate_marks_array_of_translations_with_a_html_safe_suffix_as_safe_html + translate(:'translations.array_html').tap do |translated| + assert_equal %w( foo bar ), translated + assert translated.all?(&:html_safe?) + end end def test_translate_with_default_named_html |