Skip to content

البعد الخفي للويب: التدويل وإمكانية الوصول

القراءة الأساسية

ما هو i18n وما قصته؟ في مجال تطوير الواجهة الأمامية وهندسة البرمجيات، ما نسميه i18n يشير في الواقع إلى دعم اللغات المتعددة (التدويل، Internationalization). وبما أنه توجد 18 حرفًا بالضبط بين الحرف الأول i والحرف الأخير n من هذه الكلمة الإنجليزية، فقد ابتكرت الصناعة هذا الاختصار المحدد للاختصار. وبالمثل، فإن إمكانية الوصول (Accessibility) تُعرف أيضًا باسم a11y، نظرًا لوجود 11 حرفًا بين الحرف الأول a والحرف الأخير y.

خلف صفحات الويب الملونة التي يعرضها المتصفح، يوجد في الواقع خطان "خفيان" يعملان بالتوازي وغالبًا ما لا تراهما العين: عندما تدخل عنوان URL لزيارة صفحة ويب، كيف يعرف المتصفح ما إذا كان يجب أن يعرض لك الصينية أم الألمانية (أي عملية i18n متعددة اللغات)؟ وأثناء قيام المتصفح بتحليل HTML إلى شجرة DOM استعدادًا للرسم، كيف يقوم ببناء "شجرة برايل" مخصصة لذوي الإعاقة البصرية (أي عملية a11y لإمكانية الوصول)؟

سنعود في هذا الفصل إلى العملية المجهرية لـ "الوصول إلى الويب وعرضه"، لنفكك كيف يعمل المتصفح والهندسة الأمامية بصمت في هذين المجالين اللذين يعكسان الاهتمام الإنساني بالتكنولوجيا.


1. تفاوض اللغة في الوصول إلى الويب (i18n)

عندما ندخل عنوان URL ونضغط على Enter، يقوم المتصفح عادةً بإرفاق رأس بصمت في طلب HTTP: Accept-Language.

  • على سبيل المثال: Accept-Language: ar-SA,ar;q=0.9,en;q=0.8

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

1.1 هندسة الواجهة الأمامية واستبدال القواميس

في أُطر الواجهة الأمامية الحديثة، يتم إنشاء هيكل الصفحة عادةً بواسطة JavaScript ديناميكيًا على العميل. في هذه المرحلة، يقرأ تطبيق الواجهة الأمامية بنشاط تفضيلات لغة المتصفح (على سبيل المثال من خلال واجهة navigator.language)، ثم يسحب "حزمة القاموس (JSON)" المقابلة من الخادم — عند التواجد باللغة العربية يعرض "تأكيد"، وعند التواجد بالقاموس الإنجليزي يعرض "Confirm".

1.2 هاوية التنضيد: طول النص والانعكاس الأفقي RTL

لكن بالإضافة إلى استبدال القواميس، يواجه التدويل الحقيقي تحديات هاوية في مرحرة التخطيط (Layout) في المتصفح.

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

التحدي الأكثر ثورية هو اتجاه القراءة. اللغات مثل العربية والعبرية لها عادة قراءة من اليمين إلى اليسار (Right-to-Left، أو RTL). عند تبديل الصفحة إلى هذه اللغات، لا يتغير فقط اتجاه النص، بل يحتاج محرك المتصفح أيضًا إلى إجراء انعكاس أفقي لجميع كتل المحتوى في صفحة الويب بالكامل! يوفر المتصفح لهذا الغرض السمة الأصلية dir="rtl". عند كتابة CSS، يجب علينا تجنب استخدام كلمات اتجاهية مطلقة، على سبيل المثال استخدام justify-content: flex-start من Flexbox بدلاً من margin-left مشفر بشكل ثابت، مما يتيح للمتصفح عكس التخطيط تلقائيًا عند تبديل المنطقة.

1.3 وداعًا للتعابير النمطية: احتضان معيار Intl في المتصفح

بالإضافة إلى تخطيط الواجهة، يتضمن المتصفح في طبقته السفلية "محرك تنسيق توطين" قويًا مدمجًا. لنفس الرقم 1200.5، يعتاد الأمريكيون على رؤية $1,200.50، بينما العديد من الدول الأوروبية تعتاد على استخدام الفاصلة كفاصل عشري € 1.200,50. تنسيقات التاريخ أكثر تنوعًا بكثير.

كشف المتصفح الحديث عن الكائن الأساسي Intl (على سبيل المثال Intl.DateTimeFormat و Intl.NumberFormat). بفضل هذه الواجهة البرمجية، نحتاج فقط في الكود إلى تحديد رمز البيئة الحالية، وسيقوم المتصفح مباشرة باستدعاء معايير بيانات نظام التشغيل الأساسية لإنشاء سلاسل عرض بدقة تتوافق مع العادات المحلية.

👇 قم بتشغيل المكون أدناه ولاحظ كيف يقوم المتصفح بإكمال انعكاس التخطيط (RTL) وتحويل البيانات على مستوى النظام من خلال واجهات برمجة التطبيقات الأساسية دون تغيير البيانات المصدر:

🌍Browser Native Localization (i18n) Demo
Switch user locale preference below. Experience how browser engine handles **language dictionary**, **flexible wrapping**, **RTL layout** and **native data format conversion** without modifying underlying data logic.

Lab 1: Flex-Based Dictionary & Layout Refactoring

Since we used flexible Flex layout in CSS, with `gap` and `justify-content` instead of hardcoded `margin-left`, when switching to Arabic, the `dir="rtl"` attribute commands browser to **perfectly mirror** the layout. When switching to German, long button text automatically triggers flexible wrapping without overflow.

企业云服务
您有一个待支付的云服务器实例账单,请在 24 小时内完成续费操作以免停机。

Lab 2: Using Intl Engine for Data Presentation

Completely abandon regex splitting and concatenation! See how native <code>Intl.NumberFormat</code> and <code>Intl.DateTimeFormat</code> seamlessly format the fixed binary data below based on selected "locale code".

Raw Memory Value (Float):1459800.5
Engine介入<br/> ➔
DOM Final Display:¥1,459,800.50
Raw Memory Value (Timestamp):1757430000000
Engine介入<br/> ➔
DOM Final Display:2025年9月9日星期二

2. الشجرة غير المرئية داخل المتصفح (a11y)

لنعود إلى محرك عرض المتصفح. نحن جميعًا نعلم أنه عند تحليل HTML، ينشئ المتصفح شجرة DOM، ثم بالاشتراك مع CSS يحسب وينشئ شجرة العرض (Render Tree) لرسم الواجهة.

لكن ما لا يعرفه الكثيرون هو أنه أثناء الوصول إلى صفحة الويب، يقوم المتصفح بالفعل ببناء شجرة مخصصة بالتوازي لنظام التشغيل "ليراه" — شجرة AOM (نموذج كائن إمكانية الوصول، Accessibility Object Model).

2.1 قارئات الشاشة وجوهر الدلالات

لمساعدة المستخدمين ضعاف البصر على استخدام أجهزة الكمبيوتر، تتضمن أنظمة التشغيل برمجيات مساعدة مدمجة تُسمى قارئ الشاشة (Screen Reader) (مثل VoiceOver في macOS). هذا النوع من البرمجيات "لا يستطيع رؤية" بكسلات الألوان على الشاشة، بل يعتمد تمامًا على شجرة AOM التي يكشف عنها المتصفح لقراءة صفحة الويب بصوت عالٍ.

إذا استخدم المطور علامة <div> عادية مع أنماط CSS لرسم زر بمظهر لا تشوبه شائبة، سيكون هذا الزر مثاليًا في شجرة العرض التقليدية. لكن في شجرة AOM المتصلة بقارئ الشاشة، هو مجرد عقدة نصية عديمة المعنى. فلن يتمكن المستخدمون ضعاف البصر من سماع تلميح "زر" ولن يتمكنوا من تحديده بمفتاح Tab.

لذلك، لماذا نكرر التأكيد على "الالتزام باستخدام علامات HTML الدلالية"؟ لأنه عند استخدامك لعلامات مثل <button> أو <nav> أو <a>، يقوم محرك المتصفح تلقائيًا بإكمال معلومات إدارة التركيز المدمجة والدور (Role) في شجرة AOM. الدلالات في جوهرها هي مخطط عالي الجودة مرسوم لأدوات ذوي الإعاقة.

2.2 WAI-ARIA: التقليم اليدوي لشجرة AOM

في تطبيقات الويب الحديثة، هناك العديد من المكونات التفاعلية المخصصة المعقدة (على سبيل المثال، لوحات منبثقة، قوائم أكورديون مع رسوم متحركة للفتح والإغلاق)، والتي لا يمكن للعلامات الأصلية للمتصفح تغطيتها بالكامل. في هذه الحالات، يجب الاستفادة من مواصفة WAI-ARIA.

ARIA في جوهرها هي مجموعة من سمات HTML الخاصة التي لا تغير أي عرض مرئي، ومهمتها الوحيدة هي إرسال أوامر لتعديل عُقد شجرة AOM قسرًا للمتصفح:

  • aria-label: إضافة وصف قراءة للعناصر التي تفتقر إلى نص مرئي (على سبيل المثال، زر "إغلاق" يحتوي فقط على أيقونة).
  • aria-hidden="true": إخبار المتصفح أن هذه العقدة للزينة فقط، ولا يجب إدراجها في شجرة AOM.
  • role="alert": إخبار المتصفح أن هذه المنطقة حرجة للغاية، وإذا تم تحديث محتواها، يجب مقاطعة قارئ الشاشة الحالي فورًا لإذاعة إعلان استعجالي.

👇 جرّب هذين "العالمين" المختلفين تمامًا كما يُدركان من خلال شجرة AOM:

🔍Accessibility Object Model (AOM) Comparison Demo
Try using <strong>pure keyboard (Tab and Enter keys)</strong> to operate elements in both panels below, and observe what the "screen reader" captures from the AOM layer.

❌ Case A: Pure Visual Deception

Uses <code>&lt;div&gt;</code> with CSS styling. Perfect on render tree, but missing semantics on AOM tree.

Confirm Action:
Enter verification code
Confirm Submit
💻 Screen Reader Parsing (AOM):
(Visually impaired users cannot select any element in this area using Tab key)

✅ Case B: Semantic + ARIA Guard

Uses native tags like <code>&lt;input&gt;</code>, <code>&lt;button&gt;</code> with supplemented <code>aria-label</code>. Has complete interaction properties in AOM tree.

💻 Screen Reader Parsing (AOM):
(Hover mouse or press Tab to see parsing)

3. الويب في خدمة الجميع

بالجمع بين المعرفة التي تعلمناها في الفصول السابقة حول طبقة الشبكة وعرض المتصفح، يمكننا فهم هذه الصورة الشاملة مرة أخرى:

بُعد الوصول إلى الويبالمسؤولية المشتركة للمتصفح والمهندسينالفجوة التي يسعى لسدها
التدويل (i18n)التفاوض عبر رؤوس الطلبات، التنسيق بناءً على واجهات Intl، الدعم المرن لانعكاس تخطيط RTL.تجاوز فجوة اللغة والثقافة، بحيث يمكن للتطبيقات التكيف بسلاسة مع المعايير اللغوية وحدس التخطيط في البلدان المختلفة.
إمكانية الوصول (a11y)بالإضافة إلى بناء شجرة العرض، بناء شجرة AOM عالية الدقة بناءً على HTML الدلالي ومواصفة ARIA.تجاوز فجوة الإعاقة البصرية والأجهزة، لنقل السيطرة بسلاسة إلى أدوات مساعدة مثل قارئات الشاشة.

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