在CMake中使用QT国际化,实现对多种语言的支持

2023年5月8日 4429点热度 0人点赞 0条评论

前言

​ 之前有在QTCreator中介绍怎么使用QT Linguist Tools怎么使用,最近在一个使用CMake的项目中需要用到多语言的支持,折腾了一下,遇到了比较多的问题,所以在这里分享一下。

​ 在阅读这篇文章之前,也许你需要一些CMake的基础知识:

使用CMake创建一个最简单的工程

在CMake中引入QT库

在工程中添加LinguistTools模块

​ 这篇文章中以QT5为例,其他的QT版本可以参考QT官网的文档,思路都是一样的。

​ 在CMake中使用以下代码查找Qt5LinguistTools,QT_PATH 需要设置为对应的qt版本所在的目录

#查找qt组件
set(CMAKE_PREFIX_PATH ${QT_PATH})
find_package (Qt5LinguistTools)

生成.ts文件

​ 在QT5中LinguistTools模块提供了两个命令

qt5_add_translation(<VAR> file1.ts [file2.ts ...]
                    [OPTIONS ...])
qt5_create_translation(<VAR> ts-file-or-sources [ts-file-or-sources2 ...]
                       [OPTIONS ...])
qt5_add_translation

​ 将提供的.ts文件发布为.qm文件,最后将.qm文件的路径写入\变量中。

​ OPTIONS 为发布时的附加属性,这里与使用命令行调用linguist工具时的附加选项是一样的,详情可以查看使用文档。

qt5_create_translation

​ 扫描提供的文件路径或者指定文件中被标记为本地化的字符串文本,生成.ts文件。ts-file-or-sources 参数为代码文件的list,或者是一个文件夹路径都可以,后面的参数为指定的要生成的.ts文件,可以指定多个。最后会将生成的.ts文件发布为qm文件,将文件路径写入\参数中。

​ OPTIONS参数同上

使用方法

​ 使用时一般需要先指定需要扫描的代码路径,然后生成.ts文件,最后经过翻译或者调整后再生成.qm文件,所以选择使用qt5_create_translation。

#src 为指定的源代码list
#./translate/project.ts 指定要输出的.ts文件,也可以指定多个,会生成多个文件
qt6_create_translation(QM_FILES ${src} ./translate/project.ts)
#在生成exe或者lib时,一定要加入QM_FILES,即.qm文件的路径(我也不知道为啥)
add_executable(project ${src} ${QM_FILES})

​ 代码如上,使用时一定要注意在最后添加源代码的时候要加入.qm文件的路径,在我使用的时候,按照qt的文档,并没有提到这个步骤,然后我就遇到了不能生成.ts文件的问题,cmake可以正常生成工程,没有报错也没有警告。最后将.qm路径添加进去才解决了这个问题。

​ 之后的步骤和这篇博文《在Qt Creator 中使用qt国际化》中提到的步骤一抹一样了。

大脸猫

这个人虽然很勤快,但什么也没有留下!

文章评论