mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #14240 -- Enabled localization for the filesize filter. Thanks to David Danier for the report and patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15290 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		
							
								
								
									
										2
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								AUTHORS
									
									
									
									
									
								
							| @@ -131,7 +131,7 @@ answer newbie questions, and generally made Django that much better: | |||||||
|     dackze+django@gmail.com |     dackze+django@gmail.com | ||||||
|     Jim Dalton <jim.dalton@gmail.com> |     Jim Dalton <jim.dalton@gmail.com> | ||||||
|     Mihai Damian <yang_damian@yahoo.com> |     Mihai Damian <yang_damian@yahoo.com> | ||||||
|     David Danier <goliath.mailinglist@gmx.de> |     David Danier <david.danier@team23.de> | ||||||
|     Dirk Datzert <dummy@habmalnefrage.de> |     Dirk Datzert <dummy@habmalnefrage.de> | ||||||
|     Jonathan Daugherty (cygnus) <http://www.cprogrammer.org/> |     Jonathan Daugherty (cygnus) <http://www.cprogrammer.org/> | ||||||
|     dave@thebarproject.com |     dave@thebarproject.com | ||||||
|   | |||||||
| @@ -799,19 +799,21 @@ def filesizeformat(bytes): | |||||||
|     try: |     try: | ||||||
|         bytes = float(bytes) |         bytes = float(bytes) | ||||||
|     except (TypeError,ValueError,UnicodeDecodeError): |     except (TypeError,ValueError,UnicodeDecodeError): | ||||||
|         return u"0 bytes" |         return ungettext("%(size)d byte", "%(size)d bytes", 0) % {'size': 0} | ||||||
|  |  | ||||||
|  |     filesize_number_format = lambda value: formats.number_format(round(value, 1), 1) | ||||||
|  |  | ||||||
|     if bytes < 1024: |     if bytes < 1024: | ||||||
|         return ungettext("%(size)d byte", "%(size)d bytes", bytes) % {'size': bytes} |         return ungettext("%(size)d byte", "%(size)d bytes", bytes) % {'size': bytes} | ||||||
|     if bytes < 1024 * 1024: |     if bytes < 1024 * 1024: | ||||||
|         return ugettext("%.1f KB") % (bytes / 1024) |         return ugettext("%s KB") % filesize_number_format(bytes / 1024) | ||||||
|     if bytes < 1024 * 1024 * 1024: |     if bytes < 1024 * 1024 * 1024: | ||||||
|         return ugettext("%.1f MB") % (bytes / (1024 * 1024)) |         return ugettext("%s MB") % filesize_number_format(bytes / (1024 * 1024)) | ||||||
|     if bytes < 1024 * 1024 * 1024 * 1024: |     if bytes < 1024 * 1024 * 1024 * 1024: | ||||||
|         return ugettext("%.1f GB") % (bytes / (1024 * 1024 * 1024)) |         return ugettext("%s GB") % filesize_number_format(bytes / (1024 * 1024 * 1024)) | ||||||
|     if bytes < 1024 * 1024 * 1024 * 1024 * 1024: |     if bytes < 1024 * 1024 * 1024 * 1024 * 1024: | ||||||
|         return ugettext("%.1f TB") % (bytes / (1024 * 1024 * 1024 * 1024)) |         return ugettext("%s TB") % filesize_number_format(bytes / (1024 * 1024 * 1024 * 1024)) | ||||||
|     return ugettext("%.1f PB") % (bytes / (1024 * 1024 * 1024 * 1024 * 1024)) |     return ugettext("%s PB") % filesize_number_format(bytes / (1024 * 1024 * 1024 * 1024 * 1024)) | ||||||
| filesizeformat.is_safe = True | filesizeformat.is_safe = True | ||||||
|  |  | ||||||
| def pluralize(value, arg=u's'): | def pluralize(value, arg=u's'): | ||||||
|   | |||||||
| @@ -443,6 +443,33 @@ class DefaultFiltersTests(unittest.TestCase): | |||||||
|         self.assertEqual(filesizeformat(u"\N{GREEK SMALL LETTER ALPHA}"), |         self.assertEqual(filesizeformat(u"\N{GREEK SMALL LETTER ALPHA}"), | ||||||
|                           u'0 bytes') |                           u'0 bytes') | ||||||
|  |  | ||||||
|  |     def test_localized_filesizeformat(self): | ||||||
|  |         from django.utils.translation import activate, deactivate | ||||||
|  |         old_localize = settings.USE_L10N | ||||||
|  |         try: | ||||||
|  |             activate('de') | ||||||
|  |             settings.USE_L10N = True | ||||||
|  |             self.assertEqual(filesizeformat(1023), u'1023 Bytes') | ||||||
|  |             self.assertEqual(filesizeformat(1024), u'1,0 KB') | ||||||
|  |             self.assertEqual(filesizeformat(10*1024), u'10,0 KB') | ||||||
|  |             self.assertEqual(filesizeformat(1024*1024-1), u'1024,0 KB') | ||||||
|  |             self.assertEqual(filesizeformat(1024*1024), u'1,0 MB') | ||||||
|  |             self.assertEqual(filesizeformat(1024*1024*50), u'50,0 MB') | ||||||
|  |             self.assertEqual(filesizeformat(1024*1024*1024-1), u'1024,0 MB') | ||||||
|  |             self.assertEqual(filesizeformat(1024*1024*1024), u'1,0 GB') | ||||||
|  |             self.assertEqual(filesizeformat(1024*1024*1024*1024), u'1,0 TB') | ||||||
|  |             self.assertEqual(filesizeformat(1024*1024*1024*1024*1024), | ||||||
|  |                               u'1,0 PB') | ||||||
|  |             self.assertEqual(filesizeformat(1024*1024*1024*1024*1024*2000), | ||||||
|  |                               u'2000,0 PB') | ||||||
|  |             self.assertEqual(filesizeformat(complex(1,-1)), u'0 Bytes') | ||||||
|  |             self.assertEqual(filesizeformat(""), u'0 Bytes') | ||||||
|  |             self.assertEqual(filesizeformat(u"\N{GREEK SMALL LETTER ALPHA}"), | ||||||
|  |                               u'0 Bytes') | ||||||
|  |         finally: | ||||||
|  |             deactivate() | ||||||
|  |             settings.USE_L10N = old_localize | ||||||
|  |  | ||||||
|     def test_pluralize(self): |     def test_pluralize(self): | ||||||
|         self.assertEqual(pluralize(1), u'') |         self.assertEqual(pluralize(1), u'') | ||||||
|         self.assertEqual(pluralize(0), u's') |         self.assertEqual(pluralize(0), u's') | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user