WPMLs String Translation lässt Sie Texte in Ihren Themes und Plugins übersetzen.

Damit diese Übersetzungen auf der Seite erscheinen, müssen jedoch einige Bedingungen erfüllt werden:

  • Die Texte sollten in GetText-Befehle gepackt sein.
  • Es muss ein Textdomain-Argument geben.

Texte, die im PHP hardcodiert und nicht mit einer Textdomain in GetText-Befehle gepackt sind, werden nicht von WPML übersetzt.

Beispiele

Statischer Text, der nicht in GetText gepackt ist

<h2>Links</h2>

Problem: Das Wort ‚Links‘ ist nicht in einen GetText-Befehl gepackt. Es kann nicht übersetzt werden.

Lösung: Packen Sie den Text in den GetText-Echo-Befehl:

<h2><?php _e('Links','theme-text-domain'); ?></h2>

Wir haben ‚Links‘ in den GetText-Befehl _e() gepackt (übersetzbares Echo). Jetzt kann WPML es übersetzen.

Text in einer Funktion, der nicht in GetText gepackt ist

by <?php echo(the_author('', false)); ?>

Problem: Der Satz kann nicht übersetzt werden.

Lösung: Dieser Satz enthält teils statischen und teils dynamischen Text. Er muss ganz und gar in einen GetText-Befehl gepackt werden und Argumente benutzen.

<?php printf( __( 'by %s', 'theme-text-domain' ), the_author('', false) ); ?>

Der Text, den der Übersetzer erhält, ist ‚by %s‘. Dies ist gut, denn es macht es dem Übersetzer möglich, die Reihenfolge der Wörter zu ändern, was in manchen Sprachen erforderlich ist.

Beachten Sie, dass wir in diesem Fall den __() GetText-Befehl benutzt haben. Dieser Befehl ist ähnlich wie _e(), schreibt aber nicht in die Ausgabe (wie Echo dies tut). Der Befehl printf übernimmt die Ausgabe.

Das Text-Domain-Argument fehlt

<?php _e('Roadmap') ?>

Problem: Es gibt kein Textdomain-Argument im GetText-Befehl.

Lösung: Fügen Sie eine Text-Domain hinzu.

<?php _e('Roadmap','theme-text-domain') ?>

Eine Text-Domain sagt GetText (und WPML), wo der Text hingehört. Es ist ein String, der nichts bedeutet, außer für Sie. Sie können einen beliebigen String wählen, seien Sie aber konsequent. Der Text-Domain-Wert gruppiert verwandte Strings zusammen.

Natürlich ist ‚theme-text-domain‘ kein guter und unverkennbarer Name. Wenn Sie Ihr Theme zum Beispiel ‚Star-Geeks‘ genannt haben, wäre dies ein besserer Wert für die Text-Domain.