Over het attribuut "lang"

Regelmatig kom je HTML-code tegen met het attribuut lang. Dat ziet er dan zou uit: lang="en-US", of lang="nl-NL". Het meest zie je dit in de <html>tag. In HTML5 kan het in elke tag worden gebruikt. In HTML 4 zijn er een paar beperkingen.
Overigens is het gebruik van lang niet in elke tag zinvol, bijvoorbeeld <br> of <title>.

Het attribuut lang kan worden gebruikt om de taal op te geven waarin het web-document is gemaakt. Dat helpt zoekmachines bij het indexeren, zoeken en presenteren. Het heeft immers weinig zin om om een pagina in het Chinees aan een Nederlander te presenteren.
Verder kan de browser het gebruiken om regels te kiezen voor het automatisch afbreken van woorden.

De waarde die je aan lang geeft bestaat uit twee delen: de aanduiding voor de taal gevolgd door het land waar die taal wordt gesproken, gescheiden door een min-teken. De taal-code wordt in kleine letters gespeld, de land-code in hoofdletters.
Denk bij de taal-versie aan Amerikaans Engels, of Canadees Frans. Voorbeelden:
 
<html lang="en-US">     Amerikaans Engels
<html lang="fr-CA">     Canadees Frans
<html lang="nl">     Nederlands

De taal-code is volgens ISO 639-1. De land-code is volgens ISO 3166-1, deze is optioneel.

Het World Wide Web Consortium (W3C, de beheerder van de HTML-standaarden) zou elke <html>-tag tenminste een declaratie moeten bevatten van de taal. Dat geldt dan voor alle tags in het document, omdat het lang-attribuut door alle andere onder­liggende tags wordt geërfd.

Als er helemaal geen lang is gedeclareerd, zal de browser de taal-instelling van het Operating System gebruiken. Daar zou je uit kunnen afleiden dat je lang kunt weglaten in websites die zijn gericht op één taal in één land (zoals deze ). Gebleken is dat sites zonder lang-declaratie minder hoog in de zoekmachine-resultaten komen te staan. Het beste is er dus wel een op te nemen.

Om te zorgen dat de taal-definitie ook geldt voor de elementen van de <head>-sectie, zet je de declaratie in de <html>-tag; alleen de <body>-tag is niet goed genoeg.

Als je content hebt die in een andere taal staat, geef je de tags rond die andere taal een lang-attribuut mee. Op die manier maak je onderscheid tussen de talen. Dat helpt de zoekmachines.

Hieronder zie je een overzicht van de taal-codes volgens volgens ISO 639-1 en de land-codes volgens ISO 3166-1.
Bij de taal-codes zitten er nogal wat waar je misschien nog nooit van gehoord hebt. Om het nog wat ingewikkelder te maken: De lijst van ISO 639-1 bevat alleen de hoofdtalen.
Van veel talen bestaan er (veel) varianten, elk met hun eigen karakteristieken. Zo staan er van de oude Inca-taal Quechua al 44 varianten genoemd.
De taal Quechua wordt nu nog gesproken in Zuid-Amerika, in een gebied dat zich uitstrekt over Colombia, Peru en Bolivia.

De varianten worden aangeduid met 3-letter-codes, zie ISO 639-2 en ISO 639-3. Het voert te ver om die hier allemaal te noemen.
Op Wikipedia vind je meer informatie (helaas alleen in het Engels).

Taal-code volgens ISO 639-1

Land-code volgens ISO 3166-1


Behalve om lang in te zetten om browsers en zoekmachines mee te beïnvloeden, kun je lang ook gebruiken om via CSS de opmaak van je pagina te sturen.

In CSS doe je dat via de pseudo-klasse lang. Daar geef je de taalcode aan mee van de elementen die je wilt selecteren. De CSS-code:
 
p:lang(fy) { background-color:yellow }
 
toont de content van alle <p>-tags met het attribuut lang="fy" op een gele achter­grond.

De CSS-code:
 
p:lang(fr-CA) { color:red }
 
toont alle content die is geschreven in Canadees Frans met rode letters.
Maar kijk ook nog even naar het onderstaande:

De CSS:
body { color:black }
p:lang(fr-CA) { color:red }

toont de paragrafen met lang="fr-CA" met rode letters. De paragrafen met lang="fr" worden met zwarte letters getoond. De CSS is beperkt tot fr-CA. Maar de CSS:
body { color:black }
p:lang(fr) { color:red }

toont de paragrafen met lang="fr" met rode letters. De paragrafen met lang="fr-CA" worden ook met rode letters getoond! De CSS neemt alles mee dat fr heeft.

Opmerking:
Een beschrijving van CSS voor het besturen van woord- en regelafbreking vind je in het item Automatisch woorden en regels afbreken in HTML.

 
terug

html-049; Laatste wijziging: 2 mei 2020