如何在Django编译消息时自定义LC_MESSAGES文件夹名称?
如何在Django中重命名LC_MESSAGES翻译文件夹
嘿,这个需求我之前处理过,Django默认确实硬绑定了LC_MESSAGES作为翻译文件的存放目录,但我们完全可以自定义它。下面给你两种可行的方案,按需选择:
方法一:自定义翻译加载器(推荐,长期维护友好)
这种方法从配置层面修改Django的翻译查找逻辑,一劳永逸:
先重命名现有文件夹
把已经生成的locale/de/LC_MESSAGES文件夹改成你想要的名字,比如translations,同时把里面的.po和.mo文件一起移过去。修改项目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让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
相关产品推荐
相关产品推荐

