diff --git a/packages/create-svelte/templates/default/i18n.config.js b/packages/create-svelte/templates/default/i18n.config.js
new file mode 100644
index 000000000000..54fd159985b3
--- /dev/null
+++ b/packages/create-svelte/templates/default/i18n.config.js
@@ -0,0 +1,37 @@
+import locales from './src/locales.js';
+
+export const defaultLocale = locales[0];
+
+/** @typedef {{
+ * content: string;
+ * dynamic: boolean;
+ * spread: boolean;
+ * }} Part */
+
+/**
+ * Create localized routes prefixed with locale
+ * @param {Part[][]} segments
+ * @param {'page' | 'endpoint'} type
+ * @returns {Part[][][]}
+ */
+export function localizeRoutes(segments, type) {
+ if (type === 'endpoint') return [segments];
+ return locales.map((locale) =>
+ locale === defaultLocale
+ ? segments
+ : [
+ [{ content: locale, dynamic: false, spread: false }],
+ ...segments.map((segment) => segment.map((part) => translate(part)))
+ ]
+ );
+}
+
+/**
+ * Translate part of a route segment
+ * @param {Part} part
+ * @returns {Part}
+ */
+function translate(part) {
+ if (part.content === 'about') return { ...part, content: 'ueber' };
+ return part;
+}
diff --git a/packages/create-svelte/templates/default/src/lib/header/Header.svelte b/packages/create-svelte/templates/default/src/lib/header/Header.svelte
index 9d3120f3e6fd..e33f2cca172b 100644
--- a/packages/create-svelte/templates/default/src/lib/header/Header.svelte
+++ b/packages/create-svelte/templates/default/src/lib/header/Header.svelte
@@ -1,8 +1,21 @@
+
+ {#if defaultPath}
+
+ {/if}
+ {#each Object.entries(alternatePaths) as [locale, path]}
+
+ {/each}
+
+
@@ -15,12 +28,14 @@