Raphael Michel
unread,Sep 20, 2016, 8:11:32 AM9/20/16Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to django-d...@googlegroups.com
Hi,
in my application, I regularly need to switch the active language for a
short period of time. A popular example would be that a German-speaking
user does something and I need to send out a notification to an
English-speaking user.
Cluttering the code with translation.activate() statements is certainly
not making the core more readable, which is why I'm now using a context
manager:
with language(other_user.locale):
send_mail()
language() is currently implemented in my project like this:
@contextmanager
def language(lng):
_lng = translation.get_language()
translation.activate(lng or settings.LANGUAGE_CODE)
try:
yield
finally:
translation.activate(_lng)
This turned out to be very convenient and readable and I'd wanted to ask
for your opinion if
(a) something like this should be added to django
(b) the activate() method itself should be changed to optionally work as
a context manager
Cheers
Raphael