QT 国际化开发

使用 QT 开发软件的多语言版本是很方便的,借助 QT-Linguist 工具和几个函数就可以实现了。


第一步:在.pro 文件中添加 TRANSLATIONS 项,例如:
               TRANSLATIONS = xxx_zh_CN.ts \
                                              xxx_en_US.ts

其中 XXX_zh_CN 可以任意命名, ts 固定不能改。
第二步:编写软件代码。凡是遇到需要翻译的字符串都要用 tr 函数定义,QT 的多语言工具只针对 tr 函数定义的字符 串进行翻译,这一点很重要。
第三步:抽取字符串。即从代码中抽取出用 tr 定义的字符串。在控制台下执行 lupdate 命令: lupdate xxx.pro。 这个 过程会生成第一步中定义的xxx_zh_CN.ts、xxx_en_US.ts 文件, 其实是 xml 文件。
第四步:翻译。 使用 QT-Linguist打开 ts 文件, 逐条翻译字符串,翻译完了以后用 Release As 保存,生成.qm 文 件。
第五步:添加加载语言文件代码:在 main 函数最开始的地方添加如下代码:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QString file = "xxx_zh_CN"; //不需要后缀
QTranslator translator;
translator.load(file);
app.installTranslator(&translator);
MainWindow mainWindow;
mainWindow.show();
return app.exec();
}

编译软件,把.qm 文件放在可执行文件目录下,即可运行。
顺便提一个函数:
QLocale::system().name();
这个函数根据当前运行的操作系统的具体语言环境返回一个字符串,形如 zh_CN,借助这个函数,可以让软件根据当前的系统环境,自动加载语言。

例如:

    QTranslator appTranslator;
    QString locale = QLocale::system().name(); // locale = "zh_CN"
    appTranslator.load(QString("%1/Translations/rtdb_%2").arg(CPublicFuns::GetProgramDirPath()).arg(locale));
    a.installTranslator(&appTranslator);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值