Qt6 CMake 中引入 Qt Linguist 翻译功能

如果不想使用Qt自带的翻译功能

只需要简单集成翻译,可参考 自定义翻译

创建Qt CMake 程序

大体流程

在这里插入图片描述

配置项目 CMake 及 代码

  1. 在CMake 中添加如下代码, 导入相关的翻译库
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools)  #jimbo tr
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools) #jimbo tr
  1. 继续进行必要步骤
set(TS_FILES ${CMAKE_SOURCE_DIR}/${PROJECT_NAME}_zh_CN.ts) #jimbo tr
qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) #jimbo tr
  1. 将添加到 source 里面,方便在Qt creator 里面查看
#jimbo tr
set(PROJECT_SOURCES
        main.cpp
        mainwindow.cpp
        mainwindow.h
        mainwindow.ui
        ${TS_FILES}
)
  1. 在CMake的最后添加如下代码, 作用是找出lupdate 和 lrelease 的 可执行文件的路径,并在执行CMake的时候,会自动执行lupdate 和 lrelease 的功能。
#jimbo tr
find_program(LUPDATE_EXECUTABLE lupdate)
find_program(LRELEASE_EXECUTABLE lrelease)
message("lupdate:" ${LUPDATE_EXECUTABLE})
message("lrelease: "${LRELEASE_EXECUTABLE})
execute_process(
    COMMAND ${LUPDATE_EXECUTABLE} -recursive ${CMAKE_SOURCE_DIR} -ts ${TS_FILES}
)
execute_process(
    COMMAND ${LRELEASE_EXECUTABLE} ${TS_FILES}
)
  1. 在 app 构建结束后,将代码目录的qtTrans_zh_CN.qm的二进制文件拷贝到 build 的exe 目录
add_custom_command(
    TARGET ${PROJECT_NAME}
    POST_BUILD
    COMMAND  "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/${PROJECT_NAME}_zh_CN.qm" ${CMAKE_CURRENT_BINARY
Qt中使用CMakeLists.txt进行项目开发时,添加翻译文件是一个常见的需求。以下是使用翻译文件的步骤: 1. **创建翻译文件**: - 使用Qt Linguist工具创建翻译文件(.ts文件)。 - 运行以下命令生成翻译文件: ```sh lupdate CMakeLists.txt -ts translation.ts ``` 2. **配置CMakeLists.txt**: - 在CMakeLists.txt文件中添加以下内容: ```cmake cmake_minimum_required(VERSION 3.5) project(MyProject LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Qt5 COMPONENTS Widgets REQUIRED) add_executable(MyProject main.cpp mainwindow.cpp mainwindow.h) target_link_libraries(MyProject Qt5::Widgets) # 翻译文件 qt5_create_translation(QT_TRANSLATION_FILES ${CMAKE_CURRENT_SOURCE_DIR}/translation.ts ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/mainwindow.cpp ) qt5_add_translation(MyProject QT_TRANSLATION_FILES) ``` 3. **在代码中使用翻译文件**: - 在主程序文件(例如main.cpp)中加载翻译文件: ```cpp #include <QApplication> #include <QTranslator> #include <QLocale> #include <QString> #include <QDebug> int main(int argc, char *argv[]) { QApplication app(argc, argv); QTranslator translator; QString filename = QLocale::system().name(); if (translator.load(":/i18n/translation_" + filename)) { app.installTranslator(&translator); } else { qDebug() << "Failed to load translation file"; } MainWindow w; w.show(); return app.exec(); } ``` 4. **生成翻译文件**: - 运行以下命令生成二进制翻译文件(.qm文件): ```sh lrelease translation.ts ``` 5. **使用Qt Linguist进行翻译**: - 打开Qt Linguist工具,加载翻译文件(.ts文件),进行翻译并保存。 通过以上步骤,你可以在Qt中使用CMakeLists.txt进行项目开发时添加和使用翻译文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值