lib/translation_io/controller.rb
module TranslationIO
module Controller
def set_locale
requested_locale = params[:locale] ||
session[:locale] ||
cookies[:locale] ||
extract_browser_locale(request.env['HTTP_ACCEPT_LANGUAGE']) ||
I18n.default_locale
if I18n.available_locales.include?(requested_locale.to_sym)
session[:locale] = requested_locale
I18n.locale = requested_locale
else
if respond_to?(:root_path)
redirect_to root_path(:locale => I18n.default_locale)
else
redirect_to "/?locale=#{I18n.default_locale}"
end
end
end
def extract_browser_locale(http_accept_language)
http_accept_language.to_s.scan(/[a-z]{2}(?:-[A-Z]{2})?/).detect do |candidate|
I18n.available_locales.include?(candidate.to_sym)
end
end
end
end