Blog

Die gesamte Website in fünf Sprachen in 12 Minuten – über die Befehlszeile

Diese Website ist auf Englisch verfasst. Die deutsche, französische, kroatische, spanische und arabische Version – einschließlich der 54 Seiten Dokumentation – wurden von SwiftLing Pro über die Befehlszeile mithilfe von OpenAI und meinem eigenen Schlüssel übersetzt. Hier erfährst du, welchen Befehl ich eingegeben habe, wie lange es gedauert hat und was ich noch manuell erledigt habe.

Der Aufbau

SwiftLing und SwiftLing Pro sind aktiviert, die fünf Sprachen wurden auf dem Bildschirm „Sprachen“ hinzugefügt und ein OpenAI-Schlüssel wurde auf dem Bildschirm „Übersetzungsdienst“ gespeichert. Ich habe OpenAI als Übersetzungsdienst und „gpt-6-sol“ als Modell ausgewählt. Zunächst habe ich die Startseite mit DeepL übersetzt und anschließend die gesamte Website damit, aber ich fand die OpenAI-Übersetzung besser, also habe ich sie ersetzt.

Der Befehl

wp swiftling translate --all --kind=post --lang=de --again=machine --user=admin

--all nimmt jeweils eine Seite einer bestimmten Art, --lang erfasst die Sprache (hier Deutsch) und --again=machine übersetzt erneut die Texte, die zuvor maschinell übersetzt wurden – auf diese Weise wurde der DeepL-Durchlauf ersetzt. Ohne --again diesem Befehl werden nur die Texte ausgefüllt, für die noch keine Übersetzung vorliegt. Jede Seite wird zunächst auf dem Server geöffnet, sodass SwiftLing die Texte sieht, die ein Besucher sieht, und anschließend werden diese Texte an den Dienst weitergeleitet.

Was ich tatsächlich ausgeführt habe, war dieser Befehl mit einer Liste von Seiten anstelle von --all, da ich die beiden Seiten mit rechtlichen Hinweisen absichtlich weggelassen habe: Ein Rechtstext sollte nicht maschinell übersetzt werden, ohne dass jemand ihn überprüft. Ich habe den Befehl für alle fünf Sprachen gleichzeitig ausgeführt, mit einem Prozess pro Sprache, sodass die Gesamtlaufzeit der Zeit des langsamsten Prozesses entspricht.

Die Zahlen

Languages5 (German, French, Croatian, Spanish, Arabic)
Pages54, plus the categories
Texts5,870
Characters sent622,050
Modelgpt-6-sol
Total time12 min 33 s
Fastest language (French)9 min 47 s
Slowest language (Croatian)12 min 33 s

Ich habe die Sprachen nicht nacheinander übersetzt. Ich habe fünf Prozesse gleichzeitig gestartet, einen für jede Sprache, und diese liefen parallel. Die Gesamtzeit entspricht also der Zeit des langsamsten Prozesses, nämlich des kroatischen. Nacheinander hätten die fünf Prozesse etwa 55 Minuten gedauert (die fünf Zeiten addiert). Bei einem Test mit einer Seite in zwei Sprachen wurden 3.810 Zeichen gesendet, was 25 Sekunden dauerte; daran habe ich mich bei der Planung des Durchlaufs orientiert.

Was es gekostet hat

OpenAI berechnet nach Tokens, nicht nach Zeichen. Auf der Nutzungsseite wird für diesen Tag ein Gesamtbetrag von 4,67 $ ausgewiesen: 437 Anfragen und 353.000 Eingabe-Tokens. Diese Zahl umfasst alles, was ich an diesem Tag mit dem Schlüssel gemacht habe, nicht nur diesen Durchlauf. Darin enthalten sind auch meine früheren Tests mit einem teureren Modell, gpt-6-astra, sodass der gesamte Durchlauf der Website mit gpt-6-sol weniger als 4,67 $ gekostet hat. Ich habe die beiden nicht getrennt, und ich schätze den Lauf der gesamten Website selbst auf etwa 3 $. Der eigene Zähler von SwiftLing zeigte weitaus weniger an, da er einen Teil seiner Zählwerte verlor, als fünf Prozesse gleichzeitig darauf schrieben.

Was ich von Hand gemacht habe

  • Ich habe den Dienst und das Modell auf dem Bildschirm „Übersetzungsdienst“ ausgewählt.
  • Zwei Arten von Text bestanden nicht aus Wörtern, daher hat SwiftLing sie unverändert gelassen bzw. habe ich das Programm angewiesen, das Original beizubehalten: Bildadressen und ein Code-Beispiel.
  • Arabisch wird von rechts nach links geschrieben, wofür das WordPress-eigene Sprachpaket für Arabisch erforderlich ist.
  • Die Startseite sowie die Kopf- und Fußzeile wurden bereits zuvor mit DeepL übersetzt und wurden nicht erneut übersetzt.

Was ist schiefgelaufen, und was bedeutet das nicht?

  • Beim gleichzeitigen Ausführen von fünf Sprachen traten zwei Fehler in SwiftLing auf: Eine Zeile des Suchindexes wurde doppelt geschrieben, und der Nutzungszähler verlor Zählstände. Wird die Sprachen nacheinander ausgeführt, treten diese Fehler nicht auf. Es handelte sich um Fehler im Plugin, die ich beide behoben habe: Die Indexzeile wird nun ersetzt statt eingefügt, und der Zähler ist so programmiert, dass kein Prozess die Zählwerte eines anderen überschreiben kann.
  • Dies sind maschinelle Übersetzungen. Bislang hat sie noch niemand gelesen, und SwiftLing kennzeichnet sie entsprechend, damit sie im Editor überprüft werden können. Da ich kein Arabisch lesen kann, sollte dies ein Muttersprachler übernehmen.
  • Die rechtlichen Hinweise wurden bewusst nicht übersetzt.
  • Texte, die ein Skript nach dem Laden der Seite erstellt, werden von einem Befehl nicht gefunden, da der Befehl die Seite öffnet, ohne Skripte auszuführen.

Wenn du es ausprobieren möchtest, findest du die Befehle in der WP-CLI-Dokumentation. Wenn etwas schiefgeht, sag mir auf GitHub Bescheid.