歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> Tcl/Tk 漢化解決方案

Tcl/Tk 漢化解決方案

日期:2017/2/27 14:16:21   编辑:更多Linux
  Tcl/Tk 是Xwindows下比較流行的制作圖形界面的軟件之一,與GTK, QT相比,在 軟件編寫和調試上比較有優勢. 另外也具有很強的擴展功能. 用戶可以自己書寫 函數和編寫各種庫. 現在已經有PerlTk和Python利用Tcl/Tk 的擴展功能來實現 圖形功能. 當然,Tcl/Tk本身也有不足之處,原因之一是語法太過於free,有些接近 korn shell 和perl 5. 另外一個明顯的缺點是眾多script語言都具有的運行速度慢的問題. 我嘗試了不同的解釋器並采用中文界面和英文界面來對比,發現通常Tcl/Tk的運行 速度是Perl 5的一半左右,如果要調用中文界面,那麼速度大大受影響. 即使如此,Tcl/Tk也是在Unix/Linux下開發中文圖形界面的理想選擇之一. 下面介紹如何漢化Tcl/Tk: 1) 當前的tcl最新版本是tcl8.3.4,從tcl 8.1起都已經加入了i18n的支持. 但也許因為中文軟件發展緩慢,tcl 8.1始終不能支持中文. tcl 8.1裡 有關語言的部分在 unix/tclUnixInit.c 裡定義. 比如裡面的日文部分: {"japanese.sjis", "shiftjis"}, {"japanese.eUC", "euc-jp"}, {"japanese-sjis", "shiftjis"}, {"japanese-ujis", "euc-jp"}, 但是缺少中文, 那麼在 {NULL, NULL} 之前加上中文支持: {"zh_CN", "euc-cn"}, {"zh_CN.gbk", "euc-cn"}, {"zh_CN.gb2312", "euc-cn"}, 這樣重新編譯 tcl, 將得到的tclsh 覆蓋系統的tclsh .在這樣的情況下 tclsh 可以在中文 locale下運行. 而通常安裝的tclsh 不能在中文locale 下運行: setenv LC_ALL zh_CN ~$ tcl tcl> 同樣, wish 也可以在 zh_CN 下運行. 2 ) tclsh可以在中文 locale下運行還不能直接寫帶有中文的腳本, 例如下面 的話就是建立一個按鈕: button .b -text "按鈕" -command exit pack .b 這樣的按鈕一定是亂碼, 那麼配置上中文字體也不能解決顯示問題: .b config -font hanzigb16fs 解決辦法只有一個, 利用tclsh已經提供的 encoding 功能, 例如先將 "按鈕" 轉換成 euc-cn 代碼,然後就可以顯示了. 例如: #!/usr/bin/wish -f set a [encoding convertfrom euc-cn "按鈕" ] button .b -text $a -command exit -font hanzigb16fs pack .b 這樣就創建了一個中文的按鈕. 至此,中文的顯示問題已經全部解決, 利用Tcl/Tk ,我將 cdict 建立了一個圖形界面, 可以實現cdict 的基本功能. 地址: http://luliang.dhs.org/luliang/tcltk/tcltk.jpg 寫這個界面大約花了幾十分鐘, 而且我也不是很擅長寫程序,可見Tcl/Tk界面 功能的強大. 3) 前幾天我在另外一文中指出可以采用 unioncode 來解決, 可是實踐證明 不是一個好的辦法,雖然可以繞過許多問題但是本身要找到 unioncode 就不太 方便. button .b -text "\u592a\u9177" pack .b 就此打住,等我有空了會將最新的tcl/tk 連通漢化版本極其 cdict 和這個 簡單的界面打包供下載.




Copyright © Linux教程網 All Rights Reserved