Zum Inhalt springen

svelte-dialect

Winzige MessageFormat-2-i18n für Svelte 5 und SvelteKit.

Runes statt Stores, Schlüssel mit Namespace, Locale-Aushandlung beim SSR, URL-Routing und typisierte Message-Schlüssel — in einer Bibliothek, die klein genug ist, um sie in einem Rutsch zu lesen. Diese Seite ist zugleich die Demo: Sie läuft exakt mit dem hier beschriebenen Setup, Präfix inklusive.

Gebaut auf MessageFormat 2 — Rich Text landet als Snippets, nicht als String-Verkettung

Schnellstart #

Das Wesentliche: den Dialect einmal erzeugen und zwei Hooks einbinden. Den vollständigen Weg von der Installation bis zur ersten übersetzten Zeile findest du auf der Seite „Einrichtung“.

src/lib/i18n.ts
import { createDialect } from 'svelte-dialect/kit';

export const { t, handle, reroute, localizeHref, locales } = createDialect({
	messages: import.meta.glob('./messages/**/*.json', { eager: true }),
	defaultLocale: 'en',
	routing: true
});
src/hooks.server.ts
import type { Handle } from '@sveltejs/kit/hooks';
import { handle as dialect } from '#lib/i18n.js';

export const handle: Handle = dialect;
src/hooks.ts — universal, not hooks.server.ts
import type { Reroute } from '@sveltejs/kit/hooks';
import { reroute as dialect } from '#lib/i18n.js';

export const reroute: Reroute = dialect;
Vollständige Einrichtung, Schritt für Schritt →

Probier es aus #

Hallo, Svelte!

Du hast 0 Mal geklickt

Die Plural-Kategorien kommen von der Locale, nicht von der Bibliothek. Wechsle zu Russisch, und dieselbe Nachricht wählt one / few / many.

Wie es weitergeht #