Proyek open source besar seperti WordPress atau LibreOffice menerima terjemahan bahasa Indonesia dari puluhan kontributor lewat platform seperti Crowdin atau Transifex, dan tim penerjemah biasanya memeriksa kontribusi baru dengan membandingkan file .po lama dan baru baris demi baris — cara paling praktis untuk melihat string mana saja yang benar-benar berubah di antara ribuan baris.
Subsequence umum terpanjang
Pendekatan diff klasik didasarkan pada pencarian subsequence umum terpanjang (LCS) dari baris antara dua versi teks. Baris yang menjadi bagian dari subsequence ini dianggap tidak berubah; sisanya ditandai sebagai dihapus dari versi lama atau ditambahkan ke versi baru. Hasilnya adalah kumpulan perubahan minimal, bukan sembarang urutan penghapusan dan penambahan yang mungkin.
Cara membaca hasilnya
Baris yang dihapus biasanya ditandai dengan - berwarna merah, dan baris yang ditambahkan dengan + berwarna hijau. Baris yang "berubah" dalam arti sehari-hari sebenarnya ditampilkan sebagai penghapusan baris lama ditambah penambahan baris baru — diff tidak punya konsep tersendiri untuk "mengedit" satu baris di tempat.
Mengapa perbandingan baris demi baris tidak selalu intuitif
Menyisipkan satu baris baru di tengah teks bisa membuat perbandingan baris demi baris menandai semua baris berikutnya sebagai "berubah", karena algoritma tidak selalu bisa membedakan penyisipan dari penggantian massal. Ini sering terjadi saat file terjemahan bahasa Indonesia mendapat satu baris string baru di tengah file — semua baris setelahnya bisa ikut ditandai berubah padahal isinya sama persis.
Untuk apa ini dibutuhkan
- Memeriksa dengan tepat apa yang berubah antara dua versi berkas konfigurasi atau dokumen.
- Meninjau code review dengan memahami logika algoritma pencarian perbedaan.
- Membandingkan output skrip sebelum dan sesudah refactoring untuk memastikan tidak ada regresi.
Diff tingkat baris vs tingkat karakter
Perbandingan baris demi baris cocok untuk kode dan file konfigurasi, tetapi untuk prosa atau kalimat panjang yang hanya satu katanya berubah, seluruh baris akan ditandai sebagai dihapus lalu ditambahkan lagi. Diff tingkat kata atau karakter di dalam baris menunjukkan dengan lebih tepat kata mana yang sebenarnya berubah, dengan konsekuensi kompleksitas komputasi yang lebih tinggi pada teks besar.