i18n(web): translate SiteFooter strings

Move all hard-coded Turkish footer copy (column titles, links, tagline,
copyright, status) into a footer.* message block in tr/en and resolve
them via t(), so the footer follows the selected locale.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-26 20:51:22 +03:00
parent b71b5d1de8
commit 6cefd2d560
3 changed files with 55 additions and 18 deletions

View File

@@ -1,7 +1,10 @@
import { useTranslation } from "@/lib/i18n";
import { Separator } from "@sase/ui";
import { Link } from "@tanstack/react-router";
export function SiteFooter() {
const { t } = useTranslation();
return (
<footer className="bg-background px-4 sm:px-6">
<div className="mx-auto max-w-7xl">
@@ -9,34 +12,32 @@ export function SiteFooter() {
{/* Brand */}
<div className="col-span-2 sm:col-span-1">
<span className="text-lg font-bold">Sase.tr</span>
<p className="mt-3 text-sm text-muted-foreground">
Şase çözme & orijinal yedek parça kataloğu platformu.
</p>
<p className="mt-3 text-sm text-muted-foreground">{t("footer.tagline")}</p>
<p className="mt-2 text-sm text-muted-foreground/70">info@sase.tr</p>
</div>
{/* Product */}
<div>
<h4 className="text-sm font-semibold text-muted-foreground">Ürün</h4>
<h4 className="text-sm font-semibold text-muted-foreground">{t("footer.product")}</h4>
<ul className="mt-3 space-y-2 text-sm text-muted-foreground">
<li>
<a href="#features" className="transition hover:text-foreground">
Şase Çözme
{t("footer.vinDecode")}
</a>
</li>
<li>
<a href="#features" className="transition hover:text-foreground">
Parça Kataloğu
{t("footer.partsCatalog")}
</a>
</li>
<li>
<a href="#features" className="transition hover:text-foreground">
İnteraktif Şema
{t("footer.interactiveSchema")}
</a>
</li>
<li>
<Link to="/pricing" className="transition hover:text-foreground">
Fiyatlar
{t("footer.pricing")}
</Link>
</li>
</ul>
@@ -44,21 +45,21 @@ export function SiteFooter() {
{/* Company */}
<div>
<h4 className="text-sm font-semibold text-muted-foreground">Şirket</h4>
<h4 className="text-sm font-semibold text-muted-foreground">{t("footer.company")}</h4>
<ul className="mt-3 space-y-2 text-sm text-muted-foreground">
<li>
<Link to="/about" className="transition hover:text-foreground">
Hakkımızda
{t("footer.about")}
</Link>
</li>
<li>
<Link to="/blog" className="transition hover:text-foreground">
Blog
{t("footer.blog")}
</Link>
</li>
<li>
<Link to="/contact" className="transition hover:text-foreground">
İletişim
{t("footer.contact")}
</Link>
</li>
</ul>
@@ -66,21 +67,21 @@ export function SiteFooter() {
{/* Legal */}
<div>
<h4 className="text-sm font-semibold text-muted-foreground">Yasal</h4>
<h4 className="text-sm font-semibold text-muted-foreground">{t("footer.legal")}</h4>
<ul className="mt-3 space-y-2 text-sm text-muted-foreground">
<li>
<Link to="/privacy" className="transition hover:text-foreground">
Gizlilik Politikası
{t("footer.privacy")}
</Link>
</li>
<li>
<Link to="/terms" className="transition hover:text-foreground">
Kullanım Koşulları
{t("footer.terms")}
</Link>
</li>
<li>
<Link to="/kvkk" className="transition hover:text-foreground">
KVKK
{t("footer.kvkk")}
</Link>
</li>
</ul>
@@ -92,11 +93,11 @@ export function SiteFooter() {
<div className="flex flex-col items-center justify-between gap-4 py-6 sm:flex-row">
<div className="flex flex-col items-center gap-3 sm:flex-row">
<p className="text-sm text-muted-foreground/70">
&copy; {new Date().getFullYear()} Sase.tr. Tüm hakları saklıdır.
&copy; {new Date().getFullYear()} Sase.tr. {t("footer.rights")}
</p>
<div className="flex items-center gap-2 text-sm text-muted-foreground/70">
<span className="size-2 rounded-full bg-brand" />
Tüm servisler aktif
{t("footer.allServicesActive")}
</div>
</div>
<div className="flex items-center gap-4 text-muted-foreground/70">

View File

@@ -63,6 +63,24 @@
"expandSidebar": "Expand sidebar",
"toggleTheme": "Toggle theme"
},
"footer": {
"tagline": "VIN decoding & genuine spare-parts catalog platform.",
"product": "Product",
"company": "Company",
"legal": "Legal",
"vinDecode": "VIN Decoding",
"partsCatalog": "Parts Catalog",
"interactiveSchema": "Interactive Diagram",
"pricing": "Pricing",
"about": "About Us",
"blog": "Blog",
"contact": "Contact",
"privacy": "Privacy Policy",
"terms": "Terms of Use",
"kvkk": "KVKK",
"rights": "All rights reserved.",
"allServicesActive": "All services operational"
},
"catalog": {
"title": "Parts Catalog",
"brands": "Brands",

View File

@@ -63,6 +63,24 @@
"expandSidebar": "Menüyü genişlet",
"toggleTheme": "Tema değiştir"
},
"footer": {
"tagline": "Şase çözme & orijinal yedek parça kataloğu platformu.",
"product": "Ürün",
"company": "Şirket",
"legal": "Yasal",
"vinDecode": "Şase Çözme",
"partsCatalog": "Parça Kataloğu",
"interactiveSchema": "İnteraktif Şema",
"pricing": "Fiyatlar",
"about": "Hakkımızda",
"blog": "Blog",
"contact": "İletişim",
"privacy": "Gizlilik Politikası",
"terms": "Kullanım Koşulları",
"kvkk": "KVKK",
"rights": "Tüm hakları saklıdır.",
"allServicesActive": "Tüm servisler aktif"
},
"catalog": {
"title": "Parça Kataloğu",
"brands": "Markalar",