fix: Sprach-Fallback ignoriert deaktiviertes Deutsch
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.
This commit is contained in:
@@ -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/),
|
Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.1.0/),
|
||||||
Versionierung nach [Semantic Versioning](https://semver.org/lang/de/).
|
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
|
## [1.11.0] – 2026-07-20
|
||||||
|
|
||||||
### Hinzugefügt
|
### Hinzugefügt
|
||||||
|
|||||||
+5
-2
@@ -14,12 +14,15 @@ export * from "./shared";
|
|||||||
|
|
||||||
/** Aktuelle Sprache aus dem Cookie lesen, validiert gegen die aktiven
|
/** Aktuelle Sprache aus dem Cookie lesen, validiert gegen die aktiven
|
||||||
* Sprachen (Server-Komponenten). Ungültig oder nicht mehr aktiv →
|
* 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<Locale> {
|
export async function getLocale(): Promise<Locale> {
|
||||||
const store = await cookies();
|
const store = await cookies();
|
||||||
const value = store.get(LOCALE_COOKIE)?.value;
|
const value = store.get(LOCALE_COOKIE)?.value;
|
||||||
const active = await listActiveLanguageCodes();
|
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
|
/** Wörterbuch für eine Sprache. Nicht-deutsche Sprachen werden aus der
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "canteen-menu",
|
"name": "canteen-menu",
|
||||||
"version": "1.11.0",
|
"version": "1.11.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"predev": "node --env-file-if-exists=.env.local db/migrate.mjs && node --env-file-if-exists=.env.local scripts/bootstrap-admin.mjs",
|
"predev": "node --env-file-if-exists=.env.local db/migrate.mjs && node --env-file-if-exists=.env.local scripts/bootstrap-admin.mjs",
|
||||||
|
|||||||
Reference in New Issue
Block a user