9e6ae866d0
- AI chat moves into a window/sheet, opened from a new speech-bubble card on the desk; it now respects the chatbot consent and asks before sending anything to n8n (previously it ignored the consent) - Contact as red poster section with big mail address and the form on a paper card; validation errors are finally shown inline (aria-invalid, role=alert) - Footer as ink strip with dk0 wordmark, legal links and a button to reopen the privacy settings - "About me" in the header opens the about window on the home page - Remove the old About section and its parts (BentoChat, ActivityFeed, CurrentlyReading, ReadBooks), the unused ChatWidget, Projects and BentoGrid, their tests, wrappers, loaders, types and texts - scripts/directus-cleanup-redesign.mjs: dry run by default, --apply archives hobbies, tech stack categories and old content pages and deletes four unused message overrides after a full JSON backup; run only after the redesign is live on production Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
241 lines
8.8 KiB
JSON
241 lines
8.8 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": {
|
||
"kicker": "Dennis Konkol — Osnabrück",
|
||
"claim": "Ich hoste mein halbes Leben selbst. Den Rest programmiere ich.",
|
||
"intro": "IT-Admin in Osnabrück und Masterstudent. Ab Februar 2027 kümmere ich mich hauptberuflich um Microsoft 365, bis dahin um meine Masterarbeit.",
|
||
"countdown": "{days, plural, one {Noch # Tag.} other {Noch # Tage.}}",
|
||
"ctaWork": "Projekte ansehen",
|
||
"ctaContact": "Schreib mir"
|
||
},
|
||
"tisch": {
|
||
"title": "Der Tisch.",
|
||
"allProjects": "Alle Projekte",
|
||
"hintBoard": "Alles hier lässt sich anfassen. Werfen, stapeln, antippen für Details.",
|
||
"hintDeck": "Wisch die Karten zur Seite, tipp für Details.",
|
||
"tidy": "Aufräumen",
|
||
"mess": "Durcheinander",
|
||
"flip": "antippen für Details",
|
||
"details": "Zum Projekt",
|
||
"prev": "Vorherige Karte",
|
||
"next": "Nächste Karte",
|
||
"ticketTitle": "Masterarbeit · Abgabe 15.02.2027",
|
||
"ticketDays": "Tage bis zur Abgabe",
|
||
"ticketJob": "ab 02/2027 fest als M365-Administrator",
|
||
"ticketStub": "Jetzt",
|
||
"serverTitle": "Was bei mir läuft",
|
||
"servers": {
|
||
"ingress": {
|
||
"name": "netcup · Eingang",
|
||
"detail": "Traefik, Dokploy, diese Seite"
|
||
},
|
||
"mail": {
|
||
"name": "IONOS · Post und Fotos",
|
||
"detail": "mailcow, Immich"
|
||
},
|
||
"home": {
|
||
"name": "Zuhause · Raspberry Pi",
|
||
"detail": "Home Assistant, Paperless"
|
||
}
|
||
},
|
||
"serverNote": "Gesichert mit CrowdSec, tägliche Backups mit restic.",
|
||
"bookLabel": "Lese gerade",
|
||
"bookFallback": "Zur Bibliothek",
|
||
"photoCaption": "Das bin ich.",
|
||
"chatCard": "Frag mich etwas.",
|
||
"chatCardHint": "KI-Chat öffnen",
|
||
"sticker": "Läuft auf eigenen Servern."
|
||
},
|
||
"windows": {
|
||
"close": "Schließen",
|
||
"minimize": "Ablegen",
|
||
"openWindows": "Offene Fenster",
|
||
"projectPage": "Projektseite",
|
||
"source": "Quellcode",
|
||
"live": "Live ansehen",
|
||
"stack": "Technik",
|
||
"year": "Jahr",
|
||
"now": {
|
||
"title": "jetzt.txt · Stand Oktober 2026",
|
||
"days": "Tage bis zur Abgabe der Masterarbeit",
|
||
"study": {
|
||
"label": "Studium",
|
||
"text": "Federated Reinforcement Learning für einen Logistik-Hub, Abgabe Mitte Februar 2027"
|
||
},
|
||
"work": {
|
||
"label": "Arbeit",
|
||
"text": "IT bei einem Unternehmen in Osnabrück, ab Februar 2027 fest als Microsoft-365-Administrator"
|
||
},
|
||
"side": {
|
||
"label": "Nebenher",
|
||
"text": "nightly, eine App für Gedanken zwischen 2 und 5 Uhr nachts"
|
||
}
|
||
},
|
||
"server": {
|
||
"title": "server · alle grün",
|
||
"headline": "Drei Rechner, ein VPN."
|
||
},
|
||
"read": {
|
||
"title": "lesen · aus Hardcover",
|
||
"progress": "gelesen",
|
||
"empty": "Gerade liegt kein Buch auf dem Nachttisch.",
|
||
"library": "Zur Bibliothek"
|
||
},
|
||
"about": {
|
||
"title": "über mich",
|
||
"p1": "Aufgewachsen bin ich in Lingen, inzwischen wohne ich in Osnabrück. Angefangen hat alles mit einem Raspberry Pi und der Frage, ob ich meine Fotos nicht selbst speichern kann. Daraus sind drei Server geworden.",
|
||
"p2": "Wenn ich nicht am Rechner sitze, bin ich dienstags bei Body Attack, im Winter auf der Piste oder mit Freunden bei einem Brettspiel.",
|
||
"facts": {
|
||
"laptop": {
|
||
"label": "Arbeitsrechner",
|
||
"value": "MacBook Pro M4 Pro"
|
||
},
|
||
"pc": {
|
||
"label": "Zum Spielen",
|
||
"value": "PC mit RTX 3080"
|
||
},
|
||
"study": {
|
||
"label": "Studium",
|
||
"value": "Master Informatik"
|
||
},
|
||
"languages": {
|
||
"label": "Sprachen",
|
||
"value": "Deutsch, Englisch"
|
||
}
|
||
}
|
||
},
|
||
"chat": {
|
||
"title": "frag mich · KI",
|
||
"welcome": "Hi! Frag mich etwas über Dennis, seine Projekte oder sein Setup.",
|
||
"consent": "Der Chat läuft über einen KI-Dienst in meinem n8n. Deine Nachrichten werden dafür verarbeitet und kurz gespeichert. Erst wenn du zustimmst, wird etwas gesendet.",
|
||
"allow": "Chat erlauben",
|
||
"placeholder": "Deine Frage …",
|
||
"send": "Senden",
|
||
"error": "Gerade keine Verbindung. Versuch es gleich noch mal.",
|
||
"thinking": "Antwort wird geschrieben",
|
||
"note": "Antworten kommen von einer KI und können danebenliegen."
|
||
},
|
||
"contact": {
|
||
"title": "kontakt",
|
||
"body": "Für Projekte, Fragen zu meinem Setup oder einfach so. Ich antworte normalerweise innerhalb von ein, zwei Tagen.",
|
||
"copy": "Adresse kopieren",
|
||
"copied": "Kopiert",
|
||
"form": "Zum Formular"
|
||
}
|
||
},
|
||
"contact": {
|
||
"title": "Schreib mir.",
|
||
"subtitle": "Für Projekte, Fragen zu meinem Setup oder einfach so. Ich antworte normalerweise innerhalb von ein, zwei Tagen.",
|
||
"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": "IT & Self-Hosting",
|
||
"madeIn": "selbst gehostet in Deutschland",
|
||
"legalNotice": "Impressum",
|
||
"privacyPolicy": "Datenschutz",
|
||
"privacySettings": "Datenschutz-Einstellungen",
|
||
"privacySettingsTitle": "Datenschutz-Banner wieder anzeigen",
|
||
"builtWith": "Gebaut mit Next.js und Directus, läuft auf meinen eigenen Servern.",
|
||
"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."
|
||
}
|
||
}
|