التعامل مع النص ثنائي الاتجاه
ماذا تفعل خوارزمية الاتجاهين
تحدد خوارزمية يونيكود للاتجاهين (UAX #9) كيف يُعرض النص الذي يجمع اتجاهين. لكل حرف اتجاه: الحروف العربية من اليمين إلى اليسار، والحروف اللاتينية والأرقام من اليسار إلى اليمين، أما الرموز المحايدة كالمسافات وعلامات الترقيم فتأخذ اتجاهها من النص المحيط.
ينجح ذلك في أغلب الأحيان. وتظهر المشكلات عند الحدود، خاصة مع علامات الترقيم المجاورة لكلمة لاتينية.
معظم مشكلات المحتوى تأتي من نصوص قصيرة تُدرج في جمل أطول، مثل اسم مستخدم في إشعار أو اسم ملف في رسالة. وهذه القيم تأتي من الخارج فلا يُعرف اتجاهها مسبقًا.
واتجاه الفقرة الأساسي مهم أيضًا، فهو يحدد الجهة التي تبدأ منها الفقرة ومكان الرموز المحايدة عند الأطراف. لذلك يكون ضبط <code>dir</code> بشكل صحيح على الصفحة وعلى كل كتلة هو الخطوة الأولى.
أسماء لاتينية وأرقام وروابط داخل العربية
اسم علامة مثل Figma داخل جملة عربية يُعرض من اليسار إلى اليمين بينما تجري الجملة من اليمين إلى اليسار حوله. وإذا تبعت الاسمَ علامة استفهام أو نقطة فقد تقفز العلامة إلى الجهة الخطأ من الكلمة اللاتينية.
للأرقام سلوكها الخاص. يُعرض رقم الهاتف أو السعر من اليسار إلى اليمين كوحدة واحدة، لكن الفواصل مثل علامة الجمع والشرطة وعلامة النسبة محايدة فقد تنزاح. ولف القيمة كلها في عنصر معزول واحد يبقيها متماسكة.
وينطبق الأمر على الروابط ونطاقات الأرقام. افحص كل نص من هذا النوع في سياقه بدل افتراض أنه سيظهر صحيحًا.
الأدوات: dir وbdi وisolate
الاتجاه التلقائي
عبر الخاصية <code>dir="auto"</code> يختار المتصفح الاتجاه من أول حرف قوي في النص. مفيد للمحتوى مجهول اللغة.
عنصر bdi
يحيط بجزء من النص مثل اسم مستخدم، فلا يؤثر اتجاهه في النص المحيط. واتجاهه الافتراضي تلقائي.
العزل في CSS
طريقة CSS لعزل عنصر عمّا حوله هي <code>unicode-bidi: isolate</code>. اجمعها مع اتجاه محدد عندما تتحكم في الشيفرة.
محتوى المستخدمين والاختبار
الأسماء والتعليقات والرسائل التي يكتبها المستخدمون قد تكون بأي لغة. لف كل قيمة مُدرجة في <code><bdi&gt;</code> أو امنحها <code>dir="auto"</code> حتى لا يبعثر اسم عربي واحد جملة إنجليزية، والعكس.
لا تحاول إصلاح مشكلات الاتجاهين بإدراج محارف تحكم غير مرئية في النص إلا عند الضرورة. فالوسوم مثل <code>dir</code> و<code><bdi&gt;</code> تُبقي المحتوى نظيفًا وأسهل صيانةً وترجمةً.
- اختبر نصوصًا مختلطة حقيقية: اسم علامة مع علامة استفهام، وسعر، ورقم هاتف، ورابط.
- افحص النتيجة في اتجاهَي الصفحة.
- اطلب من قارئ عربي أصلي تأكيد الترتيب.
المصادر
- Unicode Consortium. Unicode Standard Annex #9: Unicode Bidirectional Algorithm. https://www.unicode.org/reports/tr9/
- W3C. Structural markup and right-to-left text in HTML. https://www.w3.org/International/questions/qa-html-dir
صيغ هذا الدليل بمساعدة الذكاء الاصطناعي اعتمادًا على معايير ومراجع عامة. وللنص الدقيق لأي معيار، ارجع إلى المصادر المذكورة أعلاه.