<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="http://git.reviewboard.kde.org/r/104314/">http://git.reviewboard.kde.org/r/104314/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On March 18th, 2012, 1:35 a.m., <b>Daniele Elmo Domenichelli</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
<thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
<a href="http://git.reviewboard.kde.org/r/104314/diff/1/?file=53621#file53621line114" style="color: black; font-weight: bold; text-decoration: underline;">telepathy-mpris.cpp</a>
<span style="font-weight: normal;">
(Diff revision 1)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void TelepathyMPRIS::onPlayerSignalReceived(const QString &interface, const QVariantMap &changedProperties, const QStringList &invalidatedProperties)</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">114</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">statusMessage</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">"%title"</span><span class="p">),</span> <span class="n">title</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CaseInsensitive</span><span class="p">);</span></pre></td>
</tr>
</tbody>
</table>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">On the other hand we might want to do this i18n replacement only when the string is set and store the string always in this form, so that if one changes the language of the application it doesn't break...
I'd consider making 3 replacements:
- the first one from i18n("%title") to QLatin1String("%title") when we save the string from the KCM module
- the second one from QLatin1String("%title") to the real title when nowPlaying replaces it (i.e. leave it unchanged here and modify the string where it is stored from the kcm module)
- the third one from QLatin1String("%title") to i18n("%title") when you load the entry to display it in the KCM module.
In this way we always store the english version but we display the i18n one.
What do you think?</pre>
</blockquote>
</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">That's frickin' clever.
So to clarify we leave this code alone, sort out the translations purely in the config.
So the user will type and see
"Ich höre zu %muziktitelsatzding" (or whatever the correct German is) and we will save "Ich höre zu %title"
A big +1 from me, as that solves any issue with translators using different terms in the two places.
QString nowPlayingText = kdedConfig.readEntry(QLatin1String("nowPlayingText"),
i18nc("The text displayed by now playing plugin", "Now listening to %1 by %2"), QLatin1String("%title"), QLatin1String("%artist"));
and _then_ we do (which we'd be doing anyway)
nowPlayingText.replace(QLatin1String("%title", i18n("%title")));
ui->setText(nowPlayingText);
The translations part of "%title" is now only in one place, and not in two very different strings so it can't go wrong. (famous last words)
--
Othmane does the suggestion make sense to you?</pre>
<br />
<p>- David</p>
<br />
<p>On March 17th, 2012, 2:29 p.m., Othmane Moustaouda wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
<tr>
<td>
<div>Review request for Telepathy.</div>
<div>By Othmane Moustaouda.</div>
<p style="color: grey;"><i>Updated March 17, 2012, 2:29 p.m.</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Enabled the possibility for the user to set his custom 'Now listening' presence string</pre>
</td>
</tr>
</table>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>
<a href="http://bugs.kde.org/show_bug.cgi?id=282944">282944</a>
</div>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>config/telepathy-kded-config.cpp <span style="color: grey">(1fb515f56500407b7b221d1d5310237f8d94ca7f)</span></li>
<li>telepathy-mpris.h <span style="color: grey">(d909863e68d0fdc7a6eb4ebb972d975ba224b6ef)</span></li>
<li>telepathy-mpris.cpp <span style="color: grey">(8dae701a203f6c5ba43a622ce7125615b4392b63)</span></li>
</ul>
<p><a href="http://git.reviewboard.kde.org/r/104314/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>