diff options
author | printercu <printercu@gmail.com> | 2013-08-07 12:33:28 +0400 |
---|---|---|
committer | Max Melentiev <melentievm@gmail.com> | 2013-09-25 16:23:28 +0400 |
commit | 40a8130bc5f00f0d77b152e75484f175d70cabdd (patch) | |
tree | 4b75d61368faa80f10d3849dfc63f3fa55551210 | |
parent | 69c5e010dcff0545fb2f38672e28894f230b1338 (diff) | |
download | rails-40a8130bc5f00f0d77b152e75484f175d70cabdd.tar.gz rails-40a8130bc5f00f0d77b152e75484f175d70cabdd.tar.bz2 rails-40a8130bc5f00f0d77b152e75484f175d70cabdd.zip |
ActionController#translate supports symbols
Made it similar to views helper.
-rw-r--r-- | actionpack/CHANGELOG.md | 4 | ||||
-rw-r--r-- | actionpack/lib/abstract_controller/translation.rb | 9 | ||||
-rw-r--r-- | actionpack/test/abstract/translation_test.rb | 27 |
3 files changed, 28 insertions, 12 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md index 8b78e0f801..7102cbd734 100644 --- a/actionpack/CHANGELOG.md +++ b/actionpack/CHANGELOG.md @@ -1,3 +1,7 @@ +* ActionController#translate supports symbols. + + *Max Melentiev* + * Introduce `BasicRendering` which is the most basic rendering implementation. It allows to `render :text` and `render :nothing` without depending on Action View. diff --git a/actionpack/lib/abstract_controller/translation.rb b/actionpack/lib/abstract_controller/translation.rb index 02028d8e05..ea2551cb70 100644 --- a/actionpack/lib/abstract_controller/translation.rb +++ b/actionpack/lib/abstract_controller/translation.rb @@ -8,14 +8,11 @@ module AbstractController # <tt>I18n.translate("people.index.foo")</tt>. This makes it less repetitive # to translate many keys within the same controller / action and gives you a # simple framework for scoping them consistently. - def translate(*args) - key = args.first - if key.is_a?(String) && (key[0] == '.') + def translate(key, options = {}) + if key.to_s.first == '.' key = "#{ controller_path.tr('/', '.') }.#{ action_name }#{ key }" - args[0] = key end - - I18n.translate(*args) + I18n.translate(key, options) end alias :t :translate diff --git a/actionpack/test/abstract/translation_test.rb b/actionpack/test/abstract/translation_test.rb index 4fdc480b43..d43a445535 100644 --- a/actionpack/test/abstract/translation_test.rb +++ b/actionpack/test/abstract/translation_test.rb @@ -9,6 +9,20 @@ module AbstractController class TranslationControllerTest < ActiveSupport::TestCase def setup @controller = TranslationController.new + I18n.backend.store_translations(:en, { + one: { + two: 'bar', + }, + abstract_controller: { + testing: { + translation: { + index: { + foo: 'bar', + }, + }, + }, + }, + }) end def test_action_controller_base_responds_to_translate @@ -28,16 +42,17 @@ module AbstractController end def test_lazy_lookup - expected = 'bar' @controller.stubs(action_name: :index) - I18n.stubs(:translate).with('abstract_controller.testing.translation.index.foo').returns(expected) - assert_equal expected, @controller.t('.foo') + assert_equal 'bar', @controller.t('.foo') + end + + def test_lazy_lookup_with_symbol + @controller.stubs(action_name: :index) + assert_equal 'bar', @controller.t(:'.foo') end def test_default_translation - key, expected = 'one.two', 'bar' - I18n.stubs(:translate).with(key).returns(expected) - assert_equal expected, @controller.t(key) + assert_equal 'bar', @controller.t('one.two') end def test_localize |