diff options
Diffstat (limited to 'docs/topics/testing')
| -rw-r--r-- | docs/topics/testing/tools.txt | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/docs/topics/testing/tools.txt b/docs/topics/testing/tools.txt index 6e14813d42..b60114d126 100644 --- a/docs/topics/testing/tools.txt +++ b/docs/topics/testing/tools.txt @@ -574,6 +574,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 ------- |
