[Kde-games-devel] Hardcoded Quotation in KGoldrunner
Parker Coates
parker.coates at gmail.com
Thu May 21 22:53:03 CEST 2009
On Thu, May 21, 2009 at 4:10 PM, Frederik Schwarzer wrote:
> Hi,
>
> there is some oddness of the following code in src/kgoldrunner.cpp
>
> 887 // Now update the PAUSE/RESUME message in the status bar.
> 888 kDebug() << "Update Pause/Resume message ...";
> 889 pauseKeys = myPause->shortcut().toString(QKeySequence::NativeText);
> 890 pauseKeys = pauseKeys.replace (';', "\" " + i18n ("or") + " \"");
> 891 gameFreeze (frozen);»···»···// Refresh the status bar text.
>
> The string translators see is
> Press \"%1\" to PAUSE
>
> In German this is translated as
> Drücken Sie „%1“, um eine Pause zu machen
>
> Together with the above code, it looks like this in KDE 4.2:
> Drücken Sie „P" oder " ESC“, um eine Pause zu machen
>
> However, it looks like this in KDE 4.3:
> Drücken Sie „P“, um eine Pause zu machen
>
> The Shortcut settings are the same.
>
> So, what's going on here?
> If it was changed for KDE 4.3 to only return the primary shortcut then the code
> can be skipped. If there should be both shortcuts, the code is quite unfortunate
> i18n-wise.
>
> Any Idea how to fix this issue?
>
> - pauseKeys = pauseKeys.replace (';', "\" " + i18n ("or") + " \"");
> + pauseKeys = pauseKeys.replace ("; ", i18nc("closing quotation mark", "\" ") + i18n ("or") + i18nc("opening quotation mark"," \""));
>
> ... would probably make things better for translators ... but maybe
> somebody can think of a proper solution.
Hey Frederik,
Solutions involving QString::replace() and i18n() generally scare me.
Why not something like this:
QString message;
QStringList l =
action->shortcut().toString(QKeySequence::NativeText).split("; ");
if ( l.size() == 1 )
message = i18n("Press \"%1\" to PAUSE", l[0]);
else if ( l.size() == 2 )
message = i18n("Press \"%1\" or \"%2\" to PAUSE", l[0], l[1]);
else
message = i18n("Press \"%1\" or \"%2\" or \"%3\" to PAUSE", l[0], l[1], l[1]);
I doubt the third clause is necessary, but I threw it in for kicks. I
realise this breaks the string freeze, but I'm sure translators would
prefer it to the current mess.
Parker
More information about the kde-games-devel
mailing list