mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	[1.10.x] Fixed #15143 -- Doc'd how to set the language for the test client.
Backport of 3c447b108a from master
			
			
This commit is contained in:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						parent
						
							ca825b1779
						
					
				
				
					commit
					416004c043
				
			| @@ -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 | ||||||
| -------------------------------------- | -------------------------------------- | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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 | ||||||
| ------- | ------- | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user