Unterkategorien-Chips zeigen wieder den Charakternamen (z.B. Hase „HasiDog")

Seit der Umstellung auf "eine Seite pro Tier-Familie" hießen die Chips
nur noch generisch (Kuh, Hase, Wal, ...). Jetzt zeigen sie zusätzlich
den ersten/bekanntesten Charakter der Serie in Anführungszeichen — z.B.
"Hase „HasiDog"" — behalten dabei aber die neue Datenstruktur
(Subcategory.characters) bei, damit Familien mit mehreren Charakteren
(wie Hase: HasiDog, HasiGott, Mama Hase) technisch weiterhin
funktionieren.

Neue Helper-Funktion subcategoryChipLabel() in categories.ts, pro
Sprache mit den richtigen Anführungszeichen (DE/CH „...", EN "...",
FR « ... »).

Verifiziert per Puppeteer: alle 6 Chips zeigen exakt die gewünschten
Labels.
This commit is contained in:
qcigano
2026-08-02 20:49:26 +02:00
parent ee4ec0053e
commit dc1d7a41ff
5 changed files with 25 additions and 8 deletions
+17
View File
@@ -55,3 +55,20 @@ export function getCategory(slug: string): Category | undefined {
export function getSubcategory(categorySlug: string, subSlug: string): Subcategory | undefined {
return getCategory(categorySlug)?.subcategories?.find((s) => s.slug === subSlug);
}
const ZITATZEICHEN: Record<Locale, [string, string]> = {
de: ["„", "”"],
en: ['"', '"'],
ch: ["„", "”"],
fr: ["« ", " »"],
};
// Freundliches Kurz-Label für die Unterkategorien-Chips (z.B. "Hase „HasiDog"") — nennt neben
// dem Familiennamen den ersten/bekanntesten Charakter der Serie, auch wenn die Seite selbst
// inzwischen mehrere Charaktere zeigen kann (siehe Subcategory.characters).
export function subcategoryChipLabel(sub: Subcategory, lang: Locale): string {
const erster = sub.characters?.[0];
if (!erster) return sub.name[lang];
const [auf, zu] = ZITATZEICHEN[lang];
return `${sub.name[lang]} ${auf}${erster.name[lang]}${zu}`;
}