diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 50bc0e906..fc0430d05 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -46,9 +46,11 @@ class ApplicationController < ActionController::Base session[:locale] = params[:locale] end - session[:locale] ||= I18n.default_locale - - locale = session[:locale] + if session[:locale] && I18n.available_locales.include?(session[:locale].to_sym) + locale = session[:locale] + else + locale = I18n.default_locale + end if current_user && current_user.locale != locale.to_s current_user.update(locale: locale) diff --git a/spec/system/localization_spec.rb b/spec/system/localization_spec.rb index 4056cb8dd..94801ae5d 100644 --- a/spec/system/localization_spec.rb +++ b/spec/system/localization_spec.rb @@ -88,4 +88,22 @@ describe "Localization" do end end end + + scenario "uses default locale when session locale has disappeared" do + default_locales = I18n.available_locales + + visit root_path(locale: :es) + + expect(page).to have_content "Entrar" + + begin + I18n.available_locales = default_locales - [:es] + + visit root_path + + expect(page).to have_content "Sign in" + ensure + I18n.available_locales = default_locales + end + end end