前言
之前有在QTCreator中介绍怎么使用QT Linguist Tools怎么使用,最近在一个使用CMake的项目中需要用到多语言的支持,折腾了一下,遇到了比较多的问题,所以在这里分享一下。
在阅读这篇文章之前,也许你需要一些CMake的基础知识:
在工程中添加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国际化》中提到的步骤一抹一样了。
文章评论