WCAG-succescriteria · Level AA
WCAG 3.1.2: Taal van onderdelen
WCAG 3.1.2 vereist dat elke passage, uitdrukking of sectie van webcontent die is geschreven in een andere taal dan de primaire taal van de pagina, programmatisch wordt geïdentificeerd met behulp van het lang-attribuut. Dit stelt ondersteunende technologieën, vooral schermlezers, in staat om automatisch van uitspraakengine te wisselen en content nauwkeurig weer te geven voor gebruikers die afhankelijk zijn van audio-uitvoer.
Wat Deze Regel Betekent
WCAG 3.1.2 — Language of Parts is een criterium op niveau AA onder het principe Understandable (Begrijpelijk). Het bouwt rechtstreeks voort op 3.1.1 (Language of Page), dat vereist dat de primaire taal van een volledige pagina wordt gedeclareerd. Criterium 3.1.2 gaat verder: wanneer een passage, uitdrukking of inhoudssectie is geschreven in een taal die anders is dan de standaardtaal van de pagina, moet dat gedeelte een lang-attribuut hebben dat de specifieke taal identificeert.
In praktische HTML-termen betekent dit dat je het lang-attribuut toepast op elk element dat een taalwissel omvat. De attribuutwaarde moet een geldige BCP 47-taalcode zijn — bijvoorbeeld lang='en' voor Engels, lang='fr' voor Frans, lang='de' voor Duits of lang='tr' voor Turks. Regiosubtags (zoals lang='en-US' of lang='tr-TR') zijn toegestaan en worden aangemoedigd wanneer uitspraakverschillen tussen dialecten van belang zijn.
Een pass treedt op wanneer elk afzonderlijk taalsegment dat een menselijke lezer zou ervaren als behorend tot een andere taal, is omgeven door een element met het juiste lang-attribuut. Een fail treedt op wanneer een passage in een andere taal aanwezig is maar geen lang-attribuut heeft, of een onjuist attribuut heeft — bijvoorbeeld een Franse zin labelen als lang='de'.
WCAG erkent drie expliciete uitzonderingen op dit criterium. Ten eerste hoeven eigennaamwoorden — persoonsnamen, merknamen, geografische namen — geen taalmarkering te krijgen, zelfs niet wanneer ze uit een andere taal afkomstig zijn. Ten tweede zijn technische termen die worden erkend als vocabulaire binnen de primaire taal (zoals de Latijnse uitdrukking in vitro op een medische Engelstalige pagina) uitgezonderd. Ten derde zijn woorden met een onbepaalde taal — woorden die zo volledig in de primaire taal zijn opgenomen dat hun herkomst dubbelzinnig is — eveneens uitgezonderd. Deze uitzonderingen weerspiegelen de praktische realiteit dat veel leenwoorden geen uitspraakwissel vereisen om correct te worden begrepen.
Het lang-attribuut kan op elk HTML-element worden geplaatst, waaronder <span>, <p>, <div>, <blockquote>, <section> of zelfs <td> in een tabelcel. Het attribuut wordt geërfd door alle onderliggende elementen, dus het taggen van een container op hoog niveau is voldoende als een volledig blok in de doeltaal is geschreven. Je hoeft alleen afzonderlijke inline-elementen te taggen wanneer korte uitdrukkingen zijn ingevoegd in verder eentalige alinea’s.
Waarom Het Belangrijk Is
De primaire begunstigden van dit criterium zijn schermlezersgebruikers, met name mensen die blind zijn of een visuele beperking hebben. Schermlezers vertrouwen op tekst-naar-spraak (TTS)-engines die taalspecifiek zijn. Wanneer een Turkse schermlezer een Franse zin tegenkomt zonder een lang='fr'-attribuut, probeert hij de Franse woorden uit te spreken volgens Turkse fonetische regels, wat leidt tot grotendeels onbegrijpelijke output. De luisteraar merkt mogelijk niet eens dat er een taalwissel heeft plaatsgevonden — hij hoort simpelweg onverstaanbare audio en verliest volledig het begrip van de inhoud.
Denk aan een realistisch scenario dat vaak voorkomt op Turkse e-commerce- en toerismewebsites: een productpagina in het Turks met daarin de merknaam en een korte marketingslogan in het Engels, gevolgd door een juridische disclaimer in het Frans voor Europese klanten. Zonder taalmarkering op de Engelse en Franse segmenten hoort een blinde gebruiker die vertrouwt op een Turkse TTS-stem drie segmenten die allemaal worden uitgesproken alsof ze Turks zijn. De Engelse slogan is misschien nog te raden op basis van fonetische gelijkenis, maar de Franse juridische tekst wordt volledig onbegrijpelijk — waardoor de gebruiker mogelijk cruciale contractuele of veiligheidsinformatie mist.
Gebruikers met cognitieve beperkingen die afhankelijk zijn van voorleestools (niet alleen speciale schermlezers) worden eveneens getroffen. Veel gangbare browserextensies voor leesondersteuning gebruiken het lang-attribuut om de juiste stem te selecteren. Zonder dit attribuut negeert de tool de taalwissel of valt hij terug op één stem voor de hele pagina, wat het begrip ondermijnt.
Naast toegankelijkheid levert correcte taalmarkering meetbare SEO-voordelen op. Zoekmachines gebruiken lang-attributen om meertalige inhoud correct te indexeren, waardoor de kans toeneemt dat taalspecifieke pagina’s verschijnen in geografisch en taalkundig gerichte zoekresultaten. Browsers gebruiken het attribuut ook om nauwkeurige vertaalsuggesties te doen, en spellingcontroletools raadplegen het om het juiste woordenboek toe te passen. Kortom, correcte taalmarkering is gunstig voor alle gebruikers — niet alleen voor mensen met een beperking.
Er wordt geschat dat wereldwijd meer dan 2,2 miljard mensen een vorm van visuele beperking hebben, en dat tientallen miljoenen dagelijks schermlezers gebruiken. Meertalige webinhoud is steeds meer de norm op internationale markten, waardoor naleving van Language of Parts cruciaal is voor elke site die een wereldwijd of meertalig publiek bedient.
Gerelateerde Axe-core-regels
WCAG 3.1.2 vereist handmatige tests omdat geautomatiseerde tools niet betrouwbaar kunnen vaststellen welke delen van de tekst op een pagina zijn geschreven in een andere taal dan de standaardtaal van de pagina, zonder algoritmen voor automatische taalherkenning (NLP) toe te passen — en zelfs die zijn onzeker bij korte uitdrukkingen, eigennamen en technische terminologie.
- Handmatige inspectie — taalherkenning: Geautomatiseerde scanners zoals axe-core kunnen controleren of het
lang-attribuut op het<html>-element aanwezig en geldig is (gedekt door de regelshtml-has-langenhtml-lang-valid), maar ze kunnen niet de volledige tekst doorlezen en bepalen of een bepaalde passage taalkundig Frans, Duits of Japans is. Een tool heeft geen semantisch begrip van de vraag of de tekenreeks "Bonjour tout le monde" Frans is of een verzonnen uitdrukking, en kan dus het ontbreken vanlang='fr'op het omringende element niet signaleren. - Handmatige inspectie — onjuiste lang-waarden: Als een ontwikkelaar een
lang-attribuut op een element heeft geplaatst maar de verkeerde taalcode heeft toegekend (bijvoorbeeld Spaanse tekst markeren alslang='pt'), zien geautomatiseerde tools een geldige BCP 47-tag en melden ze geen fout. Alleen een menselijke beoordelaar die beide talen leest, kan de mismatch identificeren. - Handmatige inspectie — reikwijdte van taalwissels: Zelfs wanneer
lang-attributen aanwezig zijn, moet een mens bevestigen dat het attribuut de volledige omvang van de passage in de vreemde taal dekt — niet alleen de eerste zin, en zonder uit te lopen naar aangrenzende inhoud die tot de primaire taal behoort. Geautomatiseerde tools missen het leesbegrip om dit oordeel te vellen.
Hoe te Testen
- Geautomatiseerde baselinescan: Voer axe DevTools (browserextensie of CI-integratie) of Google Lighthouse uit op de pagina. Zoek naar eventuele overtredingen van
html-has-langofhtml-lang-valid— deze geven aan dat zelfs de taaldeclaratie op paginaniveau ontbreekt of onjuist is, wat een basisprobleem is dat moet worden opgelost voordat je 3.1.2 aanpakt. Merk op dat geen van beide tools ontbrekende inlinelang-attributen zal signaleren, dus deze stap legt alleen een basis vast. - Visuele contentaudit: Lees de volledige pagina-inhoud door en identificeer elke passage, uitdrukking of blok dat zichtbaar is geschreven in een andere taal dan de gedeclareerde paginataal. Houd een lijst bij van deze elementen en noteer hun locatie in de DOM. Controleer elk element (of de dichtstbijzijnde ouder) op een
lang-attribuut in de DOM-inspector van de browser (browser DevTools → tabblad Elements). Controleer of de waarde een geldige BCP 47-tag is die overeenkomt met de daadwerkelijke taal van de inhoud. - Schermlezertest — NVDA + Firefox (Windows): Open de pagina met NVDA actief in Firefox. Navigeer door de inhoud met de pijltjestoetsen, met focus op de passages in de vreemde taal die je hebt geïdentificeerd. Luister aandachtig: NVDA moet de uitspraak automatisch aanpassen wanneer het een correct getagd
lang-attribuut tegenkomt. Als de tekst in de vreemde taal wordt voorgelezen met de uitspraakregels van de standaardtaal, zonder merkbare stemverandering, ontbreekt hetlang-attribuut waarschijnlijk of is het onjuist. - Schermlezertest — JAWS + Chrome (Windows): Lees de pagina met JAWS in Chrome met behulp van de virtuele cursor. Het gedrag van JAWS is vergelijkbaar met dat van NVDA — het schakelt TTS-engines op basis van
lang-waarden. Schakel de uitgebreide spraakmodus in om taalaankondigingen te horen. Noteer passages waar de uitspraak onjuist klinkt voor de zichtbare taal. - Schermlezertest — VoiceOver + Safari (macOS/iOS): Activeer VoiceOver en navigeer door de pagina met VO+Pijl rechts. Voor mobiele tests op iOS veeg je door de inhoud. VoiceOver in Safari respecteert ook
lang-attributen en schakelt stemmen dienovereenkomstig. Als je apparaat stempakketten heeft geïnstalleerd voor de verwachte vreemde talen, hoor je een duidelijke stemverandering bij correct getagde elementen. - BCP 47-tagvalidatie: Valideer alle
lang-waarden die je vindt tegen het IANA Language Subtag Registry of gebruik een online BCP 47-validator. Veelvoorkomende fouten zijn onder meer het gebruik vanlang='en-us'(kleine letters voor de regiocode is technisch geldig maar ongebruikelijk) of ongeldige codes zoalslang='english'.
Hoe te Herstellen
Inline vreemde uitdrukking in een Turkse alinea — Onjuist
<p>
Bu ürün uluslararası standartlara uygundur ve
<em>state of the art</em> teknoloji kullanmaktadır.
</p>
Inline vreemde uitdrukking in een Turkse alinea — Juist
<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>
Blokcitaat met meerdere zinnen in een vreemde taal — Onjuist
<blockquote>
<p>La liberté commence où l'ignorance finit.</p>
<p>— Victor Hugo</p>
</blockquote>
Blokcitaat met meerdere zinnen in een vreemde taal — Juist
<!-- 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>
Tweetalig navigatiemenu — Onjuist
<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>
Tweetalig navigatiemenu — Juist
<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>
Tabel met meertalige datacellen — Onjuist
<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>
Tabel met meertalige datacellen — Juist
<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>
Veelvoorkomende Fouten
- Het weglaten van
lang-attributen bij korte inline-uitdrukkingen: Ontwikkelaars taggen vaak grote secties in een vreemde taal, maar vergeten korte uitdrukkingen zoals een tweewoordige Engelse marketingslogan in een verder Turkse zin. Zelfs uitdrukkingen van één woord in een vreemde taal die geen uitgezonderde eigennamen of technische termen zijn, moeten worden getagd. - Gebruik van een onjuiste BCP 47-tag: Het schrijven van
lang='english',lang='turkish'oflang='français'in plaats van de juiste ISO-codes (lang='en',lang='tr',lang='fr') maakt het attribuut ongeldig, en schermlezers kunnen het volledig negeren. - Vertrouwen op CSS of visuele opmaak om een taalwissel te impliceren: Het veranderen van lettertype, kleur of het cursief maken van tekst in een vreemde taal signaleert het taalverschil aan ziende gebruikers, maar biedt geen programmatische informatie aan ondersteunende technologieën. Het
lang-attribuut is het enige mechanisme dat werkt voor schermlezers. - Aannemen dat schermlezersgebruikers het “wel uit de context zullen halen”: Verwachten dat een blinde gebruiker afleidt dat een onverstaanbaar klinkende passage eigenlijk Frans is omdat de omringende Turkse tekst naar Frankrijk verwees, is een onredelijke verwachting die de begripslast bij de gebruiker legt.
- Alleen het eerste element van een blok in een vreemde taal taggen: Als drie opeenvolgende
<p>-elementen een Franse passage bevatten, laat het plaatsen vanlang='fr'op slechts de eerste alinea de overige twee alinea’s ongetagd. De juiste aanpak is om alle drie in een ouderelement metlang='fr'te plaatsen of het attribuut aan elke alinea afzonderlijk toe te voegen. - Eigennamen verwarren met volledige uitdrukkingen in een vreemde taal: De WCAG-uitzondering voor eigennamen geldt voor namen als "Paris" of "Volkswagen" — niet voor volledige zinnen of marketingteksten in het Frans of Duits. Ontwikkelaars passen deze uitzondering soms verkeerd toe om het overslaan van
lang-tagging op substantiële inhoud in een vreemde taal te rechtvaardigen. - Dynamisch ingeladen inhoud zonder taalattributen: Wanneer inhoud in een vreemde taal via JavaScript wordt geladen (bijvoorbeeld een CMS-gestuurde FAQ-sectie of een vertaalde productbeschrijving die via een API wordt opgehaald), vergeten ontwikkelaars vaak het
lang-attribuut in de ingeladen markup op te nemen. Server-side of client-side renderpijplijnen moeten taalmetadata samen met de tekstinhoud doorgeven. - Gebruik van
xml:langin HTML5-documenten zonderlang: In XHTML-contexten wasxml:langhet juiste attribuut. In HTML5 islanghet juiste attribuut. Alleenxml:langgebruiken in een HTML5-document kan in sommige browsers werken, maar wordt niet universeel ondersteund door alle ondersteunende technologieën. - Het plaatsen van
langop een te brede container die ook inhoud in de primaire taal bevat: Een sectie die zowel Turkse als Franse tekst bevat volledig omwikkelen metlang='fr'zorgt ervoor dat de Turkse delen verkeerd worden uitgesproken. De reikwijdte van het attribuut moet precies overeenkomen met de taalgrens. - Niet testen met echte schermlezers na het aanbrengen van fixes: Ontwikkelaars voegen vaak
lang-attributen toe en beschouwen de oplossing als afgerond zonder de daadwerkelijke TTS-output te verifiëren. Testen met NVDA, JAWS of VoiceOver is de enige manier om te bevestigen dat de uitspraakverbetering merkbaar is voor eindgebruikers.
Relatie met de Toegankelijkheidsregelgeving van Turkije
De Turkse Presidential Circular 2025/10, gepubliceerd in het Staatsblad nr. 32933 op 21 juni 2025, stelt een bindend kader vast voor digitale toegankelijkheid voor een breed scala aan publieke en private entiteiten. De circulaire neemt WCAG 2.2 formeel op als technische standaard, waarbij conformiteit op niveau AA dient als basisvereiste voor juridische naleving.
WCAG 3.1.2 — Language of Parts is een criterium op niveau AA en valt daarmee precies binnen de verplichte conformiteitsdoelstelling die door de circulaire is gedefinieerd. Entiteiten die meertalige websites exploiteren — wat in Turkije gebruikelijk is gezien de positie van het land als kruispunt van Europese, Midden-Oosterse en Centraal-Aziatische handel — hebben een verhoogde verplichting om dit criterium correct te implementeren. Een Turkse bank die valutavoorwaarden in het Engels publiceert, een telecomoperator die roamingclausules in het Duits opneemt, of een ziekenhuiswebsite die toestemmingsformulieren voor patiënten in het Arabisch reproduceert, moeten er allemaal voor zorgen dat elke passage in een vreemde taal programmatisch wordt getagd.
De entiteitstypen die onder de circulaire vallen, omvatten overheidsinstellingen en -agentschappen, e-commerceplatforms, banken en financiële instellingen, ziekenhuizen en zorgaanbieders, telecommunicatiebedrijven met 200,000 of meer abonnees, reisagentschappen, particuliere vervoersbedrijven en particuliere scholen die zijn gemachtigd door het Ministry of National Education (MoNE). Voor al deze entiteiten kan het niet voldoen aan conformiteit op niveau AA — inclusief 3.1.2 — leiden tot administratieve sancties en ongeschiktheid voor het Accessibility Logo (Erişilebilirlik Logosu) dat wordt uitgegeven door het Ministry of Family and Social Services.
Het Erişilebilirlik Logosu wordt in de Turkse markt in toenemende mate erkend als een vertrouwenssignaal, met name in e-commerce en financiële dienstverlening. Het verkrijgen en behouden van het logo vereist aantoonbare naleving van alle criteria op niveau AA, en Language of Parts is bijzonder relevant voor Turkse entiteiten die internationale klanten bedienen of juridisch bindende documenten in meerdere talen publiceren. Aangezien de Turkse wet vereist dat bepaalde bekendmakingen (zoals informatie over consumentenrechten en voorwaarden van financiële producten) begrijpelijk zijn voor gebruikers met een beperking, is taalmarkering niet slechts een technische best practice — het is onderdeel van de verplichting tot toegankelijke communicatie die is ingebed in het bredere mandaat van de circulaire.
Organisaties die het logo willen verkrijgen, wordt aangeraden gestructureerde contentaudits uit te voeren om alle passages in een vreemde taal op hun digitale eigendommen te identificeren, een ontwikkelproces te implementeren dat afdwingt dat het lang-attribuut wordt toegepast in de contentmanagementlaag, en Language of Parts op te nemen in hun reguliere toegankelijkheidstestprotocollen, naast geautomatiseerde en handmatige beoordelingscycli.
