django - Django 没有为第三方应用程序获取覆盖的翻译
问题描述
我安装了一个第三方应用程序,它的模板中有翻译标签,并且还为多种语言提供翻译,但我想只为一种语言更改一些翻译。
我运行了makemessages
命令,msgid
那些第三方应用程序的 's 很好地显示在我自己.po
使用的文件夹中的文件中LOCALE_PATHS
。然后,我msgstr
为他们添加了相应的 's,运行compilemessages
并期望我的翻译覆盖第三方应用程序提供的那些,但我仍然看到应用程序提供的那些,即使我自己的.po
/.mo
文件中的其他翻译是正确的出现。
此过程确实适用于覆盖 Django 管理界面中的翻译(并且我为此使用完全相同的.po
文件),所以我不确定在这种情况下应该做些什么不同的事情。应用程序中是否有一些设置可以防止翻译被覆盖?
我尝试了一切,直到重新启动网络服务器,重建我正在使用的 Docker 映像等等,但我只有在删除应用程序.mo
文件后才能看到自己的翻译,这确实表明我compilemessages
按预期工作,即将我的应用程序翻译添加到我自己的.mo
文件中,但显然 Django 优先使用应用程序的.mo
文件而不是我的文件,尽管Django 文档声明来自我的语言LOCALE_PATHS
应该具有最高优先级。
我在这里想念什么?
解决方案
在这种情况下,django.po
第三方应用程序提供的文件缺少Plural-Forms
一行,而django.po
试图覆盖翻译的文件确实有这一行,这显然使 Django 无法将它们匹配在一起。
在创建第三方应用程序的分支后,我在其中创建了/django.po
文件django.mo
,我Plural-Forms
能够毫无问题地覆盖默认翻译。