]> dev.renevier.net Git - syp.git/blobdiff - inc/langutils.php
localization: do not consider regionalized accept languages
[syp.git] / 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);