tp-sync-api

Dokumentasi API untuk integrasi terjemahan TranslatePress (TP Sync API)

Dokumentasi API untuk integrasi terjemahan TranslatePress (TP Sync API)

API ini menyediakan dua endpoint untuk bekerja dengan string terjemahan di plugin TranslatePress. Bahasa dasar adalah bahasa Inggris (en_us). Semua permintaan memerlukan otorisasi melalui token Bearer (didapatkan di admin WordPress di bawah menu "TP Sync").

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

1. Mendapatkan baris untuk diterjemahkan (GET /keys)

Endpoint ini mengembalikan daftar string dari kamus TranslatePress untuk bahasa yang ditentukan. Setiap string mencakup ID (dalam format kamus: {id}), teks asli dalam bahasa Inggris, terjemahan saat ini, status, dan metadata paging. Urutkan berdasarkan ID DESC (terbaru di atas). Tanggal, dibuat pada dan terakhir diperbarui selalu null (tidak diminta dalam SQL).

Parameter permintaan

Parameter Tipe Wajib Deskripsi Nilai default
lang string Ya Kode bahasa (misalnya, 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
diperbarui sejak string Tidak Filter berdasarkan tanggal pembaruan (ISO8601, misalnya,) 2025-10-01T00:00:00Z). Mengembalikan hanya baris yang diperbarui setelah tanggal ini.

Judul

  • Otorisasi: 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 jawaban (JSON)

{
  "keys": [
    {
      "key_id": "dictionary:123",
      "original": "Hello World",
      "translated": "Halo Dunia",
      "status": 2,
      "created_at": null,
      "updated_at": null
    },
    {
      "key_id": "dictionary:124",
      "original": "Welcome",
      "translated": "Selamat datang",
      "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

Bidang Tipe Deskripsi
kunci_id string ID unik baris: kamus: {id} (id — nomor rekaman dalam tabel wp_trp_dictionary_en_us_{lang}).
original string Teks asli dalam bahasa Inggris.
diterjemahkan string Terjemahan saat ini untuk bahasa yang ditentukan (bisa kosong).
status bilangan bulat Status: 0 — belum diterjemahkan, 1 — dalam proses, 2 — sudah diterjemahkan.
dibuat pada string Tanggal pembuatan (ISO8601 null — tidak diminta).
terakhir diperbarui string Tanggal pembaruan terakhir (ISO8601 null — tidak diminta).

Metadatameta)

  • total_countJumlah total baris (termasuk filter).
  • halamanHalaman saat ini.
  • batasBatas per halaman.
  • jumlah halamanJumlah total halaman.
  • halaman berikutnya: URL halaman berikutnyanull, jika terakhir).

Kesalahan

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

2. Memperbarui terjemahan (POST /translations)

Endpoint ini memperbarui terjemahan untuk beberapa baris sekaligus (batch). Dikirimkan array objek dengan ID baris, bahasa, dan terjemahan baru. Memperbarui status ke "diterjemahkan" (2) dan bidang terakhir diperbarui.

Badan permintaan (JSON)

Array terjemahan dengan objek:

{
  "translations": [
    {
      "key_id": "dictionary:123",
      "language_iso": "de",
      "translation": "Halo Dunia"
    },
    {
      "key_id": "dictionary:124",
      "language_iso": "de",
      "translation": "Selamat datang"
    }
  ]
}

Parameter

Kolom dalam objek Tipe Wajib Deskripsi
kunci_id string Ya ID baris: kamus: {id} (dari GET /keys).
kode_iso_bahasa string Ya Kode bahasa (de → de_de, dinormalisasi secara otomatis).
terjemahan string Ya Teks terjemahan baru (disimpan apa adanya).

Judul

  • Otorisasi: 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": "Halo Dunia"
      }
    ]
  }'

Contoh jawaban (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": "Kunci tidak ditemukan di database"
    }
  ]
}

Deskripsi bidang dalam respons

  • terjemahanArray terjemahan yang berhasil diperbarui (mengembalikan data input + diubah pada dalam ISO8601).
  • kesalahan (opsional, jika terdapat kegagalan): Array kesalahan.
    • indeksIndeks elemen dalam array sumber.
    • kunci_id: ID baris bermasalah (jika berlaku).
    • kesalahanTeks kesalahan (contoh: "Field yang dibutuhkan hilang", "Format key_id tidak valid. Diharapkan: dictionary:{id}", "Bahasa tidak ditemukan", "Kunci tidak ditemukan di database", "Gagal memperbarui database").

Kesalahan

  • 400: Data tidak valid (kosong/bukan array) terjemahan, tidak adanya bidang).
  • 401/403: Masalah otorisasi.
  • 404: Bahasa atau kunci tidak ditemukan (tabel/rekaman tidak ada).

Bahasa yang didukung

Kode singkat secara otomatis dinormalisasi (berdasarkan pemetaan dalam kode). Untuk yang tidak dikenal: {code}_{code} (misalnya, pl → pl_pl).

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

Mendapatkan token

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