From c9d09bbe43f268c11cadc9846652ff33521edf6c Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Wed, 25 Jan 2006 15:10:12 -0500
Subject: [PATCH] Updated localizations

---
 program/include/main.inc |   48 ++++++++++++++++++++++++++++--------------------
 1 files changed, 28 insertions(+), 20 deletions(-)

diff --git a/program/include/main.inc b/program/include/main.inc
index 307a880..99eaa91 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -21,6 +21,7 @@
 
 require_once('lib/des.inc');
 require_once('lib/utf7.inc');
+require_once('lib/utf8.class.php');
 
 
 // register session and connect to server
@@ -701,33 +702,40 @@
 // this function is not complete and not tested well
 function rcube_charset_convert($str, $from, $to=NULL)
   {
-  $from = strtolower($from);
-  $to = $to==NULL ? strtolower($GLOBALS['CHARSET']) : strtolower($to);
+  $from = strtoupper($from);
+  $to = $to==NULL ? strtoupper($GLOBALS['CHARSET']) : strtoupper($to);
   
   if ($from==$to)
     return $str;
-  
-  // decode characters
-  if ($from=='utf-7')
-    $str = UTF7DecodeString($str);
-  else if ($from=='utf-8' && function_exists('utf8_decode'))
-    $str = utf8_decode($str);
-  else if ($from=="koi8-r")
-    $str = convert_cyr_string($str, 'k', 'i');
-  else if ($from=="windows-1251" || $from=="win-1251")
-    $str = convert_cyr_string($str, 'w', 'i');
-  else if ($from=="x-cp866")
-    $str = convert_cyr_string($str, 'a', 'i');
-  else if ($from=="x-mac-cyrillic")
-    $str = convert_cyr_string($str, 'm', 'i');
+    
+  // convert charset using iconv module  
+  if (function_exists('iconv') && $from!='UTF-7' && $to!='UTF-7') {
+    return iconv($from, $to, $str);
+    }
+    
+  // convert string to UTF-8
+  if ($from=='UTF-7')
+    $str = rcube_charset_convert(UTF7DecodeString($str), 'ISO-8859-1');
+  else if ($from=='ISO-8859-1' && function_exists('utf8_encode'))
+    $str = utf8_encode($str);
+  else if ($from!='UTF-8')
+    {
+    $conv = new utf8($from);
+    $str = $conv->strToUtf8($str);
+    }
 
   // encode string for output
-  if ($to=='utf-8' && function_exists('utf8_encode'))
-    return utf8_encode($str);
-  else if ($to=='utf-7')
+  if ($to=='UTF-7')
     return UTF7EncodeString($str);
+  else if ($to=='ISO-8859-1' && function_exists('utf8_decode'))
+    return utf8_decode($str);
+  else if ($to!='UTF-8')
+    {
+    $conv = new utf8($to);    
+    return $conv->utf8ToStr($str);
+    }
 
-  // return raw string
+  // return UTF-8 string
   return $str;
   }
 

--
Gitblit v1.9.1