当前位置:Linux教程 - Linux综合 - Tcl/Tk 汉化解决方案

Tcl/Tk 汉化解决方案

  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 和这个 简单的界面打包供下载.

(出处:http://www.sheup.com)