Localization in QT

本文对比了QT和VC在本地化方面的实现方法,详细介绍了QT如何通过tr函数标记需要本地化的字符串,使用lupdate和lrelease生成本地化文件的过程,以及这种方法在跨平台开发中的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Localization,在VC中,我们通常是创建一个Resource DLL,然后在添加各种资源,之后我们可以在程序中载入这个Resource DLL并加载这些资源。

VC中的资源由*.rc, resource.h来定义,如果还对应着外部文件,在必须有外部文件,并在*.rc中声明它的路径,比如bitmap等,都是这样干的。

这几天在搞QT,发现QT做localization的方案不错,和我知道的某个软件有异曲同工之妙:

>> 在代码中以tr(“Need LCSZ”)声明这个字符串需要Localize;

>> 用lupdate.exe来解析代码文件,将所有tr表示的字符串抽取出来,生成一个*.ts文件;

从下面的ts文件我们可以看出,它记录了一些需要localize的字符串

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="zh_CN">
<context>
    <name>QC_ActionGetEnt</name>
    <message>
        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="37"/>
        <source>Select object:</source>
        <translation>选择对象:</translation>
    </message>
    <message>
        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="44"/>
        <source>Cancel</source>
        <translation>取消</translation>
    </message>
</context>
<context>

>> 在QT linguist中打开这个文件,对所有被tr()函数标记的字符串进行翻译,并发布翻译包。

>> 调用lrelease生成*.qm文件,作为语言包。

QT的这个方法还是不错的,尤其便于跨平台开发,而且也比较方便,只需要把需要localize的字符串用tr包围就够了,其他的事情就可以交给做Localization的工程师了。

好,值得借鉴。

- Piaoger

转载于:https://www.cnblogs.com/piaoger/archive/2011/07/15/2106957.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值