WP-CLI (SwiftLing Pro)

Documentation / Développeurs

SwiftLing Pro ajoute wp swiftling à WP-CLI, avec les mêmes fonctions que son API REST (voir API REST et agents IA). Exécutez-le là où WordPress fonctionne, dans un script, lors d’un déploiement ou via SSH (wp --ssh=user@host/path swiftling …). wp help swiftling <command> décrit chaque commande et option disponibles sur votre installation.

Les commandes qui lisent ou modifient les traductions s’exécutent en tant qu’utilisateur : ajoutez --user=admin. Elles peuvent effectuer les actions autorisées pour cet utilisateur dans l’éditeur de traduction.

Les commandes

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.

Ce que vous traduisez : les éléments

Un élément est ce que l’éditeur de traduction ouvre :

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

Plusieurs commandes acceptent les éléments de deux façons : indiquez-les explicitement (post:12 post:13) ou utilisez --all pour tous les éléments d’un type.

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 accepte <subject>…, --all, --kind et --type.

États

Chaque texte d’une page se trouve dans l’un de ces états :

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).

Traduire

wp swiftling translate [<subject>…] --lang=<slug> [--all] [--kind=<kind>] [--type=<type>] [--again=<states>] [--recheck] [--yes] --user=admin
  • --lang accepte l’identifiant d’une langue, plusieurs identifiants séparés par des virgules (de,fr,hr) ou all pour toutes les langues.
  • La commande utilise le service choisi dans Réglages › Service de traduction, avec sa clé. Les caractères traduits sont décomptés de votre compte auprès de ce service. Un seul service traduit à la fois.
  • Chaque page est d’abord vérifiée sur le serveur. Les traductions effectuées par le service avant son arrêt (clé refusée, quota épuisé) sont conservées.
  • --all demande confirmation avant de commencer, car la traduction consomme des caractères. Ajoutez --yes pour passer cette étape, par exemple dans un script.

Remplir les textes sans traduction (par défaut)

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

Seuls les textes sans traduction sont envoyés. Un texte rédigé ou vérifié par quelqu’un n’est jamais modifié, et une traduction automatique est conservée telle quelle.

--all prend les pages où il reste des textes à traduire d’après leur dernière vérification : non traduites, partiellement traduites ou obsolètes. Une page modifiée depuis sa dernière vérification peut contenir de nouveaux textes que celle-ci n’a pas encore détectés. Ajoutez --recheck pour vérifier à nouveau chaque page :

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

Lorsqu’un texte original change, sa traduction précédente est conservée et marquée outdated pour être vérifiée dans l’éditeur. La commande exécutée par défaut ne la remplace pas.

Retraduire : --again

--again=<states> traduit à nouveau les textes dans ces états, au lieu de remplir ceux qui n’ont pas de traduction. <states> vaut machine, reviewed ou les deux, séparés par une virgule.

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.

À savoir sur --again :

  • Cette option ne remplit pas les textes sans traduction. Pour traduire aussi ceux qui ne l’ont jamais été, exécutez également la commande une fois sans --again (avant ou après).
  • Aucune copie des anciennes traductions n’est conservée. Si vous pensez vouloir les récupérer, exécutez d’abord wp swiftling export.
  • Les textes official (traductions de WordPress, du thème et des extensions) et outdated ne sont jamais envoyés. Un texte obsolète doit être vérifié.
  • Avec --all, --again prend tous les éléments, sauf ceux qui conservent le texte original. --recheck n’est pas nécessaire.
  • Les textes qui ne contiennent que des adresses, du code ou aucun mot ne sont jamais envoyés, quelles que soient les options choisies.
  • Tout est envoyé au service que vous avez choisi et décompté de votre compte. Consultez wp swiftling status pour connaître le nombre de caractères utilisés ce mois-ci.
# 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

Ce qu’il reste à traduire

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

Par défaut, la commande liste les éléments non traduits, partiellement traduits, obsolètes ou uniquement traduits automatiquement. --kind accepte post (par défaut), template, terms ou menu. --state accepte une liste séparée par des virgules parmi missing, partial, outdated, machine, reviewed et duplicate. --format accepte table, json, csv, yaml ou count.

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

Une page qui n’a jamais été vérifiée n’a encore aucun texte connu ; elle est donc indiquée comme missing.

Exporter et importer

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 produit un fichier JSON contenant, pour chaque texte, l’original, la traduction et l’état. Chaque page est d’abord vérifiée sur le serveur. --state ne retient que les textes dont l’état est missing, outdated, machine, reviewed ou official. Sans --file, le résultat est affiché.

import lit un tel fichier une fois les traductions renseignées :

  • <file> désigne un chemin d’accès, ou - pour l’entrée standard.
  • --state=reviewed (par défaut) ou --state=machine définit l’état dans lequel les traductions sont enregistrées.
  • --dry-run vérifie les données sans rien enregistrer.
  • La page de chaque sujet est d’abord vérifiée, ainsi que l’ensemble de ses traductions, avant tout enregistrement. Si un texte original a changé depuis l’exportation, sa traduction est refusée pour ce sujet. Il en va de même pour la traduction d’un texte issu du code qui demande une valeur absente de l’original. Une traduction vide dans le fichier laisse le texte inchangé.
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

Vérifier les pages

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

Vérifie sur le serveur la page de chaque sujet, comme le fait l’éditeur de traduction, afin que ses textes soient connus. Cette vérification n’exécute aucun script : elle ne trouve ni les textes qu’un script construit après le chargement de la page, ni ceux qu’un script affiche à partir d’un attribut data-*.

Préserver la rapidité du site

Après une opération de grande ampleur, wp swiftling flush-cache vide le cache de SwiftLing ainsi que les caches des extensions de mise en cache que SwiftLing connaît. wp swiftling clean supprime les données que SwiftLing a conservées pour les publications qui ne sont plus sur le site.