Fixed #15143 -- Doc'd how to set the language for the test client.
This commit is contained in:
parent
f9702977b7
commit
3c447b108a
|
@ -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
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue