import { useTranslation } from 'react-i18next'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { Languages } from 'lucide-react'; import { useEffect } from 'react'; export function LanguageSwitcher() { const { i18n } = useTranslation(); const languages = [ { code: 'en', name: 'English', flag: '🇺🇸' }, { code: 'ar', name: 'العربية', flag: '🇴🇲' } ]; const changeLanguage = async (langCode: string) => { await i18n.changeLanguage(langCode); // Update document direction and language for proper RTL support document.documentElement.dir = langCode === 'ar' ? 'rtl' : 'ltr'; document.documentElement.lang = langCode; // Store in localStorage for persistence localStorage.setItem('language', langCode); // Force re-render of components window.location.reload(); }; // Initialize language on component mount useEffect(() => { const savedLanguage = localStorage.getItem('language'); if (savedLanguage && savedLanguage !== i18n.language) { i18n.changeLanguage(savedLanguage); document.documentElement.dir = savedLanguage === 'ar' ? 'rtl' : 'ltr'; document.documentElement.lang = savedLanguage; } }, [i18n]); const currentLanguage = languages.find(lang => lang.code === i18n.language) || languages[0]; return ( {languages.map((language) => ( changeLanguage(language.code)} className={`gap-2 ${i18n.language === language.code ? 'bg-accent' : ''}`} > {language.flag} {language.name} ))} ); }