mirror of https://github.com/msgbyte/tailchat
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
import { Select, SelectProps } from 'antd';
|
|
import React, { useCallback } from 'react';
|
|
import { showToasts, t, useLanguage } from 'tailchat-shared';
|
|
import type { AllowedLanguage } from 'tailchat-shared';
|
|
|
|
type LanguageSelectProps = Omit<SelectProps, 'value' | 'onChange'>;
|
|
|
|
/**
|
|
* 语言切换选择框
|
|
*/
|
|
export const LanguageSelect: React.FC<LanguageSelectProps> = React.memo(
|
|
(props) => {
|
|
const { language, setLanguage } = useLanguage();
|
|
|
|
const handleChangeLanguage = useCallback(
|
|
(newLang: AllowedLanguage) => {
|
|
showToasts(t('刷新页面后生效'), 'info');
|
|
setLanguage(newLang);
|
|
},
|
|
[setLanguage]
|
|
);
|
|
|
|
return (
|
|
<Select
|
|
style={{ width: 280 }}
|
|
size="large"
|
|
{...props}
|
|
value={language}
|
|
onChange={handleChangeLanguage}
|
|
>
|
|
<Select.Option value="zh-CN">简体中文</Select.Option>
|
|
<Select.Option value="en-US">English</Select.Option>
|
|
</Select>
|
|
);
|
|
}
|
|
);
|
|
LanguageSelect.displayName = 'LanguageSelect';
|