Documentation de l'API pour l'intégration des traductions dans TranslatePress (TP Sync API)
Cette API fournit deux points de terminaison pour gérer les chaînes de traduction dans le plugin TranslatePress. La langue de base est l'anglais (anglais américainToutes les requêtes nécessitent une authentification via un Bearer-token (disponible dans l’administration WordPress sous le menu « TP Sync »).
URL de base: https://your-site.com/wp-json/tp-sync/v1/
1. Récupération des chaînes à traduire (GET /keys)
Ce point de terminaison renvoie une liste de chaînes provenant du dictionnaire TranslatePress pour la langue spécifiée. Chaque chaîne inclut un ID (au format, languages="[\"de\",\"fr\",\"id\",\"it\",\"ko\",\"tr\",\"vi\",\"zh\",\"ru\",\"pt\",\"es\"]") dictionnaire:{id}Texte original en anglais, traduction actuelle, statut et métadonnées de pagination. Tri par ID DESC (les plus récents en premier). Dates, Créé le et Mis à jour le toujours null ne sont pas demandées dans SQL).
Paramètres de requête
| Paramètre | Type | Obligatoire | Description | Valeur par défaut |
|---|---|---|---|---|
Langue |
chaîne | Oui | Code de langue (par exemple, de pour l'allemand,, fr pour le français). Les codes abrégés sont normalisés (de → de_de). |
— |
page |
entier | Non | Numéro de page pour la pagination. | 1 |
Limite |
entier | Non | Nombre de lignes par page (minimum 1, maximum 500). | 100 |
Mis à jour depuis |
chaîne | Non | Filtrer par date de mise à jour (ISO8601, par exemple, 2025-10-01T00:00:00Zinput=). Renvoie uniquement les lignes mises à jour après cette date. |
— |
Titres
Autorisation : Bearer {токен}(obligatoire)
Exemple de requête (cURL)
curl -X GET "https://your-site.com/wp-json/tp-sync/v1/keys?lang=de&page=1&limit=50&updated_since=2025-10-01T00:00:00Z" \
-H "Authorization: Bearer your-api-token-here"
Exemple de réponse (JSON)
{
"keys": [
{
"key_id": "dictionary:123",
"original": "Hello World",
"translated": "Bonjour le monde",
"status": 2,
"created_at": null,
"updated_at": null
},
{
"key_id": "dictionary:124",
"original": "Welcome",
"translated": "Bienvenue",
"status": 0,
"created_at": null,
"updated_at": null
}
],
"meta": {
"total_count": 150,
"page": 1,
"limit": 50,
"page_count": 3,
"next_page": "https://your-site.com/wp-json/tp-sync/v1/keys?lang=de&page=2&limit=50&updated_since=2025-10-01T00:00:00Z"
}
}
Description des champs dans la réponse
| Champ | Type | Description |
|---|---|---|
ID de clé |
chaîne | Identifiant unique de la ligne: dictionnaire:{id} id — le numéro de l'enregistrement dans la table wp_trp_dictionary_en_us_{lang}). |
original |
chaîne | Texte original en anglais. |
traduit |
chaîne | Traduction actuelle pour la langue spécifiée (peut être vide). |
statut |
entier | Statut : 0 — non traduit, 1 — en cours, 2 — traduit. |
Créé le |
chaîne | Date de création (ISO8601, null — не запрашивается). |
Mis à jour le |
chaîne | Date de dernière mise à jour (ISO8601) null — не запрашивается). |
Métadonnées (meta)
Nombre totalNombre total de lignes (y compris les filtres).pagePage actuelle.LimiteLimite par page.Nombre de pagesNombre total de pages.page suivanteURL de la page suivante (null, si c'est la dernière).
Erreurs
- 401 : En-tête Authorization manquant ou invalide.
- 403 : Jeton invalide.
- 404 : Langue non trouvée dans TranslatePress (table absente).
Mise à jour des traductions (POST /translations)
Ce point de terminaison met à jour les traductions pour plusieurs chaînes simultanément (batch). Un tableau d’objets contenant l’ID de la chaîne, la langue et la nouvelle traduction est transmis. Il met à jour le statut à « traduit » (2) ainsi que le champ, languages="[\"de\",\"fr\",\"id\",\"it\",\"ko\",\"tr\",\"vi\",\"zh\",\"ru\",\"pt\",\"es\"]" Mis à jour le.
Corps de la requête (JSON)
Tableau traductions avec des objets :
[
{
"key_id": "dictionary:123",
"translation": "Bonjour le monde"
},
{
"key_id": "dictionary:124",
"translation": "Bienvenue"
}
]
Paramètres
| Champ dans l'objet | Type | Obligatoire | Description |
|---|---|---|---|
ID de clé |
chaîne | Oui | ID de la ligne: dictionnaire:{id} depuis GET /keys). |
language_iso |
chaîne | Oui | Code langue (de → de_de, normalisé automatiquement). |
traduction |
chaîne | Oui | Nouveau texte de traduction (restera tel quel). |
Titres
Autorisation : Bearer {токен}(obligatoire)Content-Type: application/json(obligatoire)
Exemple de requête (cURL)
curl -X POST "https://your-site.com/wp-json/tp-sync/v1/translations" \
-H "Authorization: Bearer your-api-token-here" \
-H "Content-Type: application/json" \
-d '{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Hallo Welt"
}
]
}'
Exemple de réponse (JSON)
{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Bonjour le monde",
"modified_at": "2025-10-15T12:00:00Z"
}
],
"errors": [
{
"index": 1,
"key_id": "dictionary:999",
"error": "Clé non trouvée dans la base de données"
}
]
}
Description des champs dans la réponse
traductionsTableau des traductions mises à jour avec succès (retourne les données d'entréeModifié leen ISO8601).,erreurs(optionnel, en cas d'échecs) : tableau d'erreursindexIndex de l'élément dans le tableau source.ID de cléID de la ligne problématique (si applicable).ErreurMessage d'erreur (exemples : "Missing required fields", "Invalid key_id format. Expected: dictionary:{id}", "Language not found", "Key not found in database", "Database update failed").
Erreurs
- 400 : Données invalides (vide/pas un tableau)
traductions, absence de champs). - 401/403 : Problèmes d'autorisation.
- 404 : Langue ou clé introuvable (table/enregistrement absent).
Langues prises en charge
Les codes courts sont automatiquement normalisés (sur la base du mapping dans le code). Pour les inconnus : entrée={code}_{code} par exemple, pl → pl_pl).
- en → en_us
- ar → ar
- id → id_id
- ko → ko_kr
- tr → tr_tr
- vi
- ru → ru_ru
- fr → fr_fr
- de → de_de
- it → it_it
- ja
- pt → pt_pt
- zh → zh_cn
- es → es_es
Récupération du token
- Dans l'administration WordPress : Menu TP Sync → Bouton "Generate New Token" (jeton de 32 caractères, généré automatiquement lors du premier lancement).
- Le jeton est stocké dans l'option
tp_sync_api_token.