From 1de3969391c3821d4ad671e23f0f98712d254d4e Mon Sep 17 00:00:00 2001 From: jas0ncn Date: Mon, 24 Sep 2018 23:28:45 +0800 Subject: [PATCH] Add: settings page --- src/containers/Settings/components/index.ts | 0 src/containers/Settings/index.tsx | 22 +++++++++++-- src/containers/Settings/style.scss | 12 +++++++ src/containers/Sidebar/index.tsx | 8 ++--- src/containers/Sidebar/style.scss | 6 ++-- src/i18n/en_US.ts | 31 ++++++++++++++++++ src/i18n/index.ts | 35 +++++++++------------ src/i18n/zh_CN.ts | 31 ++++++++++++++++++ 8 files changed, 115 insertions(+), 30 deletions(-) create mode 100644 src/containers/Settings/components/index.ts create mode 100644 src/containers/Settings/style.scss create mode 100644 src/i18n/en_US.ts create mode 100644 src/i18n/zh_CN.ts diff --git a/src/containers/Settings/components/index.ts b/src/containers/Settings/components/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/containers/Settings/index.tsx b/src/containers/Settings/index.tsx index 66db212..4c032ce 100644 --- a/src/containers/Settings/index.tsx +++ b/src/containers/Settings/index.tsx @@ -1,7 +1,25 @@ import * as React from 'react' +import { Header, Card } from '@components' +import { translate } from 'react-i18next' +import { I18nProps } from '@i18n' + +class Settings extends React.Component { + + state = { + startAtLogin: false + } -export default class Settings extends React.Component<{}, {}> { render () { - return 'Settings' + const { t } = this.props + + return ( +
+
+ + +
+ ) } } + +export default translate(['Settings'])(Settings) diff --git a/src/containers/Settings/style.scss b/src/containers/Settings/style.scss new file mode 100644 index 0000000..c53e635 --- /dev/null +++ b/src/containers/Settings/style.scss @@ -0,0 +1,12 @@ +@import '~@styles/variables'; + +.proxies-list { + margin: 10px 0; + display: flex; + flex-wrap: wrap; + list-style: none; + + li { + margin: 20px 15px 20px 0; + } +} diff --git a/src/containers/Sidebar/index.tsx b/src/containers/Sidebar/index.tsx index 18e2c3d..4fe70c4 100644 --- a/src/containers/Sidebar/index.tsx +++ b/src/containers/Sidebar/index.tsx @@ -18,9 +18,9 @@ class Sidebar extends React.Component { render () { const { routes, t } = this.props return ( -
- -
    +
    + +
      { routes.map( ({ path, name, exact }) => ( @@ -36,4 +36,4 @@ class Sidebar extends React.Component { } } -export default translate(['slidebar'])(Sidebar) +export default translate(['SideBar'])(Sidebar) diff --git a/src/containers/Sidebar/style.scss b/src/containers/Sidebar/style.scss index 471356e..02d6b40 100644 --- a/src/containers/Sidebar/style.scss +++ b/src/containers/Sidebar/style.scss @@ -1,6 +1,6 @@ @import '~@styles/variables'; -.slidebar { +.sidebar { display: flex; flex-direction: column; align-items: center; @@ -8,13 +8,13 @@ width: 140px; } -.slidebar-logo { +.sidebar-logo { margin-top: 50px; width: 60px; height: 60px; } -.slidebar-menu { +.sidebar-menu { display: flex; flex-direction: column; margin-top: 12px; diff --git a/src/i18n/en_US.ts b/src/i18n/en_US.ts new file mode 100644 index 0000000..4bbd3da --- /dev/null +++ b/src/i18n/en_US.ts @@ -0,0 +1,31 @@ +export default { + SideBar: { + Proxies: 'Proxies', + Overview: 'Overview', + Logs: 'Logs', + Rules: 'Rules', + Settings: 'Setting' + }, + Settings: { + title: 'Settings', + labels: { + startAtLogin: 'Start at login', + language: 'language', + setAsSystemProxy: 'Set as system proxy', + allowConnectFromLan: 'Allow connect from Lan', + proxyMode: 'Mode', + socketProxyPort: 'Socket proxy port', + httpProxyPort: 'HTTP proxy port', + externalController: 'External controller' + }, + values: { + cn: '中文', + en: 'English', + global: 'Global', + rules: 'Rules', + direct: 'Direct' + }, + versionString: 'Current ClashX is the latest version:{{version}}', + checkUpdate: 'Check Update' + } +} diff --git a/src/i18n/index.ts b/src/i18n/index.ts index 8bbf091..8a35a40 100644 --- a/src/i18n/index.ts +++ b/src/i18n/index.ts @@ -1,30 +1,23 @@ import * as i18n from 'i18next' import * as LanguageDetector from 'i18next-browser-languagedetector' -const options = { - fallbackLng: 'en', +// locales +import en_US from './en_US' +import zh_CN from './zh_CN' + +const options = { + fallbackLng: 'en_US', + + ns: [ + 'SideBar', + 'Settings' + ], - ns: ['slidebar'], resources: { - en: { - slidebar: { - Proxies: 'Proxies', - Overview: 'Overview', - Logs: 'Logs', - Rules: 'Rules', - Settings: 'Setting' - } - }, - 'zh-CN': { - slidebar: { - Proxies: '代理', - Overview: '总览', - Logs: '日志', - Rules: '规则', - Settings: '设置' - } - } + en: en_US, + zh: zh_CN }, + react: { wait: true } diff --git a/src/i18n/zh_CN.ts b/src/i18n/zh_CN.ts new file mode 100644 index 0000000..b534aea --- /dev/null +++ b/src/i18n/zh_CN.ts @@ -0,0 +1,31 @@ +export default { + SideBar: { + Proxies: '代理', + Overview: '总览', + Logs: '日志', + Rules: '规则', + Settings: '设置' + }, + Settings: { + title: '设置', + labels: { + startAtLogin: '开机时启动', + language: '语言', + setAsSystemProxy: '设置为系统代理', + allowConnectFromLan: '允许来自局域网的连接', + proxyMode: '代理模式', + socketProxyPort: 'Socket 代理端口', + httpProxyPort: 'HTTP 代理端口', + externalController: '外部控制设置' + }, + values: { + cn: '中文', + en: 'English', + global: '全局', + rules: '规则', + direct: '直连' + }, + versionString: '当前 ClashX 已是最新版本:{{version}}', + checkUpdate: '检查更新' + } +}