Internationalization Base

Multi-language foundations built for server and client components.

This starter now includes locale routing, typed dictionaries, a translation provider, and helpers for building localized pages without leaking translation logic across the app.

Theme System

Active themelight

Developer Notes

  • Use getDictionary() and createTranslator() in server components for most translated content.
  • Use the I18nProvider and useTranslations() only in client components that need interaction.
  • Keep routing locale-aware with buildLocaleHref() and app/[locale] segments.

Usage

background: theme(surface); color: theme(text-primary); border-color: theme(border-soft);
const { t, locale, direction } = useTranslations();

Language

Route-aware locale switcher
src/shared/i18n/config.ts
src/shared/i18n/provider.tsx

Add translations in src/shared/dictionaries, keep locale metadata in src/shared/i18n/config.ts, and use server helpers by default unless a component needs client interaction.