@@ -39,8 +45,9 @@ export default function LanguageSwitcherContent({
{languages[key]}
{isActive ? : null}
diff --git a/components/LanguageSwitcher/LanguageSwitcherContent/utils.ts b/components/LanguageSwitcher/LanguageSwitcherContent/utils.ts
new file mode 100644
index 000000000..ee9c27a1d
--- /dev/null
+++ b/components/LanguageSwitcher/LanguageSwitcherContent/utils.ts
@@ -0,0 +1,19 @@
+export function replaceUrlPart(currentPath: string, newPart: string): string {
+ const pathSegments = currentPath.split("/").filter((segment) => segment)
+
+ const newPathSegments = newPart
+ .replace(/\/$/, "")
+ .split("/")
+ .filter((segment) => segment)
+
+ const isFullPathReplacement = newPathSegments.length > 1
+
+ if (isFullPathReplacement) {
+ return `/${newPathSegments.join("/")}`
+ }
+
+ const updatedPathSegments = pathSegments.slice(1)
+ const updatedPath = `/${newPathSegments.concat(updatedPathSegments).join("/")}`
+
+ return updatedPath
+}
diff --git a/components/LanguageSwitcher/index.tsx b/components/LanguageSwitcher/index.tsx
index 16d5e8d41..b69b75d3b 100644
--- a/components/LanguageSwitcher/index.tsx
+++ b/components/LanguageSwitcher/index.tsx
@@ -1,10 +1,9 @@
"use client"
-import { usePathname, useSearchParams } from "next/navigation"
-import { useRef } from "react"
+import { Suspense, useRef } from "react"
import { useIntl } from "react-intl"
-import { Lang, languages } from "@/constants/languages"
+import { languages } from "@/constants/languages"
import useDropdownStore from "@/stores/main-menu"
import { ChevronDownSmallIcon, GlobeIcon } from "@/components/Icons"
@@ -24,7 +23,6 @@ import {
type LanguageSwitcherProps,
LanguageSwitcherTypesEnum,
} from "@/types/components/languageSwitcher/languageSwitcher"
-import type { LanguageSwitcherData } from "@/types/requests/languageSwitcher"
export default function LanguageSwitcher({
urls,
@@ -38,23 +36,12 @@ export default function LanguageSwitcher({
isHeaderLanguageSwitcherMobileOpen,
isHeaderLanguageSwitcherOpen,
} = useDropdownStore()
- const searchParams = useSearchParams()
- const pathname = usePathname()
- const queryParams = new URLSearchParams(searchParams.toString())
const languageSwitcherRef = useRef(null)
const isFooter = type === LanguageSwitcherTypesEnum.Footer
const isHeader = !isFooter
const globeIconSize = type === "desktopHeader" ? 16 : 20
- const currentUrl = `${pathname}?${queryParams.toString()}`
-
- const fullUrls = Object.entries(urls).reduce((acc, [lang, { url }]) => {
- const newUrl = currentUrl.replace(/^\/[a-z]{2}\//, url)
- acc[lang as Lang] = { url: newUrl }
- return acc
- }, {} as LanguageSwitcherData)
-
const position = isFooter ? "footer" : "header"
const dropdownType = {
@@ -119,7 +106,7 @@ export default function LanguageSwitcher({
{isLanguageSwitcherOpen ? (
toggleDropdown(dropdownType)}
/>