Джанго: Как определить, активирован ли перевод? - PullRequest
2 голосов
/ 22 октября 2009

django.utils.translation.get_language() возвращает локаль по умолчанию, если перевод не активирован. Есть ли способ узнать, активирован ли перевод (через translation.activate()) или нет?

Ответы [ 3 ]

2 голосов
/ 15 марта 2010

Ужасно хакерский, но должен работать как минимум в 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
0 голосов
/ 15 марта 2010

Зависит от приложения и архитектуры ...

Взлом, предоставляемый Ignacio, должен работать, но что вы будете запускать в неактивированном еще потоке?

Я бы использовал решение Ignacio + добавить очередь, видимую всем потокам, функцию monkeypatch trans_real.activate и установить атрибут в очереди.

0 голосов
/ 08 ноября 2009

Всегда проверяйте исходный код на наличие таких вопросов, это быстрее, чем отправка в Интернет!

Джанго скрывает свою черную магию и использует своего рода диспетчера для имитации отключенных переводов.

Лучший способ сделать это:

import setttings
assert settings.USE_i18N == True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...