Qt6.5.3 Cmake配置国际化多语言切换

发布于:2024-10-11 ⋅ 阅读:(131) ⋅ 点赞:(0)

1、在项目目录创建新文件夹languages用于存放生成的文件

2、在CMakeLists.txt文件中添加下列代码,zh_CN.ts和en_US.ts文件名可以自行修改

set(TS_FILES
    "${CMAKE_SOURCE_DIR}/languages/zh_CN.ts"
    "${CMAKE_SOURCE_DIR}/languages/en_US.ts"
)
find_program(LUPDATE_EXECUTABLE lupdate)
find_program(LRELEASE_EXECUTABLE lrelease)

foreach(_ts_file ${TS_FILES})
    execute_process(
        COMMAND ${LUPDATE_EXECUTABLE} -recursive ${CMAKE_SOURCE_DIR} -ts ${_ts_file})
    execute_process(
        COMMAND ${LRELEASE_EXECUTABLE} ${_ts_file})
endforeach()

3、执行Cmake

4、然后languages文件中就会生成对应的.ts和.qm文件

5、添加资源这种小事情我相信各位大佬都会,这里就跳过了

6、添加切换语言的按钮或者是其他方法,根据自己实际情况而定,在.cpp/.c文件中的汉字使用tr(),在UI里直接输入的汉字自动附有tr()不需要担心,只需给代码里的汉字加tr()就OK了

 比如:
 messageBox.setText(tr("你需要帮助吗?"));

7、每次修改汉字后都需要重新执行Cmake,然后使用Linguist进行编辑或者直接右键qt语言家开始翻译,我习惯用第二中

8、设置源语言与目标语言

9、在该页面完成翻译工作,如果是大量的翻译工作或者是给第三方,我发现了一个大佬上传的小工具可以将.ts文件与excel文件相互转换的功能,大佬链接在这里但是要vip从excel中导入数据至QT翻译文件_Qt根据其他ts文件进行翻译资源-CSDN文库

链接https://pan.baidu.com/s/1JPTFzgap2LRdvBABTKil1A?pwd=qhfv:  提取码: qhfv 

10、保存

11、发布

12、在代码里实现对.qm文件的调用,我这里使用的是按钮切换,具体根据个人情况而定


//示例代码
void MainWindow::on_English_clicked()
{
    qDebug() << "English" << __LINE__;
   QTranslator *translator = new QTranslator(this);
// 这里的路径是你.qm资源文件存放的路径,记得修改
    if (translator->load(":/res/languages/en_US.qm")) {
        QApplication::removeTranslator(&translator); 
        QApplication::installTranslator(&translator);
        currentLanguage = "en_US";
        ui->retranslateUi(this);
    }
}


void MainWindow::on_Chinese_clicked()
{
    qDebug() << "Chinese" << __LINE__;
    QTranslator *translator = new QTranslator(this);
    if (translator->load(":/res/languages/zh_CN.qm")) {
        QApplication::removeTranslator(&translator);
        QApplication::installTranslator(&translator);
        currentLanguage = "zh_CN";
        ui->retranslateUi(this);
    }
}

13、运行后的效果

特别提示:代码里汉字修改后一定一定要执行CMake!!!


网站公告

今日签到

点亮在社区的每一天
去签到