This is CAN-2005-2095
[squirrelmail.git] / functions / i18n.php
index 1140b9f81adc752e40800da6e8ce4cdd01197f21..15db37f9fe4ac286103c7a4d39e8d1075d13f678 100644 (file)
@@ -322,6 +322,10 @@ function set_up_language($sm_language, $do_search = false, $default = false) {
         $squirrelmail_language = $squirrelmail_default_language;
         $sm_language = $squirrelmail_default_language;
     }
+
+    /** provide failsafe language when detection fails */
+    if (! $sm_language) $sm_language='en_US';
+
     $sm_notAlias = $sm_language;
 
     // Catching removed translation
@@ -437,12 +441,12 @@ function set_up_language($sm_language, $do_search = false, $default = false) {
         } else {
             header( 'Content-Type: text/html; charset=' . $languages[$sm_notAlias]['CHARSET'] );
         }
-
         /**
          * mbstring.func_overload fix (#929644).
          *
          * php mbstring extension can replace standard string functions with their multibyte
-         * equivalents. See http://www.php.net/ref.mbstring#mbstring.overload.
+         * equivalents. See http://www.php.net/ref.mbstring#mbstring.overload. This feature 
+         * was added in php v.4.2.0
          *
          * Some SquirrelMail functions work with 8bit strings in bytes. If interface is forced
          * to use mbstring functions and mbstring internal encoding is set to multibyte charset,
@@ -456,7 +460,7 @@ function set_up_language($sm_language, $do_search = false, $default = false) {
             function_exists('mb_internal_encoding') &&
             check_php_version(4,2,0) &&
             (int)ini_get('mbstring.func_overload')!=0) {
-            mb_internal_encoding('ASCII');
+            mb_internal_encoding('pass');
         }
     }
     return 0;
@@ -1133,7 +1137,7 @@ $languages['sv']['ALIAS'] = 'sv_SE';
 
 $languages['th_TH']['NAME']    = 'Thai';
 $languages['th_TH']['CHARSET'] = 'tis-620';
-$languages['th_TH']['LOCALE']  = 'th_TH.TIS-620';
+$languages['th_TH']['LOCALE']  = array('th_TH.TIS-620','th_TH');
 $languages['th']['ALIAS'] = 'th_TH';
 
 $languages['tl_PH']['NAME']    = 'Tagalog';
@@ -1148,12 +1152,12 @@ $languages['tr']['ALIAS'] = 'tr_TR';
 
 $languages['zh_TW']['NAME']    = 'Chinese Trad';
 $languages['zh_TW']['CHARSET'] = 'big5';
-$languages['zh_TW']['LOCALE']  = 'zh_TW.BIG5';
+$languages['zh_TW']['LOCALE']  = array('zh_TW.BIG5','zh_TW');
 $languages['tw']['ALIAS'] = 'zh_TW';
 
 $languages['zh_CN']['NAME']    = 'Chinese Simp';
 $languages['zh_CN']['CHARSET'] = 'gb2312';
-$languages['zh_CN']['LOCALE']  = 'zh_CN.GB2312';
+$languages['zh_CN']['LOCALE']  = array('zh_CN.GB2312','zh_CN');
 $languages['cn']['ALIAS'] = 'zh_CN';
 
 $languages['uk_UA']['NAME']    = 'Ukrainian';
@@ -1179,12 +1183,12 @@ $languages['ar']['DIR']     = 'rtl';
 $languages['fa_IR']['NAME']    = 'Farsi';
 $languages['fa_IR']['CHARSET'] = 'utf-8';
 $languages['fa_IR']['DIR']     = 'rtl';
-$languages['fa_IR']['LOCALE']  = 'fa_IR.UTF-8';
+$languages['fa_IR']['LOCALE']  = array('fa_IR.UTF-8','fa_IR');
 $languages['fa']['ALIAS']      = 'fa_IR';
 
 $languages['he_IL']['NAME']    = 'Hebrew';
 $languages['he_IL']['CHARSET'] = 'windows-1255';
-$languages['he_IL']['LOCALE']  = 'he_IL.CP1255';
+$languages['he_IL']['LOCALE']  = array('he_IL.CP1255','he_IL');
 $languages['he_IL']['DIR']     = 'rtl';
 $languages['he']['ALIAS']      = 'he_IL';