EduFlow

الوحدة 4 · التصميم البصري والمحتوى

اللغة البسيطة واللغة والاتجاه

17 دقراءة 4 دبيئة تجريب الكود

الدرس في لمحة

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

  1. 1اللغة البسيطة
  2. 2لغة الصفحة ولغة أجزائها
  3. 3الاتجاه: rtl وauto وbdi
  4. 4تخطيط ينعكس من تلقاء نفسه

لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.

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

اللغة البسيطة

ذوو الإعاقات الذهنية وصعوبات التعلّم، وعُسر القراءة، وإصابات الدماغ، وضعف الذاكرة، ومعهم كل من يقرأ بلغة ثانية أو في نهاية يوم طويل، يستفيدون من نص سهل المتابعة. المعيار الرسمي الوحيد في WCAG بشأن مستوى القراءة، 3.1.5، من المستوى AAA، لكن اللغة البسيطة تبقى من أكثر تحسينات إمكانية الوصول فاعلية.

قارن سياسة الاسترداد في Ticketly قبل التعديل وبعده:

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

بعد: يمكنك استرداد ثمن التذكرة كاملًا حتى 14 يومًا قبل المهرجان. بعد ذلك، لا نردّ المبلغ إلا إذا أُلغيت الفعالية.

التقنيات سهلة الذكر وتحتاج إلى تمرين لتطبيقها:

  • ضع أهمّ نقطة أولًا، في العنوان وفي الجملة الأولى.
  • استخدم كلمات شائعة وجملًا قصيرة. فكرة واحدة في كل جملة.
  • استخدم الاسم نفسه للشيء نفسه في كل مكان: إن كانت «تذكرة» على البطاقة، فلا تصبح «باقة دخول» في صفحة الدفع (3.2.4 Consistent Identification).
  • اكتب تعليمات تعمل دون حاجة إلى البصر. «اضغط الزر الأخضر على اليمين» تعتمد على اللون والموضع؛ أما «اضغط Continue» فتعمل للجميع (1.3.3 Sensory Characteristics).
  • اشرح الاختصارات في أول مرة: «صالة VIP (المنطقة المسقوفة بجانب المسرح)».

لغة الصفحة ولغة أجزائها

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

  • 3.1.1 Language of Page ‏(A): ‏<html lang="en"> (أو ar أو fr وهكذا). وغياب لغة الصفحة من الإخفاقات الستة الأكثر شيوعًا على الويب.
  • 3.1.2 Language of Parts ‏(AA): كل مقطع بلغة مختلفة يحصل على lang خاصة به.

هذه هي البطاقة العربية في الصفحة الإنجليزية، والعنوان «ليالي الطرب» معلَّم بأنه عربي:

ticketly/events.html
<html lang="en">
…
<article class="card">
  <h3 lang="ar" dir="rtl">…</h3> <!-- the Arabic title -->
  <p>An evening of classic Arabic music at the old harbour.</p>
</article>

صار NVDA يتحوّل إلى صوت عربي عند العنوان ثم يعود إلى الإنجليزية عند الوصف. ولا تحتاج إلى lang لأسماء العلم أو للكلمات التي دخلت الإنجليزية واستقرّت فيها مثل “café”؛ فهي مخصّصة للمقاطع التي سينطقها القارئ باللغة الأخرى.

الاتجاه: rtl وauto وbdi

العربية والعبرية والفارسية والأردية تُكتب من اليمين إلى اليسار. وخاصية dir تخبر المتصفّح بالاتجاه الأساسي لكتلة النص، وهو ما يتحكّم في الجهة التي يبدأ منها النص، والجهة التي تقع عليها علامات الترقيم، وترتيب النص حين تختلط فيه الاتجاهات.

  • dir="rtl" على <html> لصفحة عربية، أو على عنصر لجزء عربي داخل صفحة إنجليزية.
  • dir="auto" حين لا تعرف الاتجاه مسبقًا، كأسماء المستخدمين والمراجعات وحقول البحث. ينظر المتصفّح إلى أول حرف ذي اتجاه قوي.
  • <bdi> يعزل جزءًا قصيرًا من نص كتبه مستخدم داخل جملة، فلا يعيد اسم مستخدم عربي ترتيب النص الإنجليزي المحيط به: Review by <bdi>سارة</bdi>, 5 stars.

تخطيط ينعكس من تلقاء نفسه

في التخطيط من اليمين إلى اليسار، ينقلب كل ما هو أفقي: الأيقونة التي كانت على يسار العنوان مكانها على يمينه، والحشو الذي كان يُبعد النص عن الحافة اليسرى يجب أن يُبعده عن اليمنى. الخصائص الفيزيائية مثل margin-left وtext-align: left لا تنقلب. أما الخصائص المنطقية (logical properties) فتنقلب:

الفيزيائية المنطقية
margin-left margin-inline-start
padding-right padding-inline-end
left: 0 inset-inline-start: 0
text-align: left text-align: start
border-left border-inline-start
ticketly/card.css
.card {
  padding-inline: 1rem;
  border-inline-start: 4px solid #5b3cc4;
  text-align: start;
}
.badge {
  margin-inline-end: 0.5rem; /* the gap after the icon, on whichever side that is */
}
بطاقة إنجليزية حدّها الملوّن وأيقونتها على اليسار والمسافة بعد الأيقونة على يمينها، بجوار بطاقة عربية حدّها وأيقونتها على اليمين والمسافة على يسار الأيقونة، وكلتاهما ناتجة عن قواعد CSS المنطقية نفسها. Harbour Lights inline-start = يسار ليالي الطرب inline-start = يمين border-inline-start · margin-inline-end
البطاقة نفسها في الاتجاهين

ليس كل شيء يجب أن ينعكس. الشعارات والصور وأزرار مشغّل الوسائط (زر التشغيل يشير إلى اليمين دائمًا) والأرقام تبقى كما هي. أما الأسهم التي تعني «التالي» أو «رجوع» فيجب أن تنقلب؛ والـ pseudo-class ‏:dir(rtl) تتيح لك استهدافها دون كلاسات إضافية.

بهذا يكتمل القسم 4. صار Ticketly منظّمًا، وقابلًا للتشغيل، ومقروءًا، ويُنطق بشكل صحيح. وينتقل القسم 5 إلى إثبات ذلك: الاختبار الآلي، والاختبار اليدوي بقارئات الشاشة، وتدقيق شامل.

أهم النقاط

  • اللغة البسيطة، والجمل القصيرة، والتعليمات التي لا تعتمد على الشكل أو اللون أو الموضع، تساعد ذوي الإعاقات الإدراكية وكل من يقرأ بلغة ثانية.
  • اضبط lang على عنصر html للصفحة كلها وعلى أي مقطع بلغة أخرى، لتبدّل قارئات الشاشة الصوت وقواعد النطق.
  • استخدم dir=“rtl” للمحتوى العربي والعبري، وdir=“auto” للنصوص التي يكتبها المستخدمون ولا يمكنك معرفة اتجاهها مسبقًا.
  • خصائص CSS المنطقية مثل margin-inline-start وtext-align: start تنعكس تلقائيًا في التخطيطات من اليمين إلى اليسار.

قراءات إضافية

تحقّق من فهمك

4 أسئلة

السؤال 1 من 4

تعرض صفحة Ticketly الإنجليزية عنوان الفعالية العربي «ليالي الطرب» دون خاصية lang. ماذا يفعل عادةً قارئ شاشة مضبوط على الإنجليزية؟

السؤال 2 من 4

يتيح Ticketly للحضور نشر مراجعات بالإنجليزية أو بالعربية. أيّ كود يتعامل مع اتجاه نص كل مراجعة بأفضل شكل؟

السؤال 3 من 4

أيّ تعليمة تحقّق معيار 1.3.3 Sensory Characteristics؟

السؤال 4 من 4

شارة أيقونة تسبق عنوان بطاقة وعليها margin-right: 8px. في صفحة Ticketly العربية، تظهر المسافة في الجهة الخطأ. ما أنظف إصلاح؟

تدريب

بيئة تجريب الكود

اجعل بطاقة الفعالية العربية تُنطق وتستقرّ كما ينبغي

الصفحة إنجليزية (<html lang="en"> مضبوطة أصلًا). عنوان البطاقة الثانية ووصفها بالعربية، وقد يكتب المراجعون بأيّ من اللغتين. أصلحها:

  1. علِّم كل نص عربي بـ lang="ar" وباتجاه من اليمين إلى اليسار.
  2. أبقِ الملاحظة الإنجليزية في تلك البطاقة (.note) إنجليزيةً ومن اليسار إلى اليمين.
  3. اجعل حقلي اسم المراجع والمراجعة يختاران اتجاههما بحسب ما يُكتب فيهما.
  4. استبدل الـ CSS الفيزيائي لتقع مسافة الشارة بعد الأيقونة في الاتجاهين (على اليمين في الإنجليزية، وعلى اليسار في العربية).
<article class="card" id="card-en">
  <h3><span class="badge" aria-hidden="true">★</span>Harbour Lights</h3>
  <p>Two nights of music on the old harbour wall.</p>
</article>

<article class="card" id="card-ar">
  <h3><span class="badge" aria-hidden="true">★</span>ليالي الطرب</h3>
  <p>أمسية من الموسيقى العربية الكلاسيكية في الميناء القديم.</p>
  <p class="note">An evening of classic Arabic music at the old harbour.</p>
</article>

<form class="review">
  <label for="reviewer">Your name</label>
  <input id="reviewer" name="reviewer">
  <label for="review-text">Your review</label>
  <textarea id="review-text" name="review"></textarea>
</form>جارٍ تحميل المحرّر…

Ctrl/⌘ + Enter للتشغيل · يعمل في بيئة معزولة داخل متصفّحك. لا شيء يغادر جهازك.

المعاينة

الـ console

(لا مخرجات)

الفحوص

  • كل النص العربي داخل عنصر عليه lang=“ar”
  • كل النص العربي معروض من اليمين إلى اليسار
  • تبقى الصفحة والملاحظة الإنجليزية بالإنجليزية ومن اليسار إلى اليمين
  • حقلا الاسم والمراجعة يستخدمان dir=“auto”
  • مسافة الشارة تتبع الأيقونة في البطاقتين الإنجليزية والعربية