- Pengaturan bahasa berbasis IP adalah fitur yang berlandaskan asumsi yang keliru
- Alamat IP hanya menunjukkan lokasi, dan tidak mencerminkan preferensi bahasa pengguna yang sebenarnya
- Header Accept-Language menyampaikan informasi preferensi bahasa secara akurat
- Bahasa UI perlu ditetapkan berdasarkan header browser, yaitu sinyal yang dapat dipercaya
- Prinsip yang paling penting adalah menghormati hak pengguna untuk memilih bahasa dan pengalamannya
Keterbatasan pengaturan bahasa yang diperkirakan dari IP
- Menentukan bahasa yang digunakan dengan geolokasi IP (GeoIP) masih merupakan asumsi yang salah
- Alamat IP hanya memberikan informasi lokasi permintaan
- Itu tidak bisa mengetahui bahasa yang benar-benar disukai atau dipahami pengguna
- Cara ini sering gagal dalam berbagai situasi seperti VPN, perjalanan ke luar negeri, tinggal di luar negeri, atau negara dengan banyak bahasa resmi
- Pendekatan seperti ini bukan cerdas, melainkan menimbulkan ketidaknyamanan dan kebingungan
Kesenjangan antara jumlah bahasa resmi dan realitas
- Negara dan informasi IP tidak memiliki pemetaan 1:1 dengan bahasa
- Belgium punya 3, Switzerland 4, India 22, Canada resmi 2, dan pada praktiknya merupakan negara multibahasa
- Pengguna bisa tinggal di negara tersebut, sedang berkunjung, atau lalu lintasnya kebetulan dirutekan melalui negara itu
- Memaksakan satu bahasa UI hanya berdasarkan informasi negara adalah tindakan yang keliru
Contoh engineering yang buruk
- Mengandalkan data yang salah adalah cara pengembangan yang malas
- Alasan “situs web besar juga melakukan ini” bukan pembenaran yang benar
- Jika tidak bisa menanganinya dengan tepat, lebih baik tidak melakukan apa pun
Nilai dari header Accept-Language
- Banyak pengguna mengalami ketidaknyamanan karena bahasa baru dipaksakan, misalnya saat menggunakan VPN
- Semua browser mengirimkan header Accept-Language
- Preferensi bahasa ditentukan menurut pengaturan OS atau browser pengguna
- Jika ingin, pengguna dapat mengatur dan mengubah nilai ini sendiri
- Contoh:
Accept-Language: en-US,en;q=0.9,de;q=0.8
- Header ini adalah informasi yang akurat, gratis, dan sudah tertanam, tanpa perlu lisensi atau perawatan tambahan
Cara penanganan bahasa yang benar
- Seperti resolusi layar atau warna, bahasa juga harus menghormati lingkungan pengguna
- Salah penetapan bahasa sering terjadi, misalnya pengguna bahasa Inggris di Prancis ditampilkan bahasa Inggris, pengguna bahasa Prancis di Brussel ditampilkan bahasa Belanda, atau pengguna VPN Hong Kong ditampilkan bahasa Mandarin
- Ini menimbulkan keluhan pengguna, pengguna meninggalkan layanan, atau mencoba solusi sementara setelah susah payah menavigasi UI
- Kesalahan ini terjadi karena data IP yang tidak dapat dipercaya dijadikan dasar untuk menentukan bahasa
Solusi praktis
- Baca Accept-Language
- Hormati nilainya
- Dukung pengguna untuk mengubah bahasa sendiri jika diinginkan (opsi yang dipilih disimpan dalam cookie atau parameter URL)
- Gunakan informasi GeoIP hanya untuk mata uang, pengiriman, dan aspek hukum, dan jangan gunakan untuk bahasa
Kesimpulan
- Jika ini adalah perangkat lunak yang digunakan manusia, jangan menebak preferensi pengguna
- Lebih baik mengimplementasikannya dengan tepat, atau tidak menyediakan fitur penetapan bahasa sama sekali
1 komentar
Komentar Hacker News
Saya benar-benar merasa situs web yang mengabaikan header Accept-Language itu sangat menjengkelkan. Situs multibahasa sering bahkan menerjemahkan tombol ganti bahasa atau daftar bahasa ke bahasa saat ini, yang justru membingungkan; dalam hal ini saya rasa Wikipedia adalah contoh standar yang baik. Wikipedia memakai ikon multibahasa yang jelas, daftar yang menampilkan nama setiap bahasa dalam bahasanya sendiri, dan bahasa yang direkomendasikan di bagian paling atas. Jangan menebak-nebak bahasa lebih dulu. Meniru Wikipedia akan sangat membantu
Saya benci ketika masuk ke halaman yang saya cari lewat mesin pencari, lalu tiba-tiba muncul modal popup yang meminta saya memilih negara, dan setelah dipilih malah memaksa saya pindah ke beranda situs regional. Beberapa situs punya tombol tutup (X), tapi banyak juga yang tidak, dan itu sangat menyebalkan
Daftar bahasa di Wikipedia tampaknya tidak selalu benar-benar "urut alfabet". Misalnya kadang bahasa yang direkomendasikan adalah "中文" dan "Italiano", lalu sisanya terlihat dikelompokkan berdasarkan wilayah geografis atau skrip. Meski bukan urutan alfabet yang benar-benar murni untuk setiap bahasa, Wikipedia tetap sangat baik dalam pelokalan. Poin pentingnya adalah bahwa ketika nama bahasa ditampilkan dalam bahasanya sendiri, konsep urutan alfabet yang "tepat" memang jadi rumit
Wikipedia mengingat bahasa yang sebelumnya dipilih pengguna lalu menampilkannya di paling atas. Benar-benar pengalaman pengguna yang baik
Saya pernah mengalami aplikasi YouTube tiba-tiba berubah ke bahasa Amharik. Dokumen bantuan Google memberi tahu di mana tombol English berada, tapi bagi saya yang tidak tahu Amharik itu sama sekali tidak membantu. Aplikasi terjemahan iPhone juga tidak bisa mengenali bahasa itu. Kalau saja ada ikon multibahasa universal, situasi seperti ini akan jauh lebih mudah diatasi
Ironisnya, Universal Language Selector (U.S.L) pada akhirnya juga terutama memakai informasi negara berbasis IP pengguna untuk menentukan bahasa yang direkomendasikan. Cara ini sering tidak akurat. Menurut FAQ U.S.L, mereka menentukan negara asal dari IP lalu merekomendasikan kandidat bahasa utama
Saya tidak suka desain yang mengasumsikan semua orang hanya memakai satu bahasa. Saya bisa membaca dengan cukup nyaman dalam empat bahasa, dan biasanya lebih suka bahasa asli daripada terjemahan. Prediksi bahasa berbasis IP sangat sering salah. Saya sudah menetapkan bahasa yang didukung, jadi seharusnya itu dihormati. YouTube menerapkan dubbing AI otomatis secara default, jadi saya sering setengah mendengar lalu harus kembali dan mematikannya lagi. Tidak memakan banyak waktu, tapi benar-benar pengalaman yang menjengkelkan
Dubbing AI YouTube benar-benar kualitasnya buruk sekali. Saya butuh lima menit untuk akhirnya sadar bahwa suara di video itu adalah audio utama. Saya juga tidak suka judul video diterjemahkan. Saya menonton video yang diucapkan dalam bahasa Inggris, tetapi judulnya malah dalam bahasa yang sama sekali lain
Bahkan jika saya mengatur bahasa yang digunakan di Google ke bahasa Spanyol, YouTube tetap menerjemahkan semuanya secara otomatis ke bahasa Inggris. Saya ingin menonton konten asli untuk meningkatkan kemampuan bahasa Spanyol saya, tapi YouTube malah membuatnya terasa sulit
Fitur YouTube yang otomatis menerjemahkan judul video ke bahasa yang saya setel benar-benar menjengkelkan. Saya mengerti bahasa Inggris, jadi rasanya tidak perlu diterjemahkan
Kalau saya tidak bisa memahami bahasa tulisan itu, besar kemungkinan video tersebut memang bukan ditujukan untuk saya. Kebanyakan video internasional tersedia dalam bahasa Inggris, jadi kalau pembuat aslinya memang menginginkannya, kemungkinan besar mereka sudah menyediakan terjemahan. Lagi pula judul video kekurangan konteks sehingga memang sulit diterjemahkan dengan benar. Dulu ada video berbahasa Portugis berjudul "Vamos assistir uma conexão com o passado" yang ternyata maksudnya "Let's play A Link to the Past", dan untuk tahu judul Inggrisnya saya harus menerjemahkannya ulang lalu menebak. Fitur seperti ini mungkin bisa meningkatkan aksesibilitas, tetapi setidaknya harus ada opsi untuk mematikannya
Algoritme YouTube mungkin mendorong penggunaan fitur seperti ini dan bahkan memberi imbalan atas nama aksesibilitas konten, tetapi saya tetap lebih suka judul bahasa Inggris daripada judul Norwegia hasil terjemahan mesin yang jelek. Dalam pengalaman saya, kalau judul terjemahan mesin seperti itu muncul, saya justru mengatur agar kanal tersebut tidak direkomendasikan lagi
Komputer saya orang Jerman, tetapi saya setel ke bahasa Inggris. Meski begitu YouTube tetap memutarkan suara terjemahan mesin atau menerjemahkan video/iklan berbahasa Jerman ke bahasa Inggris dengan cara yang aneh. Sering kali hasilnya benar-benar ganjil dan canggung
Bukan cuma judul, trek audio juga ikut diterjemahkan, dan itu masalah. Ketika YouTuber yang sering saya tonton menyediakan trek audio buatan penggemar dalam beberapa bahasa, saya selalu harus mengembalikannya sendiri ke bahasa asli. Karena terjemahan mesin, permainan kata atau nuansa budaya sering hilang. Kadang untuk mengganti trek bahasa saya harus memundurkan video ke awal, dan ada juga konflik dengan ekstensi browser. Akan bagus kalau ada antarmuka yang memungkinkan terjemahan seperti ini tidak dijadikan default dan bisa ditoggle dengan bebas
Sekarang di Google, Kagi, dan lain-lain, hasil pencarian Reddit juga muncul dalam bentuk terjemahan. Saya kira jawaban yang saya cari memang ditulis dalam bahasa saya, padahal sebenarnya itu tulisan bahasa Inggris yang diterjemahkan mesin
Yang terpenting, penerapan terjemahan otomatis sebagai default harus dihindari dalam keadaan apa pun. Cukup tampilkan dengan jelas daftar bahasa yang memang benar-benar tersedia sebagai terjemahan. Tombol terjemahan sudah ada di browser, jadi biarkan pengguna menerapkannya sendiri jika mau. Bahasa Inggris bukan bahasa pertama atau kedua saya, tapi saya bisa membacanya dengan cukup baik. Saya ingin menghindari repot mencari tombol di antara tumpukan terjemahan otomatis hanya untuk menemukan teks Inggris asli. Di locale lain kasus seperti ini lebih jarang, justru bahasa Inggris yang sering kena masalah. Kalau mau memakai terjemahan mesin, menurut saya perlu ada verifikasi dengan benar-benar mencobanya sekali untuk memastikan hasilnya sesuai dengan maksud aslinya
Reddit menampilkan isi yang diterjemahkan otomatis ke bahasa Prancis, padahal gaya khas Reddit hampir mustahil dipindahkan bahkan dengan terjemahan manusia. Bahkan jika seseorang sama sekali tidak bisa bahasa Inggris, hasil terjemahan otomatis seperti ini tetap tidak layak dibaca. Melihat versi asli atau mengganti bahasa juga sulit ditemukan tergantung perangkat atau aplikasinya, dan selain itu Reddit terus mendorong pengguna untuk memasang aplikasi
Terjemahan mesin sejak beberapa tahun terakhir memang sudah sangat membaik, sampai-sampai bahkan penutur asli pun bisa tidak sadar bahwa itu hasil terjemahan
Yang paling mengganggu bagi saya adalah Google. Google tahu identitas saya, apakah saya sedang bepergian, dan bahasa pilihan saya (Inggris), tetapi di beberapa halaman tetap menampilkan bahasa berdasarkan lokasi. Saya berharap Google memakai data yang sama intensifnya untuk meningkatkan pengalaman pengguna seperti yang mereka pakai untuk melacak saya
Saya pengguna bahasa Katalan, tetapi bahasa Spanyol tidak pernah terdaftar di akun Google saya maupun sebagai bahasa sistem/browser, namun tetap saja selalu dipaksakan tampil. Saya tinggal di AS, tetapi untuk pencarian terkait Catalonia, Google memprioritaskan wiki berbahasa Spanyol. Perilaku mesin pencari seperti ini selalu buruk. Ini jadi masalah bagi orang yang tidak bisa bahasa Spanyol seperti anak-anak saya, maupun bagi wilayah berbahasa Katalan di luar Spanyol. Terutama Google Gemini, yang menganggap konten Katalan berbahaya lalu memblokir percakapan. Dulu Google sangat peka soal keberagaman, sekarang tidak lagi
Belakangan Google juga begitu pada ulasan map dan sejenisnya: mereka menampilkan bahasa lokal apa adanya tanpa menerjemahkannya ke bahasa Inggris. Seolah-olah karena saya cukup lama berada di suatu tempat, maka saya pasti tahu bahasa negara itu, padahal sering kali saya justru benar-benar membutuhkan bahasa Inggris. Hasil pencarian juga sama. Memakai bahasa lokal kadang hanya berarti sedang mencoba mencari tahu kondisi setempat, tetapi Google gagal menangkap pola pengguna seperti ini dengan baik
Saya pernah berdebat langsung dengan seorang developer Google soal ini. Dia bilang Google karena proses double rendering belum bisa memakai informasi pengguna di halaman utama sehingga preferensi bahasa belum dapat diterapkan, tetapi menurut saya itu tidak masuk akal karena header Accept-Language sudah termasuk dalam permintaan awal
Google tahu saya tinggal di Inggris dan memakai bahasa Inggris. Tapi ketika saya login ke TV hotel di Spanyol lalu menonton video YouTube berbahasa Inggris, mereka menayangkan iklan berbahasa Spanyol. Rasanya seperti Google sengaja melakukan ini demi pengiklan, meskipun mereka tahu saya tidak memahami bahasa tersebut
Setiap kali saya memakai perangkat atau browser baru, Google dan layanannya dimulai dalam bahasa Ibrani. Saya terus menggantinya ke bahasa Inggris, tetapi harus melakukan itu setiap kali, dan walaupun saya bisa membacanya, saya tetap lebih memilih bahasa universal seperti bahasa Inggris
Semua browser bisa mengirim header Accept-Language untuk memberi tahu bahasa pilihan pengguna, dan pengguna yang peduli bahkan bisa mengubahnya sendiri. Namun Accept-Language tidak menyelesaikan semuanya, karena kebanyakan pengguna multibahasa tidak punya urutan preferensi mutlak, melainkan preferensi berdasarkan topik. Misalnya, meskipun fasih berbahasa Prancis, mereka belum tentu ingin membaca terjemahan bahasa Prancis dari berita berbahasa Inggris. Pengelola situs tidak perlu memaksakan fitur yang rumit; cukup sediakan antarmuka ganti bahasa yang jelas dan cepat. Wikipedia melakukan ini dengan baik
Sebenarnya yang lebih penting daripada fitur seperti Accept-Language adalah menyediakan terjemahan yang matang, bukan terjemahan otomatis setengah jadi. Untuk UI dan konten milik sendiri, lebih baik mempertahankan terjemahan resmi, tetapi untuk konten buatan pengguna seharusnya ditampilkan secara opsional lewat tombol terjemahan browser dan sejenisnya, bukan terjemahan otomatis. Saya merekomendasikan pendekatan memilih bahasa prioritas lewat Accept-Language sambil tetap menyediakan opsi ganti bahasa yang jelas. Struktur Wikipedia adalah setiap versi bahasa merupakan situs terpisah dengan konten yang ditulis ulang secara tersendiri
Accept-Language juga bisa menentukan bobot per bahasa (q value). Situs web seharusnya memungkinkan pengguna mengesampingkan bahasa permintaan browser, dan browser juga seharusnya menyediakan pilihan per situs seperti "default situs" "bahasa sistem" atau "minta bahasa Inggris". Yang paling ideal adalah situs web memublikasikan dengan jelas daftar bahasa yang didukung lewat
manifest.jsondan sebagainya, lalu pemilihan bahasa ditangani di sisi klienAsumsi bahwa pengguna secara realistis akan menyetel Accept-Language ke bahasa yang paling nyaman bagi mereka itu lemah. Kebanyakan situs bahkan tidak mendukung Accept-Language dengan baik, jadi rasanya pengguna pun tidak akan mengaturnya dengan strategi yang terlalu matang
Di situs terkait pemerintah, saya pernah mengimplementasikan sistem pemilihan bahasa default lewat Accept-Language untuk dukungan multibahasa dan aksesibilitas. Lalu PM mengabaikan keputusan itu dan memaksa default tetap EN (Inggris) saja. Auditor aksesibilitas menuntut agar Accept-Language digunakan, dan ketika tahu implementasi yang sudah ada malah dibatalkan, dia menegur keras. Pada akhirnya kekonyolan seperti ini justru membuat kontrak kerja saya bertambah beberapa minggu
Saya juga ingin mengeluhkan soal bahasa saya sendiri. Saya punya keluarga yang hanya bisa bahasa Jepang di Apple TV. Negara akun Apple saya adalah Finland. Kami ingin menonton film The Martian bersama keluarga, tetapi trek audio hanya menampilkan bahasa yang didukung di negara akun, jadi saya tidak bisa memilih dubbing Jepang. Mengubah negara akun juga tidak bisa kalau masih ada langganan Apple TV aktif. Akhirnya kami tidak bisa menontonnya bersama
Mungkin ini karena masalah lisensi per wilayah. Dubbing dalam bahasa itu tampaknya tidak dilisensikan untuk digunakan di Finland
Netflix juga pernah seperti ini. Di Finland, untuk menonton Kim's Convenience, bahasa akun harus disetel ke bahasa Inggris. Bahkan kalau ingin memakai subtitle bahasa Inggris pun, kalau UI-nya bahasa Finlandia, kontennya sendiri tidak bisa diakses
Saya pernah membuat sendiri sistem yang memakai Accept-Language untuk menyediakan terjemahan terdekat demi kemudahan akses pengguna. Misalnya kalau tidak ada bahasa Portugis (Portugal), sistem otomatis menyediakan Portugis Brasil (varian Brasil). Secara teknis sistem itu berjalan baik dan menyenangkan untuk diimplementasikan, tetapi dalam praktiknya kebanyakan pengguna tetap hanya ingin bahasa Inggris terlepas dari Accept-Language, dan opsi ganti bahasa yang saya letakkan di footer ternyata tidak cukup terlihat. Jadi sekarang saya beralih ke cara bertanya langsung soal bahasa, dan kepuasan pengguna meningkat drastis
Maksudnya bertanya langsung itu, setiap kali masuk ke situs dalam keadaan cookie belum tersimpan, popup pemilihan bahasa pasti selalu muncul? Popup seperti itu tidak konsisten, dan kalau ada tombol X saja saya sudah bersyukur. Dalam 95 dari 100 kasus, bahasa yang saya klik saat masuk sudah cukup, dan kalau perlu cukup sediakan pemilih bahasa di kanan atas atau di footer halaman. Sebaiknya jangan ada popup atau modal sama sekali
Saya rasa lebih baik menjadikan Accept-Language sebagai default sambil tetap memberi pengguna pilihan tambahan. Saya setuju ikon dihilangkan dari desain ganti bahasa, tetapi agak disayangkan kalau banyak wilayah disatukan ke dalam satu bahasa
Kebanyakan pengguna membiarkan bahasa default OS apa adanya, tidak tahu cara mengubahnya, dan sudah terbiasa dengan itu
Di luar negeri masalah seperti ini benar-benar konyol, dan bahkan di negara sendiri pun versi terlokalisasi seperti dokumentasi pemrograman sering isinya berbeda dan kualitas terjemahannya buruk. Idealnya saya ingin melihat bahasa Inggris aslinya. Belakangan hasil pencarian juga makin banyak berisi terjemahan mesin. Reddit juga baru-baru ini mengadopsi cara ini. Kalau saya sengaja memakai kata kunci non-Inggris, itu karena saya memang ingin menemukan informasi yang khas untuk bahasa tersebut
Tim Reddit tampaknya membuat fitur ini dengan asumsi bahwa pengguna hanya memakai bahasa ibu negaranya sendiri. Padahal di seluruh dunia banyak orang bisa memahami beberapa bahasa, jadi sebenarnya tidak perlu begitu
Saya juga pernah sangat marah pada dokumentasi MongoDB karena fitur perpindahan otomatis berbasis bahasa. Di hasil pencarian muncul dalam bahasa Inggris, tetapi begitu halaman dibuka, JS langsung menggantinya ke Portugis Brasil. Lalu setelah semuanya benar-benar dimuat, malah kembali ke bahasa Inggris, tetapi URL-nya tetap
/pt-br/. Selain itu kualitas terjemahannya jelas terasa otomatis. Saya pengguna Portugis Portugal, jadi perbedaan halus seperti itu justru lebih mengganggu