Documentation API pour l'intégration des traductions TranslatePress (TP Sync API)
Cette API fournit deux points de terminaison pour travailler avec les chaînes de traduction dans le plugin TranslatePress. La langue de base est l'anglais (en_us). Toutes les requêtes nécessitent une autorisation via un jeton Bearer (obtenu dans l'administration WordPress sous le menu « TP Sync »).
URL de base : https://your-site.com/wp-json/tp-sync/v1/
1. Obtention des lignes à traduire (GET /keys)
Ce point de terminaison renvoie une liste de chaînes du dictionnaire TranslatePress pour la langue spécifiée. Chaque chaîne comprend un ID (au format dictionnaire : {id}), texte original en anglais, traduction actuelle, statut et métadonnées de pagination. Tri par ID DESC (les plus récents en haut). Dates, créé le et mis à jour le toujours null (ne sont pas demandés en SQL).
Paramètres de la requête
| Paramètre | Type | Obligatoire | Description | Valeur par défaut |
|---|---|---|---|---|
lang |
chaîne | Oui | Code de langue (par exemple, de pour l'allemand fr pour le français). Les codes courts 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 | Filtre par date de mise à jour (ISO8601, par exemple,) 2025-10-01T00:00:00Z). Retourne 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 |
|---|---|---|
clé_id |
chaîne | ID unique de la ligne : dictionnaire : {id} (id — numéro d'enregistrement dans le tableau 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 — non demandé). |
mis à jour le |
chaîne | Date de la dernière mise à jour (ISO8601 null — non demandé). |
Métadonnéesmeta)
total_countNombre total de lignes (y compris les filtres).pagePage actuelle.limiteLimite par page.nombre de pagesNombre total de pages.page suivante: URL de la page suivantenull, si le dernier).
Erreurs
- 401 : En-tête Authorization absent ou incorrect.
- 403 : Jeton invalide.
- 404 : Langue non trouvée dans TranslatePress (tableau manquant).
2. Mise à jour des traductions (POST /translations)
Ce point de terminaison met à jour les traductions pour plusieurs lignes à la fois (lot). Un tableau d'objets avec l'ID de la ligne, la langue et la nouvelle traduction est transmis. Met à jour le statut à "traduit" (2) et le champ mis à jour le.
Corps de la requête (JSON)
Tableau traductions avec des objets :
{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Bonjour le monde"
},
{
"key_id": "dictionary:124",
"language_iso": "de",
"translation": "Bienvenue"
}
]
}
Paramètres
| Champ dans l'objet | Type | Obligatoire | Description |
|---|---|---|---|
clé_id |
chaîne | Oui | ID de la ligne : dictionnaire : {id} (depuis GET /keys). |
code_iso_langue |
chaîne | Oui | Code de langue (de → de_de, normalisé automatiquement). |
traduction |
chaîne | Oui | Nouveau texte de traduction (conservé 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": "Bonjour le monde"
}
]
}'
Exemple de réponse (JSON)
{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Hallo Welt",
"modified_at": "2025-10-15T12:00:00Z"
}
],
"errors": [
{
"index": 1,
"key_id": "dictionary:999",
"error": "Clé introuvable dans la base de données"
}
]
}
Description des champs dans la réponse
traductionsTableau des traductions mises à jour avec succès (renvoie les données d'entrée +modifié leen ISO8601).erreurs(facultatif, en cas d'échecs) : Tableau des erreurs.indexIndice de l’élément dans le tableau d’origine.clé_id: ID de la ligne problématique (le cas échéant).erreurTexte d'erreur (exemples : « Champs requis manquants », « Format de key_id invalide. Attendu : dictionary:{id} », « Langue non trouvée », « Clé non trouvée dans la base de données », « Échec de la mise à jour de la base de données »).
Erreurs
- 400 : Données incorrectes (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 mappage dans le code). Pour les inconnus : {code}_{code} (par exemple, pl → pl_pl).
- en → en_us
- à
- id → id_id
- ko → ko_kr
- tr → tr_tr
- vi → vi
- ru → ru_ru
- fr → fr_fr
- de → de_de
- il
- à
- pt → pt_pt
- zh → zh_cn
- es → es_es
Obtention du jeton
- Dans l'administration WordPress : Menu Synchronisation TP → Bouton « Generate New Token » (jeton de 32 caractères, généré automatiquement lors du premier lancement).
- Le jeton est stocké dans l'option
jeton_api_de_sync_tp.