代码之家  ›  专栏  ›  技术社区  ›  muhuk

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

  •  2
  • muhuk  · 技术社区  · 15 年前

    django.utils.translation.get_language() 如果未激活翻译,则返回默认区域设置。是否有办法确定翻译是否被激活(通过 translation.activate() )或不是?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Ignacio Vazquez-Abrams    14 年前

    骇人听闻,但至少应在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
    
        2
  •  0
  •   bluszcz    14 年前

    取决于应用程序和体系结构…

    IGNACIO提供的黑客应该可以工作,但是您将在未激活的线程中运行什么?

    我将使用ignacio解决方案+添加所有线程可见的队列,monkeypatch trans_real.activate函数并在队列中设置属性。

        3
  •  -2
  •   iElectric    15 年前

    总是检查源代码是否存在这样的问题,这比发布到Web上要快!

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

    最好的方法是:

    import setttings
    assert settings.USE_i18N == True