# HG changeset patch # User Pascal Volk # Date 1297531183 0 # Node ID fb22773f7a85455cc3b0d7b6d3a2161f29404af8 # Parent 3e5ed678d53563ae588d5446da35a7c3fa989281 VMM/common: Reworked human_size() once more. Return bytes w/o prefix. Use translatable $FOO_bibyte prefixes, e.g., MiB. diff -r 3e5ed678d535 -r fb22773f7a85 VirtualMailManager/common.py --- a/VirtualMailManager/common.py Sat Feb 12 01:46:00 2011 +0000 +++ b/VirtualMailManager/common.py Sat Feb 12 17:19:43 2011 +0000 @@ -76,16 +76,16 @@ raise TypeError("'size' must be a positive long or int.") if size < 0: raise ValueError("'size' must be a positive long or int.") - if not size: - return '0b' - unit_limit = (('T', 1 << 40), ('G', 1 << 30), ('M', 1 << 20), - ('k', 1 << 10), ('b', 1)) - for unit, limit in unit_limit: - if size >= limit: - if unit != 'b': - return '%.2f%s' % (size / float(limit), unit) - else: - return '%ub' % size + if size < 1024: + return str(size) + prefix_multiply = ((_(u'TiB'), 1 << 40), (_(u'GiB'), 1 << 30), + (_(u'MiB'), 1 << 20), (_(u'KiB'), 1 << 10)) + for prefix, multiply in prefix_multiply: + if size >= multiply: + # TP: e.g.: '%(size).2f %(prefix)s' -> '118.30 MiB' + return _(u'%(size).2f %(prefix)s') % { + 'size': float(size) / multiply, + 'prefix': prefix} def size_in_bytes(size):