Skip to content

Commit d57ce23

Browse files
committed
Merge pull request rails#13832 from kassio/setup-for-raise-missing-translations
Rails config for raise on missing translations
2 parents 3161606 + 433628a commit d57ce23

File tree

7 files changed

+33
-4
lines changed

7 files changed

+33
-4
lines changed

actionview/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
* Added `config.action_view.raise_on_missing_translations` to define whether an
2+
error should be raised for missing translations.
3+
4+
Fixes #13196
5+
6+
*Kassio Borges*
7+
18
* Improved ERB dependency detection. New argument types and formattings for the `render`
29
calls can be matched.
310

actionview/lib/action_view/base.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,10 @@ class Base
153153
# Specify default_formats that can be rendered.
154154
cattr_accessor :default_formats
155155

156+
# Specify whether an error should be raised for missing translations
157+
cattr_accessor :raise_on_missing_translations
158+
@@raise_on_missing_translations = false
159+
156160
class_attribute :_routes
157161
class_attribute :logger
158162

actionview/lib/action_view/helpers/translation_helper.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ def translate(key, options = {})
3838

3939
# If the user has specified rescue_format then pass it all through, otherwise use
4040
# raise and do the work ourselves
41-
if options.key?(:raise) || options.key?(:rescue_format)
42-
raise_error = options[:raise] || options[:rescue_format]
43-
else
44-
raise_error = false
41+
options[:raise] ||= ActionView::Base.raise_on_missing_translations
42+
43+
raise_error = options[:raise] || options.key?(:rescue_format)
44+
unless raise_error
4545
options[:raise] = true
4646
end
4747

actionview/test/template/translation_helper_test.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,16 @@ def test_returns_missing_translation_message_using_nil_as_rescue_format
5353
assert_equal false, translate(:"translations.missing", :rescue_format => nil).html_safe?
5454
end
5555

56+
def test_raises_missing_translation_message_with_raise_config_option
57+
ActionView::Base.raise_on_missing_translations = true
58+
59+
assert_raise(I18n::MissingTranslationData) do
60+
translate("translations.missing")
61+
end
62+
ensure
63+
ActionView::Base.raise_on_missing_translations = false
64+
end
65+
5666
def test_raises_missing_translation_message_with_raise_option
5767
assert_raise(I18n::MissingTranslationData) do
5868
translate(:"translations.missing", :raise => true)

guides/source/configuring.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,8 @@ encrypted cookies salt value. Defaults to `'signed encrypted cookie'`.
386386

387387
The default setting is `true`, which uses the partial at `/admin/posts/_post.erb`. Setting the value to `false` would render `/posts/_post.erb`, which is the same behavior as rendering from a non-namespaced controller such as `PostsController`.
388388

389+
* `config.action_view.raise_on_missing_translations` determines whether an error should be raised for missing translations
390+
389391
### Configuring Action Mailer
390392

391393
There are a number of settings available on `config.action_mailer`:

railties/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,7 @@ Rails.application.configure do
3535
# Raises helpful error messages.
3636
config.assets.raise_runtime_errors = true
3737
<%- end -%>
38+
39+
# Raises error for missing translations
40+
# config.action_view.raise_on_missing_translations = true
3841
end

railties/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,7 @@ Rails.application.configure do
3333

3434
# Print deprecation notices to the stderr.
3535
config.active_support.deprecation = :stderr
36+
37+
# Raises error for missing translations
38+
# config.action_view.raise_on_missing_translations = true
3639
end

0 commit comments

Comments
 (0)