import { useTranslation } from "react-i18next"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, DropdownMenuSeparator, DropdownMenuLabel, } from "@/components/ui/dropdown-menu"; import { Globe } from "lucide-react"; const LANGUAGES = [ { code: "zh", label: "简体中文", flag: "🇨🇳", dir: "ltr" }, { code: "en", label: "English", flag: "🇺🇸", dir: "ltr" }, { code: "ar", label: "العربية", flag: "🇦🇪", dir: "rtl" }, { code: "ja", label: "日本語", flag: "🇯🇵", dir: "ltr" }, { code: "ko", label: "한국어", flag: "🇰🇷", dir: "ltr" }, { code: "fr", label: "Français", flag: "🇫🇷", dir: "ltr" }, { code: "ru", label: "Русский", flag: "🇷🇺", dir: "ltr" }, ]; interface LanguageSwitcherProps { variant?: "icon" | "full"; className?: string; } export function LanguageSwitcher({ variant = "icon", className }: LanguageSwitcherProps) { const { i18n, t } = useTranslation(); const currentLang = LANGUAGES.find((l) => l.code === i18n.language) || LANGUAGES[0]; const handleLanguageChange = (code: string) => { const lang = LANGUAGES.find((l) => l.code === code); i18n.changeLanguage(code); // Apply RTL/LTR direction to document if (lang) { document.documentElement.dir = lang.dir; document.documentElement.lang = code; } // Persist language preference localStorage.setItem("nac-admin-language", code); }; return ( {t("languageSwitcher.selectLanguage")} {LANGUAGES.map((lang) => ( handleLanguageChange(lang.code)} className={`cursor-pointer hover:bg-slate-700 focus:bg-slate-700 ${ i18n.language === lang.code ? "text-amber-400 bg-slate-700/50" : "text-slate-200" }`} > {lang.flag} {lang.label} {i18n.language === lang.code && ( )} ))} ); } export default LanguageSwitcher;