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:
@@ -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">
|
||||
© {new Date().getFullYear()} Sase.tr. Tüm hakları saklıdır.
|
||||
© {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">
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user