用GNU Gettext实现delphi多语言界面

再次使用到,故而更新日志。

为了使程序能在不同的window版本中不乱码,可以使用delphi2010编写,已默认支持UNICODE。而多语言界面,delphi 程序可借助GNU Gettext for Delphi and C++ Builder实现。SVN中的版本确定可使用于delphi 2010, 源码注释中有“$LastChangedDate: 2010-07-27 18:06:35 +0800 (星期二, 27 七月 2010)”字样就明白了。

sourceforge上的安装程序有点老,源码需要从SVN中check out出来,但首先还是使用安装文件dxgettext-1.2.2.exe,它会在右键中增加菜单,并且设置po文件的默认打开程序等,省去很多的麻烦。之后将svn中的源码编译一遍,分别替换dxgettext-1.2.2.exe安装目录里的可执行程序。

大致步骤(只总结我使用到的,详细的可参照文档):
1. 将gnugettext.pas加入.dpr工程文件中

2. 设置使用的语言(在form显示之前,我放在.dpr中)

UseLanguage(‘zh_CN’);

3. 启用翻译,我放在FormCreate中.

TranslateComponent(self);

4. 右击源码目录,在菜单中选择生成po模板,使用poEdit做翻译,并编译为mo文件.
5. 最后的目录结构如下:

rootDir/Hello.exe
         /locale/zh_CN/LC_MESSAGES/default.mo   //中文语言包
         /locale/en/LC_MESSAGES/default.mo        //英文语言包

6. 也可以比较变态地把*.mo直接打包进exe程序,很“清爽”。
不过打包工具需要从svn中获取源码重新编译,sourceforge上打包好的版本太老了。

Comments (7)