31560a712f
- Fix ClientWrappers missing 'about' namespace (MISSING_MESSAGE error) - Add system/light/dark theme toggle with prefers-color-scheme detection - Rewrite 404 page with i18n, accessibility, and proper navigation - Rewrite books page with Header/Footer, i18n, and semantic HTML - Add i18n keys to About, Footer, and both locale files - Fix dark mode contrast: text-stone-300/600 -> text-stone-400 - Replace raw hex bg-[#fdfcf8] with bg-stone-50 across all components - Guard console.error in ChatWidget and manage/page behind NODE_ENV - Add aria-label to admin login form - Remove emoji from manage page password toggle - Update stale dates in privacy-policy and legal-notice - Fix ScrollFadeIn index->delay prop type error in books page - Fix privacy-policy and legal-notice landmark structure - Add pre-push-check.test.ts: 13-category static analysis (i18n parity, namespace coverage, key resolution, accessibility, email validation, hex colors, emojis, console guards, env docs, types) - Add explicit i18n check step to CI workflow
201 lines
7.5 KiB
JSON
201 lines
7.5 KiB
JSON
{
|
||
"nav": {
|
||
"home": "Start",
|
||
"about": "Über mich",
|
||
"projects": "Projekte",
|
||
"contact": "Kontakt"
|
||
},
|
||
"common": {
|
||
"back": "Zurück",
|
||
"backToHome": "Zurück zur Startseite",
|
||
"backToProjects": "Zurück zu den Projekten",
|
||
"viewAllProjects": "Alle Projekte ansehen",
|
||
"loading": "Lädt..."
|
||
},
|
||
"consent": {
|
||
"title": "Datenschutz-Einstellungen",
|
||
"description": "Wir nutzen optionale Dienste (Analytics und Chat), um die Seite zu verbessern. Du kannst deine Auswahl jederzeit ändern.",
|
||
"essential": "Essentiell",
|
||
"analytics": "Analytics",
|
||
"chat": "Chatbot",
|
||
"alwaysOn": "Immer aktiv",
|
||
"acceptAll": "Alles akzeptieren",
|
||
"acceptSelected": "Auswahl akzeptieren",
|
||
"rejectAll": "Alles ablehnen",
|
||
"hide": "Ausblenden"
|
||
},
|
||
"home": {
|
||
"hero": {
|
||
"badge": "Student & Self-Hoster",
|
||
"line1": "Building",
|
||
"line2": "Stuff.",
|
||
"features": {
|
||
"f1": "Next.js & Flutter",
|
||
"f2": "Docker Swarm & CI/CD",
|
||
"f3": "Self-Hosted Infrastruktur"
|
||
},
|
||
"description": "Ich bin Dennis Konkol, Informatik-Student und Webentwickler aus Osnabrück. Ich entwickle Fullstack-Apps mit Next.js und Flutter und betreibe meine eigene Infrastruktur mit Docker und CI/CD.",
|
||
"ctaWork": "Meine Projekte",
|
||
"ctaContact": "Kontakt"
|
||
},
|
||
"about": {
|
||
"title": "Hinter den Kulissen",
|
||
"p1": "Schon seit ich meinen ersten eigenen Server aufgesetzt habe, lässt mich das Thema Infrastruktur nicht mehr los. Als Student in Osnabrück verbringe ich meine Zeit am liebsten damit, moderne Web-Apps mit Next.js zu bauen oder mobile Lösungen mit Flutter zu entwickeln.",
|
||
"p2": "Aber für mich hört es nicht beim Code auf: Ich liebe es, meine eigenen Docker-Cluster zu managen, CI/CD-Pipelines zu optimieren und sicherzustellen, dass alles stabil und sicher läuft. DevOps ist für mich kein Job-Titel, sondern eine Lebenseinstellung.",
|
||
"p3": "Wenn die Server einmal ohne mich klarkommen, findet man mich beim Laufen durch Osnabrück, beim Gaming oder beim Experimentieren mit neuen Automationen in n8n.",
|
||
"funFactTitle": "Hardcore analog",
|
||
"funFactBody": "Trotz Cloud und Automatisierung: Meine wichtigsten Pläne entstehen immer noch mit Füller auf Papier. Das ist mein Anker im digitalen Chaos.",
|
||
"techStackTitle": "Mein Tech Stack",
|
||
"hobbiesTitle": "Wenn ich nicht code",
|
||
"techStack": {
|
||
"categories": {
|
||
"frontendMobile": "Frontend & Mobile",
|
||
"backendDevops": "Backend & DevOps",
|
||
"toolsAutomation": "Tools & Automation",
|
||
"securityAdmin": "Security & Admin"
|
||
},
|
||
"items": {
|
||
"selfHostedServices": "Self-hosted Services"
|
||
}
|
||
},
|
||
"hobbies": {
|
||
"selfHosting": "Self-Hosting & DevOps",
|
||
"gaming": "Gaming",
|
||
"gameServers": "Game-Server einrichten",
|
||
"jogging": "Joggen um den Kopf freizubekommen und aktiv bleiben"
|
||
},
|
||
"currentlyReading": {
|
||
"title": "Aktuell am Lesen",
|
||
"progress": "Fortschritt"
|
||
},
|
||
"readBooks": {
|
||
"title": "Gelesene Bücher",
|
||
"finishedAt": "Beendet am",
|
||
"showMore": "{count} weitere anzeigen",
|
||
"showLess": "Weniger anzeigen",
|
||
"readMore": "Weiterlesen",
|
||
"collapseReview": "Weniger anzeigen",
|
||
"empty": "In Hardcover fertig gelesene Bücher erscheinen hier automatisch."
|
||
},
|
||
"activity": {
|
||
"idleStatus": "System im Leerlauf / Geist aktiv",
|
||
"codingNow": "Gerade am Coden",
|
||
"gaming": "Am Zocken",
|
||
"listening": "Hört gerade",
|
||
"inGame": "Im Spiel"
|
||
}
|
||
},
|
||
"projects": {
|
||
"title": "Ausgewählte Arbeiten",
|
||
"subtitle": "Projekte, die meine Grenzen erweitert haben.",
|
||
"featured": "Featured",
|
||
"viewAll": "Archiv ansehen",
|
||
"noProjects": "Noch keine Projekte."
|
||
},
|
||
"contact": {
|
||
"title": "Kontakt",
|
||
"subtitle": "Du willst zusammenarbeiten oder hast Fragen zu meinen Projekten? Schreib mir gerne!",
|
||
"getInTouch": "Melde dich",
|
||
"getInTouchBody": "Ich bin immer offen für neue Chancen, spannende Projekte oder einfach einen Tech-Talk.",
|
||
"info": {
|
||
"email": "E-Mail",
|
||
"location": "Ort",
|
||
"locationValue": "Osnabrück, Deutschland"
|
||
},
|
||
"form": {
|
||
"title": "Nachricht senden",
|
||
"sending": "Sende Nachricht…",
|
||
"send": "Nachricht senden",
|
||
"labels": {
|
||
"name": "Name",
|
||
"email": "E-Mail",
|
||
"subject": "Betreff",
|
||
"message": "Nachricht",
|
||
"requiredMarker": "*"
|
||
},
|
||
"placeholders": {
|
||
"name": "Dein Name",
|
||
"email": "dein@email.de",
|
||
"subject": "Worum geht’s?",
|
||
"message": "Erzähl mir mehr über dein Projekt oder deine Frage…"
|
||
},
|
||
"errors": {
|
||
"nameRequired": "Name ist erforderlich",
|
||
"nameMin": "Name muss mindestens 2 Zeichen haben",
|
||
"emailRequired": "E-Mail ist erforderlich",
|
||
"emailInvalid": "Bitte eine gültige E-Mail-Adresse eingeben",
|
||
"subjectRequired": "Betreff ist erforderlich",
|
||
"subjectMin": "Betreff muss mindestens 3 Zeichen haben",
|
||
"messageRequired": "Nachricht ist erforderlich",
|
||
"messageMin": "Nachricht muss mindestens 10 Zeichen haben"
|
||
},
|
||
"characters": "{count} Zeichen"
|
||
}
|
||
}
|
||
},
|
||
"projects": {
|
||
"shared": {
|
||
"featured": "Hervorgehoben"
|
||
},
|
||
"list": {
|
||
"title": "Meine Projekte",
|
||
"intro": "Stöbere durch mein Portfolio – von Web-Anwendungen bis Mobile Apps. Jedes Projekt zeigt unterschiedliche Skills und Technologien.",
|
||
"searchPlaceholder": "Projekte durchsuchen...",
|
||
"all": "Alle",
|
||
"noResults": "Keine Projekte passen zu deinen Filtern.",
|
||
"clearFilters": "Filter zurücksetzen"
|
||
},
|
||
"detail": {
|
||
"links": "Projektlinks",
|
||
"liveDemo": "Live-Demo",
|
||
"liveNotAvailable": "Keine Live-Demo verfügbar",
|
||
"viewSource": "Quellcode ansehen",
|
||
"techStack": "Tech-Stack"
|
||
}
|
||
},
|
||
"footer": {
|
||
"role": "Software Engineer",
|
||
"madeIn": "Made in Germany",
|
||
"legalNotice": "Impressum",
|
||
"privacyPolicy": "Datenschutz",
|
||
"privacySettings": "Datenschutz-Einstellungen",
|
||
"privacySettingsTitle": "Datenschutz-Banner wieder anzeigen",
|
||
"builtWith": "Built with",
|
||
"aiDisclaimer": "Einige Inhalte dieser Seite können KI-generiert sein.",
|
||
"backToTop": "Nach oben",
|
||
"systemsOnline": "Systeme online"
|
||
},
|
||
"notFound": {
|
||
"title": "Seite nicht gefunden",
|
||
"description": "Der gesuchte Inhalt wurde verschoben, gelöscht oder hat nie existiert.",
|
||
"returnHome": "Zurück zur Startseite",
|
||
"goBack": "Zurück",
|
||
"exploreWork": "Arbeiten entdecken",
|
||
"exploreWorkDesc": "Vielleicht findest du, was du suchst, in meinem Projektarchiv?",
|
||
"viewProjects": "Projekte ansehen",
|
||
"errorReport": "Fehlerbericht"
|
||
},
|
||
"books": {
|
||
"title": "Bibliothek",
|
||
"subtitle": "Bücher, die meine Denkweise verändert und mein Wissen erweitert haben.",
|
||
"backHome": "Zurück",
|
||
"empty": "Noch keine Bücher."
|
||
},
|
||
"about": {
|
||
"status": "Status",
|
||
"aiAssistant": "KI-Assistent",
|
||
"library": "Bibliothek",
|
||
"viewAll": "Alle ansehen",
|
||
"myGear": "Mein Gear",
|
||
"gearMain": "Main",
|
||
"gearPC": "PC",
|
||
"gearServer": "Server",
|
||
"gearOS": "OS",
|
||
"curiosity": "Neugier über die Softwareentwicklung hinaus.",
|
||
"connect": "Verbinden",
|
||
"email": "E-Mail",
|
||
"code": "Code",
|
||
"professional": "Beruflich"
|
||
}
|
||
}
|