WPML

Erfahren Sie, wie Sie Benutzereingabetexte aus Plugins und Themes für die Übersetzung registrieren. Sobald diese registriert sind, können Sie sie mit der String-Übersetzung übersetzen.

So registrieren Sie Benutzereingabetexte

Wenn ein Benutzer neue Strings erstellt oder bestehende Strings aktualisiert, müssen diese in der String-Tabelle von WPML registriert werden.

Sie können diesen Aufruf mit dem Action-Hook wpml_register_single_string durchführen:

do_action( 'wpml_register_single_string', string $context, string $name, string $value )
  • $context – Der Name des Plugins oder Themes in einem für Menschen lesbaren Format.
  • $name – Der Name des Strings, der dem Übersetzer hilft zu verstehen, was übersetzt wird.
  • $value – Der String, der übersetzt werden muss.

Betrachten Sie dieses Beispiel für ein benutzerdefiniertes Widget, das einen title, ein einzeiliges input-Feld und eine textarea enthält. Um diese Felder für die Übersetzung zu registrieren, wenn die Widget-Optionen gespeichert oder aktualisiert werden, verwenden wir die update-Funktion:

Verwendung des Action-Hooks wpml_register_single_string
function update($new_instance, $old_instance){
    $instance = $old_instance;
    $instance['title']      = strip_tags($new_instance['title']);
    $instance['custom_input']   = strip_tags($new_instance['custom_input']);
    $instance['custom_textarea']    = $new_instance['custom_textarea'];
 
    //WPML
    /**
     * register strings for translation
     */
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - input field', $instance['custom_input'] );
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - textarea field', $instance['custom_textarea'] );
    //WPML
 
    return $instance;
}

In diesem Beispiel teilen wir WPML mit, dass es die Benutzereingabetexte für das input- und das textarea-Feld übersetzen muss. Diese Texte werden unter dem String-Kontext Widgets mit dem Namen Custom Widgetinput field bzw. Custom Widget – textarea field registriert.

Sobald Sie Texte registrieren, können Sie den Action-Hook wpml_translate_single_string verwenden, um Übersetzungen im Frontend anzuzeigen.

So integrieren Sie die String-Übersetzung in Plugins und Themes

Wenn Sie die String-Übersetzung in Plugins oder Themes integrieren, ist es wichtig sicherzustellen, dass die Aufrufe existieren.

Bedingte Aufrufe implementieren

Kapseln Sie Ihre Aufrufe in if_function_exists()-Anweisungen, sodass sie bei aktiviertem WPML aufgerufen werden und andernfalls der normale Betrieb beibehalten wird.

Späte Aktivierung von WPML handhaben

Als Theme- oder Plugin-Entwickler sollten Sie auch den Fall berücksichtigen, dass WPML erst lange nach dem Zeitpunkt aktiviert wird, an dem der Benutzer mit der Nutzung Ihres Themes oder Plugins beginnt.

In diesen Fällen werden Strings nicht übersetzt, da der Aufruf von wpml_register_single_string bei ihrer Erstellung nicht erfolgt. Um dies zu beheben, sollten Sie alle Benutzer-Strings jedes Mal registrieren, wenn der Admin-Bildschirm für das Plugin geladen wird.

Obwohl dies eine vernachlässigbare Ausführungszeit hinzufügt, garantiert es, dass Strings immer zur Übersetzung gesendet werden und auf dem neuesten Stand sind.

Der Code sollte zunächst prüfen, ob die Funktion wpml_register_single_string existiert. Wenn dies der Fall ist, sollte die Funktion aufgerufen werden, um alle Benutzereingabetexte zu registrieren. So funktioniert es:

  • Wenn die Funktion mit leeren oder NULL-Werten aufgerufen wird, ignoriert WPML diese Aufrufe.
  • Wenn ein String bereits existiert und unverändert ist, ignoriert WPML den Aufruf.
  • Die Funktion wird nur aktiv, wenn neue oder geänderte Strings registriert werden.

Die gesamte Übersetzungstabelle wird im Arbeitsspeicher zwischengespeichert, sodass ein wiederholter Aufruf nur sehr wenig Rechenleistung erfordert.

Zusätzliche Ressourcen

Um hartcodierte Texte aus Themes und Plugins für die Übersetzung zu registrieren, lesen Sie unseren Artikel über das Finden von Strings, die nicht auf der Seite String-Übersetzung erscheinen.

Um Theme- oder Plugin-Optionen für die Übersetzung zu registrieren, lesen Sie unseren Leitfaden zur Verwendung der Sprachkonfigurationsdatei.

Um Theme- oder Plugin-Elemente als Gruppe zu übersetzen, lesen Sie unsere Informationen zur String-Paket-Übersetzung.

Geschrieben von Amir · Zuletzt aktualisiert am 7. Juni 2024