Django 按此处记录的顺序搜索消息文件 (.mo): https ://docs.djangoproject.com/en/dev/topics/i18n/translation/#how-django-discovers-translations
是否可以让 Django 首先在 locale 目录中搜索当前正在使用的应用程序的消息文件?
我最近在一个项目中发现了一个错误,这是由两个应用程序具有相同的 message-id 但不同的翻译引起的。所有应用程序都有自己的语言环境目录。
Django 按此处记录的顺序搜索消息文件 (.mo): https ://docs.djangoproject.com/en/dev/topics/i18n/translation/#how-django-discovers-translations
是否可以让 Django 首先在 locale 目录中搜索当前正在使用的应用程序的消息文件?
我最近在一个项目中发现了一个错误,这是由两个应用程序具有相同的 message-id 但不同的翻译引起的。所有应用程序都有自己的语言环境目录。
由于各种原因,恐怕这不是 django 的工作方式:
我建议您重新排序您的应用程序INSTALLED_APPS
以匹配您喜欢的翻译,或者使用该设置定义新的翻译消息路径LOCALE_PATHS
以提供您自己的翻译。
注意:从技术上讲,可以通过提供此模块的自定义实现来覆盖 django.utils.translation.trans_real 中的默认行为,以根据需要更改行为(这是translation()
此模块中实现选择算法的方法)。然后,您还应该覆盖Trans
最初在django.utils.translation.__init__
module 中定义的类以返回您的自定义 trans_real 模块(MyCustomTrans
例如,命名这个新类)并将其明确设置为项目 init 模块中某处的翻译类,以便它在代码的早期加载:
from django.utils import translation
translation._trans = MyCustomTrans()
现在将使用您的自定义算法,但这需要大量工作,而且我认为不值得麻烦。