Respondo dibangun di Dubai, dan fakta itu membentuk produknya lebih dari keputusan roadmap mana pun yang kami buat. Sebuah antrean dukungan tunggal di sini bisa saja memuat seorang pelanggan yang menulis dalam bahasa Arab, yang lain dalam bahasa Inggris, yang ketiga dalam bahasa Hindi, dan yang keempat dalam bahasa Urdu — sering kali dalam jam yang sama. Tidak pernah ada versi produk ini yang memperlakukan satu bahasa sebagai bawaan dan sisanya sebagai terjemahan. Tiga puluh lebih bahasa, termasuk yang ditulis dari kanan ke kiri, harus menjadi fondasinya, bukan lapisan yang kami tambahkan belakangan.

Batasan itu ternyata menjernihkan. Ketika multibahasa bukanlah pilihan, banyak jalan pintas yang tampak masuk akal dalam produk yang mengutamakan bahasa Inggris justru terungkap sebagai jalan buntu. Inilah yang kami pelajari saat membangun untuk realitas itu di sisi AI maupun antarmuka.

Terjemahan bukanlah pemahaman

Arsitektur yang menggoda adalah sebuah pipeline: ambil pesan masuk, jalankan melalui sebuah API terjemahan ke bahasa Inggris, proses dengan model bahasa Inggris Anda, hasilkan balasan bahasa Inggris, terjemahkan kembali. Itu murah, cepat dibangun, dan gagal persis dalam situasi-situasi yang menjadi inti layanan pelanggan.

Percakapan pelanggan padat dengan konteks yang diratakan oleh terjemahan generik. Slang, idiom, register kesopanan, dan terminologi khusus bidang semuanya terkikis dalam perjalanan bolak-balik. Contoh klasiknya adalah satu kata dengan percabangan makna: seorang pelanggan yang bertanya tentang "return" dalam konteks ritel ingin tahu soal mengembalikan sebuah produk; kata yang sama dalam konteks keuangan berkaitan dengan imbal hasil investasi. Terjemah-proses-terjemah kehilangan benang merahnya, karena pada saat model bahasa Inggris melihatnya, konteks pembeda maknanya sudah teracak.

Respondo menggunakan model khusus bahasa alih-alih itu. Sebuah pesan dalam bahasa Arab dipahami dan dijawab dalam bahasa Arab, secara native, tanpa pernah melewati bahasa Inggris sebagai representasi antara. Perbedaan-perbedaan yang penting — nada, register, makna yang tepat dari sebuah kata bermakna ganda — tertangkap dalam bahasa tempat mereka sebenarnya hidup. Itulah perbedaan antara sebuah balasan yang benar secara teknis dan balasan yang dikenali oleh seorang penutur asli sebagai fasih.

Ketika antarmuka membalik

Menangani bahasa di dalam model adalah setengah dari persoalan. Setengah lainnya adalah antarmuka, dan bahasa yang ditulis dari kanan ke kiri adalah tempat sebagian besar sistem desain diam-diam berantakan.

Mendukung bahasa Arab dan Ibrani bukanlah soal menerjemahkan rangkaian teks. Seluruh tata letak terbalik. Teks rata ke kanan. Urutan baca berjalan dari kanan ke kiri, yang berarti alur visual sebuah percakapan, posisi tombol kembali, arah yang seharusnya ditunjuk sebuah panah — semuanya mencerminkan. Sebuah desain yang dibangun dengan asumsi kiri-ke-kanan yang tertanam dalam posisi tetap tidak beralih ke RTL; ia rusak.

Bagian yang halus adalah bahwa tidak semuanya membalik. Ini adalah jebakan yang menjerat tim ketika mereka menemukan properti CSS direction dan mengira pekerjaannya sudah selesai.

  • Tata letak, perataan teks, dan urutan baca mencerminkan. Sebuah bilah sisi yang di kiri dalam bahasa Inggris berada di kanan dalam bahasa Arab.
  • Ikon berarah mewarisi pembalikan itu. Sebuah panah "balas" atau chevron "berikutnya" harus menunjuk ke arah sebaliknya, karena maknanya bersifat arah.
  • Konten yang secara inheren LTR tidak membalik. Nomor telepon, nama merek beraksara Latin, cuplikan kode, dan URL terbaca dari kiri ke kanan terlepas dari bahasa di sekelilingnya. Cerminkan mereka dan Anda telah menciptakan omong kosong.

Melakukan ini dengan benar secara manual, komponen demi komponen, di seluruh produk adalah persis jenis tugas yang mustahil dijaga tetap konsisten seiring pertumbuhan produk. Maka kami tidak melakukannya secara manual.

Berbasis batasan, bukan berbasis posisi

Keputusan yang membuat RTL berkelanjutan adalah berhenti mendeskripsikan komponen kami dalam istilah posisi absolut dan mulai mendeskripsikannya dalam istilah hubungan.

Sebuah komponen berbasis posisi berkata "label ini berada 16 piksel dari tepi kiri." Instruksi itu keliru begitu tata letaknya membalik. Sebuah komponen berbasis batasan berkata "label ini berada di awal baris, dengan jarak 16 piksel sebelum kontennya dimulai." Kini "awal" teruraikan menjadi kiri dalam bahasa Inggris dan kanan dalam bahasa Arab secara otomatis, dan definisi komponen yang sama merender dengan benar di kedua arah tanpa satu pun kondisi bercabang.

Kami bersandar pada properti logis milik peramban itu sendiri untuk mengungkapkan hal ini — CSS modern yang berpikir dalam *start* dan *end* alih-alih *left* dan *right*, dan dalam *inline* dan *block* alih-alih horizontal dan vertikal. Sebuah komponen yang ditulis dengan cara ini tidak tahu dan tidak peduli ke arah mana ia merender. Arah ditetapkan satu kali, di akar, dan setiap komponen di bawahnya menyesuaikan.

Hasilnya berlipat ganda. Menambahkan bahasa RTL berikutnya nyaris tanpa biaya, karena logika tata letak sejak awal tidak pernah terikat pada arah tertentu. Sebuah komponen baru yang dibangun di atas primitif bersama sudah benar di kedua arah secara bawaan — seorang insinyur harus repot-repot berusaha keluar jalur untuk merusaknya.

Ruang bagi teks untuk bernapas

Pelajaran terakhir adalah yang paling tidak memesona dan paling sering diabaikan: panjang teks sangat beragam antarbahasa, dan sebuah tata letak yang hanya pernah melihat bahasa Inggris akan retak di bawah bahasa-bahasa yang tidak muat.

Frasa yang sama bisa 30% lebih panjang dalam bahasa Jerman, hadir dalam himpunan karakter yang sama sekali berbeda dalam bahasa Tionghoa di mana beberapa glif mengemban apa yang butuh sekalimat dalam bahasa Inggris, atau membutuhkan lebih banyak ruang vertikal untuk diakritik yang berada di atas dan di bawah aksara Arab. Sebuah tombol yang diukur untuk kata bahasa Inggris "Send" akan terpotong atau meluap seketika ketika sebuah terjemahan yang lebih panjang mendarat di dalamnya.

Komponen kami mengasumsikan sejak awal bahwa mereka tidak tahu seberapa panjang teksnya nanti. Mereka tumbuh bersama kontennya, membungkus dengan luwes, dan tidak pernah bergantung pada sebuah rangkaian teks yang berpanjang tertentu. Ini adalah disiplin kecil yang menghemat seribu perbaikan tata letak dadakan di kemudian hari — dan, seperti penanganan arah, ia adalah jenis hal yang nyaris gratis jika Anda membangunnya sejak hari pertama dan luar biasa mahal untuk dipasang belakangan.

Benang merahnya

Setiap satu dari keputusan-keputusan ini bersajak dengan gagasan yang sama: multibahasa tidak bisa menjadi fitur yang Anda tambahkan, karena asumsi sebuah produk berbahasa tunggal menjangkau ke dalam model, tata letak, dan komponen individual. Bangun dengan mengutamakan bahasa Inggris dan Anda menghabiskan sisa umur produk itu menambal tempat-tempat di mana asumsi-asumsi itu bocor. Bangun untuk tiga puluh bahasa sejak awal dan yang ketiga puluh satu nyaris gratis. Berbasis di tempat pelanggan kami berbicara selusin bahasa sehari tidak membuat ini lebih sulit — ia membuatnya mustahil untuk keliru tanpa ketahuan, yang merupakan jenis batasan terbaik untuk merancang di bawahnya.