From 63269c26005d556aacb2d74b6e643c2f35029097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=B6rdle=20Bot?= Date: Mon, 1 Dec 2025 18:18:11 +0100 Subject: [PATCH] =?UTF-8?q?Change:=20Standard-Sprache=20von=20Deutsch=20au?= =?UTF-8?q?f=20Englisch=20ge=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - defaultLocale in proxy.ts auf 'en' geändert - Fallback in i18n/request.ts auf 'en' geändert - Fallback-Reihenfolge in lib/i18n.ts angepasst (en vor de) - Share-URL-Logik in Game.tsx angepasst - Dokumentation aktualisiert --- README.md | 4 ++-- components/Game.tsx | 4 ++-- docs/I18N.md | 14 +++++++------- i18n/request.ts | 2 +- lib/i18n.ts | 6 +++--- proxy.ts | 6 +++--- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 8d5feb3..322cb1b 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ Hördle unterstützt vollständige Mehrsprachigkeit für Deutsch und Englisch. **Schnellstart:** - Deutsche Version: `http://localhost:3000/de` - Englische Version: `http://localhost:3000/en` -- Root (`/`) leitet automatisch zur Standardsprache (Deutsch) um +- Root (`/`) leitet automatisch zur Standardsprache (Englisch) um ## White Labeling @@ -115,7 +115,7 @@ Das Ziel ist es, den Song mit so wenigen Hinweisen wie möglich zu erraten und d ```bash npm run dev ``` - Die App läuft unter `http://localhost:3000` (leitet automatisch zu `/de` um). + Die App läuft unter `http://localhost:3000` (leitet automatisch zu `/en` um). ## Deployment mit Docker diff --git a/components/Game.tsx b/components/Game.tsx index 6ed1455..5335fe2 100644 --- a/components/Game.tsx +++ b/components/Game.tsx @@ -275,8 +275,8 @@ export default function Game({ dailyPuzzle, genre = null, isSpecial = false, max const genreText = genre ? `${isSpecial ? t('special') : t('genre')}: ${genre}\n` : ''; let shareUrl = `https://${config.domain}`; - // Add locale prefix if not default (de) - if (locale !== 'de') { + // Add locale prefix if not default (en) + if (locale !== 'en') { shareUrl += `/${locale}`; } if (genre) { diff --git a/docs/I18N.md b/docs/I18N.md index 1498eb1..f31b510 100644 --- a/docs/I18N.md +++ b/docs/I18N.md @@ -8,14 +8,14 @@ Die i18n-Implementierung basiert auf [next-intl](https://next-intl-docs.vercel.a ## Unterstützte Sprachen -- **Deutsch (de)** - Standardsprache -- **Englisch (en)** +- **Englisch (en)** - Standardsprache +- **Deutsch (de)** ## URL-Struktur Alle Routen sind lokalisiert: -- `http://localhost:3000/` → Redirect zu `/de` (Standard) +- `http://localhost:3000/` → Redirect zu `/en` (Standard) - `http://localhost:3000/de` → Deutsche Version - `http://localhost:3000/en` → Englische Version - `http://localhost:3000/de/admin` → Admin-Dashboard (Deutsch) @@ -103,8 +103,8 @@ const genreNameEn = getLocalizedValue(genre.name, 'en'); // "Rock" **Fallback-Verhalten:** 1. Versucht die angeforderte Locale (`de` oder `en`) -2. Fallback zu `de` falls nicht vorhanden -3. Fallback zu `en` falls nicht vorhanden +2. Fallback zu `en` falls nicht vorhanden +3. Fallback zu `de` falls nicht vorhanden 4. Fallback zum ersten verfügbaren Schlüssel 5. Fallback zum übergebenen `fallback`-Parameter @@ -195,7 +195,7 @@ Bestehende Daten werden automatisch migriert: Der Proxy (`proxy.ts`) leitet Anfragen automatisch um: -- `/` → `/de` (Standard) +- `/` → `/en` (Standard) - Ungültige Locales → 404 - Validiert Locale-Parameter @@ -223,7 +223,7 @@ GET /api/specials?locale=en GET /api/news?locale=de ``` -Falls kein `locale` angegeben wird, wird `de` als Standard verwendet. +Falls kein `locale` angegeben wird, wird `en` als Standard verwendet. ## Best Practices diff --git a/i18n/request.ts b/i18n/request.ts index 177910d..fa18116 100644 --- a/i18n/request.ts +++ b/i18n/request.ts @@ -9,7 +9,7 @@ export default getRequestConfig(async ({ requestLocale }) => { console.log('[i18n/request] incoming requestLocale:', locale); if (!locale || !locales.includes(locale as (typeof locales)[number])) { - locale = 'de'; + locale = 'en'; console.log('[i18n/request] falling back to default locale:', locale); } diff --git a/lib/i18n.ts b/lib/i18n.ts index 96f7e87..390d8f6 100644 --- a/lib/i18n.ts +++ b/lib/i18n.ts @@ -16,12 +16,12 @@ export function getLocalizedValue( if (typeof value === 'object') { if (value[locale]) return value[locale]; - // Fallback to 'de' - if (value['de']) return value['de']; - // Fallback to 'en' if (value['en']) return value['en']; + // Fallback to 'de' + if (value['de']) return value['de']; + // Fallback to first key const keys = Object.keys(value); if (keys.length > 0) return value[keys[0]]; diff --git a/proxy.ts b/proxy.ts index 3d5c3c2..3152fed 100644 --- a/proxy.ts +++ b/proxy.ts @@ -2,9 +2,9 @@ import createMiddleware from 'next-intl/middleware'; import type { NextRequest } from 'next/server'; const i18nMiddleware = createMiddleware({ - locales: ['de', 'en'], - defaultLocale: 'de', - // Wir nutzen überall Locale-Präfixe (`/de`, `/en`) + locales: ['en', 'de'], + defaultLocale: 'en', + // Wir nutzen überall Locale-Präfixe (`/en`, `/de`) localePrefix: 'always' });