优化,减少可能到来的1.2.4的工作量
1.增加翻译 2.为darkmode添加过度动画 3.修改package.json
This commit is contained in:
parent
8cc58d9e68
commit
5ad1fc333e
@ -4,7 +4,7 @@
|
|||||||
"description": "make weweChat great again!!!",
|
"description": "make weweChat great again!!!",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"test": "yarn build && ./node_modules/.bin/electron ./dist/main.js",
|
||||||
"js-lint": "node node_modules/.bin/eslint .",
|
"js-lint": "node node_modules/.bin/eslint .",
|
||||||
"css-lint": "stylelint --fix src/**/*.css",
|
"css-lint": "stylelint --fix src/**/*.css",
|
||||||
"lint": "yarn css-lint && yarn js-lint",
|
"lint": "yarn css-lint && yarn js-lint",
|
||||||
@ -54,7 +54,7 @@
|
|||||||
},
|
},
|
||||||
"linux": {
|
"linux": {
|
||||||
"icon": "../resource",
|
"icon": "../resource",
|
||||||
"category": "Chat",
|
"category": "Network",
|
||||||
"executableName": "wewechat",
|
"executableName": "wewechat",
|
||||||
"target": [
|
"target": [
|
||||||
"deb",
|
"deb",
|
||||||
@ -75,9 +75,8 @@
|
|||||||
},
|
},
|
||||||
"publish": [
|
"publish": [
|
||||||
{
|
{
|
||||||
"provider": "github",
|
"provider": "generic",
|
||||||
"owner": "riceneeder",
|
"url": "https://gitee.com/spark-community-works-collections/wewechat-plus-plus/raw/master/"
|
||||||
"repo": "weweChat"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -5,6 +5,13 @@
|
|||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>weweChat</title>
|
<title>weweChat</title>
|
||||||
</head>
|
</head>
|
||||||
|
<style>
|
||||||
|
.darkmode-layer {
|
||||||
|
width: 100%;
|
||||||
|
height: 1px;
|
||||||
|
top: -1px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script>
|
<script>
|
||||||
|
@ -29,7 +29,7 @@ export default class MessageInput extends Component {
|
|||||||
&& user.length === 1
|
&& user.length === 1
|
||||||
&& user.slice(-1).pop().UserName === this.props.me.UserName
|
&& user.slice(-1).pop().UserName === this.props.me.UserName
|
||||||
) {
|
) {
|
||||||
this.props.showMessage('Can\'t send messages to yourself.');
|
this.props.showMessage('不能向自己发送消息');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ export default class MessageInput extends Component {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (!res) {
|
if (!res) {
|
||||||
await this.props.showMessage(batch ? `Sending message to ${e.NickName} has failed!` : 'Failed to send message.');
|
await this.props.showMessage(batch ? `Sending message to ${e.NickName} has failed!` : '消息发送失败');
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -114,7 +114,7 @@ export default class MessageInput extends Component {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// In batch mode just show the failed message
|
// In batch mode just show the failed message
|
||||||
showMessage('Failed to send image.');
|
showMessage('发送图片失败');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,9 +25,9 @@ export default class Avatar extends Component {
|
|||||||
className="disabledDrag"
|
className="disabledDrag"
|
||||||
src="assets/images/offline.png" />
|
src="assets/images/offline.png" />
|
||||||
|
|
||||||
<h1>Oops, seems like you are offline!</h1>
|
<h1>离线了离线了!</h1>
|
||||||
|
|
||||||
<button onClick={e => window.location.reload()}>Reload</button>
|
<button onClick={e => window.location.reload()}>尝试重新加载</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -145,7 +145,7 @@ export default class UserList extends Component {
|
|||||||
return (
|
return (
|
||||||
<li className={classes.notfound}>
|
<li className={classes.notfound}>
|
||||||
<img src="assets/images/crash.png" />
|
<img src="assets/images/crash.png" />
|
||||||
<h3>Can't find any people matching '{searching}'</h3>
|
<h3>没有搜索到 '{searching}'</h3>
|
||||||
</li>
|
</li>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -180,7 +180,7 @@ export default class UserList extends Component {
|
|||||||
autoFocus={true}
|
autoFocus={true}
|
||||||
onKeyUp={e => this.navigation(e)}
|
onKeyUp={e => this.navigation(e)}
|
||||||
onInput={e => this.search(e.target.value)}
|
onInput={e => this.search(e.target.value)}
|
||||||
placeholder="Type to Search..."
|
placeholder="输入需要搜索的对象"
|
||||||
ref="input"
|
ref="input"
|
||||||
type="text" />
|
type="text" />
|
||||||
|
|
||||||
|
@ -27,18 +27,18 @@ export default class AddFriend extends Component {
|
|||||||
onCancel={e => close()}
|
onCancel={e => close()}
|
||||||
show={show}>
|
show={show}>
|
||||||
<ModalBody className={classes.container}>
|
<ModalBody className={classes.container}>
|
||||||
Send friend request first
|
发送好友请求
|
||||||
|
|
||||||
<input
|
<input
|
||||||
autoFocus={true}
|
autoFocus={true}
|
||||||
defaultValue={`Hallo, im ${me && me.User.NickName}`}
|
defaultValue={`你好,我是 ${me && me.User.NickName}`}
|
||||||
ref="input"
|
ref="input"
|
||||||
type="text" />
|
type="text" />
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<button onClick={e => this.addFriend()}>Send</button>
|
<button onClick={e => this.addFriend()}>发送</button>
|
||||||
|
|
||||||
<button onClick={e => close()}>Cancel</button>
|
<button onClick={e => close()}>取消</button>
|
||||||
</div>
|
</div>
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
@ -88,7 +88,7 @@ export default class AddMember extends Component {
|
|||||||
onCancel={e => this.close()}
|
onCancel={e => this.close()}
|
||||||
show={this.props.show}>
|
show={this.props.show}>
|
||||||
<ModalBody className={classes.container}>
|
<ModalBody className={classes.container}>
|
||||||
Add Members
|
添加群组
|
||||||
|
|
||||||
<div className={classes.avatars}>
|
<div className={classes.avatars}>
|
||||||
{
|
{
|
||||||
@ -110,10 +110,10 @@ export default class AddMember extends Component {
|
|||||||
<button
|
<button
|
||||||
disabled={!this.state.selected.length}
|
disabled={!this.state.selected.length}
|
||||||
onClick={e => this.add(this.state.selected)}>
|
onClick={e => this.add(this.state.selected)}>
|
||||||
Add
|
添加
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button onClick={e => this.close()}>Cancel</button>
|
<button onClick={e => this.close()}>取消</button>
|
||||||
</div>
|
</div>
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
@ -103,7 +103,7 @@ export default class BatchSend extends Component {
|
|||||||
<input
|
<input
|
||||||
autoFocus={true}
|
autoFocus={true}
|
||||||
onInput={e => this.search(e.target.value)}
|
onInput={e => this.search(e.target.value)}
|
||||||
placeholder="Batch to send message, Choose one or more user."
|
placeholder="批量发送消息,选择一个或多个用户"
|
||||||
type="text" />
|
type="text" />
|
||||||
|
|
||||||
<span>
|
<span>
|
||||||
@ -126,7 +126,7 @@ export default class BatchSend extends Component {
|
|||||||
(searching && filtered.length === 0) && (
|
(searching && filtered.length === 0) && (
|
||||||
<div className={classes.notfound}>
|
<div className={classes.notfound}>
|
||||||
<img src="assets/images/crash.png" />
|
<img src="assets/images/crash.png" />
|
||||||
<h1>Can't find any people matching '{searching}'</h1>
|
<h1>不能找到 '{searching}'</h1>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -49,14 +49,14 @@ export default class ConfirmImagePaste extends Component {
|
|||||||
fullscreen={true}
|
fullscreen={true}
|
||||||
show={show}>
|
show={show}>
|
||||||
<ModalBody className={classes.container}>
|
<ModalBody className={classes.container}>
|
||||||
Send image ?
|
发送图片 ?
|
||||||
|
|
||||||
<img src={image} />
|
<img src={image} />
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<input onKeyUp={e => this.navigation(e)} id="imageInputHidden" style={{'zIndex': '-1', 'position': 'absolute', 'top': '-20px'}} />
|
<input onKeyUp={e => this.navigation(e)} id="imageInputHidden" style={{'zIndex': '-1', 'position': 'absolute', 'top': '-20px'}} />
|
||||||
<button onClick={e => ok()}>Send</button>
|
<button onClick={e => ok()}>发送</button>
|
||||||
<button onClick={e => cancel()}>Cancel</button>
|
<button onClick={e => cancel()}>取消</button>
|
||||||
</div>
|
</div>
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
@ -82,7 +82,7 @@ export default class Contacts extends Component {
|
|||||||
<div className={clazz(classes.container, classes.notfound)}>
|
<div className={clazz(classes.container, classes.notfound)}>
|
||||||
<div className={classes.inner}>
|
<div className={classes.inner}>
|
||||||
<img src="assets/images/crash.png" />
|
<img src="assets/images/crash.png" />
|
||||||
<h1>Can't find any people matching '{query}'</h1>
|
<h1>找不到 '{query}'</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -11,7 +11,7 @@ export default class Placeholder extends Component {
|
|||||||
className={classes.button}
|
className={classes.button}
|
||||||
href="mailto:var.845541909@qq.com?Subject=WeWeChat%20Feedback"
|
href="mailto:var.845541909@qq.com?Subject=WeWeChat%20Feedback"
|
||||||
target="_blank">
|
target="_blank">
|
||||||
Send Feedback
|
发送反馈
|
||||||
<i className="icon-ion-ios-email-outline" />
|
<i className="icon-ion-ios-email-outline" />
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ export default class Placeholder extends Component {
|
|||||||
className={classes.button}
|
className={classes.button}
|
||||||
href="https://gitee.com/spark-community-works-collections/wewechat-plus-plus"
|
href="https://gitee.com/spark-community-works-collections/wewechat-plus-plus"
|
||||||
target="_blank">
|
target="_blank">
|
||||||
Fork on Gitee
|
查看代码
|
||||||
<i className="icon-ion-fork-repo" />
|
<i className="icon-ion-fork-repo" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -103,7 +103,7 @@ export default class Forward extends Component {
|
|||||||
发送消息
|
发送消息
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button onClick={e => this.close()}>Cancel</button>
|
<button onClick={e => this.close()}>取消</button>
|
||||||
</div>
|
</div>
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
@ -155,7 +155,7 @@ export default class ChatContent extends Component {
|
|||||||
return `
|
return `
|
||||||
<div class="${classes.invalidEmoji}">
|
<div class="${classes.invalidEmoji}">
|
||||||
<div></div>
|
<div></div>
|
||||||
<span>Send an emoji, view it on mobile</span>
|
<span>不支持的emoji,请在其他客户端查看</span>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@ -201,7 +201,7 @@ export default class ChatContent extends Component {
|
|||||||
console.error('Invalid video message: %o', message);
|
console.error('Invalid video message: %o', message);
|
||||||
|
|
||||||
return `
|
return `
|
||||||
Receive an invalid video message, please see the console output.
|
收到无法解析的视频消息,请参阅控制台输出
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,7 +215,7 @@ export default class ChatContent extends Component {
|
|||||||
|
|
||||||
return `
|
return `
|
||||||
<div class="${classes.transfer}">
|
<div class="${classes.transfer}">
|
||||||
<h4>Money Transfer</h4>
|
<h4>转账消息</h4>
|
||||||
<span>💰 ${transfer.money}</span>
|
<span>💰 ${transfer.money}</span>
|
||||||
<p>如需收钱,请打开手机微信确认收款。</p>
|
<p>如需收钱,请打开手机微信确认收款。</p>
|
||||||
</div>
|
</div>
|
||||||
@ -229,7 +229,7 @@ export default class ChatContent extends Component {
|
|||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
return `
|
return `
|
||||||
<div class="${classes.file}" data-id="${message.MsgId}">
|
<div class="${classes.file}" data-id="${message.MsgId}">
|
||||||
|
|
||||||
<img src="assets/images/filetypes/${helper.getFiletypeIcon(file.extension)}" class="disabledDrag" />
|
<img src="assets/images/filetypes/${helper.getFiletypeIcon(file.extension)}" class="disabledDrag" />
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
@ -257,7 +257,7 @@ export default class ChatContent extends Component {
|
|||||||
return `
|
return `
|
||||||
<div class="${classes.locationSharing}">
|
<div class="${classes.locationSharing}">
|
||||||
<i class="icon-ion-ios-location"></i>
|
<i class="icon-ion-ios-location"></i>
|
||||||
Location sharing, Please check your phone.
|
位置分享,请查看其他客户端
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
@ -485,7 +485,7 @@ export default class ChatContent extends Component {
|
|||||||
var user = this.props.user;
|
var user = this.props.user;
|
||||||
var menu = new remote.Menu.buildFromTemplate([
|
var menu = new remote.Menu.buildFromTemplate([
|
||||||
{
|
{
|
||||||
label: 'Toggle the conversation',
|
label: '切换对话',
|
||||||
click: () => {
|
click: () => {
|
||||||
this.props.toggleConversation();
|
this.props.toggleConversation();
|
||||||
}
|
}
|
||||||
@ -535,7 +535,7 @@ export default class ChatContent extends Component {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (counter) {
|
if (counter) {
|
||||||
tips.innerHTML = `You has ${counter} unread messages.`;
|
tips.innerHTML = `你有${counter}个未读消息`;
|
||||||
tips.classList.add(classes.show);
|
tips.classList.add(classes.show);
|
||||||
} else {
|
} else {
|
||||||
tips.classList.remove(classes.show);
|
tips.classList.remove(classes.show);
|
||||||
@ -573,7 +573,7 @@ export default class ChatContent extends Component {
|
|||||||
let counter = viewport.querySelectorAll(`.${classes.message}.unread`).length;
|
let counter = viewport.querySelectorAll(`.${classes.message}.unread`).length;
|
||||||
|
|
||||||
if (counter) {
|
if (counter) {
|
||||||
tips.innerHTML = `You has ${counter} unread messages.`;
|
tips.innerHTML = `你有${counter}个未读消息`;
|
||||||
tips.classList.add(classes.show);
|
tips.classList.add(classes.show);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -209,7 +209,7 @@ export default class SearchBar extends Component {
|
|||||||
onFocus={e => this.filter(e.target.value)}
|
onFocus={e => this.filter(e.target.value)}
|
||||||
onInput={e => this.filter(e.target.value)}
|
onInput={e => this.filter(e.target.value)}
|
||||||
onKeyUp={e => this.navigation(e)}
|
onKeyUp={e => this.navigation(e)}
|
||||||
placeholder="Search ..."
|
placeholder="搜索 ..."
|
||||||
ref="search"
|
ref="search"
|
||||||
type="text" />
|
type="text" />
|
||||||
{
|
{
|
||||||
|
@ -195,7 +195,7 @@ export default class Layout extends Component {
|
|||||||
|
|
||||||
<i className="icon-ion-ios-cloud-upload-outline" />
|
<i className="icon-ion-ios-cloud-upload-outline" />
|
||||||
|
|
||||||
<h2>Drop your file here</h2>
|
<h2>将文件拖到此处</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -24,8 +24,8 @@ export default class Login extends Component {
|
|||||||
src={this.props.avatar} />
|
src={this.props.avatar} />
|
||||||
}
|
}
|
||||||
|
|
||||||
<p>Scan successful</p>
|
<p>扫码成功</p>
|
||||||
<p>Confirm login on mobile WeChat</p>
|
<p>请在手机微信上确认登陆</p>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ export default class Members extends Component {
|
|||||||
(searching && filtered.length === 0) && (
|
(searching && filtered.length === 0) && (
|
||||||
<div className={classes.notfound}>
|
<div className={classes.notfound}>
|
||||||
<img src="assets/images/crash.png" />
|
<img src="assets/images/crash.png" />
|
||||||
<h1>Can't find any people matching '{searching}'</h1>
|
<h1>找不到 '{searching}'</h1>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -114,10 +114,10 @@ export default class NewChat extends Component {
|
|||||||
<button
|
<button
|
||||||
disabled={!this.state.selected.length}
|
disabled={!this.state.selected.length}
|
||||||
onClick={e => this.chat()}>
|
onClick={e => this.chat()}>
|
||||||
Chat
|
发送消息
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button onClick={e => this.close()}>Cancel</button>
|
<button onClick={e => this.close()}>取消</button>
|
||||||
</div>
|
</div>
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
@ -75,7 +75,7 @@ class UserInfo extends Component {
|
|||||||
});
|
});
|
||||||
this.toggleEdit(false);
|
this.toggleEdit(false);
|
||||||
} else {
|
} else {
|
||||||
this.props.showMessage('Failed to set remark name.');
|
this.props.showMessage('设置备注失败');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,7 +221,7 @@ class UserInfo extends Component {
|
|||||||
autoFocus={true}
|
autoFocus={true}
|
||||||
defaultValue={RemarkName}
|
defaultValue={RemarkName}
|
||||||
onKeyPress={e => this.handleEnter(e)}
|
onKeyPress={e => this.handleEnter(e)}
|
||||||
placeholder="Type the remark name"
|
placeholder="设置备注"
|
||||||
ref="input"
|
ref="input"
|
||||||
type="text" />
|
type="text" />
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user