Explorar o código

Change getLangFromHTTP()

For the header ACCEPT_LANGUAGE, which does not contain a separate code
for the main part of the language.
Visman %!s(int64=5) %!d(string=hai) anos
pai
achega
2cdcd19568
Modificáronse 1 ficheiros con 10 adicións e 1 borrados
  1. 10 1
      app/Models/User/Current.php

+ 10 - 1
app/Models/User/Current.php

@@ -259,15 +259,24 @@ class Current extends Action
     {
     {
         if (! empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
         if (! empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
             $langs = $this->c->Func->getLangs();
             $langs = $this->c->Func->getLangs();
+            $main = [];
             foreach ($this->c->Func->langParse($_SERVER['HTTP_ACCEPT_LANGUAGE']) as $entry) {
             foreach ($this->c->Func->langParse($_SERVER['HTTP_ACCEPT_LANGUAGE']) as $entry) {
-                $arr = \explode('-', $entry);
+                $arr = \explode('-', $entry, 2);
                 if (isset($arr[1])) {
                 if (isset($arr[1])) {
                     $entry = $arr[0] . '_' . \strtoupper($arr[1]);
                     $entry = $arr[0] . '_' . \strtoupper($arr[1]);
+                    $main[] = $arr[0];
                 }
                 }
                 if (isset($langs[$entry])) {
                 if (isset($langs[$entry])) {
                     return $langs[$entry];
                     return $langs[$entry];
                 }
                 }
             }
             }
+            if (! empty($main)) {
+                foreach ($main as $entry) {
+                    if (isset($langs[$entry])) {
+                        return $langs[$entry];
+                    }
+                }
+            }
         }
         }
         return $this->c->config->o_default_lang;
         return $this->c->config->o_default_lang;
     }
     }