Revert 36d6b6f9, pass language to async tasks

This commit is contained in:
Raphael Michel
2017-03-25 11:32:29 +01:00
parent d3a26d8022
commit f03ad7c68f
5 changed files with 75 additions and 82 deletions

View File

@@ -1,4 +1,3 @@
import json
from contextlib import contextmanager
from django.conf import settings
@@ -48,27 +47,14 @@ def language(lng):
class LazyLocaleException(Exception):
def __init__(self, msg, msgargs=None):
self.msg = msg
if isinstance(msgargs, list) or isinstance(msgargs, tuple) or isinstance(msgargs, dict):
msgargs = json.dumps(msgargs, cls=I18nJSONEncoder)
self.msgargs = msgargs
super().__init__(msg, self.msgargs)
def __init__(self, *args):
self.msg = args[0]
self.msgargs = args[1] if len(args) > 1 else None
self.args = args
super().__init__(self.msg, self.msgargs)
def __str__(self):
if self.msgargs:
data = json.loads(self.msgargs)
if isinstance(data, dict):
for k, v in data.items():
if isinstance(v, dict):
data[k] = LazyI18nString(v)
elif isinstance(data, list):
for i, v in enumerate(data):
if isinstance(v, dict):
data[i] = LazyI18nString(v)
return ugettext(self.msg) % data
return ugettext(self.msg) % self.msgargs
else:
return ugettext(self.msg)