Internationalization 我可以在gettext';中自动更新msgids吗;s.po文件是否用于琐碎的文本更改?
使用gettext,消息的原始(通常为英文)文本用作 翻译的消息键(“msgid”)。这意味着每次 如果原始文本发生更改,则必须更新所有.po文件中的msgid 对于文本的真正变化,这显然是不可避免的,因为 译者必须更新译文 但是,如果原作的更改没有改变其含义, 重新翻译是超能力的(例如,点字、空格的变化 更改或纠正拼写错误) 在这种情况下,有没有办法自动更新.po文件 我尝试使用xgettext&msgmerge(启用模糊匹配),但是 模糊匹配有时会失败,再加上这会产生很多丑陋的结果 “#,模糊”标志 注:有一个类似的问题:Internationalization 我可以在gettext';中自动更新msgids吗;s.po文件是否用于琐碎的文本更改?,internationalization,translation,gettext,Internationalization,Translation,Gettext,使用gettext,消息的原始(通常为英文)文本用作 翻译的消息键(“msgid”)。这意味着每次 如果原始文本发生更改,则必须更新所有.po文件中的msgid 对于文本的真正变化,这显然是不可避免的,因为 译者必须更新译文 但是,如果原作的更改没有改变其含义, 重新翻译是超能力的(例如,点字、空格的变化 更改或纠正拼写错误) 在这种情况下,有没有办法自动更新.po文件 我尝试使用xgettext&msgmerge(启用模糊匹配),但是 模糊匹配有时会失败,再加上这会产生很多丑陋的结果 “#,模
但是,它是关于大字符串的,因此是关于一个更具体的问题。避免该问题的一种方法是不使用msgid,为原始语言创建一个.po文件,并在其中进行修复
但我总是觉得这是一种变通,而不是一种适当的解决办法。在下一次迭代中(肯定会有更多的msgid更改),msgid会被更改,翻译人员会在他们通常的更新中翻译它,或者在msgid更改时手动更新每种语言。我在对django项目进行微小更改时遇到了这个问题。我所做的是:
find-名称“*.po”-print | xargs sed-i's/oldmessageid/newmessageid/g'
由提供是的,使用搜索和替换是另一个显而易见的解决方案(与dsas使用固定MSGID的解决方案一起)。但是,如果某些msgid是其他msgid的子字符串,或者也作为翻译的一部分出现,或者需要复制msgid(在多个位置使用原始字符串,并且只有一些更改),则搜索和替换可能会变得非常复杂。所以这不是一个通用的解决方案。感谢您参考类似的问题;我同意可能有不同的答案,不会在重复的cop上玩-但是我会说这似乎也适用于此。这最终会导致更多的工作。您可以编辑原始语言的.po
文件,然后在以后的某个时候不可避免地需要将这些更改返回到源文件中。在这之后,在其他语言文件中又出现了想要避免的模糊条目。