معايير نجاح WCAG · Level AA
WCAG 3.1.2: لغة الأجزاء
تتطلب WCAG 3.1.2 أن يتم تحديد أي مقطع أو عبارة أو جزء من محتوى الويب مكتوب بلغة تختلف عن اللغة الأساسية للصفحة برمجياً باستخدام الخاصية lang. يتيح ذلك لتقنيات المساعدة، وخاصة قارئات الشاشة، التبديل تلقائياً بين محركات النطق وعرض المحتوى بدقة للمستخدمين الذين يعتمدون على المخرجات الصوتية.
ماذا يعني هذا المعيار
المعيار WCAG 3.1.2 — لغة الأجزاء هو معيار من مستوى AA ضمن مبدأ "قابلية الفهم". وهو يبني مباشرة على المعيار 3.1.1 (لغة الصفحة)، الذي ي要求 التصريح باللغة الأساسية للصفحة بالكامل. يذهب المعيار 3.1.2 أبعد من ذلك: فكلما كُتب مقطع أو عبارة أو جزء من المحتوى بلغة مختلفة عن اللغة الافتراضية للصفحة، يجب أن يحمل ذلك الجزء سمة lang التي تحدد لغته المحددة.
من الناحية العملية في HTML، يعني هذا تطبيق سمة lang على أي عنصر يحيط بموضع تغيير اللغة. يجب أن تكون قيمة السمة وسم لغة صالحاً وفق BCP 47 — على سبيل المثال، lang='en' للإنجليزية، lang='fr' للفرنسية، lang='de' للألمانية، أو lang='tr' للتركية. يُسمح باستخدام وسم المنطقة الفرعي (مثل lang='en-US' أو lang='tr-TR') ويُشجَّع عندما تكون طريقة النطق الخاصة باللهجة مهمة.
يحدث الاجتياز (pass) عندما يكون كل مقطع لغوي مميز يمكن للقارئ البشري أن يدرك أنه ينتمي إلى لغة مختلفة ملفوفاً داخل عنصر يحمل سمة lang الصحيحة. ويحدث الإخفاق (fail) عندما يكون هناك مقطع بلغة مختلفة موجوداً لكنه لا يحمل سمة lang، أو يحمل سمة غير صحيحة — على سبيل المثال، وسم جملة فرنسية على أنها lang='de'.
تعترف WCAG بثلاثة استثناءات صريحة لهذا المعيار. أولاً، الأسماء العلم — الأسماء الشخصية، أسماء العلامات التجارية، الأسماء الجغرافية — لا تحتاج إلى وسم لغة حتى عندما تكون من أصل لغة أخرى. ثانياً، المصطلحات التقنية التي تُعترف بها كعناصر مفردات ضمن اللغة الأساسية (مثل العبارة اللاتينية in vitro المستخدمة في صفحة طبية باللغة الإنجليزية) مستثناة. ثالثاً، الكلمات ذات اللغة غير المحددة — الكلمات التي تم استيعابها بشكل كامل تقريباً في اللغة الأساسية بحيث أصبح أصلها غامضاً — مستثناة أيضاً. تعكس هذه الاستثناءات الواقع العملي الذي لا تتطلب فيه العديد من الكلمات الدخيلة تغييراً في طريقة النطق حتى تُفهم بشكل صحيح.
يمكن وضع سمة lang على أي عنصر HTML، بما في ذلك <span> و<p> و<div> و<blockquote> و<section> أو حتى <td> في خلية جدول. تُورَّث السمة إلى جميع العناصر التابعة، لذا فإن وسم حاوية عالية المستوى يكون كافياً إذا كان كامل المقطع في اللغة الهدف. ولا تحتاج إلى وسم العناصر المضمنة الفردية إلا عندما تكون العبارات القصيرة متداخلة داخل فقرات أحادية اللغة في الغالب.
لماذا يهم هذا المعيار
المستفيدون الأساسيون من هذا المعيار هم مستخدمو قارئات الشاشة، وخاصة الأشخاص المكفوفين أو ضعاف البصر. تعتمد قارئات الشاشة على محركات تحويل النص إلى كلام (TTS) خاصة بكل لغة. عندما يواجه قارئ شاشة تركي جملة فرنسية بدون سمة lang='fr'، يحاول نطق الكلمات الفرنسية باستخدام القواعد الصوتية التركية، مما ينتج عنه إخراج غير مفهوم إلى حد كبير. وقد لا يدرك المستمع حتى أن تغييراً في اللغة قد حدث — فهو يسمع ببساطة صوتاً مشوهاً ويفقد فهم المحتوى بالكامل.
فكر في سيناريو واقعي شائع على مواقع التجارة الإلكترونية والسياحة التركية: صفحة منتج مكتوبة بالتركية تتضمن اسم العلامة التجارية وشعاراً تسويقياً قصيراً بالإنجليزية، يتبعه إخلاء مسؤولية قانوني بالفرنسية لعملاء أوروبا. بدون وسم اللغة على المقاطع الإنجليزية والفرنسية، سيسمع المستخدم الكفيف الذي يعتمد على صوت TTS تركي ثلاثة مقاطع تُنطق جميعها كما لو كانت تركية. قد يكون الشعار الإنجليزي قابلاً للتخمين من خلال التشابه الصوتي، لكن النص القانوني الفرنسي يصبح غير مفهوم تماماً — مما قد يتسبب في أن يفوت المستخدم معلومات تعاقدية أو أمنية حاسمة.
المستخدمون ذوو الإعاقات الإدراكية الذين يعتمدون على أدوات قراءة النصوص بصوت عالٍ (وليس فقط قارئات الشاشة المخصصة) يتأثرون أيضاً. العديد من إضافات المتصفح الشائعة للمساعدة على القراءة تستخدم سمة lang لاختيار الصوت الصحيح. بدونها، إما أن تتجاهل الأداة تغيير اللغة أو تعتمد صوتاً واحداً للصفحة بأكملها، مما يضعف الفهم.
إلى جانب إمكانية الوصول، يوفر وسم اللغة الصحيح فوائد تحسين محركات البحث (SEO) قابلة للقياس. تستخدم محركات البحث سمات lang لفهرسة المحتوى متعدد اللغات بشكل صحيح، مما يحسن احتمال ظهور الصفحات الخاصة بلغة معينة في نتائج البحث المستهدفة جغرافياً ولغوياً. كما تستخدم المتصفحات هذه السمة لتقديم اقتراحات ترجمة دقيقة، وتستند أدوات التدقيق الإملائي إليها لتطبيق القاموس المناسب. باختصار، يفيد وسم اللغة الصحيح جميع المستخدمين — وليس فقط ذوي الإعاقة.
يُقدَّر أن أكثر من 2.2 مليار شخص حول العالم لديهم شكل من أشكال ضعف البصر، وأن عشرات الملايين يعتمدون على قارئات الشاشة يومياً. أصبح المحتوى الويب متعدد اللغات هو القاعدة بشكل متزايد في الأسواق الدولية، مما يجعل الامتثال لمعيار "لغة الأجزاء" أمراً حاسماً لأي موقع يخدم جمهوراً عالمياً أو متعدد اللغات.
قواعد axe-core ذات الصلة
يتطلب المعيار WCAG 3.1.2 إجراء اختبار يدوي لأن الأدوات الآلية لا يمكنها تحديد أي أجزاء من نص الصفحة مكتوبة بلغة مختلفة عن اللغة الافتراضية للصفحة بشكل موثوق دون تطبيق خوارزميات كشف اللغة الطبيعية (NLP) — وحتى هذه الخوارزميات يمكن أن تكون غير مؤكدة مع العبارات القصيرة والأسماء العلم والمصطلحات التقنية.
- الفحص اليدوي — كشف اللغة: يمكن لأدوات الفحص الآلي مثل axe-core التحقق من أن سمة
langعلى عنصر<html>موجودة وصحيحة (مشمولة في قاعدتيhtml-has-langوhtml-lang-valid)، لكنها لا تستطيع قراءة كامل نص الصفحة وتحديد ما إذا كان مقطع معين مكتوباً بالفرنسية أو الألمانية أو اليابانية. لا تمتلك الأداة فهماً دلالياً لمعرفة ما إذا كانت السلسلة "Bonjour tout le monde" فرنسية أم عبارة مختلقة، لذا لا يمكنها الإشارة إلى غيابlang='fr'على العنصر المحيط. - الفحص اليدوي — قيم lang غير الصحيحة: إذا وضع المطور سمة
langعلى عنصر لكنه أسند رمز لغة خاطئاً (على سبيل المثال، وسم نص إسباني على أنهlang='pt')، فسترى الأدوات الآلية وسم BCP 47 صالحاً ولن تبلغ عن خطأ. وحده المراجع البشري الذي يقرأ اللغتين يمكنه تحديد عدم التطابق. - الفحص اليدوي — نطاق تغييرات اللغة: حتى عندما تكون سمات
langموجودة، يجب على الإنسان التأكد من أن السمة تغطي كامل المقطع باللغة الأجنبية — وليس فقط الجملة الأولى، وألا تمتد إلى محتوى مجاور ينتمي إلى اللغة الأساسية. تفتقر الأدوات الآلية إلى فهم القراءة اللازم لاتخاذ هذا الحكم.
كيفية الاختبار
- فحص آلي أساسي: شغّل axe DevTools (إضافة متصفح أو تكامل CI) أو Google Lighthouse على الصفحة. ابحث عن أي انتهاكات لقاعدتي
html-has-langأوhtml-lang-valid— فهذا يشير إلى أن تصريح لغة الصفحة على مستوى العنصر html مفقود أو غير صحيح، وهو مشكلة أساسية يجب إصلاحها قبل معالجة المعيار 3.1.2. لاحظ أن أياً من الأداتين لن يشير إلى سماتlangالمضمنة المفقودة، لذا فإن هذه الخطوة تؤسس فقط خطاً أساسياً. - تدقيق بصري للمحتوى: اقرأ محتوى الصفحة بالكامل وحدد كل مقطع أو عبارة أو كتلة مكتوبة بشكل مرئي بلغة غير اللغة المصرح بها للصفحة. احتفظ بقائمة بهذه العناصر، مع ملاحظة موقعها في DOM. تحقق من كل عنصر (أو أقرب عنصر أب له) بحثاً عن سمة
langفي أداة فحص DOM في المتصفح (أدوات المطور → لوحة العناصر). تحقق من أن القيمة وسم BCP 47 صالح يطابق اللغة الفعلية للمحتوى. - اختبار قارئ الشاشة — NVDA + Firefox (ويندوز): افتح الصفحة مع تفعيل NVDA باستخدام Firefox. تنقل عبر المحتوى باستخدام مفاتيح الأسهم، مع التركيز على المقاطع الأجنبية التي حددتها. استمع بعناية: يجب أن يغيّر NVDA طريقة النطق تلقائياً عندما يواجه سمة
langمضبوطة بشكل صحيح. إذا قُرئ النص الأجنبي وفق قواعد نطق اللغة الافتراضية دون أي تغيير ملحوظ في الصوت، فمن المرجح أن سمةlangمفقودة أو غير صحيحة. - اختبار قارئ الشاشة — JAWS + Chrome (ويندوز): مع تشغيل JAWS في Chrome، استخدم المؤشر الافتراضي لقراءة الصفحة. يتشابه سلوك JAWS مع NVDA — فهو يبدّل محركات TTS بناءً على قيم
lang. فعّل وضع النطق المفصل لسماع إعلانات اللغة. لاحظ أي مقاطع يبدو فيها النطق غير صحيح بالنسبة للغة المرئية. - اختبار قارئ الشاشة — VoiceOver + Safari (macOS/iOS): فعّل VoiceOver وتنقل في الصفحة باستخدام VO+السهم الأيمن. لاختبار الأجهزة المحمولة على iOS، اسحب عبر المحتوى. يحترم VoiceOver في Safari أيضاً سمات
langويبدّل الأصوات وفقاً لذلك. إذا كان جهازك يحتوي على حزم أصوات مثبتة للغات الأجنبية المتوقعة، فستسمع تغييراً واضحاً في الصوت على العناصر الموسومة بشكل صحيح. - التحقق من وسوم BCP 47: بالنسبة لأي قيم
langتجدها، تحقق من صحتها مقابل سجل IANA Language Subtag Registry أو استخدم أداة تحقق BCP 47 عبر الإنترنت. تشمل الأخطاء الشائعة استخدامlang='en-us'(رمز المنطقة بحروف صغيرة صالح تقنياً لكنه غير مألوف) أو رموز غير صالحة مثلlang='english'.
كيفية الإصلاح
عبارة أجنبية مضمنة في فقرة تركية — غير صحيح
<p>
Bu ürün uluslararası standartlara uygundur ve
<em>state of the art</em> teknoloji kullanmaktadır.
</p>
عبارة أجنبية مضمنة في فقرة تركية — صحيح
<p>
Bu ürün uluslararası standartlara uygundur ve
<!-- lang='en' tells screen readers to switch to an English TTS engine -->
<em lang='en'>state of the art</em> teknoloji kullanmaktadır.
</p>
اقتباس كتلة متعددة الجمل بلغة أجنبية — غير صحيح
<blockquote>
<p>La liberté commence où l'ignorance finit.</p>
<p>— Victor Hugo</p>
</blockquote>
اقتباس كتلة متعددة الجمل بلغة أجنبية — صحيح
<!-- lang='fr' applied to the blockquote covers all descendant content -->
<blockquote lang='fr'>
<p>La liberté commence où l'ignorance finit.</p>
<p>— Victor Hugo</p>
</blockquote>
قائمة تنقل ثنائية اللغة — غير صحيح
<nav>
<ul>
<li><a href='/tr/anasayfa'>Anasayfa</a></li>
<li><a href='/en/home'>Home</a></li>
<li><a href='/de/startseite'>Startseite</a></li>
</ul>
</nav>
قائمة تنقل ثنائية اللغة — صحيح
<nav>
<ul>
<!-- Primary language (Turkish) needs no extra attribute if html lang='tr' -->
<li><a href='/tr/anasayfa'>Anasayfa</a></li>
<!-- English and German links receive their own lang attributes -->
<li><a href='/en/home' lang='en'>Home</a></li>
<li><a href='/de/startseite' lang='de'>Startseite</a></li>
</ul>
</nav>
جدول يحتوي على خلايا بيانات متعددة اللغات — غير صحيح
<table>
<tr>
<th>Ülke</th>
<th>Slogan</th>
</tr>
<tr>
<td>Fransa</td>
<td>Liberté, Égalité, Fraternité</td>
</tr>
<tr>
<td>Almanya</td>
<td>Einigkeit und Recht und Freiheit</td>
</tr>
</table>
جدول يحتوي على خلايا بيانات متعددة اللغات — صحيح
<table>
<tr>
<th>Ülke</th>
<th>Slogan</th>
</tr>
<!-- lang applied to individual td elements containing foreign text -->
<tr>
<td>Fransa</td>
<td lang='fr'>Liberté, Égalité, Fraternité</td>
</tr>
<tr>
<td>Almanya</td>
<td lang='de'>Einigkeit und Recht und Freiheit</td>
</tr>
</table>
الأخطاء الشائعة
- إهمال سمات
langعلى العبارات المضمنة القصيرة: غالباً ما يقوم المطورون بوسم المقاطع الكبيرة بلغة أجنبية لكنهم يغفلون العبارات القصيرة مثل شعار تسويقي إنجليزي مكوّن من كلمتين مضمَّن في جملة تركية في الأساس. حتى الكلمات الأجنبية المفردة التي لا تُعد أسماء علم أو مصطلحات تقنية مستثناة تتطلب الوسم. - استخدام وسم BCP 47 غير صحيح: كتابة
lang='english'أوlang='turkish'أوlang='français'بدلاً من الرموز القياسية ISO الصحيحة (lang='en'وlang='tr'وlang='fr') يجعل السمة غير صالحة وقد تتجاهلها قارئات الشاشة تماماً. - الاعتماد على CSS أو التنسيق البصري للإيحاء بتغيير اللغة: تغيير الخط أو اللون أو إمالة النص الأجنبي يشير إلى اختلاف اللغة للمستخدمين المبصرين لكنه لا يوفر أي معلومات برمجية لتقنيات المساعدة. سمة
langهي الآلية الوحيدة التي تعمل مع قارئات الشاشة. - افتراض أن مستخدمي قارئات الشاشة "سيكتشفون الأمر" من السياق: توقع أن يستنتج المستخدم الكفيف أن مقطعاً يبدو مشوهاً هو في الواقع فرنسي لأن النص التركي المحيط أشار إلى فرنسا هو توقع غير معقول ينقل عبء الفهم إلى المستخدم.
- وسم العنصر الأول فقط من كتلة أجنبية متعددة العناصر: إذا احتوت ثلاثة عناصر
<p>متتالية على مقطع فرنسي، فإن وضعlang='fr'على الفقرة الأولى فقط يترك الفقرتين المتبقيتين بدون وسم. النهج الصحيح هو إما إحاطة الفقرات الثلاث بعنصر أب يحملlang='fr'أو إضافة السمة إلى كل فقرة على حدة. - الخلط بين الأسماء العلم والعبارات الكاملة بلغة أجنبية: يغطي استثناء WCAG للأسماء العلم أسماء مثل "Paris" أو "Volkswagen" — وليس الجمل الكاملة أو النصوص التسويقية المكتوبة بالفرنسية أو الألمانية. أحياناً يسيء المطورون تطبيق هذا الاستثناء لتبرير تخطي وسم
langعلى محتوى كبير بلغة أجنبية. - المحتوى المحقون ديناميكياً بدون سمات لغة: عندما يتم تحميل محتوى بلغة أجنبية عبر JavaScript (على سبيل المثال، كتلة أسئلة شائعة مدفوعة بنظام إدارة محتوى أو وصف منتج مترجم يتم جلبه من API)، غالباً ما ينسى المطورون تضمين سمة
langفي الشيفرة المحقونة. يجب أن تمرر خطوط المعالجة في جانب الخادم أو العميل بيانات اللغة جنباً إلى جنب مع نص المحتوى. - استخدام
xml:langفي مستندات HTML5 بدونlang: في سياقات XHTML، كانت سمةxml:langهي السمة المناسبة. في HTML5، السمة الصحيحة هيlang. استخدامxml:langفقط في مستند HTML5 قد يعمل في بعض المتصفحات لكنه غير مدعوم عالمياً من جميع تقنيات المساعدة. - وضع
langعلى حاوية واسعة جداً تتضمن أيضاً محتوى باللغة الأساسية: إحاطة قسم يحتوي على نص تركي وفرنسي معاً بالكامل ضمنlang='fr'سيؤدي إلى نطق الأجزاء التركية بشكل خاطئ. يجب أن يطابق نطاق السمة حدود اللغة بدقة. - عدم الاختبار باستخدام قارئات شاشة فعلية بعد تطبيق الإصلاحات: كثيراً ما يضيف المطورون سمات
langويعتبرون الإصلاح مكتملاً دون التحقق من إخراج TTS الفعلي. الاختبار باستخدام NVDA أو JAWS أو VoiceOver هو الطريقة الوحيدة للتأكد من أن تحسين النطق ملحوظ للمستخدمين النهائيين.
العلاقة مع لوائح إمكانية الوصول في تركيا
تضع التعميم الرئاسي 2025/10 في تركيا، المنشور في الجريدة الرسمية رقم 32933 بتاريخ 21 يونيو 2025، إطاراً ملزماً لإمكانية الوصول الرقمية عبر مجموعة واسعة من الكيانات في القطاعين العام والخاص. يدمج التعميم رسمياً WCAG 2.2 كمعيار تقني، مع اعتبار الامتثال لمستوى AA متطلباً أساسياً للامتثال القانوني.
المعيار WCAG 3.1.2 — لغة الأجزاء هو معيار من مستوى AA، مما يضعه بشكل مباشر ضمن هدف الامتثال الإلزامي المحدد في التعميم. تواجه الكيانات التي تدير مواقع ويب متعددة اللغات — وهو أمر شائع في تركيا نظراً لموقع البلاد كنقطة التقاء للتجارة الأوروبية والشرق أوسطية والآسيوية الوسطى — التزاماً متزايداً بتنفيذ هذا المعيار بشكل صحيح. يجب على بنك تركي ينشر شروط العملات الأجنبية بالإنجليزية، أو مشغل اتصالات يدرج بنود اتفاقيات التجوال بالألمانية، أو موقع مستشفى يعيد نشر نماذج موافقة المرضى بالعربية أن يضمن أن كل مقطع بلغة أجنبية موسوم برمجياً.
تشمل أنواع الكيانات التي يغطيها التعميم المؤسسات والهيئات العامة، ومنصات التجارة الإلكترونية، والبنوك والمؤسسات المالية، والمستشفيات ومقدمي الرعاية الصحية، وشركات الاتصالات التي لديها 200,000 مشترك أو أكثر، ووكالات السفر، وشركات النقل الخاصة، والمدارس الخاصة المرخصة من وزارة التربية الوطنية (MoNE). بالنسبة لجميع هذه الكيانات، قد يؤدي عدم تحقيق الامتثال لمستوى AA — بما في ذلك المعيار 3.1.2 — إلى فرض عقوبات إدارية وعدم الأهلية للحصول على شعار إمكانية الوصول (Erişilebilirlik Logosu) الصادر عن وزارة الأسرة والخدمات الاجتماعية.
يُعترف بشعار Erişilebilirlik Logosu بشكل متزايد كإشارة ثقة في السوق التركية، خاصة في مجالي التجارة الإلكترونية والخدمات المالية. يتطلب الحصول على الشعار والحفاظ عليه إثبات الامتثال لجميع معايير مستوى AA، ويُعد معيار "لغة الأجزاء" ذا صلة خاصة بالكيانات التركية التي تخدم عملاء دوليين أو تنشر وثائق ملزمة قانونياً بلغات متعددة. ونظراً لأن القانون التركي ي要求 أن تكون بعض الإفصاحات (مثل إشعارات حقوق المستهلك وشروط المنتجات المالية) مفهومة للمستخدمين ذوي الإعاقة، فإن وسم اللغة ليس مجرد أفضل ممارسة تقنية — بل هو جزء من التزام التواصل المتاح المدمج في التفويض الأوسع للتعميم.
يُنصح المنظمات الساعية للحصول على الشعار بإجراء تدقيقات محتوى منظمة لتحديد جميع المقاطع الأجنبية عبر ممتلكاتها الرقمية، وتنفيذ عملية تطوير تفرض تطبيق سمة lang على مستوى إدارة المحتوى، وإدراج معيار "لغة الأجزاء" في بروتوكولات اختبار إمكانية الوصول المنتظمة لديها جنباً إلى جنب مع دورات المراجعة الآلية واليدوية.
