تخطَّ إلى المحتوى
Uttra

لماذا يطلع تصميمك العربي مكسوراً في أدوات الذكاء الاصطناعي؟

يطلع تصميمك العربي مكسوراً لأن أدوات البناء بالذكاء الاصطناعي تبدأ غالباً من قوالب إنجليزية: الصفحة بلا dir="rtl"، والمسافات مكتوبة بيسار ويمين، والأيقونات والسلايدر والرسوم البيانية مضبوطة لليسار، والخط غير عربي، والنصوص المختلطة بلا عزل. أصلح كل طبقة على حدة بالترتيب، وألزم الأداة بالقواعد في كل طلب.

آخر تحديث:

لماذا يحدث هذا

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

  1. اتجاه المستند: وسم html بلا dir="rtl"، فكل شيء يبدأ من اليسار.
  2. المسافات والمواضع الفيزيائية: margin-left و right: 0 و ml-4 لا تنقلب مع الاتجاه، فتبقى الفراغات في الجهة الخطأ.
  3. الاتجاه البصري: الأسهم، شرائط التقدم، أشرطة التمرير، والحركات التي تنزلق من اليسار.
  4. المكوّنات الجاهزة: السلايدر والرسوم البيانية والتقويم والقوائم المنسدلة لها إعداد اتجاه خاص بها، ولا تقرأ اتجاه الصفحة دائماً.
  5. الحقول: رقم الجوال والبريد والرابط تُكتب من اليسار حتى في صفحة عربية، فإذا ورثت اتجاه الصفحة ظهرت مقلوبة أثناء الكتابة.
  6. الخط والنص المختلط: خط غير عربي يفكك الحروف أو يعرضها بخط احتياطي، ونص فيه أرقام وكلمات إنجليزية يتبعثر ترتيبه.

لاحظ أن الطبقة الأولى وحدها هي ما يصلحه طلب «اجعله عربي» عادة. لهذا ترى نصاً عربياً صحيحاً داخل تصميم ما زال يفكر بالإنجليزية. والطبقة السادسة لها صفحتان مستقلتان: الخطوط العربية وانقلاب الأرقام والأقواس.

ومن المفيد أن تعرف أن الطبقات لا تظهر كلها في كل صفحة. صفحة هبوط بسيطة قد تعاني من الأولى والثانية والسادسة فقط، بينما لوحة تحكم فيها رسوم بيانية وجداول ونماذج قد تعاني من الست معاً. لذلك قد يبدو لك أن الأداة «أصلحت» الصفحة الرئيسية ثم «أفسدت» لوحة التحكم، والحقيقة أن لوحة التحكم فيها طبقات لم تكن في الرئيسية أصلاً.

الحل خطوة بخطوة في أي أداة

الخطوات التالية تعمل في Lovable و Replit و Bolt و v0 أو أي مشروع ويب، لأنها HTML و CSS قياسيان. ضع القواعد العامة في ملف الأنماط الرئيسي للمشروع، وهو غالباً index.css أو globals.css أو style.css.

  1. ثبّت الاتجاه واجعل المحاذاة منطقية

    ابدأ من وسم html، ثم أضف قاعدة عامة تمنع أي محاذاة يسار موروثة.

    code
    <html lang="ar" dir="rtl">
    
    /* ملف الأنماط الرئيسي */
    body { text-align: start; }
    th, td { text-align: start; }
  2. اضبط الحقول التي تُكتب من اليسار

    رقم الجوال والبريد والروابط والرموز تُكتب من اليسار إلى اليمين، لكن تبقى محاذاتها مع بقية النموذج العربي إلى اليمين.

    code
    input[type="tel"],
    input[type="email"],
    input[type="url"],
    input[name="iban"] {
      direction: ltr;
      text-align: right;
    }
    
    input::placeholder { text-align: right; }
  3. اعكس الحركة والتقدم

    شريط التقدم يجب أن يمتلئ من اليمين، والعناصر التي تنزلق إلى الداخل تأتي من اليمين. القاعدة :dir(rtl) تختار العنصر حسب اتجاهه الفعلي.

    code
    .progress-fill { transform-origin: right; }
    
    .drawer { inset-inline-start: 0; }
    .drawer.closed { transform: translateX(100%); }
    :dir(ltr) .drawer.closed { transform: translateX(-100%); }
  4. أخبر السلايدر بالاتجاه

    مكتبة Swiper، وهي من أكثر المكتبات استخداماً في السلايدر، تقرأ خاصية dir من الحاوية. بدونها يتحرك السهم «التالي» إلى الخلف.

    code
    <div class="swiper" dir="rtl">
      <div class="swiper-wrapper">
        <div class="swiper-slide">عرض رمضان</div>
        <div class="swiper-slide">شحن مجاني داخل الرياض</div>
      </div>
    </div>
  5. فعّل الاتجاه في الرسوم البيانية

    في Chart.js مثلاً، وسيلة الإيضاح والتلميح لهما خيار rtl مستقل عن الصفحة. وضع المحور الأفقي ليبدأ من اليمين اختياري حسب نوع البيانات.

    code
    new Chart(ctx, {
      type: "bar",
      data,
      options: {
        plugins: {
          legend: { rtl: true, textDirection: "rtl" },
          tooltip: { rtl: true, textDirection: "rtl" },
        },
        scales: { x: { reverse: true } },
      },
    });
  6. افحص الصفحة من المتصفح

    افتح الصفحة واضغط F12 ثم الصق هذا في الطرفية (Console). يعرض لك كل عنصر ما زالت محاذاته أو هامشه فيزيائياً، فتعرف أين تبحث.

    code
    document.querySelectorAll("body *").forEach(el => {
      const s = getComputedStyle(el);
      if (s.textAlign === "left" || parseFloat(s.marginLeft) > 0 && s.marginRight === "0px") {
        console.log(el, s.textAlign, s.marginLeft);
      }
    });
    console.log("dir:", document.documentElement.dir || "غير محدد");

وهذا برومبت عام تلصقه في أي أداة بناء. صغناه بحيث يذكر الطبقات بالاسم، لأن الوكيل يصلح ما يُطلب منه تحديداً:

برومبت عام لأي أداةجرّبه في أوترا

راجع الواجهة كاملة لتكون عربية من اليمين إلى اليسار، طبقة بطبقة: - وسم html فيه lang="ar" و dir="rtl". - لا خصائص يسار أو يمين في المسافات والمواضع والمحاذاة: استخدم الخصائص المنطقية (margin-inline، padding-inline، inset-inline، text-align: start). - الأسهم وأيقونات التالي والسابق مقلوبة، وشريط التقدم يمتلئ من اليمين. - السلايدر والرسوم البيانية والتقويم مضبوطة على rtl في إعداداتها. - حقول الجوال والبريد والروابط direction: ltr مع محاذاة لليمين. - خط عربي واضح للنصوص، والأرقام والكلمات الإنجليزية داخل النص معزولة داخل <bdi>. بعد الانتهاء اذكر لي كل مكوّن عدّلته وماذا غيّرت فيه.

تريد فحصاً سريعاً قبل أن تبدأ؟ جرّب أداة فاحص الاتجاه RTL على رابط صفحتك لتعرف أي الطبقات مكسورة عندك.

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

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

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

الحل الأسرع: أوترا

الفكرة في أوترا أن العربية ليست طبقة تضيفها بعد البناء. المنصة مبنية على تجربة عربية أصيلة، واجهةً ومحتوى واتجاهاً RTL، فتكتب طلبك بالعربية الفصحى أو بلهجتك وتصلك صفحة تبدأ من اليمين.

قبل: الصفحة بدون dir
اكتب اسمكإرسال ←
بعد: dir="rtl" وخصائص منطقية
اكتب اسمكإرسال ←
عرض حيّ يرسمه متصفحك الآن، وليس لقطة شاشة.

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

أسئلة شائعة

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

صفحات ذات صلة