/** * 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: { home: 'Start', gerbils: 'Rennmäuse', litters: 'Würfe', breeders: 'Züchter', genetics: 'Genetik', // FEAT-2 (Oscar): Becken + Kontakte enclosures: 'Becken', contacts: 'Kontakte', openMenu: 'Menü öffnen', closeMenu: 'Menü schließen', mainNavigation: 'Hauptnavigation', }, pages: { home: { title: 'Willkommen', intro: 'Hier verwaltest du deine Rennmäuse, Würfe und Züchter. Wähle einen Bereich aus der Navigation.', }, gerbils: { title: 'Rennmäuse', // Liste newButton: 'Neue Rennmaus', empty: 'Keine Rennmäuse gefunden.', countLabel: 'Tiere', searchPlaceholder: 'Name suchen …', // Filter-Beschriftungen filters: { title: 'Filter', status: 'Status', gender: 'Geschlecht', colorVariety: 'Farbschlag', all: 'Alle', reset: 'Filter zurücksetzen', sortBy: 'Sortieren nach', }, // 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: 'Becken', colorVariety: 'Farbschlag', origin: 'Herkunft', receiver: 'Abnehmer', genotype: 'Genotyp', notes: 'Notizen', }, // Detailseite detail: { masterData: 'Stammdaten', genetics: 'Genetik', resolvedFarbschlag: 'Errechneter Farbschlag', genotypeNotSet: 'Kein Genotyp hinterlegt.', 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.', }, // 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 „?“.', 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', }, }, litters: { title: 'Würfe', comingSoon: 'Die Wurf-Verwaltung entsteht gerade. Bald kannst du hier Würfe dokumentieren.', }, 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-2 (Oscar): Becken (Enclosures) ── becken: { title: 'Becken', newButton: 'Neues Becken', empty: 'Keine Becken gefunden.', countLabel: 'Becken', searchPlaceholder: 'Name suchen …', fields: { name: 'Name', notes: 'Notizen', }, occupancy: { title: 'Bewohner', empty: 'Dieses Becken ist derzeit leer.', countOne: 'Tier', countMany: 'Tiere', }, detail: { edit: 'Bearbeiten', back: 'Zurück zur Liste', notFound: 'Dieses Becken wurde nicht gefunden.', }, form: { createTitle: 'Neues Becken anlegen', editTitle: 'Becken bearbeiten', save: 'Speichern', cancel: 'Abbrechen', saving: 'Speichern …', }, validation: { nameRequired: 'Bitte einen Namen eingeben.', }, delete: { action: 'Löschen', confirmMessage: 'Soll dieses Becken wirklich gelöscht werden?', conflict: 'Becken ist nicht leer — bitte zuerst alle Tiere in ein anderes Becken umsetzen.', }, }, // ── FEAT-2 (Oscar): Kontakte (Contacts — Herkunft/Abnehmer) ── kontakte: { title: 'Kontakte', newButton: 'Neuer Kontakt', empty: 'Keine Kontakte gefunden.', countLabel: 'Kontakte', searchPlaceholder: 'Name suchen …', fields: { name: 'Name', contactInfo: 'Kontaktdaten', 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', contactInfoHint: 'Telefon, E-Mail oder Adresse — freies Format.', 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.', }, }, }, 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?', }, // 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.', }, unknownFarbschlag: 'Unbekannter Farbschlag', }, } as const export type Strings = typeof de