Django核心翻译缺失:makemessages注释自定义.po翻译条目问题问询
Django自定义翻译条目避坑方案
问题1:是否可以创建独立翻译文件不受makemessages影响
可以,Django原生支持多翻译目录优先级加载,操作步骤如下:
- 新建独立的自定义翻译存放目录,例如
custom_contrib_trans,内部按照Django翻译规范创建层级:custom_contrib_trans/locale/[你的语言代码]/LC_MESSAGES/,将你自行维护的contrib模块翻译存放在该路径下的django.po文件中 - 在项目
settings.py中调整LOCALE_PATHS配置,将自定义翻译目录放在最前,优先级高于项目默认翻译目录:
LOCALE_PATHS = [ BASE_DIR / "custom_contrib_trans/locale", BASE_DIR / "locale", # 原有项目自动生成翻译的存放目录 ]
注意:执行makemessages命令时默认只会扫描项目代码提取字符串,更新原有项目翻译目录下的文件,完全不会触碰独立存放的自定义翻译文件
问题2:是否可以配置makemessages不注释判定为已删除的翻译
可以,有两种实现方式:
- 单次执行命令时添加参数,运行
python manage.py makemessages --no-obsolete即可,该参数会跳过对找不到来源的旧翻译条目的处理,不会注释或删除对应条目 - 如果需要默认开启该配置,可以在项目的
manage.py中自定义makemessages命令的默认参数,或者在封装的执行脚本中固定携带--no-obsolete参数
注意:长期使用该配置会导致po文件积累大量无效旧翻译条目,建议定期手动清理无用内容
内容的提问来源于stack exchange,提问作者paralosreg
相关产品推荐
相关产品推荐

