You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置lupdate.exe以保留.ts文件中的手动翻译条目?

解决方案

可行,你可以通过以下几种方式实现保留手动翻译条目,同时让lupdate.exe正常处理自动扫描的条目:

1. 使用Qt翻译上下文文件(.qph)(推荐)

Qt的lupdate支持导入外部的.qph文件,这类文件中的翻译条目会被合并到.ts文件中,且不会被-no-obsolete参数判定为过时条目删除。

操作步骤:

  • 创建一个后缀为.qph的XML文件(比如manual_translations.qph),写入你的手动翻译条目,格式参考:
<!DOCTYPE QPH>
<QPH version="1.0">
    <context>
        <name>CustomTranslations</name> <!-- 自定义上下文名称,避免和QML中的上下文冲突 -->
        <message>
            <source>你的手动源字符串1</source>
            <translation>对应翻译1</translation>
        </message>
        <message>
            <source>你的手动源字符串2</source>
            <translation>对应翻译2</translation>
        </message>
    </context>
</QPH>
  • 修改lupdate命令,添加-i参数引入这个.qph文件:
lupdate.exe .. -no-obsolete -locations absolute -i manual_translations.qph -ts locale_en.ts locale_fr.ts

每次执行该命令时,lupdate会自动合并.qph中的手动条目到.ts文件,同时正常扫描QML中的qsTr标记条目、清理过时自动条目,不会删除手动添加的内容。

2. 分离自动与手动翻译文件

如果你的手动条目数量较多,可以维护两个独立的.ts文件:

  • 一个用于自动扫描(比如auto_gen.ts),每次用lupdate单独处理它:
lupdate.exe .. -no-obsolete -locations absolute -ts auto_gen.ts
  • 另一个专门存放手动翻译条目(比如manual.ts),完全手动维护,不参与lupdate扫描。
  • 最终生成.qm文件时,用lrelease合并两个.ts文件:
lrelease.exe auto_gen.ts manual.ts -qm locale_en.qm

这种方式的好处是手动条目完全不受lupdate影响,但需要额外管理两个文件,注意避免上下文或字符串冲突。

注意事项

  • 不要直接在自动生成的.ts文件中手动添加条目,因为lupdate会认为这些条目没有对应的源码标记,在-no-obsolete参数下会被删除。
  • .qph文件的上下文名称尽量自定义,不要和QML组件的上下文(比如QML文件的文件名)重复,避免翻译冲突。

内容的提问来源于stack exchange,提问作者lvr123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:20:33