Respondo دبئی میں بنایا گیا، اور اس ایک حقیقت نے پروڈکٹ کو کسی بھی روڈ میپ فیصلے سے زیادہ ڈھالا۔ یہاں کی ایک ہی سپورٹ قطار میں ایک گاہک عربی میں لکھتا ہو سکتا ہے، دوسرا انگریزی میں، تیسرا ہندی میں، اور چوتھا اردو میں — اکثر ایک ہی گھنٹے کے اندر۔ اس پروڈکٹ کا کبھی کوئی ایسا روپ رہا ہی نہیں جو کسی ایک زبان کو ڈیفالٹ اور باقی کو ترجمے سمجھے۔ تیس سے زائد زبانیں، بشمول دائیں سے بائیں والی، بنیاد ہونی تھیں، کوئی ایسی تہ نہیں جو ہم بعد میں شامل کریں۔
یہ رکاوٹ درحقیقت وضاحت دینے والی ثابت ہوئی۔ جب کثیر لسانی ہونا اختیاری نہ ہو تو بہت سے ایسے شارٹ کٹ جو کسی انگریزی-اوّل پروڈکٹ میں معقول لگتے ہیں، خود کو بند گلیوں کے طور پر ظاہر کر دیتے ہیں۔ یہ وہ ہے جو ہم نے AI اور انٹرفیس دونوں میں اُس حقیقت کے لیے بناتے ہوئے سیکھا۔
ترجمہ سمجھ نہیں ہے
پُرکشش فنِ تعمیر ایک پائپ لائن ہے: آنے والا پیغام لو، اسے کسی ترجمہ API کے ذریعے انگریزی میں چلاؤ، اپنے انگریزی ماڈلوں سے اس پر عمل کرو، انگریزی جواب تیار کرو، اور اسے واپس ترجمہ کر دو۔ یہ سستا ہے، بنانے میں تیز ہے، اور ٹھیک اُنہی صورتوں میں ناکام ہوتا ہے جن سے کسٹمر سروس بنی ہوتی ہے۔
گاہک کی گفتگو اُس سیاق سے بھری ہوتی ہے جسے عام ترجمہ چپٹا کر دیتا ہے۔ بول چال، محاورے، ادب و تہذیب کے درجے، اور کسی خاص شعبے کی اصطلاحات — یہ سب اس آنے جانے کے چکر میں گھِس جاتے ہیں۔ کلاسیکی مثال ایک ایسا لفظ ہے جس کے معنی میں دو شاخیں ہوں: خردہ فروشی کے سیاق میں "return" کے بارے میں پوچھنے والا گاہک یہ جاننا چاہتا ہے کہ پروڈکٹ کیسے واپس بھیجی جائے؛ مالیاتی سیاق میں وہی لفظ سرمایہ کاری کے منافع کے بارے میں ہوتا ہے۔ ترجمہ-عمل-ترجمہ سرا کھو دیتا ہے، کیونکہ جب تک انگریزی ماڈل اسے دیکھتا ہے، ابہام دور کرنے والا سیاق پہلے ہی بگڑ چکا ہوتا ہے۔
Respondo اس کے بجائے زبان کے لیے مخصوص ماڈل استعمال کرتا ہے۔ عربی میں کوئی پیغام عربی ہی میں، ازخود، سمجھا اور جواب دیا جاتا ہے، بغیر کبھی انگریزی سے بطور درمیانی نمائندگی گزرے۔ جو فرق اہم ہیں — لہجہ، درجہ، کسی ذو معنی لفظ کا درست مفہوم — وہ اُسی زبان میں گرفت میں آتے ہیں جس میں وہ اصل میں بستے ہیں۔ یہی وہ فرق ہے جو ایک تکنیکی طور پر درست جواب اور ایسے جواب کے درمیان ہوتا ہے جسے کوئی مادری بولنے والا رواں پہچانتا ہے۔
جب انٹرفیس پلٹتا ہے
ماڈل میں زبانوں کو سنبھالنا مسئلے کا آدھا حصہ ہے۔ دوسرا آدھا انٹرفیس ہے، اور دائیں سے بائیں والی زبانیں وہ جگہ ہیں جہاں بیشتر ڈیزائن سسٹم چپکے سے بکھر جاتے ہیں۔
عربی اور عبرانی کی سپورٹ سٹرنگز ترجمہ کرنے کا معاملہ نہیں۔ پورا لے آؤٹ الٹ جاتا ہے۔ متن دائیں طرف سیدھ میں آتا ہے۔ پڑھنے کی ترتیب دائیں سے بائیں چلتی ہے، جس کا مطلب ہے کہ گفتگو کا بصری بہاؤ، واپسی بٹن کی جگہ، تیر کے اشارہ کرنے کی سمت — یہ سب آئینے کی طرح پلٹ جاتے ہیں۔ بائیں سے دائیں کے مفروضوں کو ثابت جگہوں میں پکا کر بنایا گیا ڈیزائن RTL میں منتقل نہیں ہوتا؛ وہ ٹوٹ جاتا ہے۔
لطیف بات یہ ہے کہ ہر چیز نہیں پلٹتی۔ یہی وہ دام ہے جس میں ٹیمیں تب پھنستی ہیں جب وہ CSS کی direction خصوصیت دریافت کر کے سمجھ لیتی ہیں کہ کام ہو گیا۔
- لے آؤٹ، متن کی سیدھ، اور پڑھنے کی ترتیب آئینے کی طرح پلٹتے ہیں۔ انگریزی میں بائیں طرف کا سائیڈبار عربی میں دائیں طرف ہوتا ہے۔
- سمت رکھنے والے آئیکن پلٹنے کو ورثے میں لیتے ہیں۔ «جواب» کے تیر یا «اگلا» کے شیورون کو دوسری طرف اشارہ کرنا پڑتا ہے، کیونکہ اس کا معنی سمتی ہوتا ہے۔
- جو مواد فطری طور پر LTR ہو وہ نہیں پلٹتا۔ فون نمبر، لاطینی رسم الخط کے برانڈ نام، کوڈ کے ٹکڑے، اور URLs گرد و پیش کی زبان سے قطع نظر بائیں سے دائیں پڑھے جاتے ہیں۔ انہیں پلٹا دیں تو آپ نے بے معنی چیز بنا دی۔
اسے ہاتھ سے، اجزا در اجزا، پورے پروڈکٹ میں درست کرنا ٹھیک ویسا ہی کام ہے جسے پروڈکٹ کے بڑھنے کے ساتھ ہم آہنگ رکھنا ناممکن ہے۔ سو ہم نے یہ ہاتھ سے نہیں کیا۔
پابندی پر مبنی، جگہ پر مبنی نہیں
جس فیصلے نے RTL کو قابلِ برداشت بنایا وہ یہ تھا کہ ہم اپنے اجزا کو مطلق جگہوں کے بجائے تعلقات کی زبان میں بیان کرنا شروع کریں۔
جگہ پر مبنی ایک جزو کہتا ہے «یہ لیبل بائیں کنارے سے 16 پکسل پر بیٹھتا ہے۔» یہ ہدایت اُسی لمحے غلط ہو جاتی ہے جب لے آؤٹ پلٹتا ہے۔ پابندی پر مبنی ایک جزو کہتا ہے «یہ لیبل قطار کے آغاز پر بیٹھتا ہے، مواد شروع ہونے سے پہلے 16 پکسل کی جگہ۔» اب «آغاز» انگریزی میں خودبخود بائیں اور عربی میں دائیں پر حل ہو جاتا ہے، اور وہی ایک جزو کی تعریف بغیر کسی ایک شرطیہ کے دونوں سمتوں میں درست رینڈر ہوتی ہے۔
اسے بیان کرنے کے لیے ہم نے براؤزر کی اپنی منطقی خصوصیات پر تکیہ کیا — وہ جدید CSS جو *بائیں* اور *دائیں* کے بجائے *آغاز* اور *اختتام* میں، اور افقی و عمودی کے بجائے *inline* اور *block* میں سوچتی ہے۔ اس طرح لکھا گیا جزو نہیں جانتا اور نہ ہی اسے پروا ہوتی ہے کہ وہ کس سمت میں رینڈر ہو رہا ہے۔ سمت ایک بار، جڑ پر، مقرر ہوتی ہے، اور نیچے موجود ہر جزو خود کو ڈھال لیتا ہے۔
فائدہ مرکب ہوتا جاتا ہے۔ اگلی RTL زبان شامل کرنا تقریباً کچھ خرچ نہیں کرتا، کیونکہ لے آؤٹ کی منطق سرے سے کسی مخصوص سمت سے بندھی ہی نہ تھی۔ مشترکہ بنیادوں پر بنا کوئی نیا جزو بطورِ ڈیفالٹ دونوں سمتوں میں درست ہوتا ہے — کسی انجینئر کو اسے توڑنے کے لیے جان بوجھ کر راستے سے ہٹنا پڑے گا۔
متن کے سانس لینے کی گنجائش
آخری سبق سب سے کم چمک دار اور سب سے زیادہ نظر انداز کیا جانے والا ہے: متن کی لمبائی زبانوں کے درمیان بے حد مختلف ہوتی ہے، اور جس لے آؤٹ نے کبھی صرف انگریزی دیکھی ہو وہ اُن زبانوں تلے چٹخ جائے گا جو اس میں سماتی نہیں۔
وہی جملہ جرمن میں 30% زیادہ لمبا ہو سکتا ہے، چینی میں بالکل مختلف حروف کے مجموعے میں آ سکتا ہے جہاں چند شکلیں وہ کچھ اٹھا لیتی ہیں جس کے لیے انگریزی کو ایک جملہ درکار ہوتا ہے، یا عربی رسم الخط کے اوپر نیچے بیٹھنے والے اعراب کے لیے زیادہ عمودی جگہ چاہ سکتا ہے۔ انگریزی لفظ "Send" کے ناپ کا کوئی بٹن اُسی لمحے کاٹ دیتا یا اُبل جاتا ہے جب اس میں کوئی زیادہ لمبا ترجمہ آ گرتا ہے۔
ہمارے اجزا شروع ہی سے فرض کرتے ہیں کہ وہ نہیں جانتے کہ اُن کا متن کتنا لمبا ہوگا۔ وہ اپنے مواد کے ساتھ بڑھتے ہیں، خوش اسلوبی سے لپیٹتے ہیں، اور کبھی اس پر انحصار نہیں کرتے کہ کوئی سٹرنگ کسی خاص لمبائی کی ہو۔ یہ ایک چھوٹا نظم ہے جو بعد میں لے آؤٹ کی ہزار الگ الگ مرمتوں سے بچا لیتا ہے — اور، سمت کو سنبھالنے کی طرح، یہ ایسی چیز ہے جو اگر آپ پہلے دن سے اسے بنا لیں تو تقریباً مفت ہے اور بعد میں لگانا بے حد مہنگی۔
مشترکہ سرا
ان میں سے ہر فیصلہ اسی ایک خیال سے ہم آہنگ ہے: کثیر لسانی کوئی ایسی خصوصیت نہیں ہو سکتی جسے آپ شامل کریں، کیونکہ کسی یک لسانی پروڈکٹ کے مفروضے ماڈل، لے آؤٹ اور انفرادی جزو تک اپنے پنجے گاڑ دیتے ہیں۔ انگریزی-اوّل بنائیں اور آپ پروڈکٹ کی باقی ساری عمر اُن جگہوں کو رفو کرتے گزارتے ہیں جہاں سے وہ مفروضے رِستے ہیں۔ شروع سے تیس زبانوں کے لیے بنائیں اور اکتیسویں تقریباً مفت ہوتی ہے۔ ہمارا وہاں مقیم ہونا جہاں ہمارے گاہک روزانہ درجن بھر زبانیں بولتے ہیں، اس نے اسے مشکل تر نہیں بنایا — اس نے چپکے سے غلط کر جانا ناممکن بنا دیا، اور یہی وہ بہترین قسم کی رکاوٹ ہے جس کے تحت ڈیزائن کیا جائے۔