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

This commit is contained in:
Michael Scott 2016-09-12 21:39:34 +01:00 committed by Tim Graham
parent f9702977b7
commit 3c447b108a
2 changed files with 40 additions and 0 deletions

View File

@ -1921,6 +1921,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

@ -570,6 +570,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
------- -------