بُني Respondo في دبي، وقد شكّلت تلك الحقيقة المنتج أكثر من أي قرار في خارطة الطريق اتخذناه. فقد يحمل طابور دعم واحد هنا عميلاً يكتب بالعربية، وآخر بالإنجليزية، وثالثاً بالهندية، ورابعاً بالأردية — غالباً خلال الساعة نفسها. لم توجد قط نسخة من هذا المنتج تعامل لغةً واحدة بوصفها الافتراضية والبقية بوصفها ترجمات. كان لا بد أن تكون أكثر من ثلاثين لغة، بما فيها لغات الكتابة من اليمين إلى اليسار، هي الأساس، لا طبقة أضفناها لاحقاً.

تبيّن أن ذلك القيد موضِّح. فحين لا يكون تعدد اللغات اختيارياً، تكشف الكثير من الاختصارات التي تبدو معقولة في منتج يضع الإنجليزية أولاً عن نفسها بوصفها طرقاً مسدودة. وهذا ما تعلّمناه ونحن نبني لتلك الحقيقة عبر كل من الذكاء الاصطناعي والواجهة.

الترجمة ليست فهماً

البنية المغرية هي خط معالجة: خذ الرسالة الواردة، ومرّرها عبر واجهة برمجة ترجمة إلى الإنجليزية، وعالجها بنماذجك الإنجليزية، وولّد رداً إنجليزياً، ثم ترجمه عكسياً. إنها رخيصة، وسريعة البناء، وتفشل تحديداً في المواقف التي تتكوّن منها خدمة العملاء.

محادثات العملاء كثيفة بسياق تسطّحه الترجمة العامة. فالعامية والتعابير الاصطلاحية ومستويات التأدّب والمصطلحات الخاصة بالمجال كلها تُبرَد في الرحلة ذهاباً وإياباً. المثال الكلاسيكي كلمة واحدة بمعنى متشعّب: عميل يسأل عن «return» في سياق البيع بالتجزئة يريد معرفة كيفية إعادة منتج؛ والكلمة نفسها في سياق مالي تعني عائد الاستثمار. تُضيّع دورة الترجمة والمعالجة والترجمة الخيط، لأنه بحلول الوقت الذي يراها فيه النموذج الإنجليزي، يكون السياق المُزيل للّبس قد شُوّه بالفعل.

يستخدم Respondo بدلاً من ذلك نماذج خاصة بكل لغة. فالرسالة بالعربية تُفهَم ويُجاب عنها بالعربية، بشكل أصيل، دون أن تمرّ قط عبر الإنجليزية بوصفها تمثيلاً وسيطاً. والفروق التي تهمّ — النبرة، والمستوى اللغوي، والمعنى الصحيح لكلمة ملتبسة — تُلتقَط في اللغة التي تعيش فيها فعلاً. هذا هو الفرق بين رد صحيح تقنياً ورد يتعرّف فيه الناطق الأصلي على الطلاقة.

حين تنقلب الواجهة

التعامل مع اللغات في النموذج نصف المشكلة. أما النصف الآخر فهو الواجهة، ولغات الكتابة من اليمين إلى اليسار هي حيث تنهار معظم أنظمة التصميم بهدوء.

دعم العربية والعبرية ليس مسألة ترجمة سلاسل نصية. فالتخطيط بأكمله ينقلب. يصطفّ النص إلى اليمين. ويجري ترتيب القراءة من اليمين إلى اليسار، ما يعني أن التدفق البصري للمحادثة، وموضع زر الرجوع، والاتجاه الذي ينبغي أن يشير إليه السهم — كل ذلك ينعكس كالمرآة. والتصميم المبني بافتراضات الكتابة من اليسار إلى اليمين المخبوزة في مواضع ثابتة لا يُترجَم إلى الاتجاه من اليمين إلى اليسار؛ بل ينكسر.

الجزء الدقيق هو أن ليس كل شيء ينقلب. هذا هو الفخ الذي تقع فيه الفرق حين تكتشف خاصية direction في CSS وتظن أن المهمة انتهت.

  • التخطيط ومحاذاة النص وترتيب القراءة تنعكس. فالشريط الجانبي الذي يقع يساراً في الإنجليزية مكانه يميناً في العربية.
  • الأيقونات ذات الاتجاه ترث الانقلاب. فسهم «الرد» أو رمز «التالي» يجب أن يشير إلى الجهة الأخرى، لأن معناه اتجاهي.
  • المحتوى الذي يُكتب أصلاً من اليسار إلى اليمين لا ينقلب. فأرقام الهواتف، وأسماء العلامات التجارية بالحروف اللاتينية، ومقاطع الشيفرة، وعناوين URL تُقرأ من اليسار إلى اليمين بصرف النظر عن اللغة المحيطة. اعكِسها فتكون قد صنعت هراءً.

ضبط هذا يدوياً، مكوّناً تلو الآخر، عبر منتج بأكمله هو تحديداً نوع المهام التي يستحيل إبقاؤها متسقة مع نمو المنتج. لذا لم نفعله يدوياً.

قائم على القيود، لا على المواضع

القرار الذي جعل الاتجاه من اليمين إلى اليسار مستداماً كان التوقف عن وصف مكوّناتنا بدلالة المواضع المطلقة والبدء بوصفها بدلالة العلاقات.

المكوّن القائم على الموضع يقول «تقع هذه التسمية على بُعد 16 بكسل من الحافة اليسرى». وهذه التعليمة خاطئة لحظة انقلاب التخطيط. أما المكوّن القائم على القيود فيقول «تقع هذه التسمية عند بداية الصف، بمسافة 16 بكسل قبل أن يبدأ المحتوى». والآن تُحَلّ «البداية» إلى اليسار في الإنجليزية وإلى اليمين في العربية تلقائياً، ويُعرَض تعريف المكوّن نفسه بشكل صحيح في الاتجاهين دون شرط واحد.

اعتمدنا على الخصائص المنطقية الخاصة بالمتصفح للتعبير عن هذا — CSS الحديثة التي تفكّر بمنطق *start* و*end* بدل *left* و*right*، وبمنطق *inline* و*block* بدل الأفقي والعمودي. المكوّن المكتوب بهذه الطريقة لا يعرف ولا يعنيه أي اتجاه يُعرَض فيه. يُضبَط الاتجاه مرة واحدة، عند الجذر، ويتكيّف كل مكوّن تحته.

والعائد يتراكم. فإضافة اللغة التالية من اليمين إلى اليسار لا تكلّف شيئاً تقريباً، لأن منطق التخطيط لم يكن مرتبطاً باتجاه محدد من الأساس. والمكوّن الجديد المبني على البدائيات المشتركة صحيح في الاتجاهين افتراضياً — إذ سيحتاج المهندس إلى بذل جهد متعمّد ليكسره.

مساحة كي يتنفس النص

الدرس الأخير هو الأقل بريقاً والأكثر تجاهلاً: طول النص يتباين تبايناً هائلاً بين اللغات، والتخطيط الذي لم يرَ سوى الإنجليزية سيتصدّع تحت اللغات التي لا تتّسع فيه.

العبارة نفسها قد تطول بنسبة 30% في الألمانية، أو تأتي بمجموعة محارف مختلفة تماماً في الصينية حيث تحمل بضعة رموز ما تحتاج الإنجليزية إلى جملة لأجله، أو تحتاج مساحة عمودية أكبر للتشكيل الذي يقع فوق الحرف العربي وتحته. والزر المقاس على كلمة «Send» الإنجليزية يقصّ النص أو يفيض به لحظة تحلّ فيه ترجمة أطول.

تفترض مكوّناتنا من البداية أنها لا تعرف كم سيطول نصّها. فهي تنمو مع محتواها، وتلتفّ بأناقة، ولا تعتمد أبداً على أن تكون السلسلة بطول معيّن. إنه انضباط صغير يوفّر لاحقاً ألف إصلاح تخطيط فردي — وهو، كما هو الحال مع معالجة الاتجاه، من النوع الذي يكاد يكون مجانياً إن بنيته منذ اليوم الأول وباهظ الكلفة إن أضفته لاحقاً.

الخيط الناظم

كل واحد من هذه القرارات يتناغم مع الفكرة نفسها: تعدد اللغات لا يمكن أن يكون ميزة تضيفها، لأن افتراضات منتج أحادي اللغة تمتدّ إلى النموذج والتخطيط والمكوّن الفردي. ابنِ بالإنجليزية أولاً، فتقضي بقية عمر المنتج ترقّع الأماكن التي تتسرّب منها تلك الافتراضات. ابنِ لثلاثين لغة من البداية، فتكون الحادية والثلاثون شبه مجانية. وجودنا حيث يتحدث عملاؤنا عشرات اللغات يومياً لم يجعل هذا أصعب — بل جعل من المستحيل أن نخطئ فيه بهدوء، وهو أفضل أنواع القيود التي يُصمَّم تحتها.