tp-sync-api

Документация API для интеграции переводов TranslatePress (TP Sync API)

Документация API для интеграции переводов TranslatePress (TP Sync API)

Этот API предоставляет два эндпоинта для работы со строками переводов в плагине TranslatePress. Базовый язык — английский (американский английскийВсе запросы требуют авторизации через Bearer-токен (получается в админке WordPress под меню "TP Sync").

Базовый URL: https://your-site.com/wp-json/tp-sync/v1/

1. Получение строк для перевода (GET /keys)

Этот эндпоинт возвращает список строк из словаря TranslatePress для указанного языка. Каждая строка включает ID (в формате, languages="[\"de\",\"fr\",\"id\",\"it\",\"ko\",\"tr\",\"vi\",\"zh\",\"ru\",\"pt\",\"es\"]") словарь:{id}Оригинальный текст на английском, текущий перевод, статус и метаданные пагинации. Сортировка по ID DESC (новые сверху). Даты, Создано и Обновлено всегда null не запрашиваются в SQL).

Параметры запроса

Параметр Тип Обязательный Описание Значение по умолчанию
язык строка Да Код языка (например,, de для немецкого,, fr для французского). Короткие коды нормализуются (de → de_de).
страница целое число Нет Номер страницы для пагинации. 1
Лимит целое число Нет Количество строк на странице (минимум 1, максимум 500). 100
Обновлено с строка Нет Фильтр по дате обновления (ISO8601, например, 2025-10-01T00:00:00Zinput=). Возвращает только строки, обновлённые после этой даты.

Заголовки

  • Авторизация: Bearer {токен} (обязательно)

Пример запроса (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"

Пример ответа (JSON)

{
  "keys": [
    {
      "key_id": "dictionary:123",
      "original": "Hello World",
      "translated": "Привет, мир",
      "status": 2,
      "created_at": null,
      "updated_at": null
    },
    {
      "key_id": "dictionary:124",
      "original": "Welcome",
      "translated": "Добро пожаловать",
      "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"
  }
}

Описание полей в ответе

Поле Тип Описание
Ключ ID строка Уникальный ID строки: словарь:{id} id — номер записи в таблице wp_trp_dictionary_en_us_{lang}).
original строка Оригинальный текст на английском.
переведено строка Текущий перевод для указанного языка (может быть пустым).
статус целое число Статус: 0 — не переведено, 1 — в процессе, 2 — переведено.
Создано строка Дата создания (ISO8601, null — не запрашивается).
Обновлено строка Дата последнего обновления (ISO8601) null — не запрашивается).

Метаданные (meta)

  • Общее количествоОбщее количество строк (с учётом фильтров).
  • страницаТекущая страница.
  • ЛимитЛимит на страницу.
  • Количество страницОбщее количество страниц.
  • следующая страницаURL следующей страницы (null, если последняя).

Ошибки

  • 401: Отсутствует или неверный заголовок Authorization.
  • 403: Неверный токен.
  • 404: Язык не найден в TranslatePress (таблица отсутствует).

Обновление переводов (POST /translations)

Этот эндпоинт обновляет переводы для нескольких строк за раз (батч). Передаётся массив объектов с ID строки, языком и новым переводом. Обновляет статус на "переведено" (2) и поле, languages="[\"de\",\"fr\",\"id\",\"it\",\"ko\",\"tr\",\"vi\",\"zh\",\"ru\",\"pt\",\"es\"]" Обновлено.

Тело запроса (JSON)

Массив переводы с объектами:

[
  {
    "key_id": "dictionary:123",
    "translation": "Привет, мир"
  },
  {
    "key_id": "dictionary:124",
    "translation": "Добро пожаловать"
  }
]

Параметры

Поле в объекте Тип Обязательный Описание
Ключ ID строка Да ID строки: словарь:{id} из GET /keys).
language_iso строка Да Код языка (de → de_de, нормализуется автоматически).
перевод строка Да Новый текст перевода (сохраняется как есть).

Заголовки

  • Авторизация: Bearer {токен} (обязательно)
  • Content-Type: application/json (обязательно)

Пример запроса (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"
      }
    ]
  }'

Пример ответа (JSON)

{
  "translations": [
    {
      "key_id": "dictionary:123",
      "language_iso": "de",
      "translation": "Привет, мир",
      "modified_at": "2025-10-15T12:00:00Z"
    }
  ],
  "errors": [
    {
      "index": 1,
      "key_id": "dictionary:999",
      "error": "Ключ не найден в базе данных"
    }
  ]
}

Описание полей в ответе

  • переводыМассив успешно обновлённых переводов (возвращает входные данные Изменено в ISO8601).,
  • ошибки (опционально, если есть неудачи): Массив ошибок.
    • индексИндекс элемента в исходном массиве.
    • Ключ IDID проблемной строки (если применимо).
    • ошибкаСообщение об ошибке (примеры: "Missing required fields", "Invalid key_id format. Expected: dictionary:{id}", "Language not found", "Key not found in database", "Database update failed").

Ошибки

  • 400: Неверные данные (пустой/не-массив) переводы, отсутствие полей).
  • 401/403: Проблемы с авторизацией.
  • 404: Язык или ключ не найден (таблица/запись отсутствует).

Поддерживаемые языки

Короткие коды автоматически нормализуются (на основе маппинга в коде). Для неизвестных: ввод={code}_{code} например, 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

Получение токена

  • В админке WordPress: Меню TP Sync → Кнопка "Generate New Token" (токен 32 символа, генерируется автоматически при первом запуске).
  • Токен хранится в опции tp_sync_api_token.