用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上打包好的版本太老了。