Saya Menerjemahkan 3,9 Juta Kata dalam 4 Hari dengan Agen AI Paralel
493 postingan blog selama 17 tahun, diterjemahkan ke 10 bahasa, ~4.900 file, ~3,9 juta kata. Agen paralel Claude Code membuatnya mungkin — tapi bencana Korea, masalah suara Kanton, dan batas penggunaan 5 jam mengajarkan lebih banyak daripada keberhasilannya.
Sebulan lalu, saya menambahkan 5 bahasa ke DIALØGUE dalam 48 jam dan menulis tentang bagaimana dokumen perencanaan adalah rahasia eksekusi AI yang cepat.
Itu 5 bahasa untuk satu aplikasi dengan sekitar 400 string UI.
Minggu ini, saya mencoba sesuatu yang jauh lebih besar: melokalisasi seluruh blog saya — 493 postingan selama 17 tahun — ke 9 bahasa. Vietnam, Spanyol, Prancis, Portugis, Jerman, Jepang, Korea, Mandarin Sederhana, dan Kanton.
4.437 file yang diterjemahkan. ~3,5 juta kata. 212 git commit. 4 hari.
Ini bukan cerita tentang AI yang ajaib. Ini cerita tentang apa yang sebenarnya terjadi ketika kamu melemparkan ribuan tugas terjemahan ke agen AI paralel — orkestrasi yang berhasil, kegagalan yang tidak muncul sampai kamu membaca output-nya, dan kebenaran yang tidak nyaman tentang kontrol kualitas ketika mesin menulis dalam skala.
Masalah Skala
Blog saya kembali ke 2007. Beberapa postingan adalah update 300 kata tentang search marketing di Singapura. Lainnya adalah deep dive 5.000 kata tentang hubungan AS-China atau panduan relokasi ekspatriat. Arsipnya mencakup semuanya dari analitik Yahoo SEM hingga review buku hingga peluncuran produk AI.
Menerjemahkan 493 postingan secara manual ke 9 bahasa akan memakan waktu tim penerjemah profesional berminggu-minggu. Mungkin berbulan-bulan. Dan biayanya di antara "tidak nyaman" dan "refinance rumah."
Tapi saya sudah membangun infrastruktur i18n — routing next-intl, komponen locale-aware, ISR untuk halaman non-Inggris — sebagai bagian dari push internasionalisasi yang lebih luas. Stack teknisnya sudah siap. Saya hanya butuh kontennya.
Hari 1: Vietnam dan Pelajaran Pertama
Saya mulai dengan bahasa Vietnam karena ini personal — ini bahasa pertama saya. Saya bisa membaca setiap postingan yang diterjemahkan dan langsung tahu jika ada yang terdengar salah.
Claude Code menerjemahkan semua 493 postingan dalam satu sesi. Prosesnya terlihat bersih:
- Baca file MDX Inggris
- Terjemahkan konten, pertahankan semua struktur frontmatter
- Jaga URL, blok kode, dan istilah teknis tetap utuh
- Tulis file terjemahan ke
content/blog/vi/YYYY/MM/DD/slug.mdx - Sign-off dengan padanan Vietnam dari "Cheers, Chandler"
QA pass pertama menangkap pola yang akan menghantui setiap bahasa: URL dan sign-off. Agen akan "menerjemahkan" URL blog internal (mengubah /blog/2024/... menjadi slug Vietnam yang tidak ada), mengganti "Chandler" dengan varian nama Vietnam, dan kadang kehilangan field slug frontmatter sepenuhnya.
Saya membangun checklist QA:
- Jumlah file cocok dengan sumber (493)
- Tidak ada file kosong atau stub
- Semua frontmatter punya
slug,title,date,categories - Tidak ada URL internal yang ditulis ulang
- Sign-off cocok dengan konvensi locale target
- Untuk bahasa CJK: karakter native benar-benar ada
Checklist itu menjadi tulang punggung setiap locale berikutnya.
Hari 2: Terobosan Agen Paralel
Dengan Vietnam selesai dan checklist QA terbukti, saya perlu lebih cepat. Fitur andalan Claude Code untuk pekerjaan semacam ini adalah dispatch subagen paralel — kamu bisa memunculkan beberapa agen independen yang masing-masing bekerja pada file berbeda secara bersamaan.
Ini tampilan orkestrasi untuk bahasa Spanyol:
Mengirim 30 agen penerjemahan...
├── Agen 1: postingan 2007-2008 (42 postingan)
├── Agen 2: postingan 2009 (38 postingan)
├── Agen 3: postingan 2010-2011 (35 postingan)
├── ...
├── Agen 28: postingan Nov-Des 2025 (12 postingan)
├── Agen 29: postingan Jan 2026 (8 postingan)
└── Agen 30: postingan Feb 2026 (9 postingan)
Setiap agen mendapat batch postingan, panduan gaya, checklist QA, dan konvensi sign-off. Mereka berjalan secara paralel, menulis file secara independen. Tidak perlu koordinasi karena setiap agen menyentuh file berbeda.
Spanyol: 493 postingan diterjemahkan dalam satu sesi. Lalu Prancis. Lalu Portugis. Lalu Jerman. Lalu Jepang.
Lima bahasa dalam kurang lebih 12 jam. Itulah bagian yang terasa seperti masa depan — menyaksikan terminal kamu terisi dengan 30 indikator progres simultan, setiap agen mengunyah satu dekade postingan blog sementara kamu membuat makan malam.
Ini simulasi bagaimana sesi terjemahan Kanton (zh-HK) sebenarnya terlihat — dari perencanaan melalui dispatch hingga QA:
Pola Orkestrasi
Pola yang muncul:
- Pre-create semua direktori — agen gagal secara diam-diam jika direktori target tidak ada
- Batch per rentang tahun — 10-15 postingan per agen untuk postingan normal, 2-3 per agen untuk postingan 3.000+ kata
- Sertakan panduan gaya di setiap dispatch — agen tidak punya memori bersama, jadi masing-masing butuh konteks penuh
- Jalankan QA setelah setiap locale selesai — jumlah file, file kosong, frontmatter rusak, penulisan ulang URL, konsistensi sign-off
- Perbaiki yang tertinggal dengan agen cleanup tertarget — selalu ada 5-15 postingan yang terlewat atau malformed
Bencana Korea
Korea seharusnya rutin. Pola yang sama seperti 7 bahasa lainnya. Dispatch agen, tunggu, QA, perbaiki yang tertinggal.
Sebaliknya, ini kualitas terjemahan terburuk dari locale mana pun.
72% postingan Korea bukan terjemahan — tapi ringkasan. Agen telah memotong 350+ postingan menjadi abstrak 2-3 paragraf, kehilangan semua detail, semua kepribadian, semua nuansa. Analisis 4.000 kata tentang "Principles" karya Ray Dalio menjadi overview 200 kata. Tutorial SEM detail menjadi "Postingan ini membahas strategi search engine marketing."
File UI strings (messages/ko.json) bahkan lebih buruk. Campuran Korea dan Inggris di seluruhnya, dengan karakter yang korup seperti "Ch및ler" alih-alih "Chandler." Karakter 및 adalah bahasa Korea untuk "dan" — entah bagaimana model mengsubstitusikannya di tengah kata.
Saya harus mengulang seluruh locale dari awal. Setiap postingan. Percobaan kedua, dengan instruksi lebih ketat tentang mempertahankan konten penuh dan mencocokkan panjang postingan sumber, hasilnya bersih.
Pelajaran: eksekusi paralel memperbesar kesalahan. Jika prompt kamu punya cacat halus, 30 agen semua akan membuat kesalahan yang sama 30 kali lebih cepat. QA bukan opsional — itu satu-satunya yang berdiri antara "selesai" dan "bencana."
Masalah China: 43 Commit untuk Benar
Mandarin Sederhana (zh) adalah locale paling padat kerja. Bukan karena masalah kualitas — terjemahannya bagus — tapi karena 493 postingan di 43 commit terpisah memberitahu kamu sesinya terus menabrak batas.
Claude Code berjalan di API Anthropic, dan ada batas penggunaan. Bahkan di tier Max dengan Sonnet 4.6, sesi panjang yang mendispatch puluhan agen paralel akhirnya menabrak periode pendinginan 5 jam. Untuk China, itu berarti menerjemahkan secara gelombang: ~50 postingan, tabrak batas, tunggu, lanjut, tabrak batas lagi.
Terjemahan China juga butuh QA paling banyak karena konten CJK punya mode kegagalan unik:
- Karakter dari skrip yang salah (kanji Jepang tercampur ke Mandarin Sederhana)
- Register terlalu formal yang terbaca seperti dokumen pemerintah, bukan blog
- Tanda baca Barat alih-alih tanda baca Cina (,vs. , dan 。vs. .)
- Nama yang diterjemahkan padahal tidak seharusnya ("Claude" adalah "Claude" dalam bahasa Cina, bukan 克劳德)
Masalah Suara Kanton
Ketika saya menambahkan Cina Tradisional dengan suara Kanton (zh-HK), saya menghadapi tantangan yang sama sekali berbeda. Terjemahan perlu menggunakan partikel spesifik Kanton — 嘅 (posesif), 咗 (past tense), 喺 (di/pada), 啲 (beberapa), 冇 (tidak punya) — dan mempertahankan nada kasual dan percakapan yang mendefinisikan tulisan Kanton.
Terjemahan Mandarin standar terdengar birokratis di Hong Kong. "本网站提供中文版本" adalah Mandarin yang benar, tapi pembaca Kanton mengharapkan "呢個網站有中文版本." Arti sama, suara benar-benar berbeda.
Tantangannya bukan akurasi terjemahan — tapi keaslian suara. Model bisa menghasilkan Kanton yang tata bahasanya benar, tapi default-nya register Mandarin kecuali kamu secara eksplisit menginstruksikan untuk menggunakan partikel kolokial dan pola code-mixing.
Pengecekan QA saya untuk Kanton termasuk grep setiap file untuk keberadaan partikel spesifik Kanton. 493 dari 493 lulus. Tapi saya masih harus menulis ulang secara manual seluruh file UI strings messages/zh-HK.json karena versi pertama ~70% Inggris — agen telah melewati sebagian besar terjemahan.
Apa yang Saya Coba dengan OpenAI Codex
Di sekitar terjemahan Jerman, saya menabrak batas penggunaan Claude Code dan memutuskan mencoba OpenAI Codex sambil menunggu. Saya punya satu bulan gratis ChatGPT Plus, yang termasuk akses Codex.
Yang bagus: Codex menghasilkan dokumen perencanaan yang solid. Analisis awalnya tentang codebase dan pendekatan terjemahan yang diusulkan terstruktur dengan baik dan masuk akal. Waktu respon cepat. Dan dia mengikuti instruksi dengan ketat — hampir terlalu ketat, yang bisa jadi fitur.
Yang buruk: Versi yang saya gunakan (gpt-5.2-codex) tidak bisa menjalankan subagen paralel. Dia memproses postingan secara sekuensial — satu per satu. Untuk 493 postingan, itu tidak viable. Dia juga bekerja dalam ledakan pendek, menyelesaikan 5-10 postingan sebelum berhenti meminta feedback. Setiap kali, saya harus bilang "lanjutkan" untuk mendapat batch berikutnya.
Ketika gpt-5.3-codex tersedia di tengah sesi, saya beralih. Lebih baik, tapi tetap tanpa eksekusi paralel. Perbedaan arsitektur fundamental — Claude Code bisa mendispatch 30+ agen independen yang berjalan bersamaan, sementara Codex beroperasi sebagai satu proses sekuensial — membuat Claude Code secara dramatis lebih cepat untuk tugas konten massal.
Perbandingan jujur: Codex bagus untuk pekerjaan fokus, single-file. Responsif dan mengikuti arahan dengan baik. Tapi untuk jenis eksekusi paralel massal yang saya butuhkan — 4.437 file di 9 locale — arsitektur agen Claude Code berada di kategori yang sama sekali berbeda.
Checklist yang Menyelamatkan Segalanya
Setiap locale melewati pipeline QA yang sama:
✓ Jumlah file: 493/493
✓ File kosong: 0
✓ File kecil (<100 bytes): 0
✓ Slug hilang: 0
✓ URL ditulis ulang: 0
✓ Frontmatter rusak: 0
✓ Sign-off salah: 0
✓ Karakter native ada: 493/493
Untuk bahasa CJK, saya menambahkan:
✓ Partikel Kanton (嘅/咗/喺/啲/冇): 493/493
✓ Tidak ada kontaminasi skrip campuran: LULUS
✓ Tanda baca Cina: LULUS
Tanpa checklist ini, saya akan mengirim ringkasan Korea ke produksi. Saya akan mengirim UI Kanton 70% Inggris. Saya akan mengirim postingan blog dengan link internal rusak yang menunjuk ke slug terjemahan yang tidak ada.
Checklist bukan birokrasi. Itu satu-satunya QA andal ketika pipeline produksi kamu menghasilkan ribuan file yang tidak bisa kamu baca secara pribadi.
Angka Akhir
| Bahasa | 10 (Inggris + 9 terjemahan) |
| Postingan diterjemahkan | 493 per bahasa × 9 = 4.437 file |
| Kata | ~3,5 juta |
| Git commit | 212 |
| Hari kalender | 4 (24-27 Feb) |
| File UI strings | 9 file JSON locale (~475 kunci masing-masing) |
| Template email | 9 locale |
| Data journey | Milestone + learning paths diterjemahkan via JSONB |
| Kali menabrak batas penggunaan | Hilang hitungan |
| Redo locale lengkap | 1 (Korea) |
Apa yang Sebenarnya Saya Pelajari
1. Panduan gaya adalah segalanya. Suara Kanton, tingkat formalitas Korea, sign-off "Abraço" Portugis — ini bukan hiasan. Ini perbedaan antara "diterjemahkan" dan "dilokalisasi." Tanpa panduan gaya, kamu mendapat konten yang secara tata bahasa benar tapi terbaca seperti formulir pemerintah.
2. Agen paralel adalah pengganda kekuatan — dan pengganda risiko. Ketika 30 agen mengeksekusi dengan benar, kamu menyelesaikan satu bahasa dalam satu jam. Ketika 30 agen mengeksekusi kesalahan yang sama, kamu mendapat 350 postingan terpotong dan redo penuh.
3. QA bukan opsional dalam skala. Kamu tidak bisa meninjau 4.437 postingan terjemahan secara manual. Tapi kamu bisa mengotomatisasi pengecekan struktural yang menangkap kegagalan paling umum: file hilang, frontmatter rusak, URL ditulis ulang, sign-off salah, konten terpotong.
4. Bagian tersulit bukan terjemahan — tapi suara. LLM mana pun bisa menerjemahkan teks. Membuatnya terdengar seperti orang yang menulis aslinya — mempertahankan kehangatan, kesan kasual, keingintahuan intelektual — di 9 bahasa dan 17 tahun gaya penulisan yang berevolusi, itu memerlukan instruksi eksplisit dan penyempurnaan iteratif.
5. Batas penggunaan adalah kendala nyata. Bahkan di tier tertinggi, sesi agen paralel yang diperpanjang akan menabrak batas. Rencanakan untuk interupsi. Strukturkan pekerjaan agar kamu bisa melanjutkan dari tempat terakhir.
6. Uji dengan pembaca nyata. Saya bisa QA terjemahan Vietnam sendiri. Untuk Korea atau Jepang, saya mengandalkan pengecekan struktural dan mempercayai model. Itu celah yang diketahui. Jika kamu serius tentang kualitas dalam bahasa yang tidak kamu kuasai, minta pembaca native untuk spot-check sampel.
Apakah Ini Sepadan?
Blog saya sekarang menjangkau pembaca dalam bahasa native mereka di 10 locale. Profesional marketing Vietnam di Ho Chi Minh City bisa membaca analisis 2011 saya tentang pasar pencarian Singapura dalam bahasa Vietnam. Peneliti AI Jepang bisa membaca postingan 2024 saya tentang membangun Sydney dalam bahasa Jepang. Penutur Kanton di Hong Kong mendapat konten yang terdengar seperti ditulis untuk mereka, bukan diterjemahkan kepada mereka.
Apakah setiap terjemahan sempurna? Tidak. Terjemahan mesin dalam skala ini punya sudut kasar. Beberapa metafora tidak mendarat. Beberapa referensi budaya butuh lokalisasi yang melampaui substitusi kata per kata.
Tapi alternatifnya adalah 493 postingan hanya dalam bahasa Inggris, bisa diakses oleh mungkin 20% pengguna internet dunia. Sekarang bisa diakses lebih dari 60%.
Empat hari. 3,5 juta kata. Infrastrukturnya sudah ada. Setiap postingan baru yang saya tulis dalam bahasa Inggris diterjemahkan ke 9 bahasa sebagai bagian dari proses deployment.
Pertanyaan sebenarnya bukan apakah terjemahan AI itu sempurna. Pertanyaannya adalah apakah sempurna itu musuh dari bisa diakses.
Salam, Chandler





