在 linux 中从 qt creator 运行 lupdate 和 lrelease 命令

Posted

技术标签:

【中文标题】在 linux 中从 qt creator 运行 lupdate 和 lrelease 命令【英文标题】:run lupdate and lrelease command from qt creator in linux 【发布时间】:2020-08-03 07:24:13 【问题描述】:

我想在构建时从 qtcreator 运行 lupdate 和 lrelease 命令。 是否可以? 如果是那怎么办?

注意:我正在使用来自 linux 终端的 lupdate 和 lrelease 命令,它工作正常,但我想在构建时从 qt creator 运行这些命令。

【问题讨论】:

【参考方案1】:

假设您使用的是 qmake,您应该使用 TRANSLATIONS 变量:

https://doc.qt.io/qt-5/qmake-variable-reference.html#translations

This页面有一些例子:

HEADERS         = main-dlg.h \
                  options-dlg.h
SOURCES         = main-dlg.cpp \
                  options-dlg.cpp \
                  main.cpp
FORMS           = search-dlg.ui
TRANSLATIONS    = superapp_dk.ts \
                  superapp_fi.ts \
                  superapp_no.ts \
                  superapp_se.ts

Hello tr() Example 更详细地解释了该过程:

请注意,文件扩展名是 .ts,而不是 .qm。 .ts 翻译 源格式设计用于在应用程序的 发展。程序员或发布经理运行 lupdate 程序 使用提取的源文本生成和更新 TS 文件 从源代码。翻译人员使用读取和更新 TS 文件 Qt Linguist 添加和编辑他们的翻译。

[...]

翻译完成后,lrelease 程序将用于 将 TS 文件转换为 QM Qt 消息文件格式。 QM 格式 是一种紧凑的二进制格式,旨在提供非常快速的查找 表现。 lupdate 和 lrelease 都读取了项目的所有源码 和头文件(在 HEADERS 和 SOURCES 行中指定) 项目文件)并提取出现在 tr() 函数中的字符串 来电。

lupdate 用于创建和更新消息文件(hellotr_la.ts 在这种情况下)以使它们与源代码保持同步。这是安全的 随时运行 lupdate,因为 lupdate 不会删除任何信息。 比如可以放在makefile里面,那么TS文件就是 每当源更改时更新。

【讨论】:

是的,您上面的建议是正确的。但这不是我所期待的。我的期望是从 qt creator 而不是分别从 linux 终端运行命令行工具 lupdate 和 lrelease。在构建时,我希望这些命令行工具能够运行并生成 .ts 和 .qm 文件。有可能吗?? 听起来和您所期望的完全一样。你试过了吗?我已经用另一个文档页面的引用更新了答案,该页面更详细。【参考方案2】:

在您的 Qt Creator 中,转到 Projects > Build Steps 在那里,您可以使用命令 lupdatelrelease

添加两个自定义流程步骤

【讨论】:

以上是关于在 linux 中从 qt creator 运行 lupdate 和 lrelease 命令的主要内容,如果未能解决你的问题,请参考以下文章

在 qt creator 中从 ..qml 文件生成 .cpp 和 .h 文件

如何在 QT Creator 开源版本中为嵌入式 linux 交叉编译 qt

如何在 Mint Linux 中配置 QT creator

在运行模式下启用 Qt Creator 创建核心文件?

linux ubuntu QT 下载和安装(Qt Creator)

在 Linux 中将路径添加到 Qt Creator 中的库时出错