Django:如何检测翻译是否被激活?

时间:2009-10-22 08:18:25

标签: python django internationalization

如果未激活转换,

django.utils.translation.get_language()将返回默认语言环境。有没有办法找出翻译是否被激活(通过translation.activate())?

3 个答案:

答案 0 :(得分:2)

可怕的hacky,但至少应该在1.1.1中工作:

import django.utils.translation.trans_real as trans
from django.utils.thread_support import currentThread

def isactive():
  return currentThread() in trans._active

答案 1 :(得分:0)

取决于应用程序和架构...

Ignacio提供的Hack应该可行,但是你将在非激活的线程中运行什么?

我会使用Ignacio解决方案+添加所有线程可见的队列,monkeypatch trans_real.activate函数和队列中的set属性。

答案 2 :(得分:-2)

始终检查此类问题的源代码,这比发布到Web更快!

Django在场景背后是黑魔法,并使用某种调度程序来模拟禁用的翻译。

您最好的方法是:

import setttings
assert settings.USE_i18N == True