Files
portfolio/messages/de.json
T
denshooter 31560a712f
CI / CD / test-build (push) Failing after 5m43s
CI / CD / deploy-dev (push) Has been skipped
CI / CD / deploy-production (push) Has been skipped
feat: comprehensive UI/a11y/i18n fixes and pre-push quality test
- 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
2026-05-14 15:42:52 +02:00

201 lines
7.5 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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 gehts?",
"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"
}
}