دعم اليمين إلى اليسار كما ينبغي
عكس التخطيط هو النصف السهل. هذه هي الأجزاء التي انكسرت.
إضافة العربية إلى هذا الموقع عنت دعم الاتجاه من اليمين إلى اليسار، وافترضت أن الأمر خاصية اتجاه وبعد ظهيرة واحد. الخاصية استغرقت دقيقة. أما بعد الظهيرة فذهب إلى كل ما لا تلمسه تلك الخاصية، وإلى الأشياء القليلة التي تعكسها وكان يجب أن تبقى في مكانها.
01توقّف عن كتابة يمين ويسار
التغيير الأعلى قيمة على الإطلاق كان استبدال كل اتجاه فيزيائي في أنماطي باتجاه منطقي. الهامش الأيسر يصبح هامش البداية المحوري. والحشو الأيمن يصبح حشو النهاية المحوري. ومحاذاة النص إلى اليسار تصبح محاذاة إلى البداية. في Tailwind هذا هو الفرق بين ml-4 وms-4، وبين pr-6 وpe-6، وبين text-left وtext-start. وبمجرد أن تُكتب القاعدة بمصطلحات منطقية، يحسمها المتصفح مقابل اتجاه المستند ويحدث العكس مجاناً. لا ورقة أنماط مكرّرة، ولا صيغ مسبوقة بالاتجاه، ولا أسماء أصناف شرطية ممدودة عبر المكوّنات. والسبب في أن هذا أهم مما يبدو هو الصيانة. قاعدة شيفرة تتناثر فيها التجاوزات الواعية بالاتجاه تحتاج مراجعة كل مكوّن جديد مرتين، مرة لكل اتجاه، وإلى الأبد. أما قاعدة الشيفرة المكتوبة بخصائص منطقية فتحتاج المراجعة مرة واحدة. أجريت التحويل ببحث واستبدال وقراءة متأنية للفروقات، وكان عدد المواضع التي احتاجت فعلاً اتجاهاً فيزيائياً بعد ذلك ثلاثة. حدود على فاصل زخرفي، وأيقونتان سأعود إليهما.
02ليس كل شيء يجب أن ينعكس
الاتجاه يعكس محور القراءة، لا معنى كل رمز. سهم الرجوع يشير إلى حيث أتيت، فينعكس. وزر التشغيل يشير إلى الأمام في الزمن أياً كان النص، فلا ينعكس. أشرطة الصوت، وأشرطة تقدم الوسائط، وأوجه الساعات، وكل ما يمثّل شيئاً واقعياً لا ينعكس بذاته، يجب أن تبقى تماماً حيث هي. أخطأت في هذا أول مرة في روابط البطاقات: السهم الذي يعني اقرأ المزيد ينعكس بحق ليشير يساراً في العربية، فبدّلت مكوّن الأيقونة بناءً على الاتجاه. لكنني كنت أملك أيضاً سهماً صغيراً على شارة رابط خارجي يعني يُفتح في مكان آخر لا يتابع إلى الأمام، وعكسه جعله يبدو معطوباً فحسب. والأرقام هي الفخ الآخر. الأرقام داخل نص يمينيّ الاتجاه تبقى تسير من اليسار إلى اليمين، والمحتوى المختلط مثل رقم إصدار أو تاريخ داخل جملة عربية قد يُعرض بترتيب مفاجئ إذا لم تعزله البنية المحيطة. وعنصر العزل ثنائي الاتجاه موجود لهذا الغرض بالضبط، ويستحق أن تعرفه قبل أن تحتاجه.
03الطباعة ليست تفصيلاً
الخط العربي واللاتيني يملكان قياسات مختلفة فعلاً، واستعمال مجموعة خطوط واحدة لكليهما هو أسرع طريق لجعل موقع ثنائي اللغة يبدو غير مكتمل. الحروف العربية متصلة، وتحمل تعقيداً رأسياً أكبر، وتحتاج ارتفاع سطر أكبر بوضوح لتبقى مقروءة عند حجم الخط نفسه. ارتفاع السطر الذي يبدو سخياً في الإنكليزية سيبدو خانقاً في العربية. أحمّل خطاً منفصلاً لكل لغة وأبدّل الصنف على مستوى التخطيط، حيث تكون اللغة معروفة أصلاً، فتحصل الشجرة كلها على المجموعة الصحيحة دون أن يعرف أي مكوّن شيئاً عن الأمر. والأمر نفسه ينطبق على الوزن. وزن الخط الذي يُقرأ واثقاً في عنوان لاتيني قد يُقرأ ثقيلاً ومزدحماً في العربية، لأن الحروف المتصلة تملأ مساحة أكبر من الفراغ المتاح. انتهيت إلى خفض وزن العناوين العربية درجة واحدة. ولا شيء من هذا يظهر إن كنت تختبر بنص وهمي فقط، وهذا هو الدرس الحقيقي: اختبر بجمل فعلية، وبأطوال فعلية، وباللغتين، وإلا فستطلق تخطيطاً لا يعمل إلا باللغة التي كتبته بها.
04التقاط الانحدارات
نمط الفشل في دعم ثنائي الاتجاه ليس كسراً درامياً، بل تآكلاً بطيئاً. تضيف مكوّناً على عجل، وتمد يدك إلى ml-2 لأنها ما تعرفه أصابعك، ولا يبدو شيء خاطئاً لأنك كنت تختبر بالإنكليزية. وبعد ثلاثة أسابيع يصبح في الجانب العربي عشرات الاختلالات الصغيرة دون التزام واحد تلوم عليه. شيئان ساعدا. الأول قاعدة تدقيق ترفض صيغ الاتجاه الفيزيائي رفضاً قاطعاً، وهو ما يحوّل ملاحظة في مراجعة الشيفرة إلى خطأ في البناء ويزيل الحكم الشخصي. والثاني عادة لا أداة: كل تغيير بصري يُفحص بالاتجاهين قبل أن يُلتزم، وتبديل اللغة نقرة واحدة في شريط التنقل لأنني جعلته نقرة واحدة تحديداً. احتكاك التحقق يجب أن يكون أقل من إغراء تخطّيه. ولا أدّعي أن هذا صارم. مجموعة اختبارات حقيقية كانت ستلتقط صوراً للاتجاهين وتقارنها. أما في موقع شخصي، فقاعدة تدقيق وعادة التقطتا كل شيء حتى الآن.
الخلاصة
دعم اليمين إلى اليسار ليس مشكلة ترجمة، بل انضباط في التخطيط. اكتب الخصائص المنطقية افتراضياً، وكن متعمّداً في الأشياء القليلة التي لا يجب أن تنعكس، وأعطِ كل نص طباعته الخاصة، واجعل فحص الاتجاهين تافه الكلفة. افعل ذلك يتوقف الاتجاه الثاني عن كونه ميزة تصونها ويصبح شيئاً يتكفّل به المتصفح عنك.