[PATCH] Add support for JEDEC/metric standards to KLocale::formatByteSize
Karl Ove Hufthammer
karl at huftis.org
Sun Jul 12 16:08:11 BST 2009
> 1) Add a GUI to localization settings KCM to allow the user to select
> their preferred unit style.
It should also be possible for the translators to set the default value for
> 2) Go through the KDE applications we maintain and use formatByteSize
> where appropriate. What I mean by that is that whenever possible we
> should respect the user's units. However, when we report download speed,
> that should be in decimal given existing practice, even for users with
Why? Is there a compelling reason for mixing different units?
For cases where there is a fixed set of values for units, such as in CD-ROM
sizes and MP3 compression (128 ‘kbps’, 160 ‘kbps’, 320 ‘kbps’ – I haven’t
looked up whether the ‘kbps’ refers to 1000 bits or 1024 bits), it is
reasonable to always use the ‘standard’ *numbers* (but preferably the SI
symbols, e.g., ‘kb/s’). But where there are no such standard fixed set of
values, what is the reason for a confusing mix of numbers and symbols?
For example, when you download data with a speed of 1 MB/s for 60 seconds,
why should you end up with a file of 57.2 MiB? Isn’t it much more consistent
to download data with with a speed of 1 MiB/s for 60 seconds and end up with
a file of 60 MiB?
And with the ‘mixing’ solution, should the download dialogue show both
decimal and binary units – decimal numbers for the speed and binary units
for the amount transferred?!
Also note that the (*in theory*) unambigious use of KB (uppercase K) for
indicating 1024 bytes as compared to kB (lowercase k) for 1000 bytes only
works for 1000/1024. For MiBs, GiBs &c. we have no such correspondence.
Or are you suggesting that MB should refer to 1024 × 1024 bytes for file
sizes and 1000 × 1000 for download speeds, and that this will be easier for
everyone to understand than always using unambiguous MiB units?
> When reporting hard disk capacity (i.e. in KDiskFree) we should
> use (or at least show) decimal units even for IEC or JEDEC.
So the numbers (excluding the symbols) displayed should always differ
between kdf and df (-h)?
> 3) I can't find the email right now but I do remember reading an email
> from someone on our i18n teams who was having trouble with the various
> applications using their own units (sometimes they meant decimal,
> sometimes binary, etc.)
Since this is crossposted to the I18N list, here’s the content of that
e-mail, to make it easier to quote for translators:
As a translator of KDE, let me chime in.
First, I’m very happy to see that KDE (at least Konqueror and Dolphin) has
finally changed to properly labeling the units as KiB, MiB, etc.
For us translators, this has been a continuing source of frustration. We
wish to provide the correct translations of the units (KiB if it’s a KiB, kB
if it’s a kB, kb if it’s a kb, etc.) as a service to the users, even if the
original strings are incorrect. However, the inconsistent use of the letters
make this very time-consuming, and sometimes very difficult.
Basically, for every every time we encounter a KB, a kb, or a similar
string, we have to look up the source for the file containing the string,
figure out where the string is used (which may be in a completely different
source file), and what it means (dividing by 1024 or 1024 * 1024 indicates a
KiB and a MiB, respectively).
How big is this problem? Quite big. Here are just some of the different
strings used in various official KDE apps (I have not included strings for
MiB, GiB, etc.):
KB kB kb kBytes kBi kbit
Do you know what all of these means? Always? Do the author (frequently not).
Do the user?
We have a similar issue when the units are used to measure speed or
frequency. I have found all of the following in various KDE apps:
kbps Kbps kbs kb/s kB/s KB/s kbits/s kbit/sec kb/sec
Each time I have to look up to see if the author meant a 1000 bytes, 1024
bytes, 1000 bits, 1024 bits, and then provide the correct translation, e.g.,
KiB/s or kb/s (which both follow the official SI system for derived units,
where ‘ps’ or ‘/sec’ or ‘/secs’ is never used).
So, I’d ask the KDE developer to *please* clean up this mess.
Follow SI consistently. Preferably also use kibi and mebi units instead kilo
and mega units (exceptions where decimal units are ‘standard’ is OK).
And if possible, please include comments with each string showing that you
have done so (example: ‘Note: MiB = 1024 × 1024 bytes’, ‘Note: b = bit’,
‘Note: B = byte’, ’Note: kb/s = 1000 bits per second’), so we don’t have to
double-check the source code to ensure the author got it right.
Karl Ove Hufthammer
More information about the kde-core-devel