aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionmailer/lib/action_mailer/base.rb5
-rw-r--r--actionpack/lib/abstract_controller/rendering.rb3
-rw-r--r--actionpack/lib/action_view/lookup_context.rb13
3 files changed, 16 insertions, 5 deletions
diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb
index 5045a9c0ca..9c0f5d0ac3 100644
--- a/actionmailer/lib/action_mailer/base.rb
+++ b/actionmailer/lib/action_mailer/base.rb
@@ -375,6 +375,11 @@ module ActionMailer #:nodoc:
process(method_name, *args) if method_name
end
+ def process(*args) #:nodoc:
+ lookup_context.skip_default_locale!
+ super
+ end
+
# Allows you to pass random and unusual headers to the new +Mail::Message+ object
# which will add them to itself.
#
diff --git a/actionpack/lib/abstract_controller/rendering.rb b/actionpack/lib/abstract_controller/rendering.rb
index 98c8c5fa67..d2db366140 100644
--- a/actionpack/lib/abstract_controller/rendering.rb
+++ b/actionpack/lib/abstract_controller/rendering.rb
@@ -24,8 +24,7 @@ module AbstractController
end
def locale=(value)
- @i18n_config.locale = value
- @lookup_context.update_details(:locale => @i18n_config.locale)
+ @lookup_context.locale = value
end
end
diff --git a/actionpack/lib/action_view/lookup_context.rb b/actionpack/lib/action_view/lookup_context.rb
index 6e61d85dcc..7021342b4a 100644
--- a/actionpack/lib/action_view/lookup_context.rb
+++ b/actionpack/lib/action_view/lookup_context.rb
@@ -58,7 +58,7 @@ module ActionView
def initialize(view_paths, details = {})
@details, @details_key = { :handlers => default_handlers }, nil
- @frozen_formats = false
+ @frozen_formats, @skip_default_locale = false, false
self.view_paths = view_paths
self.update_details(details, true)
end
@@ -147,7 +147,13 @@ module ActionView
super(value)
end
- # Overload locale to return a symbol instead of array
+ # Do not use the default locale on template lookup.
+ def skip_default_locale!
+ @skip_default_locale = true
+ self.locale = nil
+ end
+
+ # Overload locale to return a symbol instead of array.
def locale
@details[:locale].first
end
@@ -160,7 +166,8 @@ module ActionView
config = I18n.config.respond_to?(:i18n_config) ? I18n.config.i18n_config : I18n.config
config.locale = value
end
- super(_locale_defaults)
+
+ super(@skip_default_locale ? I18n.locale : _locale_defaults)
end
# Update the details keys by merging the given hash into the current