From c98a3617a44a81ae1df18224ff6b2b387c433d8f Mon Sep 17 00:00:00 2001 From: Florian Wilde Date: Mon, 20 Jul 2026 11:22:49 +0200 Subject: [PATCH] fix: Sprach-Fallback ignoriert deaktiviertes Deutsch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit getLocale() fiel bei fehlendem/ungültigem Cookie bisher immer fest auf Deutsch zurück, auch wenn Deutsch im Sprachen-Admin deaktiviert wurde. Da der Sprachumschalter sich bei nur einer aktiven Sprache zusätzlich ausblendet, gab es keine Möglichkeit, das über die Oberfläche zu korrigieren. Fallback nutzt jetzt Deutsch nur noch, wenn es aktiv ist. --- CHANGELOG.md | 13 +++++++++++++ lib/i18n/index.ts | 7 +++++-- package.json | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81586f2..11181f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,19 @@ Alle nennenswerten Änderungen an diesem Projekt werden hier dokumentiert. Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), Versionierung nach [Semantic Versioning](https://semver.org/lang/de/). +## [1.11.1] – 2026-07-20 + +### Behoben +- Wurde Deutsch im Sprachen-Admin deaktiviert (z. B. um die App auf nur + Englisch zu reduzieren), blieb die gesamte App trotzdem auf Deutsch + stehen, sowohl im öffentlichen als auch im internen Bereich: `getLocale()` + fiel bei fehlendem/ungültigem Sprach-Cookie bisher immer fest auf + Deutsch zurück, unabhängig davon, ob Deutsch überhaupt noch aktiv war. + Da der Sprachumschalter sich bei nur einer aktiven Sprache zusätzlich + automatisch ausblendet, gab es keine Möglichkeit, das über die + Oberfläche zu korrigieren. Der Fallback nutzt jetzt Deutsch nur noch, + wenn es tatsächlich aktiv ist – sonst die erste aktive Sprache. + ## [1.11.0] – 2026-07-20 ### Hinzugefügt diff --git a/lib/i18n/index.ts b/lib/i18n/index.ts index c7e9317..ba687c9 100644 --- a/lib/i18n/index.ts +++ b/lib/i18n/index.ts @@ -14,12 +14,15 @@ export * from "./shared"; /** Aktuelle Sprache aus dem Cookie lesen, validiert gegen die aktiven * Sprachen (Server-Komponenten). Ungültig oder nicht mehr aktiv → - * Basis-Sprache. */ + * Basis-Sprache, sofern die noch aktiv ist – sonst die erste aktive + * Sprache (z. B. wenn Deutsch im Admin-Bereich deaktiviert wurde). */ export async function getLocale(): Promise { const store = await cookies(); const value = store.get(LOCALE_COOKIE)?.value; const active = await listActiveLanguageCodes(); - return isLocale(value, active) ? value : DEFAULT_LOCALE; + if (isLocale(value, active)) return value; + if (active.includes(DEFAULT_LOCALE)) return DEFAULT_LOCALE; + return active[0] ?? DEFAULT_LOCALE; } /** Wörterbuch für eine Sprache. Nicht-deutsche Sprachen werden aus der diff --git a/package.json b/package.json index 065b84e..8454ea0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "canteen-menu", - "version": "1.11.0", + "version": "1.11.1", "private": true, "scripts": { "predev": "node --env-file-if-exists=.env.local db/migrate.mjs && node --env-file-if-exists=.env.local scripts/bootstrap-admin.mjs",