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
redirected in the ``redirect_to`` context variable.
.. _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.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
-------