diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_view/helpers/i18n_helper.rb | 19 | ||||
-rw-r--r-- | actionpack/test/template/i18n_helper_test.rb | 33 |
2 files changed, 52 insertions, 0 deletions
diff --git a/actionpack/lib/action_view/helpers/i18n_helper.rb b/actionpack/lib/action_view/helpers/i18n_helper.rb new file mode 100644 index 0000000000..1b1d1f301d --- /dev/null +++ b/actionpack/lib/action_view/helpers/i18n_helper.rb @@ -0,0 +1,19 @@ +module ActionView + module Helpers + module I18nHelper + def translate(*args) + # inserts the locale or current request locale to the argument list if no locale + # has been passed or the locale has been passed as part of the options hash + options = args.extract_options! + if args.size != 2 + locale = options.delete :locale + locale ||= request.locale if respond_to? :request + args << locale if locale + end + args << options unless options.empty? + I18n.translate *args + end + alias :t :translate + end + end +end
\ No newline at end of file diff --git a/actionpack/test/template/i18n_helper_test.rb b/actionpack/test/template/i18n_helper_test.rb new file mode 100644 index 0000000000..598731568c --- /dev/null +++ b/actionpack/test/template/i18n_helper_test.rb @@ -0,0 +1,33 @@ +require 'abstract_unit' +require 'action_view/helpers/i18n_helper' + +class I18nHelperTests < Test::Unit::TestCase + include ActionView::Helpers::I18nHelper + + attr_reader :request + def setup + @request = stub :locale => 'en-US' + I18n.stubs(:translate).with(:'foo.bar', 'en-US').returns 'Foo Bar' + end + + def test_translate_given_a_locale_argument_it_does_not_check_request_for_locale + request.expects(:locale).never + assert_equal 'Foo Bar', translate(:'foo.bar', :locale => 'en-US') + end + + def test_translate_given_a_locale_option_it_does_not_check_request_for_locale + request.expects(:locale).never + I18n.expects(:translate).with(:'foo.bar', 'en-US').returns 'Foo Bar' + assert_equal 'Foo Bar', translate(:'foo.bar', :locale => 'en-US') + end + + def test_translate_given_no_locale_it_checks_request_for_locale + request.expects(:locale).returns 'en-US' + assert_equal 'Foo Bar', translate(:'foo.bar') + end + + def test_translate_delegates_to_i18n_translate + I18n.expects(:translate).with(:'foo.bar', 'en-US').returns 'Foo Bar' + assert_equal 'Foo Bar', translate(:'foo.bar') + end +end
\ No newline at end of file |