module Tight::Engine::Locale

Private Instance Methods

detect_preferred_locale() click to toggle source
# File lib/tight-engine/locale.rb, line 23
def detect_preferred_locale
  detected_locale = if preferred_languages = request.env['HTTP_ACCEPT_LANGUAGE']
    (parse_http_accept_language(preferred_languages) & swift.locales).first
  end
  detected_locale ||= swift.locales.first
  detected_locale.to_sym
end
detect_selected_locale() click to toggle source
# File lib/tight-engine/locale.rb, line 6
def detect_selected_locale
  selected_locale = params[:locale].to_s[0..1]
  if swift.locales.include?(selected_locale)
    selected_locale.to_sym
  else
    detect_session_locale
  end
end
detect_session_locale() click to toggle source
# File lib/tight-engine/locale.rb, line 15
def detect_session_locale
  if session[:locale].present? && swift.locales.include?(session[:locale].to_s)
    session[:locale].to_sym
  else
    detect_preferred_locale
  end
end
parse_http_accept_language( languages ) click to toggle source
# File lib/tight-engine/locale.rb, line 31
def parse_http_accept_language( languages )
  languages.gsub(/\s+/,'').split(/,/)
           .sort_by{ |tags| -(tags.partition(/;/).last.split(/=/)[1]||1).to_f }
           .map{ |language| language[0..1] }.uniq
rescue # !!! FIXME detect valid Exceptions
  []
end