Module 3 · 3.6
Meertalige sites en hreflang
Module 3: De technische basis van een pagina · Leestijd: 12 minuten
Leerdoel: Na deze les kun je hreflang correct opzetten voor een site in meer talen of voor meer landen, en controleren of de verwijzingen wederkerig zijn.
Kernbegrippen: taalversie, hreflang, taalcode (ISO 639-1), landcode (ISO 3166-1 alpha-2), schriftcode (ISO 15924), x-default, wederkerigheid (terugverwijzing), verwijzing naar zichzelf, HTML, HTTP-kopregel of sitemap, aparte adressen per taal, niet automatisch doorsturen op taal, lang-attribuut
Het probleem: welke versie laat je zien?
Bloemenatelier Lotte groeit. Er komt een Engelse versie van de site voor toeristen en expats, en een Duitse voor klanten net over de grens. Dezelfde pagina met bruidsboeketten bestaat nu drie keer:
https://www.example.com/bruidsboeketten (Nederlands)
https://www.example.com/en/bridal-bouquets (Engels)
https://www.example.com/de/brautstraeusse (Duits)Een zoekmachine moet bij elke zoekopdracht kiezen welke van de drie hij laat zien. Iemand in Keulen die in het Duits zoekt, hoort de Duitse versie te krijgen, niet de Nederlandse. Met hreflang vertel je de zoekmachine welke pagina's taalversies van elkaar zijn en voor welke taal of welk land elke versie bedoeld is.
hreflang is geen rankingtruc. Het zorgt er alleen voor dat de juiste versie op de juiste plek verschijnt. En het is geen taalherkenning: Google schrijft dat hij hreflang en het lang-attribuut van HTML niet gebruikt om de taal van een pagina te bepalen; dat doet hij zelf, uit de tekst. Zet het lang-attribuut (<html lang="nl">) wel goed, voor browsers, vertaalprogramma's en schermlezers.
Eerst de basis: aparte adressen
Google raadt een eigen adres per taalversie aan, en raadt af de taal te wisselen met cookies of browserinstellingen op hetzelfde adres. De reden is praktisch: Googlebot crawlt meestal vanuit de Verenigde Staten. Verandert de inhoud op één adres naar gelang wie er kijkt, dan ziet Googlebot misschien maar één versie.
Om dezelfde reden: stuur bezoekers niet automatisch door naar een andere taalversie op basis van hun taal of locatie. Google raadt dat uitdrukkelijk af. Een Nederlander op vakantie in Duitsland wil de Nederlandse site; zet liever een duidelijke taalkeuze op de pagina en laat iedereen alle versies bereiken.
Gebruik je landen in plaats van talen, met aparte domeinen zoals example.de en example.nl, dan geldt hetzelfde. De versies hoeven niet op hetzelfde domein te staan.
Hoe hreflang eruitziet
In de <head> van elke taalversie staat dezelfde set regels:
<link rel="alternate" hreflang="nl" href="https://www.example.com/bruidsboeketten">
<link rel="alternate" hreflang="en" href="https://www.example.com/en/bridal-bouquets">
<link rel="alternate" hreflang="de" href="https://www.example.com/de/brautstraeusse">
<link rel="alternate" hreflang="x-default" href="https://www.example.com/bruidsboeketten">Vier regels die je moet kennen:
- Elke versie noemt zichzelf én alle andere. De Engelse pagina heeft dus precies dezelfde vier regels, inclusief de regel voor
endie naar zichzelf wijst. - Verwijzingen moeten wederkerig zijn. Wijst de Nederlandse pagina naar de Duitse, dan moet de Duitse terugwijzen naar de Nederlandse. Google zegt: als twee pagina's niet allebei naar elkaar wijzen, worden de verwijzingen genegeerd. Dat is de meest gemaakte fout, en daarom controleert de opdracht van deze les het.
- Volledige adressen. Met
https://erbij. Een pad als/en/bridal-bouquetsof//www.example.com/en/...telt niet. - In een nette
<head>. De regels staan in de<head>van de HTML. Breekt iets eerder in de head af, bijvoorbeeld een losse<img>of<div>die daar niet hoort, dan kan een zoekmachine de head als afgesloten zien en de rest missen.
De codes
De waarde van hreflang is een taalcode, eventueel met een landcode erachter:
| Code | Betekenis |
|---|---|
nl | Nederlands, voor iedereen die Nederlands spreekt |
nl-BE | Nederlands voor België |
de-AT | Duits voor Oostenrijk |
en-GB | Engels voor het Verenigd Koninkrijk |
zh-Hant | Chinees in traditioneel schrift (schriftcode ISO 15924) |
x-default | De terugvalpagina: voor iedereen bij wie geen andere versie past |
De taalcode komt uit ISO 639-1 (twee letters), de landcode uit ISO 3166-1 alpha-2. Hoofdletters maken niet uit, maar de gewoonte is taal klein, land groot. Drie valkuilen:
- Alleen een land kan niet.
hreflang="be"betekent Wit-Russisch (de taalcodebe), niet België. Een land staat altijd achter een taal:nl-BEoffr-BE. en-UKbestaat niet. De landcode van het Verenigd Koninkrijk isGB. Google schrijft dat codes alsEU,UNofUKgeen effect hebben.- Gebruik een land alleen als de versies echt verschillen (andere prijzen, valuta, bezorging, spelling). Heb je één Duitse versie voor iedereen, gebruik dan gewoon
de.
x-default
x-default is optioneel. Je wijst er de pagina mee aan voor bezoekers bij wie geen van je versies past, bijvoorbeeld iemand die Frans spreekt. Vaak is dat je hoofdtaal of een pagina waar de bezoeker zelf een taal kiest.
Drie manieren, kies er één
Google kent drie gelijkwaardige manieren om hreflang op te geven:
- In de HTML, met
<link>-regels in de head, zoals hierboven. Het meest gebruikt. Als HTTP-kopregel
Link, handig voor bestanden zonder HTML, zoals een pdf:Link: <https://www.example.com/en/price-list.pdf>; rel="alternate"; hreflang="en"- In de sitemap, met
xhtml:link-regels per<url>. Handig voor grote sites, omdat de pagina's dan niet zwaarder worden.
Je hoeft ze niet te combineren. Gebruik je er meer, dan moeten ze precies hetzelfde zeggen.
hreflang en canonical samen
hreflang en canonical (les 3.5) werken samen, maar haal ze niet door elkaar:
- Elke taalversie heeft een canonical naar zichzelf. De Engelse pagina is geen kopie van de Nederlandse, dus hij wijst niet naar de Nederlandse als canoniek adres. Doe je dat wel, dan zeg je "de Engelse pagina bestaat eigenlijk niet", en valt hij uit de index.
- De adressen in hreflang zijn de canonieke adressen van de versies. Wijst hreflang naar een adres dat doorstuurt, een 404 geeft, noindex heeft of een canonical naar elders heeft, dan breekt de groep.
Google kiest bij het bepalen van het canonieke adres liever adressen die deel uitmaken van een hreflang-groep. Een nette groep helpt dus ook je canonicalisatie.
In de praktijk: laat het systeem het doen
hreflang met de hand bijhouden is foutgevoelig: bij tien talen en honderd pagina's zijn het duizend regels die allemaal moeten kloppen. Laat het je websitesysteem doen. De AI Builder van WebOké zet bij een meertalige site op elke pagina hreflang-verwijzingen naar dezelfde pagina in de andere talen, plus een x-default naar de hoofdtaal, en laat een pagina zonder vertaalde tegenhanger bewust weg uit de groep. In WordPress doen meertalige plugins hetzelfde. Bij andere websitebouwers vind je het onder namen als "talen" of "internationaal". Controleer daarna zelf of de verwijzingen heen en terug kloppen; dat doet de opdracht.
Samenvatting
- hreflang vertelt welke pagina's taal- of landversies van elkaar zijn; het herkent geen taal en is geen rankingtruc.
- Elke versie een eigen adres, geen automatisch doorsturen op taal of locatie.
- Elke versie noemt zichzelf en alle andere, met volledige adressen, en elke verwijzing moet terugkomen; anders negeert Google hem.
- Codes: taal uit ISO 639-1, eventueel met land uit ISO 3166-1 alpha-2 (
en-GB, nieten-UK);x-defaultvoor de rest. - Elke versie heeft een canonical naar zichzelf; hreflang wijst alleen naar canonieke adressen die 200 geven.
Quiz
Opdracht
Opdracht A3.6: Zijn je hreflang-verwijzingen wederkerig? Vul het adres in van een pagina die in meer talen bestaat. Het programma verzamelt de hreflang-verwijzingen uit de head en de Link-kopregel, controleert de codes en de verwijzing naar zichzelf, haalt elke andere taalversie op en kijkt of die terugwijst, 200 geeft, geen noindex heeft en een canonical naar zichzelf. Geen eigen meertalige site? Gebruik https://european-union.europa.eu/index_nl.
Verder lezen
- Google Search Central, Google informeren over gelokaliseerde versies van je pagina: https://developers.google.com/search/docs/specialty/international/localized-versions
- Google Search Central, Meertalige en internationale sites beheren: https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites
- Google Search Central, Dubbele URL's samenvoegen: https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls
- ISO 639 taalcodes (Library of Congress): https://www.loc.gov/standards/iso639-2/php/code_list.php
- Een meertalige website en Google: aparte adressen en hreflang
