diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c6f2b26..db1d32a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -10,7 +10,24 @@ class ApplicationController < ActionController::Base end def set_locale - I18n.locale = params[:locale] || I18n.default_locale + in_use_locales = current_site.in_use_locales + + if params[:locale] + session[:locale] = in_use_locales.include?(params[:locale].to_sym) ? params[:locale] : nil + end + + if !params[:locale] and !session[:locale] + if current_site.enable_language_detection + browser_locale = request.env['HTTP_ACCEPT_LANGUAGE'].split(',').first.underscore rescue nil + session[:locale] = in_use_locales.include?(browser_locale.to_sym) ? browser_locale : nil + elsif current_site.default_locale + session[:locale] = current_site.default_locale + end + end + + session[:locale] = session[:locale].blank? ? I18n.default_locale : session[:locale] + + I18n.locale = session[:locale] end def get_layout