Kembali ke blog

Terjemahan Django untuk Developer Solo: Dari Berminggu-minggu Menjadi Menit

2026-02-11 7 menit baca
Terjemahan Django untuk Developer Solo: Dari Berminggu-minggu Menjadi Menit

Anda membangun aplikasi Django. Aplikasi itu berfungsi, pengguna mendaftar, dan sekarang Anda ingin menjangkau orang-orang yang tidak berbicara bahasa Inggris. Masalahnya jelas begitu Anda melihatnya: framework internasionalisasi Django sangat bagus dalam mengekstrak string yang bisa diterjemahkan, tetapi tidak melakukan apa pun untuk mengisi terjemahannya. Bagian itu tanggung jawab Anda.

Jika Anda seorang developer solo atau tim dua orang, jarak antara makemessages dan aplikasi yang sepenuhnya diterjemahkan bisa terasa sangat besar. Saya akan membahas opsi-opsi realistis, menjelaskan mengapa sebagian besar tidak cocok untuk tim kecil, dan menunjukkan alur kerja yang mengubah penerjemahan dari pekerjaan berminggu-minggu menjadi perintah dua menit.

Opsi Tradisional (dan Mengapa Menyakitkan)

Opsi 1: Copy-Paste dari Google Translate

Percobaan pertama yang paling umum. Anda membuka file .po, menyalin setiap msgid ke Google Translate, menempelkan hasilnya sebagai msgstr, dan mengulangi. Untuk setiap string. Di setiap bahasa.

Aplikasi Django tipikal memiliki 200-500 string yang bisa diterjemahkan. Jika Anda menerjemahkan ke lima bahasa, itu 1.000-2.500 siklus copy-paste. Bahkan jika setiap siklus hanya memakan waktu 30 detik, Anda melihat 8-20 jam kerja yang membosankan. Dan itu sebelum memperbaiki kesalahan format, placeholder yang rusak, dan terminologi yang tidak konsisten yang pasti muncul.

Lebih buruk lagi, Anda harus melakukannya lagi di sprint berikutnya ketika menambahkan string baru.

Opsi 2: Penerjemah Profesional

Terjemahan profesional biasanya berharga $0,10 hingga $0,25 per kata. Aplikasi Django dengan 500 string rata-rata 8 kata masing-masing berarti sekitar 4.000 kata. Dengan $0,15/kata, itu $600 per bahasa, atau $3.000 untuk lima bahasa.

Untuk startup yang didanai VC, itu angka yang tidak signifikan. Untuk developer solo yang mengenakan biaya $9/bulan per pengguna, itu bisa menghabiskan seluruh pendapatan Anda selama satu kuartal.

Opsi 3: Fiverr dan Marketplace Freelance

Anda bisa menemukan penerjemah di Fiverr seharga $20-50 per bahasa. Beberapa memang terampil. Banyak yang hanya menempelkan teks Anda ke Google Translate dan mengenakan biaya untuk itu. Anda mendapatkan kualitas yang sama seperti Opsi 1, ditambah satu putaran komunikasi ekstra dan seminggu menunggu.

Opsi 4: Crowdin, Transifex, atau Weblate

Platform-platform ini kuat, tetapi dirancang untuk proyek dengan tim penerjemahan khusus. Overhead setup (sinkronisasi repositori, konfigurasi translation memory, mengelola akses kontributor) berlebihan ketika Anda satu-satunya orang di proyek. Langganan bulanan mulai dari $30-150/bulan untuk tier berbayar, dan bahkan tier gratis mengharuskan Anda memelihara integrasi pihak ketiga lainnya.

Opsi 5: Tempelkan Semua ke ChatGPT

Ini sebenarnya bekerja dengan sangat baik dari segi kualitas. Anda menempelkan isi file .po ke ChatGPT atau Claude, meminta terjemahan, dan mendapatkan hasil yang wajar. Masalahnya adalah tidak bisa di-scale. Anda harus mengekstrak string yang belum diterjemahkan secara manual, memformat prompt, mem-parse respons kembali ke format .po, dan menangani batching ketika melebihi batas konteks. Ini berhasil sekali. Tapi gagal sebagai alur kerja yang bisa diulang.

Pendekatan Otomatisasi

Bagaimana jika seluruh langkah penerjemahan hanya satu perintah? Itulah ide di balik TranslateBot, perintah manajemen Django open-source yang membaca file .po Anda, mengirim string yang belum diterjemahkan ke penyedia AI, dan menulis terjemahan kembali dalam format yang benar.

Berikut cara mengaturnya.

Langkah 1: Instal TranslateBot

uv add --dev translatebot-django

Atau dengan pip:

pip install translatebot-django

Tambahkan ke installed apps Anda:

# settings.py
INSTALLED_APPS = [
    # ...
    'translatebot_django',
]

Langkah 2: Konfigurasi Penyedia AI Anda

Tambahkan dua pengaturan:

# settings.py
import os

TRANSLATEBOT_API_KEY = os.getenv("OPENAI_API_KEY")
TRANSLATEBOT_MODEL = "gpt-4o-mini"

TranslateBot bekerja dengan OpenAI, Anthropic Claude, Google Gemini, dan 100+ model lainnya melalui LiteLLM. Juga mendukung DeepL sebagai backend terjemahan khusus.

Langkah 3: Buat TRANSLATING.md (Opsional tapi Disarankan)

File TRANSLATING.md di root proyek Anda memberikan AI konteks tentang aplikasi Anda. Inilah yang membedakan terjemahan mesin generik dari terjemahan yang benar-benar sesuai dengan produk Anda:

# Translation Context

## About This Project
A personal finance tracker for freelancers. Users track invoices,
expenses, and tax obligations.

## Tone
- Friendly and informal
- Use "du" in German, "tu" in French
- Keep financial terms precise

## Terminology
- "invoice" = "Rechnung" (German), "facture" (French)
- "dashboard" = keep as English loanword in all languages
- "freelancer" = keep as English loanword in German

File ini dikirim bersama setiap permintaan terjemahan, sehingga AI secara konsisten menggunakan nada dan terminologi yang tepat.

Langkah 4: Terjemahkan

python manage.py makemessages -l de -l fr -l nl -l es -l ja
python manage.py translate
python manage.py compilemessages

Tiga perintah. Itu saja. TranslateBot menemukan semua string yang belum diterjemahkan di semua file .po Anda, menerjemahkannya dalam batch, dan menulis hasilnya kembali. Secara default hanya entri kosong yang diterjemahkan, jadi menjalankan perintah lagi setelah menambahkan string baru hanya menerjemahkan yang baru.

Seperti Apa Ini dalam Praktik

Berikut alur kerja sprint realistis untuk developer solo yang mendukung lima bahasa:

Senin: Anda membangun fitur baru. Anda menambahkan beberapa string baru yang bisa diterjemahkan menggunakan gettext() dan {% trans %} selama pengembangan.

from django.utils.translation import gettext_lazy as _

class InvoiceView(View):
    def post(self, request):
        # New string added during development
        messages.success(request, _("Invoice sent successfully."))

Sebelum commit: Anda menjalankan tiga perintah:

python manage.py makemessages -a --no-obsolete
python manage.py translate
python manage.py compilemessages

Perintah translate mendeteksi entri baru yang belum diterjemahkan dan hanya menerjemahkan itu. Jika Anda menambahkan 5 string baru dan mendukung 5 bahasa, perintah ini melakukan 25 terjemahan dalam satu panggilan API. Seluruh proses memakan waktu kurang dari satu menit.

Anda commit kode, template, dan file .po/.mo yang diperbarui bersama-sama. Terjemahan adalah bagian dari alur pengembangan normal Anda, bukan proyek terpisah.

Preview Sebelum Commit

Jika Anda ingin melihat terjemahan sebelum ditulis ke disk, gunakan mode dry-run:

python manage.py translate --dry-run

Ini mencetak setiap terjemahan ke terminal tanpa memodifikasi file apa pun.

Perbandingan Biaya

Di sinilah otomatisasi menjadi sulit untuk dibantah.

Pendekatan 500 string, 5 bahasa Waktu Biaya berulang
Copy-paste manual Gratis ~40 jam ~8 jam/sprint
Penerjemah profesional ~$3.000 1-2 minggu ~$600/sprint
Penerjemah Fiverr ~$100-250 3-7 hari ~$50/sprint
Crowdin/Transifex $30-150/bulan Setup: jam Berkelanjutan
TranslateBot + GPT-4o-mini ~$0,05 ~2 menit ~$0,01/sprint
TranslateBot + DeepL Free $0 ~2 menit $0

Aplikasi Django kecil hingga menengah dengan sekitar 500 string yang bisa diterjemahkan biasanya menghabiskan biaya kurang dari $0,01 per bahasa dengan gpt-4o-mini. Untuk sebagian besar proyek solo, tier gratis DeepL (500.000 karakter/bulan) mencakup semuanya tanpa biaya.

Untuk jelasnya: terjemahan AI tidak sempurna. Terjemahan manusia murah juga tidak sempurna. Bedanya, terjemahan AI hampir tidak memakan biaya, tersedia instan, dan bisa dijalankan ulang kapan saja.

Integrasi CI: Jangan Pernah Kirim String yang Belum Diterjemahkan

Salah satu pola paling berguna yang saya temukan sebagai developer solo adalah menambahkan pemeriksaan terjemahan ke CI. TranslateBot menyertakan perintah check_translations yang gagal jika file .po mana pun memiliki entri yang belum diterjemahkan atau fuzzy:

# .github/workflows/ci.yml
jobs:
  translations:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v4
        with:
          enable-cache: true
      - run: uv python install
      - run: uv sync --frozen
      - name: Install gettext
        run: sudo apt-get update && sudo apt-get install -y --no-install-recommends gettext
      - name: Check translations
        run: uv run python manage.py check_translations --makemessages

Jika Anda menambahkan tag {% trans %} baru di template dan lupa menjalankan translate, CI akan menangkapnya:

locale/de/LC_MESSAGES/django.po: 1 untranslated, 0 fuzzy
locale/fr/LC_MESSAGES/django.po: 1 untranslated, 0 fuzzy
CommandError: Translation check failed

Ini mengubah terjemahan dari sesuatu yang harus Anda ingat menjadi sesuatu yang tidak bisa Anda lupakan.

Tips Praktis

Mulai dengan dua atau tiga bahasa. Anda tidak perlu meluncurkan dalam 15 bahasa di hari pertama. Pilih bahasa di mana Anda memiliki pengguna paling banyak atau pasar terbesar. Jerman, Prancis, dan Spanyol mencakup banyak wilayah untuk pasar Eropa.

Minta penutur asli meninjau string penting. Terjemahan AI cukup baik untuk sebagian besar teks UI, tetapi judul halaman utama dan alur onboarding Anda layak mendapat tinjauan manusia. Minta teman, pengguna, atau seseorang di forum komunitas untuk meluangkan 10 menit meninjau string yang paling terlihat.

Gunakan dry-run sebelum menimpa. Jika Anda perlu menerjemahkan ulang semuanya (misalnya, setelah memperbarui TRANSLATING.md dengan panduan terminologi yang lebih baik), pratinjau perubahan terlebih dahulu:

python manage.py translate --overwrite --dry-run

Simpan TRANSLATING.md di version control. Ini bagian dari konfigurasi terjemahan proyek Anda. Ketika Anda memperbarui panduan terminologi atau nada, menjalankan translate berikutnya akan mencerminkan perubahan tersebut untuk string baru apa pun.

Terjemahkan per aplikasi jika diperlukan. Jika Anda hanya mengubah string di satu aplikasi, Anda bisa membatasi cakupan terjemahan:

python manage.py translate --app billing

Dari Berminggu-minggu ke Menit

Framework internasionalisasi Django adalah salah satu yang terbaik di antara semua framework web. Tooling untuk makemessages, direktori locale, dan compilemessages sudah matang dan andal. Satu-satunya bagian yang hilang adalah langkah terjemahan itu sendiri. Itu dulunya bagian yang mahal dan lambat.

Dengan TranslateBot, alur kerjanya menjadi:

  1. Tulis kode dengan gettext() dan {% trans %} seperti biasa
  2. Jalankan makemessages untuk mengekstrak string
  3. Jalankan translate untuk mengisi terjemahan
  4. Jalankan compilemessages untuk mengompilasi
  5. Commit semuanya bersama-sama

Untuk developer solo, ini berarti lokalisasi bukan lagi proyek yang Anda rencanakan untuk "suatu hari nanti." Ini sesuatu yang bisa Anda lakukan hari ini, dalam waktu yang diperlukan untuk membuat secangkir kopi.

TranslateBot adalah open source dan tersedia di PyPI dan GitHub. Instal, jalankan perintahnya, dan lihat aplikasi Anda dalam bahasa baru dalam hitungan menit.

Hentikan pengeditan file .po secara manual

TranslateBot mengotomatiskan terjemahan Django dengan AI. Satu perintah, semua bahasa Anda, biaya terjemahan yang sangat murah.