tp-sync-api

Documentación de la API para la integración de traducciones TranslatePress (TP Sync API)

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 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 ID de la fila: diccionario: {id} (desde GET /keys).
código_iso_idioma cadena Código de idioma (de → de_de, normalizado automáticamente).
traducción cadena 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 el en 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.