# File lib/cgikit.rb, line 3856
        def languages
                langs   = []
                quality = {}

                if accept_language then
                        accept_language.scan(/\s*([^,;]*)\s*;\s*q\s*=\s*([^,]*),|([^,]*),/) do |match|
                                lang = match.pop  || match.shift
                                q    = (match.pop || 1).to_f

                                if lang =~ /([^-]*)-(.*)/ then lang = $1 end

                                if quality[lang] then
                                        if q > quality[lang] then
                                                quality[lang] = q
                                        end
                                else
                                        quality[lang] = q
                                end
                        end

                        sorted = quality.sort do |a,b|
                                if    a.last <  b.last then  1
                                elsif a.last == b.last then  0
                                elsif a.last >  b.last then -1
                                end
                        end

                        sorted.each do |lang|
                                langs << lang.first
                        end
                end

                langs
        end