# i18n für statische Sites — 5 Locales > Slash-Route-Lokalisierung ohne CMS: Dictionaries, dynamische [locale]-Pfade, hreflang und fünf Sprachen synchron halten. > > 2026-04-18 — y7.hk ## Die Architektur ``` /en/blog/hello ← Default-Locale, trotzdem mit Prefix (sauberer als ein Sonderfall) /ru/blog/hello /zh/blog/hello /ja/blog/hello /de/blog/hello ``` Drei bewegliche Teile: 1. **Dictionaries** — ein JSON pro Locale, identische Form, typisiert als `Record`, sodass TypeScript schreit, wenn ein Key abweicht. 2. **Dynamische Routen** — `src/pages/[locale]/...` mit `getStaticPaths()`, das jede Locale zurückgibt. 3. **Content-Fallback** — Posts einmal in `en/` schreiben und unter jeder Locale rendern, bis Übersetzungen existieren. ## Der Type-Trick, der dich rettet ```ts export type Locale = "en" | "ru" | "zh" | "ja" | "de"; const dictionaries: Record = { en, ru, zh, ja, de }; ``` `typeof en` ist das Schema. Füge einen Key zu `en.json` hinzu, und der Build schlägt fehl, bis die vier anderen Dictionaries nachziehen. ## Vergiss den head nicht `` für jede Locale plus `x-default`, Canonical pro Seite und aus `Astro.url` abgeleitete Pfade. Suchmaschinen belohnen die langweilige Klempnerarbeit.