记录生活点滴,或痛苦,或快乐

用GNU Gettext实现delphi多语言界面

2010-08-01

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

为了使程序能在不同的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上打包好的版本太老了。

作者:sunu | 分类目录:Delphi开发 | 标签:

7 条评论

  1. 匿名 说道:

    估计老兄也支持用D7简单试一下,现在能下到的1.2.2版在Delphi2010下根本编译不过去

  2. sunu 说道:

    Delphi2010我确定100%可以编译。

  3. bai 说道:

    想问下 如果压缩文件后 如何让语言还能使用

  4. sunu 说道:

    没试过压缩。。。

  5. 匿名 说道:

    SVN 你好,请问SVN在那里呀?

  6. sunu 说道:

    svn地址:http://svn.berlios.de/svnroot/repos/dxgettext/trunk

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">