diff --git a/package.json b/package.json
index e3fc0e8..0e2ba3d 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
   "description": "make weweChat great again!!!",
   "main": "main.js",
   "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 .",
     "css-lint": "stylelint --fix src/**/*.css",
     "lint": "yarn css-lint && yarn js-lint",
@@ -54,7 +54,7 @@
     },
     "linux": {
       "icon": "../resource",
-      "category": "Chat",
+      "category": "Network",
       "executableName": "wewechat",
       "target": [
         "deb",
@@ -75,9 +75,8 @@
     },
     "publish": [
       {
-        "provider": "github",
-        "owner": "riceneeder",
-        "repo": "weweChat"
+        "provider": "generic",
+        "url": "https://gitee.com/spark-community-works-collections/wewechat-plus-plus/raw/master/"
       }
     ]
   },
diff --git a/src/index.html b/src/index.html
index 528d63a..7ce36dd 100644
--- a/src/index.html
+++ b/src/index.html
@@ -5,6 +5,13 @@
     <meta charset="utf-8">
     <title>weweChat</title>
 </head>
+<style>
+.darkmode-layer {
+    width: 100%;
+    height: 1px;
+    top: -1px;
+}
+</style>
 <body>
     <div id="root"></div>
     <script>
diff --git a/src/js/components/MessageInput/index.js b/src/js/components/MessageInput/index.js
index ce9e819..4fca9b2 100644
--- a/src/js/components/MessageInput/index.js
+++ b/src/js/components/MessageInput/index.js
@@ -29,7 +29,7 @@ export default class MessageInput extends Component {
             && user.length === 1
             && user.slice(-1).pop().UserName === this.props.me.UserName
         ) {
-            this.props.showMessage('Can\'t send messages to yourself.');
+            this.props.showMessage('不能向自己发送消息');
             return false;
         }
 
@@ -62,7 +62,7 @@ export default class MessageInput extends Component {
                     );
 
                     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;
@@ -114,7 +114,7 @@ export default class MessageInput extends Component {
                     continue;
                 }
                 // In batch mode just show the failed message
-                showMessage('Failed to send image.');
+                showMessage('发送图片失败');
             }
         }
     }
diff --git a/src/js/components/Offline/index.js b/src/js/components/Offline/index.js
index 33cb8c1..9f8dc32 100644
--- a/src/js/components/Offline/index.js
+++ b/src/js/components/Offline/index.js
@@ -25,9 +25,9 @@ export default class Avatar extends Component {
                         className="disabledDrag"
                         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>
         );
diff --git a/src/js/components/UserList/index.js b/src/js/components/UserList/index.js
index ec39025..f0dc044 100644
--- a/src/js/components/UserList/index.js
+++ b/src/js/components/UserList/index.js
@@ -145,7 +145,7 @@ export default class UserList extends Component {
             return (
                 <li className={classes.notfound}>
                     <img src="assets/images/crash.png" />
-                    <h3>Can't find any people matching '{searching}'</h3>
+                    <h3>没有搜索到 '{searching}'</h3>
                 </li>
             );
         }
@@ -180,7 +180,7 @@ export default class UserList extends Component {
                     autoFocus={true}
                     onKeyUp={e => this.navigation(e)}
                     onInput={e => this.search(e.target.value)}
-                    placeholder="Type to Search..."
+                    placeholder="输入需要搜索的对象"
                     ref="input"
                     type="text" />
 
diff --git a/src/js/pages/AddFriend/index.js b/src/js/pages/AddFriend/index.js
index 5a8ce07..c2bd694 100644
--- a/src/js/pages/AddFriend/index.js
+++ b/src/js/pages/AddFriend/index.js
@@ -27,18 +27,18 @@ export default class AddFriend extends Component {
                 onCancel={e => close()}
                 show={show}>
                 <ModalBody className={classes.container}>
-                    Send friend request first
+                    发送好友请求
 
                     <input
                         autoFocus={true}
-                        defaultValue={`Hallo, im ${me && me.User.NickName}`}
+                        defaultValue={`你好,我是 ${me && me.User.NickName}`}
                         ref="input"
                         type="text" />
 
                     <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>
                 </ModalBody>
             </Modal>
diff --git a/src/js/pages/AddMember/index.js b/src/js/pages/AddMember/index.js
index b6f5e05..60d4380 100644
--- a/src/js/pages/AddMember/index.js
+++ b/src/js/pages/AddMember/index.js
@@ -88,7 +88,7 @@ export default class AddMember extends Component {
                 onCancel={e => this.close()}
                 show={this.props.show}>
                 <ModalBody className={classes.container}>
-                    Add Members
+                    添加群组
 
                     <div className={classes.avatars}>
                         {
@@ -110,10 +110,10 @@ export default class AddMember extends Component {
                         <button
                             disabled={!this.state.selected.length}
                             onClick={e => this.add(this.state.selected)}>
-                            Add
+                            添加
                         </button>
 
-                        <button onClick={e => this.close()}>Cancel</button>
+                        <button onClick={e => this.close()}>取消</button>
                     </div>
                 </ModalBody>
             </Modal>
diff --git a/src/js/pages/BatchSend/index.js b/src/js/pages/BatchSend/index.js
index cc8b4a7..6be79fa 100644
--- a/src/js/pages/BatchSend/index.js
+++ b/src/js/pages/BatchSend/index.js
@@ -103,7 +103,7 @@ export default class BatchSend extends Component {
                     <input
                         autoFocus={true}
                         onInput={e => this.search(e.target.value)}
-                        placeholder="Batch to send message, Choose one or more user."
+                        placeholder="批量发送消息,选择一个或多个用户"
                         type="text" />
 
                     <span>
@@ -126,7 +126,7 @@ export default class BatchSend extends Component {
                         (searching && filtered.length === 0) && (
                             <div className={classes.notfound}>
                                 <img src="assets/images/crash.png" />
-                                <h1>Can't find any people matching '{searching}'</h1>
+                                <h1>不能找到 '{searching}'</h1>
                             </div>
                         )
                     }
diff --git a/src/js/pages/ConfirmImagePaste/index.js b/src/js/pages/ConfirmImagePaste/index.js
index c8225f8..4aeeaff 100644
--- a/src/js/pages/ConfirmImagePaste/index.js
+++ b/src/js/pages/ConfirmImagePaste/index.js
@@ -49,14 +49,14 @@ export default class ConfirmImagePaste extends Component {
                 fullscreen={true}
                 show={show}>
                 <ModalBody className={classes.container}>
-                    Send image ?
+                    发送图片 ?
 
                     <img src={image} />
 
                     <div>
                         <input onKeyUp={e => this.navigation(e)} id="imageInputHidden" style={{'zIndex': '-1', 'position': 'absolute', 'top': '-20px'}} />
-                        <button onClick={e => ok()}>Send</button>
-                        <button onClick={e => cancel()}>Cancel</button>
+                        <button onClick={e => ok()}>发送</button>
+                        <button onClick={e => cancel()}>取消</button>
                     </div>
                 </ModalBody>
             </Modal>
diff --git a/src/js/pages/Contacts/index.js b/src/js/pages/Contacts/index.js
index 8c9e92b..03adfbd 100644
--- a/src/js/pages/Contacts/index.js
+++ b/src/js/pages/Contacts/index.js
@@ -82,7 +82,7 @@ export default class Contacts extends Component {
                 <div className={clazz(classes.container, classes.notfound)}>
                     <div className={classes.inner}>
                         <img src="assets/images/crash.png" />
-                        <h1>Can't find any people matching '{query}'</h1>
+                        <h1>找不到 '{query}'</h1>
                     </div>
                 </div>
             );
diff --git a/src/js/pages/Footer/Settings.js b/src/js/pages/Footer/Settings.js
index 4cd98b3..7f324dd 100644
--- a/src/js/pages/Footer/Settings.js
+++ b/src/js/pages/Footer/Settings.js
@@ -11,7 +11,7 @@ export default class Placeholder extends Component {
                     className={classes.button}
                     href="mailto:var.845541909@qq.com?Subject=WeWeChat%20Feedback"
                     target="_blank">
-                    Send Feedback
+                    发送反馈
                     <i className="icon-ion-ios-email-outline" />
                 </a>
 
@@ -19,7 +19,7 @@ export default class Placeholder extends Component {
                     className={classes.button}
                     href="https://gitee.com/spark-community-works-collections/wewechat-plus-plus"
                     target="_blank">
-                    Fork on Gitee
+                    查看代码
                     <i className="icon-ion-fork-repo" />
                 </a>
             </div>
diff --git a/src/js/pages/Forward/index.js b/src/js/pages/Forward/index.js
index ffef11d..39c3754 100644
--- a/src/js/pages/Forward/index.js
+++ b/src/js/pages/Forward/index.js
@@ -103,7 +103,7 @@ export default class Forward extends Component {
                             发送消息
                         </button>
 
-                        <button onClick={e => this.close()}>Cancel</button>
+                        <button onClick={e => this.close()}>取消</button>
                     </div>
                 </ModalBody>
             </Modal>
diff --git a/src/js/pages/Home/ChatContent/index.js b/src/js/pages/Home/ChatContent/index.js
index a64159f..24ae55f 100644
--- a/src/js/pages/Home/ChatContent/index.js
+++ b/src/js/pages/Home/ChatContent/index.js
@@ -155,7 +155,7 @@ export default class ChatContent extends Component {
                 return `
                     <div class="${classes.invalidEmoji}">
                         <div></div>
-                        <span>Send an emoji, view it on mobile</span>
+                        <span>不支持的emoji,请在其他客户端查看</span>
                     </div>
                 `;
 
@@ -201,7 +201,7 @@ export default class ChatContent extends Component {
                     console.error('Invalid video message: %o', message);
 
                     return `
-                        Receive an invalid video message, please see the console output.
+                        收到无法解析的视频消息,请参阅控制台输出
                     `;
                 }
 
@@ -215,7 +215,7 @@ export default class ChatContent extends Component {
 
                 return `
                     <div class="${classes.transfer}">
-                        <h4>Money Transfer</h4>
+                        <h4>转账消息</h4>
                         <span>💰 ${transfer.money}</span>
                         <p>如需收钱,请打开手机微信确认收款。</p>
                     </div>
@@ -229,7 +229,7 @@ export default class ChatContent extends Component {
                 /* eslint-disable */
                 return `
                     <div class="${classes.file}" data-id="${message.MsgId}">
-                        
+
                         <img src="assets/images/filetypes/${helper.getFiletypeIcon(file.extension)}" class="disabledDrag" />
 
                         <div>
@@ -257,7 +257,7 @@ export default class ChatContent extends Component {
                 return `
                     <div class="${classes.locationSharing}">
                         <i class="icon-ion-ios-location"></i>
-                        Location sharing, Please check your phone.
+                        位置分享,请查看其他客户端
                     </div>
                 `;
         }
@@ -485,7 +485,7 @@ export default class ChatContent extends Component {
         var user = this.props.user;
         var menu = new remote.Menu.buildFromTemplate([
             {
-                label: 'Toggle the conversation',
+                label: '切换对话',
                 click: () => {
                     this.props.toggleConversation();
                 }
@@ -535,7 +535,7 @@ export default class ChatContent extends Component {
         });
 
         if (counter) {
-            tips.innerHTML = `You has ${counter} unread messages.`;
+            tips.innerHTML = `你有${counter}个未读消息`;
             tips.classList.add(classes.show);
         } else {
             tips.classList.remove(classes.show);
@@ -573,7 +573,7 @@ export default class ChatContent extends Component {
                 let counter = viewport.querySelectorAll(`.${classes.message}.unread`).length;
 
                 if (counter) {
-                    tips.innerHTML = `You has ${counter} unread messages.`;
+                    tips.innerHTML = `你有${counter}个未读消息`;
                     tips.classList.add(classes.show);
                 }
                 return;
diff --git a/src/js/pages/Home/SearchBar/index.js b/src/js/pages/Home/SearchBar/index.js
index ff68760..3b0250f 100644
--- a/src/js/pages/Home/SearchBar/index.js
+++ b/src/js/pages/Home/SearchBar/index.js
@@ -209,7 +209,7 @@ export default class SearchBar extends Component {
                     onFocus={e => this.filter(e.target.value)}
                     onInput={e => this.filter(e.target.value)}
                     onKeyUp={e => this.navigation(e)}
-                    placeholder="Search ..."
+                    placeholder="搜索 ..."
                     ref="search"
                     type="text" />
                 {
diff --git a/src/js/pages/Layout.js b/src/js/pages/Layout.js
index 1d9f4ab..8e29318 100644
--- a/src/js/pages/Layout.js
+++ b/src/js/pages/Layout.js
@@ -195,7 +195,7 @@ export default class Layout extends Component {
 
                         <i className="icon-ion-ios-cloud-upload-outline" />
 
-                        <h2>Drop your file here</h2>
+                        <h2>将文件拖到此处</h2>
                     </div>
                 </div>
             </div>
diff --git a/src/js/pages/Login/index.js b/src/js/pages/Login/index.js
index d43de03..4149236 100644
--- a/src/js/pages/Login/index.js
+++ b/src/js/pages/Login/index.js
@@ -24,8 +24,8 @@ export default class Login extends Component {
                         src={this.props.avatar} />
                 }
 
-                <p>Scan successful</p>
-                <p>Confirm login on mobile WeChat</p>
+                <p>扫码成功</p>
+                <p>请在手机微信上确认登陆</p>
             </div>
         );
     }
diff --git a/src/js/pages/Members/index.js b/src/js/pages/Members/index.js
index 369abf3..18c018d 100644
--- a/src/js/pages/Members/index.js
+++ b/src/js/pages/Members/index.js
@@ -68,7 +68,7 @@ export default class Members extends Component {
                         (searching && filtered.length === 0) && (
                             <div className={classes.notfound}>
                                 <img src="assets/images/crash.png" />
-                                <h1>Can't find any people matching '{searching}'</h1>
+                                <h1>找不到 '{searching}'</h1>
                             </div>
                         )
                     }
diff --git a/src/js/pages/NewChat/index.js b/src/js/pages/NewChat/index.js
index 50bfc03..eb05881 100644
--- a/src/js/pages/NewChat/index.js
+++ b/src/js/pages/NewChat/index.js
@@ -114,10 +114,10 @@ export default class NewChat extends Component {
                         <button
                             disabled={!this.state.selected.length}
                             onClick={e => this.chat()}>
-                            Chat
+                            发送消息
                         </button>
 
-                        <button onClick={e => this.close()}>Cancel</button>
+                        <button onClick={e => this.close()}>取消</button>
                     </div>
                 </ModalBody>
             </Modal>
diff --git a/src/js/pages/UserInfo/index.js b/src/js/pages/UserInfo/index.js
index 387747d..9509388 100644
--- a/src/js/pages/UserInfo/index.js
+++ b/src/js/pages/UserInfo/index.js
@@ -75,7 +75,7 @@ class UserInfo extends Component {
             });
             this.toggleEdit(false);
         } else {
-            this.props.showMessage('Failed to set remark name.');
+            this.props.showMessage('设置备注失败');
         }
     }
 
@@ -221,7 +221,7 @@ class UserInfo extends Component {
                                 autoFocus={true}
                                 defaultValue={RemarkName}
                                 onKeyPress={e => this.handleEnter(e)}
-                                placeholder="Type the remark name"
+                                placeholder="设置备注"
                                 ref="input"
                                 type="text" />
                         )