Added django.utils.translation.override context manager to easily activate and deactivate a language for a code block.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16166 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
0dc6420b3e
commit
71ec87fed8
|
@ -102,6 +102,21 @@ def activate(language):
|
|||
def deactivate():
|
||||
return _trans.deactivate()
|
||||
|
||||
class override(object):
|
||||
def __init__(self, language, deactivate=False):
|
||||
self.language = language
|
||||
self.deactivate = deactivate
|
||||
self.old_language = get_language()
|
||||
|
||||
def __enter__(self):
|
||||
activate(self.language)
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
if self.deactivate:
|
||||
deactivate()
|
||||
else:
|
||||
activate(self.old_language)
|
||||
|
||||
def get_language():
|
||||
return _trans.get_language()
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ from threading import local
|
|||
|
||||
from django.conf import settings
|
||||
from django.template import Template, Context
|
||||
from django.test import TestCase
|
||||
from django.utils.formats import (get_format, date_format, time_format,
|
||||
localize, localize_input, iter_format_modules, get_format_modules)
|
||||
from django.utils.importlib import import_module
|
||||
|
@ -28,6 +29,13 @@ from test_warnings import DeprecationWarningTests
|
|||
|
||||
class TranslationTests(TestCase):
|
||||
|
||||
def test_override(self):
|
||||
activate('de')
|
||||
with translation.override('pl'):
|
||||
self.assertEqual(get_language(), 'pl')
|
||||
self.assertEqual(get_language(), 'de')
|
||||
deactivate()
|
||||
|
||||
def test_lazy_objects(self):
|
||||
"""
|
||||
Format string interpolation should work with *_lazy objects.
|
||||
|
|
Loading…
Reference in New Issue