Exception is not raise with #t method on Rails 2.3.5

Hi folks,

I have read some documentation about I18n and exceptions, but I need
your help.

My idea is to implement an exception when my functional test watch a
missing translation like what I’m seeing in “Rails
Internationalization (I18n) API Guide” (http://guides.rubyonrails.org/
i18n.html#using-different-exception-handlers). The documentation seem
to be old.

I try some context.

Gist number 1 (gist:472395 · GitHub) works with #t method and
a correct translation key.

Gist number 2 (OUTPUT · GitHub) doesn’t raise an
exception with #t method.

Gist number 3 (OUTPUT · GitHub) raise an exception but I
must specify I18n.t method to translate.

Questions are :

How to implement a raise with #t helper method ?
And, how to specify the right exception ?

Thank’s for your patience and your help.

Best regards,



Unfortunately, you cannot raise in your views, because the default
view helpers will always rescue the exception:


t/translate as defined in the views is not just a shortcut/alias to
I18n.t, but does a lot of stuff around it.

Either redefine this method in your own helper or use I18n.t if you
don’t want it. There seems to be no other way.


Thank’s for you response Iain.

I want to raise an exception only in test environnement, so, I prefer
to use my own helper method.
So in my test_helper.rb, I add some hack in #translate method from
module TranslationHelper like in test_helper.rb · GitHub

In my view I have #t method to call translation but they didn’t raise
exception too.

Why my #translate method doesn’t raise exception ?

Best regards,


You are right, view helpers will always rescue the exception and

After some attempts, here we go :wink:

My mistake was to retrieve code directly from Iain’s links
but my rails app run in 2.3.5 … so, check the right tag in Github
before past it into test_helper.rb…

Solution for Rails 2.3.5 could be found here :

Thank’s again Iain.

Best regards,