fix(landing): correct German copy and restore feature-card hover animation

Finishes the manual edits from Gitea #16: fixes capitalization on
"Jetzt starten" and grammar on the hero badge text, updates the
banned-page contact address to team@pawfeed.org, and adds the
missing `group` class so the feature-card icon's `group-hover:scale-105`
actually fires. Keeps the RelativeTime strings in their original
compact form ({count}m/h/d) since that format is documented as
intentional for tight UI spots (comment lists, notifications, ad cards).
This commit is contained in:
admin committed 2026-08-12 17:27:59 +02:00
1 parent 7395d83194
commit 6b79dfb570
3 files changed
+12 -12

No files matched your search

+5 -5
View File
@@ -70,7 +70,7 @@
"selectBreed": "Rasse auswählen (optional)",
"selectSpeciesFirst": "Wähle zuerst eine Tierart aus",
"noBreedsFound": "Keine Rassen gefunden.",
"bio": "Bio",
"bio": "Biografie",
"bioPlaceholder": "Erzähl uns von {petName}…",
"bioPlaceholderFallback": "Erzähl uns von deinem Tier…",
"adoptionStory": "Adoptionsgeschichte",
@@ -486,7 +486,7 @@
"verifiedStatus": "Dieses Tier ist verifiziert.",
"pendingStatus": "Dein Verifizierungsantrag wird noch geprüft.",
"rejectedPrefix": "Der letzte Antrag wurde abgelehnt: {reason}",
"criteriaHint": "Worauf wir achten: ein echtes, bekanntes Tier, bei dem eine Verwechslung plausibel wäre (Züchter, Tierheim, Medien-Tier), ein vollständiges Profil, ein sauberer Stand und eine etablierte, aktive Präsenz.",
"criteriaHint": "Worauf wir achten: ein echtes, bekanntes Tier, ein vollständiges Profil, ein sauberer Stand und eine etablierte, aktive Präsenz.",
"messagePlaceholder": "Warum sollte dieses Tier verifiziert werden?",
"requestButton": "Verifizierung beantragen",
"requestSubmitted": "Verifizierungsantrag eingereicht.",
@@ -539,10 +539,10 @@
},
"Landing": {
"tagline": "Wo Haustiere die Stars sind. Profile, Beiträge und Storys — gemacht für Hunde, Katzen und Vögel.",
"getStarted": "Jetzt loslegen",
"getStarted": "Jetzt starten",
"logIn": "Anmelden",
"previewAlt": "Der PawFeed-Feed mit Tierbeiträgen von Noctis und Bubi",
"featuresHeading": "Gebaut für das Tier, nicht den Menschen",
"featuresHeading": "Gebaut für dein Tier, nicht für den Menschen",
"feature1Title": "Nicht Menschen, sondern Tiere sind das Profil",
"feature1Body": "Jeder Hund, jede Katze, jeder Vogel bekommt eine eigene Identität — eigene Beiträge, Follower und eine eigene Story, getrennt vom Besitzer.",
"feature2Title": "Beiträge, Storys & Kurzvideos",
@@ -560,7 +560,7 @@
"navLogin": "Anmelden",
"navSignUp": "Registrieren",
"heroBadge1": "Neuer Beitrag von Bubi",
"heroBadge2": "24 Reaktionen",
"heroBadge2": "Likes, Follows, Reaktionen",
"heroBadge3": "Story ist aktiv",
"catchHeading": "Für jedes Tier, jeden Menschen dahinter",
"catchSubline": "PawFeed dreht das übliche Social Network um: dein Hund, deine Katze oder dein Vogel bekommt das Profil — du kümmerst dich einfach nur drum.",
+2 -2
View File
@@ -8,10 +8,10 @@ export default function BannedPage() {
Your account has been suspended due to a violation of our community
guidelines. If you believe this is an error, please contact us at{" "}
<a
href="mailto:support@pawfeed.org"
href="mailto:team@pawfeed.org"
className="underline underline-offset-2"
>
support@pawfeed.org
team@pawfeed.org
</a>
.
</p>
+5 -5
View File
@@ -142,7 +142,7 @@ export default async function RootPage() {
<div
className="float-badge absolute -left-6 top-10 hidden items-center gap-2 rounded-2xl bg-white px-3 py-2 shadow-xl sm:flex"
style={{ animationDelay: "0s" }}
style={{ animationDelay: "0.5s" }}
>
<Heart className="h-4 w-4 shrink-0 fill-orange-500 text-orange-500" aria-hidden="true" />
<span className="text-xs font-semibold text-foreground">{t("heroBadge2")}</span>
@@ -171,7 +171,7 @@ export default async function RootPage() {
{/* Catchphrase + feature grid */}
<section className="px-6 py-24 sm:px-10">
<div className="mx-auto max-w-5xl">
<ScrollReveal className="text-center">
<ScrollReveal className="text-center" delayMs={100}>
<h2 className="text-3xl font-bold tracking-tight text-foreground sm:text-4xl">
{t("catchHeading")}
</h2>
@@ -182,9 +182,9 @@ export default async function RootPage() {
<div className="mt-14 grid gap-6 sm:grid-cols-2 lg:grid-cols-4">
{features.map(({ icon: Icon, title, body }, index) => (
<ScrollReveal key={title} delayMs={index * 100}>
<div className="h-full rounded-2xl border border-border/60 bg-card p-6 transition-shadow hover:shadow-md">
<div className="flex h-11 w-11 items-center justify-center rounded-xl bg-orange-100 text-orange-600">
<ScrollReveal key={title} delayMs={200 + index * 100}>
<div className="group h-full rounded-2xl border border-border/60 bg-card p-6 transition-all duration-300 hover:-translate-y-1 hover:border-orange-500/30 hover:shadow-md">
<div className="flex h-11 w-11 items-center justify-center rounded-xl bg-orange-100 text-orange-600 transition-transform duration-300 group-hover:scale-105">
<Icon className="h-5.5 w-5.5" aria-hidden="true" />
</div>
<h3 className="mt-4 text-base font-semibold text-foreground">{title}</h3>