You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django-admin makemessages无法识别Jinja2模板中ngettext字符串问题

解决Django makemessages无法识别Jinja2模板中ngettext的问题

问题核心是Django的makemessages工具默认对Jinja2模板里的ngettext函数调用识别支持不佳,但对gettext和模板标签形式的复数语法支持正常,给你两个靠谱的解决办法:

方法一:改用Jinja2标准复数模板标签(推荐)

把模板里的ngettext函数调用改成Jinja2官方的{% trans %}复数块标签写法,这样makemessages能百分百识别复数条目:

{% trans num=3 %}
%(num)d lesson
{% plural %}
%(num)d lessons
{% endtrans %}

方法二:显式指定模板扩展名并重跑命令

如果非要保留ngettext函数写法,可以在执行命令时显式指定处理html扩展名(避免工具漏扫模板文件),你的命令调整后如下:

django-admin makemessages -l en --extension=html --ignore="*/site-packages/*" --ignore="*/django/*"

额外检查项

  1. 确认项目settings.py里配置了正确的本地化路径:
import os
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent
LOCALE_PATHS = [
    os.path.join(BASE_DIR, 'locale'),
]
  1. 确保系统已安装gettext工具(makemessages依赖它,Linux可通过apt install gettext安装,macOS用brew install gettext)

内容的提问来源于stack exchange,提问作者ResolverFX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:25:57