研究VtigerCRM時,試圖把繁體語言插件轉成簡體版,并去除對iconv的依賴,因為很多php空間不支援;研究過GB2312,Big5,UTF-8之間的轉化方法。後來就扔到了一邊,最近有多個朋友詢問解決方案,于是重新找出來貢獻給大家;
本人對php所知不多,即使偶爾修改些php的網頁也是摸索着查資料來實作,望php行家莫見笑。
這個方案的特點就是使用簡單,隻要在需要調用轉換函數的頁面加入include_once'language.inc',就可以友善使用函數了。
關于使用方法就附上我當初轉語言插件的代碼:
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 <?php
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 function dirtree($path=".")
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 {
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 include_once 'language.inc';
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 $d = dir($path);
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 while(false !== ($v = $d->read()))
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 {
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 if($v == "." || $v == "..")
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 continue;
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 $file = $d->path."/".$v;
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 if(is_dir($file))
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 {
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 //echo "$v";
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 dirtree($file);
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 }
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 else
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 echo $file."\n";
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 //rename($file,str_replace('zh_tw','zh_cn',$file));
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 //$filename='zh_cn.lang.php';
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 $fd=fopen($file,'r');
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 $contents = fread($fd, filesize($file));
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 $contents=u2b($contents);
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 $contents=b2g($contents);
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 //echo $contents;
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 $contents=str_replace('日','月曆',$contents);
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 $contents=g2u($contents);
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 $contents=str_replace('Trade chinese language pack created by METO, Inc. http://www.meto.com.tw','Simple chinese language pack created by Steed Soft Technology, Inc. http://www.steedsoft.com',$contents);
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 fclose($fd);
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 $fd=fopen(str_replace('zh_tw/','zh_cn/',str_replace('zh_tw','zh_cn',$file)),'w');
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 fwrite($fd,$contents);
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 //rename($file,str_replace('zh_tw','zh_cn',$file));
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 }
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 $d->close();
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 //echo " ";
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 }
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 dirtree("zh_tw");
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等 ?>
<a href="http://www.layman.5gigs.com/download/dl.php?msg_id=10956b6fc41d59d8&attid=0.1&filesize=347988&filename=gb_big5_utf8.zip&user=0">下載下傳位址</a>
P.S
該方案的缺點,因為繁體中文和簡體中文存在一定的詞法不一緻的情況,是以會發現有些詞無法轉換,我從網上找到了兩個處理該問題的dat檔案,但具體實作我沒有做,以後也許會抽時間研究下并做個更新。