记录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_lupdateTestHello_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多语言配置记录相关推荐

  1. Ubuntu20.04安装与配置记录

    Ubuntu20.04安装与配置记录 原文地址:Ubuntu20.04安装与配置记录 一.Ubuntu系统盘制作 1.1 Windows环境下制作系统盘 下载Ubuntu系统,选择桌面版. 下载工具系 ...

  2. 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 ...

  3. webpack4.0配置记录(2)

    接上一篇webpack4.0配置记录(1),继续记录学习webpack配置. 定义环境变量 new Webpack.DefinePlugin({//用来定义全局环境变量DEV:JSON.stringi ...

  4. 计算机二级考试python+C语言通过记录

    计算机二级考试python+C语言通过记录 突然想到可以在这里晒晒成绩,也是记录一种. 虽然二级考试证书并没有太大价值,在学校的评价体系中也没有一席之地,但相较于靠刷题考取其他等级证书,却对知识一无所 ...

  5. 【非原创】Ubuntu14.04+cuda6.5+opencv2.4.9+caffe配置记录

    Ubuntu14.04+cuda6.5+opencv2.4.9+caffe配置记录 从4月5日差不多开始安装,到今天4月15日,快两个星期了.如果加上之前自己看点Linux的时间,这折腾的有两个星期( ...

  6. semantic fusion中的Elastic Fusion 配置记录 Ubuntu16.04

    这篇是关于elasticfusion的编译说明,caffe的编译以及最终semanticfusion编译见下一篇博客:semantic fusion中的caffe 配置记录 Ubuntu16.04 环 ...

  7. eclipse安装配置记录

    文章目录 eclipse安装配置记录 下载安装 卸载 配置 初步配置 导入GUI插件 统一编码utf-8 Tomcat配置 设置maven 代码提示 自动保存 eclipse显示顶部按钮 加速启动 显 ...

  8. MyMac M1/Mac/Win Config配置记录---kalrry

    MyMac M1/Mac/Win Config配置记录---kalrry 前言 一.MyMac常用软件列表: 二.✅ Homebrew 三.✅ Xcode Comand Line Tools() 四. ...

  9. MyWin/Mac/Mac M1 Config配置记录---kalrry

    MyWin/Mac/Mac M1 Config配置记录---kalrry 前言 一.MyWin常用软件列表: 一.✅ Git与Git-gui安装 二.✅ Node.js安装 三.✅ Npm/Yarn安 ...

最新文章

  1. 【Py面试题】找到数组或整数列表中连续子序列的最大和
  2. 两段式状态机不可能完成的任务
  3. php mysql读取数组_php实现通用的从数据库表读取数据到数组的函数实例
  4. DHCP服务器--红色箭头
  5. web服务器一些概念
  6. linux命令 三大利器,awk、grep、sed是linux操作文本的三大利器,也是必须掌握的linux命令之一...
  7. Brew Command Not Found
  8. 程序员面试金典——1.2原串翻转
  9. java pdf替换文字_java 查找替换pdf中的指定文本
  10. 凤凰项目-----读书笔记
  11. 写作之: 文献总结表格式
  12. 网络编程I/O模型分析
  13. 如何把token存储到本地和headers中
  14. proteus教程——cc4021串行输入
  15. Windows 更改终端服务(RDP 远程桌面) 默认远程端口的方法
  16. centos8搭建分布式集群
  17. ElasticSearch系列二 DSL查询
  18. 三层网络靶场搭建MSF内网渗透
  19. HTML标签:上标、下标
  20. Mybatis-Plus查询之条件查询(用户名查询)(批量查询)

热门文章

  1. 服务器与PC区别有哪些?
  2. 腾讯用AI种黄瓜,程序员忍了四个月,终于拍了它
  3. mac清除node小黑框内容
  4. 带你认识Javascript、ES5和ES6的介绍和区别
  5. 狂神Redis学习记录 完整版
  6. 『分布式任务调度利器』掌握ScheduleMaster分布式任务调度平台的实践指南
  7. Html+JavaScript+百度地图api:GPS功能单点运动
  8. iPhone电源键坏了怎么开机和关机?
  9. 意志力实验,5分钟训练大脑冥想
  10. python实现图片拼接长图_Python 拼接多张尺寸大小不一样的图片制作长图