import { useState, useRef, useEffect } from "react"; import { useTranslation } from "react-i18next"; const languages = [ { code: "en", label: "EN", native: "English" }, { code: "vi", label: "VI", native: "Tiếng Việt" }, { code: "ja", label: "JA", native: "日本語" }, { code: "ko", label: "KO", native: "한국어" }, { code: "zh", label: "ZH", native: "中文" }, ]; const LanguageSwitcher = () => { const { i18n, t } = useTranslation(); const [open, setOpen] = useState(false); const ref = useRef(null); const current = languages.find((l) => l.code === i18n.language) ?? languages[0]; useEffect(() => { const handler = (e: MouseEvent) => { if (ref.current && !ref.current.contains(e.target as Node)) { setOpen(false); } }; document.addEventListener("mousedown", handler); return () => document.removeEventListener("mousedown", handler); }, []); const select = (code: string) => { i18n.changeLanguage(code); setOpen(false); }; return (
{/* Trigger */} {/* Dropdown */} {open && ( )}
); }; export default LanguageSwitcher;