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

如何翻译Django默认密码验证器的提示信息?

如何翻译Django默认密码验证器的提示文本

当然可以搞定这个需求!针对Django默认密码验证器的提示文本翻译,这里有两种实用的方案,你可以根据自己的场景来选:

方案一:用Django国际化(i18n)框架(官方推荐)

这是最标准的多语言适配方式,适合需要支持多种语言的项目:

  1. 开启项目国际化
    先确保你的settings.py里已经开启了国际化配置:

    USE_I18N = True
    # 指定翻译文件存放目录
    LOCALE_PATHS = [
        BASE_DIR / 'locale',
    ]
    
  2. 提取内置验证器的翻译字符串
    Django内置的验证器提示文本已经做好了国际化标记,你只需要用命令提取这些字符串。比如要生成中文翻译文件,运行:

    django-admin makemessages -l zh_Hans
    
  3. 填写翻译内容
    找到生成的locale/zh_Hans/LC_MESSAGES/django.po文件,搜索验证器对应的提示文本(比如Your password is too similar to your other personal information.),然后在对应的msgstr字段里填上你的翻译:

    msgid "Your password is too similar to your other personal information."
    msgstr "您的密码与个人信息过于相似,请更换密码。"
    

    把所有验证器的提示文本都翻译一遍即可。

  4. 编译翻译文件
    翻译完成后,运行命令编译成Django能识别的格式:

    django-admin compilemessages
    
  5. 设置默认语言
    最后在settings.py里把默认语言改成中文:

    LANGUAGE_CODE = 'zh-hans'
    

方案二:自定义验证器类(灵活修改个别提示)

如果你只想修改某几个验证器的提示文本,不想搞全量翻译,这种方法更直接:

  1. 创建自定义验证器
    在你的app下新建一个validators.py文件,继承默认的验证器并重写错误消息:

    from django.contrib.auth.password_validation import (
        UserAttributeSimilarityValidator,
        MinimumLengthValidator,
        CommonPasswordValidator,
        NumericPasswordValidator
    )
    from django.utils.translation import gettext_lazy as _
    
    class CustomUserAttributeSimilarityValidator(UserAttributeSimilarityValidator):
        default_error_messages = {
            'password_too_similar': _("您的密码与个人信息过于相似,请换一个。"),
        }
    
    class CustomMinimumLengthValidator(MinimumLengthValidator):
        default_error_messages = {
            'password_too_short': _("密码长度不能少于 %(min_length)d 位。"),
        }
    
    class CustomCommonPasswordValidator(CommonPasswordValidator):
        default_error_messages = {
            'password_too_common': _("这个密码太常见了,请换一个更安全的。"),
        }
    
    class CustomNumericPasswordValidator(NumericPasswordValidator):
        default_error_messages = {
            'password_entirely_numeric': _("密码不能全是数字,请包含其他字符。"),
        }
    
  2. 替换默认验证器
    在settings.py的AUTH_PASSWORD_VALIDATORS里替换成你的自定义类:

    AUTH_PASSWORD_VALIDATORS = [
        {
            'NAME': 'yourapp.validators.CustomUserAttributeSimilarityValidator',
        },
        {
            'NAME': 'yourapp.validators.CustomMinimumLengthValidator',
            'OPTIONS': {
                'min_length': 6,
            }
        },
        {
            'NAME': 'yourapp.validators.CustomCommonPasswordValidator',
        },
        {
            'NAME': 'yourapp.validators.CustomNumericPasswordValidator',
        },
    ]
    

两种方案各有优劣:第一种适合多语言项目,后续维护更方便;第二种更灵活,能快速修改个别提示。你可以根据自己的需求来选~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:41:23