From: J Guthrie Date: Sun, 27 May 2018 14:12:34 +0000 (+0100) Subject: Change language immediately after updating settings X-Git-Tag: live~2976 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/30756f72ca2e3db095d00bc3b90bb3e47ca4ab6f?hp=973e7ae3982fcfe1d55913690c8c0a9315f5c978 Change language immediately after updating settings Closes #1883 --- diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 1625c81c1..3afb17f47 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -295,7 +295,8 @@ class ApplicationController < ActionController::Base end end - def preferred_languages + def preferred_languages(reset = false) + @preferred_languages = nil if reset @preferred_languages ||= if params[:locale] Locale.list(params[:locale]) elsif current_user @@ -307,13 +308,13 @@ class ApplicationController < ActionController::Base helper_method :preferred_languages - def set_locale + def set_locale(reset = false) if current_user && current_user.languages.empty? && !http_accept_language.user_preferred_languages.empty? current_user.languages = http_accept_language.user_preferred_languages current_user.save end - I18n.locale = Locale.available.preferred(preferred_languages) + I18n.locale = Locale.available.preferred(preferred_languages(reset)) response.headers["Vary"] = "Accept-Language" response.headers["Content-Language"] = I18n.locale.to_s diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 54e2fa9c0..63fad8c83 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -118,7 +118,6 @@ class UserController < ApplicationController end def account - @title = t "user.account.title" @tokens = current_user.oauth_tokens.authorized if params[:user] && params[:user][:display_name] && params[:user][:description] @@ -135,6 +134,7 @@ class UserController < ApplicationController current_user.errors.add(attribute, error) end end + @title = t "user.account.title" end def go_public @@ -712,7 +712,7 @@ class UserController < ApplicationController end if user.save - set_locale + set_locale(true) if user.new_email.blank? || user.new_email == user.email flash.now[:notice] = t "user.account.flash update success" diff --git a/app/models/user.rb b/app/models/user.rb index da3964142..036f2fdc4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -112,6 +112,7 @@ class User < ActiveRecord::Base before_save :encrypt_password before_save :update_tile after_save :spam_check + after_save :reset_preferred_languages def to_param display_name @@ -192,6 +193,10 @@ class User < ActiveRecord::Base @preferred_languages ||= Locale.list(languages) end + def reset_preferred_languages + @preferred_languages = nil + end + def nearby(radius = NEARBY_RADIUS, num = NEARBY_USERS) if home_lon && home_lat gc = OSM::GreatCircle.new(home_lat, home_lon)