运行Django makemessages时如何调整模糊阈值或禁用模糊匹配?
解决Django makemessages生成模糊匹配行的替代方案
当执行python manage.py makemessages后出现类似下面的模糊匹配条目时:
#, fuzzy #| msgid "Last Month" msgid "Last Year" msgstr "Dernier mois"
可以用以下几种替代方法解决:
手动清理模糊条目
直接打开生成的.po文件,删除#, fuzzy标记以及旧的#| msgid行,然后根据新的msgid修正对应的msgstr内容。这种方法适合翻译条目较少的场景,简单直接。手动调用gettext的msgmerge命令
Django的makemessages底层依赖gettext的msgmerge工具,你可以绕开Django命令,手动完成提取和合并的步骤:- 先生成新的模板文件(
.pot):
(把python manage.py makemessages -d django -l fr --potfr换成你的目标语言代码) - 使用
msgmerge并加上--no-fuzzy参数合并到现有.po文件:msgmerge --no-fuzzy locale/fr/LC_MESSAGES/django.po django.pot -o locale/fr/LC_MESSAGES/django_updated.po - 把生成的
django_updated.po替换原来的django.po文件即可。
- 先生成新的模板文件(
自定义Django命令扩展makemessages
如果你需要频繁处理这个问题,可以写一个自定义Django命令,先调用原生的makemessages生成文件,再自动执行带--no-fuzzy参数的msgmerge命令覆盖原文件。这样每次执行自定义命令就能一步到位。调整gettext全局配置(不推荐)
可以修改gettext的全局配置文件,降低模糊匹配的阈值,但这种方法会影响所有使用gettext的工具,可能带来其他问题,所以不建议使用。
内容的提问来源于stack exchange,提问作者Sabrebar
相关产品推荐
相关产品推荐

