TranslatePress 번역 통합을 위한 API 문서 (TP Sync API)

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_atupdated_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_at ISO8601로).
  • 오류 (선택 사항, 실패가 있는 경우): 오류 배열.
    • 인덱스: 소스 배열에 있는 요소의 인덱스.
    • 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.