使用 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
其中
选项
表示一个或多个 lupdate 选项。project-file
是项目配置文件。source-file
是包含可翻译字符串的文件。path
是包含翻译源文件的文件夹的路径。@lst-file
从lst-file读取额外的文件名(每行一个)或包含路径(每行一个,前面带有-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 | 递归扫描目录(默认)。 |
-I <includepath> 或 -I<includepath> | 在此附加位置查找包含文件。您可以指定多个路径。 |
-locations {absolute|relative|none} | 指定或覆盖在 TS 文件中保存源代码引用的方式。
如果不指定位置, |
-no-ui-lines | 不记录UI文件引用中的行号。 |
-disable-heuristic {sametext|similartext} | 禁用命名合并启发式算法。可以多次指定。 |
-project <filename> | 包含项目描述的JSON格式文件的名称。您可以使用lprodump 工具从.pro文件生成该文件。 |
-pro <filename> | 包含.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 选项时,仅将项目根目录下的文件考虑用于翻译。 |
示例
使用 lupdate 与 CMake
在 CMake 构建时,使用 CMake 命令 将目标翻译添加到 CMakeLists.txt 文件中,然后构建目标。
选择以下选项之一
- 在目标(如 app)上使用 qt_add_translations。这会调用 qt_add_lupdate 和 qt_add_lrelease。
- 在目标上使用
qt_add_lupdate
。
构建一个目标(例如,app_lupdate
),以更新该目标的 .ts 文件。要更新所有目标的 .ts 文件,请构建目标 update_translations
。
使用 lupdate 与 qmake
为单个 QML 文件生成翻译文件
lupdate main.qml -ts main_en.ts
为其他语言创建翻译文件,例如,将 main_en.ts 复制到 main_fr.ts 中,并翻译法语 TS 文件中的字符串。
lupdate
会处理列在 .qrc
文件中的 QML 文件
RESOURCES += qml.qrc
让所有 QML 文件都通过 lupdate
处理
lupdate application.qrc -ts myapp_en.ts
不使用 .qrc
文件处理所有 QML 文件
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 文件。
© 2024 The Qt Company Ltd. 本文档的贡献包含其各自所有者的版权。本文档是根据 Free Software Foundation 发布的 GNU 自由文档许可证版本 1.3 的条款提供的。Qt 及其相关标志是 The Qt Company Ltd 在芬兰和其他国家/地区的商标。所有其他商标均为其各自所有者的财产。