This commit is contained in:
2026-07-10 21:52:36 +02:00
parent bb528d6ef9
commit 671c1a1559
28 changed files with 6396 additions and 5561 deletions

110
src/app/de/[slug]/page.tsx Normal file
View File

@@ -0,0 +1,110 @@
import type { Metadata } from 'next';
import { notFound } from 'next/navigation';
import { UseCasePageTemplate } from '@/components/marketing/UseCasePageTemplate';
import {
getUseCasePageDe,
useCasePagesDe,
useCaseTemplateLabelsDe,
} from '@/lib/growth-pages-de';
import { buildLanguageAlternates, absoluteUrl } from '@/lib/i18n';
export const dynamicParams = false;
export function generateStaticParams() {
return Object.keys(useCasePagesDe).map((slug) => ({ slug }));
}
export function generateMetadata({ params }: { params: { slug: string } }): Metadata {
const page = getUseCasePageDe(params.slug);
if (!page) {
return {};
}
const alternates = buildLanguageAlternates({
en: `/use-cases/${page.enSlug}`,
de: page.href,
});
return {
title: {
absolute: `${page.title} | QR Master`,
},
description: page.metaDescription,
alternates: {
// The German page canonicalizes to itself; hreflang links the pair.
canonical: absoluteUrl(page.href),
languages: alternates.languages,
},
openGraph: {
title: `${page.title} | QR Master`,
description: page.metaDescription,
url: absoluteUrl(page.href),
type: 'website',
locale: 'de_DE',
images: ['/og-image.png'],
},
twitter: {
title: `${page.title} | QR Master`,
description: page.metaDescription,
},
};
}
export default function UseCaseDetailPageDe({
params,
}: {
params: { slug: string };
}) {
const page = getUseCasePageDe(params.slug);
if (!page) {
notFound();
}
return (
<UseCasePageTemplate
title={page.title}
description={page.metaDescription}
eyebrow={page.eyebrow}
intro={page.intro}
pageType="use_case"
cluster={page.cluster}
useCase={page.slug}
breadcrumbs={[
{ name: 'Startseite', url: '/qr-code-erstellen' },
{ name: page.title, url: page.href },
]}
answer={page.answer}
whenToUse={page.whenToUse}
comparisonItems={page.comparisonItems}
howToSteps={page.howToSteps}
primaryCta={{
// German visitors should convert on the German generator page, not
// the English commercial parent.
href: '/qr-code-erstellen',
label: page.ctaLabel,
}}
secondaryCta={{
href: page.parentHref,
label: `Mehr erfahren: ${page.parentTitle}`,
}}
workflowTitle={page.workflowTitle}
workflowIntro={page.workflowIntro}
workflowCards={page.workflowCards}
checklistTitle={page.checklistTitle}
checklist={page.checklist}
supportLinks={page.supportLinks}
faq={page.faq}
heroImage={page.heroImage}
heroImageAlt={page.heroImageAlt}
authoritySignals={page.authoritySignals}
directAnswer={page.directAnswer}
labels={{
...useCaseTemplateLabelsDe,
faqTitle: `FAQ: ${page.title}`,
}}
/>
);
}