Django REST Framework国际化失效,配置后仍显示英文提示
问题描述
我尝试配置Django REST Framework(DRF)国际化,已按照官方文档在settings.py中添加了LocaleMiddleware中间件、设置LANGUAGE_CODE为"it"、配置支持的语言列表并开启USE_I18N。更新中间件顺序后,调用重置密码的POST接口时,返回的字段必填提示仍是英文“This field is required.”,期望显示意大利语“Questo campo è obbligatorio.”,请问settings.py中还缺少哪些配置?
补充配置项
以下是settings.py中可能遗漏的关键配置:
配置DRF的语言协商规则
DRF需明确配置以支持语言识别与应用,添加如下内容:REST_FRAMEWORK = { 'DEFAULT_CONTENT_NEGOTIATION_CLASS': 'rest_framework.negotiation.DefaultContentNegotiation', # 若需强制使用默认语言(不依赖请求头),可添加此行 'FORCE_LANGUAGE_CODE': 'it', 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', # 按需保留其他渲染器,如BrowsableAPIRenderer ] }确认LocaleMiddleware的顺序
确保中间件顺序严格遵循要求:位于SessionMiddleware之后、CommonMiddleware之前,示例:MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', # 位置不可错 'django.middleware.common.CommonMiddleware', # 其他中间件 ]指定翻译文件存放路径
告诉Django翻译文件的位置,添加:import os LOCALE_PATHS = [ os.path.join(BASE_DIR, 'locale'), ]之后需通过
django-admin makemessages -l it生成意大利语翻译模板,填入对应翻译后执行django-admin compilemessages编译生效。开启本地化支持
部分表单验证提示依赖该设置,添加:USE_L10N = True
内容的提问来源于stack exchange,提问作者zabitstack
相关产品推荐
相关产品推荐

