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 Widget – input 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.