Dokumentasi API untuk integrasi terjemahan TranslatePress (TP Sync API)
API ini menyediakan dua endpoint untuk bekerja dengan string terjemahan dalam plugin TranslatePress. Bahasa dasar adalah bahasa Inggris (Inggris ASSemua permintaan memerlukan otentikasi melalui Bearer-token (didapatkan di halaman 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 mencakup ID (dalam format, languages="[\"de\",\"fr\",\"id\",\"it\",\"ko\",\"tr\",\"vi\",\"zh\",\"ru\",\"pt\",\"es\"]") kamus:{id}Teks asli dalam bahasa Inggris, terjemahan saat ini, status dan metadata paginasi. Urutan berdasarkan ID DESC (terbaru di atas). Tanggal, Dibuat pada dan Diperbarui pada selalu null tidak diminta dalam SQL).
Parameter permintaan
| Parameter | Tipe | Wajib | Deskripsi | Nilai default |
|---|---|---|---|---|
Bahasa |
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 (minimal 1, maksimal 500). | 100 |
Diperbarui sejak |
string | Tidak | Saring berdasarkan tanggal pembaruan (ISO8601, misalnya, 2025-10-01T00:00:00Zinput=). Hanya mengembalikan 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 respons (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
| Kolom | Tipe | Deskripsi |
|---|---|---|
ID kunci |
string | ID baris unik: kamus:{id} id — nomor rekaman dalam tabel wp_trp_dictionary_en_us_{lang}). |
asli |
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 — diterjemahkan. |
Dibuat pada |
string | Tanggal pembuatan (ISO8601, null — не запрашивается). |
Diperbarui pada |
string | Tanggal pembaruan terakhir (ISO8601) null — не запрашивается). |
Metadata (meta)
Jumlah totalJumlah total baris (termasuk filter).halamanHalaman saat ini.BatasBatas halaman.Jumlah halamanJumlah total halaman.halaman berikutnyaURL halaman berikutnya (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).
Pembaruan terjemahan (POST /translations)
Endpoint ini memperbarui terjemahan untuk beberapa string sekaligus (batch). Diberikan sebuah array objek yang berisi ID string, bahasa, dan terjemahan baru. Endpoint ini mengubah status menjadi "diterjemahkan" (2) serta field, languages="[\"de\",\"fr\",\"id\",\"it\",\"ko\",\"tr\",\"vi\",\"zh\",\"ru\",\"pt\",\"es\"]" Diperbarui pada.
Badan Permintaan (JSON)
Array terjemahan dengan objek:
[
{
"key_id": "dictionary:123",
"translation": "Halo Dunia"
},
{
"key_id": "dictionary:124",
"translation": "Selamat datang"
}
]
Parameter
| Bidang dalam objek | Tipe | Wajib | Deskripsi |
|---|---|---|---|
ID kunci |
string | Ya | ID baris: kamus:{id} dari GET /keys). |
language_iso |
string | Ya | Kode bahasa (de → de_de, dinormalisasi secara otomatis). |
terjemahan |
string | Ya | Teks terjemahan baru (tetap sama seperti 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": "Hallo Welt"
}
]
}'
Contoh respons (JSON)
{
"translations": [
{
"key_id": "dictionary:123",
"language_iso": "de",
"translation": "Halo Dunia",
"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 masukanDiubah padadalam ISO8601).,kesalahan(opsional, jika ada kegagalan): Array kesalahanindeksIndeks elemen dalam array asli.ID kunciID baris bermasalah (jika berlaku).kesalahanPesan kesalahan (contoh: "Missing required fields", "Invalid key_id format. Expected: dictionary:{id}", "Language not found", "Key not found in database", "Database update failed").
Kesalahan
- 400: Data tidak valid (kosong/bukan array)
terjemahan, tidak ada kolom). - 401/403: Masalah dengan otorisasi.
- 404: Bahasa atau kunci tidak ditemukan (tabel/entri tidak ada).
Bahasa yang didukung
Kode pendek secara otomatis dinormalisasi (berdasarkan pemetaan dalam kode). Untuk yang tidak dikenal: masukan={code}_{code} misalnya, pl → pl_pl).
- en → en_us
- ar → ar
- id → id_id
- ko → ko_kr
- tr → tr_tr
- vi
- ru → ru_ru
- fr → fr_fr
- de → de_de
- it → it_it
- ja
- pt → pt_pt
- zh → zh_cn
- es → es_es
Pengambilan token
- Di bagian admin WordPress: Menu TP Sync → Tombol "Generate New Token" (token 32 karakter, dihasilkan secara otomatis saat pertama kali dijalankan).
- Token disimpan dalam opsi
tp_sync_api_token.