<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2germanfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Dusty's</title><link>http://blog.phpaws.net</link><description></description><language>en</language><generator>http://wordpress.org/?v=2.7.1</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.0/</creativeCommons:license><image><link>http://blog.phpaws.net</link><url>http://feeds.feedburner.com/~fc/Phpaws?bg=FFAD00&amp;amp;fg=333333&amp;amp;anim=0</url><title>PHPaws.net</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Phpaws" type="application/rss+xml" /><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FPhpaws" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Phpaws" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FPhpaws" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FPhpaws" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FPhpaws" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FPhpaws" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://my.feedlounge.com/external/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FPhpaws" src="http://static.feedlounge.com/buttons/subscribe_0.gif">Subscribe with FeedLounge</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FPhpaws" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2FPhpaws" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FPhpaws" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://add.my.yahoo.com/content?lg=de&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FPhpaws" src="http://us.i1.yimg.com/us.yimg.com/i/de/my/addtomyyahoo4.gif">Subscribe with Mein Yahoo!</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Ubuntu + QEMU == Windows in a Box</title><link>http://feedproxy.google.com/~r/Phpaws/~3/EAn3FmzUW6s/</link><category>*buntu</category><category>*nix</category><category>de</category><category>qemu</category><category>ubuntu</category><category>windows</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dusty</dc:creator><pubDate>Tue, 28 Apr 2009 06:30:05 PDT</pubDate><guid isPermaLink="false">http://blog.phpaws.net/?p=313</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Triumph! :D</p>
<p style="text-align: center;"><a href="http://blog.phpaws.net/wp-content/uploads/2009/04/bildschirmfoto1.png"><img class="aligncenter size-medium wp-image-314" title="Windows in a Box" src="http://blog.phpaws.net/wp-content/uploads/2009/04/bildschirmfoto1-500x387.png" alt="Windows in a Box" width="500" height="387" /></a></p>
<p>Naja&#8230;beinahe! :)</p>
<p>Später mehr! ^_^</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Phpaws?a=EAn3FmzUW6s:2VspStPmhOY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=EAn3FmzUW6s:2VspStPmhOY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=EAn3FmzUW6s:2VspStPmhOY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=EAn3FmzUW6s:2VspStPmhOY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=EAn3FmzUW6s:2VspStPmhOY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=EAn3FmzUW6s:2VspStPmhOY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=EAn3FmzUW6s:2VspStPmhOY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=EAn3FmzUW6s:2VspStPmhOY:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=EAn3FmzUW6s:2VspStPmhOY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=EAn3FmzUW6s:2VspStPmhOY:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Phpaws/~4/EAn3FmzUW6s" height="1" width="1"/>]]></content:encoded><description>Triumph! :D

Naja&amp;#8230;beinahe! :)
Später mehr! ^_^</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.phpaws.net/2009/04/ubuntu-qemu-windows-in-a-box/feed/</wfw:commentRss><feedburner:origLink>http://blog.phpaws.net/2009/04/ubuntu-qemu-windows-in-a-box/</feedburner:origLink></item><item><title>Neuer Artikel von mir auf Thats-Life.net</title><link>http://feedproxy.google.com/~r/Phpaws/~3/Mlt3pnrfxZM/</link><category>de</category><category>thats-life.net</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dusty</dc:creator><pubDate>Mon, 13 Apr 2009 05:59:15 PDT</pubDate><guid isPermaLink="false">http://blog.phpaws.net/2009/04/neuer-artikel-von-mir-auf-thats-lifenet/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Da ich ja nun seit kurzem Co-Autor bei <a href="http://www.thats-life.net/">That&#8217;s-Life</a> bin. Spamme ich hier einfach mal ein bisschen dafür. ;)</p>
<p>Viel Spaß beim <a href="http://www.thats-life.net/?p=96">schmökern</a>!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Phpaws?a=Mlt3pnrfxZM:N4qm7YARTV4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=Mlt3pnrfxZM:N4qm7YARTV4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=Mlt3pnrfxZM:N4qm7YARTV4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=Mlt3pnrfxZM:N4qm7YARTV4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=Mlt3pnrfxZM:N4qm7YARTV4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=Mlt3pnrfxZM:N4qm7YARTV4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=Mlt3pnrfxZM:N4qm7YARTV4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=Mlt3pnrfxZM:N4qm7YARTV4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=Mlt3pnrfxZM:N4qm7YARTV4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=Mlt3pnrfxZM:N4qm7YARTV4:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Phpaws/~4/Mlt3pnrfxZM" height="1" width="1"/>]]></content:encoded><description>Da ich ja nun seit kurzem Co-Autor bei That&amp;#8217;s-Life bin. Spamme ich hier einfach mal ein bisschen dafür. ;)
Viel Spaß beim schmökern!</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.phpaws.net/2009/04/neuer-artikel-von-mir-auf-thats-lifenet/feed/</wfw:commentRss><feedburner:origLink>http://blog.phpaws.net/2009/04/neuer-artikel-von-mir-auf-thats-lifenet/</feedburner:origLink></item><item><title>Was zum Lachen: Edward Current</title><link>http://feedproxy.google.com/~r/Phpaws/~3/SalwZGtyRAA/</link><category>'Tube</category><category>de</category><category>en</category><category>lulz</category><category>zum Sehen</category><category>english</category><category>meine empfehlung</category><category>video</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dusty</dc:creator><pubDate>Sat, 11 Apr 2009 04:13:58 PDT</pubDate><guid isPermaLink="false">http://blog.phpaws.net/?p=303</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://www.youtube.com/user/EdwardCurrent" target="_blank">Edward Current</a>, einer meiner Lieblingscomedians auf Youtube! Übrigens nichts für streng gläubige Christen und/oder Leute die auf Holz-Hammer Humor á la Gabi Köster oder Atze Schröder stehen. :)<br />
<object width="425" height="355"><param name="movie" value="http://youtube.com/v/uvrm9E4fUGQ"></param><param name="wmode" value="transparent"></param><embed src="http://youtube.com/v/uvrm9E4fUGQ" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed><noembed><a href="http://youtube.com/watch?v=uvrm9E4fUGQ">http://youtube.com/watch?v=uvrm9E4fUGQ</a></noembed></object></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Phpaws?a=SalwZGtyRAA:zprbRTcfsVw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=SalwZGtyRAA:zprbRTcfsVw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=SalwZGtyRAA:zprbRTcfsVw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=SalwZGtyRAA:zprbRTcfsVw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=SalwZGtyRAA:zprbRTcfsVw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=SalwZGtyRAA:zprbRTcfsVw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=SalwZGtyRAA:zprbRTcfsVw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=SalwZGtyRAA:zprbRTcfsVw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=SalwZGtyRAA:zprbRTcfsVw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=SalwZGtyRAA:zprbRTcfsVw:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Phpaws/~4/SalwZGtyRAA" height="1" width="1"/>]]></content:encoded><description>Edward Current, einer meiner Lieblingscomedians auf Youtube! Übrigens nichts für streng gläubige Christen und/oder Leute die auf Holz-Hammer Humor á la Gabi Köster oder Atze Schröder stehen. :)
http://youtube.com/watch?v=uvrm9E4fUGQ</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.phpaws.net/2009/04/was-zum-lachen-edward-current/feed/</wfw:commentRss><feedburner:origLink>http://blog.phpaws.net/2009/04/was-zum-lachen-edward-current/</feedburner:origLink></item><item><title>Parameterübergabe an gettext Strings á la printf()</title><link>http://feedproxy.google.com/~r/Phpaws/~3/XpHputbrGj8/</link><category>HowTo</category><category>PHP</category><category>Programmierung</category><category>Tutorial</category><category>Webzwonull</category><category>de</category><category>innovativ</category><category>tutorial</category><category>web2.0</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dusty</dc:creator><pubDate>Thu, 09 Apr 2009 07:51:59 PDT</pubDate><guid isPermaLink="false">http://blog.phpaws.net/?p=283</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div style="border: 1px solid #FF0000; padding: 3px; width: 80%;">
<strong>HINWEIS:</strong> Um diesen Artikel zu verstehen und nutzen zu können sind Vorkenntnisse erforderlich die man <a href="http://blog.phpaws.net/2009/03/php-gettext-und-poedit-einrichten/" target="_blank">hier</a> erhalten kann!
</div>
<p>Ein Problem in das ich neulich gerannt bin ist die Übergabe von Parametern an Zeichenketten die von gettext verarbeitet werden.<br />
Man kennt das ja von printf() oder sprintf(). Zuerst der String den man verwursten will, dann die die Variablen die anstelle der Platzhalter eingefügt werden sollen.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;Ich habe %d Klimmz&amp;uuml;ge gemacht bevor ich diesen %s verfasst habe.&quot;</span><span class="sy0">,</span> <span class="nu0">20</span><span class="sy0">,</span> <span class="st0">&quot;Artikel&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Das ergibt im Idealfall sowas wie:</p>
<blockquote><p>Ich habe <em>20</em> Klimmzüge gemacht bevor ich diesen <em>Artikel</em> verfasst habe.</p></blockquote>
<p>Das erspart einem das Zerstückeln von Zeichenketten. Sowas wie&#8230;</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="kw3">_</span><span class="br0">&#40;</span><span class="st0">&quot;Ich habe&quot;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&#39; $ammount &#39;</span><span class="sy0">.</span>_<span class="br0">&#40;</span><span class="st0">&quot;Klimz&amp;uuml;ge gemacht bevor ich diesen&quot;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&#39; $string &#39;</span><span class="sy0">.</span>_<span class="br0">&#40;</span><span class="st0">&quot;verfasst habe.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>&#8230; ist sehr Kontraproduktiv wenn man einen sauberen Übersetzungskatalog haben möchte.</p>
<p>Nun unterstützt gettext leider diese Art von Parameterübergabe nicht. Glücklicherweise gibt es aber einen recht guten Work-Around, den ich direkt auf <a href="http://php.net" target="_blank">php.net</a> gefunden habe.</p>
<p>Folgende Funktion erledigt die &#8220;Drecksarbeit&#8221; für einen.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> _vars<span class="br0">&#40;</span><span class="re1">$string</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> &nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$arg</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re1">$i</span> <span class="sy0">=</span> <span class="nu0">1</span> <span class="sy0">;</span> <span class="re1">$i</span> <span class="sy0">&lt;</span> <span class="kw3">func_num_args</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re1">$i</span><span class="sy0">++</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$arg</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw3">func_get_arg</span><span class="br0">&#40;</span><span class="re1">$i</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw3">vsprintf</span><span class="br0">&#40;</span><span class="kw3">gettext</span><span class="br0">&#40;</span><span class="re1">$string</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="re1">$arg</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Nutzen tut man das ganze dann so:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">_vars<span class="br0">&#40;</span><span class="st0">&quot;Ich habe %1<span class="es0">\$</span>s Klimmz&amp;uuml;ge gemacht bevor ich diesen %2<span class="es0">\$</span>s verfasst habe.&quot;</span><span class="sy0">,</span> <span class="st0">&quot;20&quot;</span><span class="sy0">,</span> <span class="st0">&quot;Artikel&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<h4>poEdit nach diesen Strings suchen lassen</h4>
<p>poEdit findet natürlich diese &#8220;_vars&#8221;-Strings nicht auf Anhieb. Man kann poEdit aber ganz einfach dazu bringen indem man unter dem Abschnitt &#8220;Schlüsselwörter&#8221; in den Katalog-Optionen das Schlüsselwort &#8220;_vars&#8221; hinzufügt. Nach dem nächsten Scan findet poEdit dann auch diese Zeichenketten.</p>
<p>Man darf natürlich auch in der Übersetzung die <strong>Platzhalter nicht vergessen</strong>!  Allerdings in der Übersetzung bitte den <strong> Backslash &#8220;\&#8221; weglassen!</strong>. Also so &#8220;%1$1&#8243; statt so &#8220;%1\$1&#8243;. Anderenfalls weigert sich poEdit zu speichern und zerschießt unter Umständen den Katalog!</p>
<p>Fandest du diesen Artikel hilfreich oder hast einen Fehler gefunden, hinterlasse doch bitte einen Kommentar! :)</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Phpaws?a=XpHputbrGj8:BQGdJe2F1NQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=XpHputbrGj8:BQGdJe2F1NQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=XpHputbrGj8:BQGdJe2F1NQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=XpHputbrGj8:BQGdJe2F1NQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=XpHputbrGj8:BQGdJe2F1NQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=XpHputbrGj8:BQGdJe2F1NQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=XpHputbrGj8:BQGdJe2F1NQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=XpHputbrGj8:BQGdJe2F1NQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=XpHputbrGj8:BQGdJe2F1NQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=XpHputbrGj8:BQGdJe2F1NQ:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Phpaws/~4/XpHputbrGj8" height="1" width="1"/>]]></content:encoded><description>HINWEIS: Um diesen Artikel zu verstehen und nutzen zu können sind Vorkenntnisse erforderlich die man hier erhalten kann!

Ein Problem in das ich neulich gerannt bin ist die Übergabe von Parametern an Zeichenketten die von gettext verarbeitet werden.
Man kennt das ja von printf() oder sprintf(). Zuerst der String den man verwursten will, dann die die Variablen [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.phpaws.net/2009/04/parameterubergabe-an-gettext-strings-a-la-printf/feed/</wfw:commentRss><feedburner:origLink>http://blog.phpaws.net/2009/04/parameterubergabe-an-gettext-strings-a-la-printf/</feedburner:origLink></item><item><title>Neues aus dem Postfach</title><link>http://feedproxy.google.com/~r/Phpaws/~3/gT9gkYrENCc/</link><category>Alltag</category><category>de</category><category>füllstoff</category><category>lulz</category><category>nicht entblödet</category><category>dreist</category><category>entblödung</category><category>Gier</category><category>in Kürze</category><category>kommerz</category><category>spam</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dusty</dc:creator><pubDate>Wed, 01 Apr 2009 04:10:30 PDT</pubDate><guid isPermaLink="false">http://blog.phpaws.net/?p=277</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Heute neu im Spam-Ordner:</p>
<blockquote><p>Nachdem die Regierung erst kürzlich die staatliche Abwrackprämie über das Jahr 2009 hinaus verlängert hat, wurde nun auch ein Konjunkturpaket für die gebeutelte Tourismusindustrie beschlossen. Demnach darf jeder Bürger kostenlos eine Woche in ein 5-Sterne-Hotel in die Türkei inkl. Flug. Gezahlt werden müsse nur die Mehrwertsteuer in Höhe von 139 EUR. Zusätzlich wird ein Urlaubsgeld für 2010 gewährt. Die Aktion ist auf 100.000 Plätze begrenzt. Das Online Reisebüro Ab-in-den-Urlaub.de wurde exklusiv mit der Durchführung des Konjunkturpaketes beauftragt.</p></blockquote>
<p>Danke für diese erheiternde Mail lieber Herr <em>Thomas Wagner</em> von der <strong>Unister GmbH</strong> im  <strong>Barfußgäßchen 11</strong> in <strong>04109 Leipzig</strong>!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Phpaws?a=gT9gkYrENCc:LbJpADpcp14:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=gT9gkYrENCc:LbJpADpcp14:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=gT9gkYrENCc:LbJpADpcp14:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=gT9gkYrENCc:LbJpADpcp14:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=gT9gkYrENCc:LbJpADpcp14:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=gT9gkYrENCc:LbJpADpcp14:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=gT9gkYrENCc:LbJpADpcp14:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=gT9gkYrENCc:LbJpADpcp14:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=gT9gkYrENCc:LbJpADpcp14:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=gT9gkYrENCc:LbJpADpcp14:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Phpaws/~4/gT9gkYrENCc" height="1" width="1"/>]]></content:encoded><description>Heute neu im Spam-Ordner:
Nachdem die Regierung erst kürzlich die staatliche Abwrackprämie über das Jahr 2009 hinaus verlängert hat, wurde nun auch ein Konjunkturpaket für die gebeutelte Tourismusindustrie beschlossen. Demnach darf jeder Bürger kostenlos eine Woche in ein 5-Sterne-Hotel in die Türkei inkl. Flug. Gezahlt werden müsse nur die Mehrwertsteuer in Höhe von 139 EUR. Zusätzlich [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.phpaws.net/2009/04/neues-aus-dem-postfach/feed/</wfw:commentRss><feedburner:origLink>http://blog.phpaws.net/2009/04/neues-aus-dem-postfach/</feedburner:origLink></item><item><title>Schnee!</title><link>http://feedproxy.google.com/~r/Phpaws/~3/7_hNVoz2BWM/</link><category>Foto</category><category>Trivia</category><category>de</category><category>füllstoff</category><category>lulz</category><category>in Kürze</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dusty</dc:creator><pubDate>Wed, 25 Mar 2009 03:44:33 PDT</pubDate><guid isPermaLink="false">http://blog.phpaws.net/?p=268</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>&#8230;und das Ende März.<br />
Im Dezember hätte ich mich darüber ja gefreut wie ein kleines Kind. Aber Ende März steht mir der Sinn eher nach Frühling und Sonne&#8230; :(</p>
<div style="margin: 10px 0 0 0;">

<a href='http://blog.phpaws.net/2009/03/schnee/bild018/' title='bild018'><img src="http://blog.phpaws.net/wp-content/uploads/2009/03/bild018-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.phpaws.net/2009/03/schnee/bild014/' title='bild014'><img src="http://blog.phpaws.net/wp-content/uploads/2009/03/bild014-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.phpaws.net/2009/03/schnee/bild015/' title='bild015'><img src="http://blog.phpaws.net/wp-content/uploads/2009/03/bild015-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.phpaws.net/2009/03/schnee/bild016/' title='bild016'><img src="http://blog.phpaws.net/wp-content/uploads/2009/03/bild016-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.phpaws.net/2009/03/schnee/bild017/' title='bild017'><img src="http://blog.phpaws.net/wp-content/uploads/2009/03/bild017-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>

</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Phpaws?a=7_hNVoz2BWM:DeGwjiPBP9c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=7_hNVoz2BWM:DeGwjiPBP9c:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=7_hNVoz2BWM:DeGwjiPBP9c:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=7_hNVoz2BWM:DeGwjiPBP9c:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=7_hNVoz2BWM:DeGwjiPBP9c:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=7_hNVoz2BWM:DeGwjiPBP9c:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=7_hNVoz2BWM:DeGwjiPBP9c:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=7_hNVoz2BWM:DeGwjiPBP9c:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=7_hNVoz2BWM:DeGwjiPBP9c:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=7_hNVoz2BWM:DeGwjiPBP9c:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Phpaws/~4/7_hNVoz2BWM" height="1" width="1"/>]]></content:encoded><description>&amp;#8230;und das Ende März.
Im Dezember hätte ich mich darüber ja gefreut wie ein kleines Kind. Aber Ende März steht mir der Sinn eher nach Frühling und Sonne&amp;#8230; :(</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.phpaws.net/2009/03/schnee/feed/</wfw:commentRss><feedburner:origLink>http://blog.phpaws.net/2009/03/schnee/</feedburner:origLink></item><item><title>Lokalisation mit gettext und Smarty</title><link>http://feedproxy.google.com/~r/Phpaws/~3/X_dnaiIshpM/</link><category>HowTo</category><category>PHP</category><category>Programmierung</category><category>Techy</category><category>Tutorial</category><category>Webzwonull</category><category>de</category><category>howto</category><category>innovativ</category><category>tutorial</category><category>web2.0</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dusty</dc:creator><pubDate>Sat, 21 Mar 2009 06:34:01 PDT</pubDate><guid isPermaLink="false">http://blog.phpaws.net/?p=228</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Heute gibt&#8217;s den 2. Teil des <a href="http://blog.phpaws.net/2009/03/php-gettext-und-poedit-einrichten/" target="_blank">gettext Tutorial</a>s. :)</p>
<p>Es gibt viele verschiedene (komplizierte) Ansätze Smarty &#8220;mehrsprachig&#8221; zu nutzen. Vom zerlegen der TPL Datei via shell script, bis zu&#8230;ich weiß nicht was. Dabei gibt es eine recht einfache Möglichkeit, die ich jetzt mal vorstellen möchte.</p>
<p>Hat man gettext, setlocale und poEdit nach dem vorhergehenden <a href="http://blog.phpaws.net/2009/03/php-gettext-und-poedit-einrichten/" target="_blank">Tutorial</a> eingerichtet, legt man eine neue PHP Datei an. Ich habe die mal <em>smarty.i18n.php</em> genannt. Sie beherbergt die zu übersetzenden Strings und sieht ungefähr so aus:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Alle Strings in ein array packen. </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Und dabei nicht vergessen den eigentlichen String </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// über gettext zu übergeben. z.B. _(&quot;Hallo&quot;) </span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$template_i18n</span><span class="br0">&#91;</span><span class="st0">&#39;hello&#39;</span><span class="br0">&#93;</span> <span class="sy0">.=</span> _<span class="br0">&#40;</span><span class="st0">&quot;Hallo&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$template_i18n</span><span class="br0">&#91;</span><span class="st0">&#39;you&#39;</span><span class="br0">&#93;</span> <span class="sy0">.=</span> _<span class="br0">&#40;</span><span class="st0">&quot;Du&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$template_i18n</span><span class="br0">&#91;</span><span class="st0">&#39;choose&#39;</span><span class="br0">&#93;</span> <span class="sy0">.=</span> _<span class="br0">&#40;</span><span class="st0">&quot;Bitte w&amp;auml;hle&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$template_i18n</span><span class="br0">&#91;</span><span class="st0">&#39;yes&#39;</span><span class="br0">&#93;</span> <span class="sy0">.=</span> _<span class="br0">&#40;</span><span class="st0">&quot;Ja&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$template_i18n</span><span class="br0">&#91;</span><span class="st0">&#39;no&#39;</span><span class="br0">&#93;</span> <span class="sy0">.=</span> _<span class="br0">&#40;</span><span class="st0">&quot;Nein&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$template_i18n</span><span class="br0">&#91;</span><span class="st0">&#39;or&#39;</span><span class="br0">&#93;</span> <span class="sy0">.=</span> _<span class="br0">&#40;</span><span class="st0">&quot;oder&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Array einer Smarty Variable zuweisen</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$smarty</span><span class="sy0">-&gt;</span><span class="me1">assign</span><span class="br0">&#40;</span><span class="st0">&quot;lang&quot;</span><span class="sy0">,</span> <span class="re1">$template_i18n</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Hat man dann einen scan mit poEdit gemacht und die neuen Strings übersetzt, kann man sich an das Template machen (die Smarty TPL Datei).</p>
<div class="geshi no html">
<ol>
<li class="li1">
<div class="de1">&lt;html&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;&lt;body&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;p&gt;{$lang.hello} {$lang.you}!&lt;/p&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;p&gt;{$lang.choose} {$lang.yes} {$lang.or} {$lang.no}.&lt;/p&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;&lt;/body&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/html&gt;</div>
</li>
</ol>
</div>
<p>Ergibt dann sowas wie:<br />
<em>Hallo Du!<br />
Bitte wähle Ja oder Nein.</em></p>
<p>Ins Englische übersetzt ergibt das dann (nicht ganz korrekt):<br />
<em>Hello you!<br />
Please choose yes or no.</em></p>
<p><strong>Hinweis:</strong><span style="color:#F00; font-weight: bold;"> Bitte denkt daran die <em>&#8220;smarty.i18n.php&#8221;</em> per <em>require_once</em> oder <em>include_once</em> einzubinden bevor die Templates verarbeitet werden. Ansonsten steht das {$lang.} Array nicht zur Verfügung.</span></p>
<p>Ich hoffe ich konnte ein paar Leuten mit diesem Tutorial helfen. :)<br />
Viel Spaß beim programmieren!<br />
Dusty :)</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Phpaws?a=X_dnaiIshpM:P5BYpz2U37g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=X_dnaiIshpM:P5BYpz2U37g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=X_dnaiIshpM:P5BYpz2U37g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=X_dnaiIshpM:P5BYpz2U37g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=X_dnaiIshpM:P5BYpz2U37g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=X_dnaiIshpM:P5BYpz2U37g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=X_dnaiIshpM:P5BYpz2U37g:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=X_dnaiIshpM:P5BYpz2U37g:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=X_dnaiIshpM:P5BYpz2U37g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=X_dnaiIshpM:P5BYpz2U37g:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Phpaws/~4/X_dnaiIshpM" height="1" width="1"/>]]></content:encoded><description>Heute gibt&amp;#8217;s den 2. Teil des gettext Tutorials. :)
Es gibt viele verschiedene (komplizierte) Ansätze Smarty &amp;#8220;mehrsprachig&amp;#8221; zu nutzen. Vom zerlegen der TPL Datei via shell script, bis zu&amp;#8230;ich weiß nicht was. Dabei gibt es eine recht einfache Möglichkeit, die ich jetzt mal vorstellen möchte.
Hat man gettext, setlocale und poEdit nach dem vorhergehenden Tutorial eingerichtet, legt [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.phpaws.net/2009/03/lokalisation-mit-gettext-und-smarty/feed/</wfw:commentRss><feedburner:origLink>http://blog.phpaws.net/2009/03/lokalisation-mit-gettext-und-smarty/</feedburner:origLink></item><item><title>PHP gettext und poEdit einrichten</title><link>http://feedproxy.google.com/~r/Phpaws/~3/k0oa9p4dkr8/</link><category>HowTo</category><category>PHP</category><category>Programmierung</category><category>Tutorial</category><category>de</category><category>howto</category><category>innovativ</category><category>tutorial</category><category>windows</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dusty</dc:creator><pubDate>Fri, 13 Mar 2009 06:13:11 PDT</pubDate><guid isPermaLink="false">http://blog.phpaws.net/?p=179</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><div class='postTabs_divs postTabs_curr_div' id='postTabs_0_179'>
<span class='postTabs_titles'><b>Locales</b></span></p>
<p>Für alle die ihren Webauftritt Mehrsprachig gestalten wollen stellt sich wohl schon ganz am Anfang die Frage nach dem &#8220;<em>Wie</em>&#8220;. <a href="http://pear.php.net/package/Translation2" target="_blank">PHP::Translator2</a> kam für mich nicht in Frage, da es - auch ohne es wirklich jemals probiert zu haben - sehr überladen und aufgeblasen aussieht.</p>
<p>Zum Glück kommt PHP mit einem netten Tool namens <a href="http://de3.php.net/manual/de/book.gettext.php" target="_blank">gettext</a> daher. Genauer gesagt ist <em>gettext </em>eine Erweiterung für PHP, die das UNIX <a href="http://www.gnu.org/software/gettext/manual/gettext.html" target="_blank">Kommandozeilentool gettext</a> benutzt.</p>
<h3>• Locales</h3>
<p>Allerdings gibt es hier wie auch anderswo Fallstricke die es zu umgehen gilt. Da gettext ein Systemaufruf ist, der auf die auf dem System installierten <em>locales</em> beruht, kann man natürlich auch nur zu einer <em>locale </em>umschalten die auch auf dem System vorhanden ist.<br />
Glücklicherweise lassen sich <em>locales</em> recht einfach einrichten. Auf Debian Systemen hilft folgender Befehl.</p>
<div class="geshi no shell">
<ol>
<li class="li1">
<div class="de1">$ dpkg-reconfigure locales</div>
</li>
</ol>
</div>
<p>Auf der Oberfläche kann man nun die gewünschten <em>locales </em>einrichten. Auf dem nächsten Bildschirm dann noch die Standard locale auswählen (für Deutschland meist <em>de_DE@euro</em>).</p>
<p>Nun braucht man noch ein Tool mit welchem man die eigentliche <em>locale</em>-Datei erstellt. Programm der Wahl ist hier für mich <a href="http://poedit.net/" target="_blank">poEdit</a>.</p>
<p></div>

<div class='postTabs_divs' id='postTabs_1_179'>
<span class='postTabs_titles'><b>poEdit einrichten</b></span></p>
<h3>• poEdit</h3>
<p>Die Einrichtung eines sog. Katalogs ist ein wenig &#8220;ungewohnt&#8221; aber nach 2-3 Fehlversuchen hat auch das geklappt.
<a href='http://blog.phpaws.net/2009/03/php-gettext-und-poedit-einrichten/poedit/' title='poedit'><img src="http://blog.phpaws.net/wp-content/uploads/2009/03/poedit-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.phpaws.net/2009/03/php-gettext-und-poedit-einrichten/poedit_1/' title='poedit_1'><img src="http://blog.phpaws.net/wp-content/uploads/2009/03/poedit_1-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.phpaws.net/2009/03/php-gettext-und-poedit-einrichten/poedit_2/' title='poedit_2'><img src="http://blog.phpaws.net/wp-content/uploads/2009/03/poedit_2-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.phpaws.net/2009/03/php-gettext-und-poedit-einrichten/poedit_3/' title='poedit_3'><img src="http://blog.phpaws.net/wp-content/uploads/2009/03/poedit_3-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
</p>
<p>Ich beschreibe hier mal kurz die Einrichtung eines Katalogs mit poEdit unter WindowsXP. Ganz links sieht man das Hauptfenster von poEdit. Zur Installation selber brauche ich wohl nicht viel zu sagen. Ist relativ unspektakulär.</p>
<p>Einen neuen Katalog erstellt man über &#8220;<span style="color: #a52a2a;">Datei -&gt; Neuer Katalog</span>&#8220;. Die ersten 3 Dialogfelder erklären sich von selbst. &#8220;<span style="color: #a52a2a;">Sprache</span>&#8221; ist die Ziel-Sprache, also die Sprache in die ihr eure Seite übersetzen wollt.  &#8220;<span style="color: #a52a2a;">Zeichensatz</span>&#8221; beschreibt den Zeichensatz eurer Ziel-Sprache. Für Europa ist meist &#8220;ISO-8859-1&#8243; oder &#8220;UTF-8&#8243; korrekt. Solltet jemand in eine exotischere Sprache übersetzen wollen, sollte man sich vorher über den korrekten Zeichensatz informieren. &#8220;<span style="color: #a52a2a;">Zeichensatz des Quellcodes</span>&#8221; ist auch wieder selbsterklärend (für Deutschland &#8220;ISO-8859-1&#8243; oder &#8220;UTF-8&#8243;).</p>
<p>Im Tab &#8220;<span style="color: #a52a2a;">Pfade</span>&#8221; gibt man den Pfad an in dem poEdit nach zu übersetzenden Zeichenketten suchen soll. poEdit sucht alle Verzeichnisse ab die unterhalb des angegeben Pfads liegen. poEdit erwartet das man den <strong>Pfad relativ zur Sprachdatei angibt(!!!)</strong>.</p>
<p>Liegt die Sprachdatei also in &#8220;C:\Webseite\locales\en_GB\LC_MESSAGES\messages.po&#8221;, lautet der Pfad &#8220;<span style="color: #a52a2a;">../../../</span>&#8220;. Sollte es beim ersten mal nicht klappen und poEdit nichts finden, einfach mal ein &#8220;../&#8221; weglassen oder hinzufügen und neu scannen lassen. :)</p>
<p>Man kann alternativ auch den Windows Pfad zum Verzeichnis angeben. Aber irgendwie schein das, bei mir, nicht immer zu funktionieren.</p>
<p>Nun zum Tab &#8220;<span style="color: #a52a2a;">Schlüsselwörter</span>&#8221; hier kann man die Funktionsnamen eingeben nach denen poEdit in den PHP Dateien suchen soll. Um z.B. nicht jedes mal gettext schreiben zu müssen bietet PHP von Haus aus den Alias &#8220;_&#8221; (Unterstrich) an. Ein gettext Aufruf in PHP sieht dann z.B. so aus:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="kw3">_</span><span class="br0">&#40;</span><span class="st0">&quot;Hallo Welt!&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Soweit so gut. Wenn das alles erledigt ist, könnt ihr das erst mal einen Scan machen. Alles was poEdit dabei findet wird in die obere Liste eingetragen. Um einen String zu übersetzen; einfach anklicken und die Übersetzung in das untere Feld eingeben. Zum Schluss den Katalog speichern und die Datei auf den Server laden. poEdit hat damit seinen Job erledigt, weiter zu gettext! :)</p>
<p></div>

<div class='postTabs_divs' id='postTabs_2_179'>
<span class='postTabs_titles'><b>gettext einrichten</b></span></p>
<h3>• gettext einrichten</h3>
<p>Jetzt geht&#8217;s endlich los mit gettext!</p>
<p>Bitte beachtet, dass ich hier nur <span style="text-decoration: underline;"><strong>meinen Lösungsansatz</strong></span> anbiete! Auf Kommentare wie: &#8220;&#8230;man bist du blöd, ich hab das alles schon vor Jahren viel besser gelöst.&#8221; kann ich gut verzichten. ^_^ <span style="text-decoration: underline;"><strong>Konstruktive Kommentare sind aber Willkommen!</strong></span></p>
<p>Sobald ihr die locales wie oben beschrieben eingerichtet habt, müsst ihr PHP dazu bringen sie auch einzusetzen. Mein Server läuft auf <em>Debian etch</em>. Sollte es bei euch nicht funktionieren, liegt das eventuell an eurem Betriebssystem.</p>
<p>Ich habe mich dazu entschieden ein <a href="http://de.php.net/manual/de/reserved.variables.cookies.php" target="_blank">Cookie</a> zu nutzen um die <em>locale</em> dauerhaft zu setzen.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Prüft auf ein existierendes Cookie oder ob eine locale </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// per URL übergeben wurde.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">isset</span><span class="br0">&#40;</span><span class="re1">$_GET</span><span class="br0">&#91;</span><span class="st0">&quot;locale&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="sy0">||</span> <span class="sy0">!</span><span class="re1">$_COOKIE</span><span class="br0">&#91;</span><span class="st0">&#39;locale&#39;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Setzt die übergebene locale oder falls nichts übergeben wurde</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// &#39;de_DE&#39; als Standard locale</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$locale</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="re1">$_GET</span><span class="br0">&#91;</span><span class="st0">&quot;locale&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> ? <span class="re1">$_GET</span><span class="br0">&#91;</span><span class="st0">&quot;locale&quot;</span><span class="br0">&#93;</span><span class="sy0">:</span> <span class="st0">&#39;de_DE&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Setzt das locale Cookie</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// time()+(60*60*24*365) == 1 Jahr Laufzeit</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">setcookie</span><span class="br0">&#40;</span><span class="st0">&quot;locale&quot;</span><span class="sy0">,</span> <span class="re1">$locale</span><span class="sy0">,</span> <span class="kw3">time</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">+</span><span class="br0">&#40;</span><span class="nu0">60</span><span class="sy0">*</span><span class="nu0">60</span><span class="sy0">*</span><span class="nu0">24</span><span class="sy0">*</span><span class="nu0">365</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="st0">&quot;/&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Springt zurück zur Startseite</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Location: http://deineWebsite.de/&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Nun zur eigentlichen Umschaltung der locale.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$locale</span> <span class="sy0">=</span> <span class="re1">$_COOKIE</span><span class="br0">&#91;</span><span class="st0">&#39;locale&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">setlocale</span><span class="br0">&#40;</span>LC_MESSAGES<span class="sy0">,</span> <span class="re1">$locale</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">setlocale</span><span class="br0">&#40;</span>LC_CTYPE<span class="sy0">,</span> <span class="re1">$locale</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">setlocale</span><span class="br0">&#40;</span>LC_NUMERIC<span class="sy0">,</span> <span class="st0">&quot;C&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">bindtextdomain</span><span class="br0">&#40;</span><span class="st0">&quot;messages&quot;</span><span class="sy0">,</span> <span class="st0">&quot;./locale&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">textdomain</span><span class="br0">&#40;</span><span class="st0">&quot;messages&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Wichtig hierbei ist das <strong>LC_NUMERIC</strong> auf &#8220;C&#8221; gesetzt wird um die Zahlenformate nicht zu beeinflussen.<br />
<em>blindtextdomain</em> und <em>textdomain</em> zeigen beide auf die Sprachdatei in eurem &#8220;./locales/&#8230;/LC_MESSAGES/&#8221; Verzeichnis.</p>
<p>Dank des ersten Code-Schnipsels kann man nun ganz einfach zwischen den verschiedenen locales umschalten. </p>
<div class="geshi no html">
<ol>
<li class="li1">
<div class="de1">&lt;!&#8211; So z.B. wechselt man zu Englisch &#8211;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;a href=&quot;http://deinWebsite.de/?locale=en_GB&quot;&gt;Englisch&lt;/a&gt;</div>
</li>
</ol>
</div>
<p>Dank des Cookies bleibt diese Umstellung permanent bis zum nächsten Wechsel.</p>
<p></div>

<div class='postTabs_divs' id='postTabs_3_179'>
<span class='postTabs_titles'><b>gettext benutzen</b></span></p>
<h3>• gettext benutzen</h3>
<p>Nun kommt der Fun Teil!<br />
Einmal eingerichtet ist gettext ganz einfach zu benutzen.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Eine direkte Ausgabe</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="kw3">_</span><span class="br0">&#40;</span><span class="st0">&quot;Mich kann man übersetzen&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &#8230;über eine Variable</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string</span> <span class="sy0">=</span> <span class="kw3">_</span><span class="br0">&#40;</span><span class="st0">&quot;Mich kann man auch übersetzen&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// oder wie auch immer es euch gefällt&#8230; ;)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Output:</p>
<div class="geshi no shell">
<ol>
<li class="li1">
<div class="de1">de_DE : Mich kann man übersetzen
</div>
</li>
<li class="li1">
<div class="de1">en_GB : You can translate me
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">de_DE : Mich kann man auch übersetzen
</div>
</li>
<li class="li1">
<div class="de1">en_GB : You can translate me too</div>
</li>
</ol>
</div>
<p>Hat man einen neuen String eingeführt, lässt man einfach einmal poEdit darüber laufen, übersetzt die neuen Strings und lädt die neue Sprachdatei auf den Server. Schon hat man die neuen Strings übersetzt. :) </p>
<p><strong>Ein Hinweis zum Schluss</strong>. <em>gettext</em> bietet auch die Möglichkeit Pluralformen zu verarbeiten. Allerdings ist dazu <em>printf()</em> nötig. Leider verbietet die Nutzung von <em>Smarty</em> die Nutzung von <em>printf()</em> da es dazu tendiert einem das Layout zu zerschießen.</p>
<p>Nun viel Spaß beim Übersetzen!</p>
<p>Dusty ^^</p>
<p><span style="color:#686868; font-size: 10px;"><br />
Quellen:<br />
[<a href="http://mel.melaxis.com/devblog/2005/08/06/localizing-php-web-sites-using-gettext/" target="_blank">pablo hoch - development blog</a> - englisches gettext Tutorial]<br />
</span><br />
</div>

</p>
<script type='text/javascript'>jQuery(document).ready(function() { if(postTabs_getCookie('postTabs_179')) postTabs_show(postTabs_getCookie('postTabs_179'),179); });</script><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Phpaws?a=k0oa9p4dkr8:UiNNV2I96p8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=k0oa9p4dkr8:UiNNV2I96p8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=k0oa9p4dkr8:UiNNV2I96p8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=k0oa9p4dkr8:UiNNV2I96p8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=k0oa9p4dkr8:UiNNV2I96p8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=k0oa9p4dkr8:UiNNV2I96p8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=k0oa9p4dkr8:UiNNV2I96p8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=k0oa9p4dkr8:UiNNV2I96p8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=k0oa9p4dkr8:UiNNV2I96p8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=k0oa9p4dkr8:UiNNV2I96p8:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Phpaws/~4/k0oa9p4dkr8" height="1" width="1"/>]]></content:encoded><description>Locales
Für alle die ihren Webauftritt Mehrsprachig gestalten wollen stellt sich wohl schon ganz am Anfang die Frage nach dem &amp;#8220;Wie&amp;#8220;. PHP::Translator2 kam für mich nicht in Frage, da es - auch ohne es wirklich jemals probiert zu haben - sehr überladen und aufgeblasen aussieht.
Zum Glück kommt PHP mit einem netten Tool namens gettext daher. Genauer [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.phpaws.net/2009/03/php-gettext-und-poedit-einrichten/feed/</wfw:commentRss><feedburner:origLink>http://blog.phpaws.net/2009/03/php-gettext-und-poedit-einrichten/</feedburner:origLink></item><item><title>Ich tu wieder PHP ;)</title><link>http://feedproxy.google.com/~r/Phpaws/~3/axEoCvzyZUI/</link><category>PHP</category><category>Programmierung</category><category>Webzwonull</category><category>de</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dusty</dc:creator><pubDate>Wed, 11 Mar 2009 18:13:58 PDT</pubDate><guid isPermaLink="false">http://blog.phpaws.net/?p=147</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Ja&#8230;heute mal wieder was zum Thema PHP. ;)<br />
Ich sitze mal wieder an einem kleinen Community-Projekt und da ich mich gerade ziemlich <a href="http://de.wikipedia.org/wiki/Objektorientierte_Programmierung" target="_blank">OOP</a> fühle und sich PHP seit Version 5 auch in OOP versucht habe ich mir ein kleines PHPäckchen geschnürt. Zur Zeit bestehend aus:</p>
<ul>
<li><a href="http://pear.php.net/manual/en/package.authentication.auth.php" target="_blank">PEAR::Auth</a></li>
<li><a href="http://pear.php.net/package/MDB2" target="_blank">PEAR::MDB2</a></li>
<li><a href="http://smarty.net" target="_blank">Smarty</a></li>
<li>und <a href="http://de3.php.net/manual/de/book.gettext.php" target="_blank">gettext</a> für die Mehrsprachigkeit</li>
</ul>
<p>PEAR::Auth scheint eine nette Methode zu sein eine Userverwaltung samt Login-System aufzubauen, ohne sich großartig selbst mit Sessionverwaltung und Konsorten herumquälen zu müssen.</p>
<p>PEAR::MDB2 ist so eine Sache. Einerseits ist es in Verbindung mit <a href="http://de3.php.net/mysqli" target="_blank">mysqli</a> wirklich schnell! Andererseits ist es SEHR gewöhnungsbedürftig wenn man bis jetzt nur mit dem PHP Urgestein <a href="http://de3.php.net/mysql" target="_blank">mysql</a> gewerkelt hat.</p>
<p>Und Konstrukte á la:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">mdb</span> <span class="sy0">=&amp;</span> MDB2<span class="sy0">::</span><span class="me2">singleton</span><span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">dsn</span><span class="sy0">,</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">options</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">mdb</span><span class="sy0">-&gt;</span><span class="me1">setOption</span><span class="br0">&#40;</span><span class="st0">&#39;quote_identifier&#39;</span><span class="sy0">,</span> <span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span>PEAR<span class="sy0">::</span><span class="me2">isError</span><span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">mdb</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw3">trigger_error</span><span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">mdb</span><span class="sy0">-&gt;</span><span class="me1">getMessage</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&#39;,&#39;</span><span class="sy0">.</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">mdb</span><span class="sy0">-&gt;</span><span class="me1">getDebugInfo</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>&#8230;sind zwar einleuchtend und praktisch. Aber als Einsteiger steht man da wie der Esel vorm Berg. Zumindest ging es mir so. :)</p>
<p>Total begeistert bin ich Momentan von gettext! Man braucht zwar ein kleines (kostenloses) <a href="http://www.poedit.net/" target="_blank">Tool</a> und 1-2 Tricks um es richtig nutzen zu können. Aber wenn es erstmal läuft ist der Rest Marmelade! :) Glücklicherweise gibt es ein recht <a href="http://mel.melaxis.com/devblog/2005/08/06/localizing-php-web-sites-using-gettext/" target="_blank">gutes Tutorial</a> zum Einbau von gettext. Recht einfach gehalten aber ausreichend für die ersten Erfolge.</p>
<p>Zu Smarty und zu gettext werde ich die Tage noch eigene Beiträge schreiben. Das würde den Rahmen sprengen, wenn ich alles hier rein packen würde. :P</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Phpaws?a=axEoCvzyZUI:QBoU0WmdzTQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=axEoCvzyZUI:QBoU0WmdzTQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=axEoCvzyZUI:QBoU0WmdzTQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=axEoCvzyZUI:QBoU0WmdzTQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=axEoCvzyZUI:QBoU0WmdzTQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=axEoCvzyZUI:QBoU0WmdzTQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=axEoCvzyZUI:QBoU0WmdzTQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=axEoCvzyZUI:QBoU0WmdzTQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=axEoCvzyZUI:QBoU0WmdzTQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=axEoCvzyZUI:QBoU0WmdzTQ:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Phpaws/~4/axEoCvzyZUI" height="1" width="1"/>]]></content:encoded><description>Ja&amp;#8230;heute mal wieder was zum Thema PHP. ;)
Ich sitze mal wieder an einem kleinen Community-Projekt und da ich mich gerade ziemlich OOP fühle und sich PHP seit Version 5 auch in OOP versucht habe ich mir ein kleines PHPäckchen geschnürt. Zur Zeit bestehend aus:

PEAR::Auth
PEAR::MDB2
Smarty
und gettext für die Mehrsprachigkeit

PEAR::Auth scheint eine nette Methode zu sein eine [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.phpaws.net/2009/03/ich-tu-wieder-php/feed/</wfw:commentRss><feedburner:origLink>http://blog.phpaws.net/2009/03/ich-tu-wieder-php/</feedburner:origLink></item><item><title>Update zur Festnahme von Mark Bunker</title><link>http://feedproxy.google.com/~r/Phpaws/~3/ZeOcv6BSy80/</link><category>Anonymous</category><category>Scientology</category><category>de</category><category>en</category><category>kaputt</category><category>lulz</category><category>dreist</category><category>english</category><category>video</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dusty</dc:creator><pubDate>Thu, 26 Feb 2009 04:45:19 PST</pubDate><guid isPermaLink="false">http://blog.phpaws.net/?p=126</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Es hat den Anschein als wäre Mark Bunker nich für &#8220;unerlaubtes&#8221; Protestieren auf Scientology Eigentum festgenommen wurden sondern weil er durch den Protest die Einfahrt zu deren Grundstück blockiert hat.</p>
<p>Zuerst klingt das auch wie ein &#8220;vernünftiger&#8221; Grund jemanden in Arrest zu nehmen und der Polizist der die Verhandlungen führt scheint zu Beginn auch sehr um eine Lösung bemüht zu sein. Allerdings verliert sich dieser Eindruck nach der 8. Video-Minute.<br />
<object width="400" height="302" data="http://vimeo.com/moogaloop.swf?clip_id=3362597&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=3362597&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /></object></p>
<p>Auch mal wieder &#8220;schön&#8221; <a href="http://en.wikipedia.org/wiki/Thomas_W._Davis" target="_blank">Tommy Davis</a> in Aktion zu sehen&#8230;lulz&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Phpaws?a=ZeOcv6BSy80:JkcN9cbnH1Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=ZeOcv6BSy80:JkcN9cbnH1Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=ZeOcv6BSy80:JkcN9cbnH1Y:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=ZeOcv6BSy80:JkcN9cbnH1Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=ZeOcv6BSy80:JkcN9cbnH1Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=ZeOcv6BSy80:JkcN9cbnH1Y:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=ZeOcv6BSy80:JkcN9cbnH1Y:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=ZeOcv6BSy80:JkcN9cbnH1Y:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Phpaws?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Phpaws?a=ZeOcv6BSy80:JkcN9cbnH1Y:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Phpaws?i=ZeOcv6BSy80:JkcN9cbnH1Y:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Phpaws/~4/ZeOcv6BSy80" height="1" width="1"/>]]></content:encoded><description>Es hat den Anschein als wäre Mark Bunker nich für &amp;#8220;unerlaubtes&amp;#8221; Protestieren auf Scientology Eigentum festgenommen wurden sondern weil er durch den Protest die Einfahrt zu deren Grundstück blockiert hat.
Zuerst klingt das auch wie ein &amp;#8220;vernünftiger&amp;#8221; Grund jemanden in Arrest zu nehmen und der Polizist der die Verhandlungen führt scheint zu Beginn auch sehr um [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.phpaws.net/2009/02/update-zur-festnahme-von-mark-bunker/feed/</wfw:commentRss><feedburner:origLink>http://blog.phpaws.net/2009/02/update-zur-festnahme-von-mark-bunker/</feedburner:origLink></item></channel></rss>
