<?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>DaveOnCode &#187; iphone</title>
	<atom:link href="http://www.daveoncode.com/tag/iphone/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.daveoncode.com</link>
	<description>coder and technology lover</description>
	<lastBuildDate>Sun, 16 May 2010 16:55:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>iPhone applications&#8217; localization</title>
		<link>http://www.daveoncode.com/2010/05/15/iphone-applications-localization/</link>
		<comments>http://www.daveoncode.com/2010/05/15/iphone-applications-localization/#comments</comments>
		<pubDate>Sat, 15 May 2010 12:15:28 +0000</pubDate>
		<dc:creator>Davide Zanotti</dc:creator>
				<category><![CDATA[Objective-c and Cocoa]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[internalization]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://www.daveoncode.com/?p=609</guid>
		<description><![CDATA[Well, it&#8217;s quite a lot since my first approach to Objective C, Cocoa and iPhone development and now I&#8217;m starting to move my first concrete steps into this beautiful world. Today I would like to face an important aspect of iPhone development (and application development generally), localization! Fortunately the excellent Cocoa framework and Objective C]]></description>
			<content:encoded><![CDATA[<p>Well, it&#8217;s quite a lot since my first approach to Objective C, Cocoa and iPhone development and now I&#8217;m starting to move my first concrete steps into this beautiful world. Today I would like to face an important aspect of iPhone development (and application development generally), localization! Fortunately the excellent Cocoa framework and Objective C ecosystem make internalization process easy, fast and clean, thus localize an application into several languages can be accomplished with a minimum effort by developers.<br />
Fundamentally there are three main steps to get a multi language app in action. The first is to create a special folder with the extension <strong>.lproj</strong> under application&#8217;s root for each language we want/can support. So, if we suppose to support english, italian and spanish languages, we will create those folders: <strong>en.lproj</strong>, <strong>it.lproj</strong>, <strong>es.lproj</strong>. &#8220;en&#8221;, &#8220;it&#8221; and &#8220;es&#8221; represent the <strong>ISO 639-1</strong> language designation (the same used in domain suffixes), it&#8217;s also possible to adopt the <strong>ISO 639-2</strong> convention and the folders would be renamed as &#8220;eng&#8221;, &#8220;ita&#8221; and &#8220;spa&#8221;, anyway first approach is the preferred and widely adopted. If you want to know all <strong>ISO 639-1</strong> and <strong>ISO 639-2</strong> designators, I suggest you this page: <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">http://www.loc.gov/standards/iso639-2/php/code_list.php</a>.<br />
Once we create all the necessary <strong>.lproj</strong> folders (using Finder or Terminal) we can switch to our beloved Xcode and create all the necessary resources that will keep the different localized strings. We must now select the logical &#8220;<strong>Resources</strong>&#8221; folder and add a new file by choosing &#8220;<strong>String file</strong>&#8221; under Mac OS X &#8220;<strong>Resource</strong>&#8220;, then click next and naming this file &#8220;<strong>Localizable.strings</strong>&#8220;, finally save it under previous created folders (we must repeat this operation for each folder).<br />
Those <strong>.strings</strong> file are just simple text file, where we can specify keys and values as the following example:</p>
<p>// en.lproj<br />
&#8220;hello&#8221; = &#8220;Hello&#8221;;</p>
<p>// it.lproj<br />
&#8220;hello&#8221; = &#8220;Ciao&#8221;;</p>
<p>// sp.lproj<br />
&#8220;hello&#8221; = &#8220;Hola&#8221;;</p>
<p>The basic approach is to use the english word as the key and assign it different values based on the localization file, but we can be more cryptic and use our custom conventions, for example by assigning incremental keys like: &#8220;k1&#8243;, &#8220;k2&#8243;, &#8220;k3&#8243; and so on. As last step, we can automatically read the right localized string version at runtime (based on user&#8217;s language setting) by using macro (<strong>NSLocalizedString</strong>, <strong>NSLocalizedStringFromTable</strong>, <strong>NSLocalizedStringFromTableInBundle</strong>, <strong>NSLocalizedStringWithDefaultValue</strong>) or class methods available in Apple&#8217;s framework. The simplest way to do that is to use the function <strong>NSLocalizedString()</strong>, which accepts two arguments: an <strong>NSString</strong> representing the key we are looking for and a second optional argument which has the mere purpose of serving as note for developers by trying to describe string&#8217;s context (*), for this reason this argument will be &#8220;<strong>nil</strong>&#8221; the most of times:</p>
<div class="codecolorer-container c mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// set myLabel's text using NSLocalizedString()</span><br />
myLabel.<span style="color: #202020;">text</span> <span style="color: #339933;">=</span> NSLocalizedString<span style="color: #009900;">&#40;</span>@<span style="color: #ff0000;">&quot;hello&quot;</span><span style="color: #339933;">,</span> nil<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Although this approach is very simple, it&#8217;s not recommendable in my opinion, because it doesn&#8217;t provide a way to handle missing keys and if a key can&#8217;t be found, it will print that key literally (and in case of a not human readable key like &#8220;k-15&#8243;, it would be very annoying for the user). Thus, a far better option is to use the <strong>NSLocalizedStringWithDefaultValue()</strong>, which accepts 5 arguments: an <strong>NSString</strong> for the key, an <strong>NSString</strong> for the table, an <strong>NSBundle</strong> reference, an <strong>NSString</strong> for a fallback string&#8217;s value, and an optional <strong>NSString</strong> for a comment (like <strong>NSLocalizedString()</strong>). The table argument refers to the name of <strong>.strings</strong> file (without extension), in fact we are not limited to &#8220;<strong>Localizable.strings</strong>&#8221; but we can create as many <strong>.strings</strong> files we need (&#8220;Menu.strings&#8221;, &#8220;InfoPanel.strings&#8221;&#8230;). &#8220;<strong>Localizable.strings</strong>&#8221; is only a conventional name used to specify a default file for localization that can be loaded without specify its name (<strong>NSLocalizedString()</strong> can read only that file). The bundle is a reference to the <strong>NSBundle</strong> where the <strong>.strings</strong> file is located (usually the main bundle).</p>
<div class="codecolorer-container c mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// set myLabel's text using NSLocalizedStringWithDefaultValue()</span><br />
myLabel.<span style="color: #202020;">text</span> <span style="color: #339933;">=</span> NSLocalizedStringWithDefaultValue<span style="color: #009900;">&#40;</span>@<span style="color: #ff0000;">&quot;MyKey&quot;</span><span style="color: #339933;">,</span> @<span style="color: #ff0000;">&quot;MyStringFile&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span>NSBundle mainBundle<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> @<span style="color: #ff0000;">&quot;Missing key&quot;</span><span style="color: #339933;">,</span> nil<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>It&#8217;s also possible to use bundle&#8217;s method <strong>localizedStringForKey:value:table</strong>, which accepts an <strong>NSString</strong> as key, a second <strong>NSString</strong> as fallback value, and a third <strong>NSString</strong> for the table (or <strong>nil</strong> if you are lazy and want to use &#8220;<strong>Localizable.strings</strong>&#8221; without specifying it) :</p>
<div class="codecolorer-container c mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">NSBundle <span style="color: #339933;">*</span>bundle <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>NSBundle mainBundle<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
myLabel.<span style="color: #202020;">text</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>bundle localizedStringForKey<span style="color: #339933;">:</span>@<span style="color: #ff0000;">&quot;MyKey&quot;</span> value<span style="color: #339933;">:</span>@<span style="color: #ff0000;">&quot;Missing key :(&quot;</span> table<span style="color: #339933;">:</span>nil<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>An important point to understand is how localization process works, that is which steps are involved at runtime on the device. As far I know (by doing several experiment using iPhone simulator), the process is the following: </p>
<p>1. code is executed and a request for a localized string is found<br />
2. the system try to find the <strong>.strings</strong> file of the current locale (according to user language settings). The NSString represenitng current locale can be found using:</p>
<div class="codecolorer-container c mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#91;</span>NSLocale currentLocale<span style="color: #009900;">&#93;</span> localeIdentifier<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>3. If the file is found, it will search for the requested key and it will return it&#8217;s value if found or a nil otherwise. If .strings file can&#8217;t be found, the system will try to find others <strong>.strings</strong> file sequentially, using <strong>preferredLanguages</strong>&#8216;s <strong>NSArray</strong>:</p>
<div class="codecolorer-container c mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">NSArray <span style="color: #339933;">*</span>preferredLanguages <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>NSLocale preferredLanguages<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>and it will stops as soon a file is found, by returning key&#8217;s value if found or <strong>nil</strong> otherwise.</p>
<p>So, considering the simple &#8220;hello&#8221; localization example into english, italian and spanish, our @&#8221;hello&#8221; key will be successfully translated if we use one of the three locales (en, it, sp) and it will be printed in english for extra locales (like german, french and so on).</p>
<p>Finally it&#8217;s also possible to generate strings file automatically from the source code by using Terminal&#8217;s command <strong>genstrings</strong>, see here for details:  <a href="http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/genstrings.1.html">http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/genstrings.1.html</a></p>
<p>* the comment parameter is also used to automatically generate a comment (/* comment */) in <strong>.strings</strong> files using <strong>genstrings</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.daveoncode.com/2010/05/15/iphone-applications-localization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging PhoneGap applications using Xcode console</title>
		<link>http://www.daveoncode.com/2010/01/12/debugging-phonegap-applications-using-xcode-console/</link>
		<comments>http://www.daveoncode.com/2010/01/12/debugging-phonegap-applications-using-xcode-console/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 10:13:59 +0000</pubDate>
		<dc:creator>Davide Zanotti</dc:creator>
				<category><![CDATA[phonegap]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.daveoncode.com/?p=580</guid>
		<description><![CDATA[When I started to play whit PhoneGap, my greatest issue was: &#8220;how can I debug my code?&#8221;, I use often tools such FireBug and JavaScript debugger included in Internet Explorer 8 (which is the first good thing IE has to offers!) but write and test my code on iPhone simulator is completely different. Fortunately PhoneGap]]></description>
			<content:encoded><![CDATA[<p>When I started to play whit <strong>PhoneGap</strong>, my greatest issue was: &#8220;how can I debug my code?&#8221;, I use often tools such <strong>FireBug</strong> and JavaScript debugger included in Internet Explorer 8 (which is the first good thing IE has to offers!) but write and test my code on iPhone simulator is completely different. Fortunately PhoneGap offers a way to access to <strong>Xcode</strong> console and print messages by choosing among three different levels: <strong>log</strong>, <strong>warn</strong> and <strong>error</strong>. In order to print a message, we have to use the <strong>debug</strong> object, which has scope <strong>window</strong> (it is a global object), in this way:</p>
<div class="codecolorer-container javascript mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">debug.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;my log message&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #006600; font-style: italic;">// or</span><br />
debug.<span style="color: #660066;">warn</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;my warning message&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #006600; font-style: italic;">// or</span><br />
debug.<span style="color: #660066;">error</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;my error message&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>To open Xcode console you have to choose &#8220;Run -> Console&#8221; from the toolbar (or CMD+SHIFT+R) and after a &#8220;Build and Run&#8221; (CMD+Enter), you will see your message appear in the console.<br />
Testing applications while developing using PhoneGap and Xcode, is an intense activity, because errors are not automatically notified (like in FireBug or similar), so it&#8217;s really important to make use of <strong>try/catch/finally</strong> blocks and logging calls:</p>
<div class="codecolorer-container javascript mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000066; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; mycommand.<span style="color: #660066;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; &nbsp; debug.<span style="color: #660066;">error</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Error using mycommand: &quot;</span> <span style="color: #339933;">+</span> e.<span style="color: #660066;">message</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">finally</span> <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #006600; font-style: italic;">// do something smart here :^)</span><br />
<br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Finally, in order to avoid problems related to Xcode cache, I suggest to always clean the cache by running &#8220;Build -> Clean&#8221; from the toolbar (or CMD+SHIFT+K) before doing a new build and eventually remove the application folder under &#8220;/Users/{your-name}/Library/Application Support/iPhone Simulator/User/Applications/{app-number}&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.daveoncode.com/2010/01/12/debugging-phonegap-applications-using-xcode-console/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Detecting display&#8217;s orientation change on mobile devices with accelerometer: a platform indipendent approach (n95, i900, iPhone&#8230;) with javascript</title>
		<link>http://www.daveoncode.com/2008/12/15/detecting-displays-orientation-change-on-mobile-devices-with-accelerometer-a-platform-indipendent-approach-n95-i900-iphone-with-javascript/</link>
		<comments>http://www.daveoncode.com/2008/12/15/detecting-displays-orientation-change-on-mobile-devices-with-accelerometer-a-platform-indipendent-approach-n95-i900-iphone-with-javascript/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 13:55:59 +0000</pubDate>
		<dc:creator>Davide Zanotti</dc:creator>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[accelerometer]]></category>
		<category><![CDATA[display orientation]]></category>
		<category><![CDATA[i900]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[n95]]></category>
		<category><![CDATA[opera mobile]]></category>
		<category><![CDATA[samsung omnia]]></category>
		<category><![CDATA[smartphone]]></category>

		<guid isPermaLink="false">http://daveoncode.wordpress.com/?p=144</guid>
		<description><![CDATA[As I wrote, I bought a Samsung i900 Omnia (which as Nokia n95, iPhone and other modern cool mobile phones, has an accelerometer), as a web developer one of the first things that I had in mind was &#8220;how can I detect the orientation change (landscape or portrait mode) with javascript or actionscript?&#8221;. The first]]></description>
			<content:encoded><![CDATA[<p>As I wrote, I bought a Samsung i900 Omnia (which as Nokia n95, iPhone and other modern cool mobile phones, has an accelerometer), as a web developer one of the first things that I had in mind was &#8220;how can I detect the orientation change (landscape or portrait mode) with javascript or actionscript?&#8221;. The first things I thought was:</p>
<ol>
<li>If the display changes its orientation mode, then the screen width and height must will updated with the new size</li>
<li>If the screen width is smaller than screen height, the device must be in &#8220;portrait&#8221; mode</li>
<li>Vice versa, if the screen width is bigger than screen height, the device must be in &#8220;landscape&#8221; mode</li>
<li>The only thing I need is to check the value of screen size and define the orientation mode according to the point 2 and 3</li>
</ol>
<p>And, as I can see, my deductions was right! I<span class="__mozilla-findbar-search" style="background-color:yellow;color:black;display:inline;font-size:inherit;padding:0;"></span> realized a small javascript script, which by using <strong><em>setInterval()</em></strong> function and controlling <strong><em>screen.width</em></strong> and <strong><em>screen.heigth</em></strong> deduces the device orientation mode. Anyway it works actually only with Opera mobile 9.5 (tested only on Samsung Omnia), Internet Explorer Mobile seems unable to interpreting some javascript functions.</p>
<p>This is a piece of my code (the main logic behind):</p>
<pre>if (screen.width != width &amp;&amp; screen.height != height) {
    width = screen.width;
    height = screen.height;
    mode = width &gt; height ? "landscape" : "portrait";
}</pre>
<p>If you would like to test my script go to http://daveoncode.site90.net</p>
<p>Let me know, thanks ;-)</p>
<p>ps. as soon I will understand about flash capability on my device I will try to implement a custom Actionscript event for the orientation&#8230; something like DisplayEvent.DISPLAY_MODE_CHANGE</p>
<p>UPDATE: if you are unable to load  http://daveoncode.site90.net try http://andreacfm.com/dave/ (I have to thanks my friend Andrea Campolonghi for the space)</p>
<p>UPDATE 2: the script works even on Blackberry&#8217;s browser (as someone told me) :)</p>
<p>UPDATE 3: it works even on HTC devices (at this point the only problem is internet explorer mobile&#8230; I will investigate!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.daveoncode.com/2008/12/15/detecting-displays-orientation-change-on-mobile-devices-with-accelerometer-a-platform-indipendent-approach-n95-i900-iphone-with-javascript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
