"use client"; import { useAction } from "next-safe-action/hooks"; import { Languages } from "lucide-react"; import { useChangeLocale, languages, useI18n } from "locales/client"; import { updateUserAction } from "@/entities/user/model/update-user.action"; const languageFlags: Record = { en: "🇬🇧", fr: "🇫🇷", es: "🇪🇸", "zh-CN": "🇨🇳", ru: "🇷🇺", }; export function LanguageSelector() { const action = useAction(updateUserAction); const changeLocale = useChangeLocale(); const t = useI18n(); const handleLanguageChange = async (newLocale: string) => { // update cookie to prevent auto-detection conflicts document.cookie = `detected-locale=${newLocale}; max-age=${60 * 60 * 24 * 365}; path=/; samesite=lax`; // change locale immediately for better UX changeLocale(newLocale as "en" | "fr" | "es" | "zh-CN" | "ru"); // save to database (fire and forget) action.execute({ locale: newLocale }); }; const getLanguageName = (language: string) => { switch (language) { case "en": return "English"; case "fr": return "Français"; case "es": return "Español"; case "zh-CN": return "中文"; case "ru": return "Русский"; default: return language; } }; return (
); }