Komunitas developer sedang terlibat dalam diskusi sengit tentang metode terjemahan perangkat lunak menyusul publikasi pendekatan internasionalisasi kustom SumatraPDF . PDF viewer populer ini, yang mendukung 72 bahasa, memilih untuk membangun sistem terjemahan sendiri daripada menggunakan solusi yang sudah mapan seperti GNU gettext atau layanan komersial.
Statistik Sistem Terjemahan SumatraPDF:
- 341 string yang dapat diterjemahkan
- 72 bahasa yang didukung
- 35.440 total terjemahan string yang terkumpul
- 239 baris kode terjemahan C++
- 4.000 baris kode server Go untuk AppTranslator
Kontroversi Solusi Kustom
Developer SumatraPDF menciptakan ekosistem terjemahan lengkap dari nol, termasuk aplikasi web bernama AppTranslator untuk crowdsourcing terjemahan dan kode C++ kustom untuk menangani pergantian bahasa. Sistem ini menggunakan makro sederhana seperti _TRA()
dan _TRN()
untuk menandai string yang dapat diterjemahkan dan memprosesnya melalui script Go . Namun, pendekatan ini telah menuai kritik signifikan dari developer berpengalaman yang berpendapat bahwa solusi yang sudah ada akan lebih tepat.
Perdebatan berpusat pada apakah menciptakan ulang tools yang sudah mapan itu dapat dibenarkan. Para kritikus menunjukkan bahwa solusi kustom tersebut tidak memiliki fitur penting seperti dukungan bentuk jamak dan format posisional, yang merupakan standar dalam framework terjemahan yang matang. Fitur-fitur ini menjadi krusial ketika berhadapan dengan bahasa yang memiliki aturan tata bahasa kompleks atau struktur kalimat yang berbeda.
Komponen Sistem Terjemahan:
- Makro
_TRA()
: Diperluas menjadi pemanggilan fungsi terjemahan - Makro
_TRN()
: Diperluas menjadi string bahasa Inggris untuk terjemahan tertunda - AppTranslator: Aplikasi web khusus untuk crowdsourcing terjemahan
- Script Go: Mengekstrak string dari kode sumber menggunakan regex
- Linear search: Metode untuk menemukan terjemahan dalam array C++
Fitur yang Hilang dan Keterbatasan Teknis
Beberapa developer menyoroti kesenjangan kritis dalam pendekatan kustom ini. Sistem ini memperlakukan string bahasa Inggris sebagai teks tampilan sekaligus kunci terjemahan, yang dapat menyebabkan masalah ketika kata bahasa Inggris yang sama memerlukan terjemahan berbeda tergantung konteks. Selain itu, metode pencarian linear untuk menemukan terjemahan, meskipun sederhana, mungkin tidak dapat berkembang dengan baik untuk aplikasi yang lebih besar.
Internasionalisasi dan lokalisasi adalah masalah yang sangat sulit. Saya tahu karena saya bekerja sebagai penerjemah teknis selama beberapa tahun.
Kurangnya dukungan bentuk jamak sangat bermasalah karena bahasa yang berbeda menangani jamak dengan cara yang sangat berbeda. Beberapa bahasa memiliki beberapa bentuk jamak, sementara yang lain menggunakan struktur tata bahasa yang sama sekali berbeda yang tidak dapat ditangani oleh penggantian string sederhana.
Solusi Alternatif dan Pendekatan Modern
Anggota komunitas menyarankan beberapa alternatif mapan yang dapat menghemat waktu pengembangan sambil memberikan fungsionalitas yang lebih baik. GNU gettext tetap populer karena set fitur komprehensif dan dukungan tooling yang luas. Layanan seperti Weblate , Transifex , dan translatewiki.net menawarkan manajemen terjemahan berbasis web dengan fitur kolaborasi bawaan dan dukungan ahli.
Untuk aplikasi khusus Windows , beberapa developer merekomendasikan menggunakan sistem Multilingual User Interface (MUI) Microsoft , yang menyediakan integrasi platform native dan dukungan tooling yang luas. Yang lain menyarankan sistem terjemahan Qt untuk aplikasi lintas platform.
Pendekatan modern yang menarik muncul dari diskusi: menggunakan model bahasa AI untuk terjemahan awal. Meskipun ini memicu perdebatan tersendiri tentang kualitas terjemahan, beberapa developer melaporkan kesuksesan menggunakan AI untuk elemen UI dasar, meskipun mereka mengakui bahwa tinjauan manusia tetap penting untuk lokalisasi berkualitas.
Solusi Terjemahan Alternatif yang Disebutkan:
- GNU gettext: Menggunakan file .po, termasuk alat ekstraksi xgettext
- Weblate: Platform terjemahan berbasis web sumber terbuka
- Transifex: Layanan terjemahan komersial
- translatewiki.net: Platform terjemahan komunitas untuk sumber terbuka
- Microsoft MUI: Sistem antarmuka multibahasa Windows asli
- Qt Translation System: Solusi lintas platform dengan perangkat yang komprehensif
Filosofi Pengembangan yang Lebih Luas
Kontroversi ini mencerminkan perpecahan filosofis yang lebih dalam dalam pengembangan perangkat lunak antara membangun solusi kustom versus mengadopsi tools yang sudah ada. Meskipun pendekatan SumatraPDF menunjukkan keterampilan rekayasa yang mengesankan dan memberikan kontrol penuh atas proses terjemahan, para kritikus berpendapat bahwa ini merepresentasikan kompleksitas yang tidak perlu untuk masalah yang sudah terpecahkan.
Diskusi ini juga menyoroti pentingnya memahami ruang lingkup masalah sebelum memilih solusi. Apa yang mungkin tampak seperti tugas terjemahan sederhana dapat dengan cepat menjadi kompleks ketika berhadapan dengan beberapa bahasa, konteks budaya, dan persyaratan aksesibilitas. Konsensus komunitas menunjukkan bahwa meskipun solusi kustom memiliki tempatnya, tools yang mapan sering memberikan nilai jangka panjang yang lebih baik untuk masalah umum seperti internasionalisasi.
Referensi: Implementing UI translation in SumatraPDF, a C++ Windows application