271 lines
8.5 KiB
TypeScript
271 lines
8.5 KiB
TypeScript
/**
|
||
* 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
|