Commit a86acf53 authored by 2breakegg's avatar 2breakegg

i18n

parent 57f88105
...@@ -18,12 +18,11 @@ ...@@ -18,12 +18,11 @@
"moecube": "MoeCube", "moecube": "MoeCube",
"index-leftbox1": "You can use this account to sign in.", "index-leftbox1": "You can use this account to sign in.",
"yonghuan": "The Disappearing of Gensokyo", "yonghuan": "The Disappearing of Gensokyo",
"please-sign-up": "Sign Up", "sign-up": "Sign Up",
"please-sign-in": "Sign In", "sign-in": "Sign In",
"email-address-or-username": "E-Mail or Username", "email-address-or-username": "E-Mail or Username",
"register-now": "register-now!", "register-now": "register-now!",
"register":"register", "register":"register",
"login": "Login",
"forgot-password": "Forgot Password", "forgot-password": "Forgot Password",
"send-email": "Send Email", "send-email": "Send Email",
"reset-success": "reset success", "reset-success": "reset success",
...@@ -67,7 +66,13 @@ ...@@ -67,7 +66,13 @@
"Your email has been updated.": "Your email has been updated. You will receive an verification email. Please check the mail to finish verification. ", "Your email has been updated.": "Your email has been updated. You will receive an verification email. Please check the mail to finish verification. ",
"Please input your account!":"Please input your email or username!", "Please input your account!":"Please input your email or username!",
"Please input your Password!":"Please input your Password!" "Please input your Password!":"Please input your Password!",
"verify email":"verify email",
"account-info":"Account Info",
"reset-username":"Reset Username",
"reset-email":"Reset Email",
"reset-password":"Reset Password"
}, },
"zh": { "zh": {
...@@ -89,12 +94,11 @@ ...@@ -89,12 +94,11 @@
"moecube": "萌立方", "moecube": "萌立方",
"index-leftbox1": "您可使用以下几种账号登陆", "index-leftbox1": "您可使用以下几种账号登陆",
"yonghuan": "永远消失的幻想乡", "yonghuan": "永远消失的幻想乡",
"please-sign-up": "注册", "sign-up": "注册",
"please-sign-in": "登陆", "sign-in": "登陆",
"email-address-or-username": "邮箱或用户名", "email-address-or-username": "邮箱或用户名",
"register-now": "现在注册", "register-now": "现在注册",
"register":"注册", "register":"注册",
"login": "登陆",
"forgot-password": "忘记密码", "forgot-password": "忘记密码",
"send-email": "发送邮件", "send-email": "发送邮件",
"reset-success": "修改成功", "reset-success": "修改成功",
...@@ -139,7 +143,14 @@ ...@@ -139,7 +143,14 @@
"Please input your account!":"请填写你的邮箱或用户名!", "Please input your account!":"请填写你的邮箱或用户名!",
"Please input your Password!":"请填写你的密码!", "Please input your Password!":"请填写你的密码!",
"密码至少为8-24位":"密码至少为8-24位"
"verify email":"验证邮箱",
"account-info":"账户信息",
"reset-username":"修改用户名",
"reset-email":"修改邮箱",
"reset-password":"修改密码",
"密码至少为8-24位":"密码至少为8-24位"
} }
} }
import { message } from 'antd';
import dva from 'dva'; import dva from 'dva';
import { browserHistory } from 'dva/router';
import ReactDOM from 'react-dom'; import ReactDOM from 'react-dom';
import { browserHistory } from 'dva/router'
import { message } from 'antd'
import './index.css';
import { IntlProvider, addLocaleData } from 'react-intl'; import { addLocaleData, IntlProvider } from 'react-intl';
// 5. Start
import en from 'react-intl/locale-data/en';
import zh from 'react-intl/locale-data/zh';
import localeData from '../i18n.json';
import './index.css';
// 1. Initialize // 1. Initialize
const app = dva({ const app = dva({
onError: (error, dispatch) => { onError: (error, dispatch) => {
message.destroy(); message.destroy();
message.error(error.message); message.error(error.message);
}, },
history: browserHistory history: browserHistory,
}); });
...@@ -36,27 +40,22 @@ app.model(require('./models/common')); ...@@ -36,27 +40,22 @@ app.model(require('./models/common'));
// 4. Router // 4. Router
app.router(require('./router')); app.router(require('./router'));
// 5. Start
import en from 'react-intl/locale-data/en'
import zh from 'react-intl/locale-data/zh'
import localeData from '../i18n.json'
addLocaleData([...en, ...zh]); addLocaleData([...en, ...zh]);
/*eslint-disable */ /*eslint-disable */
const language = navigator.language || (navigator.languages && navigator.languages[0]) || navigator.userLanguage; const language = navigator.language || (navigator.languages && navigator.languages[0]) || navigator.userLanguage;
/*eslint-enable */ /*eslint-enable */
const languageWithoutRegionCode = language.toLowerCase().split(/[_-]+/)[0]; const languageWithoutRegionCode = 'zh' || language.toLowerCase().split(/[_-]+/)[0];
const messages = localeData[languageWithoutRegionCode] || localeData[language] || localeData.zh; const messages = localeData[languageWithoutRegionCode] || localeData[language] || localeData.zh;
const App = app.start(); const App = app.start();
ReactDOM.render( ReactDOM.render(
<IntlProvider locale={ language } messages={ messages }> <IntlProvider locale={language} messages={messages}>
<App/> <App/>
</IntlProvider>, </IntlProvider>,
document.getElementById('root'), document.getElementById('root'),
); );
console.log(language) console.log(language);
import { Button } from 'antd'; import { Button } from 'antd';
import { connect } from 'dva'; import { connect } from 'dva';
import React from 'react'; import React from 'react';
import { FormattedMessage as Format } from 'react-intl';
class Active extends React.Component { class Active extends React.Component {
...@@ -15,7 +16,7 @@ class Active extends React.Component { ...@@ -15,7 +16,7 @@ class Active extends React.Component {
return ( return (
<div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', minHeight: '100%' }}> <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', minHeight: '100%' }}>
<Button type="primary" icon="poweroff" loading={activateState} onClick={this.handleClick}> <Button type="primary" icon="poweroff" loading={activateState} onClick={this.handleClick}>
激活 <Format id={'verify email'} />
</Button> </Button>
</div> </div>
); );
......
...@@ -60,7 +60,7 @@ class Login extends React.Component { ...@@ -60,7 +60,7 @@ class Login extends React.Component {
<Button type="primary" htmlType="submit" className="login-form-button"> <Button type="primary" htmlType="submit" className="login-form-button">
<Format id={'send-email'} /> <Format id={'send-email'} />
</Button> </Button>
Or <Link to="/login"><Format id={'login'} /></Link> Or <Link to="/login"><Format id={'sign-in'} /></Link>
</Form> </Form>
</Spin> </Spin>
</div> </div>
......
...@@ -61,9 +61,9 @@ class Login extends React.Component { ...@@ -61,9 +61,9 @@ class Login extends React.Component {
)} )}
<Link to="/forgot" className="login-form-forgot"><Format id={'forgot-password'} /></Link> <Link to="/forgot" className="login-form-forgot"><Format id={'forgot-password'} /></Link>
<Button type="primary" htmlType="submit" className="login-form-button"> <Button type="primary" htmlType="submit" className="login-form-button">
<Format id={'login'} /> <Format id={'sign-in'} />
</Button> </Button>
Or <Link to="/register"><Format id={'register-now'} /></Link> Or <Link to="/register"><Format id={'sign-up'} /></Link>
</FormItem> </FormItem>
</Form> </Form>
</Spin> </Spin>
...@@ -74,11 +74,9 @@ class Login extends React.Component { ...@@ -74,11 +74,9 @@ class Login extends React.Component {
function mapStateToProps(state) { function mapStateToProps(state) {
const { const {
common: { language },
auth: { isLoginSubmit }, auth: { isLoginSubmit },
} = state; } = state;
return { return {
language,
isLoginSubmit, isLoginSubmit,
}; };
} }
......
import { Button, Form, Icon, Input, Spin, Tabs } from 'antd'; import { Button, Form, Icon, Input, Spin, Tabs } from 'antd';
import { connect } from 'dva'; import { connect } from 'dva';
import React from 'react'; import React, { PropTypes } from 'react';
import { FormattedMessage as Format } from 'react-intl';
import EmailForm from '../components/EmailForm'; import EmailForm from '../components/EmailForm';
import PasswordForm from '../components/PasswordForm'; import PasswordForm from '../components/PasswordForm';
import UserNameForm from '../components/UserNameForm'; import UserNameForm from '../components/UserNameForm';
...@@ -17,6 +18,10 @@ const formItemLayout = { ...@@ -17,6 +18,10 @@ const formItemLayout = {
class Profiles extends React.Component { class Profiles extends React.Component {
static contextTypes = {
intl: PropTypes.object.isRequired,
}
onUpdateSubmit = (e) => { onUpdateSubmit = (e) => {
const { form, dispatch, data: { id } } = this.props; const { form, dispatch, data: { id } } = this.props;
...@@ -33,27 +38,28 @@ class Profiles extends React.Component { ...@@ -33,27 +38,28 @@ class Profiles extends React.Component {
}; };
render() { render() {
const { dispatch, form, data, isUpdateSubmit=false, checkUsername, isUserNameExists } = this.props const { dispatch, form, data, isUpdateSubmit=false, checkUsername, isUserNameExists } = this.props;
const { getFieldDecorator } = form; const { getFieldDecorator } = form;
const { username, name, id } = data const { username, name, id } = data;
const { intl: {messages} } = this.context;
const nameProps = { const nameProps = {
fromItem: { fromItem: {
label: "name", label: 'name',
...formItemLayout ...formItemLayout
}, },
decorator: { decorator: {
initialValue: name initialValue: name
}, },
input: { input: {
placeholder: "name", placeholder: 'name',
} }
} }
return ( return (
<Spin spinning={isUpdateSubmit} delay={500}> <Spin spinning={isUpdateSubmit} delay={500}>
<Tabs defaultActiveKey="1" className="app-detail-nav"> <Tabs defaultActiveKey="1" className="app-detail-nav">
<TabPane tab={<span><Icon type="setting" /> 基本信息 </span>} key="1"> <TabPane tab={<span><Icon type="setting" /><Format id={'user-info'} /> </span>} key="1">
<Form onSubmit={this.onUpdateSubmit}> <Form onSubmit={this.onUpdateSubmit}>
<FormItem {...nameProps.fromItem}> <FormItem {...nameProps.fromItem}>
...@@ -64,24 +70,24 @@ class Profiles extends React.Component { ...@@ -64,24 +70,24 @@ class Profiles extends React.Component {
<FormItem> <FormItem>
<div className={styles.wrapSubmit}> <div className={styles.wrapSubmit}>
<Button type="primary" htmlType="submit" size="large">提交</Button> <Button type="primary" htmlType="submit" size="large"><Format id={'save'}/></Button>
</div> </div>
</FormItem> </FormItem>
</Form> </Form>
</TabPane> </TabPane>
<TabPane tab={<span><Icon type="setting" /> 账户信息 </span>} key="2"> <TabPane tab={<span><Icon type="setting" /><Format id={'account-info'}/></span>} key="2">
<Tabs type="card" className="app-detail-nav"> <Tabs type="card" className="app-detail-nav">
<TabPane tab={'修改用户名'} key={0}> <TabPane tab={messages['reset-username']} key={0}>
<UserNameForm /> <UserNameForm />
</TabPane> </TabPane>
<TabPane tab={'修改邮箱'} key={1}> <TabPane tab={messages['reset-email']}key={1}>
<EmailForm /> <EmailForm />
</TabPane> </TabPane>
<TabPane tab={'修改密码'} key={2}> <TabPane tab={messages['reset-password']}key={2}>
<PasswordForm /> <PasswordForm />
</TabPane> </TabPane>
</Tabs> </Tabs>
......
...@@ -138,9 +138,9 @@ class Register extends React.Component { ...@@ -138,9 +138,9 @@ class Register extends React.Component {
</FormItem> </FormItem>
<Button type="primary" htmlType="submit" className="login-form-button"> <Button type="primary" htmlType="submit" className="login-form-button">
<Format id={'register'} /> <Format id={'sign-up'} />
</Button> </Button>
Or <Link to="/login"><Format id={'login'} /></Link> Or <Link to="/login"><Format id={'sign-in'} /></Link>
</Form> </Form>
</Spin> </Spin>
</div> </div>
......
import { Button, Form, Icon, Input, Select, Spin } from 'antd'; import { Button, Form, Icon, Input, Select, Spin } from 'antd';
import { connect } from 'dva'; import { connect } from 'dva';
import { FormattedMessage as Format } from 'react-intl';
import React from 'react'; import React from 'react';
const FormItem = Form.Item; const FormItem = Form.Item;
const Option = Select.Option; const Option = Select.Option;
......
...@@ -56,5 +56,3 @@ export async function checkUserExists(params) { ...@@ -56,5 +56,3 @@ export async function checkUserExists(params) {
}); });
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment