# File mod_docs/lang.rb, line 9
  def self.parse_accept_lang(lang_ranges)
    lang_range_list = Array.new
    lang_ranges.split(/,/).each_with_index do |lang_range_with_qvalue, i|
      lang_range, qvalue = lang_range_with_qvalue.split(/;/, 2)
      lang_range.strip!
      language, country = lang_range.split(/-/, 2)
      language.strip!
      country.strip! if country
      lang_info = {
        :language => language,
        :country => country,
        :length => lang_range.length,
        :order => i
      }
      if (qvalue =~ /q=(1(\.0*)?|0(\.\d*)?)/)
        lang_info[:q] = $1.to_f
      else
        lang_info[:q] = 1.0
      end
      lang_range_list.push(lang_info)
    end
    lang_range_list.sort!{ |a, b|
      cmp = b[:q] <=> a[:q]
      cmp = b[:length] <=> a[:length] if (cmp == 0)
      cmp = a[:order] <=> b[:order] if (cmp == 0)
      cmp
    }
    for lang_info in lang_range_list
      lang_info.delete(:length)
      lang_info.delete(:order)
    end

    lang_range_list
  end