Commit 2db1ed10 authored by Thomas Chaumeny's avatar Thomas Chaumeny Committed by Simon Charette
Browse files

Fixed #23323 -- Made django.utils.translation.override usable as a decorator.

parent 191d953c
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ Internationalization support.
"""
from __future__ import unicode_literals
import re
from django.utils.decorators import ContextDecorator
from django.utils.encoding import force_text
from django.utils.functional import lazy
from django.utils import six
@@ -149,7 +150,7 @@ def deactivate():
    return _trans.deactivate()


class override(object):
class override(ContextDecorator):
    def __init__(self, language, deactivate=False):
        self.language = language
        self.deactivate = deactivate
+5 −0
Original line number Diff line number Diff line
@@ -129,6 +129,11 @@ Minor features

* ...

:mod:``django.utils.translation``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* ``django.utils.translation.override`` is now usable as a function decorator.

Cache
^^^^^

+19 −0
Original line number Diff line number Diff line
@@ -73,6 +73,25 @@ class TranslationTests(TestCase):
        finally:
            deactivate()

    def test_override_decorator(self):
        activate('de')

        @translation.override('pl')
        def func_pl():
            self.assertEqual(get_language(), 'pl')

        @translation.override(None)
        def func_none():
            self.assertEqual(get_language(), settings.LANGUAGE_CODE)

        try:
            func_pl()
            self.assertEqual(get_language(), 'de')
            func_none()
            self.assertEqual(get_language(), 'de')
        finally:
            deactivate()

    def test_lazy_objects(self):
        """
        Format string interpolation should work with *_lazy objects.