Documentación de la API para la integración de traducciones en TranslatePress (TP Sync API)
Esta API proporciona dos endpoints para trabajar con cadenas de traducción en el plugin TranslatePress. El idioma base es el inglés (inglés estadounidenseTodas las solicitudes requieren autenticación a través de un Bearer-token (se obtiene en el panel de administración de WordPress en el menú "TP Sync").
URL base: https://your-site.com/wp-json/tp-sync/v1/
1. Obtención de cadenas para traducción (GET /keys)
Este endpoint devuelve una lista de cadenas del diccionario TranslatePress para el idioma especificado. Cada cadena incluye un ID (en el formato, languages="[\"de\",\"fr\",\"id\",\"it\",\"ko\",\"tr\",\"vi\",\"zh\",\"ru\",\"pt\",\"es\"]") diccionario:{id}Texto original en inglés, traducción actual, estado y metadatos de paginación. Ordenado por ID DESC (los más recientes arriba). Fechas, Creado el y Actualizado a siempre null no se solicitan en SQL).
Parámetros de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción | Valor por defecto |
|---|---|---|---|---|
idioma |
cadena | Sí | Código de idioma (por ejemplo, de para el alemán,, fr para el francés). Los códigos cortos se normalizan (de → de_de). |
— |
página |
entero | No | Número de página para la paginación. | 1 |
Límite |
entero | No | Número de filas por página (mínimo 1, máximo 500). | 100 |
Actualizado desde |
cadena | No | Filtro por fecha de actualización (ISO8601, por ejemplo, 2025-10-01T00:00:00Zinput=). Devuelve solo las filas actualizadas después de esta fecha. |
— |
Títulos
Autorización: Bearer {токен}(obligatorio)
Ejemplo de solicitud (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"
Ejemplo de respuesta (JSON)
{
"keys": [
{
"key_id": "dictionary:123",
"original": "Hello World",
"translated": "Hola Mundo",
"status": 2,
"created_at": null,
"updated_at": null
},
{
"key_id": "dictionary:124",
"original": "Welcome",
"translated": "Bienvenido",
"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"
}
}
Descripción de los campos en la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
ID de la clave |
cadena | ID único de la línea: diccionario:{id} id — el número de registro en la tabla wp_trp_dictionary_en_us_{lang}). |
original |
cadena | Texto original en inglés. |
traducido |
cadena | Traducción actual para el idioma especificado (puede estar vacía). |
estado |
entero | Estado: 0 — no traducido, 1 — en progreso, 2 — traducido. |
Creado el |
cadena | Fecha de creación (ISO8601, null — не запрашивается). |
Actualizado a |
cadena | Fecha de la última actualización (ISO8601) null — не запрашивается). |
Metadatos (meta)
Conteo totalCantidad total de filas (incluyendo filtros).páginaPágina actual.LímiteLímite por página.Número de páginasCantidad total de páginas.página siguienteURL de la siguiente página (null, si es la última).
Errores
- 401: Falta o es inválido el encabezado Authorization.
- 403: Token no válido.
- 404: Idioma no encontrado en TranslatePress (tabla ausente).
Actualización de traducciones (POST /translations)
Este endpoint actualiza las traducciones de varias cadenas a la vez (batch). Se pasa un array de objetos con el ID de la cadena, el idioma y la nueva traducción. Actualiza el estado a "traducido" (2) y el campo, languages="[\"de\",\"fr\",\"id\",\"it\",\"ko\",\"tr\",\"vi\",\"zh\",\"ru\",\"pt\",\"es\"]" Actualizado a.
Cuerpo de la solicitud (JSON)
Array traducciones con objetos:
[
{
"key_id": "dictionary:123",
"translation": "Hola Mundo"
},
{
"key_id": "dictionary:124",
"translation": "Bienvenido"
}
]
Parámetros
| Campo en el objeto | Tipo | Obligatorio | Descripción |
|---|---|---|---|
ID de la clave |
cadena | Sí | ID de la línea: diccionario:{id} de GET /keys). |
language_iso |
cadena | Sí | Código de idioma (de → de_de, normalizado automáticamente). |
traducción |
cadena | Sí | Nuevo texto de traducción (se mantiene tal cual). |
Títulos
Autorización: Bearer {токен}(obligatorio)Content-Type: application/json(obligatorio)
Ejemplo de solicitud (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"
}
]
}'
Ejemplo de respuesta (JSON)
{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Hola Mundo",
"modified_at": "2025-10-15T12:00:00Z"
}
],
"errors": [
{
"index": 1,
"key_id": "dictionary:999",
"error": "Clave no encontrada en la base de datos"
}
]
}
Descripción de los campos en la respuesta
traduccionesArreglo de traducciones actualizadas con éxito (devuelve los datos de entradaModificado aen ISO8601).,errores(opcional, si hay fallos): Array de erroresíndiceÍndice del elemento en el array original.ID de la claveID de la línea problemática (si es aplicable).errorMensaje de error (ejemplos: "Missing required fields", "Invalid key_id format. Expected: dictionary:{id}", "Language not found", "Key not found in database", "Database update failed").
Errores
- 400: Datos inválidos (vacío/no es un array)
traducciones, falta de campos). - 401/403: Problemas de autorización.
- 404: Idioma o clave no encontrada (tabla/registro ausente).
Idiomas soportados
Los códigos cortos se normalizan automáticamente (basados en el mapeo del código). Para los desconocidos: entrada={code}_{code} por ejemplo, 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
Obtención del token
- En el administrador de WordPress: Menú TP Sync → Botón "Generate New Token" (token de 32 caracteres, generado automáticamente en el primer inicio).
- El token se almacena en la opción
tp_sync_api_token.