From a2d35fb08b19b4e2072e575b1d56fd240d233d82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Fran=C3=A7a?= Date: Wed, 9 Dec 2020 13:05:37 -0500 Subject: [PATCH] Merge pull request #40773 from jonathanhefner/translate-key-to_s Convert translation key to string as necessary --- actionview/lib/action_view/helpers/translation_helper.rb | 1 + actionview/test/template/translation_helper_test.rb | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/actionview/lib/action_view/helpers/translation_helper.rb b/actionview/lib/action_view/helpers/translation_helper.rb index 513290275b74d..8158dfee5d931 100644 --- a/actionview/lib/action_view/helpers/translation_helper.rb +++ b/actionview/lib/action_view/helpers/translation_helper.rb @@ -69,6 +69,7 @@ module TranslationHelper # def translate(key, **options) return key.map { |k| translate(k, **options) } if key.is_a?(Array) + key = key.to_s unless key.is_a?(Symbol) alternatives = if options.key?(:default) options[:default].is_a?(Array) ? options.delete(:default).compact : [options.delete(:default)] diff --git a/actionview/test/template/translation_helper_test.rb b/actionview/test/template/translation_helper_test.rb index a563378055ed6..847a5b0d7276b 100644 --- a/actionview/test/template/translation_helper_test.rb +++ b/actionview/test/template/translation_helper_test.rb @@ -71,6 +71,12 @@ def test_delegates_localize_to_i18n assert_equal "Tue, 08 Jul 2008 12:18:38 +0000", localize(@time, locale: "en") end + def test_converts_key_to_string_as_necessary + key = Struct.new(:to_s).new("translations.foo") + assert_equal "Foo", translate(key) + assert_equal key, translate(:"translations.missing", default: key) + end + def test_returns_missing_translation_message_without_span_wrap old_value = ActionView::Base.debug_missing_translation ActionView::Base.debug_missing_translation = false