Kenapa Konten Bilingual Perlu Diatur dari Backend
Jika frontend mendukung bahasa Indonesia dan Inggris, backend juga perlu menyediakan data sesuai bahasa yang dipilih. Jika tidak, frontend hanya bisa mengganti label UI, tetapi isi konten tetap satu bahasa.
Untuk web profile, data seperti profile, project, service, article, link, dan product sebaiknya punya dukungan bahasa agar pengalaman user lebih konsisten.
Menggunakan Field Lang
Cara sederhana untuk mendukung bilingual adalah menambahkan field lang pada tabel konten. Nilainya bisa id untuk bahasa Indonesia dan en untuk bahasa Inggris.
Dengan pola ini, satu tabel bisa menyimpan data untuk dua bahasa. Frontend cukup mengirim query parameter seperti lang=en jika ingin mengambil data bahasa Inggris.
Default Bahasa
Default bahasa sebaiknya tetap id. Ini penting agar frontend lama yang belum mengirim query lang tetap berjalan tanpa error.
Contoh:
- Tanpa query lang: ambil data id.
- Dengan ?lang=en: ambil data en.
- Dengan ?lang=xx: fallback ke id.
Cara Kerja di Repository
Repository perlu menambahkan filter WHERE lang = value pada endpoint read. Untuk detail data, filter id dan lang digunakan bersamaan agar data yang dikembalikan sesuai bahasa.
Contoh alur:
- Frontend memanggil /projects?lang=en.
- Service membaca query lang.
- Repository mengambil project dengan lang en.
- Backend mengembalikan data bahasa Inggris.
Keuntungan Pola Ini
- Implementasi sederhana.
- Frontend mudah mengontrol bahasa.
- Data ID dan EN bisa berbeda.
- Tidak perlu translate otomatis saat runtime.
- Cocok untuk konten yang butuh editorial manual.
Hal yang Perlu Diperhatikan
Data Harus Lengkap
Jika data bahasa Inggris belum dibuat, endpoint lang=en bisa kosong. Karena itu, seed atau admin CMS perlu mendukung input dua bahasa.
Slug Bisa Berbeda
Untuk article, slug bahasa Indonesia dan Inggris bisa berbeda. Ini lebih baik untuk SEO karena URL bisa disesuaikan dengan bahasa masing-masing.
Kesimpulan
Field lang adalah solusi sederhana dan efektif untuk backend bilingual. Dengan default id dan query lang=en, frontend bisa mendukung dua bahasa tanpa merusak behavior lama.
