能否对Qt编译生成的.qm翻译文件进行差异对比?
可以对Qt的.qm翻译文件做差异分析,但得先转成可读格式
.qm是Qt编译后的二进制翻译文件,直接对比二进制内容毫无意义,得先把它转换成文本格式再做对比,下面是两种实用方法:
方法1:转成.ts格式后对比
.ts是Qt的原始翻译源文件(XML格式文本),能完整保留翻译的上下文信息,适合精准对比:
- 用Qt自带的
lconvert工具把新旧.qm文件分别转成.ts:# 转换旧版本qm lconvert -if qm -of ts old_version.qm -o old_version.ts # 转换新版本qm lconvert -if qm -of ts new_version.qm -o new_version.ts - 用任意文本对比工具(比如VS Code的diff功能、Beyond Compare、Git Diff)打开两个.ts文件,就能清晰看到翻译条目新增、修改或删除的差异。
方法2:转成纯文本格式快速对比
如果只需要看翻译内容的差异,不需要上下文,可以直接转成纯文本:
- 同样用
lconvert转换:lconvert -if qm -of text old_version.qm -o old_version.txt lconvert -if qm -of text new_version.qm -o new_version.txt - 对比两个文本文件,就能快速看到具体翻译内容的变化。
额外技巧:让Git自动处理qm文件的diff
如果你的项目用Git管理,可以配置Git自动把qm转成ts再对比,这样执行git diff时直接显示翻译差异:
- 在项目根目录的
.gitattributes文件里添加:*.qm diff=qm - 在
.gitconfig或项目的.git/config里添加:[diff "qm"] command = lconvert -if qm -of ts %A -o - | diff -u %B -
内容的提问来源于stack exchange,提问作者RAM
相关产品推荐
相关产品推荐

