Files
portfolio/messages/en.json
T
denshooter 08e856120b feat: plakat redesign phase 3 (windows on desktop, sheets on mobile)
- Tapping an object on the desk opens a window (desktop) or a bottom sheet
  (mobile) instead of flipping: projects, now, servers, reading, about, contact
- Desktop windows in poster style (2px ink rule, hard offset shadow), open
  from the tapped object, thrown by the title bar with momentum and elastic
  viewport edges, stack by focus, minimize into a tray, Escape closes the top
  window, focus moves to close and returns to the trigger
- Mobile sheets via vaul 1.1.2: drag down to dismiss, overlay, focus trap
- Project window shows live/source links from Directus when present
- Hero "Write me" opens the contact window; still a plain #contact link
  without JavaScript
- Shared current-book loader for desk, deck and reading window
- Texts in de/en, i18n key check extended

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 18:56:48 +02:00

298 lines
10 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": "Home",
"about": "About",
"projects": "Projects",
"contact": "Contact"
},
"common": {
"back": "Back",
"backToHome": "Back to Home",
"backToProjects": "Back to Projects",
"viewAllProjects": "View All Projects",
"loading": "Loading..."
},
"consent": {
"title": "Privacy settings",
"description": "We use optional services (analytics and chat) to improve the site. You can change your choice anytime.",
"essential": "Essential",
"analytics": "Analytics",
"chat": "Chatbot",
"alwaysOn": "Always on",
"acceptAll": "Accept all",
"acceptSelected": "Accept selected",
"rejectAll": "Reject all",
"hide": "Hide"
},
"home": {
"hero": {
"kicker": "Dennis Konkol — Osnabrück, Germany",
"claim": "I self-host half my life. The rest I code.",
"intro": "IT admin in Osnabrück and master's student. From February 2027 I look after Microsoft 365 full-time, until then my master's thesis.",
"countdown": "{days, plural, one {# day to go.} other {# days to go.}}",
"ctaWork": "See projects",
"ctaContact": "Write me"
},
"tisch": {
"title": "The desk.",
"allProjects": "All projects",
"hintBoard": "Everything here can be touched. Throw it, stack it, tap for details.",
"hintDeck": "Swipe the cards aside, tap for details.",
"tidy": "Tidy up",
"mess": "Mess it up",
"flip": "tap for details",
"details": "Open project",
"prev": "Previous card",
"next": "Next card",
"ticketTitle": "Master's thesis · due 15 Feb 2027",
"ticketDays": "days until submission",
"ticketJob": "from 02/2027: M365 administrator",
"ticketStub": "Now",
"serverTitle": "What I run",
"servers": {
"ingress": {
"name": "netcup · front door",
"detail": "Traefik, Dokploy, this site"
},
"mail": {
"name": "IONOS · mail and photos",
"detail": "mailcow, Immich"
},
"home": {
"name": "Home · Raspberry Pi",
"detail": "Home Assistant, Paperless"
}
},
"serverNote": "Guarded by CrowdSec, daily backups with restic.",
"bookLabel": "Reading now",
"bookFallback": "To the library",
"photoCaption": "That's me.",
"sticker": "Runs on my own servers."
},
"windows": {
"close": "Close",
"minimize": "Minimize",
"openWindows": "Open windows",
"projectPage": "Project page",
"source": "Source",
"live": "See it live",
"stack": "Stack",
"year": "Year",
"now": {
"title": "now.txt · October 2026",
"days": "days until my master's thesis is due",
"study": {
"label": "Study",
"text": "Federated reinforcement learning for a logistics hub, due mid-February 2027"
},
"work": {
"label": "Work",
"text": "IT at a company in Osnabrück, from February 2027 full-time as Microsoft 365 administrator"
},
"side": {
"label": "On the side",
"text": "nightly, an app for thoughts between 2 and 5 a.m."
}
},
"server": {
"title": "servers · all green",
"headline": "Three machines, one VPN."
},
"read": {
"title": "reading · from Hardcover",
"progress": "read",
"empty": "No book on the nightstand right now.",
"library": "To the library"
},
"about": {
"title": "about me",
"p1": "I grew up in Lingen and now live in Osnabrück. It all started with a Raspberry Pi and the question whether I could store my photos myself. That turned into three servers.",
"p2": "When I'm not at the computer, I'm at Body Attack on Tuesdays, on the slopes in winter, or playing board games with friends.",
"facts": {
"laptop": {
"label": "Work machine",
"value": "MacBook Pro M4 Pro"
},
"pc": {
"label": "For games",
"value": "PC with RTX 3080"
},
"study": {
"label": "Study",
"value": "Master's in computer science"
},
"languages": {
"label": "Languages",
"value": "German, English"
}
}
},
"contact": {
"title": "contact",
"body": "For projects, questions about my setup or just because. I usually reply within a day or two.",
"copy": "Copy address",
"copied": "Copied",
"form": "To the form"
}
},
"about": {
"title": "Behind the Code",
"p1": "Ever since I set up my first home server, I've been hooked on infrastructure. Currently studying in Osnabrück, I split my time between developing modern web apps with Next.js and building mobile experiences with Flutter.",
"p2": "For me, it doesn't stop at the code. I genuinely enjoy managing my own Docker clusters, optimizing CI/CD pipelines, and making sure everything is stable and secure. DevOps isn't just a part of my job – it's how I think about building things.",
"p3": "When the servers are running smoothly, you'll find me jogging through the city, gaming, or tinkering with new automation workflows in n8n.",
"funFactTitle": "Hardcore Analog",
"funFactBody": "Despite my love for automation and the cloud, my most important ideas are still born on paper with a fountain pen. It's my way of staying grounded.",
"techStackTitle": "My Tech Stack",
"hobbiesTitle": "When I'm Not Coding",
"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": "Setting up game servers",
"jogging": "Jogging to clear my mind and stay active"
},
"currentlyReading": {
"title": "Currently Reading",
"progress": "Progress"
},
"readBooks": {
"title": "Read",
"finishedAt": "Finished",
"showMore": "{count} more",
"showLess": "Show less",
"readMore": "Read more",
"collapseReview": "Show less",
"empty": "Books finished in Hardcover will appear here automatically."
},
"activity": {
"idleStatus": "System Idle / Mind Active",
"codingNow": "Coding Now",
"gaming": "Gaming",
"listening": "Listening",
"inGame": "In Game"
}
},
"projects": {
"title": "Selected Work",
"subtitle": "Projects that pushed my boundaries.",
"featured": "Featured",
"viewAll": "View Archive",
"noProjects": "No projects yet."
},
"contact": {
"title": "Contact Me",
"subtitle": "Interested in working together or have questions about my projects? Feel free to reach out!",
"getInTouch": "Get In Touch",
"getInTouchBody": "I'm always available to discuss new opportunities, interesting projects, or simply chat about technology and innovation.",
"info": {
"email": "Email",
"location": "Location",
"locationValue": "Osnabrück, Germany"
},
"form": {
"title": "Send Message",
"sending": "Sending message…",
"send": "Send Message",
"labels": {
"name": "Name",
"email": "Email",
"subject": "Subject",
"message": "Message",
"requiredMarker": "*"
},
"placeholders": {
"name": "Your name",
"email": "your@email.com",
"subject": "What's this about?",
"message": "Tell me more about your project or question…"
},
"errors": {
"nameRequired": "Name is required",
"nameMin": "Name must be at least 2 characters",
"emailRequired": "Email is required",
"emailInvalid": "Please enter a valid email address",
"subjectRequired": "Subject is required",
"subjectMin": "Subject must be at least 3 characters",
"messageRequired": "Message is required",
"messageMin": "Message must be at least 10 characters"
},
"characters": "{count} characters"
}
}
},
"projects": {
"shared": {
"featured": "Featured"
},
"list": {
"title": "My Projects",
"intro": "Explore my portfolio of projects, from web applications to mobile apps. Each project showcases different skills and technologies.",
"searchPlaceholder": "Search projects...",
"all": "All",
"noResults": "No projects found matching your criteria.",
"clearFilters": "Clear filters"
},
"detail": {
"links": "Project Links",
"liveDemo": "Live Demo",
"liveNotAvailable": "Live demo not available",
"viewSource": "View Source",
"techStack": "Tech Stack"
}
},
"footer": {
"role": "Software Engineer",
"madeIn": "Made in Germany",
"legalNotice": "Legal notice",
"privacyPolicy": "Privacy policy",
"privacySettings": "Privacy settings",
"privacySettingsTitle": "Show privacy settings banner again",
"builtWith": "Built with",
"aiDisclaimer": "Some content on this site may be AI-assisted.",
"backToTop": "Back to top",
"systemsOnline": "Systems Online"
},
"notFound": {
"title": "Page not Found",
"description": "The content you are looking for has been moved, deleted, or never existed.",
"returnHome": "Return Home",
"goBack": "Go Back",
"exploreWork": "Explore Work",
"exploreWorkDesc": "Maybe what you need is in my project archive?",
"viewProjects": "View Projects",
"errorReport": "Error Report"
},
"books": {
"title": "Library",
"subtitle": "Books that shaped my mindset and expanded my horizons.",
"backHome": "Back Home",
"empty": "No books yet."
},
"about": {
"status": "Status",
"aiAssistant": "AI Assistant",
"library": "Library",
"viewAll": "View All",
"myGear": "My Gear",
"gearMain": "Main",
"gearPC": "PC",
"gearServer": "Server",
"gearOS": "OS",
"curiosity": "Curiosity beyond software engineering.",
"connect": "Connect",
"email": "Email",
"code": "Code",
"professional": "Professional"
}
}