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

Django表单自定义验证器文本未翻译,内置验证器翻译正常是什么原因?

Django自定义验证器翻译失效问题排查方案

你遇到的问题属于Django翻译流程常见异常,可按以下步骤逐一排查:

  • 确认翻译字符串已被扫描到
    Django的makemessages命令默认仅扫描INSTALLED_APPS中已注册应用下的代码,如果你存放too_much_compounds_validator的文件所属应用未注册,或者存放在非应用目录下,命令无法识别_("translate this")为待翻译字符串。
    重新执行扫描命令,过滤虚拟环境目录避免冗余扫描:
    python manage.py makemessages -l nl --ignore=venv
    
  • 确认翻译条目存在且已填写
    扫描完成后打开locale/nl/LC_MESSAGES/django.po文件,搜索msgid "translate this"条目:
    • 如无该条目:回到上一步确认代码所在位置是否能被扫描到
    • 如有该条目:确认对应msgstr字段已经填写了荷兰语翻译内容
  • 确认翻译文件已编译
    填写完翻译内容后,必须执行编译命令生成二进制.mo文件Django才能读取:
    python manage.py compilemessages -l nl
    
  • 确认翻译路径配置正确
    检查settings.py中LOCALE_PATHS配置是否指向你存放翻译文件的目录,该路径优先级高于应用内的locale目录,示例配置:
    LOCALE_PATHS = [
        BASE_DIR / "locale",
    ]
    
  • 可选:替换为惰性翻译
    如果排查完以上步骤仍不生效,可将导入的gettext替换为惰性翻译版本,避免模块加载阶段翻译提前执行无法匹配当前请求语言:
    from django.utils.translation import gettext_lazy as _
    
    替换后重新执行扫描、编译流程即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:24:04