aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSantiago Pastorino <santiago@wyeworks.com>2010-03-16 17:36:09 -0300
committerJeremy Kemper <jeremy@bitsweat.net>2010-03-16 13:49:13 -0700
commit12bf636461e3aab661119ceb3a104cfb70a11666 (patch)
treeab9405fc800c4c22c15055286fd304969da5231e
parent9659d18c9b76f6383854af0cd3a75abb6b1784ea (diff)
downloadrails-12bf636461e3aab661119ceb3a104cfb70a11666.tar.gz
rails-12bf636461e3aab661119ceb3a104cfb70a11666.tar.bz2
rails-12bf636461e3aab661119ceb3a104cfb70a11666.zip
translation method of TranslationHelper module returns always SafeBuffer [#4194 status:resolved]
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
-rw-r--r--actionpack/lib/action_view/helpers/translation_helper.rb2
-rw-r--r--actionpack/test/fixtures/test/array_translation.erb1
-rw-r--r--actionpack/test/template/translation_helper_test.rb9
3 files changed, 10 insertions, 2 deletions
diff --git a/actionpack/lib/action_view/helpers/translation_helper.rb b/actionpack/lib/action_view/helpers/translation_helper.rb
index f996762d6f..26ba4e2ca4 100644
--- a/actionpack/lib/action_view/helpers/translation_helper.rb
+++ b/actionpack/lib/action_view/helpers/translation_helper.rb
@@ -13,7 +13,7 @@ module ActionView
def translate(key, options = {})
options[:raise] = true
translation = I18n.translate(scope_key_by_partial(key), options)
- translation.respond_to?(:html_safe) ? translation.html_safe : translation
+ (translation.respond_to?(:join) ? translation.join : translation).html_safe
rescue I18n::MissingTranslationData => e
keys = I18n.normalize_keys(e.locale, e.key, e.options[:scope])
content_tag('span', keys.join(', '), :class => 'translation_missing')
diff --git a/actionpack/test/fixtures/test/array_translation.erb b/actionpack/test/fixtures/test/array_translation.erb
new file mode 100644
index 0000000000..12c0763313
--- /dev/null
+++ b/actionpack/test/fixtures/test/array_translation.erb
@@ -0,0 +1 @@
+<%= t(['foo', 'bar']) %> \ No newline at end of file
diff --git a/actionpack/test/template/translation_helper_test.rb b/actionpack/test/template/translation_helper_test.rb
index 699fb2f5bc..5a32d71409 100644
--- a/actionpack/test/template/translation_helper_test.rb
+++ b/actionpack/test/template/translation_helper_test.rb
@@ -20,7 +20,14 @@ class TranslationHelperTest < ActiveSupport::TestCase
def test_translation_of_an_array
I18n.expects(:translate).with(["foo", "bar"], :raise => true).returns(["foo", "bar"])
- assert_equal ["foo", "bar"], translate(["foo", "bar"])
+ assert_equal "foobar", translate(["foo", "bar"])
+ end
+
+ def test_translation_of_an_array_with_html
+ expected = '<a href="#">foo</a><a href="#">bar</a>'
+ I18n.expects(:translate).with(["foo", "bar"], :raise => true).returns(['<a href="#">foo</a>', '<a href="#">bar</a>'])
+ @view = ActionView::Base.new(ActionController::Base.view_paths, {})
+ assert_equal expected, @view.render(:file => "test/array_translation")
end
def test_delegates_localize_to_i18n