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 onderliggende 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.