QT6.3 CMake Linguist多语言配置记录
记录QT6.3使用CMake完成国际化
参照网上和教材的例子,产生的ts文件一直只有一个空的框架,无法在linguist中加载。绕了很多路,最后才发现是有编译项目没勾选。
第一步:在CMake文件中添加内容,参考https://doc.qt.io/qt-6/qtlinguist-cmake-qt-add-translations.html。
qt_add_lupdate(TestHello TS_FILES TestHello.ts)
qt_add_lrelease(TestHelloTS_FILES TestHello.tsQM_FILES_OUTPUT_VARIABLE qm_files)
qt_add_resources(TestHello "translations"PREFIX "/"BASE "${CMAKE_CURRENT_BINARY_DIR}"FILES "${qm_files}")
以上3条命令实际可以用以下命令替代,但qt_add_translations有可能会变更,所以不采用。
qt_add_translations(TestHello TS_FILES TestHello.ts)
添加完以上内容后,会在源代码目录下生成ts文件TestHello.ts,在编译目录生成qm文件TestHello.qm。 但这时的TestHello.ts只有一个框架,无法在linguist中加载。
第二步: 勾选lupdate 和 lrelease目标
在编译的”概要"里面有显示 :
CMake Warning at D:/Qt/6.3.0/mingw_64/lib/cmake/Qt6LinguistTools/Qt6LinguistToolsMacros.cmake:241 (message):Translation file 'E:/QT/QT6/CH15/TestHello/TestHello.ts' does not exist.Consider building the target 'TestHello_lupdate' to create an initialversion of that file.
Call Stack (most recent call first):
D:/Qt/6.3.0/mingw_64/lib/cmake/Qt6LinguistTools/Qt6LinguistToolsMacros.cmake:371 (qt6_add_lrelease)CMakeLists.txt:54 (qt_add_lrelease)
这里提示TestHello_lupdate目标没有编译。
在项目->Build->Build的步骤->Targets中勾选TestHello_lupdate和TestHello_lrelease两个目标后,再次Build, 就会在编译输出中出现令人期待的结果:
[1/5 3.7/sec] cmd.exe /C "cd /D E:\QT\QT6\CH15\build-TestHello-Desktop_Qt_6_3_0_MinGW_64_bit-Debug && D:\Qt\Tools\CMake_64\bin\cmake.exe -DIN_FILE=E:/QT/QT6/CH15/build-TestHello-Desktop_Qt_6_3_0_MinGW_64_bit-Debug/.lupdate/TestHello_project.cmake -DOUT_FILE=E:/QT/QT6/CH15/build-TestHello-Desktop_Qt_6_3_0_MinGW_64_bit-Debug/.lupdate/TestHello_project.json -P D:/Qt/6.3.0/mingw_64/lib/cmake/Qt6LinguistTools/GenerateLUpdateProject.cmake && D:\Qt\6.3.0\mingw_64\bin\lupdate.exe -project E:/QT/QT6/CH15/build-TestHello-Desktop_Qt_6_3_0_MinGW_64_bit-Debug/.lupdate/TestHello_project.json"
Updating '../TestHello/TestHello.ts'...Found 3 source text(s) (3 new and 0 already existing)
第三步: 在linguist中修改ts文件
这个时候再用linguist加载生成的TestHello.ts文件,就可以正常翻译了。再次编译就会使用修改后的ts文件。
第四处:在main.cpp中安装qm文件
最后,在main.cpp中安装qm文件即可。
#include <QApplication>
#include <QTranslator>int main(int argc, char *argv[])
{QApplication a(argc, argv);QTranslator *tr = new QTranslator;bool test = tr->load(":/TestHello.qm");qDebug()<<test;a.installTranslator(tr);MainWindow w;w.show();return a.exec();
}
如果没有将qm文件作为资源编译到项目中,则需要在QTranslator的load中指定qm方件的绝对路径。其它更多用法参考https://doc.qt.io/qt-6/qtlinguist-cmake-qt-add-translations.html。
QT6.3 CMake Linguist多语言配置记录相关推荐
- Ubuntu20.04安装与配置记录
Ubuntu20.04安装与配置记录 原文地址:Ubuntu20.04安装与配置记录 一.Ubuntu系统盘制作 1.1 Windows环境下制作系统盘 下载Ubuntu系统,选择桌面版. 下载工具系 ...
- Ubuntu 12.04 配置记录
Ubuntu 12.04 配置记录 2013-01-28 15:51:51 分类: LINUX 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...
- webpack4.0配置记录(2)
接上一篇webpack4.0配置记录(1),继续记录学习webpack配置. 定义环境变量 new Webpack.DefinePlugin({//用来定义全局环境变量DEV:JSON.stringi ...
- 计算机二级考试python+C语言通过记录
计算机二级考试python+C语言通过记录 突然想到可以在这里晒晒成绩,也是记录一种. 虽然二级考试证书并没有太大价值,在学校的评价体系中也没有一席之地,但相较于靠刷题考取其他等级证书,却对知识一无所 ...
- 【非原创】Ubuntu14.04+cuda6.5+opencv2.4.9+caffe配置记录
Ubuntu14.04+cuda6.5+opencv2.4.9+caffe配置记录 从4月5日差不多开始安装,到今天4月15日,快两个星期了.如果加上之前自己看点Linux的时间,这折腾的有两个星期( ...
- semantic fusion中的Elastic Fusion 配置记录 Ubuntu16.04
这篇是关于elasticfusion的编译说明,caffe的编译以及最终semanticfusion编译见下一篇博客:semantic fusion中的caffe 配置记录 Ubuntu16.04 环 ...
- eclipse安装配置记录
文章目录 eclipse安装配置记录 下载安装 卸载 配置 初步配置 导入GUI插件 统一编码utf-8 Tomcat配置 设置maven 代码提示 自动保存 eclipse显示顶部按钮 加速启动 显 ...
- MyMac M1/Mac/Win Config配置记录---kalrry
MyMac M1/Mac/Win Config配置记录---kalrry 前言 一.MyMac常用软件列表: 二.✅ Homebrew 三.✅ Xcode Comand Line Tools() 四. ...
- MyWin/Mac/Mac M1 Config配置记录---kalrry
MyWin/Mac/Mac M1 Config配置记录---kalrry 前言 一.MyWin常用软件列表: 一.✅ Git与Git-gui安装 二.✅ Node.js安装 三.✅ Npm/Yarn安 ...
最新文章
- 【Py面试题】找到数组或整数列表中连续子序列的最大和
- 两段式状态机不可能完成的任务
- php mysql读取数组_php实现通用的从数据库表读取数据到数组的函数实例
- DHCP服务器--红色箭头
- web服务器一些概念
- linux命令 三大利器,awk、grep、sed是linux操作文本的三大利器,也是必须掌握的linux命令之一...
- Brew Command Not Found
- 程序员面试金典——1.2原串翻转
- java pdf替换文字_java 查找替换pdf中的指定文本
- 凤凰项目-----读书笔记
- 写作之: 文献总结表格式
- 网络编程I/O模型分析
- 如何把token存储到本地和headers中
- proteus教程——cc4021串行输入
- Windows 更改终端服务(RDP 远程桌面) 默认远程端口的方法
- centos8搭建分布式集群
- ElasticSearch系列二 DSL查询
- 三层网络靶场搭建MSF内网渗透
- HTML标签:上标、下标
- Mybatis-Plus查询之条件查询(用户名查询)(批量查询)