import { useTranslation } from 'react-i18next'; import { useState, useRef, useEffect } from 'react'; const languages = [ { code: 'ru', name: 'RU', flag: '🇷🇺', fullName: 'Русский' }, { code: 'en', name: 'EN', flag: '🇬🇧', fullName: 'English' }, { code: 'zh', name: 'ZH', flag: '🇨🇳', fullName: '中文' }, { code: 'fa', name: 'FA', flag: '🇮🇷', fullName: 'فارسی' }, ]; export default function LanguageSwitcher() { const { i18n } = useTranslation(); const [isOpen, setIsOpen] = useState(false); const dropdownRef = useRef(null); const currentLang = languages.find((l) => l.code === i18n.language) || languages[0]; useEffect(() => { function handleClickOutside(event: MouseEvent) { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setIsOpen(false); } } document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); const changeLanguage = (code: string) => { i18n.changeLanguage(code); // Set document direction for RTL languages document.documentElement.dir = code === 'fa' ? 'rtl' : 'ltr'; setIsOpen(false); }; // Set initial direction on mount useEffect(() => { document.documentElement.dir = i18n.language === 'fa' ? 'rtl' : 'ltr'; }, [i18n.language]); return (
{isOpen && (
{languages.map((lang) => ( ))}
)}
); }