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

如何在Django项目中重译第三方应用(如django-filebrowser)的翻译?

解决Django第三方应用翻译重写问题

核心思路

Django加载翻译时,项目级翻译目录的优先级高于所有应用(包括第三方应用)的内置翻译。直接在项目根目录的locale文件夹中覆盖第三方应用的msgid,就能实现自定义翻译,无需单独创建应用级的translations文件。

具体操作步骤

  1. 确认项目翻译配置正确
    检查settings.py中的关键配置,确保启用翻译并指定项目级翻译目录:

    USE_I18N = True
    LOCALE_PATHS = [
        BASE_DIR / 'locale',  # 此目录翻译优先级最高
    ]
    LANGUAGE_CODE = 'fa'  # 目标语言设为波斯语
    
  2. 生成项目级翻译文件
    在项目根目录执行命令,生成波斯语的翻译模板:

    python manage.py makemessages -l fa
    

    执行后会在locale/fa/LC_MESSAGES路径下生成django.po文件。

  3. 覆盖第三方应用的翻译条目
    打开生成的django.po文件,直接添加或修改需要重译的内容,比如:

    msgid "FileBrowser"
    msgstr "مدیریت فایل"
    

    无需额外导入gettext,直接写入对应msgid和自定义msgstr即可。

  4. 编译翻译文件
    执行编译命令,将po文件转为Django可识别的mo文件:

    python manage.py compilemessages
    
  5. 验证效果
    重启Django服务器,即可看到第三方应用的对应文本已替换为自定义翻译。

原方法无效的原因

应用级翻译(如你创建的core应用translations.py)优先级低于第三方应用自身的内置翻译,即使调整INSTALLED_APPS顺序也无法覆盖。而项目级LOCALE_PATHS指定的目录是Django加载翻译的最高优先级,会直接覆盖所有同名msgid的翻译内容。

额外提示

  • 所有需要重译的第三方应用文本,都可以直接在项目级django.po中添加对应条目,无需修改site-packages中的原文件(避免第三方应用更新时丢失自定义翻译)。
  • 新增重译内容后,需重新执行makemessages和compilemessages命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:12:33