c++ QT中cmake项目翻译,直接在cmakelist中添加翻译设置

在CMake项目中,通过设置TS_DIR和TS_FILES,结合lupdate和lrelease工具处理.ts文件,完成翻译工作。生成的.qm文件可以在Qt应用中使用QTranslator加载并安装,实现多语言支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在cmakelist中添加下列代码

set(TS_DIR "${CMAKE_CURRENT_SOURCE_DIR}")

set(TS_FILES
    "${TS_DIR}/${PROJECT_NAME}_chinese.ts"
)

find_program(LUPDATE_EXECUTABLE lupdate)
find_program(LRELEASE_EXECUTABLE lrelease)

foreach(_chinese_file ${TS_FILES})

    execute_process(
        COMMAND ${LUPDATE_EXECUTABLE} -recursive ${CMAKE_SOURCE_DIR} -ts ${_chinese_file})
    execute_process(
        COMMAND ${LRELEASE_EXECUTABLE} ${_chinese_file})

endforeach()

会生成.ts文件和qm文件,将ts文件的翻译工作做完,再次cmake。生成的.qm文件就可以在项目中使用

    QTranslator translator;
    translator.load(":/resources/mytest_chinese.qm", app.applicationDirPath());
    app.installTranslator(&translator)

写法二

set(TS_DIR "${CMAKE_CURRENT_SOURCE_DIR}")

set(languages
    chinese
    traditional
)
set(files ${files} resources/resources.qrc)
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" FILES ${files})
find_program(LUPDATE_EXECUTABLE lupdate)
find_program(LRELEASE_EXECUTABLE lrelease)
foreach(_lan ${languages})
    set(_ts_file "${TS_DIR}/${PROJECT_NAME}_${_lan}.ts")
     execute_process(
       COMMAND ${LUPDATE_EXECUTABLE} -recursive ${CMAKE_SOURCE_DIR}/srcs -ts ${_ts_file})
           execute_process(
        COMMAND ${LRELEASE_EXECUTABLE} ${_ts_file}
    )
        execute_process(
        COMMAND ${CMAKE_COMMAND} -E copy ${TS_DIR}/${PROJECT_NAME}_${_lan}.qm ${CMAKE_SOURCE_DIR}/srcs/nim_lib/qml/resources/
    )
endforeach()

直接将生成好的qm文件拷贝到资源文件中,注意路径

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值