Django2.2升3.2后自定义语言报translation.E004错误如何解决
错误触发原因
Django 3.0及以上版本新增了翻译模块的系统检查规则,translation.E004错误的判定逻辑为:LANGUAGE_CODE配置项指定的语言编码,必须存在于LANGUAGES配置项声明的合法语言列表中。
Django 2.2版本中仅修改django.conf.locale.LANG_INFO注入自定义语言的方式可以正常运行,但3.2版本的默认LANGUAGES列表是基于框架原生内置语言生成的,自定义的tb语言未被纳入该列表,因此触发校验报错。
修复方法
在settings.py中显式定义LANGUAGES配置,将自定义的tb语言加入合法语言列表即可,注意调整代码执行顺序:先完成自定义语言信息注入,再定义LANGUAGES列表,最后设置默认LANGUAGE_CODE。
修正后的配置代码如下:
import django.conf.locale EXTRA_LANG_INFO = { 'tb': { 'bidi': False, 'code': 'tb', 'name': 'English', 'name_local': 'United States', 'fallback': ['en-US'], }, } # 注入自定义语言信息到全局语言字典 LANG_INFO = dict(**django.conf.locale.LANG_INFO, **EXTRA_LANG_INFO) django.conf.locale.LANG_INFO = LANG_INFO # 新增LANGUAGES配置,声明项目支持的所有语言 LANGUAGES = [ ('tb', 'English'), ('en', 'English'), # 可按需追加项目需要支持的其他语言项 ] # 指定默认语言编码 LANGUAGE_CODE = 'tb'
配置修改完成后重新启动服务,该错误即可消除。
内容的提问来源于stack exchange,提问作者Octavian Niculescu
相关产品推荐
相关产品推荐

