Internationalisation
Localisation uses next-intl. Locale is cookie-based (NEXT_LOCALE),
with no [locale] segment in the URL, using the browser's Accept-Language
as a fallback and en as the default. Eight locales ship: en, es, pt,
de, fr, nl, pl, th.
Translations live in messages/<locale>.json, organised by namespace, and
components consume them through useTranslations:
const t = useTranslations('app.landing');
return <h1>{t('headline')}</h1>;The LanguageSwitcher in the header sets the cookie and reloads the page. The
full reload is deliberate: it re-runs the server layout so next-intl serves the
new locale everywhere. The URL never changes.
Keep all locale files in sync when you add a key. (These docs are an exception. They're authored in English MDX rather than the translation catalogues.)
Next: The App.