Документация 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.