Documentación de la API para la integración de traducciones TranslatePress (TP Sync API)
Esta API proporciona dos endpoints para trabajar con las cadenas de traducción en el plugin TranslatePress. El idioma base es el inglés (en_us). Todas las solicitudes requieren autorización mediante un token Bearer (se obtiene en el administrador de WordPress bajo el menú "TP Sync").
URL base: https://your-site.com/wp-json/tp-sync/v1/
1. Obtención de líneas para traducir (GET /keys)
Este endpoint devuelve una lista de cadenas del diccionario TranslatePress para el idioma especificado. Cada cadena incluye un ID (en el formato diccionario: {id}), texto original en inglés, traducción actual, estado y metadatos de paginación. Ordenar por ID DESC (los más nuevos arriba). Fechas, creado en y actualizado el siempre null (no se solicitan en SQL).
Parámetros de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción | Valor predeterminado |
|---|---|---|---|---|
lang |
cadena | Sí | Código de idioma (por ejemplo, de para el alemán fr para 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:00Z). 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 |
|---|---|---|
clave_id |
cadena | ID único de la fila: diccionario: {id} (id — 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 indicado (puede estar vacía). |
estado |
entero | Estado: 0 — no traducido, 1 — en proceso, 2 — traducido. |
creado en |
cadena | Fecha de creación (ISO8601 null — no solicitado). |
actualizado el |
cadena | Fecha de la última actualización (ISO8601 null — no solicitado). |
Metadatosmeta)
total_countNúmero 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 siguiente: URL de la página siguientenull, si es el último).
Errores
- 401: Encabezado Authorization ausente o incorrecto.
- 403: Token inválido.
- 404: Idioma no encontrado en TranslatePress (tabla ausente).
2. Actualización de traducciones (POST /translations)
Este endpoint actualiza las traducciones para varias líneas a la vez (lote). Se pasa un arreglo de objetos con el ID de la línea, el idioma y la nueva traducción. Actualiza el estado a "traducido" (2) y el campo actualizado el.
Cuerpo de la solicitud (JSON)
Matriz traducciones con objetos:
{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Hola Mundo"
},
{
"key_id": "dictionary:124",
"language_iso": "de",
"translation": "Bienvenido"
}
]
}
Parámetros
| Campo en el objeto | Tipo | Obligatorio | Descripción |
|---|---|---|---|
clave_id |
cadena | Sí | ID de la fila: diccionario: {id} (desde GET /keys). |
código_iso_idioma |
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": "Hola Mundo"
}
]
}'
Ejemplo de respuesta (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": "Clave no encontrada en la base de datos"
}
]
}
Descripción de los campos en la respuesta
traduccionesArray de traducciones actualizadas con éxito (devuelve los datos de entrada +modificado elen ISO8601).errores(opcional, si hay fallos): Array de errores.índiceÍndice del elemento en el array original.clave_id: ID de la fila problemática (si aplica).errorTexto de error (ejemplos: "Campos obligatorios faltantes", "Formato de key_id inválido. Se espera: dictionary:{id}", "Idioma no encontrado", "Clave no encontrada en la base de datos", "Error al actualizar la base de datos").
Errores
- 400: Datos no válidos (vacío/no es un array)
traducciones, ausencia de campos). - 401/403: Problemas con la autorización.
- 404: Idioma o clave no encontrada (tabla/registro ausente).
Idiomas soportados
Los códigos cortos se normalizan automáticamente (basado en el mapeo en el código). Para los desconocidos: {code}_{code} (por ejemplo, pl → pl_pl).
- en → en_us
- a
- id → id_id
- ko → ko_kr
- tr → tr_tr
- vi → vi
- ru → ru_ru
- fr → fr_fr
- de → de_de
- eso
- a
- pt → pt_pt
- zh → zh_cn
- es → es_es
Obtención del token
- En el administrador de WordPress: Menú Sincronización TP → Botón "Generate New Token" (token de 32 caracteres, generado automáticamente en la primera ejecución).
- El token se almacena en la opción
token_api_de_sincronización_tp.