localization: do not consider regionalized accept languages
authorarno <arenevier@fdn.fr>
Mon, 10 Aug 2009 19:56:30 +0000 (21:56 +0200)
committerarno <arenevier@fdn.fr>
Mon, 10 Aug 2009 19:56:30 +0000 (21:56 +0200)
inc/langutils.php

index 8a81b9c0f465a73f327e3c785259608011ec298e..8d458fa53e08c21be76a89803d845c14ca30ab81 100644 (file)
@@ -27,16 +27,16 @@ function parse_accept_language () {
         $accepts = explode (',',
                         strtolower ($_SERVER ['HTTP_ACCEPT_LANGUAGE']));
         foreach ($accepts as $acc) {
-            if (preg_match ('/^\s*([a-zA-Z-]+)\s*$/', $acc, $matches)) {
+            if (preg_match ('/^\s*([a-zA-Z]+)(-[a-zA-Z]+)?\s*$/', $acc, $matches)) {
                 $possibilities [$matches [1]] = 1.0;
             }
-            if (preg_match ('/^\s*([a-zA-Z-]+)\s*;\s*q\s*=\s*([0-9\.]+)\s*$/',
+            if (preg_match ('/^\s*([a-zA-Z]+)(-[a-zA-Z]+)?\s*;\s*q\s*=\s*([0-9\.]+)\s*$/',
                             $acc, $matches)) {
-                $val = floatval ($matches [2]);
+                $val = floatval ($matches [3]);
                 if ($val > 1.0) {
                     $val = 1.0;
                 }
-                $possibilities [$matches [1]] = $val;
+                $possibilities [$matches [1]] = max ($val, $possibilities [$matches [1]]);
             }
         }
         arsort ($possibilities);