/**
 * Zentrale deutsche Texte der Anwendung.
 * Alle für Benutzer sichtbaren Zeichenketten gehören hierher —
 * niemals Texte direkt in Komponenten hartkodieren.
 */
export const de = {
  app: {
    title: 'Rennmaus-Manager',
    tagline: 'Verwaltung für Rennmäuse, Würfe und Züchter',
  },
  nav: {
    gerbils: 'Rennmäuse',
    litters: 'Würfe',
    breeders: 'Züchter',
    genetics: 'Genetik',
    // FEAT-2 (Oscar): Becken + Kontakte (GEHEGE-RENAME: Becken → Gehege)
    enclosures: 'Gehege',
    contacts: 'Kontakte',
    // FEAT-7 (Kelly): Statistik
    statistics: 'Statistik',
    // FEAT-7 (Kevin): „Mehr“-Overflow auf dem Smartphone
    more: 'Mehr',
    // FEAT-12a (Kevin): Abgabe
    forSale: 'Abgabe',
    // FEAT-13 (Kelly): Verträge + Einstellungen
    contracts: 'Verträge',
    settings: 'Einstellungen',
    // INBOX-1 (Kelly): Anfragen-Posteingang
    requests: 'Anfragen',
    openMenu: 'Menü öffnen',
    closeMenu: 'Menü schließen',
    mainNavigation: 'Hauptnavigation',
    // HELP-1
    help: 'Hilfe',
    // WEB-0b (Kevin): CMS-Verwaltung der öffentlichen Webseite
    website: 'Webseite',
  },
  pages: {
    gerbils: {
      title: 'Rennmäuse',
      nameless: '(ohne Namen)',
      // Liste
      newButton: 'Neue Rennmaus',
      empty: 'Keine Rennmäuse gefunden.',
      countLabel: 'Tiere',
      searchPlaceholder: 'Name suchen …',
      // BESTAND-FILTER: Kennzeichnung externer (nicht zum eigenen Bestand gehörender) Tiere
      externalBadge: 'Extern',
      externalTitle: 'Externes Tier — gehört nicht zum eigenen Bestand, nur für den Stammbaum erfasst.',
      // Filter-Beschriftungen
      filters: {
        title: 'Filter',
        status: 'Status',
        gender: 'Geschlecht',
        colorVariety: 'Farbschlag',
        all: 'Alle',
        reset: 'Filter zurücksetzen',
        sortBy: 'Sortieren nach',
        // BESTAND-FILTER: eigener Bestand (Clan) vs. externe Ahnen (nur Stammbaum)
        showExternal: 'Externe Ahnen einblenden',
        showExternalHint: 'Tiere aus fremden Zuchten, die nur für den Stammbaum erfasst sind.',
      },
      // Sortier-Optionen
      sort: {
        nameAsc: 'Name (A–Z)',
        nameDesc: 'Name (Z–A)',
        birthDesc: 'Geburtsdatum (neueste)',
        birthAsc: 'Geburtsdatum (älteste)',
      },
      // Feld-Beschriftungen (Stammdaten)
      fields: {
        name: 'Name',
        gender: 'Geschlecht',
        status: 'Status',
        dateOfBirth: 'Geburtsdatum',
        dateOfDeath: 'Todesdatum',
        causeOfDeath: 'Todesursache',
        goHomeDate: 'Abgabedatum',
        litter: 'Wurf',
        enclosure: 'Gehege',
        colorVariety: 'Farbschlag',
        origin: 'Herkunft',
        originBreeder: 'Herkunft (Freitext)',
        isDeaf: 'Gehörlos',
        receiver: 'Abnehmer',
        genotype: 'Genotyp',
        notes: 'Notizen',
      },
      // Detailseite
      detail: {
        masterData: 'Stammdaten',
        genetics: 'Genetik',
        resolvedFarbschlag: 'Errechneter Farbschlag',
        resolvedPrefix: 'Errechnet',
        farbschlagMismatch: 'Weicht vom eingetragenen Farbschlag ab.',
        genotypeNotSet: 'Kein Genotyp hinterlegt.',
        testMating: 'Probeverpaarung',
        edit: 'Bearbeiten',
        back: 'Zurück zur Liste',
        tabs: {
          photos: 'Fotos',
          health: 'Gesundheit',
          weight: 'Gewicht',
        },
        tabPlaceholder: 'Dieser Bereich entsteht in einem späteren Schritt.',
        notFound: 'Diese Rennmaus wurde nicht gefunden.',
        moreData: 'Weitere Daten',
      },
      // Formular (anlegen/bearbeiten)
      form: {
        createTitle: 'Neue Rennmaus anlegen',
        editTitle: 'Rennmaus bearbeiten',
        none: '— keine Angabe —',
        genotypeHint:
          'Optional. Format z. B. „Aa CC Dd EE GG Pp Spsp rere“. Unbekannte Allele als „-“.',
        // BESTAND-FILTER: Zugehörigkeit zum eigenen Bestand (sonst externe Ahne)
        isResidentLabel: 'Gehört zum eigenen Bestand',
        isResidentHint: 'Abwählen für externe Ahnen, die nur für den Stammbaum erfasst sind.',
        isDeafUnknown: 'Unbekannt',
        isDeafYes: 'Ja',
        isDeafNo: 'Nein',
        save: 'Speichern',
        cancel: 'Abbrechen',
        saving: 'Speichern …',
      },
      // Validierungsmeldungen
      validation: {
        nameRequired: 'Bitte einen Namen eingeben.',
        genderRequired: 'Bitte ein Geschlecht auswählen.',
        genotypeInvalid: 'Der Genotyp ist ungültig.',
        dateOfDeathBeforeBirth: 'Das Todesdatum darf nicht vor dem Geburtsdatum liegen.',
      },
      // Aufzählungen
      genderLabels: {
        unknown: 'Unbekannt',
        male: 'Männlich',
        female: 'Weiblich',
      },
      statusLabels: {
        Active: 'Aktiv',
        Deceased: 'Verstorben',
        GivenAway: 'Abgegeben',
        ForSale: 'Zur Abgabe',
      },
    },
    // ── FEAT-3 (Kevin): Zucht — Würfe + Zuchtpaare ──
    litters: {
      title: 'Würfe',
      tabs: {
        litters: 'Würfe',
        pairs: 'Zuchtpaare',
      },
      // Liste
      newButton: 'Neuer Wurf',
      empty: 'Keine Würfe gefunden.',
      countLabel: 'Würfe',
      filterYear: 'Jahr',
      allYears: 'Alle Jahre',
      sort: {
        dateDesc: 'Wurfdatum (neueste)',
        dateAsc: 'Wurfdatum (älteste)',
      },
      // Felder
      fields: {
        name: 'Bezeichnung',
        date: 'Wurfdatum',
        father: 'Vater',
        mother: 'Mutter',
        totalBorn: 'Wurfstärke',
        expectedGoHomeDate: 'Voraussichtliches Abgabedatum',
        notes: 'Notizen',
      },
      // Detail / Arbeitsbereich
      detail: {
        parents: 'Elterntiere',
        registered: 'Erfasste Jungtiere',
        juveniles: 'Jungtiere',
        registerJuvenile: 'Jungtier erfassen',
        expectedColors: 'Erwartete Farbschläge dieser Verpaarung',
        needParentsGenotype:
          'Für die Farbvorhersage müssen bei Vater und Mutter Genotypen hinterlegt sein.',
        noJuveniles: 'Noch keine Jungtiere erfasst.',
        unknownParent: 'Unbekannt',
        edit: 'Bearbeiten',
        back: 'Zurück zur Liste',
        notFound: 'Dieser Wurf wurde nicht gefunden.',
      },
      // Formular
      form: {
        createTitle: 'Neuen Wurf anlegen',
        editTitle: 'Wurf bearbeiten',
        none: '— keine Angabe —',
        goHomeHint: 'Vorschlag: 35 Tage nach dem Wurfdatum. Anpassbar.',
        save: 'Speichern',
        cancel: 'Abbrechen',
        saving: 'Speichern …',
      },
      validation: {
        nameRequired: 'Bitte eine Bezeichnung eingeben.',
        dateRequired: 'Bitte ein Wurfdatum angeben.',
        invalidParentGender: 'Der Vater muss männlich und die Mutter weiblich sein.',
      },
      // Zuchtpaar-Übersicht
      pairs: {
        title: 'Zuchtpaare',
        empty: 'Noch keine Zuchtpaare — diese ergeben sich aus den erfassten Würfen.',
        litterCount: 'Würfe',
        lastLitter: 'Letzter Wurf',
        testMating: 'Probeverpaarung',
      },
    },
    breeders: {
      title: 'Züchter',
      comingSoon: 'Die Züchter-Verwaltung entsteht gerade. Bald kannst du hier Züchter erfassen.',
    },
    notFound: {
      title: 'Seite nicht gefunden',
      message: 'Die angeforderte Seite existiert nicht.',
      backHome: 'Zur Startseite',
    },
    // ── FEAT-5 (Kevin): Genetik / Probeverpaarung ──
    genetik: {
      title: 'Genetik',
      subtitle: 'Probeverpaarung – Farbschläge der Nachkommen vorhersagen',
      father: 'Vater',
      mother: 'Mutter',
      pickAnimal: 'Tier auswählen',
      pickAnimalSearch: 'Name suchen …',
      pickAnimalNone: 'Keine passenden Tiere gefunden.',
      pickAnimalNoGenotype: 'Für dieses Tier ist kein Genotyp hinterlegt – bitte unten eingeben.',
      clearAnimal: 'Auswahl entfernen',
      genotypeLabel: 'Genotyp',
      genotypeHint: 'Format z. B. „Aa CC Dd EE GG Pp Spsp rere“. Unbekannte Allele als „-“.',
      genotypeInvalid: 'Der Genotyp ist ungültig.',
      genotypePreview: 'Farbschlag',
      run: 'Probeverpaarung berechnen',
      needBoth: 'Bitte für Vater und Mutter einen gültigen Genotyp angeben.',
      resultsTitle: 'Mögliche Nachkommen',
      byFarbschlag: 'Nach Farbschlag',
      byGenotype: 'Nach Genotyp',
      showGenotypes: 'Genotypen anzeigen',
      hideGenotypes: 'Genotypen ausblenden',
      probability: 'Wahrscheinlichkeit',
      noOffspring: 'Keine lebend geborenen Nachkommen möglich.',
      warningsTitle: 'Hinweise',
    },
    // ── FEAT-12a (Kevin): Abgabe (For-Sale / Inserate) ──
    abgabe: {
      title: 'Abgabe',
      subtitle: 'Abgabetiere gruppieren und Inserate erstellen',
      empty: 'Keine Tiere zur Abgabe. Stelle Tiere über „Zur Abgabe stellen“ ein.',
      markAction: 'Zur Abgabe stellen',
      markMultiAction: 'Ausgewählte zur Abgabe stellen',
      grouping: {
        title: 'Gruppen',
        byEnclosure: 'Nach Gehege vorgeschlagen',
        ungrouped: 'Ohne Gehege',
        moveTo: 'Verschieben nach',
        newGroup: 'Neue Gruppe',
        groupLabel: 'Gruppe',
      },
      // Inserat-Komposer (Vorlage der Züchterin)
      listing: {
        headingFor: (n: number, gender: string) => `Gruppe ${n} (${gender})`,
        genderMale: 'männlich',
        genderFemale: 'weiblich',
        genderMixed: 'gemischt',
        status: 'Status',
        statusFree: 'FREI',
        statusLooseReserved: 'LOCKER RESERVIERT',
        statusReserved: 'RESERVIERT',
        reservedName: 'Name (bei Reservierung)',
        tagline: 'Überschrift (emotionaler Einzeiler)',
        taglinePlaceholder: 'z. B. „Großer und kleiner Bruder“ – Männliches Rennmaus-Duo sucht ein Zuhause',
        bornOn: 'geboren am',
        personality: 'Charakter',
        personalityPlaceholder: 'Ein paar Sätze zum Charakter des Tieres …',
        photos: 'Fotos',
        noPhotos: 'Für dieses Tier sind keine Fotos hinterlegt.',
      },
      // Export / Paste-Paket
      export: {
        copyText: 'Text kopieren',
        copied: 'Text in die Zwischenablage kopiert.',
        copyFailed: 'Kopieren fehlgeschlagen.',
        downloadPhotos: 'Fotos herunterladen',
        zipping: 'Fotos werden gepackt …',
        noPhotosSelected: 'Keine Fotos ausgewählt.',
        zipFailed: 'Fotos konnten nicht gepackt werden.',
        finish: 'Abgabe abschließen',
        finishHint: 'Vertrag erstellen (folgt in einem späteren Schritt).',
      },
      // KI-Assistent (Backend folgt mit API-Schlüssel)
      ai: {
        improve: 'Text mit KI verbessern',
        generating: 'KI erstellt den Text …',
        hintsLabel: 'Hinweise für die KI (optional)',
        notConfigured: 'KI-Funktion: API-Schlüssel noch nicht konfiguriert.',
      },
    },
    // ── FEAT-2 (Oscar): Gehege (Enclosures) — GEHEGE-RENAME: Becken → Gehege ──
    becken: {
      title: 'Gehege',
      newButton: 'Neues Gehege',
      empty: 'Keine Gehege gefunden.',
      countLabel: 'Gehege',
      searchPlaceholder: 'Name suchen …',
      fields: {
        name: 'Name',
        notes: 'Notizen',
      },
      occupancy: {
        title: 'Bewohner',
        empty: 'Dieses Gehege ist derzeit leer.',
        countOne: 'Tier',
        countMany: 'Tiere',
      },
      detail: {
        edit: 'Bearbeiten',
        back: 'Zurück zur Liste',
        notFound: 'Dieses Gehege wurde nicht gefunden.',
      },
      form: {
        createTitle: 'Neues Gehege anlegen',
        editTitle: 'Gehege bearbeiten',
        save: 'Speichern',
        cancel: 'Abbrechen',
        saving: 'Speichern …',
      },
      validation: {
        nameRequired: 'Bitte einen Namen eingeben.',
      },
      delete: {
        action: 'Löschen',
        confirmMessage: 'Soll dieses Gehege wirklich gelöscht werden?',
        conflict:
          'Gehege ist nicht leer — bitte zuerst alle Tiere in ein anderes Gehege umsetzen.',
      },
    },
    // ── FEAT-4 (Kelly): Stammbaum (Ahnentafel) ──
    stammbaum: {
      title: 'Stammbaum',
      /** Überschrift mit Tiername. */
      titleFor: (name: string) => `Stammbaum von ${name}`,
      /** Button auf der Tier-Detailseite (Integration durch FEAT-1). */
      openButton: 'Stammbaum',
      backToAnimal: 'Zur Tierakte',
      notFound: 'Diese Rennmaus wurde nicht gefunden.',
      unknown: 'unbekannt',
      /** Auf Karten am Rand: weitere Vorfahren nachladen. */
      expand: 'Vorfahren laden',
      tapHint: 'Tippe auf ein Tier, um dessen Stammbaum anzuzeigen.',
      zoomIn: 'Vergrößern',
      zoomOut: 'Verkleinern',
      zoomFit: 'Ansicht einpassen',
      print: 'Drucken / PDF',
      inbreeding: {
        label: 'Inzuchtkoeffizient',
        unavailable: 'wird berechnet …',
      },
      printView: {
        /** Spaltenüberschriften der Ahnentafel, Index = Generation. */
        generations: ['Tier', 'Eltern', 'Großeltern', 'Urgroßeltern', 'Ur-Urgroßeltern'],
        createdOn: 'Erstellt am',
        born: 'geb.',
      },
    },
    // ── FEAT-7 (Kelly): Statistik & Berichte ──
    statistik: {
      title: 'Statistik & Berichte',
      empty:
        'Noch keine Daten — lege zuerst Tiere und Würfe an oder importiere deinen Bestand.',
      sectionEmpty: 'Noch keine Daten für diese Auswertung.',
      littersPerYear: 'Würfe pro Jahr',
      avgLitterSize: 'Durchschnittliche Wurfstärke pro Jahr',
      avgLitterSizeHint: 'Nur Würfe mit erfasster Wurfstärke.',
      farbschlag: 'Farbschlag-Verteilung',
      farbschlagHint: 'Nur aktive Tiere.',
      withoutFarbschlag: 'ohne Farbschlag',
      population: 'Bestandsentwicklung',
      populationHint:
        'Lebende, nicht abgegebene Tiere im Zeitverlauf. Tiere ohne Geburtsdatum sind nicht enthalten.',
      populationUnit: 'Tiere',
      losses: 'Verluste pro Jahr',
      lossesHint: 'Verstorbene Tiere nach Todesjahr.',
    },
    // ── FEAT-13 (Kelly): Abgabeverträge ──
    vertraege: {
      title: 'Abgabeverträge',
      newButton: 'Neuer Vertrag',
      empty: 'Noch keine Verträge — erstelle den ersten über „Neuer Vertrag“ oder den Abgabe-Bereich.',
      countText: (n: number) => (n === 1 ? '1 Vertrag' : `${n} Verträge`),
      download: 'Herunterladen',
      delete: 'Löschen',
      confirmDelete:
        'Vertrag wirklich löschen? Die Word-Datei wird mit entfernt; der Status der Tiere bleibt unverändert.',
      animalsCount: (n: number) => (n === 1 ? '1 Tier' : `${n} Tiere`),
      fields: {
        contact: 'Abnehmer',
        animals: 'Tiere',
        price: 'Kaufpreis',
        handoverDate: 'Übergabedatum',
        contractDate: 'Vertragsdatum',
        createdAt: 'Erstellt',
      },
      // Assistent (/vertraege/neu)
      wizard: {
        title: 'Abgabe abschließen',
        steps: ['Abnehmer', 'Tiere', 'Preis & Datum', 'Vertrag'],
        back: 'Zurück',
        next: 'Weiter',
        cancel: 'Abbrechen',
        // Schritt 1
        pickContact: 'Abnehmer auswählen',
        searchContact: 'Name suchen …',
        noContacts: 'Keine Kontakte gefunden.',
        orCreateNew: 'Oder neuen Kontakt anlegen',
        createContact: 'Kontakt anlegen und auswählen',
        contactNameRequired: 'Bitte einen Namen für den Kontakt eingeben.',
        // Schritt 2
        pickAnimals: 'Tiere bestätigen',
        pickAnimalsHint: 'Nur lebende, nicht abgegebene Tiere werden angezeigt.',
        noAnimals: 'Keine abgebbaren Tiere gefunden.',
        animalsRequired: 'Bitte mindestens ein Tier auswählen.',
        // Schritt 3
        priceLabel: 'Kaufpreis (€)',
        pricePlaceholder: 'z. B. 72,00',
        priceInvalid: 'Bitte einen gültigen Preis eingeben (z. B. 72,00).',
        handoverLabel: 'Übergabedatum',
        contractDateLabel: 'Vertragsdatum (optional, Standard = Übergabedatum)',
        // Schritt 4
        summaryTitle: 'Zusammenfassung',
        profileIncomplete:
          'Das Zuchtprofil ist unvollständig — Name, Adresse und Ort erscheinen im Vertrag. Jetzt unter Einstellungen ergänzen?',
        profileLink: 'Zu den Einstellungen',
        generate: 'Vertrag erzeugen',
        generating: 'Vertrag wird erzeugt …',
        successTitle: 'Vertrag erstellt!',
        successText:
          'Die Tiere wurden als „Abgegeben“ markiert (Abnehmer und Abgabedatum gesetzt).',
        downloadDocx: 'Vertrag herunterladen (.docx)',
        toList: 'Zur Vertragsliste',
        anotherOne: 'Weiteren Vertrag erstellen',
      },
    },
    // ── FEAT-13 (Kelly): Einstellungen (Zuchtprofil) ──
    einstellungen: {
      title: 'Einstellungen',
      zuchtprofil: {
        title: 'Zuchtprofil',
        intro:
          'Diese Angaben erscheinen als Verkäufer-Block in jedem Abgabevertrag.',
        incompleteHint:
          'Noch unvollständig: Name, Adresse und Ort werden für den Vertrag benötigt.',
        fields: {
          zuchtName: 'Zuchtname',
          name: 'Vor- und Nachname',
          nameHint: 'Mit Anrede, z. B. „Frau Erika Muster“.',
          address: 'Adresse',
          addressHint: 'Straße Nr, PLZ Ort.',
          phone: 'Telefon',
          email: 'E-Mail',
          homepage: 'Homepage',
          city: 'Ort (Unterschriftszeile)',
        },
        save: 'Speichern',
        saving: 'Speichern …',
        saved: 'Gespeichert.',
      },
    },
    // ── INBOX-1 (Kelly): Anfragen-Posteingang ──
    anfragen: {
      title: 'Anfragen',
      empty: 'Keine Anfragen — hole neue E-Mails mit „Anfragen abrufen“.',
      emptyFiltered: 'Keine Anfragen mit diesem Status.',
      countText: (n: number) => (n === 1 ? '1 Anfrage' : `${n} Anfragen`),
      sync: 'Anfragen abrufen',
      syncing: 'Abrufen …',
      syncImported: (n: number) =>
        n === 0 ? 'Keine neuen Anfragen.' : n === 1 ? '1 neue Anfrage abgerufen.' : `${n} neue Anfragen abgerufen.`,
      mailNotConfigured:
        'Gmail ist noch nicht eingerichtet — Adresse und App-Passwort folgen in den Einstellungen.',
      mailAuthFailed:
        'Gmail-Anmeldung fehlgeschlagen — bitte das App-Passwort neu eintragen.',
      filterAll: 'Alle',
      statusLabels: {
        New: 'Neu',
        InProgress: 'In Bearbeitung',
        Assigned: 'Zugeordnet',
        Answered: 'Beantwortet',
        Abandoned: 'Verworfen',
      },
      // Detailansicht
      detail: {
        back: 'Zurück zur Liste',
        notFound: 'Diese Anfrage wurde nicht gefunden.',
        from: 'Von',
        receivedAt: 'Eingegangen',
        answeredAt: 'Beantwortet am',
        message: 'Nachricht',
        noBody: '(kein Text)',
        noSubject: '(kein Betreff)',
        // Triage
        triage: 'Bearbeitung',
        statusLabel: 'Status',
        abandon: 'Verwerfen',
        abandonConfirm: 'Anfrage wirklich verwerfen?',
        assignContact: 'Abnehmer zuordnen',
        assignNone: '— kein Abnehmer —',
        assignedTo: 'Zugeordneter Abnehmer',
        // Antwort
        reply: 'Antwort',
        replyPlaceholder: 'Antwort schreiben oder mit KI entwerfen …',
        draftButton: 'Antwort entwerfen',
        drafting: 'Entwurf wird erstellt …',
        draftHint: 'Die KI erstellt nur einen Entwurf — gesendet wird erst nach deiner Bestätigung.',
        aiKeyMissing: 'KI-Schlüssel fehlt — der Entwurfs-Assistent wird mit dem Schlüssel aktiviert.',
        aiUpstreamError: 'Der KI-Dienst hat gerade ein Problem — bitte später erneut versuchen.',
        send: 'Antwort senden',
        sending: 'Senden …',
        sendConfirm: 'Antwort jetzt per E-Mail senden?',
        sendEmptyBody: 'Bitte zuerst eine Antwort schreiben.',
        sent: 'Antwort gesendet — die Anfrage ist als „Beantwortet“ markiert.',
      },
    },
    // ── FEAT-2 (Oscar): Kontakte (Contacts — Herkunft/Abnehmer) ──
    kontakte: {
      title: 'Kontakte',
      newButton: 'Neuer Kontakt',
      empty: 'Keine Kontakte gefunden.',
      countLabel: 'Kontakte',
      searchPlaceholder: 'Name suchen …',
      // FEAT-13: contactInfo (Freitext) wurde durch strukturierte Felder ersetzt
      // (DATA-2-Schema: email/phone/address) — gebraucht für den Käufer-Block der Verträge.
      fields: {
        name: 'Name',
        email: 'E-Mail',
        phone: 'Telefon',
        address: 'Adresse',
        notes: 'Notizen',
      },
      linked: {
        title: 'Verknüpfte Tiere',
        empty: 'Diesem Kontakt sind keine Tiere zugeordnet.',
        originRole: 'Herkunft von',
        receiverRole: 'Abnehmer von',
      },
      detail: {
        edit: 'Bearbeiten',
        back: 'Zurück zur Liste',
        notFound: 'Dieser Kontakt wurde nicht gefunden.',
      },
      form: {
        createTitle: 'Neuen Kontakt anlegen',
        editTitle: 'Kontakt bearbeiten',
        addressHint: 'Straße Nr, PLZ Ort — so erscheint sie im Abgabevertrag.',
        save: 'Speichern',
        cancel: 'Abbrechen',
        saving: 'Speichern …',
      },
      validation: {
        nameRequired: 'Bitte einen Namen eingeben.',
      },
      delete: {
        action: 'Löschen',
        confirmMessage: 'Soll dieser Kontakt wirklich gelöscht werden?',
        conflict:
          'Kontakt ist noch mit Tieren verknüpft (Herkunft/Abnehmer) und kann nicht gelöscht werden.',
      },
    },
    // ── FEAT-6 (Oscar): Tier-Detail-Tabs (Gesundheit / Gewicht / Fotos) ──
    tierTabs: {
      actions: {
        save: 'Speichern',
        saving: 'Speichern …',
        cancel: 'Abbrechen',
        edit: 'Bearbeiten',
        delete: 'Löschen',
      },
      health: {
        empty: 'Noch keine Gesundheitseinträge.',
        newButton: 'Neuer Eintrag',
        createTitle: 'Neuer Gesundheitseintrag',
        editTitle: 'Gesundheitseintrag bearbeiten',
        fields: {
          date: 'Datum',
          type: 'Art',
          description: 'Beschreibung',
          veterinarian: 'Tierarzt',
        },
        typeLabels: {
          Examination: 'Untersuchung',
          Treatment: 'Behandlung',
          Injury: 'Verletzung',
          Vaccination: 'Impfung',
          Other: 'Sonstiges',
        },
        validation: {
          dateRequired: 'Bitte ein Datum angeben.',
          descriptionRequired: 'Bitte eine Beschreibung eingeben.',
        },
        deleteConfirm: 'Diesen Gesundheitseintrag wirklich löschen?',
      },
      weight: {
        addTitle: 'Gewicht erfassen',
        fields: {
          date: 'Datum',
          weightGrams: 'Gewicht (g)',
        },
        addButton: 'Hinzufügen',
        adding: 'Speichern …',
        historyTitle: 'Verlauf',
        chartTitle: 'Gewichtsverlauf',
        chartNeedsTwo: 'Für die Verlaufskurve sind mindestens zwei Einträge nötig.',
        empty: 'Noch keine Gewichtseinträge.',
        gramsSuffix: 'g',
        validation: {
          dateRequired: 'Bitte ein Datum angeben.',
          weightRequired: 'Bitte ein Gewicht in Gramm eingeben.',
          weightRange: 'Bitte ein plausibles Gewicht zwischen 1 und 500 g eingeben.',
        },
        deleteConfirm: 'Diesen Gewichtseintrag wirklich löschen?',
      },
      photos: {
        empty: 'Noch keine Fotos.',
        uploadTitle: 'Foto hochladen',
        chooseFile: 'Foto auswählen',
        captionLabel: 'Bildunterschrift (optional)',
        uploadButton: 'Hochladen',
        uploading: 'Hochladen …',
        profileBadge: 'Profilfoto',
        deleteConfirm: 'Dieses Foto wirklich löschen?',
        validation: {
          fileRequired: 'Bitte zuerst ein Foto auswählen.',
        },
      },
    },
    // ── EXPORT-1 (Oscar): Datenexport (Karte auf /einstellungen) ──
    datenexport: {
      title: 'Datenexport',
      intro:
        'Sicherung deiner Daten — alle Tiere, Würfe und Kontakte als Tabellen (CSV für Excel) plus eine vollständige Datensicherung (JSON), gebündelt als Zip.',
      button: 'Export herunterladen',
      photoNote:
        'Fotos sind nicht enthalten — sie liegen als Bilddateien im Datenordner der Anwendung und können von dort gesichert werden.',
    },
    // ── WEB-0b (Kevin): CMS-Verwaltung der öffentlichen Webseite ──
    webseite: {
      title: 'Webseite',
      intro:
        'Hier pflegst du die Inhalte deiner öffentlichen Webseite. Änderungen werden erst beim Veröffentlichen online sichtbar.',
      empty: 'Es sind noch keine Seiten angelegt.',
      statusLabel: 'Status',
      statusDraft: 'Entwurf',
      statusPublished: 'Veröffentlicht',
      edit: 'Bearbeiten',
      back: 'Zurück zur Übersicht',
      // ── WEB-3 (Kelly): lokale Vorschau ──
      vorschau: {
        button: 'Vorschau',
        title: 'Vorschau der Webseite',
        intro:
          'So sieht deine Webseite nach dem Veröffentlichen aus. Entwürfe erscheinen hier noch nicht.',
        pageSelect: 'Seite',
        reload: 'Neu laden',
        viewPhone: 'Smartphone',
        viewDesktop: 'Desktop',
        frameTitle: 'Vorschau der öffentlichen Webseite',
        empty:
          'Noch keine veröffentlichte Seite — stelle eine Seite auf „Veröffentlicht“, um die Vorschau zu sehen.',
        draftHint: 'Entwurf — erscheint noch nicht in der Vorschau.',
        openPage: 'Ansehen',
      },
      // Seiten-Editor (Kopf)
      editor: {
        pageTitleLabel: 'Seitentitel',
        seoLabel: 'Beschreibung für Suchmaschinen (SEO)',
        seoHint: 'Kurzer Text (ca. 1–2 Sätze), der bei Google unter dem Titel erscheint.',
        save: 'Seite speichern',
        saved: 'Seite gespeichert.',
      },
      // Block-Editor
      blocks: {
        sectionTitle: 'Inhaltsblöcke',
        empty: 'Diese Seite hat noch keine Inhaltsblöcke. Füge unten den ersten hinzu.',
        addLabel: 'Block hinzufügen:',
        moveUp: 'Nach oben',
        moveDown: 'Nach unten',
        delete: 'Block löschen',
        confirmDelete: 'Diesen Block wirklich löschen?',
        save: 'Block speichern',
        saved: 'Gespeichert.',
        // Block-Typ-Namen
        types: {
          Heading: 'Überschrift',
          RichText: 'Textabschnitt',
          Image: 'Bild',
          Gallery: 'Bildergalerie',
          ContactInfo: 'Kontaktangaben',
          AbgabetiereList: 'Abgabetiere (automatisch)',
        },
        // Feld-Beschriftungen je Block-Typ
        fields: {
          headingText: 'Überschrift-Text',
          headingLevel: 'Größe',
          levelMain: 'Hauptüberschrift',
          levelSub: 'Unterüberschrift',
          markdown: 'Text',
          markdownHint:
            'Einfache Formatierung möglich: **fett**, *kursiv*, Listen mit „- “, Links als [Text](https://…).',
          imageUrl: 'Bild-Adresse (URL)',
          imageAlt: 'Bildbeschreibung (für Suchmaschinen & Barrierefreiheit)',
          galleryImages: 'Bilder',
          galleryAdd: 'Bild hinzufügen',
          galleryRemove: 'Entfernen',
          contactName: 'Name',
          contactEmail: 'E-Mail',
          contactPhone: 'Telefon',
          contactAddress: 'Adresse',
          abgabeIntro: 'Einleitungstext',
          abgabeAutoNote:
            'Die Liste der Abgabetiere wird beim Veröffentlichen automatisch aus deinen aktuellen Abgabetieren erzeugt. Du kannst nur den Einleitungstext bearbeiten.',
        },
      },
    },
  },
  // ── HELP-1: In-App-Anleitung ──
  hilfe: {
    title: 'Hilfe & Anleitung',
    subtitle: 'Kurzanleitung für den Rennmaus-Manager',
    sections: {
      ersteSchritte: 'Erste Schritte',
      tiere: 'Rennmäuse anlegen & Fotos',
      becken: 'Gehege',
      wuerfe: 'Würfe & Jungtiere',
      genetik: 'Probeverpaarung & Genetik',
      stammbaum: 'Stammbaum',
      abgabe: 'Abgabe-Ablauf',
      // FEAT-13-Followup (Kelly): Vertrag + Zuchtprofil
      vertraege: 'Abgabevertrag erstellen',
      einstellungen: 'Zuchtprofil (Einstellungen)',
      statistik: 'Statistik',
      datensicherung: 'Datensicherung',
    },
  },
  api: {
    errors: {
      network: 'Verbindung zum Server fehlgeschlagen. Bitte später erneut versuchen.',
      notFound: 'Der Eintrag wurde nicht gefunden.',
      server: 'Auf dem Server ist ein Fehler aufgetreten.',
      unknown: 'Ein unbekannter Fehler ist aufgetreten.',
    },
  },
  common: {
    loading: 'Lädt …',
    retry: 'Erneut versuchen',
    previous: 'Zurück',
    next: 'Weiter',
    page: 'Seite',
    of: 'von',
    yes: 'Ja',
    no: 'Nein',
    delete: 'Löschen',
    confirmDelete: 'Wirklich löschen?',
    pageNav: 'Seitennavigation',
  },
  // Genetik-Warnungen: der Engine (src/genetics) liefert nur CODES,
  // die deutschen Texte stehen hier. Schlüssel = GeneticsWarningCode-Werte.
  genetics: {
    warnings: {
      SCHECKE_LETHAL:
        'Schecke × Schecke: Reinerbige Tiere (SpSp) sterben bereits im Mutterleib — etwa ein Viertel weniger Jungtiere.',
      REX_SEMI_LETHAL:
        'Rex × Rex: Reinerbige Tiere (ReRe) sind nur eingeschränkt lebensfähig.',
      SLS_LETHAL:
        'WP × WP: Reinerbige Tiere (S(l)S(l)) sterben bereits im Mutterleib (Rumpback) — weniger Jungtiere.',
      SUPERSCHECKE_DEAF:
        'Schecke × WP: Superschecken (sehr hoher Weißanteil) sind möglich — erhöhtes Taubheitsrisiko.',
    },
    unknownFarbschlag: 'Unbekannter Farbschlag',
  },
  // ── FEAT-14 (Kevin): Charakterbogen — Eigenschaften + Notiz, speist den KI-Verkaufstext ──
  // Traits: stabile KEYS (gespeichert) + deutsche LABELS (UI + KI-Prompt).
  // Erweitern = eine Zeile in der Liste; Julian verfeinert die Auswahl.
  character: {
    sectionTitle: 'Charakter & Eigenschaften',
    noteLabel: 'Notizen zum Charakter',
    notePlaceholder: 'Ein paar Sätze zum Charakter dieses Tieres …',
    save: 'Charakter speichern',
    saved: 'Charakter gespeichert.',
    none: 'Noch keine Eigenschaften ausgewählt.',
    traits: [
      { key: 'zutraulich', label: 'zutraulich' },
      { key: 'handzahm', label: 'handzahm' },
      { key: 'neugierig', label: 'neugierig' },
      { key: 'aufgeschlossen', label: 'aufgeschlossen' },
      { key: 'ruhig', label: 'ruhig / ausgeglichen' },
      { key: 'lebhaft', label: 'lebhaft / aktiv' },
      { key: 'verschmust', label: 'verschmust' },
      { key: 'eigenstaendig', label: 'eigenständig' },
      { key: 'anfaengergeeignet', label: 'anfängergeeignet' },
      { key: 'futterfreudig', label: 'futterfreudig' },
      { key: 'buddelt', label: 'buddelt gern' },
      { key: 'klettert', label: 'klettert gern' },
      { key: 'laufrad', label: 'läuft gern im Laufrad' },
      { key: 'vertraeglich', label: 'gut verträglich' },
      { key: 'schreckhaft', label: 'schreckhaft' },
    ],
  },
  // ── UX-MOBILE-1 (Kevin): FilterPanel — einklappbare Filter auf Mobil ──
  filterPanel: {
    toggleButton: 'Filter',
    resetButton: 'Filter zurücksetzen',
    closeButton: 'Schließen',
  },
  // ── FEAT-NAMEGEN: Namensvorschläge (KI-gestützt, UC-1 Einzeltier) ──
  namegen: {
    button: 'Name vorschlagen',
    panelTitle: 'Namensvorschläge',
    letterLabel: 'Anfangsbuchstabe',
    letterPlaceholder: 'z. B. A',
    usagesLabel: 'Herkunftskultur',
    loadButton: 'Vorschläge laden',
    loading: 'Lade Vorschläge …',
    empty: 'Keine Vorschläge — andere Einstellungen versuchen.',
    keyMissing: 'Namensvorschläge benötigen einen API-Key — bitte in den Einstellungen konfigurieren.',
    close: 'Schließen',
  },
} as const

export type Strings = typeof de
