تخطَّ إلى المحتوى
العربية وواجهات RTL

لماذا تنكسر مكتبات المكوّنات في وضع RTL، وما الذي تفحصه أولًا

الأعطال المتكرّرة في مكتبات المكوّنات وأنظمة التصميم وCSS الوظيفي عند تغيّر الاتجاه — والتعديل الواحد الذي يزيل أغلبها.

لماذا تنكسر مكتبات المكوّنات في وضع RTL؟

مصطفى نوح — صورة شخصيةمصطفى نوحنُشر 7 دقيقة قراءة

١. الخصائص الفيزيائية

المكوّن المكتوب بـ margin-left وpadding-right وleft: 0 وtext-align: left يعمل تمامًا حتى يتغيّر الاتجاه، فتشير كل تلك القيم عندها إلى الجهة الخاطئة. أما المكافئات المنطقية — margin-inline-start وpadding-inline-end وinset-inline-start وtext-align: start — فتُعكس تلقائيًا ولا تحتاج ملفّ أنماط ثانيًا.

٢. التحويلات والإزاحات ذات الإشارة

الدالة translateX(-50%) لا تُعكس. ولا شريط شرائح يتقدّم بطرح بكسلات، ولا درج ينزلق من translateX(100%)، ولا سهم يزحف +٤ بكسل عند التمرير. فـ CSS لا يملك تحويلًا منطقيًا، ولذلك تُعالج هذه لكل اتجاه على حدة — والعطل صامت، لأن الكود ما زال يعمل والعنصر ما زال يتحرّك، لكن نحو الحافة الخاطئة.

٣. أيقونات تحمل اتجاهًا

  • اعكس هذه: أسهم الرجوع والتقدّم، والتالي والسابق، والإزاحة، والتراجع والإعادة، والردّ، وخطوط الاتجاه، وأسهم التقدّم.
  • لا تعكس هذه أبدًا: الساعة، وزرّ التشغيل، وعلامة الصحّ، والشعار، والعدسة، وكل ما يحوي نصًّا لاتينيًا.
  • تطبيق transform: scaleX(-1) على كل أيقونة في RTL سيقلب شعارك وزرّ التشغيل. ويحدث هذا باستمرار.

٤. المحتوى المختلط والنصّ ثنائي الاتجاه

رقم هاتف أو سعر أو رقم إصدار أو تاريخ أو اسم منتج لاتيني داخل جملة عربية ستعيد الخوارزمية ثنائية الاتجاه ترتيبه ما لم يُعزَل المقطع. والنتيجة ليست خللًا تنسيقيًا — فتاريخٌ يُعرض ١٣-٠٩-٢٠٢٦ وحقّه أن يُقرأ ٢٠٢٦-٠٩-١٣ حقيقة خاطئة على الصفحة، والآلة التي تقرؤها تسجّل الحقيقة الخاطئة.

html
<!-- reorders: the + jumps, the groups swap -->
<p>اتصل على +20 150 515 5999</p>

<!-- holds: the Latin run is isolated -->
<p>اتصل على <span dir="ltr">+20 150 515 5999</span></p>
خاصية واحدة، ويتوقّف الرقم عن كونه خاطئًا.

٥. إعدادات طباعية لا تنطبق

العربية خطّ متّصل. وخاصية letter-spacing تفكّ وصلاته وتنتج نصًّا يُقرأ كأنه معطوب — فنظام التصميم الذي يطبّق تباعدًا عامًّا على العناوين يجب أن يبطله في RTL. وينطبق الأمر نفسه على text-transform: uppercase التي لا تفعل شيئًا بالعربية، وعلى أوزان الخطوط، لأن العربية بالوزن الرقمي نفسه تُقرأ دائمًا أثقل من اللاتينية.

الفحص الأول لأي بلاغ عطل في RTL

  • ابحث في ملفّ الأنماط عن left وright وmargin-left وpadding-right وtext-align: left.
  • ابحث عن translateX وscrollLeft وأيّ إزاحة بكسل ذات إشارة في JavaScript.
  • افحص إطارات كل حركة المفتاحية، لا خاصية اتجاهها.
  • اسرد كل أيقونة وقرّر، واحدةً واحدة، هل تحمل اتجاهًا.
  • غلّف كل مقطع لاتيني أو رقمي داخل نصّ عربي بـ dir="ltr".
  • أبطل letter-spacing وuppercase تحت [dir="rtl"].
  • تأكّد من مزراب شريط التمرير — ففي RTL يقع على الحافة البادئة ويغيّر حسابات عرضك.

المصادر

التواصل

لديك موقع أو متجر يحتاج أن يعمل بشكل أفضل؟

أخبرني بما يحدث وفي أي صفحة. فالتشخيص وحده مُخرَج أول مفيد.

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

متاح للعمل عن بُعد بما يتوافق مع توقيت EST
مصطفى نوح — صورة شخصية

مصطفى نوح

مطوّر ويب متكامل وبانٍ للمنتجات

الموقع الجغرافي
مصر · عن بُعد