tp-sync-api

Tài liệu API cho tích hợp bản dịch TranslatePress (TP Sync API)

Tài liệu API cho tích hợp bản dịch TranslatePress (TP Sync API)

API này cung cấp hai điểm cuối để làm việc với các chuỗi dịch trong plugin TranslatePress. Ngôn ngữ cơ sở là tiếng Anh (en_us). Tất cả các yêu cầu đều yêu cầu xác thực qua Bearer token (lấy trong admin WordPress dưới menu "TP Sync").

URL cơ bản: https://your-site.com/wp-json/tp-sync/v1/

1. Lấy các dòng cần dịch (GET /keys)

Đầu cuối này trả về danh sách các chuỗi từ từ điển TranslatePress cho ngôn ngữ được chỉ định. Mỗi chuỗi bao gồm ID (theo định dạng từ điển: {id}), văn bản gốc bằng tiếng Anh, bản dịch hiện tại, trạng thái và siêu dữ liệu phân trang. Sắp xếp theo ID DESC (mới nhất ở trên). Ngày tháng, tạo lúccập nhật lúc luôn luôn null (không được yêu cầu trong SQL).

Tham số yêu cầu

Tham số Loại Bắt buộc Mô tả Giá trị mặc định
lang chuỗi Vâng Mã ngôn ngữ (ví dụ, de cho tiếng Đức fr đối với tiếng Pháp). Mã ngắn được chuẩn hóa (de → de_de).
trang số nguyên Không Số trang để phân trang. 1
giới hạn số nguyên Không Số dòng trên mỗi trang (tối thiểu 1, tối đa 500). 100
cập nhật từ chuỗi Không Bộ lọc theo ngày cập nhật (ISO8601, ví dụ,) 2025-10-01T00:00:00Z). Chỉ trả về các dòng được cập nhật sau ngày này.

Tiêu đề

  • Ủy quyền: Bearer {токен} (bắt buộc)

Ví dụ về yêu cầu (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"

Ví dụ về phản hồi (JSON)

{
  "keys": [
    {
      "key_id": "dictionary:123",
      "original": "Hello World",
      "translated": "Xin chào Thế giới",
      "status": 2,
      "created_at": null,
      "updated_at": null
    },
    {
      "key_id": "dictionary:124",
      "original": "Welcome",
      "translated": "Chào mừng",
      "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"
  }
}

Mô tả các trường trong phản hồi

Trường Loại Mô tả
khóa_id chuỗi ID duy nhất của dòng: từ điển: {id} (id — số ghi trong bảng wp_trp_dictionary_en_us_{lang}).
gốc chuỗi Văn bản gốc bằng tiếng Anh.
đã dịch chuỗi Bản dịch hiện tại cho ngôn ngữ được chỉ định (có thể để trống).
trạng thái số nguyên Trạng thái: 0 — chưa dịch, 1 — đang tiến hành, 2 — đã dịch.
tạo lúc chuỗi Ngày tạo (ISO8601 null — không được yêu cầu).
cập nhật lúc chuỗi Ngày cập nhật cuối cùng (ISO8601 null — không được yêu cầu).

Siêu dữ liệumeta)

  • total_countTổng số dòng (bao gồm cả bộ lọc).
  • trangTrang hiện tại.
  • giới hạnGiới hạn trên mỗi trang.
  • số trangTổng số trang.
  • trang tiếp theo: URL của trang tiếp theonull, nếu là cái cuối cùng).

Lỗi

  • 401: Thiếu hoặc sai tiêu đề Authorization.
  • 403: Mã thông báo không hợp lệ.
  • 404: Ngôn ngữ không tìm thấy trong TranslatePress (bảng bị thiếu).

2. Cập nhật bản dịch (POST /translations)

Đầu cuối này cập nhật bản dịch cho nhiều dòng cùng lúc (theo lô). Truyền một mảng các đối tượng với ID dòng, ngôn ngữ và bản dịch mới. Cập nhật trạng thái thành "đã dịch" (2) và trường cập nhật lúc.

Thân yêu cầu (JSON)

Mảng bản dịch với các đối tượng:

{
  "translations": [
    {
      "key_id": "dictionary:123",
      "language_iso": "de",
      "translation": "Xin chào thế giới"
    },
    {
      "key_id": "dictionary:124",
      "language_iso": "de",
      "translation": "Chào mừng"
    }
  ]
}

Cài đặt

Trường trong đối tượng Loại Bắt buộc Mô tả
khóa_id chuỗi Vâng ID dòng: từ điển: {id} (từ GET /keys).
mã_iso_ngôn_ngữ chuỗi Vâng Mã ngôn ngữ (de → de_de, được chuẩn hóa tự động).
bản dịch chuỗi Vâng Văn bản dịch mới (giữ nguyên như cũ).

Tiêu đề

  • Ủy quyền: Bearer {токен} (bắt buộc)
  • Content-Type: application/json (bắt buộc)

Ví dụ về yêu cầu (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": "Xin chào Thế giới"
      }
    ]
  }'

Ví dụ về phản hồi (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": "Không tìm thấy khóa trong cơ sở dữ liệu"
    }
  ]
}

Mô tả các trường trong phản hồi

  • bản dịchMảng bản dịch đã cập nhật thành công (trả về dữ liệu đầu vào + đã sửa vào theo định dạng ISO8601).
  • lỗi (tùy chọn, nếu có thất bại): Mảng lỗi.
    • chỉ mụcChỉ số của phần tử trong mảng gốc.
    • khóa_id: ID dòng có vấn đề (nếu có).
    • lỗiVăn bản lỗi (ví dụ: "Thiếu các trường bắt buộc", "Định dạng key_id không hợp lệ. Mong đợi: dictionary:{id}", "Không tìm thấy ngôn ngữ", "Không tìm thấy khóa trong cơ sở dữ liệu", "Cập nhật cơ sở dữ liệu thất bại").

Lỗi

  • 400: Dữ liệu không hợp lệ (rỗng/không phải mảng) bản dịch, thiếu trường).
  • 401/403: Vấn đề về xác thực.
  • 404: Ngôn ngữ hoặc khóa không tìm thấy (bảng/bản ghi không tồn tại).

Các ngôn ngữ được hỗ trợ

Mã ngắn được tự động chuẩn hóa (dựa trên ánh xạ trong mã). Đối với những mã không xác định: {code}_{code} (ví dụ, pl → pl_pl).

  • en → en_us
  • đến
  • id → id_id
  • ko → ko_kr
  • tr → tr_tr
  • vi → vi
  • ru → ru_ru
  • fr → fr_fr
  • de → de_de
  • đến
  • pt → pt_pt
  • zh → zh_cn
  • es → es_es

Lấy mã thông báo

  • Trong quản trị WordPress: Menu Đồng bộ TP → Nút "Generate New Token" (mã thông báo 32 ký tự, được tạo tự động khi chạy lần đầu).
  • Token được lưu trữ trong tùy chọn token_api_đồng_bộ_tp.