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

如何在Django编译消息时自定义LC_MESSAGES文件夹名称?

如何在Django中重命名LC_MESSAGES翻译文件夹

嘿,这个需求我之前处理过,Django默认确实硬绑定了LC_MESSAGES作为翻译文件的存放目录,但我们完全可以自定义它。下面给你两种可行的方案,按需选择:

方法一:自定义翻译加载器(推荐,长期维护友好)

这种方法从配置层面修改Django的翻译查找逻辑,一劳永逸:

  1. 先重命名现有文件夹
    把已经生成的locale/de/LC_MESSAGES文件夹改成你想要的名字,比如translations,同时把里面的.po和.mo文件一起移过去。

  2. 修改项目settings.py
    在你的settings.py文件末尾添加以下代码,告诉Django去新的文件夹里找翻译文件:

    import os
    from django.conf import settings
    from django.utils.translation.trans_real import DjangoTranslation
    
    # 替换这里的"translations"为你实际的自定义文件夹名
    CUSTOM_TRANSLATION_FOLDER = "translations"
    
    # 重载翻译路径获取逻辑
    original_get_paths = DjangoTranslation._get_translation_paths
    
    def custom_get_translation_paths(self, locale):
        default_paths = original_get_paths(self, locale)
        # 把所有路径里的LC_MESSAGES替换成自定义文件夹名
        return [path.replace("LC_MESSAGES", CUSTOM_TRANSLATION_FOLDER) for path in default_paths]
    
    DjangoTranslation._get_translation_paths = custom_get_translation_paths
    
  3. 让compilemessages生成到新文件夹
    默认的compilemessages会往LC_MESSAGES写文件,所以运行命令时需要指定输出目录:

    # 替换translations为你的自定义文件夹名
    django-admin compilemessages -l de -d django --directory locale/de/translations
    

    如果是生成新的翻译模板(makemessages),同样要指定输出路径:

    django-admin makemessages -l de -d django --output locale/de/translations
    

方法二:符号链接(快速临时方案)

如果只是临时需求,不想改代码,可以用符号链接让Django以为LC_MESSAGES还存在:

Linux/macOS

# 进入对应语言的locale目录
cd locale/de
# 假设你把LC_MESSAGES重命名为translations,创建符号链接
ln -s translations LC_MESSAGES

Windows(命令提示符管理员权限)

cd locale\de
mklink /D LC_MESSAGES translations

这样Django和compilemessages命令都会正常工作,不需要修改任何配置。

注意事项

  • 所有语言的翻译文件夹要保持统一命名,比如locale/en/translations、locale/fr/translations,避免Django找不到对应语言的翻译。
  • 修改settings.py后记得重启Django服务器,确保配置生效。

内容的提问来源于stack exchange,提问作者s.h

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:55:45