如何阻止msgmerge在po文件中生成已注释的旧msgid?
解决msgmerge保留废弃msgid注释的问题
msgmerge默认会把pot文件中不存在的msgid标记为废弃(以#~注释形式保留),目的是留存历史翻译内容,方便后续可能复用。如果想要彻底移除这些废弃条目而非注释,有两种可行方法:
1. 直接在msgmerge时删除废弃条目
使用--delete-obsolete(短选项-D)参数,更新po文件时会直接删除所有pot中不存在的msgid及其翻译,不会保留注释。
示例命令:
msgmerge --update --delete-obsolete your.po your.pot
或用短选项简化:
msgmerge -U -D your.po your.pot
注意:该操作会永久删除废弃条目,建议执行前备份po文件,避免误删有用内容。
2. 用msgattrib事后清理废弃条目
如果已经用普通msgmerge更新了po文件,可通过msgattrib工具单独清理废弃注释:
msgattrib --no-obsolete your.po -o cleaned.po
此命令会生成一个移除了所有废弃条目的新文件cleaned.po,原po文件保持不变。
内容的提问来源于stack exchange,提问作者buhtz
相关产品推荐
相关产品推荐

