<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://techbase.kde.org/skins/common/feed.css?0.2"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;feed=atom&amp;action=history</id>
		<title>Development/Tutorials/Localization/i18n Krazy - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;action=history"/>
		<updated>2013-05-25T01:46:11Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=59341&amp;oldid=prev</id>
		<title>Icwiener: Fix syntax highlighting.</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=59341&amp;oldid=prev"/>
				<updated>2011-06-27T17:25:49Z</updated>
		
		<summary type="html">&lt;p&gt;Fix syntax highlighting.&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 17:25, 27 June 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;wrong argument count, have ''num1'' need ''num2''&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;wrong argument count, have ''num1'' need ''num2''&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: Either some of the arguments have not been provided, or there is a stray placeholder inside the message string. A likely cause is forgetting that in KDE4, arguments are added as parameters to the i18n call itself, rather than appended via &amp;lt;tt&amp;gt;arg()&amp;lt;/tt&amp;gt; methods as in KDE3:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: Either some of the arguments have not been provided, or there is a stray placeholder inside the message string. A likely cause is forgetting that in KDE4, arguments are added as parameters to the i18n call itself, rather than appended via &amp;lt;tt&amp;gt;arg()&amp;lt;/tt&amp;gt; methods as in KDE3:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code &lt;/del&gt;cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight lang=&amp;quot;&lt;/ins&gt;cpp&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-qt&amp;quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Found key: %1&amp;quot;, key);&amp;#160; &amp;#160; &amp;#160; // correct&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Found key: %1&amp;quot;, key);&amp;#160; &amp;#160; &amp;#160; // correct&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Found key: %1&amp;quot;).arg(key);&amp;#160; // ***wrong&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Found key: %1&amp;quot;).arg(key);&amp;#160; // ***wrong&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;too many arguments, have ''num'' max 9&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;too many arguments, have ''num'' max 9&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 19:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 19:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;gaps in placeholder numbering, ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;gaps in placeholder numbering, ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: Except in case of plural i18n calls, there must be no gaps in placeholder sequence, starting from &amp;lt;tt&amp;gt;%1&amp;lt;/tt&amp;gt;. In plural calls, the placeholder of the first number (which determines plural) form, may be omitted, both in singular and plural:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: Except in case of plural i18n calls, there must be no gaps in placeholder sequence, starting from &amp;lt;tt&amp;gt;%1&amp;lt;/tt&amp;gt;. In plural calls, the placeholder of the first number (which determines plural) form, may be omitted, both in singular and plural:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code &lt;/del&gt;cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight lang=&amp;quot;&lt;/ins&gt;cpp&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-qt&amp;quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Line: %1 Column: %2&amp;quot;, lineNo, colNo);&amp;#160; // correct&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Line: %1 Column: %2&amp;quot;, lineNo, colNo);&amp;#160; // correct&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Line: %1 Column: %3&amp;quot;, lineNo, colNo);&amp;#160; // ***wrong&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Line: %1 Column: %3&amp;quot;, lineNo, colNo);&amp;#160; // ***wrong&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18np(&amp;quot;Found a file in folder %1&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18np(&amp;quot;Found a file in folder %1&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;quot;Found some files in folder %1&amp;quot;, folder, nfiles);&amp;#160; // ***wrong&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;quot;Found some files in folder %1&amp;quot;, folder, nfiles);&amp;#160; // ***wrong&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;legacy %n placeholder in plural call&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;legacy %n placeholder in plural call&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 40:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 40:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;single adjective as message, probably ambiguous; ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;single adjective as message, probably ambiguous; ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: Words that can be treated as adjectives are especially prone to ambiguities. Therefore Krazy checks single-worded messages against a list of adjectives collected from the KDE codebase, and issues this warning if the matching message does not have a context. For example:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: Words that can be treated as adjectives are especially prone to ambiguities. Therefore Krazy checks single-worded messages against a list of adjectives collected from the KDE codebase, and issues this warning if the matching message does not have a context. For example:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code &lt;/del&gt;cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight lang=&amp;quot;&lt;/ins&gt;cpp&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-qt&amp;quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;titleFinal = title.isEmpty() ?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;titleFinal = title.isEmpty() ?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  i18n(&amp;quot;Unknown&amp;quot;) : title; // ambiguous&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  i18n(&amp;quot;Unknown&amp;quot;) : title; // ambiguous&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;titleFinal = title.isEmpty() ?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;titleFinal = title.isEmpty() ?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  i18nc(&amp;quot;An unknown title&amp;quot;, &amp;quot;Unknown&amp;quot;) : title; // clarified&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  i18nc(&amp;quot;An unknown title&amp;quot;, &amp;quot;Unknown&amp;quot;) : title; // clarified&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;reported ambiguous message by translators; ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;reported ambiguous message by translators; ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 51:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 51:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;While you are at adding contexts, consider providing the appropriate [[Development/Tutorials/Localization/i18n_Semantics#Context_Markers|KUIT context marker]] as well, which will further zero-in translators' job:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;While you are at adding contexts, consider providing the appropriate [[Development/Tutorials/Localization/i18n_Semantics#Context_Markers|KUIT context marker]] as well, which will further zero-in translators' job:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code &lt;/del&gt;cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight lang=&amp;quot;&lt;/ins&gt;cpp&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-qt&amp;quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;titleFinal = title.isEmpty() ?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;titleFinal = title.isEmpty() ?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  i18nc(&amp;quot;@item:intable An unknown title&amp;quot;, &amp;quot;Unknown&amp;quot;) : title;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  i18nc(&amp;quot;@item:intable An unknown title&amp;quot;, &amp;quot;Unknown&amp;quot;) : title;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;// way to go!&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;// way to go!&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The ambiguity warning can also be issued for &amp;lt;tt&amp;gt;.ui&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;.rc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.kcfg&amp;lt;/tt&amp;gt; files. In &amp;lt;tt&amp;gt;.ui&amp;lt;/tt&amp;gt; files, text labels can have the &amp;lt;tt&amp;gt;comment&amp;lt;/tt&amp;gt; attribute (accessible in Qt Designer as a &amp;quot;disambiguation&amp;quot; property to the label, or &amp;quot;comment&amp;quot; prior to Qt 4.5), which can be used for adding contexts same as the first argument of the &amp;lt;tt&amp;gt;i18nc()&amp;lt;/tt&amp;gt; call. In &amp;lt;tt&amp;gt;.rc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.kcfg&amp;lt;/tt&amp;gt; files, contexts are added via the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; attribute.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The ambiguity warning can also be issued for &amp;lt;tt&amp;gt;.ui&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;.rc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.kcfg&amp;lt;/tt&amp;gt; files. In &amp;lt;tt&amp;gt;.ui&amp;lt;/tt&amp;gt; files, text labels can have the &amp;lt;tt&amp;gt;comment&amp;lt;/tt&amp;gt; attribute (accessible in Qt Designer as a &amp;quot;disambiguation&amp;quot; property to the label, or &amp;quot;comment&amp;quot; prior to Qt 4.5), which can be used for adding contexts same as the first argument of the &amp;lt;tt&amp;gt;i18nc()&amp;lt;/tt&amp;gt; call. In &amp;lt;tt&amp;gt;.rc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.kcfg&amp;lt;/tt&amp;gt; files, contexts are added via the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; attribute.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 65:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 65:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;use of QString::number() on an argument&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;use of QString::number() on an argument&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: &amp;lt;tt&amp;gt;QString::number()&amp;lt;/tt&amp;gt; should never be used to format &amp;quot;amount&amp;quot; numbers, because within KDE code it will do so using English conventions. However, sometimes the number is not an amount, e.g. port number 15000 should not be formatted as &amp;quot;15,000&amp;quot; in English; use &amp;lt;tt&amp;gt;&amp;amp;lt;numid&amp;amp;gt;&amp;lt;/tt&amp;gt; KUIT tag in this situation:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: &amp;lt;tt&amp;gt;QString::number()&amp;lt;/tt&amp;gt; should never be used to format &amp;quot;amount&amp;quot; numbers, because within KDE code it will do so using English conventions. However, sometimes the number is not an amount, e.g. port number 15000 should not be formatted as &amp;quot;15,000&amp;quot; in English; use &amp;lt;tt&amp;gt;&amp;amp;lt;numid&amp;amp;gt;&amp;lt;/tt&amp;gt; KUIT tag in this situation:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code &lt;/del&gt;cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight lang=&amp;quot;&lt;/ins&gt;cpp&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-qt&amp;quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Number of pages: %1&amp;quot;, numPages); // good, localized amount format&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Number of pages: %1&amp;quot;, numPages); // good, localized amount format&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Connected to port %1.&amp;quot;, port);&amp;#160;  // bad, amount format not desired&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Connected to port %1.&amp;quot;, port);&amp;#160;  // bad, amount format not desired&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Connected to port %1.&amp;quot;, QString::number(port)); // bad, not localized&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Connected to port %1.&amp;quot;, QString::number(port)); // bad, not localized&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Connected to port &amp;lt;numid&amp;gt;%1&amp;lt;/numid&amp;gt;.&amp;quot;, port);&amp;#160;  // good&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Connected to port &amp;lt;numid&amp;gt;%1&amp;lt;/numid&amp;gt;.&amp;quot;, port);&amp;#160;  // good&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;;; &amp;lt;tt&amp;gt;&amp;quot;use of KLocale::formatNumber() on an argument (...)&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;;; &amp;lt;tt&amp;gt;&amp;quot;use of KLocale::formatNumber() on an argument (...)&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 76:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 76:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Even when the complete message is a single number, it should be i18n'd, with a proper context:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Even when the complete message is a single number, it should be i18n'd, with a proper context:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code &lt;/del&gt;cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight lang=&amp;quot;&lt;/ins&gt;cpp&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-qt&amp;quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;result = QString::number(z);&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; // bad&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;result = QString::number(z);&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; // bad&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;result = i18nc(&amp;quot;Atomic number&amp;quot;, &amp;quot;%1&amp;quot;, z); // good&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;result = i18nc(&amp;quot;Atomic number&amp;quot;, &amp;quot;%1&amp;quot;, z); // good&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;When the number is to be formatted in a special way (field width, number of decimals, etc.) into the message, still neither &amp;lt;tt&amp;gt;QString::number()&amp;lt;/tt&amp;gt; nor &amp;lt;tt&amp;gt;KLocale::formatNumber()&amp;lt;/tt&amp;gt; should be used, but &amp;lt;tt&amp;gt;ki18n*()&amp;lt;/tt&amp;gt; series of calls with &amp;lt;tt&amp;gt;subs()&amp;lt;/tt&amp;gt; methods (see {{class|KLocalizedString}} documentation):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;When the number is to be formatted in a special way (field width, number of decimals, etc.) into the message, still neither &amp;lt;tt&amp;gt;QString::number()&amp;lt;/tt&amp;gt; nor &amp;lt;tt&amp;gt;KLocale::formatNumber()&amp;lt;/tt&amp;gt; should be used, but &amp;lt;tt&amp;gt;ki18n*()&amp;lt;/tt&amp;gt; series of calls with &amp;lt;tt&amp;gt;subs()&amp;lt;/tt&amp;gt; methods (see {{class|KLocalizedString}} documentation):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code &lt;/del&gt;cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight lang=&amp;quot;&lt;/ins&gt;cpp&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-qt&amp;quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Percent complete: %1&amp;quot;, QString::number(percent, 'f', 1));&amp;#160; &amp;#160; // bad&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;Percent complete: %1&amp;quot;, QString::number(percent, 'f', 1));&amp;#160; &amp;#160; // bad&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;ki18n(&amp;quot;Percent complete: %1&amp;quot;).subs(percent, 0, 'f', 1).toString(); // good&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;ki18n(&amp;quot;Percent complete: %1&amp;quot;).subs(percent, 0, 'f', 1).toString(); // good&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== HTML and KUIT Markup ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== HTML and KUIT Markup ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 95:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 95:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: Verbatim greater-than sign means opening of a tag, which is not always meant. This can be avoided by use of predefined XML &amp;lt;tt&amp;gt;&amp;amp;amp;lt;&amp;lt;/tt&amp;gt; entity (other predefined entities are &amp;lt;tt&amp;gt;&amp;amp;amp;gt;&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;&amp;amp;amp;amp;&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;&amp;amp;amp;apos;&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;&amp;amp;amp;quot;&amp;lt;/tt&amp;gt;), but for a frequent case of marking generic or user-replaceable text, it is better to use &amp;lt;tt&amp;gt;&amp;amp;lt;placeholder&amp;amp;gt;&amp;lt;/tt&amp;gt; KUIT tag:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: Verbatim greater-than sign means opening of a tag, which is not always meant. This can be avoided by use of predefined XML &amp;lt;tt&amp;gt;&amp;amp;amp;lt;&amp;lt;/tt&amp;gt; entity (other predefined entities are &amp;lt;tt&amp;gt;&amp;amp;amp;gt;&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;&amp;amp;amp;amp;&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;&amp;amp;amp;apos;&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;&amp;amp;amp;quot;&amp;lt;/tt&amp;gt;), but for a frequent case of marking generic or user-replaceable text, it is better to use &amp;lt;tt&amp;gt;&amp;amp;lt;placeholder&amp;amp;gt;&amp;lt;/tt&amp;gt; KUIT tag:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code &lt;/del&gt;cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight lang=&amp;quot;&lt;/ins&gt;cpp&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-qt&amp;quot; line=&amp;quot;&amp;quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;headers go into &amp;lt;includes&amp;gt;&amp;quot;);&amp;#160; &amp;#160; &amp;#160;  // ***error in XML markup&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;headers go into &amp;lt;includes&amp;gt;&amp;quot;);&amp;#160; &amp;#160; &amp;#160;  // ***error in XML markup&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;headers go into &amp;amp;lt;includes&amp;amp;gt;&amp;quot;); // no markup problem, but...&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;headers go into &amp;amp;lt;includes&amp;amp;gt;&amp;quot;); // no markup problem, but...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;headers go into &amp;lt;placeholder&amp;gt;includes&amp;lt;/placeholder&amp;gt;&amp;quot;); // better&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;headers go into &amp;lt;placeholder&amp;gt;includes&amp;lt;/placeholder&amp;gt;&amp;quot;); // better&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: Given it's frequency, it is not needed to use &amp;lt;tt&amp;gt;&amp;amp;amp;amp;&amp;lt;/tt&amp;gt; for shortcut markers; there is some heuristics around XML parsing to allow presence of naked &amp;amp;amp;. Basically, &amp;lt;tt&amp;gt;&amp;amp;amp;amp;&amp;lt;/tt&amp;gt; is needed only in the rare case of &amp;lt;tt&amp;gt;&amp;amp;amp;''no_whitespace_sequence'';&amp;lt;/tt&amp;gt; pattern which is ''not'' meant as an XML entity.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: Given it's frequency, it is not needed to use &amp;lt;tt&amp;gt;&amp;amp;amp;amp;&amp;lt;/tt&amp;gt; for shortcut markers; there is some heuristics around XML parsing to allow presence of naked &amp;amp;amp;. Basically, &amp;lt;tt&amp;gt;&amp;amp;amp;amp;&amp;lt;/tt&amp;gt; is needed only in the rare case of &amp;lt;tt&amp;gt;&amp;amp;amp;''no_whitespace_sequence'';&amp;lt;/tt&amp;gt; pattern which is ''not'' meant as an XML entity.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 111:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 111:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;HTML tag ''tag'' is not advised with KUIT markup&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;HTML tag ''tag'' is not advised with KUIT markup&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: When Krazy encounters the KUIT context marker in a message, it assumes that message is semantically tagged, and disapproves of some HTML tags which are best replaced with semantic equivalents. For example:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: When Krazy encounters the KUIT context marker in a message, it assumes that message is semantically tagged, and disapproves of some HTML tags which are best replaced with semantic equivalents. For example:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code &lt;/del&gt;cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight lang=&amp;quot;&lt;/ins&gt;cpp&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;-qt&amp;quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;@info:whatsthis&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;@info:whatsthis&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;quot;...this &amp;lt;i&amp;gt;cannot&amp;lt;/i&amp;gt; be undone.&amp;quot;);&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  // Krazy complains&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;quot;...this &amp;lt;i&amp;gt;cannot&amp;lt;/i&amp;gt; be undone.&amp;quot;);&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  // Krazy complains&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 121:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 121:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;@info&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;@info&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;quot;Really delete &amp;lt;filename&amp;gt;%1&amp;lt;/filename&amp;gt;?&amp;quot;, filename); // fine&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;quot;Really delete &amp;lt;filename&amp;gt;%1&amp;lt;/filename&amp;gt;?&amp;quot;, filename); // fine&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;syntaxhighlight&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;tag ''tag1'' cannot be subtag of ''tag2''&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;tag ''tag1'' cannot be subtag of ''tag2''&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Icwiener</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=40982&amp;oldid=prev</id>
		<title>Ilic: Change of context property name in Designer in Qt 4.5.</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=40982&amp;oldid=prev"/>
				<updated>2009-04-21T18:22:16Z</updated>
		
		<summary type="html">&lt;p&gt;Change of context property name in Designer in Qt 4.5.&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 18:22, 21 April 2009&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 57:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 57:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The ambiguity warning can also be issued for &amp;lt;tt&amp;gt;.ui&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;.rc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.kcfg&amp;lt;/tt&amp;gt; files. In &amp;lt;tt&amp;gt;.ui&amp;lt;/tt&amp;gt; files, text labels can have the &amp;lt;tt&amp;gt;comment&amp;lt;/tt&amp;gt; attribute (accessible in Qt Designer as a property to the label), which can be used for adding contexts same as the first argument of the &amp;lt;tt&amp;gt;i18nc()&amp;lt;/tt&amp;gt; call. In &amp;lt;tt&amp;gt;.rc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.kcfg&amp;lt;/tt&amp;gt; files, contexts are added via the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; attribute.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The ambiguity warning can also be issued for &amp;lt;tt&amp;gt;.ui&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;.rc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.kcfg&amp;lt;/tt&amp;gt; files. In &amp;lt;tt&amp;gt;.ui&amp;lt;/tt&amp;gt; files, text labels can have the &amp;lt;tt&amp;gt;comment&amp;lt;/tt&amp;gt; attribute (accessible in Qt Designer as a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;disambiguation&amp;quot; &lt;/ins&gt;property to the label&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, or &amp;quot;comment&amp;quot; prior to Qt 4.5&lt;/ins&gt;), which can be used for adding contexts same as the first argument of the &amp;lt;tt&amp;gt;i18nc()&amp;lt;/tt&amp;gt; call. In &amp;lt;tt&amp;gt;.rc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.kcfg&amp;lt;/tt&amp;gt; files, contexts are added via the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; attribute.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Number Formatting ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Number Formatting ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ilic</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=20671&amp;oldid=prev</id>
		<title>Cyrille at 11:31, 5 February 2008</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=20671&amp;oldid=prev"/>
				<updated>2008-02-05T11:31:39Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 11:31, 5 February 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 142:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 142:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;expected context marker ''ctxmark1'', got ''ctxmark2''&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;expected context marker ''ctxmark1'', got ''ctxmark2''&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: For messages used in some boiler-plate situations, canonical context markers have been established. Krazy warns if the context marker to such a message, although valid by itself, was not the expected one. For example, such messages are encountered in setting up the {{class|KAboutData}} information.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: For messages used in some boiler-plate situations, canonical context markers have been established. Krazy warns if the context marker to such a message, although valid by itself, was not the expected one. For example, such messages are encountered in setting up the {{class|KAboutData}} information.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;== UI files ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;When Krazy complains about ambiguity in i18n translation in an UI file. You can either add a comment=&amp;quot;&amp;quot; attribute using QtDesigner or using a text editor.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Contact ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Contact ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;For any questions or suggestions, Krazy i18n checks are presently maintained by Chusslove Illich &amp;amp;lt;caslav.ilic@gmx.net&amp;amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;For any questions or suggestions, Krazy i18n checks are presently maintained by Chusslove Illich &amp;amp;lt;caslav.ilic@gmx.net&amp;amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Cyrille</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=13389&amp;oldid=prev</id>
		<title>Ilic: How to add context in XML files.</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=13389&amp;oldid=prev"/>
				<updated>2007-08-31T19:20:21Z</updated>
		
		<summary type="html">&lt;p&gt;How to add context in XML files.&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:20, 31 August 2007&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 56:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 56:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;// way to go!&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;// way to go!&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;The ambiguity warning can also be issued for &amp;lt;tt&amp;gt;.ui&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;.rc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.kcfg&amp;lt;/tt&amp;gt; files. In &amp;lt;tt&amp;gt;.ui&amp;lt;/tt&amp;gt; files, text labels can have the &amp;lt;tt&amp;gt;comment&amp;lt;/tt&amp;gt; attribute (accessible in Qt Designer as a property to the label), which can be used for adding contexts same as the first argument of the &amp;lt;tt&amp;gt;i18nc()&amp;lt;/tt&amp;gt; call. In &amp;lt;tt&amp;gt;.rc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.kcfg&amp;lt;/tt&amp;gt; files, contexts are added via the &amp;lt;tt&amp;gt;context&amp;lt;/tt&amp;gt; attribute.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Number Formatting ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Number Formatting ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ilic</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=12893&amp;oldid=prev</id>
		<title>Smileaf: fixing grammar.</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=12893&amp;oldid=prev"/>
				<updated>2007-08-12T02:54:52Z</updated>
		
		<summary type="html">&lt;p&gt;fixing grammar.&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 02:54, 12 August 2007&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 36:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 36:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Ambiguous Short Messages ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Ambiguous Short Messages ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;English is a rather noninflected language compared to many others; single English word can frequently be noun, verb, or adjective, while retaining its original form. This presents frequent &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;problem &lt;/del&gt;for the translator into inflected &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;language &lt;/del&gt;when the original message is short, especially single-worded. The solution is to [[Development/Tutorials/Localization/i18n#Adding_Context|add context]] to the message via &amp;lt;tt&amp;gt;i18nc()&amp;lt;/tt&amp;gt; call.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;English is a rather noninflected language compared to many others; single English word can frequently be noun, verb, or adjective, while retaining its original form. This presents frequent &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;problems &lt;/ins&gt;for the translator &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;while translating &lt;/ins&gt;into inflected &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;languages &lt;/ins&gt;when the original message is short, especially single-worded. The solution is to [[Development/Tutorials/Localization/i18n#Adding_Context|add context]] to the message via &amp;lt;tt&amp;gt;i18nc()&amp;lt;/tt&amp;gt; call.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;single adjective as message, probably ambiguous; ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;single adjective as message, probably ambiguous; ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: Words that can be treated as adjectives are especially prone to ambiguities. Therefore Krazy checks single-worded messages against list of adjectives collected from the KDE codebase, and issues this warning if the matching message does not have a context. For example:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: Words that can be treated as adjectives are especially prone to ambiguities. Therefore Krazy checks single-worded messages against &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;a &lt;/ins&gt;list of adjectives collected from the KDE codebase, and issues this warning if the matching message does not have a context. For example:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;code cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;code cpp&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;titleFinal = title.isEmpty() ?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;titleFinal = title.isEmpty() ?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wwwdeveloper:diff:version:1.11a:oldid:12806:newid:12893 --&gt;
&lt;/table&gt;</summary>
		<author><name>Smileaf</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=12806&amp;oldid=prev</id>
		<title>Ilic: Add contact data.</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=12806&amp;oldid=prev"/>
				<updated>2007-08-06T19:00:29Z</updated>
		
		<summary type="html">&lt;p&gt;Add contact data.&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:00, 6 August 2007&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 140:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 140:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;expected context marker ''ctxmark1'', got ''ctxmark2''&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;lt;tt&amp;gt;&amp;quot;expected context marker ''ctxmark1'', got ''ctxmark2''&amp;quot;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: For messages used in some boiler-plate situations, canonical context markers have been established. Krazy warns if the context marker to such a message, although valid by itself, was not the expected one. For example, such messages are encountered in setting up the {{class|KAboutData}} information.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: For messages used in some boiler-plate situations, canonical context markers have been established. Krazy warns if the context marker to such a message, although valid by itself, was not the expected one. For example, such messages are encountered in setting up the {{class|KAboutData}} information.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;== Contact ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;For any questions or suggestions, Krazy i18n checks are presently maintained by Chusslove Illich &amp;amp;lt;caslav.ilic@gmx.net&amp;amp;gt;.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ilic</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=12794&amp;oldid=prev</id>
		<title>Ilic: Fix formatting.</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=12794&amp;oldid=prev"/>
				<updated>2007-08-06T00:18:21Z</updated>
		
		<summary type="html">&lt;p&gt;Fix formatting.&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 00:18, 6 August 2007&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: This just signals a particularly frequent markup problem, that of &amp;lt;tt&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/tt&amp;gt; not closed in place, like &amp;lt;tt&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/tt&amp;gt;. Also, sometimes &amp;lt;tt&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/tt&amp;gt; is used to split logical paragraphs (especially when doubled, &amp;lt;tt&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/tt&amp;gt;), where proper paragraph tags should be used instead.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: This just signals a particularly frequent markup problem, that of &amp;lt;tt&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/tt&amp;gt; not closed in place, like &amp;lt;tt&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/tt&amp;gt;. Also, sometimes &amp;lt;tt&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/tt&amp;gt; is used to split logical paragraphs (especially when doubled, &amp;lt;tt&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/tt&amp;gt;), where proper paragraph tags should be used instead.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &amp;quot;''tag'' is neither KUIT nor HTML tag&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;&lt;/ins&gt;&amp;quot;''tag'' is neither KUIT nor HTML tag&amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: Some of the tags in the message is simply unknown, and will not be understood at runtime. If it is not a typo, but the message is really speaking about tags to the user (e.g. in a HTML editing application), use &amp;lt;tt&amp;gt;&amp;amp;amp;lt;foo&amp;amp;amp;gt;&amp;lt;/tt&amp;gt; pattern.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;:: Some of the tags in the message is simply unknown, and will not be understood at runtime. If it is not a typo, but the message is really speaking about tags to the user (e.g. in a HTML editing application), use &amp;lt;tt&amp;gt;&amp;amp;amp;lt;foo&amp;amp;amp;gt;&amp;lt;/tt&amp;gt; pattern.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ilic</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=12792&amp;oldid=prev</id>
		<title>Ilic: Fix example.</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=12792&amp;oldid=prev"/>
				<updated>2007-08-06T00:17:00Z</updated>
		
		<summary type="html">&lt;p&gt;Fix example.&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 00:17, 6 August 2007&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 116:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 116:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;@info&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;@info&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;quot;Really delete &amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;i&lt;/del&gt;&amp;gt;%1&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;i&lt;/del&gt;&amp;gt;?&amp;quot;, filename);&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  // complains&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;quot;Really delete &amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;b&lt;/ins&gt;&amp;gt;%1&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;b&lt;/ins&gt;&amp;gt;?&amp;quot;, filename);&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;  // complains&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;@info&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;i18n(&amp;quot;@info&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;quot;Really delete &amp;lt;filename&amp;gt;%1&amp;lt;/filename&amp;gt;?&amp;quot;, filename); // fine&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160;  &amp;quot;Really delete &amp;lt;filename&amp;gt;%1&amp;lt;/filename&amp;gt;?&amp;quot;, filename); // fine&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wwwdeveloper:diff:version:1.11a:oldid:12780:newid:12792 --&gt;
&lt;/table&gt;</summary>
		<author><name>Ilic</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=12780&amp;oldid=prev</id>
		<title>Ilic: Initial revision.</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n_Krazy&amp;diff=12780&amp;oldid=prev"/>
				<updated>2007-08-05T12:42:29Z</updated>
		
		<summary type="html">&lt;p&gt;Initial revision.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Abstract ==&lt;br /&gt;
&lt;br /&gt;
There are small technical details of i18n which are not that easy to keep in mind at all times, as well as number of i18n recommendations to uphold during the development. To help you with this, the [[Development/Tutorials/Code_Checking|Krazy code checker]] also looks for some frequently encountered i18n issues. This article documents these issues as reported by Krazy, for cases when you are not sure what the remedy should be.&lt;br /&gt;
&lt;br /&gt;
== Placeholders and Arguments ==&lt;br /&gt;
&lt;br /&gt;
The i18n API is very strict about congruence between the &amp;lt;tt&amp;gt;%''number''&amp;lt;/tt&amp;gt; placeholders in the message, and the arguments actually supplied to substitute them. Effectively, the placeholders directly index arguments, albeit one- rather than zero-based.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;wrong argument count, have ''num1'' need ''num2''&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: Either some of the arguments have not been provided, or there is a stray placeholder inside the message string. A likely cause is forgetting that in KDE4, arguments are added as parameters to the i18n call itself, rather than appended via &amp;lt;tt&amp;gt;arg()&amp;lt;/tt&amp;gt; methods as in KDE3:&lt;br /&gt;
&amp;lt;code cpp&amp;gt;&lt;br /&gt;
i18n(&amp;quot;Found key: %1&amp;quot;, key);      // correct&lt;br /&gt;
i18n(&amp;quot;Found key: %1&amp;quot;).arg(key);  // ***wrong&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;too many arguments, have ''num'' max 9&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: i18n calls can take at most 9 arguments as parameters to the call. If more than that is needed, the &amp;lt;tt&amp;gt;ki18n*()&amp;lt;/tt&amp;gt; series of calls must be used, see the documentation to {{class|KLocalizedString}} class. The calls with more than 9 parameters are extremely rare, though.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;gaps in placeholder numbering, ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: Except in case of plural i18n calls, there must be no gaps in placeholder sequence, starting from &amp;lt;tt&amp;gt;%1&amp;lt;/tt&amp;gt;. In plural calls, the placeholder of the first number (which determines plural) form, may be omitted, both in singular and plural:&lt;br /&gt;
&amp;lt;code cpp&amp;gt;&lt;br /&gt;
i18n(&amp;quot;Line: %1 Column: %2&amp;quot;, lineNo, colNo);  // correct&lt;br /&gt;
i18n(&amp;quot;Line: %1 Column: %3&amp;quot;, lineNo, colNo);  // ***wrong&lt;br /&gt;
&lt;br /&gt;
i18np(&amp;quot;Found a file in folder %2&amp;quot;,&lt;br /&gt;
      &amp;quot;Found %1 files in folder %2&amp;quot;, nfiles, folder);    // correct&lt;br /&gt;
i18np(&amp;quot;Found a file in folder %2&amp;quot;,&lt;br /&gt;
      &amp;quot;Found some files in folder %2&amp;quot;, nfiles, folder);  // also correct&lt;br /&gt;
i18np(&amp;quot;Found a file in folder %1&amp;quot;,&lt;br /&gt;
      &amp;quot;Found some files in folder %1&amp;quot;, folder, nfiles);  // ***wrong&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;legacy %n placeholder in plural call&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: This is a remnant from KDE3, where in plural i18n calls, the argument determining the plural form had special &amp;lt;tt&amp;gt;%n&amp;lt;/tt&amp;gt; placeholder. In KDE4, all arguments have ordinary &amp;lt;tt&amp;gt;%''number''&amp;lt;/tt&amp;gt; placeholders, as in the examples above (the plural form is decided upon the lowest-numbered argument that is an integer).&lt;br /&gt;
&lt;br /&gt;
== Ambiguous Short Messages ==&lt;br /&gt;
&lt;br /&gt;
English is a rather noninflected language compared to many others; single English word can frequently be noun, verb, or adjective, while retaining its original form. This presents frequent problem for the translator into inflected language when the original message is short, especially single-worded. The solution is to [[Development/Tutorials/Localization/i18n#Adding_Context|add context]] to the message via &amp;lt;tt&amp;gt;i18nc()&amp;lt;/tt&amp;gt; call.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;single adjective as message, probably ambiguous; ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: Words that can be treated as adjectives are especially prone to ambiguities. Therefore Krazy checks single-worded messages against list of adjectives collected from the KDE codebase, and issues this warning if the matching message does not have a context. For example:&lt;br /&gt;
&amp;lt;code cpp&amp;gt;&lt;br /&gt;
titleFinal = title.isEmpty() ?&lt;br /&gt;
             i18n(&amp;quot;Unknown&amp;quot;) : title; // ambiguous&lt;br /&gt;
titleFinal = title.isEmpty() ?&lt;br /&gt;
             i18nc(&amp;quot;An unknown title&amp;quot;, &amp;quot;Unknown&amp;quot;) : title; // clarified&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;reported ambiguous message by translators; ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: There are other troublesome words, or even phrases, which were explicitly reported by translators as ambiguous. This warning means that such a message without context has been detected.&lt;br /&gt;
&lt;br /&gt;
While you are at adding contexts, consider providing the appropriate [[Development/Tutorials/Localization/i18n_Semantics#Context_Markers|KUIT context marker]] as well, which will further zero-in translators' job:&lt;br /&gt;
&amp;lt;code cpp&amp;gt;&lt;br /&gt;
titleFinal = title.isEmpty() ?&lt;br /&gt;
             i18nc(&amp;quot;@item:intable An unknown title&amp;quot;, &amp;quot;Unknown&amp;quot;) : title;&lt;br /&gt;
// way to go!&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Number Formatting ==&lt;br /&gt;
&lt;br /&gt;
The number-valued (either integer or real) arguments to i18n messages are formatted automatically into given language, without programmer's intervention. Using other methods to format numbers into strings may circumvent proper formatting for the language.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;use of QString::number() on an argument&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: &amp;lt;tt&amp;gt;QString::number()&amp;lt;/tt&amp;gt; should never be used to format &amp;quot;amount&amp;quot; numbers, because within KDE code it will do so using English conventions. However, sometimes the number is not an amount, e.g. port number 15000 should not be formatted as &amp;quot;15,000&amp;quot; in English; use &amp;lt;tt&amp;gt;&amp;amp;lt;numid&amp;amp;gt;&amp;lt;/tt&amp;gt; KUIT tag in this situation:&lt;br /&gt;
&amp;lt;code cpp&amp;gt;&lt;br /&gt;
i18n(&amp;quot;Number of pages: %1&amp;quot;, numPages); // good, localized amount format&lt;br /&gt;
i18n(&amp;quot;Connected to port %1.&amp;quot;, port);   // bad, amount format not desired&lt;br /&gt;
i18n(&amp;quot;Connected to port %1.&amp;quot;, QString::number(port)); // bad, not localized&lt;br /&gt;
i18n(&amp;quot;Connected to port &amp;lt;numid&amp;gt;%1&amp;lt;/numid&amp;gt;.&amp;quot;, port);   // good&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;; &amp;lt;tt&amp;gt;&amp;quot;use of KLocale::formatNumber() on an argument (...)&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: A smarter way to format numbers is using &amp;lt;tt&amp;gt;KLocale::formatNumber()&amp;lt;/tt&amp;gt;, which will honor user's settings. However, then the format cannot be decided upon the language of the particular message in question (some applications may not have translations), so it's best avoided in i18n arguments. Use it for &amp;quot;live numbers&amp;quot;, e.g. in spreadsheet tables and calculator displays, where the format should match user's number-typing habit.&lt;br /&gt;
&lt;br /&gt;
Even when the complete message is a single number, it should be i18n'd, with a proper context:&lt;br /&gt;
&amp;lt;code cpp&amp;gt;&lt;br /&gt;
result = QString::number(z);              // bad&lt;br /&gt;
result = i18nc(&amp;quot;Atomic number&amp;quot;, &amp;quot;%1&amp;quot;, z); // good&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the number is to be formatted in a special way (field width, number of decimals, etc.) into the message, still neither &amp;lt;tt&amp;gt;QString::number()&amp;lt;/tt&amp;gt; nor &amp;lt;tt&amp;gt;KLocale::formatNumber()&amp;lt;/tt&amp;gt; should be used, but &amp;lt;tt&amp;gt;ki18n*()&amp;lt;/tt&amp;gt; series of calls with &amp;lt;tt&amp;gt;subs()&amp;lt;/tt&amp;gt; methods (see {{class|KLocalizedString}} documentation):&lt;br /&gt;
&amp;lt;code cpp&amp;gt;&lt;br /&gt;
i18n(&amp;quot;Percent complete: %1&amp;quot;, QString::number(percent, 'f', 1));    // bad&lt;br /&gt;
ki18n(&amp;quot;Percent complete: %1&amp;quot;).subs(percent, 0, 'f', 1).toString(); // good&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HTML and KUIT Markup ==&lt;br /&gt;
&lt;br /&gt;
Every i18n message in KDE4 is effectively XML markup. HTML tags come from Qt's rich text, and can be used only in rich-text capable widgets; KUIT tags are new KDE4 [[Development/Tutorials/Localization/i18n_Semantics|semantic markup]], which should be preferred to HTML, and can be used in ''any'' i18n message (plain or rich-text output is decided on the basis of [[Development/Tutorials/Localization/i18n_Semantics#Context_Markers|context marker]]).&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;malformed markup (unmatched tags, etc.)&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: Since every message is XML, all tags must be properly closed. Opening &amp;lt;tt&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;lt;/tt&amp;gt; must not miss closing &amp;lt;tt&amp;gt;&amp;amp;lt;/p&amp;amp;gt;&amp;lt;/tt&amp;gt;, etc. This also holds for breaking HTML tags like &amp;lt;tt&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&amp;amp;lt;hr&amp;amp;gt;&amp;lt;/tt&amp;gt;, which must be closed in place: &amp;lt;tt&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;&amp;amp;lt;hr/&amp;amp;gt;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
: Verbatim greater-than sign means opening of a tag, which is not always meant. This can be avoided by use of predefined XML &amp;lt;tt&amp;gt;&amp;amp;amp;lt;&amp;lt;/tt&amp;gt; entity (other predefined entities are &amp;lt;tt&amp;gt;&amp;amp;amp;gt;&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;&amp;amp;amp;amp;&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;&amp;amp;amp;apos;&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;&amp;amp;amp;quot;&amp;lt;/tt&amp;gt;), but for a frequent case of marking generic or user-replaceable text, it is better to use &amp;lt;tt&amp;gt;&amp;amp;lt;placeholder&amp;amp;gt;&amp;lt;/tt&amp;gt; KUIT tag:&lt;br /&gt;
&amp;lt;code cpp&amp;gt;&lt;br /&gt;
i18n(&amp;quot;headers go into &amp;lt;includes&amp;gt;&amp;quot;);       // ***error in XML markup&lt;br /&gt;
i18n(&amp;quot;headers go into &amp;amp;lt;includes&amp;amp;gt;&amp;quot;); // no markup problem, but...&lt;br /&gt;
i18n(&amp;quot;headers go into &amp;lt;placeholder&amp;gt;includes&amp;lt;/placeholder&amp;gt;&amp;quot;); // better&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Given it's frequency, it is not needed to use &amp;lt;tt&amp;gt;&amp;amp;amp;amp;&amp;lt;/tt&amp;gt; for shortcut markers; there is some heuristics around XML parsing to allow presence of naked &amp;amp;amp;. Basically, &amp;lt;tt&amp;gt;&amp;amp;amp;amp;&amp;lt;/tt&amp;gt; is needed only in the rare case of &amp;lt;tt&amp;gt;&amp;amp;amp;''no_whitespace_sequence'';&amp;lt;/tt&amp;gt; pattern which is ''not'' meant as an XML entity.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;unclosed &amp;amp;lt;br&amp;amp;gt; ... use proper paragraphs &amp;amp;lt;p&amp;amp;gt;...&amp;amp;lt;/p&amp;amp;gt; instead&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: This just signals a particularly frequent markup problem, that of &amp;lt;tt&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/tt&amp;gt; not closed in place, like &amp;lt;tt&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/tt&amp;gt;. Also, sometimes &amp;lt;tt&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/tt&amp;gt; is used to split logical paragraphs (especially when doubled, &amp;lt;tt&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/tt&amp;gt;), where proper paragraph tags should be used instead.&lt;br /&gt;
&lt;br /&gt;
; &amp;quot;''tag'' is neither KUIT nor HTML tag&amp;quot;&lt;br /&gt;
:: Some of the tags in the message is simply unknown, and will not be understood at runtime. If it is not a typo, but the message is really speaking about tags to the user (e.g. in a HTML editing application), use &amp;lt;tt&amp;gt;&amp;amp;amp;lt;foo&amp;amp;amp;gt;&amp;lt;/tt&amp;gt; pattern.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;HTML tag ''tag'' is not advised with KUIT markup&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: When Krazy encounters the KUIT context marker in a message, it assumes that message is semantically tagged, and disapproves of some HTML tags which are best replaced with semantic equivalents. For example:&lt;br /&gt;
&amp;lt;code cpp&amp;gt;&lt;br /&gt;
i18n(&amp;quot;@info:whatsthis&amp;quot;,&lt;br /&gt;
     &amp;quot;...this &amp;lt;i&amp;gt;cannot&amp;lt;/i&amp;gt; be undone.&amp;quot;);               // Krazy complains&lt;br /&gt;
i18n(&amp;quot;@info:whatsthis&amp;quot;,&lt;br /&gt;
     &amp;quot;...this &amp;lt;emphasis&amp;gt;cannot&amp;lt;/emphasis&amp;gt; be undone.&amp;quot;); // fine&lt;br /&gt;
&lt;br /&gt;
i18n(&amp;quot;@info&amp;quot;,&lt;br /&gt;
     &amp;quot;Really delete &amp;lt;i&amp;gt;%1&amp;lt;/i&amp;gt;?&amp;quot;, filename);               // complains&lt;br /&gt;
i18n(&amp;quot;@info&amp;quot;,&lt;br /&gt;
     &amp;quot;Really delete &amp;lt;filename&amp;gt;%1&amp;lt;/filename&amp;gt;?&amp;quot;, filename); // fine&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;tag ''tag1'' cannot be subtag of ''tag2''&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;tag ''tag'' has no ''att'' attribute&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;tag ''tag'' cannot have text content&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: These are validity checks for KUIT markup, a bit relaxed form of formal XML validation. The rules of which KUIT tag can contain which, and so on, are given with [[Development/Tutorials/Localization/i18n_Semantics#Semantic_Tags|tag descriptions]].&lt;br /&gt;
&lt;br /&gt;
== KUIT Context Markers ==&lt;br /&gt;
&lt;br /&gt;
Semantic [[Development/Tutorials/Localization/i18n_Semantics#Context_Markers|context markers]] give great deal of information to translators of where and how the message is used at runtime. Providing them for ''any'' future messages is strongly encouraged, and even equipping existing messages when not in message freeze is welcomed. Krazy helps with the following checks.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;missing KUIT context marker&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: If Krazy detects that the source file has a number of messages equipped with KUIT context markers, above some threshold, it assumes that developer's intention was to have all messages marked (as is recommended), and issues this warning for any non-marked message.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;invalid semantic role ''role''&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;invalid interface subcue ''cue'' to role ''role''&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;invalid visual format ''fmt''&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: Krazy checks that all ingredients of the context marker are defined, and that a particular combination of them is valid.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;&amp;quot;expected context marker ''ctxmark1'', got ''ctxmark2''&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
:: For messages used in some boiler-plate situations, canonical context markers have been established. Krazy warns if the context marker to such a message, although valid by itself, was not the expected one. For example, such messages are encountered in setting up the {{class|KAboutData}} information.&lt;/div&gt;</summary>
		<author><name>Ilic</name></author>	</entry>

	</feed>