Dokumentasi API untuk integrasi terjemahan TranslatePress (TP Sync API)

Dokumentasi API untuk integrasi terjemahan TranslatePress (TP Sync API)

Этот API предоставляет два эндпоинта для работы со строками переводов в плагине TranslatePress. Базовый язык — английский (en_us). Semua permintaan memerlukan otorisasi melalui token Bearer (diperoleh di admin WordPress pada menu "TP Sync").

URL dasar: https://your-site.com/wp-json/tp-sync/v1/

1. Mengambil string untuk diterjemahkan (GET /keys)

Endpoint ini mengembalikan daftar string dari kamus TranslatePress untuk bahasa yang ditentukan. Setiap string menyertakan ID (dalam format, kamus:{id}), teks asli dalam bahasa Inggris, terjemahan saat ini, status dan metadata paginasi. Pengurutan berdasarkan ID DESC (yang terbaru di atas). Tanggal, created_at dan updated_at selalu null (tidak diminta dalam SQL).

Parameter permintaan

Parameter, Jenis Wajib Deskripsi Nilai default
lang string Ya Код языка (например, de untuk bahasa Jerman, fr untuk bahasa Prancis). Kode pendek dinormalisasi (de → de_de). —
halaman bilangan bulat Tidak Nomor halaman untuk paginasi. 1
batas bilangan bulat Tidak Jumlah baris per halaman (minimum 1, maksimum 500). 100
updated_since string Tidak Фильтр по дате обновления (ISO8601, например, 2025-10-01T00:00:00Z). Hanya mengembalikan baris yang diperbarui setelah tanggal ini. —

Judul

  • Authorization: Bearer {токен} (wajib)

Contoh permintaan (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"

Contoh respons (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"
  }
}

Deskripsi bidang dalam respons

Kolom Jenis Deskripsi
key_id string ID baris unik: kamus:{id} id — nomor catatan dalam tabel wp_trp_dictionary_en_us_{lang}).
asli string Teks asli dalam bahasa Inggris.
diterjemahkan string Terjemahan saat ini untuk bahasa yang ditentukan (dapat kosong).
status bilangan bulat Status: 0 — belum diterjemahkan, 1 — sedang diproses, 2 — diterjemahkan.
created_at string Tanggal pembuatan (ISO8601, null — tidak diminta).
updated_at string Дата последнего обновления (ISO8601, null — tidak diminta).

Metadata (meta)

  • total_count: Jumlah total baris (dengan mempertimbangkan filter).
  • halaman: Halaman saat ini.
  • batas: Batas per halaman.
  • page_count=: Jumlah total halaman.
  • halaman_berikutnya: URL следующей страницы (null, jika yang terakhir).

Kesalahan

  • 401: Header Authorization tidak ada atau tidak valid.
  • 403: Token tidak valid.
  • 404: Bahasa tidak ditemukan di TranslatePress (tabel tidak ada).

2. Pembaruan terjemahan (POST /translations)

Endpoint ini memperbarui terjemahan untuk beberapa string sekaligus (batch). Array objek dengan ID string, bahasa, dan terjemahan baru diteruskan. Memperbarui status menjadi "diterjemahkan" (2) dan bidang, updated_at.

Isi permintaan (JSON)

Larik terjemahan dengan objek:

{
  "translations": [
    {
      "key_id": "dictionary:123",
      "language_iso": "de",
      "translation": "Hallo Welt"
    },
    {
      "key_id": "dictionary:124",
      "language_iso": "de",
      "translation": "Willkommen"
    }
  ]
}

Pengaturan

Bidang dalam objek, Jenis Wajib Deskripsi
key_id string Ya ID baris: kamus:{id} (dari GET /keys).
language_iso string Ya Kode bahasa (de → de_de, dinormalisasi secara otomatis).
Terjemahan string Ya Новый текст перевода (сохраняется как есть).

Judul

  • Authorization: Bearer {токен} (wajib)
  • Content-Type: application/json (wajib)

Contoh permintaan (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"
      }
    ]
  }'

Contoh respons (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": "Key not found in database"
    }
  ]
}

Deskripsi bidang dalam respons

  • terjemahan: Array terjemahan yang berhasil diperbarui (mengembalikan data input + modified_at dalam ISO8601).
  • kesalahan (opsional, jika ada kegagalan): Array kesalahan.
    • indeks: Indeks elemen dalam array sumber.
    • key_id: ID baris bermasalah (jika berlaku).
    • kesalahan: Teks kesalahan (contoh: "Bidang wajib tidak ada", "Format key_id tidak valid. Diharapkan: dictionary:{id}", "Bahasa tidak ditemukan", "Kunci tidak ditemukan di database", "Pembaruan database gagal").

Kesalahan

  • 400: Неверные данные (пустой/не-массив terjemahan, tidak adanya bidang).
  • 401/403: Masalah otorisasi.
  • 404: Bahasa atau kunci tidak ditemukan (tabel/catatan tidak ada).

Bahasa yang didukung

Kode pendek dinormalisasi secara otomatis (berdasarkan pemetaan dalam kode). Untuk yang tidak dikenal:, {code}_{code} (misalnya, 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

Mendapatkan token

  • Di admin WordPress: Menu, Sinkronisasi TP → Tombol "Buat Token Baru" (token 32 karakter, dibuat otomatis saat pertama kali dijalankan).
  • Token disimpan dalam opsi, tp_sync_api_token.