feat: Tage als geschlossen markierbar (Feiertage o. Ä.)
Im Wochenplan lässt sich pro Tag ein optionaler, mehrsprachiger Schließungsgrund hinterlegen. Geschlossene Tage werden auf der öffentlichen Speisekarte (Desktop + mobil) und im RSS-Feed als "Geschlossen" statt mit Essenszeiten angezeigt, im Wochenplan bleibt "Mahlzeit hinzufügen" für diesen Tag deaktiviert.
This commit is contained in:
+10
-1
@@ -50,11 +50,20 @@ export interface DishSuggestion {
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export interface ClosedDay {
|
||||
closed_date: string;
|
||||
reason: string | null;
|
||||
translations: Record<string, string>;
|
||||
}
|
||||
|
||||
/** Übersetzten Namen für die aktuelle Sprache liefern, sonst Deutsch als Fallback. */
|
||||
export function localized(
|
||||
item: {
|
||||
name?: string;
|
||||
label?: string;
|
||||
// Grund eines geschlossenen Tages (s. ClosedDay) – optional, anders
|
||||
// als name/label bei den übrigen Inhaltstypen.
|
||||
reason?: string | null;
|
||||
// Neue, dynamische Form (Gerichte/Essenszeiten/Allergene/
|
||||
// Zusatzstoffe, s. lib/db/translations.ts) – Sprachcode -> Text.
|
||||
translations?: Record<string, string>;
|
||||
@@ -68,7 +77,7 @@ export function localized(
|
||||
},
|
||||
locale: string
|
||||
): string {
|
||||
const de = item.name ?? item.label ?? "";
|
||||
const de = item.name ?? item.label ?? item.reason ?? "";
|
||||
if (locale === "de") return de;
|
||||
if (item.translations) return item.translations[locale] || de;
|
||||
if (locale === "en") return item.name_en || item.label_en || de;
|
||||
|
||||
Reference in New Issue
Block a user