اختبار الواجهات من اليمين إلى اليسار
اختبار الواجهات من اليمين إلى اليسار (RTL testing) يتحقق من أن الواجهة تعمل مع أنظمة الكتابة التي تُكتب من اليمين إلى اليسار مثل العربية: يُعكس التخطيط حيث ينبغي ويبقى ثابتاً حيث لا ينبغي، ويُعرض النص العربي والإنجليزي المختلط بالترتيب الصحيح، وتتصل الحروف العربية وتُعرض بوضوح، وتعمل النماذج وقارئات الشاشة وتركيز لوحة المفاتيح في التخطيط المعكوس. وهو الجزء من اختبار التوطين الذي تعيش فيه أكثر العيوب ظهوراً — والذي يستطيع فيه فريق لا يقرأ العربية أن يجد معظمها.
هذا الدليل إجراء عملي لواجهات الويب والجوال، مع الوسوم وCSS التي ينبغي أن يتعرف عليها المختبِر، وقائمة تحقق، وأمثلة أتمتة، وأمثلة عيوب مكتوبة كعناوين أخطاء. أما الموضوعات الأوسع — جودة الترجمة والتقاويم وصيغ الأرقام والعملات والترميز — فيغطيها دليل اختبار التوطين.
ابدأ بسمتي dir وlang
تحتاج كل صفحة RTL إلى سمتين على عنصرها الجذري: lang التي تعلن اللغة (ar أو ar-SA)، وdir="rtl" التي تضبط الاتجاه الأساسي. وتوصي إرشادات التدويل في W3C بضبط الاتجاه بسمة dir في الوسوم لا بخاصية direction في CSS وحدها، لأن الاتجاه جزء من معنى المحتوى ويجب أن يبقى حين تغيب الأنماط، وحين يُنسخ المحتوى، وحين تقرؤه التقنيات المساعدة. وينطبق الأمر نفسه على رسائل البريد بصيغة HTML والقوالب التي تولّد ملفات PDF.
سمة lang تفعل أكثر من توثيق اللغة: فهي تتيح لقارئ الشاشة اختيار صوت عربي، وللمتصفح انتقاء خطوط مناسبة، وتشغّل المحدِّد :lang() المستخدم في الأنماط الخاصة بنظام الكتابة. والصفحة الموسومة lang="en" مع dir="rtl" معيبة حتى لو بدت صحيحة.
- افحص العنصر الجذري في كل صفحة، بما فيها صفحات الأخطاء والبريد والعروض القابلة للطباعة وملفات PDF.
- بدّل اللغة أثناء التشغيل ثم أعدها: يجب أن يتغير الاتجاه والخطوط والتخطيط المخزَّن مؤقتاً كلها، دون أن تبقى شاشة نصف معكوسة.
ما الذي يُعكس وما الذي لا يُعكس
في التخطيط من اليمين إلى اليسار تبدأ القراءة من اليمين، فتُعكس الواجهة حول المحور الرأسي (Mirroring). وتقدم إرشادات Apple للواجهات البشرية مجموعة قواعد عملية: اعكس عناصر التحكم التي تُظهر التقدم من قيمة إلى أخرى (أشرطة التمرير ومؤشرات التقدم)، وعناصر التحكم التي تتنقل بين عناصر بترتيب ثابت (السابق والتالي)، والأيقونات التي تمثل اتجاه النص أو القراءة أو الحركة إلى الأمام والخلف؛ واعكس ترتيب الصور حين يكون للترتيب معنى. ولا تعكس الصور الفوتوغرافية والأعمال الفنية، والشعارات والعلامات العالمية مثل علامة الصح، والأيقونات التي تصوّر أشياء من العالم الحقيقي مثل الساعة، وعناصر التحكم التي تشير إلى اتجاه مادي حقيقي، ولا الأرقام داخل العدد الواحد مثل رقم الهاتف أو البطاقة.
تشغيل الوسائط استثناء مقصود في منصات كثيرة: فإرشادات ثنائية الاتجاه في Material Design، التي تحيل إليها وثائق Android، تُبقي أزرار التشغيل وشريط تقدم الوسائط من اليسار إلى اليمين لأنها تعكس اتجاه الوسائط التي تُشغَّل (اتجاه الشريط) لا اتجاه الزمن. وأياً كان قرار منتجك، اكتبه في مواصفة التصميم واختبر مقابله، لأن العيب الحقيقي هو التعامل غير المتسق بين الشاشات. وتبقى الشيفرة المصدرية ومخرجات الطرفية والتعابير الرياضية من اليسار إلى اليمين أيضاً.
- يُعكس: تخطيط الصفحة، والقوائم الجانبية، وترتيب التبويبات، ومسار التنقل، وأسهم الرجوع والتقدم، ومؤشرات الخطوات، والعروض الدوّارة، وأشرطة التقدم، وأشرطة التمرير، وأسهم القوائم، وترتيب أعمدة الجداول، وموضع الأيقونات بالنسبة إلى تسمياتها.
- لا يُعكس: الشعارات، وعلامات الصح، والساعات وأيقونات التحديث الدائرية التي تصوّر حركة حقيقية باتجاه عقارب الساعة، والصور، والخرائط، وأرقام الهواتف والبطاقات، وكتل الشيفرة، والرسوم البيانية التي يمثل محورها الزمن ما لم يقرر التصميم غير ذلك.
من اليسار إلى اليمين: dir="ltr"
تبدأ القراءة من اليسار.
- سهم الرجوع والشعار في أعلى اليسار
- يمتلئ شريط التقدم من اليسار، وتشير الأسهم إلى اليمين
العربية من اليمين إلى اليسار: dir="rtl"
تُعكس الواجهة حول المحور الرأسي.
- يُعكس: سهم الرجوع، ومسار التنقل، وشريط التقدم، وأسهم القوائم، وجهة الأيقونة من تسميتها
- ينتقل ولا يُعكس: الشعار، وعلامة الصح، والساعة، والصور؛ ويبقى ترتيب أرقام الهاتف كما هو
مشغل الوسائط في الصفحة العربيةقرار موثق
تُبقي إرشادات Material Design أزرار التشغيل وشريط تقدم الوسائط من اليسار إلى اليمين.
- اكتب قرارك في مواصفة التصميم واختبر مقابله
- التعامل غير المتسق بين الشاشات هو العيب
شاشات تخطيطية: النص مرسوم كأشرطة. والدائرة في الشاشتين الأوليين تمثل أيقونة لشيء من العالم الحقيقي مثل الساعة، وفي مشغل الوسائط هي زر التشغيل.
خصائص CSS المنطقية وتخطيط المنصات
تأتي معظم عيوب العكس من كود التخطيط الفيزيائي. فخصائص CSS مثل margin-left وpadding-right وleft وright وtext-align: left تبقى في الجانب نفسه أياً كان الاتجاه؛ أما مقابلاتها المنطقية (Logical properties) — margin-inline-start وpadding-inline-end وinset-inline-start وtext-align: start — فتتبع اتجاه الكتابة. ويتبع Flexbox وGrid الاتجاه تلقائياً؛ أما التموضع المطلق والتحويلات ومواضع الخلفيات وإزاحات الظلال فلا. وتحتاج الأيقونات الاتجاهية إلى قلب صريح، والاتجاهية منها فقط.
وللمنصات الجوالة المفهوم نفسه بأسماء أخرى. في Android يعلن التطبيق android:supportsRtl="true"، وتستخدم التخطيطات start وend بدل left وright، ويمكن للرسومات الاتجاهية البسيطة ضبط android:autoMirrored="true". وفي iOS تُعكس قيود leading وtrailing في Auto Layout بينما لا تُعكس قيود left وright، ويجب وسم الصور الاتجاهية لتُقلب في تخطيطات اليمين إلى اليسار. لا يحتاج المختبِر إلى كتابة هذا الكود، لكن التعرف على الخصائص الفيزيائية في المراجعة أو في أدوات المطور يفسّر معظم عيوب «هذا العنصر لم يتحرك».
/* Physical properties: do not mirror */
.card { margin-left: 16px; text-align: left; }
.badge { position: absolute; right: 8px; }
/* Logical properties: follow the writing direction */
.card { margin-inline-start: 16px; text-align: start; }
.badge { position: absolute; inset-inline-end: 8px; }
.list { padding-inline-start: 24px; border-inline-end: 1px solid; }
/* Directional icons flip explicitly; logos, check marks and media icons do not */
[dir="rtl"] .icon-chevron-next { transform: scaleX(-1); }
/* Arabic text: no letter-spacing, room for diacritics */
:lang(ar) { letter-spacing: 0; line-height: 1.8; }النص ثنائي الاتجاه وخوارزمية يونيكود ثنائية الاتجاه
تحتوي الجمل العربية عادةً على محتوى من اليسار إلى اليمين: أسماء علامات تجارية إنجليزية، وأرقام طلبات، ورموز منتجات، وعناوين بريد، وروابط، وأرقام هواتف، وشيفرة. ويحدد ترتيب العرض خوارزميةُ يونيكود ثنائية الاتجاه (Unicode Bidirectional Algorithm – UAX #9). وعلى المستوى العملي، المحارف إما قوية (للحروف العربية واللاتينية اتجاه)، أو ضعيفة (الأرقام وبعض الفواصل)، أو محايدة (المسافات ومعظم علامات الترقيم). وتأخذ المحايدات الواقعة بين مقطعين مختلفي الاتجاه، وتلك الواقعة على حافة الفقرة، الاتجاهَ الأساسي — ولهذا تقفز علامة الترقيم بعد عبارة إنجليزية إلى الجانب الخطأ. وللأرقام قواعد إضافية: فالأرقام التي تأتي بعد حروف عربية تُصنَّف ضمن فئة «الرقم العربي» في الخوارزمية (Arabic Number – AN) دون أن يتغير شكلها، والشرطة أو المسافة بين هذه الأعداد، وعلامة + قبلها، تأخذ اتجاه اليمين إلى اليسار، فتُرتَّب كل مجموعة أرقام مقطعاً مستقلاً — ولهذا قد يُعرض رقم طلب بشرطة أو رقم هاتف بمسافات بأجزاء مُعاد ترتيبها داخل الجملة العربية.
والإصلاح هو العزل (Isolation). في HTML غلّف المحتوى المضمَّن معروف الاتجاه بعنصر له dir خاص به، واستخدم <bdi> أو dir="auto" للمحتوى الذي لا يُعرف اتجاهه مسبقاً (أسماء المستخدمين والمراجعات وعبارات البحث)، وضع dir="auto" على حقول النص الحر. وخارج HTML — في الإشعارات النصية والرسائل القصيرة والنصوص الأصلية في التطبيقات — تؤدي محارف العزل في يونيكود المهمة نفسها (U+2066 LRI وU+2067 RLI وU+2068 FSI، وتُغلق بـ U+2069 PDI). أما محارف التضمين القديمة (U+202A–U+202E) فاستخدامها الصحيح أصعب وقد تؤثر في النص الذي يليها.
- ابنِ مجموعة اختبار ثنائية الاتجاه: جمل عربية فيها علامة تجارية إنجليزية في البداية والوسط والنهاية؛ ومع رقم طلب وبريد ورابط ورقم هاتف؛ ومع أرقام تليها وحدات أو علامة نسبة مئوية؛ ومع أقواس وعلامات تنصيص.
- افحص المحارف غير المرئية: النص الذي «يبدو صحيحاً» قد يحمل علامات اتجاه شاردة منسوخة من نظام آخر؛ فكّه إلى نقاط ترميز لتراها.
<!-- page: base direction and language on the root element -->
<html lang="ar" dir="rtl">
<!-- order number that must keep its order -->
<p>رقم الطلب: <bdi dir="ltr">2026-0042</bdi></p>
<!-- identifiers that must always read left-to-right -->
<p>للتواصل: <span dir="ltr">+966 50 123 4567</span></p>
<!-- user-generated text of unknown direction -->
<p dir="auto">{review.text}</p>
<!-- English phrase inside Arabic: direction and pronunciation -->
<p>جرّب أداة <bdi lang="en">Mutqan Tools!</bdi> مجاناً</p>
Without isolation, an RTL paragraph can display (example):
2026-0042 as 0042-2026
+966 50 123 4567 as 4567 123 50 966+
Mutqan Tools! as !Mutqan Toolsجرّبها: مفكّك ترميز Unicode جرّبها: مرمّز Unicode جرّبها: مولّد بيانات اختبار متعددة اللغات
عرض العربية: وصل الحروف والخطوط والحركات والاقتطاع
العربية خط متصل: معظم الحروف تتخذ شكلاً مختلفاً بحسب كونها منفردة أو متصلة بما قبلها أو بما بعدها أو بكليهما، وبعض الأزواج مثل اللام ألف (لا) تشكّل ربطاً إلزامياً. ويختار محرك تحديد أشكال الحروف (Shaping engine) هذه الأشكال، وأي شيء يتدخل فيه ينتج حروفاً منفصلة. وتباعد الحروف (letter-spacing) على النص العربي سبب كلاسيكي — فبحسب المحرك إما يُدخل فجوات تقطع الوصل أو يُتجاهل ببساطة — لذا القاعدة الآمنة letter-spacing: 0 للعربية. كما قد يكسر الوصلَ في بعض المحركات إدراجُ محرف داخل الكلمة (فاصل صفري غير واصل، أو محرف إخفاء، أو واصلة اختيارية)، أو رسم النص محرفاً محرفاً لحركة متحركة، أو تظليل جزء من كلمة بتنسيق منفصل.
والمخرجات المولّدة هي أكثر مواضع فشل العرض. فمولّدات PDF ومكتبات الرسوم البيانية والرسم على canvas والعلامات المائية على الصور التي لا تتضمن خطوة لوصل الحروف العربية وتحديد أشكالها تعرض العربية عادةً حروفاً منفصلة بترتيب معكوس. والخطوط مهمة أيضاً: فالخط اللاتيني أولاً مع بديل عربي قد يخلط الأحجام وخطوط الأساس، وتنبّه إرشادات Apple إلى أن العربية بجوار نص لاتيني بأحرف كبيرة قد تبدو أصغر مما ينبغي وقد تحتاج إلى حجم أكبر قليلاً. والحركات (التشكيل)، كما في الكلمة المثال مُتْقَن، تمتد فوق السطر وتحته، فتقصّها ارتفاعات الأسطر الثابتة وإخفاء الفائض. وحين يُقتطع النص يجب أن تقع علامة الحذف في النهاية المنطقية للنص — على اليسار في العربية — وهذا لا يحدث إلا حين يُضبط اتجاه العنصر صحيحاً.
- استخدم عربية واقعية: أسماء طويلة، وكلمات بالحركات، واللام ألف، والتطويل (ـ) الذي يكتبه بعض المستخدمين، والأرقام العربية المشرقية، وعلامات الترقيم العربية (، ؛ ؟).
- افحص العناوين والأزرار والشارات والتلميحات والرسوم البيانية وملفات PDF والبريد والإشعارات — لا متن الصفحة الرئيسي فقط.
جرّبها: مولّد بيانات الاختبار العربية جرّبها: مولّد أسماء وهمية جرّبها: عدّاد طول السلاسل النصية
النماذج من اليمين إلى اليسار
تجمع النماذج كل صعوبات RTL في مكان واحد. فالتسميات وعلامات الحقول الإلزامية ونصوص المساعدة ورسائل الخطأ تنتقل إلى الجانب المعكوس؛ وحقول النص الحر العربي تتبع اتجاه المحتوى؛ أما الحقول التي تحمل معرّفات فتبقى من اليسار إلى اليمين في كل الإعدادات المحلية: أرقام الهواتف، وعناوين البريد، والروابط، وأرقام IBAN، وأرقام البطاقات، وأرقام الهوية الوطنية والإقامة، والرموز البريدية، ورموز التحقق. قرر كيف تُحاذى هذه الحقول داخل النموذج المعكوس وطبّق القرار باتساق. ونص التلميح الظاهر داخل الحقل الفارغ يجب أن يطابق اتجاه ما سيكتبه المستخدم، وإلا قفز النص إلى الجانب الآخر عند بدء الكتابة.
يجب أن يتحدث التحقق لغة المستخدم: رسائل جانب العميل وجانب الخادم، ورسالة لكل قاعدة (إلزامي، والصيغة، والطول، والمدى)، والرسائل التي تولّدها مكونات خارجية مثل أدوات الدفع. وتحتاج الحقول الرقمية إلى قرار بشأن الأرقام العربية المشرقية — فلوحة المفاتيح العربية قد تنتجها — وعلى المنتج إما قبولها وتوحيدها أو رفضها برسالة عربية واضحة. فمثلاً جرّب رقم الجوال السعودي بالصيغة المحلية والدولية (مثل 05XXXXXXXX و+9665XXXXXXXX)، وجرّب حقول الهوية الوطنية والإقامة والجوال بالأرقام نفسها مكتوبة بلوحة مفاتيح عربية ("٠٥٠١٢٣٤٥٦٧")؛ والحقل الذي لا يقبلها ولا يشرح القاعدة بالعربية معيب.
- منتقيات التاريخ: شبكة التقويم تسير من اليمين إلى اليسار، وأسهم الأشهر معكوسة، واختيار الهجري أو الميلادي يتبع قاعدة المنتج.
- مربعات الاختيار وأزرار الراديو والمفاتيح تقع على يمين تسمياتها؛ واتجاه وضع «التشغيل» في المفتاح يتبع قرار التصميم.
- العناوين: اختبر ببيانات مولّدة على نمط العنوان الوطني السعودي، حيث يختلط رقم المبنى والشارع والحي والمدينة والرمز البريدي والرقم الإضافي بين كلمات عربية وأرقام غربية.
جرّبها: بيانات اختبار العناوين السعودية جرّبها: مولّد بيانات الاختبار العربية جرّبها: مولّد مجموعات الأحرف الخاصة
إمكانية الوصول في واجهات RTL
تعتمد قارئات الشاشة على lang. فمعيار النجاح 3.1.1 Language of Page في WCAG 2.2 يتطلب أن تكون لغة الصفحة قابلة للتحديد برمجياً، ويتطلب 3.1.2 Language of Parts الأمر نفسه للمقاطع والعبارات المكتوبة بلغة أخرى، مع استثناءات تشمل أسماء العلم والمصطلحات التقنية. لذا تحتاج الجملة الإنجليزية داخل نص عربي إلى lang="en"؛ ووسم أسماء العلامات التجارية والمصطلحات الإنجليزية بالطريقة نفسها ممارسة جيدة وإن لم يشترطها المعيار، لأنها بدونه تُقرأ بقواعد النطق العربية. اختبر بقارئات الشاشة التي يستخدمها مستخدموك (NVDA أو JAWS على Windows، وVoiceOver على أجهزة Apple، وTalkBack على Android) مع تثبيت صوت عربي.
ترتيب القراءة وترتيب التركيز يتبعان DOM. فحين يُنفَّذ العكس بالخصائص المنطقية وسمة dir يبقى ترتيب DOM ذا معنى ويُعكس الترتيب المرئي معه. أما حين يُزيَّف التخطيط بـ row-reverse أو order أو التموضع المطلق فيختلف الترتيب المرئي عن ترتيب التركيز، وهذا يتعارض مع معياري WCAG 1.3.2 Meaningful Sequence و2.4.3 Focus Order. وتحقق أيضاً من أن سلوك مفاتيح الأسهم الأفقية في التبويبات وأشرطة التمرير والعروض الدوّارة يطابق الاتجاه المرئي المعكوس، ومن ترجمة الأسماء الوصفية لأزرار الأيقونات.
قائمة تحقق اختبار RTL
نفّذ هذه القائمة لكل شاشة بالعربية على كل متصفح وفئة أجهزة مستهدفة. وسجّل القرارات التي تطلبها (أزرار الوسائط، ومحاذاة الحقول من اليسار إلى اليمين، والتعامل مع الأرقام) في مواصفة التصميم ليختبر كل مختبِر مقابل القاعدة نفسها. والقائمة أدناه مكتوبة بالإنجليزية وتجمع فحوص الأقسام السابقة في ست مجموعات: الاتجاه واللغة، وما يُعكس وما لا يُعكس، والنص ثنائي الاتجاه، وعرض العربية، والنماذج، وإمكانية الوصول.
RTL test checklist (ar, ar-SA)
Direction and language
[ ] <html lang="ar" dir="rtl"> on every page, email and PDF template
[ ] Switching language flips direction without a reload glitch or mixed state
Mirroring
[ ] Navigation, back/next arrows, breadcrumbs, steppers, sliders, progress bars mirror
[ ] Logos, check marks, clocks, photos, phone numbers, code do not mirror
[ ] Media playback controls follow the product's documented decision
Bidirectional text
[ ] Order numbers, SKUs, emails, URLs, phone numbers keep their order in Arabic sentences
[ ] Punctuation stays on the correct side of embedded English phrases
[ ] User content with unknown direction is shown with dir="auto" or <bdi>
Rendering
[ ] Arabic letters join (no letter-spacing, no characters inserted inside words)
[ ] Diacritics are not clipped; truncation ellipsis sits at the logical end
[ ] Arabic renders correctly in PDFs, emails, charts and canvas output
Forms
[ ] Labels, required markers, errors and hint text sit on the correct side
[ ] Phone, email, IBAN, ID and code fields are LTR; free-text fields follow content
[ ] Arabic-Indic digits are accepted or rejected with a clear Arabic message
Accessibility
[ ] Screen reader uses an Arabic voice; English phrases carry lang="en"
[ ] Focus order and reading order match the mirrored visual orderأتمتة فحوص RTL
تلتقط الأتمتة الانحدار في الاتجاه والتخطيط جيداً، والمشكلات اللغوية بصعوبة. شغّل حزمة اختبارات الدخان الشاملة بالإعداد المحلي العربي إضافة إلى الإنجليزي؛ وتحقق من dir وlang في الجذر؛ وافحص موضع بعض العناصر المرجعية (رابط الرجوع مكانه اليمين)؛ وتحقق من عزل المعرّفات المضمَّنة؛ وأضف مقارنة لقطات الشاشة لكل إعداد محلي في الشاشات الأساسية، لأن التحقق النصي يقرأ DOM ولا يرى إعادة الترتيب المرئية. والبحث عن خصائص CSS الفيزيائية في ملفات الأنماط يجد عيوب العكس قبل أن تصل إلى الشاشة.
في Android يحوّل الإعداد الزائف AR (XB) بناء التصحيح إلى اليمين-إلى-اليسار مع نص إنجليزي معكوس، وخيار المطور لفرض اتجاه التخطيط من اليمين إلى اليسار يقلب التخطيط دون تغيير اللغة. ويوفر Xcode لغة زائفة من اليمين إلى اليسار في خيارات لغة التطبيق ضمن المخطط (Scheme).
// RTL smoke check (Playwright Test)
test("checkout is laid out right-to-left in Arabic", async ({ browser }) => {
const page = await (await browser.newContext({ locale: "ar-SA" })).newPage();
await page.goto("/ar/checkout");
await expect(page.locator("html")).toHaveAttribute("dir", "rtl");
await expect(page.locator("html")).toHaveAttribute("lang", /^ar/);
// the back link sits in the right half of the viewport
const box = await page.getByRole("link", { name: "رجوع" }).boundingBox();
expect(box.x).toBeGreaterThan(page.viewportSize().width / 2);
// the order id is isolated; text assertions cannot see visual reordering
await expect(page.getByTestId("order-id")).toHaveAttribute("dir", "ltr");
await expect(page).toHaveScreenshot("checkout-ar.png");
});
# Find physical CSS that will not mirror (review each hit)
grep -rnE "margin-(left|right)|padding-(left|right)|text-align: *(left|right)|float: *(left|right)|[^-](left|right): *[0-9]" src/أمثلة عيوب RTL مكتوبة كعناوين أخطاء
هذه أمثلة توضيحية وليست حوادث حقيقية. يسمّي كل منها العَرَض والمكان والشرط، كما يصف دليل تقرير الخطأ.
- رقم الطلب 2026-0042 يُعرض 0042-2026 في ملخص الطلب العربي
- رقم الهاتف يُعرض بمجموعات أرقام معكوسة في صفحة الملف الشخصي العربية
- علامة التعجب تظهر قبل اسم العلامة التجارية الإنجليزي في رسالة النجاح العربية
- سهم الرجوع في ترويسة الدفع العربية يشير إلى اليسار ويعود إلى الخطوة التالية
- حروف عربية منفصلة في عناوين الأقسام المنسّقة بـ letter-spacing: 0.1em
- فاتورة PDF تعرض اسم العميل العربي حروفاً منفصلة بترتيب معكوس
- حركات أسماء المنتجات العربية مقصوصة بسبب ارتفاع السطر الثابت في البطاقة
- حقل رقم الجوال يرفض الأرقام العربية المشرقية برسالة خطأ إنجليزية فقط
- قارئ الشاشة ينطق اسم العلامة التجارية الإنجليزي بقواعد عربية — lang="en" مفقودة
الأسئلة الشائعة
ما اختبار RTL؟
اختبار واجهة بنظام كتابة من اليمين إلى اليسار مثل العربية: سمات الاتجاه واللغة الصحيحة، والتخطيط المعكوس، والعرض الصحيح للنص العربي والإنجليزي المختلط، والعرض العربي النظيف، والنماذج وترتيب التركيز وسلوك قارئ الشاشة التي تعمل في التخطيط المعكوس.
عند الكتابة بالإنجليزية، هل يجب تغيير اتجاه النص ليكون من اليمين إلى اليسار؟
لا. الإنجليزية تُكتب من اليسار إلى اليمين والعربية من اليمين إلى اليسار، لذلك يبقى اتجاه الفقرة الإنجليزية في محرر النصوص أو في الصفحة من اليسار إلى اليمين (LTR). وحتى داخل واجهة عربية (dir="rtl") تبقى الكلمات الإنجليزية والأرقام والروابط من اليسار إلى اليمين داخل السطر، وترتّبها خوارزمية يونيكود ثنائية الاتجاه؛ والعيب الذي يبحث عنه المختبِر مقطع إنجليزي أو رقم يظهر بترتيب مقلوب.
هل يجب عكس كل شيء في العربية؟
لا. يُعكس التخطيط والتنقل والأسهم الاتجاهية وأشرطة التمرير ومؤشرات التقدم؛ ولا تُعكس الشعارات وعلامات الصح والساعات والصور وأرقام الهواتف والشيفرة. وكثيراً ما تبقى أزرار تشغيل الوسائط من اليسار إلى اليمين. اكتب القواعد في مواصفة التصميم واختبر مقابلها.
لماذا يظهر رقم أو رمز معكوساً داخل النص العربي؟
لأن خوارزمية يونيكود ثنائية الاتجاه تصنّف الأرقام التي تلي نصاً عربياً ضمن فئة Arabic Number (AN)، وتحسم الشرطات والمسافات بينها (وعلامة + قبلها) باتجاه اليمين إلى اليسار، فتصبح كل مجموعة أرقام مقطعاً مستقلاً، وقد يُعرض رقم طلب مثل 2026-0042 أو رقم هاتف بمسافات بأجزاء مُعاد ترتيبها. اعزل القيمة بـ <bdi>، أو بـ dir="ltr" على عنصر مغلِّف، أو بمحارف العزل في يونيكود.
هل أستطيع اختبار RTL دون معرفة العربية؟
إلى حد كبير نعم. فالإعدادات الزائفة التي تقلب الاتجاه، وفرض تخطيط RTL في Android، واللغة الزائفة من اليمين إلى اليسار في Xcode، وبيانات الاختبار العربية المولّدة، تتيح لأي مختبِر اكتشاف عيوب العكس والنص ثنائي الاتجاه والعرض. أما جودة اللغة فما زالت تحتاج إلى متحدث بالعربية.
أي حقول النماذج يجب أن تبقى من اليسار إلى اليمين في العربية؟
الحقول التي تحمل معرّفات: أرقام الهواتف، وعناوين البريد، والروابط، وأرقام IBAN، وأرقام البطاقات، وأرقام الهوية الوطنية والإقامة، والرموز البريدية ورموز التحقق. أما حقول النص الحر فيجب أن تتبع المحتوى، مثلاً بـ dir="auto".
المراجع
- Unicode Standard Annex #9: Unicode Bidirectional Algorithmالخوارزمية التي تحدد ترتيب عرض النص المختلط من اليمين إلى اليسار ومن اليسار إلى اليمين — مصدر معظم أخطاء النص ثنائي الاتجاه.
- Structural markup and right-to-left text in HTMLكيف يُضبط الاتجاه الأساسي بسمة dir على عنصر html والعناصر البنيوية، ولماذا لا يُعتمد على CSS وحده لذلك.
- Inline markup and bidirectional text in HTMLكيف تعامل الخوارزمية ثنائية الاتجاه المقاطع المضمّنة — الأرقام والأسماء والروابط داخل النص العربي — والوسوم (bdi وdir) التي تعزلها.
- Arabic & Persian Layout Requirementsمتطلبات التخطيط والطباعة للخط العربي — الاتجاه والوصل والضبط والأرقام — التي يجب أن تدعمها البرمجيات (مسودة ملاحظة من W3C).
- Right to left — Human Interface Guidelinesإرشادات Apple لقلب الواجهة للغات المكتوبة من اليمين إلى اليسار: ما الذي يُعكس وما لا يُعكس، وكيف يتصرف النص والأرقام.
- Support different languages and culturesتوطين تطبيقات Android: موارد اللغات، وعكس التخطيط للغات التي تُكتب من اليمين إلى اليسار، والسمات الواعية بالاتجاه.
- Web Content Accessibility Guidelines (WCAG) 2.2توصية W3C التي تحدد معايير النجاح القابلة للاختبار لإتاحة محتوى الويب، مرتّبةً تحت أربعة مبادئ وثلاثة مستويات مطابقة (A وAA وAAA).
- Internationalization (i18n) Activityمقالات W3C ودروسها وفحوصها في التدويل لبناء محتوى ويب متعدد اللغات واختباره.
تمرين عملي
راجع جلسة اختبار RTL لصفحات إتمام الطلب العربية
تختبر الواجهة العربية (ar-SA) لمتجر توصيل بقالة على الويب (مثال خيالي) قبل الإصدار 5.0. أجرى زميل لك أول جلسة RTL على صفحات إتمام الطلب، وصفحة تأكيد الطلب، ورسالة SMS التأكيدية، والبريد التأكيدي، وكتب إحدى عشرة ملاحظة (N1–N11) دون أن يقرر أيها عيوب. تعرض المادة أدناه قرارات RTL الثلاثة المسجلة في مواصفة التصميم (D1–D3)، ومقتطفات مبسّطة من ترميز HTML، وشيفرة التحقق من رقم الجوال، وقالب رسالة SMS، وCSS، ثم الملاحظات. وتسميات الواجهة مكتوبة كما تظهر على الشاشة، وكل قيمة معروضة مكتوبة بالأرقام الغربية.
طبّق قواعد الدليل وقائمة التحقق فيه: صنّف الملاحظات إلى عيوب وسلوك متوقع، وعلّل كل قرار، وحدّد السبب المرجّح والإصلاح، واكتب عناوين الأخطاء. اعمل على الورق، وتساعدك «أداة اختبار Regex» في خطوتين. خصّص لذلك 20–30 دقيقة.
متجر توصيل بقالة على الويب (مثال خيالي) - الواجهة العربية (ar-SA)، الإصدار 5.0
النطاق: السلة، وإتمام الطلب (بيانات التوصيل والدفع)، وصفحة تأكيد الطلب،
ورسالة SMS التأكيدية، والبريد التأكيدي. بيئة Staging، البناء 5.0.0-rc1.
قرارات RTL في مواصفة التصميم
القرار D1: تبقى أزرار تشغيل الوسائط وشريط تقدم الوسائط من اليسار إلى اليمين.
القرار D2: حقول رقم الجوال والبريد الإلكتروني والرمز البريدي ورمز الخصم
من اليسار إلى اليمين.
القرار D3: تقبل الحقول الرقمية الأرقام العربية المشرقية وتحوّلها إلى 0-9،
وتظهر كل رسالة تحقق بلغة الواجهة.
مقتطف ترميز HTML (مبسّط، وحُذفت منه التسميات والسمات غير المعنية هنا؛
وفيه {t.x} نص مترجَم، و{order.x} وأمثالها بيانات)
Email template root: <html lang="en" dir="rtl">
Web page root: <html lang="ar" dir="rtl">
<a class="back" href="/cart"><i class="icon-chevron-back"></i>{t.backToCart}</a>
<div class="stepper"><ol>4 x <li></li></ol><span class="stepper-fill"></span></div>
<h2 class="section-title">{t.deliveryDetails}</h2>
<div class="field-row"><input name="district"><input name="street"></div>
<input name="mobile" dir="ltr" inputmode="tel">
<p class="product-name">{item.name}</p>
<p>{t.orderNumber}: {order.id}</p>
<p>{t.courierPhone}: <span dir="ltr">{courier.phone}</span></p>
<p class="promo">{t.promoStart} Express+ {t.promoEnd}</p>
التحقق من رقم الجوال في جانب العميل
if (!/^05\d{8}$/.test(mobile.value)) showError(mobile, "Enter a valid mobile number");
قالب رسالة SMS التأكيدية (نص عادي، وأجزاء {t.x} فيه عربية)
{t.smsOrder} {order.id} {t.smsOnTheWay}. {t.smsCourier}: {courier.phone}
مقتطف CSS
.card { padding-inline-start: 16px; }
.stepper { position: relative; }
.stepper-fill { position: absolute; left: 0; width: var(--done); }
[dir="rtl"] .icon-chevron-next { transform: scaleX(-1); }
.section-title { font-weight: 700; letter-spacing: 0.08em; }
.product-name { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.field-row { display: flex; gap: 12px; }
[dir="rtl"] .field-row { flex-direction: row-reverse; } /* to match the Arabic mock-up */
ملاحظات الجلسة: Chrome على Windows بعرض جوال، بلوحة المفاتيح والفأرة؛
والملاحظة N7 على هاتف Android، والملاحظة N8 أيضاً مع NVDA وصوت عربي.
الملاحظة N1: البريد التأكيدي: النص والتخطيط من اليمين إلى اليسار ويبدوان صحيحين،
ومصدره يُظهر جذر قالب البريد المذكور أعلاه.
الملاحظة N2: مؤشر خطوات إتمام الطلب: الخطوة الأولى «السلة» على اليمين والخطوات
تُقرأ من اليمين إلى اليسار، لكن تعبئة شريط التقدم تحتها تنمو من الحافة اليسرى.
الملاحظة N3: رابط «العودة إلى السلة» أعلى اليمين، وسهمه يشير إلى اليسار كما
في الواجهة الإنجليزية.
الملاحظة N4: الشعار وعلامة الصح في شارة «مدفوع» كما هما في الواجهة الإنجليزية.
وفيديو «كيف يعمل التوصيل» في صفحة التأكيد زر تشغيله على اليسار، وشريط تقدمه
يمتلئ من اليسار إلى اليمين.
الملاحظة N5: أسماء المنتجات الطويلة في السلة تُقطع بعلامة «...» في الطرف الأيسر
من السطر.
الملاحظة N6: صفحة التأكيد: الطلب 2026-0117 يُعرض 0117-2026 بعد التسمية
«رقم الطلب». ورقم هاتف المندوب في الصفحة نفسها يظهر +966 55 987 6543.
الملاحظة N7: رسالة SMS التأكيدية: يظهر رقم الطلب 0117-2026،
ويظهر رقم هاتف المندوب 6543 987 55 966+.
الملاحظة N8: سطر العرض الترويجي: اسم الاشتراك Express+ يظهر +Express،
وينطق NVDA كلمة Express بقواعد النطق العربية.
الملاحظة N9: عناوين الأقسام مثل «بيانات التوصيل»: الحروف العربية غير متصلة،
بينما يتصل نص المتن في الشاشات نفسها اتصالاً طبيعياً.
الملاحظة N10: رقم الجوال: تسير الأرقام من اليسار إلى اليمين أثناء الكتابة.
والرقم 0551234567 مكتوباً بلوحة المفاتيح العربية (٠٥٥١٢٣٤٥٦٧) يُرفض برسالة
إنجليزية هي «Enter a valid mobile number»، ويُقبل بالأرقام الغربية.
الملاحظة N11: بيانات التوصيل: حقل «الحي» على اليسار وحقل «الشارع» على اليمين
في صف واحد. وينتقل Tab من «الحي» إلى «الشارع»، أي يتحرك التركيز من اليسار
إلى اليمين.- اقرأ القرارات D1–D3 والمقتطفات أولاً، وضع علامة على كل خاصية CSS فيزيائية، وكل قيمة معروضة دون عزل، وكل سمة
langوdir. ويمكنك أن تلصق مقتطف CSS في «أداة اختبار Regex» مع نمط البحث الوارد في قسم الأتمتة من الدليل،margin-(left|right)|padding-(left|right)|text-align: *(left|right)|float: *(left|right)|[^-](left|right): *[0-9]، وترى ما يجده. - قرّر لكل ملاحظة: عيب أم سلوك متوقع، وسمِّ قاعدة الدليل، أو القرار من D1–D3، الذي يحسم الأمر. وقد تجمع الملاحظة الواحدة الأمرين.
- لكل عيب حدّد السبب المرجّح في المقتطفات، وصِف الإصلاح في الترميز أو CSS أو النص.
- في «أداة اختبار Regex» جرّب نمط رقم الجوال
^05\d{8}$على 0551234567 وعلى الرقم نفسه بالأرقام العربية المشرقية٠٥٥١٢٣٤٥٦٧، وفسّر النتيجة. - اكتب لكل عيب عنوان خطأ يسمّي العَرَض والمكان والشرط، مثل الأمثلة في آخر الدليل.
- اذكر ثلاثة فحوص من قائمة تحقق الدليل لم تغطّها هذه الجلسة بعد.
إظهار الإجابة النموذجية
الأحكام. العيوب: N1 وN2 وN3، ورقم الطلب في N6، وN7، وN8 (عيبان)، وN9، وN10 (عيبان)، وN11. والسلوك المتوقع: N4 وN5، ورقم الهاتف في N6، وسير الأرقام من اليسار إلى اليمين في N10. وبمصطلحات ISTQB تسجّل كل ملاحظة ما شوهد؛ فإن كان إخفاقاً (Failure) فالسبب الذي تحدده في المقتطفات هو العيب (Defect). ونمط البحث الوارد في الدليل يجد في «أداة اختبار Regex» سطراً واحداً فقط من مقتطف CSS، هو left: 0 في .stepper-fill، أي سبب N2؛ أما .card فتستخدم خاصية منطقية أصلاً ولا تحتاج إلى تغيير. فالبحث النصي يجد الخصائص الفيزيائية وحدها، ولا يرى غياب قلب أيقونة، ولا تباعد الحروف على العربية، ولا ترتيباً مزيفاً بـ row-reverse، ولهذا تُفحص الشاشات واحدة واحدة.
N1: عيب (الاتجاه واللغة). يبدو البريد صحيحاً لأن dir="rtl" صحيحة، لكن lang="en" تعلن لغة خاطئة: فقد يختار قارئ الشاشة صوتاً إنجليزياً للنص العربي، ولا تنطبق على النص قواعد :lang(ar) ولا اختيار الخطوط المناسبة للعربية. وقاعدة الدليل أن الصفحة الموسومة lang="en" مع dir="rtl" معيبة حتى لو بدت صحيحة، وأن العنصر الجذري في البريد وقوالب PDF يُفحص كأي صفحة. الإصلاح: lang="ar" (أو ar-SA) في قالب البريد العربي. العنوان: «بريد تأكيد الطلب العربي يعلن lang="en" في عنصره الجذري».
N2 وN3: عيبان (العكس). مؤشرات التقدم تُعكس، فيجب أن تنمو التعبئة في العربية من اليمين حيث الخطوة الأولى. والخطوات تُعكس مع اتجاه المستند، أما التعبئة فلا، لأن .stepper-fill موضوعة بالخاصية الفيزيائية left: 0. الإصلاح: inset-inline-start: 0. العنوان: «تعبئة شريط تقدم إتمام الطلب تنمو من الحافة اليسرى في مؤشر الخطوات العربي». وفي N3 الرابط في مكانه الصحيح، لكن سهم الرجوع أيقونة اتجاهية يجب قلبها: ففي التخطيط من اليمين إلى اليسار يشير الرجوع إلى اليمين. ومقتطف CSS يقلب .icon-chevron-next وحدها، ولا قاعدة لـ .icon-chevron-back. الإصلاح: اقلب كل أيقونة اتجاهية في RTL، لا فئة واحدة. العنوان: «سهم رابط العودة إلى السلة يشير إلى اليسار (أي إلى الأمام) في ترويسة إتمام الطلب العربية».
N4 وN5: سلوك متوقع. الشعارات والعلامات العالمية مثل علامة الصح لا تُعكس أبداً، والقرار D1 يُبقي أزرار تشغيل الوسائط وشريط تقدم الوسائط من اليسار إلى اليمين، كما تفعل إرشادات Material Design. قارن بـ N2: شريط تقدم الخطوات يُعكس، وشريط تقدم الوسائط يتبع القرار D1. ولو عكست شاشة أخرى أزرار الفيديو لكان هذا التعامل غير المتسق هو العيب. وفي N5 مكان علامة الحذف هو النهاية المنطقية للنص، وهي في العربية على اليسار؛ وتأخذ .product-name ذلك من dir="rtl" الموروثة. والإبلاغ عن N4 أو N5 على أنهما عيبان يطلب من المطورين إفساد سلوك يعمل.
N6: رقم الطلب عيب (النص ثنائي الاتجاه)، ورقم الهاتف ليس عيباً. في <p>{t.orderNumber}: {order.id}</p> القيمة غير معزولة: فالأرقام التي تلي حروفاً عربية تُصنَّف ضمن فئة «الرقم العربي» (Arabic Number – AN) في الخوارزمية، والشرطة بين المجموعتين تأخذ اتجاه اليمين إلى اليسار، فتُرتَّب كل مجموعة مقطعاً مستقلاً، ويُعرض 2026-0117 على صورة 0117-2026. وسطر الهاتف صحيح لأن <span dir="ltr"> تعزل القيمة. الإصلاح: <bdi dir="ltr">{order.id}</bdi>، أو span مع dir="ltr" كما في الهاتف. العنوان: «رقم الطلب 2026-0117 يُعرض 0117-2026 في صفحة تأكيد الطلب العربية». وN7 عيب، فالخوارزمية نفسها تعمل في النص العادي. ولا HTML في رسالة SMS، فلا <bdi> ولا dir: ضع في القالب U+2066 LRI قبل كل قيمة وU+2069 PDI بعدها. وللتحقق من القالب المصحَّح حوّله إلى نقاط ترميز بأداة «مرمّز Unicode» وتأكد أن المحرفين يحيطان بكل قيمة، ثم اقرأ الرسالة المستلمة على الهواتف المستهدفة. العنوان: «رسالة SMS التأكيدية العربية تعرض رقم الطلب 0117-2026 وهاتف المندوب 6543 987 55 966+».
N8: عيبان. علامة + لا اتجاه لها؛ فعلى الحد بين الاسم الإنجليزي والنص العربي تأخذ اتجاه الفقرة وتنتقل إلى الجانب الآخر من الاسم، فيُعرض Express+ على صورة +Express. الإصلاح: اعزل الاسم، <bdi lang="en">Express+</bdi> (أو span مع dir="ltr" وlang="en"). أما النطق فسببه مختلف: غياب lang="en" الذي يترك قارئ الشاشة على قواعد النطق العربية. أبلِغ عنه، لكن لا تقل إن معيار WCAG 3.1.2 Language of Parts قد أُخفق: فأسماء العلم من استثناءاته، ووسم اسم العلامة التجارية ممارسة جيدة لا اشتراط. العنوانان: «اسم الاشتراك Express+ يُعرض +Express في سطر العرض الترويجي العربي»؛ و«قارئ الشاشة ينطق Express+ بقواعد عربية في سطر العرض الترويجي — lang="en" مفقودة».
N9: عيب (عرض العربية). العربية خط متصل، ومحرك تحديد أشكال الحروف (Shaping engine) يصل حروفها؛ وتباعد الحروف (letter-spacing) على النص العربي إما يقطع الوصل أو يُتجاهل بحسب المحرك. ونص المتن متصل، فالسبب نمط العناوين .section-title { letter-spacing: 0.08em; }. الإصلاح: لا تباعد حروف للعربية، مثلاً :lang(ar) .section-title { letter-spacing: 0; }. العنوان: «حروف عربية منفصلة في عناوين أقسام إتمام الطلب المنسّقة بـ letter-spacing: 0.08em».
N10: سير الأرقام من اليسار إلى اليمين متوقع (القرار D2)، والباقي عيبان مخالفان للقرار D3. في «أداة اختبار Regex» يطابق النمط ^05\d{8}$ الرقم 0551234567 ولا يطابق ٠٥٥١٢٣٤٥٦٧: ففي JavaScript لا يطابق \d إلا الأرقام 0–9، مع الخيار u (flag) أو بدونه. الإصلاح: حوّل الأرقام العربية المشرقية (U+0660–U+0669) إلى 0–9 قبل التحقق، وافحص التحقق في جانب الخادم بالطريقة نفسها. وللرسالة الإنجليزية سبب مستقل: النص مكتوب مباشرة في showError، فيظهر لكل رقم جوال غير صالح، حتى المكتوب بالأرقام الغربية مثل 0451234567. الإصلاح: خذ الرسالة من الترجمات العربية. العنوانان: «حقل رقم الجوال يرفض الأرقام العربية المشرقية بدلاً من تحويلها»؛ و«رسالة التحقق من رقم الجوال تظهر بالإنجليزية في صفحة إتمام الطلب العربية».
N11: عيب (إمكانية الوصول). ترتيب التركيز يتبع DOM، وفيه يأتي حقل الحي أولاً. والقاعدة [dir="rtl"] .field-row { flex-direction: row-reverse; } تنقل حقل الحي إلى اليسار، فيختلف الترتيب المرئي (الشارع ثم الحي، قراءةً من اليمين) عن ترتيب التركيز (الحي ثم الشارع)، وهذا يتعارض مع معياري WCAG 1.3.2 Meaningful Sequence و2.4.3 Focus Order. الإصلاح: احذف قاعدة row-reverse، فصف flex يُعكس من تلقاء نفسه، وحدّد ترتيب الحقلين في الترميز لا في CSS. فإن كان حقل الشارع يأتي أولاً حقاً كما يُظهر التصميم المبدئي العربي (Mock-up)، فضعه أولاً في DOM؛ وهذا يغيّر النموذج الإنجليزي أيضاً، فأكّد الترتيب مع المصمم. وفي الحالتين يتبع التركيز عندئذ الترتيب المرئي. العنوان: «ينتقل Tab من حقل الحي على اليسار إلى حقل الشارع على اليمين في نموذج بيانات التوصيل العربي».
ما لم تغطّه الجلسة بعد: أي ثلاثة من أسطر قائمة تحقق الدليل التالية: تبديل اللغة أثناء التشغيل ثم إعادتها دون خلل ودون شاشة نصف معكوسة؛ وسمتا dir وlang في كل صفحة وقالب بريد وقالب PDF، وهنا صفحات الأخطاء وأي فاتورة أو إيصال بصيغة PDF؛ وعرض العربية في ملفات PDF والرسوم البيانية ومخرجات canvas؛ وسلامة الحركات من القصّ، مثلاً في أسماء المنتجات ذات ارتفاع السطر الثابت؛ والتسميات وعلامات الحقول الإلزامية ورسائل الخطأ ونصوص التلميح في الجانب الصحيح؛ وبقية الحقول التي يجعلها القرار D2 من اليسار إلى اليمين (البريد الإلكتروني والرمز البريدي ورمز الخصم)، وحقول النص الحر مثل ملاحظات التوصيل التي تتبع اتجاه محتواها؛ وبقاء علامات الترقيم في الجانب الصحيح من العبارات الإنجليزية المضمَّنة، وحفاظ عناوين البريد والروابط ورموز المنتجات (SKU) على ترتيبها داخل الجمل العربية، والأفضل تجربتها بمجموعة الاختبار ثنائية الاتجاه في الدليل؛ وتطابق ترتيب القراءة لدى قارئ الشاشة مع الترتيب المرئي المعكوس.
بعد الإصلاحات أجرِ اختبار التأكيد (Confirmation testing) على الشاشات نفسها وعلى رسالة SMS مستلمة، واحمِ المنتج من الانحدار بفحوص الأتمتة الواردة في الدليل: تحقق من dir وlang في جذر الصفحة وفي قالب البريد، وافحص أن رابط الرجوع يقع في النصف الأيمن من نافذة العرض، وتحقق من أن عنصر رقم الطلب يحمل dir="ltr"، وقارن لقطات شاشة صفحة التأكيد لكل إعداد محلي، وشغّل البحث عن خصائص CSS الفيزيائية في مراجعة الكود. وعند مقارنة إجابتك، أهم ما فيها أحكامك على N4 وN5 والجزأين المتوقعين من N6 وN10: فهي تُظهر هل طبّقت القواعد أم عددت كل ما يختلف عن الواجهة الإنجليزية عيباً. ويمكن أن تختلف صياغة عناوينك، لكن كلاً منها يجب أن يسمّي العَرَض والمكان والشرط.
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.
جزء من مسار تعلم ضمان الجودة
قبل هذا الموضوع
الموضوعات التالية
الأدوات المذكورة في هذا الدليل
ولّد أسماء وعناوين وجملاً وأرقاماً عربية (بالأرقام العربية-الهندية) وحالات حدّية للكتابة من اليمين إلى اليسار لاختبار التوطين.
ولّد السجلات نفسها بلغات متعددة (الإنجليزية والعربية والهندية وغيرها) لاختبار التدويل (i18n) واختلاط RTL/LTR.
فكّ ترميز تهريبات \uXXXX ونقاط الترميز U+ والكيانات الرقمية إلى نص مقروء.
تحويل النص إلى تسلسلات تهريب Unicode (\u0041) أو نقاط الترميز (U+0041) أو كيانات HTML الرقمية.
ولّد بيانات اختبار بنمط العنوان الوطني السعودي: رقم المبنى والشارع والحي والمدينة والرمز البريدي والرقم الإضافي.
ولّد أسماء أولى وأسماء عائلات عشوائية بالإنجليزية والعربية والهندية مع خيارات الجنس والصيغة.
ولّد مدخلات مليئة بالأحرف الخاصة: علامات الاقتباس، والأحرف الوصفية لـ SQL/HTML/JSON، وأحرف التحكم، والرموز التعبيرية، وحيل المسارات.
قِس طول السلسلة النصية بالأحرف ونقاط الترميز (code points) وبايتات UTF-8 ووحدات UTF-16.