mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	[1.8.x] Fixed #25720 -- Made gettext() return bytestring on Python 2 if input is bytestring.
This is consistent with the behavior of Django 1.7.x and earlier.
Backport of d3e3703a15 from master
			
			
This commit is contained in:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						parent
						
							43099f543e
						
					
				
				
					commit
					9cdfdbdd1f
				
			| @@ -107,6 +107,7 @@ class DjangoTranslation(gettext_module.GNUTranslations): | ||||
|     def __init__(self, language): | ||||
|         """Create a GNUTranslations() using many locale directories""" | ||||
|         gettext_module.GNUTranslations.__init__(self) | ||||
|         self.set_output_charset('utf-8')  # For Python 2 gettext() (#25720) | ||||
|  | ||||
|         self.__language = language | ||||
|         self.__to_language = to_language(language) | ||||
|   | ||||
| @@ -27,3 +27,6 @@ Bugfixes | ||||
|  | ||||
| * Fixed a data loss possibility with :class:`~django.db.models.Prefetch` if | ||||
|   ``to_attr`` is set to a ``ManyToManyField`` (:ticket:`25693`). | ||||
|  | ||||
| * Fixed a regression in 1.8 by making ``gettext()`` once again return UTF-8 | ||||
|   bytestrings on Python 2 if the input is a bytestring (:ticket:`25720`). | ||||
|   | ||||
| @@ -141,6 +141,18 @@ class TranslationTests(TestCase): | ||||
|         s4 = ugettext_lazy('Some other string') | ||||
|         self.assertNotEqual(s, s4) | ||||
|  | ||||
|     @skipUnless(six.PY2, "No more bytestring translations on PY3") | ||||
|     def test_bytestrings(self): | ||||
|         """gettext() returns a bytestring if input is bytestring.""" | ||||
|  | ||||
|         # Using repr() to check translated text and type | ||||
|         self.assertEqual(repr(gettext(b"Time")), repr(b"Time")) | ||||
|         self.assertEqual(repr(gettext("Time")), repr("Time")) | ||||
|  | ||||
|         with translation.override('de', deactivate=True): | ||||
|             self.assertEqual(repr(gettext(b"Time")), repr(b"Zeit")) | ||||
|             self.assertEqual(repr(gettext("Time")), repr(b"Zeit")) | ||||
|  | ||||
|     @skipUnless(six.PY2, "No more bytestring translations on PY3") | ||||
|     def test_lazy_and_bytestrings(self): | ||||
|         # On Python 2, (n)gettext_lazy should not transform a bytestring to unicode | ||||
|   | ||||
		Reference in New Issue
	
	Block a user