Merges an updated upstream from main.
[timetracker.git] / WEB-INF / lib / I18n.class.php
index f21c0a0..a9f1b43 100644 (file)
@@ -124,22 +124,31 @@ class I18n {
     return file_exists($filename);
   }
 
+  // getBrowserLanguage() returns a first supported language from browser settings.
   function getBrowserLanguage()
   {
     $acclang = @$_SERVER['HTTP_ACCEPT_LANGUAGE'];
     if (empty($acclang)) {
-      return "";
+      return false;
     }
     $lang_prefs = explode(',', $acclang);
     foreach ($lang_prefs as $lang_pref) {
       $lang_pref_parts = explode(';', trim($lang_pref));
-      $lang_parts = explode('-', trim($lang_pref_parts[0]));
+      $lang = $lang_pref_parts[0];
+      if ($this->hasLang($lang)) {
+        return $lang; // Return full language designation (if available), such as pt-BR.
+      }
+
+      if (strlen($lang) <= 2)
+        continue; // Do not bother determining main language because we already have it.
+
+      $lang_parts = explode('-', trim($lang));
       $lang_main = $lang_parts[0];
-      if ($this->hasLang($lang_main)) {
-        return $lang_main;
+      if ($lang_main != $lang && $this->hasLang($lang_main)) {
+        return $lang_main; // Return main language designation, such as pt.
       }
     }
-    return "";
+    return false;
   }
 
   // getLangFileList() returns a list of language files.