1
0
mirror of https://github.com/django/django.git synced 2025-05-07 23:46:30 +00:00

[1.10.x] Fixed #15143 -- Doc'd how to set the language for the test client.

Backport of 3c447b108ac70757001171f7a4791f493880bf5b from master
This commit is contained in:
Michael Scott 2016-09-12 21:39:34 +01:00 committed by Tim Graham
parent ca825b1779
commit 416004c043
2 changed files with 40 additions and 0 deletions

View File

@ -1950,6 +1950,8 @@ Here's example HTML template code:
In this example, Django looks up the URL of the page to which the user will be In this example, Django looks up the URL of the page to which the user will be
redirected in the ``redirect_to`` context variable. redirected in the ``redirect_to`` context variable.
.. _explicitly-setting-the-active-language:
Explicitly setting the active language Explicitly setting the active language
-------------------------------------- --------------------------------------

View File

@ -574,6 +574,44 @@ can access these properties as part of a test condition.
session['somekey'] = 'test' session['somekey'] = 'test'
session.save() session.save()
Setting the language
--------------------
When testing applications that support internationalization and localization,
you might want to set the language for a test client request. The method for
doing so depends on whether or not the
:class:`~django.middleware.locale.LocaleMiddleware` is enabled.
If the middleware is enabled, the language can be set by creating a cookie with
a name of :setting:`LANGUAGE_COOKIE_NAME` and a value of the language code::
from django.conf import settings
def test_language_using_cookie(self):
self.client.cookies.load({settings.LANGUAGE_COOKIE_NAME: 'fr'})
response = self.client.get('/')
self.assertEqual(response.content, b"Bienvenue sur mon site.")
or by including the ``Accept-Language`` HTTP header in the request::
def test_language_using_header(self):
response = self.client.get('/', HTTP_ACCEPT_LANGUAGE='fr')
self.assertEqual(response.content, b"Bienvenue sur mon site.")
More details are in :ref:`how-django-discovers-language-preference`.
If the middleware isn't enabled, the active language may be set using
:func:`.translation.override`::
from django.utils import translation
def test_language_using_override(self):
with translation.override('fr'):
response = self.client.get('/')
self.assertEqual(response.content, b"Bienvenue sur mon site.")
More details are in :ref:`explicitly-setting-the-active-language`.
Example Example
------- -------