diff --git a/src/components/lang-select/index.tsx b/src/components/lang-select/index.tsx
new file mode 100644
index 00000000..bd4e99a1
--- /dev/null
+++ b/src/components/lang-select/index.tsx
@@ -0,0 +1,35 @@
+import langConfigMap from '@/locales/lang-config-map';
+import { GlobalOutlined } from '@ant-design/icons';
+import { getAllLocales, setLocale } from '@umijs/max';
+import { Dropdown } from 'antd';
+import { get } from 'lodash';
+
+const LangSelect = () => {
+ const allLocals = getAllLocales();
+ const items = allLocals.map((key) => {
+ return {
+ key,
+ label: (
+
+ {get(langConfigMap, [key, 'label'])}
+
+ ),
+ onClick: () => {
+ setLocale(key, false);
+ }
+ };
+ });
+
+ return (
+
+
+
+
+
+ );
+};
+
+export default LangSelect;
diff --git a/src/pages/login/components/login-form.tsx b/src/pages/login/components/login-form.tsx
index 4cdc4b36..f7bf71b7 100644
--- a/src/pages/login/components/login-form.tsx
+++ b/src/pages/login/components/login-form.tsx
@@ -1,13 +1,14 @@
import LogoIcon from '@/assets/images/gpustack-logo.png';
import { initialPasswordAtom, userAtom } from '@/atoms/user';
+import LangSelect from '@/components/lang-select';
import SealInput from '@/components/seal-form/seal-input';
import {
getRememberMe,
rememberMe,
removeRememberMe
} from '@/utils/localstore/index';
-import { GlobalOutlined, LockOutlined, UserOutlined } from '@ant-design/icons';
-import { SelectLang, history, useIntl, useModel } from '@umijs/max';
+import { LockOutlined, UserOutlined } from '@ant-design/icons';
+import { history, useIntl, useModel } from '@umijs/max';
import { Button, Checkbox, Form } from 'antd';
import CryptoJS from 'crypto-js';
import { useAtom } from 'jotai';
@@ -147,10 +148,10 @@ const LoginForm = () => {
position: 'fixed',
right: 0,
top: 0,
- padding: '0 20px'
+ padding: '20px'
}}
>
- } reload={false} />
+