Browse Source

Bug. 765828. Rewrote patch in order to process locales correctly. If locale
is processed incorrectly, it is enough to add $languages['xx_XX']['LOCALE']
variable with full locale name. Fixed only ru_RU and lt_LT. Tested on
Linux Debian Woody and php 4.1.2, 4.2.3, 4.3.0, 4.3.2

tokul 22 years ago
parent
commit
0bd56c8b95
1 changed files with 13 additions and 6 deletions
  1. 13 6
      functions/i18n.php

+ 13 - 6
functions/i18n.php

@@ -215,14 +215,19 @@ function set_up_language($sm_language, $do_search = false, $default = false) {
 	if (function_exists('bind_textdomain_codeset')) {
 	if (function_exists('bind_textdomain_codeset')) {
 	     bind_textdomain_codeset ("squirrelmail", $languages[$sm_notAlias]['CHARSET'] );
 	     bind_textdomain_codeset ("squirrelmail", $languages[$sm_notAlias]['CHARSET'] );
 	}
 	}
+	if (isset($languages[$sm_notAlias]['LOCALE'])){
+	  $longlocale=$languages[$sm_notAlias]['LOCALE'];
+	} else {
+	  $longlocale=$sm_notAlias;
+	}
         if ( !ini_get('safe_mode') &&
         if ( !ini_get('safe_mode') &&
-             getenv( 'LC_ALL' ) != $sm_notAlias ) {
-            putenv( "LC_ALL=$sm_notAlias" );
-            putenv( "LANG=$sm_notAlias" );
-            putenv( "LANGUAGE=$sm_notAlias" );
+             getenv( 'LC_ALL' ) != $longlocale ) {
+            putenv( "LC_ALL=$longlocale" );
+            putenv( "LANG=$longlocale" );
+            putenv( "LANGUAGE=$longlocale" );
         }
         }
-        setlocale(LC_ALL, $sm_notAlias);
-        $squirrelmail_language = $sm_notAlias;
+	setlocale(LC_ALL, $longlocale);
+	$squirrelmail_language = $sm_notAlias;
         if ($squirrelmail_language == 'ja_JP' && function_exists('mb_detect_encoding') ) {
         if ($squirrelmail_language == 'ja_JP' && function_exists('mb_detect_encoding') ) {
             header ('Content-Type: text/html; charset=EUC-JP');
             header ('Content-Type: text/html; charset=EUC-JP');
             if (!function_exists('mb_internal_encoding')) {
             if (!function_exists('mb_internal_encoding')) {
@@ -378,6 +383,7 @@ $languages['pt']['ALIAS'] = 'pt_PT';
 
 
 $languages['ru_RU']['NAME']    = 'Russian';
 $languages['ru_RU']['NAME']    = 'Russian';
 $languages['ru_RU']['CHARSET'] = 'koi8-r';
 $languages['ru_RU']['CHARSET'] = 'koi8-r';
+$languages['ru_RU']['LOCALE'] = 'ru_RU.KOI8-R';
 $languages['ru']['ALIAS'] = 'ru_RU';
 $languages['ru']['ALIAS'] = 'ru_RU';
 
 
 $languages['sr_YU']['NAME']    = 'Serbian';
 $languages['sr_YU']['NAME']    = 'Serbian';
@@ -414,6 +420,7 @@ $languages['th']['ALIAS'] = 'th_TH';
 
 
 $languages['lt_LT']['NAME']    = 'Lithuanian';
 $languages['lt_LT']['NAME']    = 'Lithuanian';
 $languages['lt_LT']['CHARSET'] = 'windows-1257';
 $languages['lt_LT']['CHARSET'] = 'windows-1257';
+$languages['lt_LT']['LOCALE'] = 'lt_LT.CP1257';
 $languages['lt']['ALIAS'] = 'lt_LT';
 $languages['lt']['ALIAS'] = 'lt_LT';
 
 
 $languages['sl_SI']['NAME']    = 'Slovenian';
 $languages['sl_SI']['NAME']    = 'Slovenian';