使Django首先搜索当前应用程序的消息文件(.mo)
Django按照此处记录的顺序搜索消息文件(.mo): 是否可以让Django首先在当前使用的应用程序的区域设置目录中搜索消息文件使Django首先搜索当前应用程序的消息文件(.mo),django,translation,Django,Translation,Django按照此处记录的顺序搜索消息文件(.mo): 是否可以让Django首先在当前使用的应用程序的区域设置目录中搜索消息文件 我最近在一个项目中发现了一个bug,它是由两个应用程序具有相同的消息id但翻译不同引起的。所有的应用程序都有自己的语言环境目录。出于各种原因,django恐怕不是这样工作的: 一个短语应该有一个翻译。撇开Django不谈,这也是gettext(用于翻译消息的引擎)的问题。此外,期望系统在所有页面中翻译一个短语并保持一致,这听起来很正常。毕竟,它在原语中仍然是同一个
我最近在一个项目中发现了一个bug,它是由两个应用程序具有相同的消息id但翻译不同引起的。所有的应用程序都有自己的语言环境目录。出于各种原因,django恐怕不是这样工作的:
INSTALLED_APPS
中重新排序应用程序,以匹配您喜欢的翻译,或者使用LOCALE_PATHS
设置定义新的翻译消息路径,以提供您自己的翻译
注意:从技术上讲,可以通过提供此模块的自定义实现来覆盖django.utils.translation.trans\u real中的默认行为,以根据需要更改行为(此模块中的translation()
方法实现选择算法)。然后您还应该重写最初在django.utils.translation.\uuuu init\uuuuu
模块中定义的Trans
类,以返回您的自定义Trans\u real模块(例如,将这个新类命名为MyCustomTrans),并显式地将其设置为项目的init模块中的某个翻译类,以便在代码的早期加载:
from django.utils import translation
translation._trans = MyCustomTrans()
现在您的自定义算法将被使用,但这将需要大量的工作,在我看来不值得的麻烦