File size: 1,454 Bytes
e2eff86 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import React, { useState, useEffect } from 'react';
import BrowserOnly from '@docusaurus/BrowserOnly';
const LanguageToggle = () => {
const [currentLanguage, setCurrentLanguage] = useState('en');
// Load language preference from localStorage on component mount
useEffect(() => {
const savedLanguage = localStorage.getItem('preferredLanguage') || 'en';
setCurrentLanguage(savedLanguage);
}, []);
// Handle language change
const handleLanguageChange = (newLanguage) => {
if (newLanguage !== currentLanguage) {
setCurrentLanguage(newLanguage);
localStorage.setItem('preferredLanguage', newLanguage);
// In a real implementation, this would trigger UI updates for all content
// For now, we'll just log the change
console.log(`Language changed to: ${newLanguage}`);
// Trigger a custom event that other components can listen to
window.dispatchEvent(new CustomEvent('languageChange', { detail: { newLanguage } }));
}
};
return (
<BrowserOnly>
{() => (
<div className="language-toggle">
<select
value={currentLanguage}
onChange={(e) => handleLanguageChange(e.target.value)}
aria-label="Select language"
>
<option value="en">English</option>
<option value="ur">Urdu</option>
</select>
</div>
)}
</BrowserOnly>
);
};
export default LanguageToggle; |