diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2019-07-21 18:08:02 +0200 |
---|---|---|
committer | multiple creatures <dev@multiple-creature.party> | 2020-02-21 00:15:49 -0600 |
commit | 755d96d5b5f9c7e47e2f34d299d8965f6e8d4daa (patch) | |
tree | 320287b6773667c063b597b5b31c5876626671f8 /app/controllers/concerns | |
parent | c600f16baf66fac26ba40c0d3d4df46a822ede89 (diff) |
port tootsuite#8657: Change locale detection to run once per session
Fix #6462
Diffstat (limited to 'app/controllers/concerns')
-rw-r--r-- | app/controllers/concerns/localized.rb | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/app/controllers/concerns/localized.rb b/app/controllers/concerns/localized.rb index 145549bcd..b43859d9d 100644 --- a/app/controllers/concerns/localized.rb +++ b/app/controllers/concerns/localized.rb @@ -4,16 +4,19 @@ module Localized extend ActiveSupport::Concern included do - before_action :set_locale + around_action :set_locale end private def set_locale - I18n.locale = default_locale - I18n.locale = current_user.locale if user_signed_in? - rescue I18n::InvalidLocale - I18n.locale = default_locale + locale = current_user.locale if respond_to?(:user_signed_in?) && user_signed_in? + locale ||= session[:locale] ||= default_locale + locale = default_locale unless I18n.available_locales.include?(locale.to_sym) + + I18n.with_locale(locale) do + yield + end end def default_locale |