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、运行后的效果
特别提示:如果代码里汉字修改后打开Qt语言家没有找到,执行CMake应该就可以了。