当使用qt标准对话框时,如QMessageBox,QFileDialog等时,默认都是英文。这时可以从qt安装路径下找到一个translations的文件夹,里面就是qt所有的翻译文件qm文件。
标准对话框主要使用qt_zh_CN.qm , 但是通过查看qt_zh_CN.ts文件里面只是4个文件,所以还得把这四个qm文件同时拷贝出来才能正常使用。
从translations文件中找到这5个文件,拷贝到自己的应用程序下面即可。
qt_zh_CN.qm(只有1kb大小,说明里面没什么数据)
qtbase_zh_CN.qm
qtscript_zh_CN.qm
qtmultimedia_zh_CN.qm
qtxmlpatterns_zh_CN.qm
qt_zh_CN.ts文件内容:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<dependencies>
<dependency catalog="qtbase_zh_CN"/>
<dependency catalog="qtscript_zh_CN"/>
<dependency catalog="qtmultimedia_zh_CN"/>
<dependency catalog="qtxmlpatterns_zh_CN"/>
</dependencies>
</TS>
加载过程:
QString qstrLanguage{ "0" };
GetBaseInfo("Language", qstrLanguage);
int iLanguage = qstrLanguage.toInt();
QTranslator translator; //不能放到if里面,无效
QTranslator translatorQt;
if (iLanguage == 1)
{
//加载qt标准窗口的语言,附带四个其他的
translatorQt.load(QCoreApplication::applicationDirPath() + "/qt_zh_CN.qm");
translator.load(QCoreApplication::applicationDirPath() + "/TransMeasureToolsVM_zh_CN.qm");
}
a.installTranslator(&translatorQt);
a.installTranslator(&translator);
也可以通过windeployqt 加载qt资源后,通过其中的 translations文件夹看到所有语言的集合,里面就将上述四个文件集合到一个qt_zh_CN.qm(134kb,已经集成了上述4个文件的)中,这种更简洁些。