diff --git a/BUILD.md b/BUILD.md index f7d70eaa..3af47228 100644 --- a/BUILD.md +++ b/BUILD.md @@ -23,7 +23,7 @@ make ```batch REM 首先把 %QTROOT%/bin 和 你的 MinGW/bin 文件夹添加到 PATH 里面 -REM 附上本人配置: +REM 示例配置: REM SET PATH=%PATH%;D:\Qt\5.12.3\mingw73_32\bin\;D:\Qt\Tools\mingw730_32\bin\ SET PATH=%PATH%;Qt安装目录\Qt版本号\编译器类型\bin;Qt安装目录\Tools\编译器类型\bin diff --git a/ChangeLogs/CHANGELOG-v1.0.md b/ChangeLogs/CHANGELOG-v1.0.md new file mode 100644 index 00000000..014c6bda --- /dev/null +++ b/ChangeLogs/CHANGELOG-v1.0.md @@ -0,0 +1,33 @@ +# Version 1.0 CHANGELOG + +**CURRENT VERSION: ** *[v1.0.1](https://github.com/lhy0403/Qv2ray/releases/tag/v1.0.1)* + +------- + +**2019-07-14**: *v1.0.1* 修复一个拼写错误,该错误源自 [`0e9b90f`](https://github.com/lhy0403/Qv2ray/commit/0e9b90fb116b790156314a21a6ef1abc8d60fa63#diff-c3f4a6d32c4ab34067ba5fa647341c6aR12) 提交 + +**2019-07-11**: *v1.0.0* 发布第一个 RC 修改 MacOS 默认文件位置 + +**2019-07-09**: *v0.9.9b* 发布第一个公开测试版本 [v0.9.9b](https://github.com/lhy0403/Qv2ray/releases/tag/v0.9.9b) + +**2019-07-08**: dev 分支的 [`v0.9.2a`](https://github.com/lhy0403/Qv2ray/releases/tag/v0.9.2a) 版本现在可以使用 GUI 修改配置,并做到动态重载配置(包括入站设置,日志,Mux选项)此版本完成了所有翻译工作,添加了双击配置列表即可启动对应配置的功能 + +**2019-07-07**: [Commit: [9b02ff](https://github.com/lhy0403/Qv2ray/commit/9b02ff9da8f96325bafa08958ba12c0dff66e715) ] 现在可以启动导入的配置文件 (包括导入现有文件和 `vmess://` 协议),手动添加配置尚未实现,入站设置现在只能通过编辑配置文件完成 (Linux: `~/.qv2ray/Qv2ray.conf`, MacOS & Windows: 程序当前文件夹),此版本部分翻译不完整 + +**2019-07-04**: 我们终于摆脱了对于 Python 的依赖,现在 Qv2ray 可以自行解析 `vmess://` 协议 [WIP] + +**2019-07-03**: 主配置文件序列化/反序列化工作完成,并添加更多协议配置 + +**2019-07-02**: 等待上游依赖完成更新 [JSON 序列化 std::list](https://github.com/xyz347/x2struct/issues/11#issuecomment-507671091) + +**2019-07-01**: 休息了几天,主要是去关注别的项目了。现在开始重构 v2ray 交互部分。 + +**2019-06-24**: Mac OS 测试构建完成,合并到开发分支 [dev](https://github.com/lhy0403/Qv2ray/tree/dev) + +**2019-06-24**: 新建分支 MacOS-Build 开始测试 MacOS 构建,当前状态:![Build Status](https://travis-ci.com/lhy0403/Qv2ray.svg?branch=MacOS-Build) + +**2019-06-23**: UI 结构已经固定,新建分支 translations 进行翻译 UI + +**2019-06-23**: 基本 UI 完成,切换到 [dev](https://github.com/lhy0403/Qv2ray/tree/dev) 分支进行代码实现 + +**2019-06-22**: 当前开发分支[ui-implementation](https://github.com/lhy0403/Qv2ray/tree/ui-implementation) - 用于实现基本 UI diff --git a/README.md b/README.md index dda40dd1..63c59a9e 100644 --- a/README.md +++ b/README.md @@ -10,57 +10,50 @@ Appveyor (Windows): https://ci.appveyor.com/project/lhy0403/qv2ray Travis per machine badge provided by: https://github.com/exogen/badge-matrix ( @exogen ) -| OS | 主分支 [master](https://github.com/lhy0403/Qv2ray/tree/master) | 开发分支 [dev](https://github.com/lhy0403/Qv2ray/tree/dev) | -| ------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| Linux | ![Build Status Linux in master](http://badges.herokuapp.com/travis.com/lhy0403/Qv2ray?style=flat-square&env=BADGE=linux&label=Linux-master&branch=master) | ![Build Status Linux in dev](http://badges.herokuapp.com/travis.com/lhy0403/Qv2ray?style=flat-square&env=BADGE=linux&label=Linux-dev&branch=dev) | -| MacOS | ![Build Status MacOS in master](http://badges.herokuapp.com/travis.com/lhy0403/Qv2ray?style=flat-square&env=BADGE=osx&label=MacOS-master&branch=master) | ![Build Status Linux in dev](http://badges.herokuapp.com/travis.com/lhy0403/Qv2ray?style=flat-square&env=BADGE=osx&label=MacOS-dev&branch=dev) | -| Windows | [![Build status](https://ci.appveyor.com/api/projects/status/i1l524ws0hiitpm4/branch/master?svg=true)](https://ci.appveyor.com/project/lhy0403/qv2ray/branch/master) | [![Build status](https://ci.appveyor.com/api/projects/status/i1l524ws0hiitpm4/branch/dev?svg=true)](https://ci.appveyor.com/project/lhy0403/qv2ray/branch/dev) | +| OS | 主分支 [master](https://github.com/lhy0403/Qv2ray/tree/master) | 开发分支 [dev](https://github.com/lhy0403/Qv2ray/tree/dev) | 版本分支 [v1](https://github.com/lhy0403/Qv2ray/tree/version-v1) | +| ------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| Linux | ![Build Status Linux in master](http://badges.herokuapp.com/travis.com/lhy0403/Qv2ray?style=flat-square&env=BADGE=linux&label=Linux-master&branch=master) | ![Build Status Linux in dev](http://badges.herokuapp.com/travis.com/lhy0403/Qv2ray?style=flat-square&env=BADGE=linux&label=Linux-dev&branch=dev) | ![Build Status Linux in v1.0.0](http://badges.herokuapp.com/travis.com/lhy0403/Qv2ray?style=flat-square&env=BADGE=linux&label=Linux-v1&branch=version-v1) | +| MacOS | ![Build Status MacOS in master](http://badges.herokuapp.com/travis.com/lhy0403/Qv2ray?style=flat-square&env=BADGE=osx&label=MacOS-master&branch=master) | ![Build Status Linux in dev](http://badges.herokuapp.com/travis.com/lhy0403/Qv2ray?style=flat-square&env=BADGE=osx&label=MacOS-dev&branch=dev) | ![Build Status Linux in dev](http://badges.herokuapp.com/travis.com/lhy0403/Qv2ray?style=flat-square&env=BADGE=osx&label=MacOS-v1&branch=version-v1) | +| Windows | [![Build status](https://ci.appveyor.com/api/projects/status/i1l524ws0hiitpm4/branch/master?svg=true)](https://ci.appveyor.com/project/lhy0403/qv2ray/branch/master) | [![Build status](https://ci.appveyor.com/api/projects/status/i1l524ws0hiitpm4/branch/dev?svg=true)](https://ci.appveyor.com/project/lhy0403/qv2ray/branch/dev) | [![Build status](https://ci.appveyor.com/api/projects/status/i1l524ws0hiitpm4/branch/version-v1?svg=true)](https://ci.appveyor.com/project/lhy0403/qv2ray/branch/version-v1) | -## 项目依赖包 +## 1. 依赖 -- Qt >= 5.12 -- gcc >=8 (Linux 需要 c++11 支持) 或 MinGW (Windows) 或 clang (MacOS) -- QtCreator (推荐) +- 运行依赖: -## 最近更新内容 + - ArchLinux -详见 开发分支 [dev](https://github.com/lhy0403/Qv2ray/tree/dev) 或 [Release](https://github.com/lhy0403/Qv2ray/releases) + - 在 `v2ray` 包的基础上 额外需要 `v2ray-domain-list-community` 和 `v2ray-geoip` 进行分流代理 -### 最新 + Issue: https://github.com/lhy0403/Qv2ray/issues/23#issuecomment-511384858 -**2019-07-11**: 发布第一个 RC +- 编译依赖 -### 历史 + - Qt >= 5.12 + - gcc >=8 (Linux 需要 c++11 支持) 或 MinGW (Windows) 或 clang (MacOS) + - QtCreator (推荐) -**2019-07-09**: 发布第一个公开测试版本 [v0.9.9b](https://github.com/lhy0403/Qv2ray/releases/tag/v0.9.9b) +## 2. 编译方法 -**2019-07-08**: dev 分支的 [`v0.9.2a`](https://github.com/lhy0403/Qv2ray/releases/tag/v0.9.2a) 版本现在可以使用 GUI 修改配置,并做到动态重载配置(包括入站设置,日志,Mux选项)此版本完成了所有翻译工作,添加了双击配置列表即可启动对应配置的功能 + - 详见 [BUILD.md](BUILD.md) -**2019-07-07**: [Commit: [9b02ff](https://github.com/lhy0403/Qv2ray/commit/9b02ff9da8f96325bafa08958ba12c0dff66e715) ] 现在可以启动导入的配置文件 (包括导入现有文件和 `vmess://` 协议),手动添加配置尚未实现,入站设置现在只能通过编辑配置文件完成 (Linux: `~/.qv2ray/Qv2ray.conf`, MacOS & Windows: 程序当前文件夹),此版本部分翻译不完整 +## 3. 最近更新内容 -**2019-07-04**: 我们终于摆脱了对于 Python 的依赖,现在 Qv2ray 可以自行解析 `vmess://` 协议 [WIP] +### a. 最新 -**2019-07-03**: 主配置文件序列化/反序列化工作完成,并添加更多协议配置 +**2019-07-23**: v1.1 版本添加了自动启动功能 -**2019-07-02**: 等待上游依赖完成更新 [JSON 序列化 std::list](https://github.com/xyz347/x2struct/issues/11#issuecomment-507671091) +**2019-07-11**: 准备 dev 分支开始 v2.0 版本 -**2019-07-01**: 休息了几天,主要是去关注别的项目了。现在开始重构 v2ray 交互部分。 +### b. 历史 -**2019-06-24**: Mac OS 测试构建完成,合并到开发分支 [dev](https://github.com/lhy0403/Qv2ray/tree/dev) +**v1.0 更新日志请见 [ChangeLog-v1](./ChangeLogs/CHANGELOG-v1.0.md)** -**2019-06-24**: 新建分支 MacOS-Build 开始测试 MacOS 构建,当前状态:![Build Status](https://travis-ci.com/lhy0403/Qv2ray.svg?branch=MacOS-Build) +### c. 更多内容 -**2019-06-23**: UI 结构已经固定,新建分支 translations 进行翻译 UI - -**2019-06-23**: 基本 UI 完成,切换到 [dev](https://github.com/lhy0403/Qv2ray/tree/dev) 分支进行代码实现 - -**2019-06-22**: 当前开发分支[ui-implementation](https://github.com/lhy0403/Qv2ray/tree/ui-implementation) - 用于实现基本 UI +- 详见 [dev 开发分支](https://github.com/lhy0403/Qv2ray/tree/dev) 或 [Release 发布版](https://github.com/lhy0403/Qv2ray/releases) ---------------------- - -## 编译 - - 详见 [BUILD.md](BUILD.md) -## License +## 4. License [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) diff --git a/src/QvGUIConfigObjects.h b/src/QvGUIConfigObjects.h index bcfae60d..5e72385e 100644 --- a/src/QvGUIConfigObjects.h +++ b/src/QvGUIConfigObjects.h @@ -5,15 +5,14 @@ #include #include "QvCoreConfigObjects.h" -// using namespace std; #define LOG(arg) cout << arg << endl; -// Global Qv2ray Macros #define QV2RAY_VERSION 1 +#define QV2RAY_VERSION_STRING "v1.1.0" #define QV2RAY_CONFIG_PATH (Qv2ray::Utils::GetConfigDirPath() + "/") #define QV2RAY_MAIN_CONFIG_FILE_PATH (QV2RAY_CONFIG_PATH + "Qv2ray.conf") -#define QV2RAY_GENERATED_CONFIG_DIRPATH (QV2RAY_CONFIG_PATH + "genrerated/") +#define QV2RAY_GENERATED_CONFIG_DIRPATH (QV2RAY_CONFIG_PATH + "generated/") #define QV2RAY_GENERATED_CONFIG_FILE_PATH (QV2RAY_GENERATED_CONFIG_DIRPATH + "config.gen.json") #define QV2RAY_VCORE_LOG_DIRNAME "logs/" @@ -33,6 +32,13 @@ using namespace std; p.setColor(QPalette::Text, Qt::black); \ ui->obj->setPalette(p); +#ifdef __WIN32 +#define NEWLINE "\r\n" +#else +#define NEWLINE "\r" +#endif + + namespace Qv2ray { namespace QvConfigModels @@ -61,13 +67,14 @@ namespace Qv2ray }; struct Qv2Config_v1 { - string v = "1"; + string v = "1.1"; bool runAsRoot; int logLevel; // string language; string v2CorePath; string v2AssetsPath; + string autoStartConfig; // bool proxyDefault; bool proxyCN; @@ -81,6 +88,7 @@ namespace Qv2ray Qv2Config_v1(): runAsRoot(false), logLevel(), proxyDefault(), proxyCN(), withLocalDNS(), inBoundSettings(), configs(), subscribes(), mux() { } Qv2Config_v1(string lang, string exePath, string assetsPath, int log, QvBasicInboundSetting _inBoundSettings): Qv2Config_v1() { + autoStartConfig = ""; language = lang; v2CorePath = exePath; v2AssetsPath = assetsPath; @@ -95,7 +103,7 @@ namespace Qv2ray proxyDefault = true; withLocalDNS = true; } - XTOSTRUCT(O(v, runAsRoot, logLevel, language, v2CorePath, v2AssetsPath, proxyDefault, proxyCN, withLocalDNS, dnsList, inBoundSettings, mux, configs, subscribes)) + XTOSTRUCT(O(v, runAsRoot, logLevel, language, autoStartConfig, v2CorePath, v2AssetsPath, proxyDefault, proxyCN, withLocalDNS, dnsList, inBoundSettings, mux, configs, subscribes)) }; } } @@ -107,4 +115,4 @@ using namespace Qv2ray; using namespace Qv2ray::V2ConfigModels; using namespace Qv2ray::QvConfigModels; -#endif // HCONFIGOBJECTS_H +#endif // QCONFIGOBJECTS_H diff --git a/src/main.cpp b/src/main.cpp index ee2b9653..d260f13d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -116,6 +116,5 @@ int main(int argc, char *argv[]) // Show MainWindow MainWindow w; - w.show(); return _qApp.exec(); } diff --git a/src/w_MainWindow.cpp b/src/w_MainWindow.cpp index ca414b3e..f83ab4a1 100644 --- a/src/w_MainWindow.cpp +++ b/src/w_MainWindow.cpp @@ -48,15 +48,33 @@ MainWindow::MainWindow(QWidget *parent) hTray->setContextMenu(trayMenu); hTray->show(); LoadConnections(); + // - if(!vinstance->ValidateV2rayCoreExe()){ + if (!vinstance->ValidateV2rayCoreExe()) { on_prefrencesBtn_clicked(); } + + auto conf = GetGlobalConfig(); + + if (conf.autoStartConfig != "" && QList::fromStdList(conf.configs).contains(conf.autoStartConfig)) { + CurrentConnectionName = QString::fromStdString(conf.autoStartConfig); + auto item = ui->connectionListWidget->findItems(QString::fromStdString(conf.autoStartConfig), Qt::MatchExactly).front(); + item->setSelected(true); + ui->connectionListWidget->setCurrentItem(item); + on_connectionListWidget_itemClicked(item); + on_startButton_clicked(); + ToggleVisibility(); + this->hide(); + trayMenu->actions()[0]->setText(tr("#Show")); + } else { + this->show(); + } } void MainWindow::LoadConnections() { - connections = GetConnections(GetGlobalConfig().configs); + auto conf = GetGlobalConfig(); + connections = GetConnections(conf.configs); ui->connectionListWidget->clear(); for (int i = 0; i < connections.count(); i++) { @@ -65,6 +83,7 @@ void MainWindow::LoadConnections() } void MainWindow::reload_config() { + ui->retranslateUi(this); bool isRunning = vinstance->Status == STARTED; SaveGlobalConfig(); @@ -101,6 +120,7 @@ void MainWindow::on_startButton_clicked() bool startFlag = this->vinstance->Start(); if (startFlag) { + this->hTray->showMessage(tr("Qv2ray"), tr("#ConnectedToServer ") + CurrentConnectionName); ui->statusLabel->setText(tr("#Started") + ": " + CurrentConnectionName); } @@ -168,6 +188,12 @@ void MainWindow::on_activatedTray(QSystemTrayIcon::ActivationReason reason) break; + case QSystemTrayIcon::DoubleClick: +#ifdef __APPLE__ + ToggleVisibility(); +#endif + break; + default: break; } diff --git a/src/w_MainWindow.ui b/src/w_MainWindow.ui index d7a5fa42..165b9147 100644 --- a/src/w_MainWindow.ui +++ b/src/w_MainWindow.ui @@ -9,8 +9,8 @@ 0 0 - 607 - 457 + 644 + 522 diff --git a/src/w_PrefrencesWindow.cpp b/src/w_PrefrencesWindow.cpp index 01806362..715cfedb 100644 --- a/src/w_PrefrencesWindow.cpp +++ b/src/w_PrefrencesWindow.cpp @@ -12,6 +12,7 @@ PrefrencesWindow::PrefrencesWindow(QWidget *parent) : QDialog(parent), ui(new Ui::PrefrencesWindow) { ui->setupUi(this); + ui->qvVersion->setText(QV2RAY_VERSION_STRING); CurrentConfig = GetGlobalConfig(); // ui->languageComboBox->setCurrentText(QString::fromStdString(CurrentConfig.language)); @@ -63,9 +64,18 @@ PrefrencesWindow::PrefrencesWindow(QWidget *parent) : QDialog(parent), ui->DNSListTxt->clear(); foreach (auto dnsStr, CurrentConfig.dnsList) { - ui->DNSListTxt->appendPlainText(QString::fromStdString(dnsStr) + "\r\n"); + auto str = QString::fromStdString(dnsStr).trimmed(); + + if (!str.isEmpty()) { + ui->DNSListTxt->appendPlainText(str); + } } + foreach (auto connection, CurrentConfig.configs) { + ui->autoStartCombo->addItem(QString::fromStdString(connection)); + } + + ui->autoStartCombo->setCurrentText(QString::fromStdString(CurrentConfig.autoStartConfig)); finishedLoading = true; } @@ -124,8 +134,7 @@ void PrefrencesWindow::on_httpAuthCB_stateChanged(int checked) void PrefrencesWindow::on_runAsRootCheckBox_stateChanged(int arg1) { #ifdef __linux - // Set UID and GID in *nix - // The file is actually not here + // Set UID and GID for linux QString vCorePath = QString::fromStdString(CurrentConfig.v2CorePath); QFileInfo v2rayCoreExeFile(vCorePath); @@ -146,6 +155,7 @@ void PrefrencesWindow::on_runAsRootCheckBox_stateChanged(int arg1) #else Q_UNUSED(arg1) + ui->runAsRootCheckBox->setChecked(false); // No such uid gid thing on Windows and MacOS is in TODO .... QvMessageBox(this, tr("Prefrences"), tr("RunAsRootNotOnWindows")); #endif @@ -161,6 +171,13 @@ void PrefrencesWindow::on_socksAuthCB_stateChanged(int checked) void PrefrencesWindow::on_languageComboBox_currentTextChanged(const QString &arg1) { CurrentConfig.language = arg1.toStdString(); + + if (QApplication::installTranslator(getTranslator(QString::fromStdString(arg1.toStdString())))) { + LOG("Loaded translations " + arg1.toStdString()) + ui->retranslateUi(this); + } else { + //QvMessageBox(this, tr("#Prefrences"), tr("#SwitchTranslationError")); + } } void PrefrencesWindow::on_logLevelComboBox_currentIndexChanged(int index) @@ -276,3 +293,13 @@ void PrefrencesWindow::on_vCoreAssetsPathTxt_textChanged(const QString &arg1) { CurrentConfig.v2AssetsPath = arg1.toStdString(); } + +void PrefrencesWindow::on_autoStartCombo_currentTextChanged(const QString &arg1) +{ + CurrentConfig.autoStartConfig = arg1.toStdString(); +} + +void PrefrencesWindow::on_aboutQt_clicked() +{ + QApplication::aboutQt(); +} diff --git a/src/w_PrefrencesWindow.h b/src/w_PrefrencesWindow.h index f539cf94..9492ca4f 100644 --- a/src/w_PrefrencesWindow.h +++ b/src/w_PrefrencesWindow.h @@ -70,6 +70,10 @@ class PrefrencesWindow : public QDialog void on_vCoreAssetsPathTxt_textChanged(const QString &arg1); + void on_autoStartCombo_currentTextChanged(const QString &arg1); + + void on_aboutQt_clicked(); + private: bool finishedLoading = false; Qv2ray::QvConfigModels::Qv2Config_v1 CurrentConfig; diff --git a/src/w_PrefrencesWindow.ui b/src/w_PrefrencesWindow.ui index 90bad961..196ed7f8 100644 --- a/src/w_PrefrencesWindow.ui +++ b/src/w_PrefrencesWindow.ui @@ -6,14 +6,14 @@ 0 0 - 714 - 375 + 700 + 370 - 663 - 325 + 700 + 370 @@ -122,14 +122,14 @@ - + #VCoreExePath - + @@ -143,14 +143,14 @@ - + #VCoreAssetsPath - + @@ -164,6 +164,22 @@ + + + + #AutoStartEntry + + + + + + + + + + + + @@ -451,6 +467,229 @@ + + + #About + + + + + + + 0 + 0 + + + + + 256 + 256 + + + + background-image: url(:/icons/Qv2ray.ico);background-repeat: no-repeat; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + QFormLayout::WrapAllRows + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + 17 + + + + Qv2ray + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + #Version: + + + + + + + + 10 + + + + #QvVersion + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + #OfficialRepo: + + + + + + + + 0 + 0 + + + + + 10 + + + + <html><head/><body><p><a href="https://github.com/lhy0403/Qv2ray"><span style=" text-decoration: underline; color:#2980b9;">https://github.com/lhy0403/Qv2ray</span></a></p></body></html> + + + Qt::RichText + + + false + + + true + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + #License: + + + + + + + + 0 + 0 + + + + + 10 + + + + <html><head/><body><p><a href="https://www.gnu.org/licenses/gpl-3.0.txt"><span style=" text-decoration: underline; color:#2980b9;">GPLv3 (https://www.gnu.org/licenses/gpl-3.0.txt)</span></a></p></body></html> + + + Qt::RichText + + + false + + + true + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 206 + 0 + + + + #AboutQt + + + + + + + + diff --git a/translations/en-US.ts b/translations/en-US.ts index 4db1a76a..08622f33 100644 --- a/translations/en-US.ts +++ b/translations/en-US.ts @@ -211,14 +211,14 @@ Key - - + + #JsonPrettify Prettify JSON - - + + #JsonContainsError JSON is in a bad syntax @@ -316,126 +316,127 @@ MainWindow + Qv2ray - + #Start Start - - - + + + #Stop Stop - - - + + + #Restart Restart - + #ClearLog Clear Log - + #Status Status - - + + #Stopped Stopped - + #HostList Host List - + #ImportConfig Import Config - + #AddConfig Add Config - + #RemoveConfig Remove Config - + #ConfigDetail Detailed Config Info - + #Host Host - + #Port Port - + #UUID UUID - + #Transport Transport Settings - - + + #ConnectionSettings Connection Settings - + #Log Log - + #ManuallyCreateConnection Manually Create Connection - + #ImportConnection Import Config File - + #Exit Exit - - + + #Preferences Preferences - + #Hide Hide @@ -445,23 +446,29 @@ Quit - + #NoConfigSelected No Config Selected - + #PleaseSelectAConfig Please select a config from the list - + + #ConnectedToServer + Connected to server + + + #Started Started - - + + + #Show Show @@ -470,101 +477,151 @@ PrefrencesWindow - - + + Prefrences Preferences - + #General General - + #Language Language - + zh-CN - + en-US - + #RunAsRoot Run v2ray as root - - - - - - - - - - + + + + + + + + + + #Enabled Enabled - + #LogLevel Log Level - + debug Debug - + info Info - + warning Warning - + error Error - - + + #Select Select - + + #AutoStartEntry + Auto Connect To + + + #ProxyGlobal Use Proxy as Default - + #ProxyCN Use Proxy for China Mainland - + #WithLocalDNS Use localhost DNS - + #DNSList DNS Address List + + + #About + About + + + + Qv2ray + Qv2ray + + + + #Version: + Version: + + + + #QvVersion + + + + + #OfficialRepo: + Official Repo: + + + + #License: + License: + + + + <html><head/><body><p><a href="https://www.gnu.org/licenses/gpl-3.0.txt"><span style=" text-decoration: underline; color:#2980b9;">GPLv3 (https://www.gnu.org/licenses/gpl-3.0.txt)</span></a></p></body></html> + + + + + #AboutQt + About Qt + + + + <html><head/><body><p><a href="https://github.com/lhy0403/Qv2ray"><span style=" text-decoration: underline; color:#2980b9;">https://github.com/lhy0403/Qv2ray</span></a></p></body></html> + + Add Add @@ -578,96 +635,96 @@ Clear - + none Do not use - + #VCoreExePath V2ray Kernal Path - + #VCoreAssetsPath V2ray Assets Path - + #MuxSettings Mux Settings - + #InBoundSettings Inbound Settings - + #ListenIP Listen IP - + #HTTPInBoundSettings HTTP Inbound Settings - + #SOCKSBoundSettings SOCKS Inbound Settings - + #RouteSettings Route Settings - + #Concurrency Maximum Connections - - + + #Port Port - - + + #Username Username - - + + #Auth Authentication - - + + #Password Password - + PortNumbersCannotBeSame Port numbers cannot be the same - + RunAsRootNotOnWindows Run as root is not avaliable on Windows Platform - + #OpenVCoreFile Open v2rat-core file - + OpenVAssetsDir Open v2ray assets folder @@ -675,12 +732,12 @@ QObject - + AnotherInstanceRunning Another instance is already running - + Qv2ray diff --git a/translations/zh-CN.ts b/translations/zh-CN.ts index c3c1e7bf..71430d7c 100644 --- a/translations/zh-CN.ts +++ b/translations/zh-CN.ts @@ -211,14 +211,14 @@ 密钥 - - + + #JsonPrettify 美化 JSON - - + + #JsonContainsError JSON 格式错误 @@ -316,126 +316,127 @@ MainWindow + Qv2ray - + #Start 启动 - - - + + + #Stop 停止 - - - + + + #Restart 重新启动 - + #ClearLog 清除日志 - + #Status 状态 - - + + #Stopped 已停止 - + #HostList 服务器列表 - + #ImportConfig 导入配置 - + #AddConfig 添加配置 - + #RemoveConfig 移除配置 - + #ConfigDetail 配置详细信息 - + #Host 域名 - + #Port 端口 - + #UUID UUID - + #Transport 传输设置 - - + + #ConnectionSettings 连接设置 - + #Log 日志 - + #ManuallyCreateConnection 手动添加配置 - + #ImportConnection 导入配置文件 - + #Exit 退出 - - + + #Preferences 首选项 - + #Hide 隐藏 @@ -445,23 +446,29 @@ 退出 - + #NoConfigSelected 没有选择配置文件 - + #PleaseSelectAConfig 请从列表中选择配置 - + + #ConnectedToServer + 已连接到服务器 + + + #Started 已启动 - - + + + #Show 显示 @@ -470,101 +477,151 @@ PrefrencesWindow - - + + Prefrences 首选项 - + #General 一般 - + #Language 语言 - + zh-CN - + en-US - + #RunAsRoot 使用 root 启动 - - - - - - - - - - + + + + + + + + + + #Enabled 启用 - + #LogLevel 日志等级 - + debug 调试 - + info 信息 - + warning 警告 - + error 错误 - - + + #Select 选择 - + + #AutoStartEntry + 自动连接到 + + + #ProxyGlobal 默认走代理 - + #ProxyCN 中国大陆使用代理 - + #WithLocalDNS 使用本地 DNS - + #DNSList DNS 列表 + + + #About + 关于 + + + + Qv2ray + Qv2ray + + + + #Version: + 版本号: + + + + #QvVersion + + + + + #OfficialRepo: + 官方代码仓库: + + + + #License: + 开源协议: + + + + <html><head/><body><p><a href="https://www.gnu.org/licenses/gpl-3.0.txt"><span style=" text-decoration: underline; color:#2980b9;">GPLv3 (https://www.gnu.org/licenses/gpl-3.0.txt)</span></a></p></body></html> + + + + + #AboutQt + 关于 Qt + + + + <html><head/><body><p><a href="https://github.com/lhy0403/Qv2ray"><span style=" text-decoration: underline; color:#2980b9;">https://github.com/lhy0403/Qv2ray</span></a></p></body></html> + + Add 添加 @@ -578,96 +635,96 @@ 清空 - + none 不使用 - + #VCoreExePath v2ray 内核程序位置 - + #VCoreAssetsPath v2ray 资源文件夹 - + #MuxSettings Mux 设置 - + #InBoundSettings 入站设置 - + #ListenIP 监听 IP - + #HTTPInBoundSettings HTTP 入站设置 - + #SOCKSBoundSettings SOCKS 入站设置 - + #RouteSettings 路由配置 - + #Concurrency 最大并发连接数 - - + + #Port 端口 - - + + #Username 用户名 - - + + #Auth 鉴权 - - + + #Password 密码 - + PortNumbersCannotBeSame 端口号不能相同 - + RunAsRootNotOnWindows Windows 平台不支持这个选项 - + #OpenVCoreFile 打开 v2ray 内核文件 - + OpenVAssetsDir 打开 v2ray 资源文件夹 @@ -675,12 +732,12 @@ QObject - + AnotherInstanceRunning 另一个实例正在运行 - + Qv2ray