WP-CLI (SwiftLing Pro)

Dokumentation / Für Entwickler

SwiftLing Pro ergänzt WP-CLI um wp swiftling. Die Befehle bieten dieselben Funktionen wie die REST-API (siehe REST-API und KI-Agenten). Führen Sie sie dort aus, wo WordPress läuft: in einem Skript, bei einem Deployment oder über SSH (wp --ssh=user@host/path swiftling …). wp help swiftling <command> beschreibt alle Befehle und Optionen Ihrer Installation.

Befehle, die Übersetzungen lesen oder ändern, werden als Benutzer ausgeführt: Fügen Sie --user=admin hinzu. Sie können alles tun, was dieser Benutzer im Übersetzungseditor tun darf.

Die Befehle

CommandWhat it does
wp swiftling statusThe original, the translation service and its characters this month, and how far each language has come across the pages and posts visitors open. --format=table|json|csv|yaml.
wp swiftling languagesThe languages, the original first. --format as above.
wp swiftling checkChecks pages on the server, so their texts are known.
wp swiftling translateTranslates with the translation service. See below.
wp swiftling to-translateWhat still needs translating in a language.
wp swiftling exportTexts with their originals, translations and states, as JSON, for a translator or another tool.
wp swiftling importThe translations of such a file, filled in, back into the site.
wp swiftling flush-cacheEmpties SwiftLing’s cache of maps and translations, and the pages of the cache plugins SwiftLing knows.
wp swiftling cleanRemoves what SwiftLing kept of posts no longer on the site.

Was Sie übersetzen: Übersetzungsobjekte

Ein Übersetzungsobjekt ist das, was der Übersetzungseditor öffnet:

SubjectExample
A post, page or productpost:12 (or just 12)
A template of a block themetemplate:twentytwentyfive//archive
A kind of page of a classic themeview:search
The terms of a listterms:category
A classic menumenu:3
A builder’s subject, such as an options page of Advanced Custom Fieldsas wp swiftling to-translate lists it

Bei mehreren Befehlen können Sie Übersetzungsobjekte auf zwei Arten angeben: einzeln benennen (post:12 post:13) oder mit --all alle Objekte einer Art auswählen.

OptionMeaning
--allEvery subject of a kind instead of the ones you name.
--kind=<kind>With --all: post (the default), template, terms, menu or all.
--type=<type>With --all and posts: only one post type, as page.

wp swiftling check akzeptiert <subject>…, --all, --kind und --type.

Status

Jeder Text einer Seite hat einen der folgenden Status:

StateMeaning
missingNot translated yet: visitors read the original.
machineA service translated it, nobody has read it yet.
reviewedSomeone checked it (or wrote it).
outdatedThe original changed since it was translated. The old translation stays, marked outdated, until someone reviews it.
officialThe translation of WordPress, the theme or a plugin. SwiftLing never sends these to a service.
partialOf a page: some texts are translated, some not.
duplicateOf a page: the language keeps the original on purpose („Keep the original“ in the editor).

Übersetzen

wp swiftling translate [<subject>…] --lang=<slug> [--all] [--kind=<kind>] [--type=<type>] [--again=<states>] [--recheck] [--yes] --user=admin
  • Für --lang geben Sie den Sprach-Slug an, mehrere durch Kommas getrennte Slugs (de,fr,hr) oder all für alle Sprachen.
  • Verwendet wird der unter Einstellungen › Übersetzungsdienst ausgewählte Dienst mit dem dort hinterlegten Schlüssel. Die Nutzung wird Ihrem Konto bei diesem Dienst angerechnet. Es übersetzt immer nur ein Dienst gleichzeitig.
  • Jede Seite wird zuerst auf dem Server geprüft. Was der Dienst übersetzt hat, bevor er abbricht (etwa wegen eines abgelehnten Schlüssels oder eines aufgebrauchten Kontingents), bleibt erhalten.
  • Bei --all werden Sie vor dem Start um Bestätigung gebeten, da die Übersetzung Zeichen kostet. Mit --yes überspringen Sie die Nachfrage, etwa in einem Skript.

Fehlende Übersetzungen ergänzen (Standard)

wp swiftling translate post:12 --lang=de --user=admin
wp swiftling translate --all --type=page --lang=de,fr --yes --user=admin
wp swiftling translate --all --lang=all --yes --user=admin

Es werden nur Texte ohne Übersetzung gesendet. Texte, die jemand geschrieben oder geprüft hat, werden nie angetastet. Maschinelle Übersetzungen bleiben ebenfalls unverändert.

Mit --all werden die Seiten ausgewählt, für die laut letzter Prüfung noch Texte zu ergänzen sind: nicht übersetzte, teilweise übersetzte oder veraltete Seiten. Wenn sich eine Seite seit der letzten Prüfung geändert hat, kann sie neue Texte enthalten, die bei dieser Prüfung noch nicht erfasst wurden. Mit --recheck prüfen Sie jede Seite erneut:

wp swiftling translate --all --lang=all --recheck --yes --user=admin

Wenn sich der Originaltext geändert hat, bleibt seine bisherige Übersetzung erhalten und wird mit outdated markiert, damit sie jemand im Editor prüfen kann. Beim Standarddurchlauf wird sie nicht ersetzt.

Erneut übersetzen: --again

--again=<states> übersetzt Texte mit den angegebenen Status erneut, statt fehlende Übersetzungen zu ergänzen. Für <states> geben Sie machine, reviewed oder beides durch ein Komma getrennt an.

You writeWhat it translates again
--again=machineTexts a service translated before and nobody has reviewed. The new translation replaces the old one and is saved as machine. Reviewed texts stay.
--again=reviewedTexts someone checked or wrote by hand. They are replaced with a machine translation, so this overwrites manual work. Use it only when you mean it.
--again=machine,reviewedBoth: every text that has a translation of its own, except the official ones. This is „translate everything from scratch“ for what is already translated.

Wichtig zu --again:

  • Fehlende Übersetzungen werden nicht ergänzt. Um auch bisher unübersetzte Texte zu übersetzen, führen Sie den Befehl zusätzlich einmal ohne --again aus – davor oder danach.
  • Von den bisherigen Übersetzungen wird keine Kopie aufbewahrt. Wenn Sie sie möglicherweise wiederherstellen möchten, führen Sie vorher wp swiftling export aus.
  • Texte mit dem Status official (Übersetzungen von WordPress, Themes und Plugins) und outdated werden nie gesendet. Veraltete Texte sind zur Prüfung vorgesehen.
  • Mit --all erfasst --again jedes Übersetzungsobjekt, außer solchen, die den Originaltext beibehalten. --recheck ist nicht erforderlich.
  • Texte, die nur aus Adressen oder Code bestehen oder keine Wörter enthalten, werden nie gesendet – unabhängig von den gewählten Optionen.
  • Alles wird weiterhin an den ausgewählten Dienst gesendet und Ihrem Konto dort angerechnet. Mit wp swiftling status können Sie prüfen, wie viele Zeichen in diesem Monat verbraucht wurden.
# translate the machine translations of one page into German again
wp swiftling translate post:12 --lang=de --again=machine --user=admin

# a whole site, every language: fill what is empty, then redo the machine translations
wp swiftling translate --all --lang=all --yes --user=admin
wp swiftling translate --all --lang=all --again=machine --yes --user=admin

# the templates (header, footer) again, including what someone reviewed. Back up first.
wp swiftling export --all --kind=template --lang=de --file=templates-de.json --user=admin
wp swiftling translate --all --kind=template --lang=de --again=machine,reviewed --yes --user=admin

Was noch zu übersetzen ist

wp swiftling to-translate --lang=de [--kind=<kind>] [--type=<type>] [--state=<states>] [--format=<format>] --user=admin

Standardmäßig werden nicht übersetzte, teilweise übersetzte, veraltete oder nur maschinell übersetzte Inhalte aufgelistet. Für --kind sind post (Standard), template, terms oder menu möglich. --state ist eine kommagetrennte Liste aus missing, partial, outdated, machine, reviewed und duplicate. Für --format sind table, json, csv, yaml oder count möglich.

wp swiftling to-translate --lang=de --format=count --user=admin
wp swiftling to-translate --lang=de --kind=post --type=page --state=machine --user=admin

Eine noch nie überprüfte Seite enthält noch keine bekannten Texte und wird daher als missing aufgeführt.

Export und Import

wp swiftling export [<subject>…] --lang=<slug> [--all] [--kind=<kind>] [--type=<type>] [--state=<states>] [--file=<file>] --user=admin
wp swiftling import <file> [--state=<state>] [--dry-run] --user=admin

export schreibt eine JSON-Datei mit dem Originaltext, der Übersetzung und dem Status jedes Textes. Zuvor wird jede Seite auf dem Server überprüft. Mit --state werden nur Texte mit einem der angegebenen Status übernommen: missing, outdated, machine, reviewed, official. Ohne --file wird die Ausgabe direkt angezeigt.

import liest eine solche Datei mit ausgefüllten Übersetzungen ein:

  • <file> ist ein Dateipfad oder - für die Standardeingabe.
  • --state=reviewed (die Standardeinstellung) oder --state=machine legt fest, mit welchem Status die Übersetzungen gespeichert werden.
  • --dry-run prüft nur und speichert nichts.
  • Die Seite jedes Objekts wird zuerst überprüft, und alle zugehörigen Texte werden geprüft, bevor etwas gespeichert wird. Die Übersetzung eines Originaltexts, der sich seit dem Export geändert hat, wird für das betreffende Objekt abgelehnt. Das gilt auch für die Übersetzung eines Textes aus dem Code, der einen Wert verlangt, den sein Original nicht liefert. Eine leere Übersetzung in der Datei lässt den Text unverändert.
wp swiftling export --all --lang=de --state=missing --file=de.json --user=admin
wp swiftling import de.json --dry-run --user=admin
wp swiftling import de.json --user=admin

Seiten überprüfen

wp swiftling check post:12 --user=admin
wp swiftling check --all --kind=template --user=admin

Überprüft die Seite jedes Objekts auf dem Server, wie es auch der Übersetzungseditor tut, damit ihre Texte bekannt sind. Bei der Überprüfung werden keine Skripte ausgeführt: Ein Text, den ein Skript nach dem Laden der Seite erzeugt, oder ein Text in einem data-*-Attribut, den ein Skript ausgibt, wird nicht gefunden.

Die Website schnell halten

Nach einem umfangreichen Durchlauf leert wp swiftling flush-cache den Cache von SwiftLing sowie die Seitencaches der Cache-Plugins, die SwiftLing kennt. wp swiftling clean entfernt die von SwiftLing gespeicherten Daten zu Beiträgen, die nicht mehr auf der Website vorhanden sind.