使用 lupdate
lupdate
命令行工具可查找 C++ 源代码、C++ 头文件、Java、Python、QML 和 UI 文件中的可翻译字符串,并生成或更新 TS 文件。
使用 qmake 制作时,可在命令行或 .pro 文件中指定要处理的文件。
使用 CMake 构建时,使用CMake 命令添加创建或更新 TS 文件的目标,并将它们转换为 QM 文件。在构建目标时,lupdate
工具会根据您传递给命令的选项运行。
有关在项目文件中指定翻译的更多信息,请参阅本地化应用程序。
lupdate 语法
lupdate [options] [project-file]... lupdate [options] [source-file|path|@lst-file]... -ts ts-files|@lst-file
在哪里?
options
指一个或多个lupdate 选项。project-file
是项目配置文件。source-file
是包含可翻译字符串的文件。path
是包含翻译源文件的文件夹路径。@lst-file
从lst-file 读取附加文件名(每行一个)或 includepaths(每行一个,前缀为 )。-I
ts-files
是要生成或更新的 TS 文件。
要查看最新帮助,请输入
lupdate -help
lupdate 选项
选项 | 操作 |
---|---|
-help | 显示最新帮助信息并退出。 |
-no-obsolete | 删除所有过时和消失的字符串。 |
-extensions <ext>[,<ext>]... | 仅处理指定扩展名的文件。使用逗号分隔列表中的扩展名。不要使用空白。默认值为:java,jui,ui,c,c++,cc,cpp,cxx,ch,h,h++,hh,hpp,hxx,js,qs,qml,qrc 。 |
-pluralonly | 只包含复数形式的信息。 |
-silent | 不要解释正在执行的操作。 |
-no-sort | 不要对 TS 文件中的上下文进行排序。 |
-no-recursive | 不递归扫描目录。 |
-recursive | 递归扫描目录(默认值)。 |
-warnings-are-errors | 将警告视为错误。 |
-I <includepath> or -I<includepath> | 在此附加位置查找包含文件。可以指定多个路径。 |
-locations {absolute|relative|none} | 指定或覆盖在 TS 文件中保存源代码引用的方式。
如果不指定位置, |
-no-ui-lines | 在引用 UI 文件时不要记录行号。 |
-disable-heuristic {sametext|similartext} | 禁用命名合并启发式。可多次指定。 |
-project <filename> | 包含项目描述的 JSON 格式文件的名称。您可以使用lprodump 工具从 .pro 文件生成该文件。 |
-pro <filename> | .pro 文件的名称。适用于具有 .pro 文件语法但有其他文件后缀的文件。项目的递归和合并。该选项已被弃用。请使用lupdate-pro 工具。 |
-pro-out <directory> | 用于处理后续 .pro 文件的虚拟输出目录。 |
-pro-debug | 跟踪处理 .pro 文件。指定两次以获得更多语法。 |
-source-language <language>[_<region>] | 指定新文件的源字符串语言。如果未指定,默认为 POSIX。 |
-target-language <language>[_<region>] | 指定新文件的翻译语言。如果未指定语言,lupdate 会根据文件名确定。 |
-tr-function-alias <function>{+=,=}<alias>[,<function>{+=,=}<alias>]... | 使用+= 时,将<alias> 识别为<function> 的替代拼写。使用=, 时,将<alias> 识别为<function> 的唯一拼写。可用的
|
-ts <ts-file>... | 指定输出文件。这将覆盖TRANSLATIONS 。 |
-version | 显示lupdate 的版本并退出。 |
-clang-parser [compilation-database-dir] | 使用 clang 解析 .cpp 文件。否则,使用自定义解析器。该选项需要为要解析的文件建立一个 clang 编译数据库 (compile_commands.json )。在命令行中,直接在-clang-parser 选项后,或在项目文件中,指定包含该文件的目录路径。使用 qmake 时,在 .pro 文件中设置 命令行指定的目录优先。如果没有指定路径, |
-project-roots <directory>... | 指定一个或多个项目根目录。使用-clang-parser 选项时,只有项目根目录下的文件才会被考虑翻译。 |
示例
在 CMake 中使用 lupdate
使用 CMake 进行编译时,使用CMake 命令将目标的翻译添加到 CMakeLists.txt 文件,然后编译目标。
选择以下选项之一:
- 在目标(如app)上使用qt_add_translations。这会调用qt_add_lupdate和qt_add_lrelease。
- 在目标上使用
qt_add_lupdate
。
构建一个目标(例如app_lupdate
)以更新其 .ts 文件。要更新所有目标的 .ts 文件,请构建目标update_translations
。
与 qmake 一起使用 lupdate
为单个 QML 文件生成翻译文件:
lupdate main.qml -ts main_en.ts
要为另一种语言(如法语)制作翻译文件,可将 main_en.ts 复制到 main_fr.ts,然后翻译法语 TS 文件中的字符串。
lupdate
处理 文件中列出的 QML 文件:.qrc
RESOURCES += qml.qrc
要让lupdate
处理所有 QML 文件 :
lupdate application.qrc -ts myapp_en.ts
处理当前工作目录(或其子文件夹)中的所有 QML 文件,而不使用.qrc
文件:
lupdate . -extensions qml -ts myapp_en.ts
检查 QML 和 C++ 源文件中的可翻译字符串:
lupdate qml.qrc filevalidator.cpp -ts myapp_en.ts
生成用于英语和法语的 .ts 文件,而无需在项目文件中指定语言:
lupdate qml.qrc filevalidator.cpp -ts myapp_en.ts myapp_fr.ts
将 TS 文件交给译员,译员使用Qt Linguist 读取文件并插入译文。
XLIFF 格式文件
TS 文件格式是一种简单的人类可读 XML 格式,可用于版本控制系统。此外,lupdate
还可以处理本地化交换文件格式 (XLIFF) 文件 (.xlf
)。
注意: 目前仅支持 XLIFF 1.1 和 1.2 版本。
您可以在Qt Linguist 中打开和编辑 XLIFF 文件。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.