Просмотр исходного кода

#1282 Correct language detection in TinyMCE and Timepicker

Alex Trofimov 8 лет назад
Родитель
Сommit
5404c4b2df
2 измененных файлов с 25 добавлено и 1 удалено
  1. 20 1
      inc/classes/BxDolLanguages.php
  2. 5 0
      inc/classes/BxDolLanguagesQuery.php

+ 20 - 1
inc/classes/BxDolLanguages.php

@@ -104,6 +104,14 @@ class BxDolLanguages extends BxDolFactory implements iBxDolSingleton
         return strtoupper($this->oDb->getLanguageDirection($sLang));
     }
 
+    function getLangCountryCode($sLang = '')
+    {
+        if (!$sLang)
+            $sLang = $this->getCurrentLanguage();
+
+        return $this->oDb->getLangCountryCode($sLang);
+    }
+    
     function getDefaultLangName()
     {
         return getParam('lang_default');
@@ -130,7 +138,18 @@ class BxDolLanguages extends BxDolFactory implements iBxDolSingleton
      */
     function detectLanguageFromArray($aLangs, $sFallbackLanguage = 'en')
     {
-        return isset($aLangs[$GLOBALS['sCurrentLanguage']]) ? $GLOBALS['sCurrentLanguage'] : $sFallbackLanguage;
+        if (isset($aLangs[$GLOBALS['sCurrentLanguage']])) {
+            return $GLOBALS['sCurrentLanguage'];
+        } 
+        elseif ($sLangCountry = $this->getLangCountryCode()) {
+            if (isset($aLangs[$sLangCountry]))
+                return $sLangCountry;
+            $sLangCountry = str_replace('_', '-', $sLangCountry);
+            if (isset($aLangs[$sLangCountry]))
+                return $sLangCountry;            
+        }
+
+        return $sFallbackLanguage;
     }
 
     /**

+ 5 - 0
inc/classes/BxDolLanguagesQuery.php

@@ -56,6 +56,11 @@ class BxDolLanguagesQuery extends BxDolDb implements iBxDolSingleton
     {
         return $this->getLanguageField($sName, 'Direction', $bFromCache);
     }
+
+    function getLangCountryCode($sName, $bFromCache = true)
+    {
+        return $this->getLanguageField($sName, 'LanguageCountry', $bFromCache);
+    }
     
     protected function getLanguageField($sName, $sField, $bFromCache = true)
     {