QT的翻译还是有很多细节的,例如Qt linguist提供了msgid,如果指定一个QObject对象的msgid呢,如下
/*= msgid1*/
QObject::tr("测试1")
/*=msgid2*/
tr("测试2")
按照如下的写法会将msgid相同的进行合并成一个翻译词条,所以如果发现你的源代码的翻译提取失败,请查看是否是因为你不小心将默认值影响了你的翻译导致的,如下经常会出现出错
void showMessage(const int x /*= 100*/)
{
x = QObject::tr("测试");
.....
}
这个时候测试默认就给上了msgid=100的数值了,因为这个会导致翻译错误。