TranslatePress 번역 통합을 위한 API 문서 (TP Sync API)
Этот API предоставляет два эндпоинта для работы со строками переводов в плагине TranslatePress. Базовый язык — английский (en_us). 모든 요청에는 Bearer 토큰을 통한 인증이 필요합니다(WordPress 관리자 화면의 "TP Sync" 메뉴에서 얻을 수 있습니다).
기본 URL: https://your-site.com/wp-json/tp-sync/v1/
1. 번역할 문자열 가져오기 (GET /keys)
이 엔드포인트는 지정된 언어의 TranslatePress 사전에서 문자열 목록을 반환합니다. 각 문자열에는 ID(형식은, 사전:{id}), 영어 원문, 현재 번역, 상태 및 페이지네이션 메타데이터. ID DESC 기준 정렬 (최신 항목이 위). 날짜, created_at 및 updated_at 항상 null (SQL에서 요청되지 않음).
요청 매개변수
| 매개변수, | 유형 | 필수 | 설명 | 기본값 |
|---|---|---|---|---|
lang |
문자열 | 예 | Код языка (например, de 독일어용, fr 프랑스어용). 짧은 코드는 정규화됩니다 (de → de_de). |
— |
페이지 |
정수 | 아니요 | 페이지네이션을 위한 페이지 번호. | 1 |
제한 |
정수 | 아니요 | 페이지당 행 수 (최소 1, 최대 500). | 100 |
updated_since |
문자열 | 아니요 | Фильтр по дате обновления (ISO8601, например, 2025-10-01T00:00:00Z). 이 날짜 이후에 업데이트된 행만 반환합니다. |
— |
제목
Authorization: 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": "Hallo Welt",
"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"
}
}
응답의 필드 설명
| 필드 | 유형 | 설명 |
|---|---|---|
key_id |
문자열 | 고유 행 ID: 사전:{id} id — 테이블의 레코드 번호 wp_trp_dictionary_en_us_{lang}). |
원본 |
문자열 | 영어 원문. |
번역됨 |
문자열 | 지정된 언어의 현재 번역(비어 있을 수 있음). |
상태 |
정수 | 상태: 0 — 번역되지 않음, 1 — 진행 중, 2 — 번역됨. |
created_at |
문자열 | 생성일 (ISO8601, null — 요청되지 않음). |
updated_at |
문자열 | Дата последнего обновления (ISO8601, null — 요청되지 않음). |
메타데이터 (meta)
total_count: 총 행 수 (필터 고려).페이지: 현재 페이지.제한: 페이지당 제한.page_count=: 총 페이지 수.다음_페이지: URL следующей страницы (null, 마지막인 경우).
오류
- 401: Authorization 헤더가 없거나 유효하지 않습니다.
- 403: 유효하지 않은 토큰입니다.
- 404: TranslatePress에서 언어를 찾을 수 없습니다 (테이블이 없습니다).
2. 번역 업데이트 (POST /translations)
이 엔드포인트는 여러 문자열의 번역을 한 번에 업데이트합니다(배치). 문자열 ID, 언어 및 새 번역이 포함된 객체 배열이 전달됩니다. 상태를 "번역됨" (2) 및 필드로 업데이트합니다, updated_at.
요청 본문 (JSON)
배열 번역 객체 포함:
{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Hallo Welt"
},
{
"key_id": "dictionary:124",
"language_iso": "de",
"translation": "Willkommen"
}
]
}
설정
| 객체의 필드, | 유형 | 필수 | 설명 |
|---|---|---|---|
key_id |
문자열 | 예 | 행 ID: 사전:{id} (GET /keys에서). |
language_iso |
문자열 | 예 | 언어 코드 (de → de_de, 자동으로 정규화됨). |
번역 |
문자열 | 예 | Новый текст перевода (сохраняется как есть). |
제목
Authorization: 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": "Hallo Welt",
"modified_at": "2025-10-15T12:00:00Z"
}
],
"errors": [
{
"index": 1,
"key_id": "dictionary:999",
"error": "데이터베이스에서 키를 찾을 수 없음"
}
]
}
응답의 필드 설명
번역: 성공적으로 업데이트된 번역 배열 (입력 데이터를 반환 +modified_atISO8601로).오류(선택 사항, 실패가 있는 경우): 오류 배열.인덱스: 소스 배열에 있는 요소의 인덱스.key_id: 문제가 있는 행의 ID (해당하는 경우).오류: 오류 텍스트 (예: "필수 필드가 누락되었습니다", "key_id 형식이 잘못되었습니다. 예상 형식: dictionary:{id}", "언어를 찾을 수 없습니다", "데이터베이스에서 키를 찾을 수 없습니다", "데이터베이스 업데이트에 실패했습니다").
오류
- 400: Неверные данные (пустой/не-массив
번역, 필드 없음). - 401/403: 인증 문제.
- 404: 언어 또는 키를 찾을 수 없습니다 (테이블/레코드 없음).
지원되는 언어
짧은 코드는 자동으로 정규화됩니다 (코드의 매핑을 기반으로 함). 알 수 없는 항목의 경우:, {code}_{code} (예, pl → pl_pl).
- en → en_us
- ar → ar
- id → id_id
- ko → ko_kr
- tr → tr_tr
- vi → vi
- ru → ru_ru
- fr → fr_fr
- de → de_de
- it → it_it
- ja → ja
- pt → pt_pt
- zh → zh_cn
- es → es_es
토큰 가져오기
- WordPress 관리자 화면: 메뉴, TP 동기화 → "새 토큰 생성" 버튼 (32자 토큰, 첫 실행 시 자동으로 생성됨).
- 토큰은 옵션에 저장됩니다,
tp_sync_api_token.