Dies ist das technische Support-Forum für WPML - das mehrsprachige WordPress-Plugin.

Mitlesen können alle, doch nur WPML-Kunden können hier Fragen veröffentlichen. Das WPML-Team beantwortet Anfragen im Forum an 6 Tagen pro Woche, 22 Stunden am Tag.

This topic contains 4 Antworten, has 2 Teilnehmer.

Last updated by stefanB-65 vor 1 Jahr, 5 Monate.

Assigned support staff: Cristina.

Autor Beiträge
Mai 3, 2018 um 12:40 pm #1957053

stefanB-65

Hallo,
ich muss Texte einiger etwas älterer Pluigns übersetzen.
Zum Beispiel das Plugin WP Thread Comment.
In diesem Plugin stehen die Texte alle in den Einstellungen im Backend und diese lassen sich so nicht einfach übersetzen. (Siehe Screenshot)
Gibt es eine Möglichkeit, diese Texte zu übersetzten?

Ich habe in der WPML Doku etwas gelesen von, wp_options Table übersetzen oder
icl_register_string. (https://wpml.org/de/documentation-3/support-2/ubersetzung-fur-texte-durch-andere-plugins-und-themen/)

Aber ich weiß nicht ob das der richtige Weg ist.
Kann ich das Plugin für WPML vorbereiten, also z.B. mit einem bestimmten Script?
Oder diese Texte heraus ziehen?

Danke im Vorraus,
Alex

Mai 3, 2018 um 2:52 pm #1960971

Cristina

Hallo Alex,

soweit ich sehe, ist dieses Plugin nur bis Version 2.7.1 getestet worden. Ich habe es kurz aktiviert, um mir das anzuschauen. Diese Texte können als Admin Strings registriert werden.

Nach der Installation scannt man das Plugin und damit werden die Texte in den Optionen in String Translation registriert, wenn die automatische Registrierung der Admin Strings aktiv ist.

Die Admin-Texte findet man dann unter der Textdomain "wpthreadcomment" (screenshot) und kann sie von dort zu String Translation hinzufügen und übersetzen (screenshot).

Wenn das nicht richtig auf der Seite erscheint, kann man diesen XML Code probieren, der die Texte der Felder für WPML bereitstellt. Das kopiert man in den Reiter der benutzerdefinierten XML - Konfiguration.

Wenn es dort schon eine Datei gibt, fügt man nur die neuen Admin-Texte in die vorhandene Konfiguration hinzu, speichert und ruft dann die Seite der Theme - und Pluginlokalisierung auf, damit das erfasst wird.

<wpml-config>
<admin-texts>
<key name="wpthreadcomment">
<key name="cancel_reply"/>
<key name="reply_text"/>
<key name="comment_html"/>
<key name="mail_subject"/>
<key name="mail_message"/>
</key>
</admin-texts>
</wpml-config>

Ob Plugin-Texte kompatible sind, sieht man eigentlich am besten dann, wenn man die Texte in dem Plugin selbst sucht.

Hier sind diese default_Texte beispielsweise in der Datei wp-thread-comment.php enthalten und mit einer gettext-Funktion versehen.

Das sieht dann so aus wie in Zeile 450 __('Your comment at....','wp-thread-comment');

Dieses __( hüllt den Text in eine Funktion, die ihn übersetzbar macht, und auch die Text-Domain mit angibt. Damit kann das von WPML gescannt und aufgelistet werden.

Die gettext-Funktion umhüllt einen String mit __("text", "text-domain");

Damit wird der "text" übersetztbar gemacht und ist einer "text-domain" zugeordnet, die z.B. das Plugin oder Theme bezeichnet, in dem sich dieser Text innerhalb einer Datei dieses Themes oder Plugins befindet.

mit Gettext wäre der Output in dem Code dann so etwas:


{
...<?php echo esc_attr__("string","woocommerce");?>
....
}

Bei statischen Strings, die in Themes, Formularen, Widgets oder auch Placeholdern stehen, müssen die Texte mit gettext geschrieben werden. Abhängig vom Kontext nutzt man verschiedene Schreibweisen, damit der Text nicht nur übersetzt wird, sondern auch online erscheint.

Hier noch einige Hilfs- und Dokumentationsseiten dazu, die als Anleitung für ähnliche Fälle helfen können:

https://wpml.org/de/faq/so-funktioniert-string-ubersetzung/
https://wpml.org/de/documentation-3/support-2/
https://wpml.org/documentation/support/making-woocommerce-themes-multilingual-and-multi-currency-ready/
https://wpml.org/de/faq/warum-erscheinen-string-ubersetzungen-nicht/
https://wpml.org/de/2009/06/lokalisierung-der-wordpress-themes/
https://wpml.org/de/documentation-3/support-2/erreichen-sie-wpml-kompatibilitat-fur-ihre-themes-und-plugins/
https://codex.wordpress.org/I18n_for_WordPress_Developers

MfG,
Cristina

Mai 4, 2018 um 12:03 pm #1974606

stefanB-65

Hallo Cristina,

danke für den super Tipp.
Das Admin-Texte Tool ist ja sehr gut, da finde ich alle Übersetzungen der alten Plugins.

Ich habe das jetzt so gemacht wie Du es beschrieben hast.
Admin-Tool -> wpthreadcomment (alle nötigen Checkboxen aktiviert) -> auf Anwenden klicken

Danach bin ich in die "String-Übersetzung" gewechselt und habe im Pulldown rechts oben nach der neuen Domain "admin_texts_wpthreadcomment" gesucht. Leider wurde diese nicht aufgelistet.

Dann habe ich eine wpml-config.xml Datei erstellt und die entsprechenden Key Werte eingetragen. Diese XML Datei habe ich in meinem Theme Ordner abgelegt.
Im WPML Plugin habe ich dann noch einmal die Seite "Theme- und Plugin-Lokalisierung" aufgerufen, und bin danach zur Seite "String-Übersetzung" gewechselt. Dort konnte ich im Pulldown die Domain "admin_texts_wpthreadcomment" anzeigen lassen.
Die Texte habe ich nun übersetzt und diese wurden auch korrekt in der richitgen Sprache angezeigt.

Ich hoffe das stimmt alles so.

Eine grosse Frage habe ich noch.
Ich habe bis jetzt alle Plugin-Übersetzungen auf einem Test-Blog angelegt. Das ist ein identischer Abzug des Live-Blog (also alle Plugins sind gleich usw..).
Aber wie kann ich jetzt am Besten diese ganzen Übersetzungen auf den Live-Blog übertragen?
1. Der erste Schritt ist natürlich, das WPML Multilingual CMS Plugin und die Erweiterungen (Media, String-Translation) zu installieren.
2. Aber was kommt dann?
Sollte ich erst die angepassten Theme Dateien (alle Texte wurden mit gettext und dem englischen Begriff angelegt) auf den Live Blog kopieren? Aber dann würde der User im Frontend plötzlich englische Button-Texte sehen, da die deutschen Übersetzungen ja noch nicht auf dem Live-Blog vorhanden sind.

Oder muss ich zuerst alle Übersetzungen auf dem Live-Blog anlegen?
Kann man alle Übersetzungen mit einer WPML Funktion exportieren und diese wieder in den Live-Blog importieren?
Sonst muss ich das alles noch einmal machen.

Den Sprachschalter würde ich erst dann anzeigen, wenn alle Übersetzungen im Live-Blog funktionieren.

Wie sollte ich da vorgehen?

Gruß
Alex

Mai 10, 2018 um 9:51 am #2068866

Cristina

Hallo Alex,

entschuldigen Sie die späte Antwort, ich war mir eigentlich sicher, geantwortet zu haben, aber das ist wohl nicht richtig versendet worden.

Die Vorgehensweise ist korrekt und bei übersetzbaren Strings führt die XML-Datei auch dazu, dass die Texte online erscheinen.

Bezüglich der Frage zur Übertragung auf die Live-Seite:

Wenn Sie keine Staging-Umgebung nutzen, wo Sie das mit einem Klick übertragen, könnten Sie folgende Optionen erwägen:

Migration / Duplikat erstellen und den Live-Blog damit ersetzen

Dabei wird die Datenbank der Live-Seite mit dem Inhalt der Testseite überschrieben, so dass hier eine komplette Migration stattfindet.

Wenn also auf der Live-Seite mehr vorhanden ist als auf der Testseite, ist das keine gute Option. Wenn die Testseite aber die "gute" Neufassung der Seite beinhaltet, ist das die einfachste und unkomplizierteste Art, da alles 1:1 kopiert wird und Sie nicht weiter konfigurieren müssen. Nur der Sitekey für WPML muss dann neu eingegeben werden, weil es eine andere URL ist.

Möglichkeiten hier:

- Sie erstellen ein Duplikat der Seite mit dem Plugin Duplicator, das man im WordPress Verzeichnis findet und übertragen das auf die neuen Seite.

Das ist eigentlich ein ganz bequemer Vorgang, aber es kann bei bestimmten Serverumgebungen nicht ganz funktionieren.

Kurz gefasst erstellt man das Duplikat, richtet dann auf der Zieldomain eine Datenbank ein und kopiert die Duplicator-Datei und die Installerdatei in das leere Verzeichnis im FTP-Bereich. Dann ruft man die Domain auf und befolgt die Anleitungen auf des Installers. Das erstellt dann eine exakte Kopie der exportieren Webseite auf der neuen Domain.

Eine Anleitung dazu finden Sie hier:
https://wordpress.org/plugins/duplicator/
hidden link
hidden link

- Sie installieren WordPress und laden das Plugin All-in-one-wp-migration herunter und aktivieren es.

Auf der Testseite installieren Sie das Plugin ebenfalls. Hier können Sie dann die Option zum Export nutzen und eine komplette Kopie der Seite anlegen oder eine Kopie ohne Medien, Themes und Plugin-Ordner erstellen.

Die Export-Datei laden Sie dann herunter und laden Sie auf der Live-Seite über den Import-Button hoch. Da die FTP-Verzeichnisse dabei nicht berührt werden, können Se auf die
Medien, Themes- und Plugin-Ordner im Export verzichten, dass der Import die Dateien an der gleichen Stelle wiederfinden wird.

Hier gibt es auch ein nettes Tutorial
hidden link

Inhalte mit WP All Export und WP ALL Import übertragen

Wenn Sie die die kostenlose Version von WP ALL Import und WP All Export sowie das Brückenplugin WPML All Import auf beiden Seiten installieren, können Sie die Inhalte exportieren und wieder re-importieren.

Dabei muss auf der Zielseite ein WordPress installiert sein, dazu die WPML-Plugins und die WP All Import und WPML All Import Plugins.

Sie exportieren zuerst die Inhalt pro Sprache und importieren Sie dann wieder in die neue Seite.

Beim Import müssen als erstes die Posts in der Originalsprache importiert werden, und dann vor dem Import der Übersetzungen die Taxonomien übersetzt werden, da diese nicht korrekt importiert werden können.

Der Nachteil dieser Methode ist, dass die so importieren Posts nicht in der üblichen Tabelle wp_posts gespeichert sind, sondern auch in den Tabellen des Import Plugins. So müssen Sie das Plugin behalten, damit die Posts nicht verloren gehen.

Auch ist das fehleranfälliger als eine einfache Migration oder Duplizierung.

Wir haben hier einige Tutorialseiten dazu, die Ihnen als Hilfe dienen können:

https://wpml.org/2016/08/export-multilingual-websites-using-wp-all-export-and-wpml/
https://wpml.org/documentation/related-projects/wpml-all-import-plugin-website-import-with-wpml/

Strings aus String Translation exportieren und importieren

Sie können die Strings auch separat exportieren und importieren, indem Sie die .po Dateien in String Translation exportieren.

Dafür gehen Sie in String Translation zur Metabox für Import / Export von .po Dateien. Hier können Sie eine .po Sprachdatei für eine bestimmte Text-Domain und Sprache exportieren, beispielsweise ein Theme, Plugin oder Admin-Strings. Dabei haben Sie die Wahl, entweder alle Sprachen oder nur eine Sprache zu exportieren.

Auf der neuen Seite können Sie die Strings dann in Strings Translation wieder über eine .po Datei importieren. Sie müssen dabei die gleichen Einstellung wählen, also die Text-Domain und die Option, alle Sprachen oder nur eine Sprache zu importieren.

Im Fall der Threadcomments müssten Sie dann auch die XML Datei wieder einfügen.

Sprachumschalter

Wenn alles soweit fertig ist, brauchen Sie nur ein Menü anzulegen und zu übersetzen oder zu synchronisieren (WPML >Menü synchronisieren).

Dann könnten Sie den Sprachumschalter in WPML > Sprachen für das Hauptmenü setzen.

Gruß
Alex

Mai 18, 2018 um 11:13 am #2188840

stefanB-65

Das Exportieren und Importieren hat sehr gut funktioniert.