diff options
-rw-r--r-- | actionpack/lib/action_view/helpers/translation_helper.rb | 16 | ||||
-rw-r--r-- | actionpack/test/template/translation_helper_test.rb | 42 |
2 files changed, 58 insertions, 0 deletions
diff --git a/actionpack/lib/action_view/helpers/translation_helper.rb b/actionpack/lib/action_view/helpers/translation_helper.rb new file mode 100644 index 0000000000..0bfe6bf771 --- /dev/null +++ b/actionpack/lib/action_view/helpers/translation_helper.rb @@ -0,0 +1,16 @@ +require 'action_view/helpers/tag_helper' + +module ActionView + module Helpers + module TranslationHelper + def translate(*args) + key, locale, options = I18n.send :process_translate_arguments, *args + I18n.translate key, locale, options.merge(:raise => true) + + rescue I18n::MissingTranslationData => e + keys = I18n.send :normalize_translation_keys, locale, key, options[:scope] + content_tag('span', keys.join(', '), :class => 'translation_missing') + end + end + end +end
\ No newline at end of file diff --git a/actionpack/test/template/translation_helper_test.rb b/actionpack/test/template/translation_helper_test.rb new file mode 100644 index 0000000000..e97bcdb731 --- /dev/null +++ b/actionpack/test/template/translation_helper_test.rb @@ -0,0 +1,42 @@ +require 'abstract_unit' + +class TranslationHelperTest < Test::Unit::TestCase + include ActionView::Helpers::TagHelper + include ActionView::Helpers::TranslationHelper + + attr_reader :request + uses_mocha 'translation_helper_test' do + def setup + end + + def test_delegates_to_i18n_setting_the_raise_option + I18n.expects(:translate).with(:foo, 'en-US', :raise => true) + translate :foo, 'en-US' + end + + def test_returns_missing_translation_message_wrapped_into_span + expected = '<span class="translation_missing">en-US, foo</span>' + assert_equal expected, translate(:foo) + end + + # def test_error_messages_for_given_a_header_message_option_it_does_not_translate_header_message + # I18n.expects(:translate).with(:'header_message', :locale => 'en-US', :scope => [:active_record, :error], :count => 1, :object_name => '').never + # error_messages_for(:object => @object, :header_message => 'header message', :locale => 'en-US') + # end + # + # def test_error_messages_for_given_no_header_message_option_it_translates_header_message + # I18n.expects(:t).with(:'header_message', :locale => 'en-US', :scope => [:active_record, :error], :count => 1, :object_name => '').returns 'header message' + # error_messages_for(:object => @object, :locale => 'en-US') + # end + # + # def test_error_messages_for_given_a_message_option_it_does_not_translate_message + # I18n.expects(:t).with(:'message', :locale => 'en-US', :scope => [:active_record, :error]).never + # error_messages_for(:object => @object, :message => 'message', :locale => 'en-US') + # end + # + # def test_error_messages_for_given_no_message_option_it_translates_message + # I18n.expects(:t).with(:'message', :locale => 'en-US', :scope => [:active_record, :error]).returns 'There were problems with the following fields:' + # error_messages_for(:object => @object, :locale => 'en-US') + # end + end +end
\ No newline at end of file |