FEAT-5: add /genetik route + nav entry + German strings (page stub)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,7 @@ import BreedersPage from './pages/BreedersPage'
|
||||
import GerbilsPage from './pages/GerbilsPage'
|
||||
import GerbilDetailPage from './pages/GerbilDetailPage'
|
||||
import GerbilFormPage from './pages/GerbilFormPage'
|
||||
import GenetikPage from './pages/GenetikPage'
|
||||
import HomePage from './pages/HomePage'
|
||||
import LittersPage from './pages/LittersPage'
|
||||
import NotFoundPage from './pages/NotFoundPage'
|
||||
@@ -22,6 +23,7 @@ export default function App() {
|
||||
</Route>
|
||||
<Route path="wuerfe" element={<LittersPage />} />
|
||||
<Route path="zuechter" element={<BreedersPage />} />
|
||||
<Route path="genetik" element={<GenetikPage />} />
|
||||
<Route path="*" element={<NotFoundPage />} />
|
||||
</Route>
|
||||
</Routes>
|
||||
|
||||
@@ -6,6 +6,7 @@ const navItems = [
|
||||
{ to: '/rennmaeuse', label: de.nav.gerbils, icon: '🐭', end: false },
|
||||
{ to: '/wuerfe', label: de.nav.litters, icon: '🍼', end: false },
|
||||
{ to: '/zuechter', label: de.nav.breeders, icon: '🧑🌾', end: false },
|
||||
{ to: '/genetik', label: de.nav.genetics, icon: '🧬', end: false },
|
||||
]
|
||||
|
||||
/**
|
||||
|
||||
11
gerbil-manager-web/src/pages/GenetikPage.tsx
Normal file
11
gerbil-manager-web/src/pages/GenetikPage.tsx
Normal file
@@ -0,0 +1,11 @@
|
||||
import { de } from '../strings/de'
|
||||
|
||||
export default function GenetikPage() {
|
||||
const t = de.pages.genetik
|
||||
return (
|
||||
<section className="page">
|
||||
<h2>{t.title}</h2>
|
||||
<p className="muted">{t.subtitle}</p>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
@@ -13,6 +13,7 @@ export const de = {
|
||||
gerbils: 'Rennmäuse',
|
||||
litters: 'Würfe',
|
||||
breeders: 'Züchter',
|
||||
genetics: 'Genetik',
|
||||
openMenu: 'Menü öffnen',
|
||||
closeMenu: 'Menü schließen',
|
||||
mainNavigation: 'Hauptnavigation',
|
||||
@@ -123,6 +124,32 @@ export const de = {
|
||||
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',
|
||||
},
|
||||
},
|
||||
api: {
|
||||
errors: {
|
||||
|
||||
Reference in New Issue
Block a user