import React, { Component } from 'react';
import Box from '@mui/material/Box';
import Button from '@mui/material/Button';
import Menu from '@mui/material/Menu';
import MenuItem from '@mui/material/MenuItem';
import Typography from '@mui/material/Typography';
import { withI18n } from '../i18n/withTranslation.js';
const LANGUAGE_FLAG_EMOJIS = {
ar: '🇪🇬',
bg: '🇧🇬',
cs: '🇨🇿',
de: '🇩🇪',
el: '🇬🇷',
en: '🇺🇸',
es: '🇪🇸',
fr: '🇫🇷',
hr: '🇭🇷',
hu: '🇭🇺',
it: '🇮🇹',
pl: '🇵🇱',
ro: '🇷🇴',
ru: '🇷🇺',
sk: '🇸🇰',
sl: '🇸🇮',
sq: '🇦🇱',
sr: '🇷🇸',
sv: '🇸🇪',
tr: '🇹🇷',
uk: '🇺🇦',
zh: '🇨🇳'
};
class LanguageSwitcher extends Component {
constructor(props) {
super(props);
this.state = {
anchorEl: null
};
}
handleClick = (event) => {
this.setState({ anchorEl: event.currentTarget });
};
handleClose = () => {
this.setState({ anchorEl: null });
};
handleLanguageChange = async (language) => {
const { languageContext } = this.props;
if (languageContext) {
try {
await languageContext.changeLanguage(language);
} catch (error) {
console.error('Failed to change language:', error);
}
}
this.handleClose();
};
getLanguageFlag = (lang) => {
return (
{LANGUAGE_FLAG_EMOJIS[lang] || this.getLanguageLabel(lang)}
);
};
getLanguageLabel = (lang) => {
const labels = {
'ar': 'EG',
'bg': 'BG',
'cs': 'CZ',
'de': 'DE',
'el': 'GR',
'en': 'US',
'es': 'ES',
'fr': 'FR',
'hr': 'HR',
'hu': 'HU',
'it': 'IT',
'pl': 'PL',
'ro': 'RO',
'ru': 'RU',
'sk': 'SK',
'sl': 'SI',
'sq': 'AL',
'sr': 'RS',
'sv': 'SE',
'tr': 'TR',
'uk': 'UA',
'zh': 'CN'
};
return labels[lang] || lang.toUpperCase();
};
getLanguageName = (lang) => {
const names = {
'ar': 'العربية',
'bg': 'Български',
'cs': 'Čeština',
'de': 'Deutsch',
'el': 'Ελληνικά',
'en': 'English',
'es': 'Español',
'fr': 'Français',
'hr': 'Hrvatski',
'hu': 'Magyar',
'it': 'Italiano',
'pl': 'Polski',
'ro': 'Română',
'ru': 'Русский',
'sk': 'Slovenčina',
'sl': 'Slovenščina',
'sq': 'Shqip',
'sr': 'Српски',
'sv': 'Svenska',
'tr': 'Türkçe',
'uk': 'Українська',
'zh': '中文'
};
return names[lang] || lang;
};
render() {
const { languageContext } = this.props;
const { anchorEl } = this.state;
if (!languageContext) {
return null;
}
const { currentLanguage, allLanguages } = languageContext;
const open = Boolean(anchorEl);
return (
);
}
}
export default withI18n()(LanguageSwitcher);