KLocalizedString regression

John Tapsell johnflux at gmail.com
Fri Mar 25 13:59:11 GMT 2011

On 25 March 2011 13:19, Chusslove Illich <caslav.ilic at gmx.net> wrote:
>> [: John Tapsell :]
>> If the number is small, I want to show "2 seconds" but if it's large I
>> want like "2.2e4" seconds.
>> You're saying that my API needs to require the user to now pass *two*
>> strings for that?
> Well, yes. Two grammar-wise different text fragments (enumerable vs.
> measurable quantities) are being used in alternation, so each should be
> represented by its own string. The author of KUnitConversion wanted the same
> feature, so there too we ended up defining two strings, e.g:
>      setDefaultUnit(UP(Meter, 1,
>        ...
>        ki18nc("amount in units (real)", "%1 meters"),
>        ki18ncp("amount in units (integer)", "%1 meter", "%1 meters")
>      ));

Except that in my case, I'm forcing this on the users of my API.  Just
to get around this!

Can't you see how crazy this is?

> In my opinion, however, this alternation is bad style-wise. The display
> should use either the measurable form throughout (2.0 seconds; 2.2e4
> seconds), or the enumerable form throughout (2 seconds; 6 hours 6 minutes).

But what if I want to allow both?  This is for labelling the axis of a
graph.  I now have to have an API and forces the users to give the
same string twice.

More information about the kde-core-devel mailing list