-
Qt国际化步骤:
- 把需要翻译的地方全部用tr("")函数包含进来。
- 在pro文件中加入 TRANSLATIONS += XXX.ts。
- 如下图所示,单击更新翻译,生成XXX.ts文件。
- 使用Qt的Linguist工具翻译ts,然后保存。
- 单击上图中的发布翻译,发布生成qm文件。
- 在main函数中窗口显示前加入以下代码:
QTranslator translator;
translator.load("XXX.qm");
app.installTranslator(&translator);
Qt国际化可能遇到的不完全或者失败的问题
- 父类继承了Qt的类并且加入了Q_OBJECT宏,在子类中由于没有用到信号槽,因此用tr(“”)包含好后,编译的时候不会有问题,翻译好发布成功,但没有汉化成功。
- 解决办法:这个问题是没有添加Q_OBJECT,所有子类都加上Q_OBJECT宏,或者都用QObject::tr(""), 我那时候想着父类的Qt自带的类,就直接用的tr(""),结果遇到问题,加上Q_OBJECT宏就立马解决了。
2 . 没有用tr("")包含好,像QString("中文%1").arg(i)。
- 解决办法:需要把这个拆分开来 QString(tr("中文")) + QString("%1").arg(i)。
3. 发布的时候用linguist发布,导致汉化不完全。
- 解决办法:使用上面提到的方法来发布。
4. 遇到qm文件路径不对,载入不成功, 这个是路径问题导致了。
- 解决办法:这个是由于文件路径导致的。
5.