从网上搜了一堆解决方法,大多是考来考去,也没有解决我的问题;
基本的方法是
在窗口实例化之前,加载和安装QTranslator;
加载的qm文件从qt源文件中的ts文件中发布而来;
例如:C:\Qt\Qt5.13.0\5.13.0\Src\qttranslations\translations\qt_zh_CN.ts
使用Linguist 5.13.0 (MinGW 7.3.0 64-bit)打开后发布(文件-另外发布)qt_zh_CN.qm
添加到资源中地址是:/labels/qt_zh_CN.qm
在main.cpp中添加代码
#include <QApplication>
#include <QTranslator>
#include <QTextCodec>
#include <QFont>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//QApplication::setStyle(QStyleFactory::create("fusion"));
QTextCodec * textCodec = QTextCodec::codecForName("utf8");
QTextCodec::setCodecForLocale(textCodec);
QTranslator * translator = new QTranslator();
bool isLoad = translator->load(":/labels/qt_zh_CN.qm");
if(isLoad)
a.installTranslator(translator);
qDebug() << "tanslator load " << isLoad;
//设置全局文字大小,非必需,根据自身情况使用
QFont font = QFont("SimHei",10);
a.setFont(font);
MainWindow w;
w.show();
return a.exec();
}
返回True证明加载成功但是,
没有效果!仍然是OK Cancel Yes
从5.13源文件中找到繁体中文版qtbase_zh_TW.ts后生成qtbase_zh_TW.qm可以显示繁体中文!
后来在github上对比了一下后期版本qtbase_zh_CN.ts文件,格式确实不太一样;
因此从github上下载新版本的qtbase_zh_CN.ts重新发布后可以了qt_zh_CN.qm