mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +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 | ||||
| redirected in the ``redirect_to`` context variable. | ||||
|  | ||||
| .. _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.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 | ||||
| ------- | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user