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

Localization 为什么msgmerge将我的一些翻译标记为模糊?,localization,internationalization,translation,gettext,po,Localization,Internationalization,Translation,Gettext,Po,我使用msgmerge将现有的po文件与更新的pot文件合并,例如 msgmerge test-zh_TW.po test.pot > test.po 我发现在msgmerge之后,一些字段被标记为fuzzy,这是为什么 (我想知道原因,我知道我可以通过-N关闭它们,但为什么它是第一位的默认值?引用手册的文档 模糊条目,即使是出于大多数其他目的的翻译条目,通常也需要翻译人员进行修改。当该工具假设某些新的msgid仅在旧的msgid基础上稍作修改,并选择将其认为是旧的翻译与新修改的条目配

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

msgmerge test-zh_TW.po test.pot  > test.po
我发现在msgmerge之后,一些字段被标记为
fuzzy
,这是为什么


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

引用手册的文档

模糊条目,即使是出于大多数其他目的的翻译条目,通常也需要翻译人员进行修改。当该工具假设某些新的msgid仅在旧的msgid基础上稍作修改,并选择将其认为是旧的翻译与新修改的条目配对时,可通过应用程序msgmerge根据新的PO模板文件更新旧的翻译PO文件来生成。原始字符串(msgid字符串)中的细微更改通常应反映在翻译后的字符串中,这需要翻译人员的干预。因此,msgmerge可能会将某些条目标记为模糊

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

这是默认行为的原因是,msgmerge.c的实现有以下几行代码

/* Determines whether to use fuzzy matching.  */
static bool use_fuzzy_matching = true;
参考资料