File size: 1,171 Bytes
f4102c2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | "use client";
import { Languages } from "lucide-react";
import { usePathname, useRouter } from "next/navigation";
import { locales, type Locale } from "@/i18n/config";
import { useT } from "@/i18n/context";
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@/components/ui/select";
export function LanguageToggle() {
const { locale } = useT();
const router = useRouter();
const pathname = usePathname();
function handleChange(next: string) {
document.cookie = `locale=${next}; path=/; max-age=31536000`;
const segments = pathname.split("/");
segments[1] = next;
router.push(segments.join("/") || `/${next}`);
router.refresh();
}
return (
<Select value={locale} onValueChange={handleChange}>
<SelectTrigger className="h-9 w-[110px] gap-2">
<Languages className="h-4 w-4 opacity-70" />
<SelectValue />
</SelectTrigger>
<SelectContent>
{(locales as readonly Locale[]).map((l) => (
<SelectItem key={l} value={l}>
{l === "en" ? "English" : "Español"}
</SelectItem>
))}
</SelectContent>
</Select>
);
}
|