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():
|
def deactivate():
|
||||||
return _trans.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():
|
def get_language():
|
||||||
return _trans.get_language()
|
return _trans.get_language()
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ from threading import local
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.template import Template, Context
|
from django.template import Template, Context
|
||||||
|
from django.test import TestCase
|
||||||
from django.utils.formats import (get_format, date_format, time_format,
|
from django.utils.formats import (get_format, date_format, time_format,
|
||||||
localize, localize_input, iter_format_modules, get_format_modules)
|
localize, localize_input, iter_format_modules, get_format_modules)
|
||||||
from django.utils.importlib import import_module
|
from django.utils.importlib import import_module
|
||||||
|
@ -28,6 +29,13 @@ from test_warnings import DeprecationWarningTests
|
||||||
|
|
||||||
class TranslationTests(TestCase):
|
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):
|
def test_lazy_objects(self):
|
||||||
"""
|
"""
|
||||||
Format string interpolation should work with *_lazy objects.
|
Format string interpolation should work with *_lazy objects.
|
||||||
|
|
Loading…
Reference in New Issue