The raw key on your live site
You add a label in English and forget the Dutch file. Nothing complains. A Dutch customer finds nav.settings.title on your settings page. Here, that gap fails the build, not the demo.
Je site onthoudt de taal van elke bezoeker en toont die overal, vanaf dag één.
Je site onthoudt de taal van elke bezoeker en toont die overal, vanaf dag één.
Het mechanisme van begin tot eind, zoals het in de repository is geïmplementeerd.
The URL decides first
A /nl prefix means Dutch. Without one, the app falls back to the account preference, then a validated cookie, then the default.
Pages render from built-in catalogs
All copy reads from typed catalogs compiled into the app, so the server and the first client render already speak the right language.
Switching keeps your place
The language switcher rewrites the current URL, keeping the path, query, and hash, and updates the page language immediately.
The choice sticks
The pick is saved in a checked cookie and, for signed-in users, on the account, so the next visit opens in the same language.
Interactief voorbeeld
Deze rondleiding toont het geïmplementeerde backendcontract zonder account, credentials of providercalls.
Interactief voorbeeld
Alleen deterministische voorbeelddata. De interactie gebruikt geen account-, provider- of netwerkverbinding.
Zonder een gedeelde basis bouwt elk team deze randgevallen opnieuw — en anders.
You add a label in English and forget the Dutch file. Nothing complains. A Dutch customer finds nav.settings.title on your settings page. Here, that gap fails the build, not the demo.
A Dutch reader shares your pricing page. Their colleague opens it and lands on the English version, because the language only lived in a cookie. Here, the language is in the URL, so it travels with the link.
Provider-based i18n loads translations after the page. Every first visit flickers from keys or English to the real text. Here, translations are compiled in, so there's nothing to wait for.
Kernpunten
Both languages live side by side in one file. Add a phrase in one and forget the other, and the build fails instead of shipping a gap.
Dutch pages live under /nl, so a shared link opens in the same language the sender saw.
Translations are compiled into the app, not fetched at runtime, so the first paint is already in the right language.
Technische garanties
Achter de schermen houden autorisatie, tenantgrenzen en foutafhandeling één duidelijke eigenaar. Zo blijft de snelle ervaring voor gebruikers gekoppeld aan veilig herstel als het misgaat.
De grens hierboven is geen claim maar code. Deze bestanden dragen het contract:
src/modules/i18n/messages.tssrc/modules/i18n/locale-navigation.tssrc/modules/i18n/MODULE.mdDeze functies delen contracten en grenzen met deze pagina.
De documentatie beschrijft dezelfde contracten die deze pagina demonstreert.