Qt 库的国际化支持.

要使程序支持国际化.首先你得知道 QObject::tr() 的使用方法.还有就是 QString 内部是使用 unicode 编码的.
如果你还不知道上面说的两点有何意义.那么你必须先理解它们,然后再阅读下去.

1. 使用 findtr 工具得到你程序里需要翻译的地方.当然,这些地方都是你通过 tr() 自己设置的.
    findtr *.cpp *.h > myApp.po

2. 拷贝一份 myApp.po .用文本编辑工具打开它.修改其中的编码设定.
    在myApp.po中找到"Content-Type: text/plain; charset=iso-8859-1/n" 一行.
    将charset=iso-8859-1修改为你要使用的字符集.比如我要修改成中文那么修改后,这一行变成这样:
    "Content-Type: text/plain; charset=GB2312/n"
    为了让其他人能够更加清晰的知道你本次翻译的语言.我将 myApp.po 文件改名为 myApp_cn.po.
   
3. 继续往下看 myApp_cn.po 文件.会出现如下信息:
    #: globalpage.cpp:77
    msgid "GlobalPage::Add"
    msgstr ""
   
    '#' 是注释标志. 后面的意思是这个翻译出现在原文件的哪里.
    msgid 这行是说 GlobalPage类里有 "Add" 这样一个string使用了 tr()修饰.
    msgstr "" 这里就是你翻译的地方了.比如我翻译成中文,最后的结果是这样的:
    #: globalpage.cpp:77
    msgid "GlobalPage::Add"
    msgstr "添加"
   
    如此翻译所有你使用 tr() 修饰过的string.
    ps:这里有很多 .po 文件编辑工具可以使用.这些工具一定可以使用字典的.目前我没研究它们.

4. 翻译完所有string后,保存退出.然后使用 msg2qm 工具把 .po 文件制作成 .qm 的二进制文件.
    msg2qm myApp_cn.po myApp_cn.qm

5. 让程序在显示客户文本时,使用翻译后的string.
    你可以在 main.cpp 中添加如下代码:
    #include <qtranslator.h>
   
    int main(int argc, char **argv )
    {
        QApplication a( argc, argv );

        QTranslator tror(0);
        tror.load("myApp_cn.qm", ".");
        a.installTranslator(&tror);

       // ....
    }
    只需要注意 QTranslator::load() 函数的第1个参数.写对路径就OK了.(这里我把 myApp_cn.qm 文件和应用程序放在同级路径中)
   
就是这么简单.也许你还想在线改变语种.怎么办?我已经告诉你了.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值