Django未选择第三方应用程序的替代翻译

问题描述

我安装了第三方应用程序,该应用程序的模板中有翻译标签,还提供了几种语言的翻译,但是我只想更改一种语言的翻译。

我运行了makemessages命令,这些第三方应用程序的msgid很好地显示在我自己的.po文件中,我用作LOCALE_PATHS文件夹中。然后,我为他们添加了相应的msgstr,运行了compilemessages,并期望我的翻译能够覆盖第三方应用程序提供的翻译,但是我什至仍然看到该应用程序提供的翻译尽管我的.po / .mo文件 中的其他翻译正确显示了。

此过程 用于在Django管理界面中覆盖翻译(并且我为此使用的是完全相同的.po文件),所以我不确定应该使用什么在这种情况下做的方法有所不同。应用程序中是否有一些设置可以防止翻译被覆盖?

我尝试了所有事情,包括重新启动Web服务器,重建正在使用的Docker映像等。但是,只有删除应用程序的.mo文件后,我才能看到自己的翻译,该文件确实表明我的compilemessages可以按预期工作,即将应用程序的翻译添加到我自己的.mo文件中,但是显然Django优先考虑了应用程序的.mo文件,而不是我的文件,尽管Django docs声明来自我的LOCALE_PATHS的语言应具有最高优先级。

在这里想念什么?

解决方法

在这种情况下,事实证明,第三方应用程序提供的django.po文件缺少Plural-Forms行,而django.po文件试图覆盖翻译 did 有这一行,显然使得Django无法将它们匹配在一起。

创建第三方应用程序的分支后,在其中创建django.po行的django.mo / Plural-Forms文件 之后,我能够覆盖默认翻译,没有任何问题。