【发布时间】:2020-08-03 07:24:13
【问题描述】:
我想在构建时从 qtcreator 运行 lupdate 和 lrelease 命令。 是否可以? 如果是那怎么办?
注意:我正在使用来自 linux 终端的 lupdate 和 lrelease 命令,它工作正常,但我想在构建时从 qt creator 运行这些命令。
【问题讨论】:
标签: qt qml qt-creator
我想在构建时从 qtcreator 运行 lupdate 和 lrelease 命令。 是否可以? 如果是那怎么办?
注意:我正在使用来自 linux 终端的 lupdate 和 lrelease 命令,它工作正常,但我想在构建时从 qt creator 运行这些命令。
【问题讨论】:
标签: qt qml qt-creator
假设您使用的是 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 中,转到 Projects > Build Steps 在那里,您可以使用命令 lupdate 和 lrelease
添加两个自定义流程步骤【讨论】: