<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mi blog lah! &#187; gnome</title>
	<atom:link href="http://simos.info/blog/archives/category/gnome/feed" rel="self" type="application/rss+xml" />
	<link>http://simos.info/blog</link>
	<description>Το ιστολόγιό μου</description>
	<lastBuildDate>Tue, 27 Jul 2010 16:59:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Generating multilingual PDF files out of GNOME documentation</title>
		<link>http://simos.info/blog/archives/31?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=generating-multilingual-pdf-files-out-of-gnome-documentation</link>
		<comments>http://simos.info/blog/archives/31#comments</comments>
		<pubDate>Mon, 18 May 2009 13:17:53 +0000</pubDate>
		<dc:creator>Simos Xenitellis</dc:creator>
				<category><![CDATA[gnome]]></category>
		<category><![CDATA[pgo]]></category>
		<category><![CDATA[dblatex]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[multilingual]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[xetex]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/simos/?p=31</guid>
		<description><![CDATA[Robert describes how to generate PDF files from GNOME documentation source files. We describe here how to manually generate PDF files from translated documentation. The relevant gnome-doc-utils files for documentation generation is at http://git.gnome.org/cgit/gnome-doc-utils/tree/tools. As far as I understand from reading the makefile, there is no support yet to build PDFs out of localised documentation. [...]


Related posts:<ol><li><a href='http://simos.info/blog/archives/817' rel='bookmark' title='Permanent Link: Help make «DocBook XML to PDF» work for Greek'>Help make «DocBook XML to PDF» work for Greek</a> <small>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt; &lt;!DOCTYPE article PUBLIC &#8220;-//OASIS//DTD DocBook XML V4.2//EN&#8221;...</small></li>
<li><a href='http://simos.info/blog/archives/20' rel='bookmark' title='Permanent Link: Towards a GNOME CLI translation management tool'>Towards a GNOME CLI translation management tool</a> <small>Update 7/June/2009: The repository was moved to https://github.com/simos/gnome-i18n-manage-vcs/. There was...</small></li>
<li><a href='http://simos.info/blog/archives/14' rel='bookmark' title='Permanent Link: Designing a command-line translation tool for GNOME'>Designing a command-line translation tool for GNOME</a> <small>One messy task with GNOME translations is the whole workflow...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.gnome.org/racarr/2009/05/18/reference-documentation-in-pdf/" target="_blank">Robert</a> describes how to generate PDF files from GNOME documentation source files.</p>
<p>We describe here how to manually generate PDF files from translated documentation.</p>
<p>The relevant gnome-doc-utils files for documentation generation is at <a href="http://git.gnome.org/cgit/gnome-doc-utils/tree/tools" target="_blank">http://git.gnome.org/cgit/gnome-doc-utils/tree/tools</a>. As far as I understand from reading the makefile, there is no support yet to build PDFs out of localised documentation.</p>
<p>Let&#8217;s assume we want to generate PDF documentation for the <a href="http://git.gnome.org/cgit/gnome-user-docs/tree/gnome2-user-guide" target="_blank">GNOME 2 User Guide</a>, for the Greek language.</p>
<p>1. We clone the relevant repository</p>
<pre>$ git clone git://git.gnome.org/gnome-user-docs</pre>
<p>2. Then,</p>
<pre>cd gnome-user-docs/gnome2-user-guide/</pre>
<p>and now generate the equivalent XML files found in <strong>C/</strong> with the localisation for the Greek language (found in <strong>el/</strong>),</p>
<pre>\ls C/*.xml | perl -n -e 'chop; $a=$_; print "xml2po -p el/el.po $a &gt;<em> el/`basename $a`\n"' | sh</em></pre>
<p>3. Let&#8217;s see what we created,</p>
<pre>$ ls el/
el.po    glossary.xml  goscustdesk.xml     
gosfeedback.xml  gosoverview.xml  gosstartsession.xml 
legal.xml  figures  gosbasic.xml  goseditmainmenu.xml 
gosnautilus.xml  gospanel.xml     gostools.xml        
<em>user-guide.xml</em>
$ _</pre>
<p>The main file is <em>user-guide.xml</em>, which references the rest of the XML files.</p>
<p>4. One additional step I like to do is convert all those individual .xml in a single big XML file just before performing the conversion to PDF. This helps to figure out any markup mistakes that could have been caused during the translation.</p>
<pre>cd el/</pre>
<pre>xmllint --noent user-guide.xml --output documentation-user-guide.xml</pre>
<p>This step does not have the desired effect with the XML in the user-guide because the include files are referenced with “&lt;include xmlns=&#8221;http://www.w3.org/2001/XInclude&#8221; href=&#8221;gosbasic.xml&#8221;/&gt;” rather than the “&amp;gosbasic;” which &#8220;xmllint &#8211;noent&#8221; appears to like. Other GNOME documentation use the latter style. Lazyweb, any tips so that xmllint can create a single big fat XML file?</p>
<p>4. You may want to manually populate the figures/ directory. That is, copy any C/figures/* files that are not present in your LL/figures/ directory.</p>
<p>5. In order to create PDF files in NON-iso-8859-1, we need to use the <a href="http://www.tug.org/xetex/" target="_blank"><strong>xetex</strong> backend</a>,</p>
<pre>dblatex --backend=xetex --verbose documentation-user-guide.xml</pre>
<p>If all go well, you are greeted with a documentation-user-guide.pdf document.</p>
<p>Two things may go wrong here; there is either an invalid construct in the XML file or you have stumbled on a XeTex bug for your language.</p>
<p>For the Greek language there is <a href="http://simos.info/blog/archives/817" target="_blank">a known bug and a workaround for XeTex</a>.</p>
<p>Here is the GNOME2 User Guide (PDF) for</p>
<ol>
<li> <a href="http://simos.info/pub/documentation-user-guide.pdf" target="_blank">Greek</a> (bit messy hyphenation due to workaround), and</li>
<li><a href="http://simos.info/pub/documentation-user-guide-ru.pdf" target="_blank">Russian</a>.</li>
</ol>
<p>I also tried the user-guide with</p>
<p style="padding-left: 30px;">Chinese: Fails to compile, encoding problem or most probably limitation in XeTeX.</p>
<p style="padding-left: 30px;">Thai: Compiles just fine but no Thai font is available. How do you add fonts to XeTeX?</p>
<p style="padding-left: 30px;">Punjabi: Compiles just fine but no Hindi font is available. How do you add fonts to XeTeX?</p>


<p>Related posts:<ol><li><a href='http://simos.info/blog/archives/817' rel='bookmark' title='Permanent Link: Help make «DocBook XML to PDF» work for Greek'>Help make «DocBook XML to PDF» work for Greek</a> <small>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt; &lt;!DOCTYPE article PUBLIC &#8220;-//OASIS//DTD DocBook XML V4.2//EN&#8221;...</small></li>
<li><a href='http://simos.info/blog/archives/20' rel='bookmark' title='Permanent Link: Towards a GNOME CLI translation management tool'>Towards a GNOME CLI translation management tool</a> <small>Update 7/June/2009: The repository was moved to https://github.com/simos/gnome-i18n-manage-vcs/. There was...</small></li>
<li><a href='http://simos.info/blog/archives/14' rel='bookmark' title='Permanent Link: Designing a command-line translation tool for GNOME'>Designing a command-line translation tool for GNOME</a> <small>One messy task with GNOME translations is the whole workflow...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://simos.info/blog/archives/31/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to type Greek, Greek Polytonic in Linux</title>
		<link>http://simos.info/blog/archives/888?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-to-type-greek-greek-polytonic-in-linux</link>
		<comments>http://simos.info/blog/archives/888#comments</comments>
		<pubDate>Sun, 10 May 2009 21:29:40 +0000</pubDate>
		<dc:creator>Simos Xenitellis</dc:creator>
				<category><![CDATA[Planet Ubuntu]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[planetellak]]></category>
		<category><![CDATA[polytonic]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[ancient]]></category>
		<category><![CDATA[greek]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[input method]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://simos.info/blog/?p=888</guid>
		<description><![CDATA[Update 2010: Please see the docs.google.com edition of the guide as it has the latest material. See link below. There is a new guide on how to write Greek and Greek Polytonic in Linux, and in particular using the latest versions of Linux distributions. https://docs.google.com/View?docID=dccdrjqk_4cqjn9zcj (LATEST VERSION) The guide shows in detail how to add [...]


Related posts:<ol><li><a href='http://simos.info/blog/archives/639' rel='bookmark' title='Permanent Link: Cannot write Greek Polytonic in Linux'>Cannot write Greek Polytonic in Linux</a> <small>For up to date instructions for Greek and Greek Polytonic...</small></li>
<li><a href='http://simos.info/blog/archives/763' rel='bookmark' title='Permanent Link: Οδηγός πολυτονικού &#8211; Write Greek Polytonic'>Οδηγός πολυτονικού &#8211; Write Greek Polytonic</a> <small>Update 10th May 2009: If you have Ubuntu 9.04 (or...</small></li>
<li><a href='http://simos.info/blog/archives/493' rel='bookmark' title='Permanent Link: Greek Polytonic HOWTO'>Greek Polytonic HOWTO</a> <small>Dimitri Marinakis has written a HOWTO on Hellenic (Greek) Polytonic...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><strong>Update 2010</strong>: <em>Please see the docs.google.com edition of the guide as it has the latest material. See link below.</em></p>
<p>There is a new guide on how to write Greek and Greek Polytonic in Linux, and in particular using the latest versions of Linux distributions.</p>
<p><a href="https://docs.google.com/View?docID=dccdrjqk_4cqjn9zcj" target="_blank">https://docs.google.com/View?docID=dccdrjqk_4cqjn9zcj</a> (<strong>LATEST VERSION</strong>)</p>
<p>The guide shows in detail how to add the Greek keyboard layout to your Linux desktop, and how to write Greek, Greek Polytonic and other Ancient Greek characters.</p>
<p><span style="text-decoration: line-through;">The guide is also available in both ODT and PDF format.</span> (<em>both files are somewhat obsolete. use google docs URL from above instead</em>)</p>
<p>For a Greek version of the guide, please see <a id="rf0t" title="http://docs.google.com/Doc?id=dccdrjqk_3gx3bq5f9" href="http://docs.google.com/Doc?id=dccdrjqk_3gx3bq5f9">http://docs.google.com/Doc?id=dccdrjqk_3gx3bq5f9</a> (does not update as often as the English version)</p>
<p><span style="text-decoration: line-through;">We attach the HTML version of the guide in this post.</span> The docs.google.com version is the latest, please read that instead.</p>
<div id="doc-contents">
<div>Again, you can find the latest version of this document at<br />
<a id="jyhu" title="http://docs.google.com/Doc?id=dccdrjqk_4cqjn9zcj" href="http://docs.google.com/Doc?id=dccdrjqk_4cqjn9zcj">http://docs.google.com/Doc?id=dccdrjqk_4cqjn9zcj</a></div>
<div></div>
</div>


<p>Related posts:<ol><li><a href='http://simos.info/blog/archives/639' rel='bookmark' title='Permanent Link: Cannot write Greek Polytonic in Linux'>Cannot write Greek Polytonic in Linux</a> <small>For up to date instructions for Greek and Greek Polytonic...</small></li>
<li><a href='http://simos.info/blog/archives/763' rel='bookmark' title='Permanent Link: Οδηγός πολυτονικού &#8211; Write Greek Polytonic'>Οδηγός πολυτονικού &#8211; Write Greek Polytonic</a> <small>Update 10th May 2009: If you have Ubuntu 9.04 (or...</small></li>
<li><a href='http://simos.info/blog/archives/493' rel='bookmark' title='Permanent Link: Greek Polytonic HOWTO'>Greek Polytonic HOWTO</a> <small>Dimitri Marinakis has written a HOWTO on Hellenic (Greek) Polytonic...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://simos.info/blog/archives/888/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Git clones vs Shallow Git clones</title>
		<link>http://simos.info/blog/archives/25?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=git-clones-vs-shallow-git-clones</link>
		<comments>http://simos.info/blog/archives/25#comments</comments>
		<pubDate>Sat, 18 Apr 2009 01:05:01 +0000</pubDate>
		<dc:creator>Simos Xenitellis</dc:creator>
				<category><![CDATA[gnome]]></category>
		<category><![CDATA[pgo]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/simos/?p=25</guid>
		<description><![CDATA[When cloning a Git repository, there is an option to limit the amount of history your clone will have. If you set the parameter to &#8211;depth 1, you get the least amount of history, and you create a shallow clone. The git clone man page says that you cannot push your commits if you have [...]


Related posts:<ol><li><a href='http://simos.info/blog/archives/852' rel='bookmark' title='Permanent Link: Playing with Git'>Playing with Git</a> <small>Git is a version control system (VCS) software that is...</small></li>
<li><a href='http://simos.info/blog/archives/31' rel='bookmark' title='Permanent Link: Generating multilingual PDF files out of GNOME documentation'>Generating multilingual PDF files out of GNOME documentation</a> <small>Robert describes how to generate PDF files from GNOME documentation...</small></li>
<li><a href='http://simos.info/blog/archives/20' rel='bookmark' title='Permanent Link: Towards a GNOME CLI translation management tool'>Towards a GNOME CLI translation management tool</a> <small>Update 7/June/2009: The repository was moved to https://github.com/simos/gnome-i18n-manage-vcs/. There was...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>When <a href="http://www.kernel.org/pub/software/scm/git/docs/git-clone.html" target="_blank">cloning a Git repository</a>, there is an option to limit the amount of history your clone will have. If you set the parameter to <strong>&#8211;depth 1</strong>, you get the least amount of history, and you create a <em>shallow clone</em>.</p>
<p>The <a href="http://www.kernel.org/pub/software/scm/git/docs/git-clone.html" target="_blank">git clone man page</a> says that you cannot push your commits if you have a shallow clone. Apparently, there is no error message when you actually push your commits, so it is a situation that might bring problems in the repository in the future.</p>
<p>Lacking more details on whether pushing commits from shallow clones is bad for the repository, let&#8217;s measure if there are any gains when someone opts for shallow clones.</p>
<table border="0" cellspacing="0" frame="void" rules="none">
<colgroup>
<col width="157"></col>
<col width="78"></col>
<col width="90"></col>
</colgroup>
<tbody>
<tr>
<td width="157" height="17" align="left" bgcolor="#b3b3b3">Module (gnome-2-26)</td>
<td width="78" align="left" bgcolor="#b3b3b3">Full clone (MB)</td>
<td width="90" align="left" bgcolor="#b3b3b3">Shallow clone (MB)</td>
</tr>
<tr>
<td height="17" align="left">evolution</td>
<td align="right">204</td>
<td align="right">189</td>
</tr>
<tr>
<td height="17" align="left">gtk+</td>
<td align="right">193</td>
<td align="right">172</td>
</tr>
<tr>
<td height="17" align="left">nautilus</td>
<td align="right">139</td>
<td align="right">108</td>
</tr>
<tr>
<td height="17" align="left">gnome-games</td>
<td align="right">127</td>
<td align="right">120</td>
</tr>
<tr>
<td height="17" align="left">gnome-applets</td>
<td align="right">110</td>
<td align="right">98</td>
</tr>
<tr>
<td height="17" align="left">gnome-user-docs</td>
<td align="right">108</td>
<td align="right">102</td>
</tr>
<tr>
<td height="17" align="left">evolution-data-server</td>
<td align="right">84</td>
<td align="right">77</td>
</tr>
<tr>
<td height="17" align="left">anjuta</td>
<td align="right">76</td>
<td align="right">66</td>
</tr>
<tr>
<td height="17" align="left">libgweather</td>
<td align="right">69</td>
<td align="right">68</td>
</tr>
<tr>
<td height="17" align="left">gnome-panel</td>
<td align="right">68</td>
<td align="right">60</td>
</tr>
<tr>
<td height="17" align="left">ekiga</td>
<td align="right">61</td>
<td align="right">49</td>
</tr>
<tr>
<td height="17" align="left">dasher</td>
<td align="right">58</td>
<td align="right">49</td>
</tr>
<tr>
<td height="17" align="left">orca</td>
<td align="right">55</td>
<td align="right">47</td>
</tr>
<tr>
<td height="17" align="left">gnome-utils</td>
<td align="right">53</td>
<td align="right">48</td>
</tr>
<tr>
<td height="17" align="left">gnome-icon-theme</td>
<td align="right">51</td>
<td align="right">49</td>
</tr>
<tr>
<td height="17" align="left">gedit</td>
<td align="right">49</td>
<td align="right">45</td>
</tr>
<tr>
<td height="17" align="left">epiphany</td>
<td align="right">48</td>
<td align="right">42</td>
</tr>
<tr>
<td height="17" align="left">gnome-control-center</td>
<td align="right">46</td>
<td align="right">40</td>
</tr>
<tr>
<td height="17" align="left">gdm</td>
<td align="right">43</td>
<td align="right">38</td>
</tr>
<tr>
<td height="17" align="left">glib</td>
<td align="right">42</td>
<td align="right">37</td>
</tr>
<tr>
<td height="17" align="left">gnome-system-tools</td>
<td align="right">33</td>
<td align="right">29</td>
</tr>
<tr>
<td height="17" align="left">gnome-media</td>
<td align="right">33</td>
<td align="right">30</td>
</tr>
<tr>
<td height="17" align="left">totem</td>
<td align="right">31</td>
<td align="right">27</td>
</tr>
<tr>
<td height="17" align="left">gnome-power-manager</td>
<td align="right">31</td>
<td align="right">27</td>
</tr>
<tr>
<td height="17" align="left">gnome-backgrounds</td>
<td align="right">31</td>
<td align="right">30</td>
</tr>
<tr>
<td height="17" align="left">brasero</td>
<td align="right">31</td>
<td align="right">29</td>
</tr>
<tr>
<td height="17" align="left">metacity</td>
<td align="right">29</td>
<td align="right">27</td>
</tr>
<tr>
<td height="17" align="left">gnome-desktop</td>
<td align="right">28</td>
<td align="right">24</td>
</tr>
<tr>
<td height="17" align="left">tomboy</td>
<td align="right">27</td>
<td align="right">25</td>
</tr>
<tr>
<td height="17" align="left">seahorse</td>
<td align="right">24</td>
<td align="right">22</td>
</tr>
<tr>
<td height="17" align="left">gnome-terminal</td>
<td align="right">23</td>
<td align="right">21</td>
</tr>
<tr>
<td height="17" align="left">gnome-session</td>
<td align="right">23</td>
<td align="right">20</td>
</tr>
<tr>
<td height="17" align="left">gucharmap</td>
<td align="right">22</td>
<td align="right">19</td>
</tr>
<tr>
<td height="17" align="left">gnome-vfs</td>
<td align="right">22</td>
<td align="right">19</td>
</tr>
<tr>
<td height="17" align="left">glade3</td>
<td align="right">21</td>
<td align="right">19</td>
</tr>
<tr>
<td height="17" align="left">gconf</td>
<td align="right">21</td>
<td align="right">20</td>
</tr>
<tr>
<td height="17" align="left">eog</td>
<td align="right">21</td>
<td align="right">18</td>
</tr>
<tr>
<td height="17" align="left">gcalctool</td>
<td align="right">19</td>
<td align="right">17</td>
</tr>
<tr>
<td height="17" align="left">libgnomeui</td>
<td align="right">18</td>
<td align="right">15</td>
</tr>
<tr>
<td height="17" align="left">gtkhtml</td>
<td align="right">18</td>
<td align="right">16</td>
</tr>
<tr>
<td height="17" align="left">evince</td>
<td align="right">18</td>
<td align="right">15</td>
</tr>
<tr>
<td height="17" align="left">gnome-themes</td>
<td align="right">17</td>
<td align="right">16</td>
</tr>
<tr>
<td height="17" align="left">cheese</td>
<td align="right">17</td>
<td align="right">15</td>
</tr>
<tr>
<td height="17" align="left">file-roller</td>
<td align="right">16</td>
<td align="right">14</td>
</tr>
<tr>
<td height="17" align="left">empathy</td>
<td align="right">16</td>
<td align="right">15</td>
</tr>
<tr>
<td height="17" align="left">gok</td>
<td align="right">14</td>
<td align="right">13</td>
</tr>
<tr>
<td height="17" align="left">gtksourceview</td>
<td align="right">13</td>
<td align="right">12</td>
</tr>
<tr>
<td height="17" align="left">gnome-keyring</td>
<td align="right">13</td>
<td align="right">12</td>
</tr>
<tr>
<td height="17" align="left">gnome-doc-utils</td>
<td align="right">13</td>
<td align="right">13</td>
</tr>
<tr>
<td height="17" align="left">bug-buddy</td>
<td align="right">13</td>
<td align="right">11</td>
</tr>
<tr>
<td height="17" align="left">zenity</td>
<td align="right">12</td>
<td align="right">11</td>
</tr>
<tr>
<td height="17" align="left">yelp</td>
<td align="right">12</td>
<td align="right">11</td>
</tr>
<tr>
<td height="17" align="left">sound-juicer</td>
<td align="right">12</td>
<td align="right">11</td>
</tr>
<tr>
<td height="17" align="left">libgnome</td>
<td align="right">12</td>
<td align="right">11</td>
</tr>
<tr>
<td height="17" align="left">gvfs</td>
<td align="right">12</td>
<td align="right">9.9</td>
</tr>
<tr>
<td height="17" align="left">gnome-system-monitor</td>
<td align="right">12</td>
<td align="right">11</td>
</tr>
<tr>
<td height="17" align="left">deskbar-applet</td>
<td align="right">12</td>
<td align="right">9.5</td>
</tr>
<tr>
<td height="17" align="left">libbonobo</td>
<td align="right">11</td>
<td align="right">8.8</td>
</tr>
<tr>
<td height="17" align="left">gnome-settings-daemon</td>
<td align="right">11</td>
<td align="right">11</td>
</tr>
<tr>
<td height="17" align="left">gnome-devel-docs</td>
<td align="right">11</td>
<td align="right">11</td>
</tr>
<tr>
<td height="17" align="left">evolution-exchange</td>
<td align="right">9.9</td>
<td align="right">9.3</td>
</tr>
<tr>
<td height="17" align="left">gnome-screensaver</td>
<td align="right">9</td>
<td align="right">8.3</td>
</tr>
<tr>
<td height="17" align="left">vte</td>
<td align="right">8.7</td>
<td align="right">7.5</td>
</tr>
<tr>
<td height="17" align="left">libbonoboui</td>
<td align="right">8.7</td>
<td align="right">7.4</td>
</tr>
<tr>
<td height="17" align="left">libgtop</td>
<td align="right">8.4</td>
<td align="right">6.9</td>
</tr>
<tr>
<td height="17" align="left">libgnomeprintui</td>
<td align="right">8.4</td>
<td align="right">7.1</td>
</tr>
<tr>
<td height="17" align="left">gconf-editor</td>
<td align="right">8.4</td>
<td align="right">7.9</td>
</tr>
<tr>
<td height="17" align="left">libgnomeprint</td>
<td align="right">8.1</td>
<td align="right">7</td>
</tr>
<tr>
<td height="17" align="left">vinagre</td>
<td align="right">7.3</td>
<td align="right">6</td>
</tr>
<tr>
<td height="17" align="left">libwnck</td>
<td align="right">6.6</td>
<td align="right">5.9</td>
</tr>
<tr>
<td height="17" align="left">accerciser</td>
<td align="right">6.6</td>
<td align="right">6.3</td>
</tr>
<tr>
<td height="17" align="left">gtk-engines</td>
<td align="right">6.4</td>
<td align="right">5.4</td>
</tr>
<tr>
<td height="17" align="left">sabayon</td>
<td align="right">5.8</td>
<td align="right">5.2</td>
</tr>
<tr>
<td height="17" align="left">vino</td>
<td align="right">5.7</td>
<td align="right">5.3</td>
</tr>
<tr>
<td height="17" align="left">gnome-nettool</td>
<td align="right">5.3</td>
<td align="right">4.9</td>
</tr>
<tr>
<td height="17" align="left">mousetweaks</td>
<td align="right">5</td>
<td align="right">4.7</td>
</tr>
<tr>
<td height="17" align="left">totem-pl-parser</td>
<td align="right">4.6</td>
<td align="right">4.5</td>
</tr>
<tr>
<td height="17" align="left">at-spi</td>
<td align="right">4.5</td>
<td align="right">3.9</td>
</tr>
<tr>
<td height="17" align="left">libgnomecanvas</td>
<td align="right">4.3</td>
<td align="right">3.7</td>
</tr>
<tr>
<td height="17" align="left">atk</td>
<td align="right">4.2</td>
<td align="right">3.7</td>
</tr>
<tr>
<td height="17" align="left">gnome-netstatus</td>
<td align="right">4.1</td>
<td align="right">3.8</td>
</tr>
<tr>
<td height="17" align="left">devhelp</td>
<td align="right">3.9</td>
<td align="right">3.2</td>
</tr>
<tr>
<td height="17" align="left">gdl</td>
<td align="right">3.5</td>
<td align="right">3.2</td>
</tr>
<tr>
<td height="17" align="left">gnome-mag</td>
<td align="right">3.2</td>
<td align="right">2.9</td>
</tr>
<tr>
<td height="17" align="left">gnome-menus</td>
<td align="right">3</td>
<td align="right">2.6</td>
</tr>
<tr>
<td height="17" align="left">hamster-applet</td>
<td align="right">2.8</td>
<td align="right">2.2</td>
</tr>
<tr>
<td height="17" align="left">gnome-user-share</td>
<td align="right">2.6</td>
<td align="right">2.5</td>
</tr>
<tr>
<td height="17" align="left">evolution-mapi</td>
<td align="right">2.2</td>
<td align="right">2.1</td>
</tr>
<tr>
<td height="17" align="left">libgnomekbd</td>
<td align="right">1.8</td>
<td align="right">1.7</td>
</tr>
<tr>
<td height="17" align="left">alacarte</td>
<td align="right">1.6</td>
<td align="right">1.4</td>
</tr>
<tr>
<td height="17" align="left">pessulus</td>
<td align="right">1.5</td>
<td align="right">1.3</td>
</tr>
<tr>
<td height="17" align="left">evolution-webcal</td>
<td align="right">1.4</td>
<td align="right">1.3</td>
</tr>
<tr>
<td height="17" align="left">swfdec-gnome</td>
<td align="right">1.1</td>
<td align="right">0.94</td>
</tr>
<tr>
<td height="17" align="left"></td>
<td align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td height="17" align="left" bgcolor="#ffff99">Total (MB)</td>
<td align="right" bgcolor="#ffff99">2625.6</td>
<td align="right" bgcolor="#ffff99">2349.24</td>
</tr>
<tr>
<td height="17" align="left"></td>
<td align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td height="17" align="left" bgcolor="#ffff99">Time (min)</td>
<td style="text-align: right;" bgcolor="#ffff99">52</td>
<td style="text-align: right;" bgcolor="#ffff99">37</td>
</tr>
</tbody>
</table>
<p><!-- ************************************************************************** -->The git repositories for all modules of gnome-2-26 weight 2.6GB while their shallow clones are 2.3GB. There is a difference of less than 300MB.</p>
<p>Comparatively, if it takes 52 minutes to clone all GNOME 2.26 repositories, their shallow clones save 15 minutes.The speed that was reported by git clone was about 1.4MB/s in this experiment.</p>
<p>Cloning is bound by both your bandwidth and your CPU (especially when resolving deltas). It would be interesting to evaluate if there would be benefits (on git.gnome.org load, speed of cloning) by having daily tarballs of anonymous clones of the modules, so that one can download using HTTP and then simply add their account details and update with <strong>git pull &#8211;rebase</strong>.</p>
<p>With the above information, it makes sense to avoid making shallow clones, especially when you intend to push your changes. Instead, one would dedicate at least 2.6GB for the repositories, and keep them.</p>
<p><a href="https://github.com/simos/intltool-manage-vcs/" target="_blank">intltool-manage-vcs</a> was used to retrieve the repositories.</p>
<p>Update: The GNOME 2.26 modules (2.6GB in size for all their repositories), compresses down to 1.6GB (.tar.bz2).</p>


<p>Related posts:<ol><li><a href='http://simos.info/blog/archives/852' rel='bookmark' title='Permanent Link: Playing with Git'>Playing with Git</a> <small>Git is a version control system (VCS) software that is...</small></li>
<li><a href='http://simos.info/blog/archives/31' rel='bookmark' title='Permanent Link: Generating multilingual PDF files out of GNOME documentation'>Generating multilingual PDF files out of GNOME documentation</a> <small>Robert describes how to generate PDF files from GNOME documentation...</small></li>
<li><a href='http://simos.info/blog/archives/20' rel='bookmark' title='Permanent Link: Towards a GNOME CLI translation management tool'>Towards a GNOME CLI translation management tool</a> <small>Update 7/June/2009: The repository was moved to https://github.com/simos/gnome-i18n-manage-vcs/. There was...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://simos.info/blog/archives/25/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Towards a GNOME CLI translation management tool</title>
		<link>http://simos.info/blog/archives/20?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=towards-a-gnome-cli-translation-management-tool</link>
		<comments>http://simos.info/blog/archives/20#comments</comments>
		<pubDate>Wed, 08 Apr 2009 12:08:16 +0000</pubDate>
		<dc:creator>Simos Xenitellis</dc:creator>
				<category><![CDATA[gnome]]></category>
		<category><![CDATA[pgo]]></category>
		<category><![CDATA[gtp]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/simos/?p=20</guid>
		<description><![CDATA[Update 7/June/2009: The repository was moved to https://github.com/simos/gnome-i18n-manage-vcs/. There was some confusion between this script and intltools, which now is a general localisation tool, not tied to GNOME. In Designing a command-line translation tool for GNOME, I described how a CLI translation management tool would be used to ease the work of a translator with [...]


Related posts:<ol><li><a href='http://simos.info/blog/archives/14' rel='bookmark' title='Permanent Link: Designing a command-line translation tool for GNOME'>Designing a command-line translation tool for GNOME</a> <small>One messy task with GNOME translations is the whole workflow...</small></li>
<li><a href='http://simos.info/blog/archives/608' rel='bookmark' title='Permanent Link: Using SVN for GNOME Translators'>Using SVN for GNOME Translators</a> <small>Update 3rd June 2009: This is a very old post...</small></li>
<li><a href='http://simos.info/blog/archives/31' rel='bookmark' title='Permanent Link: Generating multilingual PDF files out of GNOME documentation'>Generating multilingual PDF files out of GNOME documentation</a> <small>Robert describes how to generate PDF files from GNOME documentation...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><strong>Update 7/June/2009</strong>: The repository was moved to <a href="https://github.com/simos/gnome-i18n-manage-vcs/" target="_blank">https://github.com/simos/gnome-i18n-manage-vcs/</a>. There was some confusion between this script and intltools, which now is a general localisation tool, not tied to GNOME.</p>
<p>In <a href="http://blogs.gnome.org/simos/2008/03/03/designing-a-command-line-translation-tool-for-gnome/" target="_blank">Designing a command-line translation tool for GNOME</a>, I described how a CLI translation management tool would be used to ease the work of a translator with commit access. The discussion was continued with <a href="http://leonardof.org/" target="_blank">Leonardo</a>&#8216;s post <a title="Permanent Link: Parsing damned-lies’ releases.xml.in in the command line" rel="bookmark" href="http://leonardof.org/2008/04/28/parsing-damned-lies-releasesxmlin-in-the-command-line/en/">Parsing damned-lies’ releases.xml.in in the command line</a>.</p>
<p>The stage we are now is that we have a tool (not official GNOME tool, but rather at beta testing phase!) that can manage the repositories for us, so that the checking out and committing can be fairly automated. The source is available at <a href="https://github.com/simos/gnome-i18n-manage-vcs/" target="_blank">https://github.com/simos/gnome-i18n-manage-vcs/</a>.</p>
<p>We show two working examples.</p>
<p>Let&#8217;s say we want to update the documentation for gcalctool. We run</p>
<pre style="padding-left: 30px;">$ ./intltool-manage-vcs --language el --release gnome-2-26 \
--username simos --module gcalctool --transtype doc --init
Release  : gnome-2-26
Language : el
    Category: admin-tools
    Category: dev-tools
    Category: dev-platform
    Category: desktop
        Module:              gcalctool, Branch: gnome-2-26

Download completed successfully.</pre>
<pre style="padding-left: 30px;">$ _</pre>
<p>In the PO/ subdirectory there is a PO file for gcalctool. We update it using our favourite translation tool, and then</p>
<pre style="padding-left: 30px;">$ ./intltool-manage-vcs --language Greek --commit
Sending        el/el.po
Transmitting file data .
Committed revision 2475.</pre>
<pre style="padding-left: 30px;">$ _</pre>
<p>Let&#8217;s see another example. We want to update the gnome-games documentation. These are several individual PO files, for each of the games.</p>
<pre style="padding-left: 30px;">$ ./intltool-manage-vcs --language el --release gnome-2-26 \
--username simos --module gnome-games --transtype doc --init
Release  : gnome-2-26
Language : el
    Category: admin-tools
    Category: dev-tools
    Category: dev-platform
    Category: desktop
        Module:            gnome-games, Branch: gnome-2-26

Download completed successfully.
$ _</pre>
<p>There are several files,</p>
<pre>$ ls PO</pre>
<pre>aisleriot.gnome-2-26.el.po  gnibbles.gnome-2-26.el.po</pre>
<pre>gnotravex.gnome-2-26.el.po  README</pre>
<pre>blackjack.gnome-2-26.el.po  gnobots2.gnome-2-26.el.po</pre>
<pre>gnotski.gnome-2-26.el.po    same-gnome.gnome-2-26.el.po</pre>
<pre>glchess.gnome-2-26.el.po    gnome-sudoku.gnome-2-26.el.po</pre>
<pre>gtali.gnome-2-26.el.po      START</pre>
<pre>glines.gnome-2-26.el.po     gnometris.gnome-2-26.el.po</pre>
<pre>iagno.gnome-2-26.el.po      gnect.gnome-2-26.el.po</pre>
<pre>gnomine.gnome-2-26.el.po    mahjongg.gnome-2-26.el.po</pre>
<pre>$ _</pre>
<p>We enter the PO/ subdirectory and we update those files we wish. We can also run scripts on the PO files. For example, all these documentation files contain the same fragment of the FDL license, so we can translate the license once, and then merge automatically to all translations.</p>
<p>Finally,</p>
<pre style="padding-left: 30px;">$ ./intltool-manage-vcs --language Greek --commit
Sending        el/el.po
Transmitting file data .
Committed revision 9014.
Sending        el/el.po
Transmitting file data .
Committed revision 9015.
Sending        el/el.po
Transmitting file data .
Committed revision 9016.
$ _</pre>
<p>In the above example, we updated the documentation of three of the games.</p>
<p>Here are tips when using this tool</p>
<ul>
<li>There is a &#8211;dry-run option that is useful when experimenting or trying for the first time.</li>
<li>You can filter which group of a release to download, based on category. Existing categories are desktop, admin-tools, dev-tools, dev-platform. Also, on translation type, either documentation or UI (if you do not specify, we get both). On module, by providing the module name.</li>
</ul>
<p>And the current limitations</p>
<ul>
<li>We currently only support SVN. This will change once the repositories move to git.gnome.org, in about two weeks time.</li>
<li>You need to have at least an initial translation (currently, the script does not svn add files). To be fixed once we move to git.</li>
<li>We do not currently update ChangeLog files. That&#8217;s why gnome-games is so cool for these experiments. Due to the git move, we would not need to mess with ChangeLog files.</li>
<li>We are dependent on the http://l10n.gnome.org/languages/el/gnome-2-26/xml URLs (replace <strong>el</strong> with your language). These URLs expose the release modules information in a nice XML file. Previously, the information used to exist in an XML file in the repository of damned-lies. Now, the information lies in the mysql database of damned-lies+vertimus, and is exposed through the above type of URL.</li>
<li>Due to the previous point, we commit to branch or trunk, depending on what is available in the latest release (gnome-2-26). That means, my translation fixes in gnome-games have not made it to trunk (HEAD). This is something that can be fixed with a workaround. It would be actually cool to use this tool to commit to both gnome-2-xx and master at the same time.</li>
<li>We currently do not deal with figures.</li>
</ul>
<p>Considering that damned-lies+vertimus will be having commit functionality soon, I think that having more than one option for easy commiting translations is good.</p>


<p>Related posts:<ol><li><a href='http://simos.info/blog/archives/14' rel='bookmark' title='Permanent Link: Designing a command-line translation tool for GNOME'>Designing a command-line translation tool for GNOME</a> <small>One messy task with GNOME translations is the whole workflow...</small></li>
<li><a href='http://simos.info/blog/archives/608' rel='bookmark' title='Permanent Link: Using SVN for GNOME Translators'>Using SVN for GNOME Translators</a> <small>Update 3rd June 2009: This is a very old post...</small></li>
<li><a href='http://simos.info/blog/archives/31' rel='bookmark' title='Permanent Link: Generating multilingual PDF files out of GNOME documentation'>Generating multilingual PDF files out of GNOME documentation</a> <small>Robert describes how to generate PDF files from GNOME documentation...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://simos.info/blog/archives/20/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Features for the killer VoIP app</title>
		<link>http://simos.info/blog/archives/19?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=features-for-the-killer-voip-app</link>
		<comments>http://simos.info/blog/archives/19#comments</comments>
		<pubDate>Sun, 10 Aug 2008 23:34:57 +0000</pubDate>
		<dc:creator>Simos Xenitellis</dc:creator>
				<category><![CDATA[gnome]]></category>
		<category><![CDATA[pgo]]></category>
		<category><![CDATA[ekiga]]></category>
		<category><![CDATA[gupnp]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[sip]]></category>
		<category><![CDATA[upnp]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/simos/2008/08/10/features-for-the-killer-voip-app/</guid>
		<description><![CDATA[I see two issues that plague FLOSS VoIP apps and do not allow their widest adoption. The first VoIP app that gets these, should get fame and glory. First, the majority of users are broadband users, with a router that protects the inside systems. It is not possible for an outsider to initiate a network [...]


Related posts:<ol><li><a href='http://simos.info/blog/archives/730' rel='bookmark' title='Permanent Link: Practical UPnP in Linux'>Practical UPnP in Linux</a> <small>UPnP is a set of protocols that allow the automatic...</small></li>
<li><a href='http://simos.info/blog/archives/658' rel='bookmark' title='Permanent Link: FOSDEM &#8217;08, summary and comments'>FOSDEM &#8217;08, summary and comments</a> <small>I attended FOSDEM &#8217;08 which took place on the 23rd...</small></li>
<li><a href='http://simos.info/blog/archives/9' rel='bookmark' title='Permanent Link: Localisation issues in home directory folders (xdg-user-dirs)'>Localisation issues in home directory folders (xdg-user-dirs)</a> <small>In new distributions such as Ubuntu 7.10 there is now...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I see two issues that plague FLOSS VoIP apps and do not allow their widest adoption. The first VoIP app that gets these, should get fame and glory.</p>
<p>First, the majority of users are broadband users, with a router that protects the inside systems. It is not possible for an outsider to initiate a network connection to a system inside the LAN. If both users that try to communicate have this typical network configuration, then the current tools say something like «You have a symmetric NAT, and at the moment the way to fix this is to either put your computer in the DMZ or enable manually port-forwarding for specific ports.» Ekiga discusses this issue at <a href="http://wiki.ekiga.org/index.php/Ekiga_behind_a_NAT_router" target="_blank">Ekiga behind a NAT router</a> and directs the affected users (when using the program) to that page. <a href="http://www.twinklephone.com/" target="_blank">Twinkle</a> (QT-based SIP-phone) shows you a dialog box with the exact ports to enable for port-forwarding on your router.</p>
<p>The issue of a symmetric NAT can be solved in most of the cases by using the <a href="http://en.wikipedia.org/wiki/UPnP" target="_blank">UPnP protocol</a>. If the router supports UPnP (most do by default), then the VoIP app can enable the port-forwarding by itself, transparently from the user, and it will just work.</p>
<p>Until recently there was no good UPnP library, which was probably the reason for the lack of support. However, this changed with <a href="http://www.gupnp.org/" target="_blank">GUPnP</a>.</p>
<p>The bug report to add (G)UPnP support to Ekiga is <a href="http://bugzilla.gnome.org/show_bug.cgi?id=337166" target="_blank">Bug 337166 – UPnP for firewall/NAT penetration.</a></p>
<p>Ekiga already supports <a href="http://en.wikipedia.org/wiki/Simple_traversal_of_UDP_over_NATs" target="_blank">STUN</a> and <a href="http://en.wikipedia.org/wiki/Zeroconf" target="_blank">Zeroconf</a>. With <a href="http://en.wikipedia.org/wiki/UPnP" target="_blank">UPnP</a>, the vast majority of users would be covered.</p>
<p>The other issue is the difficulty in configuring your third-party VoIP SIP account, that allows you to make inexpensive voice conversations to telephones and mobiles. The reason why it is difficult is because the user has to figure out the SIP server and other configuration details. The terminology is confusing, <em>registrar</em>, <em>domain</em>, etc.</p>
<p>Ekiga has good support in configuring <a href="https://www.diamondcard.us/" target="_blank">Diamondcard</a>. The user is presented with a Wizard when configuring for the first time Ekiga.</p>
<p><img src="http://farm4.static.flickr.com/3056/2750741519_0f2bdd2515_o.png" alt="http://farm4.static.flickr.com/3056/2750741519_0f2bdd2515_o.png" /></p>
<p>What needs to be done is to put together the details for each provider and maintain a list at ekiga.com. The client would have a copy of the list, and allow on-demand updates. The bug report, <a href="http://bugzilla.gnome.org/show_bug.cgi?id=547215" target="_blank">Bug 547215 – Ekiga should know all SIP/VoIP providers, allow easy account addition</a>.</p>
<p><strong>Update 11Aug08</strong>: Wiki page with <a href="http://wiki.ekiga.org/index.php/List_of_PC_to_phone_providers" target="_blank">PC-to-phone providers and their details</a>.</p>


<p>Related posts:<ol><li><a href='http://simos.info/blog/archives/730' rel='bookmark' title='Permanent Link: Practical UPnP in Linux'>Practical UPnP in Linux</a> <small>UPnP is a set of protocols that allow the automatic...</small></li>
<li><a href='http://simos.info/blog/archives/658' rel='bookmark' title='Permanent Link: FOSDEM &#8217;08, summary and comments'>FOSDEM &#8217;08, summary and comments</a> <small>I attended FOSDEM &#8217;08 which took place on the 23rd...</small></li>
<li><a href='http://simos.info/blog/archives/9' rel='bookmark' title='Permanent Link: Localisation issues in home directory folders (xdg-user-dirs)'>Localisation issues in home directory folders (xdg-user-dirs)</a> <small>In new distributions such as Ubuntu 7.10 there is now...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://simos.info/blog/archives/19/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>GUADEC 2008 presentation slides</title>
		<link>http://simos.info/blog/archives/18?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=guadec-2008-presentation-slides</link>
		<comments>http://simos.info/blog/archives/18#comments</comments>
		<pubDate>Wed, 23 Jul 2008 16:56:48 +0000</pubDate>
		<dc:creator>Simos Xenitellis</dc:creator>
				<category><![CDATA[gnome]]></category>
		<category><![CDATA[pgo]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[guadec]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[slides]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/simos/2008/07/23/guadec-2008-presentation-slides/</guid>
		<description><![CDATA[It appears that Google has not found yet the page of the GUADEC 2008 presentation slides. If you have slides, put them on http://live.gnome.org/GUADEC/2008/Slides, alphabetically by title. GUADEC slides. Related posts:Éńĥãǹčīṅǧ·ẗḧë·ẃṛīťıñĝ·ṩụṗṗọṙẗ·ıń·ǦŤḰ+ These are the presentation slides of my talk on improving... GUADEC Day #1 I am writing this in the morning of the second... GUADEC [...]


Related posts:<ol><li><a href='http://simos.info/blog/archives/710' rel='bookmark' title='Permanent Link: Éńĥãǹčīṅǧ·ẗḧë·ẃṛīťıñĝ·ṩụṗṗọṙẗ·ıń·ǦŤḰ+'>Éńĥãǹčīṅǧ·ẗḧë·ẃṛīťıñĝ·ṩụṗṗọṙẗ·ıń·ǦŤḰ+</a> <small>These are the presentation slides of my talk on improving...</small></li>
<li><a href='http://simos.info/blog/archives/937' rel='bookmark' title='Permanent Link: GUADEC Day #1'>GUADEC Day #1</a> <small>I am writing this in the morning of the second...</small></li>
<li><a href='http://simos.info/blog/archives/938' rel='bookmark' title='Permanent Link: GUADEC Day #2'>GUADEC Day #2</a> <small>(see http://www.guadec.org/schedule/warmup) At the first presentation, Quim Gil talked about...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>It appears that Google has not found yet the page of the <a href="http://live.gnome.org/GUADEC/2008/Slides" target="_blank">GUADEC 2008 presentation slides</a>.</p>
<p>If you have slides, put them on <a href="http://live.gnome.org/GUADEC/2008/Slides" target="_blank">http://live.gnome.org/GUADEC/2008/Slides</a>, alphabetically by title.</p>
<p><a href="http://live.gnome.org/GUADEC/2008/Slides" target="_blank">GUADEC slides</a>.</p>


<p>Related posts:<ol><li><a href='http://simos.info/blog/archives/710' rel='bookmark' title='Permanent Link: Éńĥãǹčīṅǧ·ẗḧë·ẃṛīťıñĝ·ṩụṗṗọṙẗ·ıń·ǦŤḰ+'>Éńĥãǹčīṅǧ·ẗḧë·ẃṛīťıñĝ·ṩụṗṗọṙẗ·ıń·ǦŤḰ+</a> <small>These are the presentation slides of my talk on improving...</small></li>
<li><a href='http://simos.info/blog/archives/937' rel='bookmark' title='Permanent Link: GUADEC Day #1'>GUADEC Day #1</a> <small>I am writing this in the morning of the second...</small></li>
<li><a href='http://simos.info/blog/archives/938' rel='bookmark' title='Permanent Link: GUADEC Day #2'>GUADEC Day #2</a> <small>(see http://www.guadec.org/schedule/warmup) At the first presentation, Quim Gil talked about...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://simos.info/blog/archives/18/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Should UI strings in source code have non-ASCII characters?</title>
		<link>http://simos.info/blog/archives/17?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=should-ui-strings-in-source-code-have-non-ascii-characters</link>
		<comments>http://simos.info/blog/archives/17#comments</comments>
		<pubDate>Wed, 14 May 2008 00:02:06 +0000</pubDate>
		<dc:creator>Simos Xenitellis</dc:creator>
				<category><![CDATA[gnome]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[unicode]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/simos/2008/05/14/should-ui-strings-in-source-code-have-non-ascii-characters/</guid>
		<description><![CDATA[There is a discussion going on at desktop-devel about whether the UI strings in the source code should also have non-ASCII characters. For example, should typical strings with double-quotes have those fancy Unicode double quotes? printf(_("Could not find file “%s”n")); instead of printf(_("Could not find file "%s"n")); The general view from the replies is to [...]


Related posts:<ol><li><a href='http://simos.info/blog/archives/10' rel='bookmark' title='Permanent Link: Improving input method support in GTK+-based apps'>Improving input method support in GTK+-based apps</a> <small>When a bug report gets long with many comments, it...</small></li>
<li><a href='http://simos.info/blog/archives/514' rel='bookmark' title='Permanent Link: How to write special characters in Xorg and GNOME'>How to write special characters in Xorg and GNOME</a> <small>There is functionality in Xorg that allows type special characters,...</small></li>
<li><a href='http://simos.info/blog/archives/301' rel='bookmark' title='Permanent Link: Οδηγός &#8220;Unicode Font Guide For Free/Libre Open Source Operating Systems&#8221;'>Οδηγός &#8220;Unicode Font Guide For Free/Libre Open Source Operating Systems&#8221;</a> <small>Ο Edward H. Trager, γνωστός από το έργο για πληροφορίες...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>There is a discussion going on at <a href="http://mail.gnome.org/mailman/listinfo/desktop-devel-list">desktop-devel</a> about <a href="http://mail.gnome.org/archives/desktop-devel-list/2008-May/thread.html#00033">whether the UI strings in the source code should also have non-ASCII characters</a>. For example, should typical strings with double-quotes have those fancy Unicode double quotes?</p>
<pre>printf(_("Could not find file “%s”n"));</pre>
<p>instead of</p>
<pre>printf(_("Could not find file "%s"n"));</pre>
<p>The general view from the replies is to go ahead and add those nice Unicode characters.</p>
<p>Actually, there are UI messages already with non-ASCII characters (the ellipsis character, …) in GNOME 2.22:</p>
<ol>
<li>glade3</li>
<li>epiphany</li>
</ol>
<p>In GNOME 2.24, there are even more (with ellipsis):</p>
<ol>
<li>gucharmap</li>
<li>epiphany</li>
<li>gnome-terminal</li>
<li>gedit</li>
<li>glade3</li>
</ol>
<p>Regarding the fancy Unicode double quotes, there are UI strings in GNOME 2.22 (same list for 2.24) in the following packages:</p>
<ol>
<li>evince</li>
<li>cheese</li>
<li>epiphany</li>
<li>eog</li>
<li>gnome-doc-utils</li>
</ol>
<p>What are the arguments against having non-ASCII characters in UI strings?</p>
<ol>
<li>There might be systems that still use 8-bit legacy encodings. In this case, the UTF-8 encoded may not be displayed properly. However, when I tried to demonstrate this on my system (Ubuntu 8.04), I failed miserably. I downloaded a small GTK2 text editor (called tea), I changed a source UI string to include “” and ellipsis, compiled and installed. I then opened a shell, set LANG to POSIX (or C), and ran the text editor. The UI message was proper Unicode and I could even type non-ASCII in the text editor. I resorted to changing a system locale (I picked en_IN) to ISO-8859-1, then logged out. In the login screen it did not show the 8-bit encoding. If someone has a proper legacy 8-bit encoding system with GNOME (OpenBSD, FreeBSD, etc), could you please try it out?</li>
<li>As Alan Cox mentioned in the thread, the canonical way to deal with UI strings in the source code should be to keep as ASCII, and put any fancy Unicode characters in the translation files (even for en_US, get an en_US translation file).</li>
</ol>
<p>Is GNOME (or components) used in a legacy 7-bit/8-bit environment?</p>
<p>If there is any reason to keep UI strings in the source code as plain ASCII, speak now, or the Unicode flood gates are about to open.</p>
<p><strong>Update 16 May 2008</strong>:There is a document at the <a href="http://www.open-std.org/jtc1/sc22/wg14/www/standards" target="_blank">ISO/IEC 9899 website (C programming language)</a>, that mentions the issue of character sets in C. It is <a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/C99RationaleV5.10.pdf" target="_blank">http://www.open-std.org/jtc1/sc22/wg14/www/docs/C99RationaleV5.10.pdf</a>.</p>
<p>On page 26, section 5.2.1, it says</p>
<blockquote><p>The C89 Committee ultimately came to remarkable unanimity on the subject of character set requirements. There was <em>strong sentiment that C should not be tied to ASCII</em>, despite its heritage and despite the precedent of Ada being defined in terms of ASCII. Rather, an implementation is required to provide a unique character code for each of the printable graphics used by C, and for each of the control codes representable by an escape sequence. (No particular graphic representation for any character is prescribed; thus the common Japanese practice of using the glyph “¥” for the C character “” is perfectly legitimate.) Translation and execution environments may have different character sets, but each must meet this requirement in its own way. The goal is to ensure that a conforming implementation can translate a C translator written in C.</p>
<p>For this reason, and for economy of description, source code is described as if it undergoes the same translation as text that is input by the standard library I/O routines: each line is terminated by some newline character regardless of its external representation.</p>
<p>With the concept of multibyte characters, “native” characters could be used in string literals and character constants, but this use was very dependent on the implementation and did not usually work in heterogenous environments. Also, this did not encompass identifiers.</p></blockquote>
<p>It then goes on with an addition to C99:</p>
<blockquote><p>A new feature of C99: C99 adds the concept of universal character name (UCN) (see §6.4.3) in order to allow the use of any character in a C source, not just English characters. The primary goal of the Committee was to enable the use of any “native” character in identifiers, string literals and character constants, while retaining the portability objective of C.</p>
<p>Both the C and C++ committees studied this situation, and the adopted solution was to introduce a new notation for UCNs. Its general forms are unnnn and Unnnnnnnn, to designate a given character according to its short name as described by ISO/IEC 10646. Thus, unnnn can be used to designate a Unicode character. This way, programs that must be fully portable may use virtually any character from any script used in the world and still be portable, provided of course that if it prints the character, the execution character set has representation for it.</p>
<p>Of course the notation unnnn, like trigraphs, is not very easy to use in everyday programming; so there is a mapping that links UCN and multibyte characters to enable source programs to stay readable by users while maintaining portability. Given the current state of multibyte encodings,<br />
10 this mapping is specified to be implementation-defined; but an implementation can provide the users with utility programs that do the conversion from UCNs to “native” multibytes or vice versa, thus providing a way to exchange source files between implementations using the UCN notation.</p></blockquote>
<p><strong>Update 7 Aug 2008</strong>: According to <a href="http://www.python.org/dev/peps/pep-0008/" target="_blank">PEP 8, Style Guide for Python Code, under Encodings</a>, says</p>
<blockquote>
<pre>    For Python 3.0 and beyond, the following policy is prescribed for
    the standard library (see <a href="http://www.python.org/dev/peps/pep-3131">PEP 3131</a>): All identifiers in the Python
    standard library MUST use ASCII-only identifiers, and SHOULD use
    English words wherever feasible (in many cases, abbreviations and
    technical terms are used which aren't English). In addition,
    <span style="text-decoration: underline;">string literals and comments must also be in ASCII</span>. The only
    exceptions are (a) test cases testing the non-ASCII features, and
    (b) names of authors. Authors whose names are not based on the
    latin alphabet MUST provide a latin transliteration of their
    names.

    <span style="text-decoration: underline;">Open source projects with a global audience are encouraged to
    adopt a similar policy.</span></pre>
</blockquote>
<blockquote><p>(Emphasis mine)</p></blockquote>


<p>Related posts:<ol><li><a href='http://simos.info/blog/archives/10' rel='bookmark' title='Permanent Link: Improving input method support in GTK+-based apps'>Improving input method support in GTK+-based apps</a> <small>When a bug report gets long with many comments, it...</small></li>
<li><a href='http://simos.info/blog/archives/514' rel='bookmark' title='Permanent Link: How to write special characters in Xorg and GNOME'>How to write special characters in Xorg and GNOME</a> <small>There is functionality in Xorg that allows type special characters,...</small></li>
<li><a href='http://simos.info/blog/archives/301' rel='bookmark' title='Permanent Link: Οδηγός &#8220;Unicode Font Guide For Free/Libre Open Source Operating Systems&#8221;'>Οδηγός &#8220;Unicode Font Guide For Free/Libre Open Source Operating Systems&#8221;</a> <small>Ο Edward H. Trager, γνωστός από το έργο για πληροφορίες...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://simos.info/blog/archives/17/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Using Anjuta in Ubuntu 8.04 to develop a GNOME C++ application (gtkmm)</title>
		<link>http://simos.info/blog/archives/671?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=using-anjuta-in-ubuntu-804-to-develop-a-gnome-c-application-gtkmm</link>
		<comments>http://simos.info/blog/archives/671#comments</comments>
		<pubDate>Sat, 03 May 2008 10:32:34 +0000</pubDate>
		<dc:creator>Simos Xenitellis</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[planetellak]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://simos.info/blog/?p=671</guid>
		<description><![CDATA[You can install Anjuta 2.4.1 from the Synaptic package manager. You also need to install a few development packages. I do not know if there is a nice meta-package such as build-essential (used to install compilers et al), so I&#8217;ll just ask you to install the packages by hand. A more elegant way would be [...]


Related posts:<ol><li><a href='http://simos.info/blog/archives/603' rel='bookmark' title='Permanent Link: Multimedia support in Ubuntu Linux 6.10'>Multimedia support in Ubuntu Linux 6.10</a> <small>This is a follow-up to the article Multimedia support in...</small></li>
<li><a href='http://simos.info/blog/archives/552' rel='bookmark' title='Permanent Link: How to easily modify a program in your Ubuntu?'>How to easily modify a program in your Ubuntu?</a> <small>Suppose we want to change the functionality of an Ubuntu...</small></li>
<li><a href='http://simos.info/blog/archives/661' rel='bookmark' title='Permanent Link: How to easily modify a program in Ubuntu (updated)?'>How to easily modify a program in Ubuntu (updated)?</a> <small>Some time ago we talked about how to modify easily...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>You can install Anjuta 2.4.1 from the Synaptic package manager. You also need to install a few development packages. I do not know if there is a nice meta-package such as build-essential (used to install compilers et al), so I&#8217;ll just ask you to install the packages by hand. A more elegant way would be very much appreciated to see in the comments.</p>
<blockquote><p>$ sudo apt-get install build-essential libgtkmm-2.4-dev autogen automake libtool intltool libglademm-2.4-dev</p></blockquote>
<p>That is the order of installation when you go trial by error inside Anjuta to compile a project. Each package draws in several other packages. Also, if you have the Ubuntu 8.04 DVD in your drive, most of these packages will be installed in a jiffy. We have the Greek localisation enabled, so bear with us. Thanks to Giannis Katsampiris for completing the recent update of the Anjuta 2.4 localisation.<br />
<a href="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-anjuta.png"><img class="alignnone size-medium wp-image-672" title="Screenshot of Anjuta, initial screen (Localisation: Greek)" src="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-anjuta-300x181.png" alt="Screenshot of Anjuta, initial screen (Localisation: Greek)" width="300" height="181" /></a><br />
Once Anjuta is installed, you are presented with the Anjuta main window.</p>
<p>We then click on File/New/Project (Αρχείο/Νέο/1. Έργο),</p>
<p><a href="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-ce9fceb4ceb7ceb3cf8ccf82-ceb5cf86ceb1cf81cebccebfceb3ceaecf82.png"><img class="alignnone size-full wp-image-673" title="Project creation wizard" src="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-ce9fceb4ceb7ceb3cf8ccf82-ceb5cf86ceb1cf81cebccebfceb3ceaecf82.png" alt="Project creation wizard" width="510" height="489" /></a></p>
<p>We click on Forward here.</p>
<p><a href="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-ce9fceb4ceb7ceb3cf8ccf82-ceb5cf86ceb1cf81cebccebfceb3ceaecf82-1.png"><img class="alignnone size-full wp-image-674" title="Choose project type" src="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-ce9fceb4ceb7ceb3cf8ccf82-ceb5cf86ceb1cf81cebccebfceb3ceaecf82-1.png" alt="Choose project type" width="510" height="489" /></a></p>
<p>There are many many project types. We wade through and we pick to use C++ and GTKMM (C++ bindings for GTK+). We could pick any other variation; GTKMM was a request from the Ubuntu-gr mailing list.</p>
<p><a href="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-ce9fceb4ceb7ceb3cf8ccf82-ceb5cf86ceb1cf81cebccebfceb3ceaecf82-2.png"><img class="alignnone size-full wp-image-675" title="Fill in some contact details" src="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-ce9fceb4ceb7ceb3cf8ccf82-ceb5cf86ceb1cf81cebccebfceb3ceaecf82-2.png" alt="Fill in some contact details" width="500" height="479" /></a></p>
<p>We then fill in some contact details.</p>
<p><a href="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-ce9fceb4ceb7ceb3cf8ccf82-ceb5cf86ceb1cf81cebccebfceb3ceaecf82-3.png"><img class="alignnone size-full wp-image-676" title="Sorting out the project settings" src="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-ce9fceb4ceb7ceb3cf8ccf82-ceb5cf86ceb1cf81cebccebfceb3ceaecf82-3.png" alt="Sorting out the project settings" width="500" height="396" /></a></p>
<p>There is an option to specify at this stage external packages. We opt not to specify them now.</p>
<p><a href="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-ce9fceb4ceb7ceb3cf8ccf82-ceb5cf86ceb1cf81cebccebfceb3ceaecf82-4.png"><img class="alignnone size-full wp-image-677" title="We are actually done!" src="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-ce9fceb4ceb7ceb3cf8ccf82-ceb5cf86ceb1cf81cebccebfceb3ceaecf82-4.png" alt="We are actually done!" width="500" height="396" /></a></p>
<p>Once you click Apply (Εφαρμογή) &#8211; the button with the green tick, Anjuta will create an initial dummy package (actually a hello world application), and will run automatically the equivalent of ./configure for you.</p>
<p><a href="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-anjuta-projects2.png"><img class="alignnone size-full wp-image-678" title="Read to work!" src="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-anjuta-projects2.png" alt="Read to work!" width="500" height="303" /></a></p>
<p>Now, this is the final screen, when you start working. Here you would click on Κατασκευή/Κατασκευή έργου (Build/Build Project), so that the project gets compiled.</p>
<p>Then, you would click on Κατασκευή/Εκτέλεση προγράμματος&#8230; (Build/Run program&#8230;) to run the program!</p>
<p><a href="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-anjuta-projects2-src-maincc.png"><img class="alignnone size-full wp-image-679" title="Start typing!" src="http://simos.info/blog/wp-content/uploads/2008/05/screenshot-anjuta-projects2-src-maincc.png" alt="Start typing!" width="500" height="303" /></a></p>
<p>Here is shows that we have located the source file (main.cc), and we see main().</p>
<p>It takes about 3 second to compile a program with g++ (at least on my system). Therefore, the dead time between (a) Let&#8217;s compile it and (b) Oh, I am running my program!, is under 5 seconds, which is good.</p>


<p>Related posts:<ol><li><a href='http://simos.info/blog/archives/603' rel='bookmark' title='Permanent Link: Multimedia support in Ubuntu Linux 6.10'>Multimedia support in Ubuntu Linux 6.10</a> <small>This is a follow-up to the article Multimedia support in...</small></li>
<li><a href='http://simos.info/blog/archives/552' rel='bookmark' title='Permanent Link: How to easily modify a program in your Ubuntu?'>How to easily modify a program in your Ubuntu?</a> <small>Suppose we want to change the functionality of an Ubuntu...</small></li>
<li><a href='http://simos.info/blog/archives/661' rel='bookmark' title='Permanent Link: How to easily modify a program in Ubuntu (updated)?'>How to easily modify a program in Ubuntu (updated)?</a> <small>Some time ago we talked about how to modify easily...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://simos.info/blog/archives/671/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Timezones, clock applet and marketing dangers</title>
		<link>http://simos.info/blog/archives/16?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=timezones-clock-applet-and-marketing-dangers</link>
		<comments>http://simos.info/blog/archives/16#comments</comments>
		<pubDate>Sun, 23 Mar 2008 19:30:35 +0000</pubDate>
		<dc:creator>Simos Xenitellis</dc:creator>
				<category><![CDATA[gnome]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[clock]]></category>
		<category><![CDATA[political]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/simos/2008/03/23/timezones-clock-applet-and-marketing-dangers/</guid>
		<description><![CDATA[It is great to receive feedback from users that try out the development versions of distributions (such as Ubuntu and Fedora). Usually, these are small bugs that can easily get fixed. However, there is this bug that looks potent to lead to political dissatisfaction and bad publicity to GNOME. The clock applet (gnome-panel) now shows [...]


Related posts:<ol><li><a href='http://simos.info/blog/archives/618' rel='bookmark' title='Permanent Link: Mentoring facility available in Launchpad, Ubuntu'>Mentoring facility available in Launchpad, Ubuntu</a> <small>Is there a bug report in Launchpad.net (Ubuntu) that you...</small></li>
<li><a href='http://simos.info/blog/archives/9' rel='bookmark' title='Permanent Link: Localisation issues in home directory folders (xdg-user-dirs)'>Localisation issues in home directory folders (xdg-user-dirs)</a> <small>In new distributions such as Ubuntu 7.10 there is now...</small></li>
<li><a href='http://simos.info/blog/archives/552' rel='bookmark' title='Permanent Link: How to easily modify a program in your Ubuntu?'>How to easily modify a program in your Ubuntu?</a> <small>Suppose we want to change the functionality of an Ubuntu...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>It is great to receive feedback from users that try out the development versions of distributions (such as Ubuntu and Fedora). Usually, these are small bugs that can easily get fixed. However, there is this bug that looks potent to lead to political dissatisfaction and bad publicity to GNOME.</p>
<p>The clock applet (gnome-panel) now shows the timezones of cities that one selects. You click on the Edit button, you select the city (it comes from Locations.xml &#8211; libgweather, which has the coordinates of each city entry), and the applet makes a guess of what is your timezone (each timezone comes with longitude information).</p>
<p>So, if a city is far away from the capital city of your country (and closer to the capital city of a neighboring country), then the applet often proposes the wrong timezone. Considering that in some (=many) cases there is some animosity between neighboring countries, this makes users unhappy.</p>
<p>Launchpad bug report: <a href="https://bugs.edge.launchpad.net/ubuntu/+source/gnome-panel/+bug/185190">Bug #185190, Clock applet chooses wrong timezone for many cities (eg Pittsburgh, Beijing)</a></p>
<p>GNOME Bugzilla bug report: <a href="http://bugzilla.gnome.org/show_bug.cgi?id=519823">Bug 519823 – Cities associated with wrong timezone</a></p>
<p><strong>Updated (8Apr2008)</strong>: The bug has been fixed upstream (thanks Dan!) and most likely makes it in GNOME 2.22.1, which means Ubuntu 8.04 and other distributions will get the update as well. Some countries with regions that have more than one timezone may want to check that the correct timezone is selected for each region.</p>


<p>Related posts:<ol><li><a href='http://simos.info/blog/archives/618' rel='bookmark' title='Permanent Link: Mentoring facility available in Launchpad, Ubuntu'>Mentoring facility available in Launchpad, Ubuntu</a> <small>Is there a bug report in Launchpad.net (Ubuntu) that you...</small></li>
<li><a href='http://simos.info/blog/archives/9' rel='bookmark' title='Permanent Link: Localisation issues in home directory folders (xdg-user-dirs)'>Localisation issues in home directory folders (xdg-user-dirs)</a> <small>In new distributions such as Ubuntu 7.10 there is now...</small></li>
<li><a href='http://simos.info/blog/archives/552' rel='bookmark' title='Permanent Link: How to easily modify a program in your Ubuntu?'>How to easily modify a program in your Ubuntu?</a> <small>Suppose we want to change the functionality of an Ubuntu...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://simos.info/blog/archives/16/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to easily modify a program in Ubuntu (updated)?</title>
		<link>http://simos.info/blog/archives/661?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-to-easily-modify-a-program-in-ubuntu-updated</link>
		<comments>http://simos.info/blog/archives/661#comments</comments>
		<pubDate>Sat, 15 Mar 2008 01:05:06 +0000</pubDate>
		<dc:creator>Simos</dc:creator>
				<category><![CDATA[gnome]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[planetellak]]></category>
		<category><![CDATA[polytonic]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[character]]></category>
		<category><![CDATA[codepoint]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[compose key]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[dejavu]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[input method]]></category>
		<category><![CDATA[multi_key]]></category>
		<category><![CDATA[unicode]]></category>

		<guid isPermaLink="false">http://simos.info/blog/archives/661</guid>
		<description><![CDATA[Some time ago we talked about how to modify easily a program in Ubuntu. We gave as an example the modification of gucharmap; we got the deb source package, made the change, compiled, created new .deb files and installed them. We go the same (well, similar) route here, by modifying the gtk+ library (!!!). The [...]


Related posts:<ol><li><a href='http://simos.info/blog/archives/552' rel='bookmark' title='Permanent Link: How to easily modify a program in your Ubuntu?'>How to easily modify a program in your Ubuntu?</a> <small>Suppose we want to change the functionality of an Ubuntu...</small></li>
<li><a href='http://simos.info/blog/archives/15' rel='bookmark' title='Permanent Link: Testing the updated IM support in GTK+'>Testing the updated IM support in GTK+</a> <small>In Improving input method support in GTK+-based apps, we talked...</small></li>
<li><a href='http://simos.info/blog/archives/789' rel='bookmark' title='Permanent Link: Updated to Ubuntu 8.10'>Updated to Ubuntu 8.10</a> <small>I just updated my system to Ubuntu 8.10. Since I...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Some time ago we talked about <a href="http://simos.info/blog/archives/552" target="_blank">how to modify easily a program in Ubuntu</a>. We gave as an example the modification of gucharmap; we got the deb source package, made the change, compiled, created new .deb files and installed them.</p>
<p>We go the same (well, similar) route here, by modifying the gtk+ library (!!!). The purpose of the modification is to allow us to type, by default, all sort of interesting Unicode characters, including ⓣⓗⓘⓢ , ᾅᾷ, ṩ, and many more.</p>
<p>The result of this exercise is to create replacement .deb packages for the gtk+ library that we are going to install in place of the system libraries. Because these new libraries will not be original Ubuntu packages, the update manager will be pestering us to rollback to the official gtk+ packages. This is actually good in case you want to switch back; you will have the enhanced functionality for as long as you postpone that update.</p>
<p>There is a chance we might screw up our system, so please make backups, or have a few drinks first and come back. I take no responsibility if something bad happens on your system. If you are having any second thoughts, do not follow the next steps; use <a href="http://blogs.gnome.org/simos/2008/03/05/testing-the-updated-im-support-in-gtk/" target="_blank">the safer alternative procedure</a>. You may try however this guide just for the kicks; up to the <em>dpkg</em> command below, no changes are being made to your system.</p>
<p>We use Ubuntu 7.10 here. This should work in other versions, though your mileage may vary.</p>
<p>The compilation procedure takes time (about 30 minutes) and space. Make sure you use a partition with &gt;2GB of free space. We are not going to use up 2GB (a bit less than 1GB), but it&#8217;s nice not to fill up partitions.</p>
<p>We are going to use the <a href="http://www.ducea.com/2008/03/06/howto-recompile-debian-packages/" target="_blank">generic instructions on how to recompile a debian package by ducea</a>.</p>
<p>First of all, install the development packages,</p>
<blockquote>
<pre><code>sudo apt-get install devscripts build-essential</code></pre>
</blockquote>
<p>Next, we use the <em>apt-get source</em> command to get the source code of the GTK+ 2 library,</p>
<blockquote>
<pre>cd /home/ubuntu/bigpartition_over2GB/</pre>
<pre>apt-get source libgtk2.0-0</pre>
</blockquote>
<p>We then pull in any dependencies that GTK+ may require. They are normally about a dozen packages, but we do not have to worry for the details.</p>
<blockquote>
<pre><code>apt-get build-dep </code>libgtk2.0-0</pre>
</blockquote>
<p>At this stage we need to touch up the source code of GTK+ before we go into the compilation phase. Visit the <a href="http://bugzilla.gnome.org/show_bug.cgi?id=321896" target="_blank">bug report #321896 – Synch gdkkeysyms.h/gtkimcontextsimple.c with X.org 6.9/7.0</a> and download the patch (look under the Attachment section). You  should get a file named  <em>gtk-compose-update.patch</em>. If you have a look at the patch, you will notice that it expects to find the source of gtk+ in a directory called <em>gtk+</em>. Making a link solves the problem,</p>
<blockquote>
<pre>ln -s libgtk2.0-0 gtk+</pre>
</blockquote>
<p>We then attempt to apply the patch (perform a dry run), just in case.</p>
<blockquote>
<pre>patch -p0 --dry-run &lt; /tmp/gtk-compose-update.patch</pre>
</blockquote>
<p>If this does not show an error message, you can the command again without the &#8211;dry-run.</p>
<blockquote>
<pre>patch -p0 &lt; /tmp/gtk-compose-update.patch</pre>
</blockquote>
<p>Finally, we are ready to build our fresh GTK+ library.</p>
<blockquote>
<pre>cd libgtk2.0-0<code>
debuild -us -uc</code></pre>
</blockquote>
<p>This will take time to complete, so go and do some healthy cooking.</p>
<p>At the end of the compilation, if all went OK, you should have about a dozen .deb files created. These are one directory higher (do a &#8220;<em>cd ..</em>&#8220;). To install, use dpkg,</p>
<blockquote>
<pre>dpkg -i *.deb</pre>
</blockquote>
<p>If you have any other deb files in this directory, it&#8217;s good to move them away before running the command. If all went ok, the .deb files should install without a hitch.</p>
<p>The final step is to restart your system. To test the new support, see <a href="http://blogs.gnome.org/simos/2008/03/05/testing-the-updated-im-support-in-gtk/" target="_blank">the last section at this post</a>. Use Firefox and OpenOffice.org to type those Unicode characters.</p>
<p>If you managed to wade through all these steps, I would appreciate it if you could post a comment.</p>
<p>Good luck!</p>


<p>Related posts:<ol><li><a href='http://simos.info/blog/archives/552' rel='bookmark' title='Permanent Link: How to easily modify a program in your Ubuntu?'>How to easily modify a program in your Ubuntu?</a> <small>Suppose we want to change the functionality of an Ubuntu...</small></li>
<li><a href='http://simos.info/blog/archives/15' rel='bookmark' title='Permanent Link: Testing the updated IM support in GTK+'>Testing the updated IM support in GTK+</a> <small>In Improving input method support in GTK+-based apps, we talked...</small></li>
<li><a href='http://simos.info/blog/archives/789' rel='bookmark' title='Permanent Link: Updated to Ubuntu 8.10'>Updated to Ubuntu 8.10</a> <small>I just updated my system to Ubuntu 8.10. Since I...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://simos.info/blog/archives/661/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing the updated IM support in GTK+</title>
		<link>http://simos.info/blog/archives/15?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=testing-the-updated-im-support-in-gtk</link>
		<comments>http://simos.info/blog/archives/15#comments</comments>
		<pubDate>Wed, 05 Mar 2008 23:17:57 +0000</pubDate>
		<dc:creator>Simos Xenitellis</dc:creator>
				<category><![CDATA[gnome]]></category>
		<category><![CDATA[combining diacritic]]></category>
		<category><![CDATA[dejavu]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[gedit]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[pango]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[xorg]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/simos/2008/03/05/testing-the-updated-im-support-in-gtk/</guid>
		<description><![CDATA[In Improving input method support in GTK+-based apps, we talked about some work to update the list of compose sequences that GTK+ knows to the latest version that comes from Xorg. From 691 compose sequences, we now support over 5000. The patch has landed in GTK+ (trunk), and here are instructions for testing. If you [...]


Related posts:<ol><li><a href='http://simos.info/blog/archives/11' rel='bookmark' title='Permanent Link: Typing squiggles and dots in GNOME and GTK+ applications'>Typing squiggles and dots in GNOME and GTK+ applications</a> <small>Garrett asks how to type squiggles and dots in GNOME;...</small></li>
<li><a href='http://simos.info/blog/archives/10' rel='bookmark' title='Permanent Link: Improving input method support in GTK+-based apps'>Improving input method support in GTK+-based apps</a> <small>When a bug report gets long with many comments, it...</small></li>
<li><a href='http://simos.info/blog/archives/514' rel='bookmark' title='Permanent Link: How to write special characters in Xorg and GNOME'>How to write special characters in Xorg and GNOME</a> <small>There is functionality in Xorg that allows type special characters,...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://blogs.gnome.org/simos/2008/01/30/improving-input-method-support-in-gtk-based-apps/">Improving input method support in GTK+-based apps</a>, we talked about some work to update the list of compose sequences that GTK+ knows to the latest version that comes from Xorg. From 691 compose sequences, we now support over 5000.</p>
<p>The patch has landed in GTK+ (trunk), and here are instructions for testing.</p>
<ol>
<li>If you have not used jhbuild before, read the <a href="http://live.gnome.org/Jhbuild">jhbuild instructions</a> and install it.</li>
<li>Add the following to your ~/.jhbuildrc file
<pre>branches['gtk+'] = None    # Makes sure you build from the trunk of GTK+</pre>
</li>
<li>Install gtk+ using the command (see the comment of James on this post on how to avoid Step 5 below)
<pre>jhbuild build gtk+</pre>
</li>
<li>About 40 minutes later, and about 700MB of space (~600MB for source, ~100MB for installation of files) consumed, you should get a working copy of GTK+ 2.12.</li>
<li>You can use this compiled version of GTK+ by running
<pre>jhbuild shell</pre>
<p>This should give you a new shell, and whatever you run from here will use our fresh GTK+. Try running &#8220;gedit&#8221;. You will notice that the theme is different; it uses the default theme due to the special GTK+. This shell has set special environment variables so that program that run will use the fresh GTK+. The rest of the libraries come from our distribution.</li>
<li><strike> If you try to type compose sequences, you will notice no improvement. This is because at the moment <em>jhbuild</em> builds the branch 2.12 of GTK+ and not trunk. We need to download GTK+ from trunk and rebuild. </strike>
<pre><strike>cd ~/checkout/gnome2/
mv gtk+ gtk+-branch-2.12
svn co svn://svn.gnome.org/svn/gtk+/trunk gtk+
jhbuild build --no-network gtk+</strike></pre>
</li>
<li><strike>Perform Step 4 and get gedit running.</strike></li>
</ol>
<p>How to test?</p>
<ul>
<li>Setup a keyboard layout that supports a good variety of dead keys. My preference is GBr (United Kingdom). Here, AltGr+[];&#8217;#/ and AltGr+{}:@~? produce different dead keys. You press one of these combinations and then you press a letter. If such a combination <em>exists</em>, then it gets printed. For example, the old GTK+ produces öõóôòx åōőxxx. The new GTK+ produces öõóôòọ åōőǒŏȯ (12 dead keys).</li>
<li>Setup Greek, Polytonic (Ancient Greek). The dead keys are [];&#8217;  {}:@  AltGr+[] (10 dead keys). Produce characters such as ᾅᾂᾷῗὕὒᾥᾢῷ.</li>
<li>Try compose sequences as described from <a href="http://gitweb.freedesktop.org/?p=xorg/lib/libX11.git;a=blob_plain;f=nls/en_US.UTF-8/Compose.pre">the upstream file at XOrg</a>. For example,
<pre>ComposeKey+(   1 0 )  produces ⑩. Try the same for 0-20, a-zA-Z.</pre>
</li>
<li>Other miscellaneous, Ṩǟấẫǡ (using GBr layout)</li>
</ul>
<p>The next step would be to parse the list of compose sequences and produce a documentation file.</p>


<p>Related posts:<ol><li><a href='http://simos.info/blog/archives/11' rel='bookmark' title='Permanent Link: Typing squiggles and dots in GNOME and GTK+ applications'>Typing squiggles and dots in GNOME and GTK+ applications</a> <small>Garrett asks how to type squiggles and dots in GNOME;...</small></li>
<li><a href='http://simos.info/blog/archives/10' rel='bookmark' title='Permanent Link: Improving input method support in GTK+-based apps'>Improving input method support in GTK+-based apps</a> <small>When a bug report gets long with many comments, it...</small></li>
<li><a href='http://simos.info/blog/archives/514' rel='bookmark' title='Permanent Link: How to write special characters in Xorg and GNOME'>How to write special characters in Xorg and GNOME</a> <small>There is functionality in Xorg that allows type special characters,...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://simos.info/blog/archives/15/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Designing a command-line translation tool for GNOME</title>
		<link>http://simos.info/blog/archives/14?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=designing-a-command-line-translation-tool-for-gnome</link>
		<comments>http://simos.info/blog/archives/14#comments</comments>
		<pubDate>Mon, 03 Mar 2008 16:31:26 +0000</pubDate>
		<dc:creator>Simos Xenitellis</dc:creator>
				<category><![CDATA[gnome]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[l10n]]></category>
		<category><![CDATA[transifex]]></category>
		<category><![CDATA[translation]]></category>
		<category><![CDATA[translation tool]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/simos/2008/03/03/designing-a-command-line-translation-tool-for-gnome/</guid>
		<description><![CDATA[One messy task with GNOME translations is the whole workflow of getting the PO files, translating/updating/fixing them, and then uploading them back. One would need to use command line, and several different commands to accomplish this. KDE and KBabel has a nice feature that allows you to easily grab all translation files, work on them, [...]


Related posts:<ol><li><a href='http://simos.info/blog/archives/20' rel='bookmark' title='Permanent Link: Towards a GNOME CLI translation management tool'>Towards a GNOME CLI translation management tool</a> <small>Update 7/June/2009: The repository was moved to https://github.com/simos/gnome-i18n-manage-vcs/. There was...</small></li>
<li><a href='http://simos.info/blog/archives/608' rel='bookmark' title='Permanent Link: Using SVN for GNOME Translators'>Using SVN for GNOME Translators</a> <small>Update 3rd June 2009: This is a very old post...</small></li>
<li><a href='http://simos.info/blog/archives/588' rel='bookmark' title='Permanent Link: Translating the OLPC'>Translating the OLPC</a> <small>In a previous post, we covered how to install fonts...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>One messy task with GNOME translations is the whole workflow of getting the PO files, translating/updating/fixing them, and then uploading them back. One would need to use command line, and several different commands to accomplish this.</p>
<p>KDE and KBabel has a nice feature that allows you to easily grab all translation files, work on them, then commit through SVN. All through the GUI! It helps a bit here that the translation files for a specific language are located under a single directory.</p>
<p>The current workflow in GNOME translations typically consists of</p>
<ol>
<li>Getting the PO file from the L10n server (for example, <a href="http://l10n.gnome.org/languages/el/gnome-2-22">GNOME 2.22 Greek</a>) (also possible to use intltool-update within po/)</li>
<li>Translate using KBabel, POEdit, GTranslator, vim, emacs, etc.</li>
<li><em>svn co</em> the package making sure you have the correct branch. One may limit to the po/ directory.</li>
<li>Put the updated file in po/</li>
<li>Update the ChangeLog (either with emacs, or with that Perl script)</li>
<li>Commit the translation.</li>
<li>(If you committed on a branch, also commit on HEAD)</li>
</ol>
<p>Tools such as <a href="https://fedorahosted.org/transifex">Transifex</a> (used currently in Fedora) take away altogether the use of command line tools, and one works here through a web-based interface. Apparently, <a href="http://dimitris.glezos.com/weblog/2008/03/01/fosdem08-slide-deck/">Transifex is having a command-line tool</a> in the TODO list.<br />
What I would like to see in GNOME translations, is a tool that one can use to</p>
<ol>
<li>Grab all or a section of the PO files from <a href="http://l10n.gnome.org/languages/el/gnome-2-22">GNOME 2.22</a>. Put them in a local folder.</li>
<li>Use the tools of my preference (translation tools, scripts, etc) to update those translations I need to update.</li>
<li>Commit those translation files that changed (using my SVN account), automatically add ChangeLog entries, also commit to HEAD if required.</li>
</ol>
<p>I would prefer to have a command-line tool for this, for now, though it would be great if GUI tools would get the same functionality at some point. For a command line tool, the workflow would look like</p>
<p>The workflow would be something like</p>
<pre>$ ssh-add
Enter passphrase for /home/simos/.ssh/id_rsa:
Identity added: /home/simos/.ssh/id_dsa (/home/simos/.ssh/id_dsa)</pre>
<pre>$ tsfx --project=gnome-2.22 --language=el --collection=gnome-desktop --user=simos --action=checkout</pre>
<pre>Reading from http://svn.gnome.org/svn/damned-lies/trunk/releases.xml.in... done.</pre>
<pre>Getting alacarte (HEAD)... done.</pre>
<pre>Getting bug-buddy (branch: xyz)... done.</pre>
<pre>...</pre>
<pre>Completed in 4:11s.</pre>
<pre>$ _</pre>
<p>Now we translate any of the files we downloaded, and we push back upstream (of course, only those files that were changed).</p>
<pre>$ tsfx --action=commit</pre>
<pre>Found local repository, Project: gnome-2.22, Language: el, Collection: gnome-desktop, User: simos</pre>
<pre> Reading local files...</pre>
<pre>Found 6 changed files.</pre>
<pre>Uploading alacarte (HEAD)... done.</pre>
<pre>Uploading bug-buddy (branch:xyz, HEAD)... done.</pre>
<pre>...</pre>
<pre>Completed uploading translation files to gnome-2.22, language el.</pre>
<pre>$ _</pre>


<p>Related posts:<ol><li><a href='http://simos.info/blog/archives/20' rel='bookmark' title='Permanent Link: Towards a GNOME CLI translation management tool'>Towards a GNOME CLI translation management tool</a> <small>Update 7/June/2009: The repository was moved to https://github.com/simos/gnome-i18n-manage-vcs/. There was...</small></li>
<li><a href='http://simos.info/blog/archives/608' rel='bookmark' title='Permanent Link: Using SVN for GNOME Translators'>Using SVN for GNOME Translators</a> <small>Update 3rd June 2009: This is a very old post...</small></li>
<li><a href='http://simos.info/blog/archives/588' rel='bookmark' title='Permanent Link: Translating the OLPC'>Translating the OLPC</a> <small>In a previous post, we covered how to install fonts...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://simos.info/blog/archives/14/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
