LanguageSwitch.tsx 951 B

1234567891011121314151617181920212223242526272829303132333435
  1. import { Dropdown, type MenuProps } from 'antd'
  2. import { useTranslation } from 'react-i18next'
  3. const LANGUAGES = [
  4. { code: 'en-US', label: 'English' },
  5. { code: 'zh-CN', label: '简体中文' },
  6. { code: 'fa-IR', label: 'فارسی' },
  7. ]
  8. interface LanguageSwitchProps {
  9. className?: string
  10. }
  11. export function LanguageSwitch({ className }: LanguageSwitchProps) {
  12. const { i18n, t } = useTranslation()
  13. const menuProps: MenuProps = {
  14. items: LANGUAGES.map((lang) => ({
  15. key: lang.code,
  16. label: lang.label,
  17. })),
  18. selectedKeys: [i18n.language],
  19. onClick: ({ key }) => i18n.changeLanguage(key),
  20. }
  21. return (
  22. <Dropdown menu={menuProps} trigger={['click']} placement="bottomRight">
  23. <button type="button" className={className}>
  24. {t('components.topbar.language')}
  25. </button>
  26. </Dropdown>
  27. )
  28. }
  29. export default LanguageSwitch