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 padadalam 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.