From ac7cd5160098c95a8afe88f60dbbbfdb9894445a Mon Sep 17 00:00:00 2001 From: "nabijonovdavronbek619@gmail.com" Date: Tue, 27 Jan 2026 20:44:21 +0500 Subject: [PATCH] translation --- components/layout/footer.tsx | 56 ++++--------------- components/layout/navbar.tsx | 53 ++++++++++-------- components/pages/about/aboutBanner.tsx | 14 +++-- components/pages/about/story.tsx | 34 +++++------ components/pages/about/whyChooseUs.tsx | 26 ++++----- components/pages/contact/contactHeader.tsx | 8 ++- components/pages/contact/form.tsx | 16 +++--- components/pages/contact/main.tsx | 12 ++-- components/pages/faq/answearQuestions.tsx | 37 ++++++++++-- components/pages/faq/faqBanner.tsx | 11 +++- components/pages/home/about.tsx | 53 ++++++++---------- components/pages/home/banner.tsx | 30 +++++----- components/pages/home/blog.tsx | 62 +++++++++++---------- components/pages/home/line.tsx | 4 +- components/pages/home/ourService.tsx | 37 ++++++------ components/pages/home/statistics.tsx | 11 ++-- components/pages/home/testimonal.tsx | 60 ++++++++++---------- components/pages/products/productBanner.tsx | 14 +++-- components/pages/services/serviceBanner.tsx | 14 +++-- components/pages/services/serviceFaq.tsx | 30 +++++++++- lib/demoData.ts | 1 + messages/en.json | 49 ++++++++-------- messages/ru.json | 49 ++++++++-------- messages/uz.json | 53 +++++++++--------- 24 files changed, 397 insertions(+), 337 deletions(-) diff --git a/components/layout/footer.tsx b/components/layout/footer.tsx index 5d00654..95fcb95 100644 --- a/components/layout/footer.tsx +++ b/components/layout/footer.tsx @@ -4,8 +4,10 @@ import React from "react"; import { useState } from "react"; import { Mail, Phone, MapPin } from "lucide-react"; +import { useTranslations } from "next-intl"; export function Footer() { + const t = useTranslations(); const [email, setEmail] = useState(""); const [subscribed, setSubscribed] = useState(false); @@ -75,8 +77,7 @@ export function Footer() { FIREFORCE

- They are seen as a beacon of hope, a figure who brings calm - amidst chaos and light in the darkest of moments. + {t("footer.description")}

@@ -86,12 +87,12 @@ export function Footer() { @@ -120,40 +113,13 @@ export function Footer() { {/* Support */}
-

SUPPORT

+

+ {t("footer.support.title")} +

diff --git a/components/layout/navbar.tsx b/components/layout/navbar.tsx index aec3cb3..e15b434 100644 --- a/components/layout/navbar.tsx +++ b/components/layout/navbar.tsx @@ -4,8 +4,10 @@ import Link from "next/link"; import { ChevronDown, Phone, Menu, X } from "lucide-react"; import Image from "next/image"; import LanguageSelectRadix from "../languageSwitcher"; +import { useTranslations } from "next-intl"; export function Navbar() { + const t = useTranslations(); const [isDropdownOpen, setIsDropdownOpen] = useState(false); const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const [scrolled, setScrolled] = useState(false); @@ -55,13 +57,13 @@ export function Navbar() { href="/" className="text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition" > - HOME + {t("navbar.home")} - ABOUT + {t("navbar.about")} {/* Pages Dropdown */} @@ -70,7 +72,7 @@ export function Navbar() { className="text-white text-sm h-full font-semibold hover:text-red-500 transition-colors flex items-center gap-1" > - PAGES + {t("navbar.pages")} - FAQ + {t("navbar.faq")} - Services + {t("navbar.services")} {/* - PRODUCTS + {t("navbar.products")} - CONTACT + {t("navbar.contact")}
@@ -132,7 +134,7 @@ export function Navbar() {
- Emergency Call! + {t("navbar.emergency")}
+123-456-7890 @@ -170,14 +172,21 @@ export function Navbar() { > {/* Mobile Menu Header */}
-
-
-
+ {/* Logo */} + +
+
+ logo image +
+ Ignum
- - FIREFORCE - -
+
)} @@ -240,14 +249,14 @@ export function Navbar() { className="text-white text-base font-semibold hover:text-red-500 transition py-2" onClick={() => setIsMobileMenuOpen(false)} > - PRODUCTS + {t("navbar.products")} setIsMobileMenuOpen(false)} > - CONTACT + {t("navbar.contact")}
diff --git a/components/pages/about/aboutBanner.tsx b/components/pages/about/aboutBanner.tsx index faf0bfc..609d3b7 100644 --- a/components/pages/about/aboutBanner.tsx +++ b/components/pages/about/aboutBanner.tsx @@ -1,6 +1,8 @@ import DotAnimatsiya from "@/components/dot/DotAnimatsiya"; +import { useTranslations } from "next-intl"; export function AboutBanner() { + const t = useTranslations(); return (
{/* Background Image */} @@ -24,17 +26,21 @@ export function AboutBanner() {
- +
+ + + {t("about.banner.title")} + +

- Fire Fighter
At The Ready + {t("about.banner.subtitle")}

- It emphasizes that these firefighters are there not just as public - servants but as a vital part of the community. + {t("about.banner.description")}
diff --git a/components/pages/about/story.tsx b/components/pages/about/story.tsx index 21197aa..e882220 100644 --- a/components/pages/about/story.tsx +++ b/components/pages/about/story.tsx @@ -1,6 +1,8 @@ +import { useTranslations } from "next-intl"; import Image from "next/image"; export function Story() { + const t = useTranslations(); return (
@@ -26,21 +28,11 @@ export function Story() { {/* Content */}

- OUR STORY + {t("about.story.title")}

-

- Our story is one of unwavering dedication, selflessness, and a{" "} - - deep commitment to the safety - - and well-being of our communities. -

-

- Aliquam lorem ante dapibus in viverra quis a tellus phasellus - viverra nulla ut metus varius laoreet quisque rutrum. -

+

{t("about.story.description")}

@@ -92,10 +83,11 @@ export function Story() { />
-

FIREFORCE VISION

+

+ {t("about.story.mission.title")} +

- Phasellus viverra nulla ut metus varius leo imperdiet laoreet. - Quisque rutrum aenean augue vulputate eleifend. + {t("about.story.mission.description")}

diff --git a/components/pages/about/whyChooseUs.tsx b/components/pages/about/whyChooseUs.tsx index 9c7a9d4..2c5baa8 100644 --- a/components/pages/about/whyChooseUs.tsx +++ b/components/pages/about/whyChooseUs.tsx @@ -3,13 +3,15 @@ import Image from "next/image"; import { Check } from "lucide-react"; import DotAnimatsiya from "@/components/dot/DotAnimatsiya"; +import { useTranslations } from "next-intl"; export function WhyChooseUs() { + const t = useTranslations(); const features = [ - { title: "Fast Response Team" }, - { title: "Experienced Firefighter" }, - { title: "Ready 24 Hours" }, - { title: "Fast Response Team" }, + { title: t("about.whyChoose.features.fastResponse") }, + { title: t("about.whyChoose.features.ready24") }, + { title: t("about.whyChoose.features.experienced") }, + { title: t("about.whyChoose.features.quality") }, ]; return ( @@ -22,23 +24,20 @@ export function WhyChooseUs() {
- WHY CHOOSE US + {t("about.whyChoose.title")}

- WE ARE BEST -
- FIREFIGHTER + {t("about.whyChoose.subtitle")}

{/* Description */}

- Aliquam lorem ante dapibus in viverra quis a tellus phasellus - viverra nulla ut metus varius laoreet quisque rutrum. + {t("about.whyChoose.description")}

{/* Features Grid */} @@ -58,7 +57,7 @@ export function WhyChooseUs() { {/* CTA Button */}
@@ -88,10 +87,7 @@ export function WhyChooseUs() { />

- BEST AWARD -

-

- FIREFIGHTER 2025 + {t("about.whyChoose.award")}

diff --git a/components/pages/contact/contactHeader.tsx b/components/pages/contact/contactHeader.tsx index f7aa0d3..e0f9f90 100644 --- a/components/pages/contact/contactHeader.tsx +++ b/components/pages/contact/contactHeader.tsx @@ -1,23 +1,25 @@ import DotAnimatsiya from "@/components/dot/DotAnimatsiya"; +import { useTranslations } from "next-intl"; import React from "react"; export default function ContactHeader() { + const t = useTranslations(); return (
- CONTACT US + {t("contact.banner.title")}

- GET IN TOUCH + {t("contact.banner.subtitle")}

- We'd love to hear from you. Please fill out this form. + {t("contact.banner.description")}

); diff --git a/components/pages/contact/form.tsx b/components/pages/contact/form.tsx index a7a910f..5ad961a 100644 --- a/components/pages/contact/form.tsx +++ b/components/pages/contact/form.tsx @@ -1,6 +1,7 @@ "use client"; import { Check } from "lucide-react"; +import { useTranslations } from "next-intl"; import { useState } from "react"; interface FormData { @@ -22,6 +23,7 @@ interface FormErrors { } export default function Form() { + const t = useTranslations(); const [formData, setFormData] = useState({ firstName: "", lastName: "", @@ -124,7 +126,7 @@ export default function Form() {