1、将Qt自带的一些窗口和弹出菜单翻译成中文:如颜色窗口、鼠标右键QLineText、QMessageBox、QTextEdit等实现原理
1.1、加载qt语言翻译文件包qt_zh_CN.qm
在Qt的安装目录C:\Qt\Qt5.7.0VS2015\5.7\msvc2015\translations中有名为qt_zh_CN.qm翻译文件,QLineEdit等通过加载该翻译文件就能实现右键中文菜单,如下所示:
QApplication a(argc, argv);
//加载Qt中的资源文件,使Qt显示中文(包括QMessageBox、QLineEdit右键菜单等)
QTranslator translator;
translator.load(":/translations/qt_zh_CN.qm");
a.installTranslator(&translator);
1.2、对QTextEdit等无效,问题的原因在于
QTextEdit中使用的对象QWidgetTextControl中的复制、粘贴等右键菜单选项在qt_zh_CN.qm中没有被翻译。
解决方法:
1.找到C:\Qt\Qt5.7.0VS2015\5.7\Src\qtbase\src\widgets目录(你的Qt安装目录,如我的E:\Qt\5.12.2\Src\qtbase\src\widgets),用Qt Creator打开里面的widgets.pro文件,添加一行:
//TRANSLATIONS += widgets.ts; //(注意:网上提供的答案:这行在我的Qt版本下无效,我的Qt版本Qt5.12.2)
需要添加这行:
TRANSLATIONS = widgets.ts
2.然后在Qt Creator的系统菜单中,选择:工具->外部->Qt语言家->更新翻译,就会在widgets.pro所在目录下生成一个widgets.ts文件;
3.用Qt Linguist打开widgets.ts,翻译所有需要汉化的Qt控件,然后选择:文件->发布,就会在widgets.ts所在目录生产一个widgets.qm文件,然后用上面的方式应用到项目中即可。
注意:网上说只翻译QWidgetTextControl窗口时错的。得将所有界面全部汉化处理。
网上github:qt_zh_CN.ts/qt_zh_CN.ts at master · niemingzhao/qt_zh_CN.ts · GitHub