diff --git a/src/layouts/UserLayout.tsx b/src/layouts/UserLayout.tsx index 59c7e239..ef99e333 100644 --- a/src/layouts/UserLayout.tsx +++ b/src/layouts/UserLayout.tsx @@ -1,6 +1,6 @@ import { DefaultFooter, MenuDataItem, getMenuData, getPageTitle } from '@ant-design/pro-layout'; import { Helmet, HelmetProvider } from 'react-helmet-async'; -import { Link, SelectLang, useIntl, ConnectProps, connect } from 'umi'; +import { Link, SelectLang, useIntl, ConnectProps, connect, FormattedMessage } from 'umi'; import React from 'react'; import { ConnectState } from '@/models/connect'; import logo from '../assets/logo.svg'; @@ -52,7 +52,12 @@ const UserLayout: React.FC = (props) => { Ant Design -
Ant Design 是西湖区最具影响力的 Web 设计规范
+
+ +
{children} diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index 3d579886..24c25fab 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -4,6 +4,7 @@ import menu from './en-US/menu'; import pwa from './en-US/pwa'; import settingDrawer from './en-US/settingDrawer'; import settings from './en-US/settings'; +import pages from './en-US/pages'; export default { 'navBar.lang': 'Languages', @@ -19,4 +20,5 @@ export default { ...settings, ...pwa, ...component, + ...pages, }; diff --git a/src/locales/en-US/pages.ts b/src/locales/en-US/pages.ts new file mode 100644 index 00000000..e37cfb5c --- /dev/null +++ b/src/locales/en-US/pages.ts @@ -0,0 +1,24 @@ +export default { + 'pages.layouts.userLayout.title': + 'Ant Design is the most influential web design specification in Xihu district', + 'pages.login.accountLogin.tab': 'Account Login', + 'pages.login.accountLogin.errorMessage': 'Incorrect username/password(admin/ant.design)', + 'pages.login.username.placeholder': 'Username: admin or user', + 'pages.login.username.required': 'Please input your username!', + 'pages.login.password.placeholder': 'Password: ant.design', + 'pages.login.password.required': 'Please input your password!', + 'pages.login.phoneLogin.tab': 'Phone Login', + 'pages.login.phoneLogin.errorMessage': 'Verification Code Error', + 'pages.login.phoneNumber.placeholder': 'Phone Number', + 'pages.login.phoneNumber.required': 'Please input your phone number!', + 'pages.login.phoneNumber.invalid': 'Phone number is invalid!', + 'pages.login.captcha.placeholder': 'Verification Code', + 'pages.login.captcha.required': 'Please input verification code!', + 'pages.login.phoneLogin.getVerificationCode': 'Get Code', + 'pages.getCaptchaSecondText': 'sec(s)', + 'pages.login.rememberMe': 'Remember me', + 'pages.login.forgotPassword': 'Forgot Password ?', + 'pages.login.submit': 'Submit', + 'pages.login.loginWith': 'Login with :', + 'pages.login.registerAccount': 'Register Account', +}; diff --git a/src/pages/user/login/components/Login/LoginItem.tsx b/src/pages/user/login/components/Login/LoginItem.tsx index dd591ea2..9df1b630 100644 --- a/src/pages/user/login/components/Login/LoginItem.tsx +++ b/src/pages/user/login/components/Login/LoginItem.tsx @@ -3,6 +3,7 @@ import React, { useState, useCallback, useEffect } from 'react'; import omit from 'omit.js'; import { FormItemProps } from 'antd/es/form/FormItem'; import { getFakeCaptcha } from '@/services/login'; +import { FormattedMessage } from 'umi'; import ItemMap from './map'; import LoginContext, { LoginContextProps } from './LoginContext'; @@ -131,7 +132,14 @@ const LoginItem: React.FC = (props) => { onGetCaptcha(value); }} > - {timing ? `${count} 秒` : '获取验证码'} + {timing ? ( + `${count} 秒` + ) : ( + + )} diff --git a/src/pages/user/login/index.tsx b/src/pages/user/login/index.tsx index c5b69a51..eea55b0f 100644 --- a/src/pages/user/login/index.tsx +++ b/src/pages/user/login/index.tsx @@ -1,7 +1,7 @@ import { AlipayCircleOutlined, TaobaoCircleOutlined, WeiboCircleOutlined } from '@ant-design/icons'; import { Alert, Checkbox } from 'antd'; import React, { useState } from 'react'; -import { Link, connect, Dispatch } from 'umi'; +import { Link, connect, Dispatch, useIntl, FormattedMessage } from 'umi'; import { StateType } from '@/models/login'; import { LoginParamsType } from '@/services/login'; import { ConnectState } from '@/models/connect'; @@ -34,6 +34,7 @@ const Login: React.FC = (props) => { const { status, type: loginType } = userLogin; const [autoLogin, setAutoLogin] = useState(true); const [type, setType] = useState('account'); + const intl = useIntl(); const handleSubmit = (values: LoginParamsType) => { const { dispatch } = props; @@ -45,84 +46,148 @@ const Login: React.FC = (props) => { return (
- + {status === 'error' && loginType === 'account' && !submitting && ( - + )} + ), }, ]} /> + ), }, ]} /> - + {status === 'error' && loginType === 'mobile' && !submitting && ( - + )} + ), }, { pattern: /^1\d{10}$/, - message: '手机号格式错误!', + message: ( + + ), }, ]} /> + ), }, ]} />
setAutoLogin(e.target.checked)}> - 自动登录 + - 忘记密码 +
- 登录 + + +
- 其他登录方式 + - 注册账户 +