<?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>onlinecasinodemar.com &#187; Übersetzung</title>
	<atom:link href="http://www.onlinecasinodemar.com/tag/uebersetzung/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.onlinecasinodemar.com</link>
	<description>WordPress Themes &#38; Webdesign</description>
	<lastBuildDate>Wed, 05 Oct 2011 13:04:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<meta name="generator" content="webdemar 3.0" />
		<item>
		<title>Tutorial: WordPress-Themes lokalisieren</title>
		<link>http://www.onlinecasinodemar.com/wordpress/tutorial-wordpress-themes-lokalisieren/</link>
		<comments>http://www.onlinecasinodemar.com/wordpress/tutorial-wordpress-themes-lokalisieren/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 11:47:33 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Funktionen]]></category>
		<category><![CDATA[Übersetzung]]></category>
		<category><![CDATA[Lokalisierung]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WordPress Themes]]></category>

		<guid isPermaLink="false">http://www.onlinecasinodemar.com/?p=666</guid>
		<description><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/11/wordpress.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress" title="wordpress" />Die Lokalisierung / &#220;bersetzung von WordPress-Themes ist eine von mir bisher str&#228;flich wenig beachtete Funktion von WordPress. Dabei kann man mit einem relativ geringen Mehraufwand einen geh&#246;rigen Mehrwert in Sachen Interantionalisierung von Themes schaffen. Warum lokalisieren? Die Vorteile, den kleinen Mehraufwand bei der Erstellung eines WordPress-Themes in Kauf zu nehmen und dieses zu lokalisieren, liegen [...]]]></description>
			<content:encoded><![CDATA[<img width="280" height="210" src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/11/wordpress.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress" title="wordpress" /><p>Die Lokalisierung / &#220;bersetzung von WordPress-Themes ist eine von mir bisher str&#228;flich wenig beachtete Funktion von WordPress. Dabei kann man mit einem relativ geringen Mehraufwand einen geh&#246;rigen Mehrwert in Sachen Interantionalisierung von Themes schaffen.<span id="more-666"></span></p>
<h3 class="clear">Warum lokalisieren?</h3>
<p>Die Vorteile, den kleinen Mehraufwand bei der Erstellung eines WordPress-Themes in Kauf zu nehmen und dieses zu lokalisieren, liegen auf der Hand. Mit gesonderten Sprachdateien l&#228;sst sich das Theme unabh&#228;ngig vom Quellcode, den man daf&#252;r dann nicht mehr anr&#252;hren muss, in beliebig viele Sprachen &#252;bersetzen.</p>
<p>Die WordPress-Installation selbst ist in Sachen Intarnationalisierung und &#220;bersetzung schon weit gediehen und es gibt bereits <a href="http://codex.wordpress.org/WordPress_in_Your_Language">unz&#228;hlige &#220;bersetzungen</a> f&#252;r den WordPress-Admin. Dann sollten wir beim Theme nicht aufh&#246;ren.</p>
<h3>WordPress verwendet GetText:</h3>
<p>Um WordPress-Themes zu lokalisieren verwendet WordPress eine &#220;bersetzungsanwendung namens GetText. Mit dieser Anwendung ist es relativ einfach, WordPress zusagen, was wo und womit &#252;bersetzt werden soll. Mehr dazu im Detail.</p>
<h3>HTML-Strings &#252;bersetzbar machen:</h3>
<p>Nehmen wir an, wir wollen in userem Theme einen Titel der Sidebar &#252;bersetzen. Dort steht im Quellcode folgendes:</p>
<pre><code>&lt;h4&gt;Recent Articles&lt;/h4&gt;</code></pre>
<p>Um diesen HTML-String nun per GetText &#252;bersetzbar zu machen, m&#252;ssen wir ihn in einen GetText-Call packen, den viele Theme-Designer von Euch sicherlich schon gesehen haben und der wie folgt aussieht:</p>
<pre><code>&lt;h4&gt;&lt;?php _e('Recent Articles', my_theme_name); ?&gt;&lt;/h4&gt;</code></pre>
<p>Bemerkung:<br />
Hiermit rufen wir die GetText-Funktion _e() auf und sagen ihr, was womit &#252;bersetzt werden soll und dass die &#220;bersetzung an dieser Stelle ausgegeben werden soll (PHP: echo). Der erste Parameter in der Klammer sagt, was &#252;bersetzt werden soll und der zweite (my_theme_name) sagt WordPress, wo die &#220;bersetzung zu finden ist (dazu sp&#228;ter mehr),</p>
<h3>GetText in WordPress-Funktionen:</h3>
<p>Sicherlich sind Euch auch schon WordPress-Funktionen bekannt, in denen verschiedene Strings verarbeitet werden. Ein Beispiel ist der Aufruf der Anzahl der Kommentare:</p>
<pre><code>&lt;?php comments_number(__('No comments',my_theme_name), __('One comment',my_theme_name), __( '% comments',my_theme_name) );?&gt;</code></pre>
<p>Bemerkung:<br />
In der Funktion comments_number() k&#246;nnen wir drei Strings f&#252;r drei m&#246;gliche F&#228;lle &#252;bergeben (kein, 1 und x Kommentare). Wie ihr vielleicht seht, rufen wir jedoch jetzt die GetText-Funktion __() auf. Auch diese sagt WordPress was womit &#252;bersetzt werden soll, doch nun wird die &#220;bersetzung an dieser Stelle nicht ausgegeben (PHP: kein echo), sondern kann als String von PHP weiterverarbeitet werden.</p>
<h3>Text-Domains:</h3>
<p>Der Name ist ein wenig irref&#252;hrend. Es geht um den zweiten Parameter in den GetText-Calls (my_theme_name). Dieser ist optional und hilft WordPress die richtige &#220;bersetzung zu finden. Es kann n&#228;mlich vorkommen, dass z. B. in einem Plugin, das wir verwenden, der gleiche String &#252;bersetzt werden soll. Mit unserer eindeutigen Text-Domain k&#246;nnen wir klar bestimmen, welche &#220;bersetzung gew&#228;hlt werden soll. Die Text-Domain kann der Theme-Name sein, mit dem man auch den Theme-Ordner benannt hat (z. B. &#8216;decoder&#8217; oder &#8216;my_theme_name&#8217;).</p>
<h3>Vorbereiten und Erstellen der Sprachdatei:</h3>
<p>Angenommen wir haben jetzt &#252;berall in unseren Theme diese zu &#252;bersetzenden Strings verteilt. Als n&#228;chstes wollen wir diese in einer Liste ausgeben, um sie weiterverarbeiten zu k&#246;nnen.</p>
<div id="attachment_676" class="wp-caption aligncenter" style="width: 560px"><img src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/02/php-to-po.jpg" alt="PHP to .po extractor" title="PHP to .po extractor" width="550" height="200" class="size-full wp-image-676" /><p class="wp-caption-text">PHP to .po extractor</p></div>
<p>Diese Liste, mit der wir auch die &#220;bersetzung machen ist eine .po-Datei (Portable Object). Um nun aus den php-Dateien unseres Themes die Liste in der .po-Datei zu erstellen, gibt es <em><a href="http://www.icanlocalize.com/tools/php_scanner">PHP to .po extractor</a></em>, mit denen wir einzelne Dateien aber auch Zip-Archive verarbeiten k&#246;nnen. Dieser sucht alle Strings, die in _e() und __() Funktionen gepackt sind und gibt uns die .po-Datei zur&#252;ck.</p>
<h3>&#220;bersetzen aller Strings in der .po-Datei:</h3>
<p>Um .po-Dateien verarbeiten zu k&#246;nnen, solltet Ihr Euch das Programm <a href="http://www.poedit.net/">Poedit</a> herunterladen. Mit diesem Programm lassen sich die &#220;bersetzungen einfach und &#252;bersichtlich anfertigen. Beim Abspeichern unserer .po-Datei wird automatisch eine .mo-Datei erstellt, die letztlich die Sprachdatei ist, die WordPress ben&#246;tigt. Die .po-Datei ist sozusagen nur die Bearabeitungsdatei.</p>
<div id="attachment_677" class="wp-caption aligncenter" style="width: 560px"><img src="http://www.onlinecasinodemar.com/wp-content/uploads/2009/02/poedit.jpg" alt="Sprachdateien bearbeiten mit Poedit" title="Sprachdateien bearbeiten mit Poedit" width="550" height="200" class="size-full wp-image-677" /><p class="wp-caption-text">Sprachdateien bearbeiten mit Poedit</p></div>
<p>Wichtig beim Erstellen der Sprachdateien sind noch die <a href="http://www.gnu.org/software/autoconf/manual/gettext/Locale-Names.html">Sprach- und L&#228;ndercodes</a>, mit denen wir die Sprachfiles benennen. Eine Sprachdatei f&#252;r Deutsch aus Deutschland m&#252;sste also de_DE.po / de_DE.mo hei&#223;en. F&#252;r Schweizer Deutsch dementsprechend de_CH.po / de_CH.mo.</p>
<h3>Laden der Text-Domain:</h3>
<p>Wenn wir die .po/.mo-Dateien in unserem Theme-Ordner platziert haben, sagen wir WordPress, dass in unserem Theme eine &#220;bersetzung geladen werden soll. </p>
<pre><code>&lt;?php load_theme_textdomain(my_theme_name); ?&gt;</code></pre>
<p>Bemerkung:<br />
Diesen Aufruf platzieren wir am besten in der header.php, da diese bei jedem Seitenaufruf angesprochen wird.</p>
<p>Wenn WordPress nun das Sprachfile f&#252;r die Sprache findet, die in der wp-config.php angegeben ist, wird das Theme mit allen &#220;bersetzungen richtig angezeigt.</p>
<pre><code>define ('WPLANG', 'de_DE');</code></pre>
<p><em>// edit:</em></p>
<h3>Alternative per Plugin:</h3>
<p>Wenn einem das Installieren von Poedit und das externe Scannen der PHP-Dateien zum umst&#228;ndlich ist, kann man das Ganze auch WordPress-intern l&#246;sen. Das WordPress-Plugin <a href="http://www.code-styling.de/deutsch/entwicklungen/wordpress-plugin-codestyling-localization">Codestyling Localization</a> scheint mir daf&#252;r eine starke Alternative zu sein. Ich habe es selbst noch nicht getestet, werde das aber auf jeden Fall nachholen.</p>
<p>Danke an <a href="#comment-1728">sokai</a> f&#252;r den Tipp!</p>
<p><em>// end edit;</em></p>
<h3>Fazit:</h3>
<p>Die Lokalisierung von WordPress-Themes sollte f&#252;r Theme-Autoren zum Standard geh&#246;ren. Wenn man diese Routine einmal durchlaufen ist, h&#228;lt sich der Mehraufwand tats&#228;chlich in Grenzen und das Theme wird dem internationalen Charakter von WordPress gerecht.</p>
<h3>Relevante Links:</h3>
<ul>
<li><a href="http://codex.wordpress.org/Translating_WordPress">WordPress Codex Translating WordPress</a></li>
<li><a href="http://codex.wordpress.org/WordPress_in_Your_Language">WordPress Codex WordPress in You Language</a></li>
<li><a href="http://www.poedit.net/">Poedit</a> zum Verarbeiten von .po-Dateien</li>
<li><a href="http://www.icanlocalize.com/tools/php_scanner">PHP Text-Scanner</a> zum Erstellen der .po-Dateien</li>
<li><a href="http://blog-en.icanlocalize.com/installing-wordpress-for-multiple-language-blogs/how-to-localize-wordpress-themes-and-plugins-with-gettext/">How to localize WordPress themes and plugins with GetText</a></li>
<li><a href="http://www.zyblog.de/2006/01/06/wordpress-themes-lokalisieren/">WordPress Themes lokalisieren /// ZyBlog</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.onlinecasinodemar.com/wordpress/tutorial-wordpress-themes-lokalisieren/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>

