为什么msgmerge将我的翻译标记为模糊?

How*_*ard 3 translation localization gettext internationalization po

我使用msgmerge将我现有的po文件与更新的pot文件合并,例如

msgmerge test-zh_TW.po test.pot  > test.po
Run Code Online (Sandbox Code Playgroud)

我发现在msgmerge之后,有些字段被标记为fuzzy,为什么会这样?

(我想知道原因,我知道我可以通过-N关闭它们,但为什么它是第一位的默认值?)

App*_*234 5

引用手册的文档

模糊条目,即使它们为大多数其他目的考虑翻译条目,通常也要求翻译者进行修订.这些工具可以通过应用程序msgmerge根据新的PO模板文件更新旧的已翻译的PO文件来生成,当此工具假设某些新的msgid仅稍微修改了一个旧的msgid时,并选择配对它的想法成为新修改条目的旧翻译.原始字符串(msgid字符串)的轻微更改通常应反映在已翻译的字符串中,这需要翻译人员的干预.出于这个原因,msgmerge可能会将某些条目标记为模糊.

简而言之,这是因为msgmerge中的模糊匹配算法发现一些新消息足够接近旧消息,以保证将其与旧翻译相关联,但它标志着它是模糊的,以便提示翻译者修改翻译因为它只是模糊或部分匹配.

这是默认行为的原因是因为msgmerge.c的实现具有以下行.

/* Determines whether to use fuzzy matching.  */
static bool use_fuzzy_matching = true;
Run Code Online (Sandbox Code Playgroud)

参考