Internationalization Overview
Multi-language architecture with next-intl and package-owned translations.
VibeKit uses next-intl and the packages/i18n workspace package to provide type-safe translations across marketing pages, authenticated apps, emails, and server procedures.
Routing and language detection
- Flat routes: URLs have no
/enor/deprefix (localePrefix: "never"). Pages live underapps/web/app/(marketing)andapps/web/app/(saas). - Language cookie: The active locale is stored in the
NEXT_LOCALEcookie (config.i18n.cookieName). - Navigation: Import
Linkfrom@i18nornext/link. Both work on flat routes.
import { Link } from "@i18n";
export function Nav() {
return <Link href="/pricing">Pricing</Link>;
}Translation catalogs
Translations live in JSON files under packages/i18n/translations/. This is an illustrative namespace; use the actual existing keys or add matching keys in every locale:
{
"common": {
"save": "Save",
"cancel": "Cancel"
},
"exampleFeature": {
"title": "Example feature"
}
}Learn how to add new languages in Adding Locales.