Zoeken

Zoek in Kavel...

Documentatiemenu

Internationalisatie

Type-veilige, URL-gebaseerde lokalisatie met Paraglide, elk bericht is een functie, gecontroleerd tijdens het compileren.

Wat je krijgt

  • Samengestelde berichtcatalogi (Engels, Nederlands, Duits, Frans en Spaans) en je kiest bij het aanmaken welke je meeneemt
  • De basis-locale op URL's zonder prefix en andere locales onder een /xx/-prefix (/de/…), vóór het routeren opgelost, zodat routebestanden locale-agnostisch blijven
  • Een LocaleSwitcher-component en een gecompileerde, tree-shakeable berichtruntime

Talen kiezen

Wanneer je de i18n-module kiest, vraagt de CLI welke talen je wilt, of geef ze non-interactief op. De eerste locale is de basis (fallback); alleen de gekozen catalogi blijven behouden.

bash
bun create kavel@latest my-app --locales en,de,fr

Berichten gebruiken

Berichten compileren naar getypeerde functies op het m-object. Verwijs naar een niet-bestaande sleutel en het compileert niet:

tsx
import { m } from "@/paraglide/messages";

export function Hero() {
  return <h1>{m.hero_title()}</h1>;
}

Tip

Berichtsleutels worden gegenereerd als stabiele, pseudo-willekeurige namen (bijv. silver_lamp_cord_meadow) in plaats van de tekst te beschrijven. Zo blijven sleutels stabiel als de tekst verandert en voorkom je merge-ruis. Bewerk de tekst in de JSON-catalogi, niet de sleutel.

Een locale toevoegen

  1. Voeg de locale toe aan project.inlang/settings.json en aan de locales-lijst in apps/web/src/lib/i18n.ts.
  2. Maak messages/<locale>.json met de vertaalde sleutels.
  3. Compileer de runtime opnieuw.
bash
bun i18n:compile

Vertaalde padnamen

De basis-locale wordt zonder prefix aangeboden (/pricing); andere locales onder een /xx/-prefix. Elke route houdt standaard zijn pad; om het pad per locale te vertalen (zodat Nederlands /nl/prijzen krijgt), voeg je een entry toe aan routeLocalizations in src/lib/i18n.ts:

ts
export const routeLocalizations = {
  "/about": { en: "/about", nl: "/over-ons" },
};