Add safe html support to arrays of translations

This commit is contained in:
Juan Broullon 2018-07-03 11:50:02 -04:00
parent 242ae67ebe
commit 42c353705a
2 changed files with 10 additions and 4 deletions

View File

@ -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

View File

@ -164,8 +164,11 @@ class TranslationHelperTest < ActiveSupport::TestCase
assert_equal "<a>Other &lt;One&gt;</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