diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2015-02-12 15:39:17 -0200 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2015-02-12 15:39:17 -0200 |
commit | 76f6524538a50b4e3ede3d1ae58fcfbac3e77a91 (patch) | |
tree | aa5a2db6a29840b66c691f5ecddaa7c2203e76b7 /actionpack | |
parent | 68ce508e180eaed9539d2bea102861f9a56f50e6 (diff) | |
parent | fde7344542a76e7f1f95a2265ac5480a1ef9aeed (diff) | |
download | rails-76f6524538a50b4e3ede3d1ae58fcfbac3e77a91.tar.gz rails-76f6524538a50b4e3ede3d1ae58fcfbac3e77a91.tar.bz2 rails-76f6524538a50b4e3ede3d1ae58fcfbac3e77a91.zip |
Merge pull request #11790 from printercu/patch-3
ActionController#translate supports symbols
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/CHANGELOG.md | 5 | ||||
-rw-r--r-- | actionpack/lib/abstract_controller/translation.rb | 15 | ||||
-rw-r--r-- | actionpack/test/abstract/translation_test.rb | 33 |
3 files changed, 39 insertions, 14 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md index 220946329b..3b115a7bf7 100644 --- a/actionpack/CHANGELOG.md +++ b/actionpack/CHANGELOG.md @@ -1,3 +1,8 @@ +* ActionController#translate supports symbols as shortcuts. + When shortcut is given it also lookups without action name. + + *Max Melentiev* + * Expand `ActionController::ConditionalGet#fresh_when` and `stale?` to also accept a collection of records as the first argument, so that the following code can be written in a shorter form. diff --git a/actionpack/lib/abstract_controller/translation.rb b/actionpack/lib/abstract_controller/translation.rb index 02028d8e05..56b8ce895e 100644 --- a/actionpack/lib/abstract_controller/translation.rb +++ b/actionpack/lib/abstract_controller/translation.rb @@ -8,14 +8,15 @@ 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] == '.') - key = "#{ controller_path.tr('/', '.') }.#{ action_name }#{ key }" - args[0] = key + def translate(key, options = {}) + if key.to_s.first == '.' + path = controller_path.tr('/', '.') + defaults = [:"#{path}#{key}"] + defaults << options[:default] if options[:default] + options[:default] = defaults + key = "#{path}.#{action_name}#{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..8289252dfc 100644 --- a/actionpack/test/abstract/translation_test.rb +++ b/actionpack/test/abstract/translation_test.rb @@ -9,6 +9,22 @@ 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', + }, + no_action: 'no_action_tr', + }, + }, + }, + }) + @controller.stubs(action_name: :index) end def test_action_controller_base_responds_to_translate @@ -28,16 +44,19 @@ 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 + assert_equal 'bar', @controller.t(:'.foo') + end + + def test_lazy_lookup_fallback + assert_equal 'no_action_tr', @controller.t(:'.no_action') 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 |