From 439e322abcdacda6034770fec420356afa6c0873 Mon Sep 17 00:00:00 2001 From: ameye Date: Sat, 23 May 2026 20:49:12 -0400 Subject: [PATCH] language implementation MERMS --- components/elements/LanguageSwitcher.js | 38 ++ components/layout/Menu.js | 36 +- components/layout/MobileMenu.js | 51 +- components/layout/footer/MermsFooter.js | 98 +--- components/sections/MermsAbout.js | 24 +- components/sections/MermsAboutFeautures.js | 103 ++-- components/sections/MermsBanner.js | 24 +- components/sections/MermsDedicatedTeam.js | 24 +- components/sections/MermsEngageBox.js | 37 +- components/sections/MermsFeatureSection4.js | 51 +- components/sections/MermsFeatures.js | 61 +-- components/sections/MermsFeaturesSection1.js | 52 +- .../sections/MermsFeaturesSectionTwo.js | 79 +--- components/sections/MermsHowItWorks.js | 45 +- components/sections/MermsWhyChooseUs.js | 37 +- components/sections/MersmHero.js | 26 +- messages/en.json | 172 +++++++ messages/es.json | 172 +++++++ messages/fr.json | 172 +++++++ next.config.js | 8 + package-lock.json | 445 +++++++++++++++++- package.json | 1 + pages/404.js | 11 +- pages/ProductHome.js | 11 +- pages/_app.js | 26 +- pages/_help-center.js | 11 +- pages/about.js | 30 +- pages/blog-listing.js | 11 +- pages/blogview/[id]/index.js | 11 +- pages/contacts.js | 95 ++-- pages/cookies.js | 11 +- pages/download.js | 11 +- pages/faqs.js | 11 +- pages/features.js | 34 +- pages/help-center.js | 11 +- pages/index.js | 11 +- pages/integrations.js | 11 +- pages/merms-blog.js | 11 +- pages/merms-blogview_.js | 11 +- pages/merms-updates.js | 11 +- pages/pricing.js | 11 +- pages/privacy.js | 11 +- pages/project-details.js | 11 +- pages/projects.js | 11 +- pages/reset-password.js | 11 +- pages/reviews.js | 11 +- pages/single-post.js | 11 +- pages/team.js | 11 +- pages/terms.js | 11 +- utils/getMessages.js | 11 + utils/next-intl-compat.js | 25 + 51 files changed, 1580 insertions(+), 650 deletions(-) create mode 100644 components/elements/LanguageSwitcher.js create mode 100644 messages/en.json create mode 100644 messages/es.json create mode 100644 messages/fr.json create mode 100644 utils/getMessages.js create mode 100644 utils/next-intl-compat.js diff --git a/components/elements/LanguageSwitcher.js b/components/elements/LanguageSwitcher.js new file mode 100644 index 0000000..092b2a1 --- /dev/null +++ b/components/elements/LanguageSwitcher.js @@ -0,0 +1,38 @@ +import { useRouter } from "next/router" +import { useTranslations } from "next-intl" + +const LOCALES = [ + { code: "en", label: "EN" }, + { code: "fr", label: "FR" }, + { code: "es", label: "ES" }, +] + +export default function LanguageSwitcher() { + const router = useRouter() + const t = useTranslations("Navigation") + + const switchLocale = (locale) => { + router.push(router.asPath, router.asPath, { locale }) + } + + return ( +
  • + + {t("language")} + + +
  • + ) +} diff --git a/components/layout/Menu.js b/components/layout/Menu.js index 5bafd33..343a362 100644 --- a/components/layout/Menu.js +++ b/components/layout/Menu.js @@ -1,63 +1,55 @@ import Link from "next/link"; -import { useRouter } from "next/router"; +import { useTranslations } from "next-intl"; +import LanguageSwitcher from "../elements/LanguageSwitcher"; export default function Menu() { - const router = useRouter(); - + const t = useTranslations("Navigation"); return ( <> ); diff --git a/components/layout/MobileMenu.js b/components/layout/MobileMenu.js index 33970c3..4cf6d5a 100644 --- a/components/layout/MobileMenu.js +++ b/components/layout/MobileMenu.js @@ -1,80 +1,63 @@ import Link from "next/link"; import { useState } from "react"; +import { useTranslations } from "next-intl"; + export default function MobileMenu() { - const [isActive, setIsActive] = useState({ - status: false, - key: "", - }); + const t = useTranslations("Navigation"); + const [isActive, setIsActive] = useState({ status: false, key: "" }); const handleToggle = (key) => { if (isActive.key === key) { - setIsActive({ - status: false, - }); + setIsActive({ status: false }); } else { - setIsActive({ - status: true, - key, - }); + setIsActive({ status: true, key }); } }; + return ( <>