"vanished" 为 TS 文件中的 "translation" 元素键入
"vanished" type for the "translation" element in the TS files
我注意到 Qt TS 文件中的某些消息的翻译元素具有 "vanished" 类型,但其用途尚不清楚。似乎只有 "unnamed" 上下文中的消息具有此类型。对应的DTD只说这个值是在Qt 5.2中引入的,我找不到任何其他文档。
它是什么意思,lupdate
工具什么时候添加它?
它是否类似于 "obsolete" 类型,即代码中不再存在的旧字符串? lrelease
生成的 .qm 文件中是否存在这些字符串?
这是我发现的:
当 lupdate
更新 TS 文件中的翻译字符串并且在代码中不再找到它们时,它会根据它们的初始状态("type" 属性)来区分它们:
- 如果字符串有一个可接受的翻译(即没有类型属性),它会被保留,但标记为 "vanished"。
- 如果字符串没有被接受的翻译(即
type="unfinished"
),它只是从 TS 文件中删除。
可以修改此行为,将 -no-obsolete
标志添加到 lupdate
。
在任何情况下,类型为 "vanished" 的字符串都不会被 lrelease
添加到最终的 .qm 文件中,因此如果它们出现在最终的应用程序中(例如,如果来自外部数据库),它们将不会被翻译).
我怀疑 "obsolete" 类型在 Qt 5 中不再使用,只是保持与 Qt 4 的兼容性。
我注意到 Qt TS 文件中的某些消息的翻译元素具有 "vanished" 类型,但其用途尚不清楚。似乎只有 "unnamed" 上下文中的消息具有此类型。对应的DTD只说这个值是在Qt 5.2中引入的,我找不到任何其他文档。
它是什么意思,lupdate
工具什么时候添加它?
它是否类似于 "obsolete" 类型,即代码中不再存在的旧字符串? lrelease
生成的 .qm 文件中是否存在这些字符串?
这是我发现的:
当 lupdate
更新 TS 文件中的翻译字符串并且在代码中不再找到它们时,它会根据它们的初始状态("type" 属性)来区分它们:
- 如果字符串有一个可接受的翻译(即没有类型属性),它会被保留,但标记为 "vanished"。
- 如果字符串没有被接受的翻译(即
type="unfinished"
),它只是从 TS 文件中删除。
可以修改此行为,将 -no-obsolete
标志添加到 lupdate
。
在任何情况下,类型为 "vanished" 的字符串都不会被 lrelease
添加到最终的 .qm 文件中,因此如果它们出现在最终的应用程序中(例如,如果来自外部数据库),它们将不会被翻译).
我怀疑 "obsolete" 类型在 Qt 5 中不再使用,只是保持与 Qt 4 的兼容性。