Een meertalige Blazor-site die Google begrijpt

Een cookie met de taalkeuze is makkelijk gebouwd, maar zoekmachines zien dan maar één versie. Met een taal in de URL indexeer je beide.

  • Blazor
  • SEO
  • Localisatie

Waarom een cookie niet genoeg is

De snelste manier om een site tweetalig te maken is een cookie: de bezoeker kiest een taal, de server onthoudt die keuze en rendert de juiste teksten. Voor een ingelogde applicatie werkt dat prima.

Voor een publieke site is het een probleem. Een crawler stuurt geen cookie mee en ziet dus altijd de standaardtaal. Eén URL kan maar één canonieke inhoud hebben, dus de tweede taal wordt simpelweg nooit geïndexeerd — hoe goed de vertaling ook is.

De taal in het pad

Geef elke taal een eigen pad: /nl/portfolio en /en/portfolio. In ASP.NET Core hoef je daarvoor geen custom routing te schrijven; een eigen RequestCultureProvider die het eerste padsegment leest, is genoeg.

  • Zet in elke pagina twee @page-directives, één per taal.
  • Voeg per pagina een canonical toe plus hreflang-verwijzingen naar de andere taal en x-default.
  • Laat de taalwisselaar een volledige herlaadactie doen, zodat de servercultuur meeverandert.
  • Neem beide talen op in je sitemap, met de alternates erbij.

De valkuil bij interactive server

Bij Blazor Server wordt de cultuur bepaald op het moment dat het circuit ontstaat, dus bij de eerste HTTP-request. Navigeer je daarna intern naar een pad in de andere taal, dan verandert de URL wel maar de cultuur niet.

De oplossing is simpel: laat alleen de taalwisselaar een harde navigatie doen. Alle andere links binnen de pagina houden de huidige taalprefix aan, en dan blijft URL en inhoud altijd in sync.

Speelt dit bij jou ook?

Mail de vraag. Je krijgt antwoord van degene die het artikel schreef.

Er is een onverwachte fout opgetreden. Herladen 🗙