From 1b5298e805a7dec4f5b3c465037dec16cbda4156 Mon Sep 17 00:00:00 2001 From: Sergey Pchelincev Date: Wed, 18 Jul 2012 10:33:14 +0300 Subject: [PATCH] add lazy look up in abstract controller's translate method --- actionpack/lib/abstract_controller/translation.rb | 8 +++++++- actionpack/test/abstract/translation_test.rb | 13 +++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/actionpack/lib/abstract_controller/translation.rb b/actionpack/lib/abstract_controller/translation.rb index 6d68cf4944c15..b6c484d188267 100644 --- a/actionpack/lib/abstract_controller/translation.rb +++ b/actionpack/lib/abstract_controller/translation.rb @@ -1,6 +1,12 @@ module AbstractController module Translation def translate(*args) + key = args.first + if key.is_a?(String) && (key[0] == '.') + key = "#{ controller_path.gsub('/', '.') }.#{ action_name }#{ key }" + args[0] = key + end + I18n.translate(*args) end alias :t :translate @@ -10,4 +16,4 @@ def localize(*args) end alias :l :localize end -end \ No newline at end of file +end diff --git a/actionpack/test/abstract/translation_test.rb b/actionpack/test/abstract/translation_test.rb index 0194ee943fe57..99064a8b8771b 100644 --- a/actionpack/test/abstract/translation_test.rb +++ b/actionpack/test/abstract/translation_test.rb @@ -23,4 +23,17 @@ def test_action_controller_base_responds_to_localize def test_action_controller_base_responds_to_l assert_respond_to @controller, :l end + + def test_lazy_lookup + expected = 'bar' + @controller.stubs(:action_name => :index) + I18n.stubs(:translate).with('action_controller.base.index.foo').returns(expected) + assert_equal expected, @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) + end end