簡繁轉換程式交流

edited 十一月 -1 in 原創軟體分享區
原本是使用下載區的 "深藍UTF-8正體簡體轉換函數" ,在 dbcconv() 裡面的迴圈需要做個修正:
	for ($i = 0; $i < $textLength; $i++) {
if ($i + 3 > $textLength) {
$tmp .= substr($text, $i, 1);
} else {
$str = substr($text, $i, 3);
if (dbcconv_isChinese($str)) {
$tmp .= $data[dbcconv_id($str)];
$i = $i + 2;
} else {
$tmp .= substr($text, $i, 1);
}
}
}


否則轉換字串最後一個碼不是中文的時候會變成亂碼。由於它只有做到字的轉換,所以還是去找包括詞的轉換方案,也就是 mediawiki 裡面的 includes/ZhConversion.php ,它是用 includes/zhtable/ 裡面的指令製作出來,但是那個 makefile 已經年久失修,今天試著修正它之後上傳到官方網站:
https://bugzilla.wikimedia.org/show_bug.cgi?id=34034#c1

可惜還有點問題,我對 shell script 沒有那麼熟悉...

它的用法很簡單, include 到程式之後,透過 $translated = strtr($val, $zh2Hant); 就可以將 $val 從簡體字轉為繁體字,再一個 $translated = strtr($translated, $zh2TW); 就可以進行 簡體 -> 繁體 的用詞轉換。

還有很多外部工具可以使用,因為需要在 PHP 裡把它解決,所以測試了一陣子,也許有更好的解法?

另外,透過 strtr() 執行的速度比 深藍UTF-8正體簡體轉換函數 快很多 ;)

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=7001

評論

  • edited 十月 2012
    ZhConversion 的部份是我誤會了,他們已經改用 Makefile.py 製作,下面是我調整的設定

    # DEFINE
    UNIHAN_VER = '6.2.0'
    SF_MIRROR = 'nchc'
    SCIM_TABLES_VER = '0.5.12'
    SCIM_PINYIN_VER = '0.5.92'
    LIBTABE_VER = '0.2.3'
    # END OF DEFINE
  • edited 十一月 2012
    竟然在八年後被提到(那時候還是個小高中生),太誠惶誠恐了XD

    是說如果改用 phalcon 把它寫成 extension 不知道會不會更快呢?

    ps. phpconf 辛苦了XD
  • edited 十一月 2012
    理論上不會更快,因為 strtr() 應該就是以 C 語言實做的,就看你有沒有興趣挑戰它的演算法 ;)
  • edited 二月 2013
    這是在 linux 環境的實做範例(因為懶得另外寫遞迴的目錄搜尋,所以用 find)
    <?php
    include 'ZhConversion.php';
    $files = shell_exec('find . -type f');
    $files = explode(\"\n\", $files);
    foreach($files AS $file) {
    if(!empty($file)) {
    $content = file_get_contents($file);
    $content = strtr($content, $zh2Hant);
    $content = strtr($content, $zh2TW);
    file_put_contents($file, $content);
    }
    }
Sign In or Register to comment.