Wann "muss" oder besser, wann sollte ich _e('') und wann __('') benutzen?
Der Aufruf von _e('') führt ein automatisches [COLOR=Red]e[/COLOR]cho mit der Übersetzung aus, sprich der Text wird sofort ausgegeben.
DerAufruf von __('') führt kein echo aus sondern gibt nur den übersetzten Text zurück. Diese Variante ist zu bevorzugen, wenn man mit dem Text noch etwas anstellen will, bevor man ihn selbst per echo ausgibt.
Was mache ich mit Strings wie diesem?
<?php comments_number ('0 Reaktionen', '1 Reaktion', '% Reaktionen' );?>
Muss das dann so aussehen:
<?php comments_number _e('0 Reaktionen', '1 Reaktion', '% Reaktionen', 'Themename'));?>
?
Nein, denn ich vermute, dass comments_number() eine Funktion ist, die intern erst die Nummer bestimmt, um die richtige Pluralform zu finden.
Allerdings ist das kontraproduktiv, wenn das der Theme-Author so verfasst hat, denn es gibt Sprachen, die die Pluralisierung mit bis zu 4 verschieden Abstufungen benutzen!
Angepasst sollte das so aussehen:
<?php comments_number (__('0 Reaktionen', 'Themename'), __('1 Reaktion','Themename'), __('% Reaktionen', 'Themename'));?>
Diese Lösung stimmt aber z.B. für Russisch oder andere Sprachen mit > 2 Pluralformen nicht. Um das korrekt so zu programmieren, damit man die ebenfalls verfügbare _ngettext Pluralisierung verwenden kann, müsste ich das Theme als Source Code haben.
Und die gleiche Frage für folgenden String:
Sie können hier einen <a href="#respond">Kommentar hinterlassen</a>, einen <a href="<? trackback_url() ?>">Trackback setzen</a> oder die Reaktionen per <a href="feed/">RSS-Feed</a> verfolgen.
Ist meine modifizierte Version richtig?
<?php _e('Sie können hier einen <a href="#respond">Kommentar hinterlassen</a>, einen <a href="trackback_url()">Trackback setzen</a> oder die Reaktionen per <a href="feed/">RSS-Feed</a> verfolgen.', 'Themename')?>
Das funtioniert ebenfalls nicht, denn die Funktion trackback_url() wird nicht ausgeführt. Ausserdem wäre dann der String nicht konstant, was er aber für gettext sein muß. Deshalb muß die URL reinformatiert werden.
<?php echo sprintf(__('Sie können hier einen <a href="#respond">Kommentar hinterlassen</a>, einen <a href="%s">Trackback setzen</a> oder die Reaktionen per <a href="feed/">RSS-Feed</a> verfolgen.', 'Themename'),get_trackback_url()); ?>
Allerdings solltest du alle Texte als Ausgangssprache in englisch verfassen und danach übersetzen, denn standardmäßig läuft WP ohne Sprachdatei. Dann sollte es auch englisch erscheinen und nicht "zwangsdeutsch".