<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>LXF81:Qt/KDE - История изменений</title>
		<link>http://wiki2.linuxformat.ru/index.php?title=LXF81:Qt/KDE&amp;action=history</link>
		<description>История изменений этой страницы в вики</description>
		<language>ru</language>
		<generator>MediaWiki 1.11.1</generator>
		<lastBuildDate>Wed, 13 May 2026 23:44:49 GMT</lastBuildDate>
		<item>
			<title>Yaleks: шаблон</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF81:Qt/KDE&amp;diff=3692&amp;oldid=prev</link>
			<description>&lt;p&gt;шаблон&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&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&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 09:02, 30 марта 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&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;{{Цикл/Qt/KDE}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&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;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==Здравствуй, KDE!==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==Здравствуй, KDE!==&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''часть 4 Сегодня мы приступаем к написанию первого настоящего приложения KDE. '''Андрей Боровский''' проведет вас по всем этапам – от ручного редактирования make-файлов до программирования в KDevelop и интернационализации.''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''часть 4 Сегодня мы приступаем к написанию первого настоящего приложения KDE. '''Андрей Боровский''' проведет вас по всем этапам – от ручного редактирования make-файлов до программирования в KDevelop и интернационализации.''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 30 Mar 2008 09:02:54 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF81:Qt/KDE</comments>		</item>
		<item>
			<title>Yaleks: «LXF81:KDE» переименована в «LXF81:Qt/KDE»: унификация</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF81:Qt/KDE&amp;diff=2550&amp;oldid=prev</link>
			<description>&lt;p&gt;«&lt;a href=&quot;/index.php/LXF81:KDE&quot; title=&quot;LXF81:KDE&quot;&gt;LXF81:KDE»&lt;/a&gt; переименована в «&lt;a href=&quot;/index.php/LXF81:Qt/KDE&quot; title=&quot;LXF81:Qt/KDE&quot;&gt;LXF81:Qt/KDE»&lt;/a&gt;: унификация&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&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&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 19:30, 17 марта 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;</description>
			<pubDate>Mon, 17 Mar 2008 19:30:43 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF81:Qt/KDE</comments>		</item>
		<item>
			<title>Yaleks: оформление</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF81:Qt/KDE&amp;diff=2368&amp;oldid=prev</link>
			<description>&lt;p&gt;оформление&lt;/p&gt;
&lt;a href=&quot;http://wiki2.linuxformat.ru/index.php?title=LXF81:Qt/KDE&amp;amp;diff=2368&amp;amp;oldid=1130&quot;&gt;(Различия между версиями)&lt;/a&gt;</description>
			<pubDate>Mon, 17 Mar 2008 09:24:54 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF81:Qt/KDE</comments>		</item>
		<item>
			<title>Yaleks: /* Здравствуй, KDE! */</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF81:Qt/KDE&amp;diff=1130&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Здравствуй, KDE!&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&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&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 14:29, 11 марта 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;самой вашей системе в процессе установки средств разработки для&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;KDE должен был появиться браузер справочной документации KDevelop&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;KDE должен был появиться браузер справочной документации KDevelop&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;Assistant (скорее всего, вы найдете его в группе Development|&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Documentatio&lt;/del&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;Assistant (скорее всего, вы найдете его в группе Development|&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Documentation &lt;/ins&gt;стартового меню KDE). KDevelop Assistant (рис. 1) во многом напоминает Qt Assistant. Помимо информации о программировании KDE KDevelop&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;n &lt;/del&gt;стартового меню KDE). KDevelop Assistant (рис. 1) во многом напоминает Qt Assistant. Помимо информации о программировании KDE KDevelop&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;/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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Assistant предоставляет доступ к полной справочной информации по Qt (а&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Assistant предоставляет доступ к полной справочной информации по Qt (а&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;также к множеству другой информации, не относящейся непосредственно&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&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;Строка 44:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 43:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;найдете на диске). Этот код заслуживает того, чтобы процитировать его&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;полностью в тексте статьи:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&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;&amp;lt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;pre&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 style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;source lang=&amp;quot;cpp-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; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#include &amp;lt;kcmdlineargs.h&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#include &amp;lt;kcmdlineargs.h&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#include &amp;lt;kapplication.h&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#include &amp;lt;kapplication.h&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;Строка 51:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 50:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;int main(int argc, char * argv[])&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;int main(int argc, char * argv[])&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&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;KCmdLineArgs::init(argc, argv, argv[0], argv[0],&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 style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;KCmdLineArgs::init(argc, argv, argv[0], argv[0],&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;first &lt;/ins&gt;KDE &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;application&amp;quot;&lt;/ins&gt;, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;1&lt;/ins&gt;.&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;0&amp;quot;&lt;/ins&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;“first &lt;/del&gt;KDE &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;application”&lt;/del&gt;, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;“1&lt;/del&gt;.&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;0”&lt;/del&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;KApplication app(argc, argv);&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;KApplication app(argc, argv);&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 style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;QLabel label(0);&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;QLabel label(0);&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 style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;label.setText(i18n(&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;Hello &lt;/ins&gt;World!&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;&lt;/ins&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;label.setText(i18n(&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;“Hello &lt;/del&gt;World!&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;”&lt;/del&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;app.setMainWidget(&amp;amp;label);&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;app.setMainWidget(&amp;amp;label);&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 style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;label.show();&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;label.show();&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 style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;return app.exec();&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;return app.exec();&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;/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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&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;&amp;lt;/&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;pre&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 style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;source&lt;/ins&gt;&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Точно так же, как класс QApplication является главным классом приложения Qt, класс KApplication составляет основу KDE-приложения (заметим, что имена классов KDE начинаются с буквы K, подобно тому, как&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Точно так же, как класс QApplication является главным классом приложения Qt, класс KApplication составляет основу KDE-приложения (заметим, что имена классов KDE начинаются с буквы K, подобно тому, как&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 11 Mar 2008 14:29:56 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF81:Qt/KDE</comments>		</item>
		<item>
			<title>Yaleks: /* Здравствуй, KDE! */</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF81:Qt/KDE&amp;diff=961&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Здравствуй, KDE!&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&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&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 07:41, 11 марта 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 28:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 28:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; export KDEDIR=/opt/kde3&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; export KDEDIR=/opt/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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &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 colspan=&quot;2&quot;&gt;&amp;nbsp;&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;[[Изображение:Img_81_88_1.png|thumb|200px|Рисунок 1. KDevelop Assistant.]]&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;По ходу освоения программирования KDE-приложений нам придется обращаться к различным справочным материалам. Много полезной&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;По ходу освоения программирования KDE-приложений нам придется обращаться к различным справочным материалам. Много полезной&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;информации можно найти на сайте http://developer.kde.org. Кроме того, в&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;информации можно найти на сайте http://developer.kde.org. Кроме того, в&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 115:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 116:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; xgettext -C -ki18n -kI18N_NOOP *.cpp&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; xgettext -C -ki18n -kI18N_NOOP *.cpp&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &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;Если ваша система ничего не знает про xgettext, см. врезку &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;«Где &lt;/del&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Изображение:Img_81_89_1.png|thumb|200px|Рисунок 2. KBabel в работе.]]&lt;/ins&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;xgettext?». Ключ –C указывает команде, что она обрабатывает исходные&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;Если ваша система ничего не знает про xgettext, см. врезку &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;«[[#Где же xgetext ?|Где &lt;/ins&gt;же&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&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;xgettext?&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;». Ключ –C указывает команде, что она обрабатывает исходные&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;тексты на C/C++. Ключи -ki18n -kI18N_NOOP указывают, что нужно искать&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;тексты на C/C++. Ключи -ki18n -kI18N_NOOP указывают, что нужно искать&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;строки, обернутые i18n и I18N_NOOP (I18N_NOOP – макрос, предназначенный для упрощения перевода статического текста за пределами области доступности функции i18n(), в нашей программе он не используется).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;строки, обернутые i18n и I18N_NOOP (I18N_NOOP – макрос, предназначенный для упрощения перевода статического текста за пределами области доступности функции i18n(), в нашей программе он не используется).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 145:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 147:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;языки предназначены другие директории, например, для французского: $(KDEDIR)/share/locale/fr. Переместив файл kedapp1.mo в указанную директорию, можно, наконец, полюбоваться на локализованный&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;языки предназначены другие директории, например, для французского: $(KDEDIR)/share/locale/fr. Переместив файл kedapp1.mo в указанную директорию, можно, наконец, полюбоваться на локализованный&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;вариант нашей программы (рис. 3).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;вариант нашей программы (рис. 3).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&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;[[Изображение:Img_81_90_1.png|center|thumb|Рисунок 3. Локализованная программа kdeapp1.]]&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Мы познакомились с интернационализацией KDE-приложения, так&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Мы познакомились с интернационализацией KDE-приложения, так&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 165:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 168:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;интернационализации.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &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 colspan=&quot;2&quot;&gt;&amp;nbsp;&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;[[Изображение:Img_81_90_2.png|thumb|200px|Рисунок 4. Мастер создания проекта.]]&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Запустите KDevelop. В меню запуска Development|Integrated&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Запустите KDevelop. В меню запуска Development|Integrated&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Environment вы можете найти несколько вариантов запуска KDevelop, нам&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Environment вы можете найти несколько вариантов запуска KDevelop, нам&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 177:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 181:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Сборка|Собрать проект. Если сборка пройдет благополучно, вы сможете запустить приложение (например, с помощью команды Сборка &amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Сборка|Собрать проект. Если сборка пройдет благополучно, вы сможете запустить приложение (например, с помощью команды Сборка &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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Выполнить программу) и увидите окно с кнопкой (рис. 5).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Выполнить программу) и увидите окно с кнопкой (рис. 5).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&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;[[Изображение:Img_81_90_3.png|center|thumb|Рисунок 5. Программа kdeapp2.]]&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Мы создали и скомпилировали простое приложение KDE, теперь&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Мы создали и скомпилировали простое приложение KDE, теперь&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 207:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 212:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Запустите KDevelop, откройте проект kdeapp2 и выберите команду меню&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Запустите KDevelop, откройте проект kdeapp2 и выберите команду меню&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Сборка|Установить (или Сборка|Установить (с правами root)) Теперь приложение kdeapp2 будет говорить по-русски (рис. 6).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Сборка|Установить (или Сборка|Установить (с правами root)) Теперь приложение kdeapp2 будет говорить по-русски (рис. 6).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&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;[[Изображение:Img_81_91_1.png|center|thumb|Рисунок 6. Русифицированная программа kdeapp2.]]&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Перейдите в директорию $(KDEDIR)/share/locale/ru/LC_MESSAGES/. В этой директории появился новый файл – kdeapp2.mo,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Перейдите в директорию $(KDEDIR)/share/locale/ru/LC_MESSAGES/. В этой директории появился новый файл – kdeapp2.mo,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 11 Mar 2008 07:41:47 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF81:Qt/KDE</comments>		</item>
		<item>
			<title>Yaleks: /* KDevelop */</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF81:Qt/KDE&amp;diff=696&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;KDevelop&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&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&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 13:58, 10 марта 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 199:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 199:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;файл представляет собой шаблон для всех будущих файлов перевода.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Фактически его содержимое аналогично содержимому файла .po, создаваемого утилитой xgettext. Теперь перейдем в KDevelop. Выбираем&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Фактически его содержимое аналогично содержимому файла .po, создаваемого утилитой xgettext. Теперь перейдем в KDevelop. Выбираем&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;команду меню Проект|Добавить перевод.... В открывшемся окне &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;выби-&lt;/del&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;команду меню Проект|Добавить перевод.... В открывшемся окне &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;выбираем &lt;/ins&gt;русский язык (ru). Эта команда создает в директории po полезные&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;раем &lt;/del&gt;русский язык (ru). Эта команда создает в директории po полезные&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;/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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;make-файлы. Она также создает бесполезный для нас файл ru.po нулевого размера. Откройте теперь файл kdeapp2.pot в KBabel, и переведите&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;make-файлы. Она также создает бесполезный для нас файл ru.po нулевого размера. Откройте теперь файл kdeapp2.pot в KBabel, и переведите&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;все (или какие хотите) строки английского текста (обратите внимание,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&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;Строка 257:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 256:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;перевод всех надписей интерфейса простого приложения KDE Application&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;перевод всех надписей интерфейса простого приложения KDE Application&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Framework.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Framework.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&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;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;===Функция i18n() и макрос I18N_NOOP===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;===Функция i18n() и макрос I18N_NOOP===&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Функция i18n() позволяет избежать неоднозначностей, возникающих при переводе интерфейсов с английского языка. Допустим, что&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Функция i18n() позволяет избежать неоднозначностей, возникающих при переводе интерфейсов с английского языка. Допустим, что&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Mon, 10 Mar 2008 13:58:58 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF81:Qt/KDE</comments>		</item>
		<item>
			<title>Yaleks: /* Здравствуй, KDE! */</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF81:Qt/KDE&amp;diff=534&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Здравствуй, KDE!&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&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&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 08:54, 10 марта 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &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; &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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;По ходу освоения программирования KDE-приложений нам придется обращаться к различным справочным материалам. Много полезной&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;По ходу освоения программирования KDE-приложений нам придется обращаться к различным справочным материалам. Много полезной&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;информации можно найти на сайте developer.kde.org. Кроме того, в&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 style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;http://&lt;/ins&gt;developer.kde.org. Кроме того, в&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;самой вашей системе в процессе установки средств разработки для&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&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: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;KDE должен был появиться браузер справочной документации KDevelop&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;KDE должен был появиться браузер справочной документации KDevelop&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Mon, 10 Mar 2008 08:54:32 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF81:Qt/KDE</comments>		</item>
		<item>
			<title>Yaleks: Новая: ==Здравствуй, KDE!== ''часть 4 Сегодня мы приступаем к написанию первого настоящего приложения KDE. '''Андрей...</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF81:Qt/KDE&amp;diff=532&amp;oldid=prev</link>
			<description>&lt;p&gt;Новая: ==Здравствуй, KDE!== ''часть 4 Сегодня мы приступаем к написанию первого настоящего приложения KDE. '''Андрей...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Здравствуй, KDE!==&lt;br /&gt;
''часть 4 Сегодня мы приступаем к написанию первого настоящего приложения KDE. '''Андрей Боровский''' проведет вас по всем этапам – от ручного редактирования make-файлов до программирования в KDevelop и интернационализации.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;– Форд, а что эта рыбка делает в моем ухе?&amp;lt;br&amp;gt;&lt;br /&gt;
– Переводит для тебя. Это вавилонская рыбка. Если хочешь, посмотри в книге.&amp;lt;br&amp;gt;&lt;br /&gt;
Дуглас Адамс, «Путеводитель по Галактике для автостопщиков»&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, мы приступаем к программированию KDE-приложений.&lt;br /&gt;
В самой первой статье этой серии было сказано, что графическая среда KDE – это не просто оболочка на основе Qt. KDE&lt;br /&gt;
добавляет к Qt новые классы, визуальные элементы и новые возможности. Из этого факта читатель может сделать вывод, что при разработке приложений всегда лучше использовать KDE, чем чистую Qt. Вывод&lt;br /&gt;
этот неправильный. Дело не только в том, что KDE-приложения имеют,&lt;br /&gt;
как правило, несколько больший объем, чем Qt-приложения. Гораздо&lt;br /&gt;
важнее то, что KDE-проект утрачивает переносимость, свойственную&lt;br /&gt;
Qt. Исходный код Qt-приложения может без всяких дополнительный&lt;br /&gt;
модификаций компилироваться на Unix, Windows и MacOS (впрочем,&lt;br /&gt;
для Mac OS существует своя версия KDE), тогда как в случае KDE набор&lt;br /&gt;
поддерживаемых платформ ограничен, в основном, Unix-системами.&lt;br /&gt;
Кросс-платформенность – важный фактор в развитии современного&lt;br /&gt;
программного проекта, и если перенос приложения на другие платформы предполагается хотя бы теоретически, то, скорее всего, лучше отказаться от дополнительных возможностей, предоставляемых KDE.&lt;br /&gt;
&lt;br /&gt;
Мы же начнем знакомство с программированием для KDE с простейшего приложения, аналогичного тому, с помощью которого мы&lt;br /&gt;
начинали знакомиться с Qt. В системах читателей нашей серии статей&lt;br /&gt;
все уже должно быть настроено для разработки Qt-приложений. К этим&lt;br /&gt;
настройкам следует добавить совсем немного. Проверьте еще раз,&lt;br /&gt;
установлены ли в вашей системе пакеты разработчика для KDE (kdelibsdevel&lt;br /&gt;
или аналогичные). По аналогии с переменной QtDIR, нам понадобится переменная окружения KDEDIR, которая должна содержать путь к&lt;br /&gt;
каталогу KDE, например:&lt;br /&gt;
 export KDEDIR=/opt/kde3&lt;br /&gt;
&lt;br /&gt;
По ходу освоения программирования KDE-приложений нам придется обращаться к различным справочным материалам. Много полезной&lt;br /&gt;
информации можно найти на сайте developer.kde.org. Кроме того, в&lt;br /&gt;
самой вашей системе в процессе установки средств разработки для&lt;br /&gt;
KDE должен был появиться браузер справочной документации KDevelop&lt;br /&gt;
Assistant (скорее всего, вы найдете его в группе Development|Documentatio&lt;br /&gt;
n стартового меню KDE). KDevelop Assistant (рис. 1) во многом напоминает Qt Assistant. Помимо информации о программировании KDE KDevelop&lt;br /&gt;
Assistant предоставляет доступ к полной справочной информации по Qt (а&lt;br /&gt;
также к множеству другой информации, не относящейся непосредственно&lt;br /&gt;
к программированию KDE).&lt;br /&gt;
&lt;br /&gt;
Теперь мы можем приступить к написанию простейшего приложения.&lt;br /&gt;
Создадим новую директорию kdeapp1. Исходный текст нашего первого&lt;br /&gt;
приложения мы сохраним в файле kdeapp1/kdeapp1.cpp (который вы&lt;br /&gt;
найдете на диске). Этот код заслуживает того, чтобы процитировать его&lt;br /&gt;
полностью в тексте статьи:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;kcmdlineargs.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kapplication.h&amp;gt;&lt;br /&gt;
#include &amp;lt;klocale.h&amp;gt;&lt;br /&gt;
#include &amp;lt;qlabel.h&amp;gt;&lt;br /&gt;
int main(int argc, char * argv[])&lt;br /&gt;
{&lt;br /&gt;
KCmdLineArgs::init(argc, argv, argv[0], argv[0],&lt;br /&gt;
“first KDE application”, “1.0”);&lt;br /&gt;
KApplication app(argc, argv);&lt;br /&gt;
QLabel label(0);&lt;br /&gt;
label.setText(i18n(“Hello World!”));&lt;br /&gt;
app.setMainWidget(&amp;amp;label);&lt;br /&gt;
label.show();&lt;br /&gt;
return app.exec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Точно так же, как класс QApplication является главным классом приложения Qt, класс KApplication составляет основу KDE-приложения (заметим, что имена классов KDE начинаются с буквы K, подобно тому, как&lt;br /&gt;
имена классов Qt начинаются с Q). Класс KApplication объявлен в заголовочном файле kapplication.h (раньше это был файл kapp.h). Класс&lt;br /&gt;
KApplication является потомком класса QApplication (многие классы KDE&lt;br /&gt;
наследуют классы Qt со сходной функциональностью) и класса KInstance.&lt;br /&gt;
Конструкторов у KApplication много, и все они обладают весьма устрашающими списками параметров. К счастью для нас, многие из них имеют&lt;br /&gt;
значения по умолчанию. Мы передаем конструктору KApplication параметры argc и argv функции main(), но прежде нам необходимо выполнить&lt;br /&gt;
инициализацию этих параметров. Статический метод init() (точнее, один&lt;br /&gt;
из перегруженных методов init()) класса KCmdLineArgs, объявленного&lt;br /&gt;
в файле kcmdlineargs.h, инициализирует приложение таким образом,&lt;br /&gt;
чтобы объект класса KApplication мог быть сконструирован правильно. В&lt;br /&gt;
качестве параметров мы передаем методу init() значения argc, argv,&lt;br /&gt;
имя приложения (используя argv[0]), имя программы, а также строки с описанием и версией программы. В сложных приложениях класс&lt;br /&gt;
KCmdLineArgs позволяет организовать корректную обработку параметров&lt;br /&gt;
командной строки приложения, в нашем же случае это просто необходимая формальность перед вызовом конструктора KAppilcation. Существует&lt;br /&gt;
другой, устаревший способ инициализации объекта KApplication с помощью конструктора с третьим параметром – именем приложения (когда&lt;br /&gt;
я использую конструктор с третьим параметром, компилятор предупреждает меня, что я отстал от жизни). Все, происходящее в нашей программе дальше, в точности соответствует простейшему приложению Qt,&lt;br /&gt;
рассмотренному в первой статье этой серии. Объект label класса QLabel&lt;br /&gt;
будет главным и единственным визуальным элементом нашего приложения. С помощью метода setMainWidget() мы указываем объекту app&lt;br /&gt;
на главный визуальный элемент. Метод show() делает метку видимой,&lt;br /&gt;
а метод exec() объекта app запускает цикл обработки сообщений графической системы. Функция i18n() нужна (как и следует из ее имени) для&lt;br /&gt;
интернационализации приложения. Далее мы рассмотрим интернационализацию нашего первого приложения KDE, пока же вызов i18n() – тоже&lt;br /&gt;
формальность.&lt;br /&gt;
&lt;br /&gt;
Наша следующая задача – скомпилировать текст программы. Можно&lt;br /&gt;
набрать команду компиляции вручную, но лучше все-таки обзавестись&lt;br /&gt;
make-файлом. Для генерации make-файла можно воспользоваться уже&lt;br /&gt;
знакомой нам утилитой qmake. В директории kdeapp1 дайте команду:&lt;br /&gt;
 qmake -project -after “INCLUDEPATH += $KDEDIR/include” “LIBPATH +=$KDEDIR/lib” “LIBS = -lkdeui -lkdecore”&lt;br /&gt;
&lt;br /&gt;
Эта команда создает файл проекта с дополнительными значениями&lt;br /&gt;
переменных. К переменной INCLUDEPATH добавляется путь к заголовочным файлам KDE, к переменной LIBPATH – путь к разделяемым библиотекам KDE, а к переменной LIBS – указание связать исполнимый файл&lt;br /&gt;
приложения с библиотеками libkdeui и libkdecore. Команда сработает правильно только в том случае, если вы установили переменную окружения&lt;br /&gt;
KDEEDIR. Получив файл проекта, скомандуйте:&lt;br /&gt;
 qmake&lt;br /&gt;
&lt;br /&gt;
в результате чего вы получите make-файл для компиляции приложения. На диске, в директории kdeapp1, вы найдете скрипт genmake.sh,&lt;br /&gt;
содержащий описанные выше вызовы qmake. Получив make-файл, мы&lt;br /&gt;
можем, наконец, скомпилировать приложение и затем запустить его. Если&lt;br /&gt;
запустить скомпилированную программу kdeapp1 с ключом --version,&lt;br /&gt;
можно увидеть некоторые плоды использования KCmdLineArgs. На&lt;br /&gt;
стандартный терминал будет выведена информация о версии, переданная&lt;br /&gt;
методу KCmdLineArgs::init().&lt;br /&gt;
===Интернационализация===&lt;br /&gt;
Рассмотренная выше программа уже содержит некоторые элементы,&lt;br /&gt;
необходимые для интернационализации. Мы включили в текст программы заголовочный файл klocale.h, который включает объявления&lt;br /&gt;
необходимых классов и функций. Строковая константа, используемая&lt;br /&gt;
в нашей программе, была «обернута» функцией i18n(). Эта функция&lt;br /&gt;
похожа на методы tr() и trUtf8(), знакомые нам по работе с классами Qt.&lt;br /&gt;
Функция i18n() получает в качестве параметра строку (char *) в кодировке UTF-8 и заменяет ее на строку перевода из файла ресурсов перевода. Концептуально все это очень похоже на интернационализацию Qt,&lt;br /&gt;
но на практике существуют весьма значительные отличия.&lt;br /&gt;
&lt;br /&gt;
Мы можем получить список всех строк нашего приложения, подлежащих переводу, с помощью команды:&lt;br /&gt;
 xgettext -C -ki18n -kI18N_NOOP *.cpp&lt;br /&gt;
&lt;br /&gt;
Если ваша система ничего не знает про xgettext, см. врезку «Где же&lt;br /&gt;
xgettext?». Ключ –C указывает команде, что она обрабатывает исходные&lt;br /&gt;
тексты на C/C++. Ключи -ki18n -kI18N_NOOP указывают, что нужно искать&lt;br /&gt;
строки, обернутые i18n и I18N_NOOP (I18N_NOOP – макрос, предназначенный для упрощения перевода статического текста за пределами области доступности функции i18n(), в нашей программе он не используется).&lt;br /&gt;
Мы приказываем утилите искать текст для перевода только в файлах&lt;br /&gt;
с расширением .cpp. В результате выполнения команды в директории&lt;br /&gt;
kdeapp1 должен появиться файл messages.po. Этот файл представляет собой список сообщений, предназначенных для перевода. Для&lt;br /&gt;
обработки файлов с расширением .po используется утилита KBabel,&lt;br /&gt;
которая в русскоязычной версии KDE именуется как «Утилита локализации приложений (редактор файлов перевода)». Внешне KBabel (рис. 2)&lt;br /&gt;
напоминает Qt Linquist. В верхнем окне выбираем оригинальную строку,&lt;br /&gt;
в нижней – пишем перевод.&lt;br /&gt;
&lt;br /&gt;
Откроем файл messages.po в KBabel, выполним перевод единственной подлежащей переводу строки – “Hello World” и сохраним результат под именем kdeapp1.po. На этом работа с ресурсом перевода отнюдь&lt;br /&gt;
не закончена, файл ресурса требуется еще и скомпилировать. Для компиляции po-файлов служит утилита msgfmt. В окне консоли командуем:&lt;br /&gt;
 msgfmt kdeapp1.po -o kdeapp1.mo&lt;br /&gt;
&lt;br /&gt;
В результате получаем файл kedapp1.mo, который и является&lt;br /&gt;
конечным результатом нашей работы по интернационализации. Однако,&lt;br /&gt;
если теперь мы запустим программу kdeapp1, то увидим, что ничего не&lt;br /&gt;
изменилось, надпись Hello World! по-прежнему выводится по-английски.&lt;br /&gt;
Дело в том, что, в отличие от Qt-приложений, программы KDE по умолчанию ищут файлы ресурсов интернационализации в определенных&lt;br /&gt;
директориях (рабочая директория программы, к сожалению, не входит&lt;br /&gt;
в их число). Для того, чтобы наша программа «увидела» свой ресурс&lt;br /&gt;
интернационализации, соответствующий файл следует поместить либо&lt;br /&gt;
в директорию $(KDEDIR)/share/locale/ru/LC_MESSAGES/ (для чего,&lt;br /&gt;
естественно, понадобятся права root), либо в «домашнюю» директорию&lt;br /&gt;
~/.kde/share/locale/ru/LC_MESSAGES/ (эту директорию вам, скорее&lt;br /&gt;
всего, придется создать вручную). Для файлов переводов на другие&lt;br /&gt;
языки предназначены другие директории, например, для французского: $(KDEDIR)/share/locale/fr. Переместив файл kedapp1.mo в указанную директорию, можно, наконец, полюбоваться на локализованный&lt;br /&gt;
вариант нашей программы (рис. 3).&lt;br /&gt;
&lt;br /&gt;
Мы познакомились с интернационализацией KDE-приложения, так&lt;br /&gt;
сказать, вручную. Проще и удобнее выполнять интернационализацию (и&lt;br /&gt;
не только интернационализацию) в интегрированной среде разработки&lt;br /&gt;
KDevelop, к изучению которой мы и приступим.&lt;br /&gt;
===KDevelop===&lt;br /&gt;
Среда KDevelop – предпочтительный инструмент разработки приложений KDE, и все последующие приложения в этой серии будут созданы в&lt;br /&gt;
KDevelop. Между прочим, в KDevelop можно программировать не только&lt;br /&gt;
для KDE, эта среда хорошо подходит для разработки Qt-приложений. В&lt;br /&gt;
KDevelop можно работать над созданиями GTK-приложений, приложений, использующих wxWidgets, и даже редактировать и собирать&lt;br /&gt;
программы, написанные на таких языках программирования, как Java,&lt;br /&gt;
Pascal, Perl, Python. KDevelop в чем-то похож на Qt Designer, однако его&lt;br /&gt;
возможности существенно шире, ведь KDevelop – это настоящая интегрированная среда с широкими возможностями управления проектом и&lt;br /&gt;
отладки приложений. Помимо прочего, KDevelop позволяет автоматизировать создание дистрибутивов и установку приложений. Ну и конечно,&lt;br /&gt;
в KDevelop реализованы любимые нами функции визуального программирования. Если начинать рассказ о KDevelop с подробного описания&lt;br /&gt;
приемов работы и возможностей среды, введение получится слишком&lt;br /&gt;
длинным. Мы пойдем другим путем и будем осваивать KDevelop в&lt;br /&gt;
процессе решения различных задач KDE-программирования. Начнем с&lt;br /&gt;
интернационализации.&lt;br /&gt;
&lt;br /&gt;
Запустите KDevelop. В меню запуска Development|Integrated&lt;br /&gt;
Environment вы можете найти несколько вариантов запуска KDevelop, нам&lt;br /&gt;
подойдет любой. В меню Проект выберите команду Новый проект... и в&lt;br /&gt;
открывшемся окне Создать новый проект выберите пункт Simple Designer&lt;br /&gt;
based KDE Application (рис. 4). Для того, чтобы получить доступ к этому&lt;br /&gt;
пункту, нужно установить флажок Показать все шаблоны проекта. В поле&lt;br /&gt;
ввода Имя приложения введите kdeapp2.&lt;br /&gt;
&lt;br /&gt;
Пройдите по всем оставшимся окнам мастера создания проекта, и&lt;br /&gt;
в результате у вас должен появиться новый проект простого KDE-приложения с окном и кнопкой в нем. Соберите проект с помощью команды&lt;br /&gt;
Сборка|Собрать проект. Если сборка пройдет благополучно, вы сможете запустить приложение (например, с помощью команды Сборка &amp;gt;&lt;br /&gt;
Выполнить программу) и увидите окно с кнопкой (рис. 5).&lt;br /&gt;
&lt;br /&gt;
Мы создали и скомпилировали простое приложение KDE, теперь&lt;br /&gt;
займемся его интернационализацией и локализацией. В левой части&lt;br /&gt;
главного окна KDevelop вертикально расположены переключатели вкладок. Перейдите на вкладку Группы файлов, откройте группу Sources и в&lt;br /&gt;
этой группе выберите файл kdeapp2widget.cpp. В окне редактора кода&lt;br /&gt;
добавьте в файл строку&lt;br /&gt;
 #include &amp;lt;klocale.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом же файле найдите строку&lt;br /&gt;
 label-&amp;gt;setText(“Hello World!” );&lt;br /&gt;
&lt;br /&gt;
Эта строка содержит единственный в нашем приложении текст, подлежащий интернационализации явным образом. Замените ее на:&lt;br /&gt;
 label-&amp;gt;setText( i18n(“Hello World!”) );&lt;br /&gt;
&lt;br /&gt;
Далее нам следует внести некоторые изменения в проект приложения.&lt;br /&gt;
Корневая директория нашего проекта – kdeapp2. Перейдите в нее директорию и дайте команду:&lt;br /&gt;
 make -f admin/Makefile.common package-messages&lt;br /&gt;
&lt;br /&gt;
В результате выполнения этой команды в проекте происходит несколько важных изменений. Некоторые из них не заметны (такие как изменения&lt;br /&gt;
в make-файлах), другие бросаются в глаза. В корневой директории проекта появляется директория po, содержащая файл kdeapp2.pot. Этот&lt;br /&gt;
файл представляет собой шаблон для всех будущих файлов перевода.&lt;br /&gt;
Фактически его содержимое аналогично содержимому файла .po, создаваемого утилитой xgettext. Теперь перейдем в KDevelop. Выбираем&lt;br /&gt;
команду меню Проект|Добавить перевод.... В открывшемся окне выби-&lt;br /&gt;
раем русский язык (ru). Эта команда создает в директории po полезные&lt;br /&gt;
make-файлы. Она также создает бесполезный для нас файл ru.po нулевого размера. Откройте теперь файл kdeapp2.pot в KBabel, и переведите&lt;br /&gt;
все (или какие хотите) строки английского текста (обратите внимание,&lt;br /&gt;
что в список строк для перевода автоматически были добавлены название кнопки Click me! и некоторые другие строки из проекта). Сохраните&lt;br /&gt;
результат перевода под именем ru.po (заменив уже существующий&lt;br /&gt;
файл). Теперь пересоберите проект в KDevelop. Для того чтобы интернационализация заработала, новое приложение нужно установить в системе.&lt;br /&gt;
Запустите KDevelop, откройте проект kdeapp2 и выберите команду меню&lt;br /&gt;
Сборка|Установить (или Сборка|Установить (с правами root)) Теперь приложение kdeapp2 будет говорить по-русски (рис. 6).&lt;br /&gt;
&lt;br /&gt;
Перейдите в директорию $(KDEDIR)/share/locale/ru/LC_MESSAGES/. В этой директории появился новый файл – kdeapp2.mo,&lt;br /&gt;
содержащий ресурсы перевода для приложения kdeapp2. Заметим, что&lt;br /&gt;
так уж совпало, что этот файл содержит перевод строки из приложения&lt;br /&gt;
kdeapp1 (Hello World!), в связи с чем можно использовать один трюк.&lt;br /&gt;
Удалите из текущей директории файл kdeapp1.mo (если, конечно, вы&lt;br /&gt;
поместили его сюда). В исходном тексте приложения kdeapp1 добавьте&lt;br /&gt;
строку (она должна быть первой в теле функции main()):&lt;br /&gt;
 KLocale::setMainCatalogue(“kdeapp2”);&lt;br /&gt;
&lt;br /&gt;
Эта строка заставит программу kdeapp1 использовать файлы ресурсов (каталоги сообщений) программы kdeapp2. Перекомпилируйте и&lt;br /&gt;
запустите программу kdeapp1. Вы увидите, что строка “Hello World!”&lt;br /&gt;
переведена правильно (то есть также, как и в программе kdeapp2).&lt;br /&gt;
Возможность использовать «чужие» каталоги переводов при программировании KDE-приложений чрезвычайно полезна. Речь идет не только&lt;br /&gt;
об экономии места на диске. Используя в своем приложении ресурсы&lt;br /&gt;
другого приложения KDE, переведенного на многие языки, вы «бесплатно» получаете перевод своего приложения на языки, которых можете и&lt;br /&gt;
не знать. Если сверх стандартных надписей ваше приложение содержит&lt;br /&gt;
специфический текст, не встречающийся в других программах, ничто не&lt;br /&gt;
мешает вам использовать несколько каталогов (других приложений и ваш&lt;br /&gt;
собственный). В нашем примере мы использовали класс KLocale, который&lt;br /&gt;
управляет различными региональными настройками программы. Метод&lt;br /&gt;
setMainCatalogue(), устанавливающий основной каталог переводов&lt;br /&gt;
приложения – статический, но у каждого приложения есть свой объект&lt;br /&gt;
класса KLocale. Указатель на этот объект можно получить с помощью статического метода KGlobal::locale(). Например:&lt;br /&gt;
 KLocale * locale = KGlobal::locale();&lt;br /&gt;
 locale-&amp;gt;setLanguage(QString(“ru”));&lt;br /&gt;
 locale-&amp;gt;setMainCatalogue(“kdeapp2”);&lt;br /&gt;
&lt;br /&gt;
Вы не должны уничтожать объект locale явным образом. Касс&lt;br /&gt;
KGlobal объединяет множество методов, позволяющих получить указатели на различные глобальные объекты вашего приложения (эти объекты существуют в единственном экземпляре, создаются и уничтожаются&lt;br /&gt;
автоматически). Следует помнить, что большая часть глобальных объектов будет создана после вызова конструктора KApplication. Например,&lt;br /&gt;
если вызвать KGlobal::locale() до инициализации объекта класса&lt;br /&gt;
KApplication, метод вернет NULL.&lt;br /&gt;
&lt;br /&gt;
Чтобы убедиться в том, какую мощь предоставляет нам возможность использования каталогов других приложений, создадим еще одно&lt;br /&gt;
стандартное приложение в KDevelop. В окне Создать новый проект в&lt;br /&gt;
группе KDE выберите пункт Application Framework (проект приложения со стандартной строкой меню и панелью быстрого доступа). В поле&lt;br /&gt;
ввода Имя приложения введите kdeapp3. После завершения мастера&lt;br /&gt;
создания проекта соберите и запустите новое приложение. Вы увидите&lt;br /&gt;
англоязычный интерфейс меню и пояснений к кнопкам быстрого доступа. Нас сейчас не интересует логика работы этого приложения, мы займемся только его интернационализацией. В среде KDevelop перейдите&lt;br /&gt;
на вкладку Группы файлов, откройте группу Sources и в этой группе&lt;br /&gt;
выберите файл main.cpp (главный файл приложения). В начале функции main() добавьте строку:&lt;br /&gt;
 KLocale::setMainCatalogue(“konqueror”);&lt;br /&gt;
&lt;br /&gt;
Теперь снова скомпилируйте и запустите приложение и… (о чудо!)&lt;br /&gt;
весь интерфейс приложения теперь переведен на русский язык! В функции main() мы указали, что наше приложение должно использовать&lt;br /&gt;
каталог переводов приложения konqueror, а konqueror уж точно содержит&lt;br /&gt;
перевод всех надписей интерфейса простого приложения KDE Application&lt;br /&gt;
Framework.&lt;br /&gt;
===Функция i18n() и макрос I18N_NOOP===&lt;br /&gt;
Функция i18n() позволяет избежать неоднозначностей, возникающих при переводе интерфейсов с английского языка. Допустим, что&lt;br /&gt;
англоязычный интерфейс содержит две строки “Build” в двух разных&lt;br /&gt;
смыслах – «собрать» и «сборка». Если мы будем писать в тексте программы просто&lt;br /&gt;
 i18n(“Build”)&lt;br /&gt;
&lt;br /&gt;
то в файл перевода будет включена только одна строка “Build”, для&lt;br /&gt;
которой можно будет указать, соответственно, только один вариант перевода. Но мы можем вызывать i18n и иначе. Там, где подразумевается&lt;br /&gt;
«собрать», мы напишем:&lt;br /&gt;
 i18n(“verb”, “Build”)&lt;br /&gt;
&lt;br /&gt;
Строка “verb” (англ. «глагол») здесь является произвольной (это просто комментарий), можно было бы написать что-нибудь другое. На месте&lt;br /&gt;
варианта «сборка» мы напишем:&lt;br /&gt;
 i18n(“noun”, “Build”)&lt;br /&gt;
&lt;br /&gt;
в результате в файле перевода появятся две строки “Build” с пояснениями “verb” и “noun”, для каждого из используемых значений слова&lt;br /&gt;
Build.&lt;br /&gt;
&lt;br /&gt;
Макрос I18N_NOOP сам не выполняет никакой работы по переводу строки. Макрос только помечает строку для извлечения утилитой&lt;br /&gt;
xgettext при построении заготовки файла перевода (этот макрос&lt;br /&gt;
иногда используется для маркировки текста, расположенного до&lt;br /&gt;
инициализации объекта KApplication, когда функция i18n() еще&lt;br /&gt;
не может быть вызвана). Для подстановки перевода в программе&lt;br /&gt;
все равно придется вызывать i18n().&lt;br /&gt;
&lt;br /&gt;
Мы начали знакомство с KDevelop с интернационализации&lt;br /&gt;
приложений, но интернационализацией его возможности отнюдь&lt;br /&gt;
не ограничиваются! В следующей статье мы узнаем, как создавать&lt;br /&gt;
в KDevelop KDE-приложения различных типов.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Где же xgetext ?===&lt;br /&gt;
Должен отметить, что с интернационализацией приложения у меня&lt;br /&gt;
возникли неожиданные организационные сложности. В процессе&lt;br /&gt;
интернационализации используется загадочная утилита xgettext (эта&lt;br /&gt;
утилита извлекает из различных файлов проекта KDE сообщения,&lt;br /&gt;
подлежащие переводу на другие языки). Пишу «загадочная», потому,&lt;br /&gt;
что в моей системе Open SUSE 10 этой утилиты не оказалось, хотя&lt;br /&gt;
пакет gettext, в котором она, вроде бы, должна находится, был установлен. Поиск в других, не установленных, пакетах результатов не&lt;br /&gt;
дал, может я плохо искал, не знаю. Зато в процессе поиска обнаружилась утилита kde-xgettext, по поведению идентичная упомянутой&lt;br /&gt;
xgettext. Поскольку все скрипты разработки KDE ориентированы на&lt;br /&gt;
использование xgettext, я просто сделал ссылку:&lt;br /&gt;
 ln /opt/kde3/bin/kde-xgettext /usr/bin/xgettext&lt;br /&gt;
Так что если в вашей системе нет утилиты xgettext, вы знаете, что&lt;br /&gt;
делать.&lt;br /&gt;
&lt;br /&gt;
===Почему KBabel так называется===&lt;br /&gt;
Почему утилита для перевода файлов называется KBabel и почему ее&lt;br /&gt;
эмблемой является рыбка, украшенная флагами разных стран? Корни&lt;br /&gt;
названия уходят в фантастическую повесть Дугласа Адамса&lt;br /&gt;
«Путеводитель по Галактике для автостопщиков», в которой присутствовал артефакт под названием «вавилонская рыбка». Рыбка выступала в роли универсального переводчика всего, что ее пользователь&lt;br /&gt;
видел и слышал. Для того, чтобы рыбка начала переводить, ее нужно&lt;br /&gt;
было вставить в ухо (см. эпиграф). Поучительную историю о жителях&lt;br /&gt;
Вавилона, предпринявших грандиозный проект, и не позаботившихся&lt;br /&gt;
об интернационализации, можно прочесть в Библии, в Книге Бытия.&lt;/div&gt;</description>
			<pubDate>Mon, 10 Mar 2008 08:53:14 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF81:Qt/KDE</comments>		</item>
	</channel>
</rss>