feat(i18n): centralize more UI texts in messages

Move hardcoded labels/strings in About, Projects, Contact form, Footer and Consent banner into next-intl message files (en/de) so content is maintained in one place.

Co-authored-by: dennis <dennis@konkol.net>
This commit is contained in:
Cursor Agent
2026-01-15 10:03:32 +00:00
parent faf41a511b
commit a617f6eb92
7 changed files with 200 additions and 56 deletions

View File

@@ -57,32 +57,32 @@ const About = () => {
const techStack = [
{
category: "Frontend & Mobile",
category: t("techStack.categories.frontendMobile"),
icon: Globe,
items: ["Next.js", "Tailwind CSS", "Flutter"],
},
{
category: "Backend & DevOps",
category: t("techStack.categories.backendDevops"),
icon: Server,
items: ["Docker Swarm", "Traefik", "Nginx Proxy Manager", "Redis"],
},
{
category: "Tools & Automation",
category: t("techStack.categories.toolsAutomation"),
icon: Wrench,
items: ["Git", "CI/CD", "n8n", "Self-hosted Services"],
items: ["Git", "CI/CD", "n8n", t("techStack.items.selfHostedServices")],
},
{
category: "Security & Admin",
category: t("techStack.categories.securityAdmin"),
icon: Shield,
items: ["CrowdSec", "Suricata", "Mailcow"],
},
];
const hobbies: Array<{ icon: typeof Code; text: string }> = [
{ icon: Code, text: "Self-Hosting & DevOps" },
{ icon: Gamepad2, text: "Gaming" },
{ icon: Server, text: "Setting up Game Servers" },
{ icon: Activity, text: "Jogging to clear my mind and stay active" },
{ icon: Code, text: t("hobbies.selfHosting") },
{ icon: Gamepad2, text: t("hobbies.gaming") },
{ icon: Server, text: t("hobbies.gameServers") },
{ icon: Activity, text: t("hobbies.jogging") },
];
return (
@@ -151,7 +151,7 @@ const About = () => {
variants={fadeInUp}
className="text-2xl font-bold text-stone-900 mb-6"
>
My Tech Stack
{t("techStackTitle")}
</motion.h3>
<div className="grid grid-cols-1 gap-4">
{techStack.map((stack, idx) => (
@@ -209,7 +209,7 @@ const About = () => {
variants={fadeInUp}
className="text-xl font-bold text-stone-900 mb-4"
>
When I&apos;m Not Coding
{t("hobbiesTitle")}
</motion.h3>
<div className="space-y-3">
{hobbies.map((hobby, idx) => (