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