"use client"; import { useLocale } from "next-intl"; import { useSearchParams } from "next/navigation"; import { useTransition } from "react"; import { useT } from "../i18n/client"; import { usePathname, useRouter } from "../i18n/navigation"; import { routing, type AppLocale } from "../i18n/routing"; type LocaleLabelKey = `localeSwitcher.locales.${AppLocale}`; export default function LanguageSwitcher() { const t = useT(); const locale = useLocale() as AppLocale; const pathname = usePathname(); const router = useRouter(); const searchParams = useSearchParams(); const [isPending, startTransition] = useTransition(); const localeLabels = Object.fromEntries( routing.locales.map((availableLocale) => [ availableLocale, t(`localeSwitcher.locales.${availableLocale}` as LocaleLabelKey), ]), ) as Record; const handleLocaleChange = (nextLocale: AppLocale) => { if (nextLocale === locale) { return; } const query = Object.fromEntries(searchParams.entries()); startTransition(() => { router.replace({ pathname, query }, { locale: nextLocale }); }); }; return ( ); }