diff --git a/Qv2ray.pro b/Qv2ray.pro index c04c5b1b..53cd2a0d 100644 --- a/Qv2ray.pro +++ b/Qv2ray.pro @@ -63,8 +63,7 @@ RESOURCES += \ resources.qrc TRANSLATIONS += \ - translations/zh-CN.ts \ - translations/en-US.ts + translations/source.ts RC_ICONS += ./icons/Qv2ray.ico ICON = ./icons/Qv2ray.icns diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 00000000..5bac8fa0 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,3 @@ +files: + - source: /translations/source.ts + translation: /translations/%locale%.ts diff --git a/resources.qrc b/resources.qrc index 51786e22..6859921b 100644 --- a/resources.qrc +++ b/resources.qrc @@ -1,7 +1,5 @@ - translations/zh-CN.qm - translations/en-US.qm icons/Qv2ray.ico icons/add_connection_btn.png icons/import_connection_btn.png diff --git a/src/main.cpp b/src/main.cpp index 0966c6cd..0ed8b73f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,8 +13,12 @@ using namespace Qv2ray::QvConfigModels; bool initQv() { - /// Qv2ray Config Path and ends with "/" +#ifdef QT_DEBUG + QString configPath = QDir::homePath() + "/.qv2ray_debug"; +#else QString configPath = QDir::homePath() + "/.qv2ray"; +#endif + /// Qv2ray Config Path and ends with "/" QString exeDefaultPath = configPath + "/vcore/v2ray"; QString v2AssetsPath = configPath + "/vcore"; // @@ -123,16 +127,16 @@ int main(int argc, char *argv[]) #ifdef __APPLE__ _qApp.setStyle("fusion"); #endif + auto lang = GetGlobalConfig().language; - if (_qApp.installTranslator(getTranslator(QString::fromStdString(GetGlobalConfig().language)))) { - LOG(MODULE_UI, "Loaded translations " + GetGlobalConfig().language) - } else if (_qApp.installTranslator(getTranslator("en-US"))) { - LOG(MODULE_UI, "Loaded default translations") - } else { - QvMessageBox( - nullptr, "Failed to load translations 无法加载语言文件", - "Failed to load translations, user experience may be downgraded. \r\n" - "无法加载语言文件,用户体验可能会降级."); + if (lang != "en-US") { + if (_qApp.installTranslator(getTranslator(QSTRING(lang)))) { + LOG(MODULE_UI, "Loaded translations " + lang) + } else { + QvMessageBox( + nullptr, "Failed to load selected language.", + "You may want to select another language in the Prefrences Window.\r\n"); + } } RunGuard guard("Qv2ray-Instance-Identifier" diff --git a/src/w_ImportConfig.ui b/src/w_ImportConfig.ui index 2f2add5e..e0508ffa 100644 --- a/src/w_ImportConfig.ui +++ b/src/w_ImportConfig.ui @@ -37,7 +37,7 @@ - #Name + Name @@ -47,7 +47,7 @@ - #ImportFrom + Import Source @@ -61,17 +61,17 @@ - #ExistingFile + File - #VMessConnectionString + VMess String - #Subcription + Subscription Link @@ -96,7 +96,7 @@ - #Path + Path @@ -112,7 +112,7 @@ - #SelectFile + Select @@ -121,14 +121,14 @@ - #Inbound + Inbound - #KeepImportedInbounds + Keep imported inbound settings @@ -141,7 +141,7 @@ - #VMessConnectionString + VMess Connection String @@ -155,7 +155,7 @@ - #SubscriptionLink + Subscription Link diff --git a/src/w_MainWindow.cpp b/src/w_MainWindow.cpp index 3f0c6c62..e5997ef0 100644 --- a/src/w_MainWindow.cpp +++ b/src/w_MainWindow.cpp @@ -35,14 +35,14 @@ MainWindow::MainWindow(QWidget *parent) hTray->setIcon(this->windowIcon()); hTray->setToolTip(TRAY_TOOLTIP_PREFIX); // - QAction *action_Tray_ShowHide = new QAction(this->windowIcon(), tr("#Hide"), this); - QAction *action_Tray_Quit = new QAction(tr("#Quit"), this); - QAction *action_Tray_Start = new QAction(tr("#Connect"), this); - QAction *action_Tray_Restart = new QAction(tr("#Reconnect"), this); - QAction *action_Tray_Stop = new QAction(tr("#Disconnect"), this); + QAction *action_Tray_ShowHide = new QAction(this->windowIcon(), tr("Hide"), this); + QAction *action_Tray_Quit = new QAction(tr("Quit"), this); + QAction *action_Tray_Start = new QAction(tr("Connect"), this); + QAction *action_Tray_Restart = new QAction(tr("Reconnect"), this); + QAction *action_Tray_Stop = new QAction(tr("Disconnect"), this); // - QAction *action_RCM_RenameConnection = new QAction(tr("#Rename"), this); - QAction *action_RCM_StartThis = new QAction(tr("#ConnectSelected"), this); + QAction *action_RCM_RenameConnection = new QAction(tr("Rename"), this); + QAction *action_RCM_StartThis = new QAction(tr("ConnectSelected"), this); action_Tray_Start->setEnabled(true); action_Tray_Stop->setEnabled(false); action_Tray_Restart->setEnabled(false); @@ -89,7 +89,7 @@ MainWindow::MainWindow(QWidget *parent) on_startButton_clicked(); //ToggleVisibility(); this->hide(); - trayMenu->actions()[0]->setText(tr("#Show")); + trayMenu->actions()[0]->setText(tr("Show")); } else { this->show(); } @@ -117,14 +117,14 @@ void MainWindow::VersionUpdate(QByteArray &data) if (newversion > current && newversion > ignored) { LOG(MODULE_UPDATE, "New version detected.") auto link = root["html_url"].toString(""); - auto result = QvMessageBoxAsk(this, tr("#NewReleaseVersionFound"), - tr("#NewReleaseVersionFound") + ": " + root["tag_name"].toString("") + + auto result = QvMessageBoxAsk(this, tr("NewReleaseVersionFound"), + tr("NewReleaseVersionFound") + ": " + root["tag_name"].toString("") + "\r\n" + root["name"].toString("") + "\r\n------------\r\n" + root["body"].toString("") + "\r\n------------\r\n" + - tr("#ReleaseDownloadLink") + ": " + link, QMessageBox::Ignore); + tr("ReleaseDownloadLink") + ": " + link, QMessageBox::Ignore); if (result == QMessageBox::Yes) { QDesktopServices::openUrl(QUrl::fromUserInput(link)); @@ -185,7 +185,7 @@ void MainWindow::UpdateLog() void MainWindow::on_startButton_clicked() { if (CurrentConnectionName == "") { - QvMessageBox(this, tr("#NoConfigSelected"), tr("#PleaseSelectAConfig")); + QvMessageBox(this, tr("NoConfigSelected"), tr("PleaseSelectAConfig")); return; } @@ -196,9 +196,9 @@ void MainWindow::on_startButton_clicked() bool startFlag = this->vinstance->Start(); if (startFlag) { - this->hTray->showMessage("Qv2ray", tr("#ConnectedToServer") + " " + CurrentConnectionName, hTray->icon()); - hTray->setToolTip(TRAY_TOOLTIP_PREFIX + tr("#ConnectedToServer") + ": " + CurrentConnectionName); - ui->statusLabel->setText(tr("#Connected") + ": " + CurrentConnectionName); + this->hTray->showMessage("Qv2ray", tr("ConnectedToServer") + " " + CurrentConnectionName, hTray->icon()); + hTray->setToolTip(TRAY_TOOLTIP_PREFIX + tr("ConnectedToServer") + ": " + CurrentConnectionName); + ui->statusLabel->setText(tr("Connected") + ": " + CurrentConnectionName); } trayMenu->actions()[2]->setEnabled(!startFlag); @@ -215,7 +215,7 @@ void MainWindow::on_stopButton_clicked() this->vinstance->Stop(); hTray->setToolTip(TRAY_TOOLTIP_PREFIX); QFile(QV2RAY_GENERATED_FILE_PATH).remove(); - ui->statusLabel->setText(tr("#Disconnected")); + ui->statusLabel->setText(tr("Disconnected")); ui->logText->clear(); trayMenu->actions()[2]->setEnabled(true); trayMenu->actions()[3]->setEnabled(false); @@ -235,7 +235,7 @@ void MainWindow::on_restartButton_clicked() void MainWindow::closeEvent(QCloseEvent *event) { this->hide(); - trayMenu->actions()[0]->setText(tr("#Show")); + trayMenu->actions()[0]->setText(tr("Show")); event->ignore(); } @@ -280,10 +280,10 @@ void MainWindow::ToggleVisibility() SetWindowPos(HWND(this->winId()), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); SetWindowPos(HWND(this->winId()), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); #endif - trayMenu->actions()[0]->setText(tr("#Hide")); + trayMenu->actions()[0]->setText(tr("Hide")); } else { this->hide(); - trayMenu->actions()[0]->setText(tr("#Show")); + trayMenu->actions()[0]->setText(tr("Show")); } } @@ -317,31 +317,31 @@ void MainWindow::ShowAndSetConnection(int index, bool SetConnection, bool ApplyC ui->_OutBoundTypeLabel->setText(outboundType); if (outboundType == "vmess") { - auto x = StructFromJsonString(JsonToString(outBoundRoot["settings"].toObject()["vnext"].toArray().first().toObject())); - ui->_hostLabel->setText(QSTRING(x.address)); - ui->_portLabel->setText(QSTRING(to_string(x.port))); - auto user = QList::fromStdList(x.users).first(); - auto _configString = tr("#UUID") + ": " + QSTRING(user.id) + auto Server = StructFromJsonString(JsonToString(outBoundRoot["settings"].toObject()["vnext"].toArray().first().toObject())); + ui->_hostLabel->setText(QSTRING(Server.address)); + ui->_portLabel->setText(QSTRING(to_string(Server.port))); + auto user = QList::fromStdList(Server.users).first(); + auto _configString = tr("UUID") + ": " + QSTRING(user.id) + "\r\n" - + tr("#AlterID") + ": " + QSTRING(to_string(user.alterId)) + + tr("AlterID") + ": " + QSTRING(to_string(user.alterId)) + "\r\n" - + tr("#Transport") + ": " + outBoundRoot["streamSettings"].toObject()["network"].toString(); + + tr("Transport") + ": " + outBoundRoot["streamSettings"].toObject()["network"].toString(); ui->detailInfoTxt->setPlainText(_configString); } else if (outboundType == "shadowsocks") { auto x = JsonToString(outBoundRoot["settings"].toObject()["servers"].toArray().first().toObject()); auto Server = StructFromJsonString(x); ui->_hostLabel->setText(QSTRING(Server.address)); ui->_portLabel->setText(QSTRING(to_string(Server.port))); - auto _configString = tr("#Email") + ": " + QSTRING(Server.email) + auto _configString = tr("Email") + ": " + QSTRING(Server.email) + "\r\n" - + tr("#Encryption") + ": " + QSTRING(Server.method); + + tr("Encryption") + ": " + QSTRING(Server.method); ui->detailInfoTxt->setPlainText(_configString); } else if (outboundType == "socks") { auto x = JsonToString(outBoundRoot["settings"].toObject()["servers"].toArray().first().toObject()); auto Server = StructFromJsonString(x); ui->_hostLabel->setText(QSTRING(Server.address)); ui->_portLabel->setText(QSTRING(to_string(Server.port))); - auto _configString = tr("#Username") + ": " + QSTRING(Server.users.front().user); + auto _configString = tr("Username") + ": " + QSTRING(Server.users.front().user); ui->detailInfoTxt->setPlainText(_configString); } @@ -416,7 +416,7 @@ void MainWindow::on_connectionListWidget_itemChanged(QListWidgetItem *item) auto configList = QList::fromStdList(config.configs); if (newName.trimmed().isEmpty()) { - QvMessageBox(this, tr("#RenameConnection"), tr("#CannotUseEmptyName")); + QvMessageBox(this, tr("RenameConnection"), tr("CannotUseEmptyName")); return; } @@ -425,7 +425,7 @@ void MainWindow::on_connectionListWidget_itemChanged(QListWidgetItem *item) if (originalName != newName) { if (configList.contains(newName.toStdString())) { - QvMessageBox(this, tr("#RenameConnection"), tr("#DuplicatedConnectionName")); + QvMessageBox(this, tr("RenameConnection"), tr("DuplicatedConnectionName")); return; } @@ -452,7 +452,7 @@ void MainWindow::on_connectionListWidget_itemChanged(QListWidgetItem *item) void MainWindow::on_removeConfigButton_clicked() { - if (QvMessageBoxAsk(this, tr("#RemoveConnection"), tr("#RemoveConnectionConfirm")) == QMessageBox::Yes) { + if (QvMessageBoxAsk(this, tr("RemoveConnection"), tr("RemoveConnectionConfirm")) == QMessageBox::Yes) { auto conf = GetGlobalConfig(); QList list = QList::fromStdList(conf.configs); auto currentSelected = ui->connectionListWidget->currentIndex().row(); @@ -492,7 +492,7 @@ void MainWindow::on_editConfigButton_clicked() auto index = ui->connectionListWidget->currentIndex().row(); if (index < 0) { - QvMessageBox(this, tr("#NoConfigSelected"), tr("#PleaseSelectAConfig")); + QvMessageBox(this, tr("NoConfigSelected"), tr("PleaseSelectAConfig")); return; } diff --git a/src/w_MainWindow.ui b/src/w_MainWindow.ui index dbf328f2..885355cf 100644 --- a/src/w_MainWindow.ui +++ b/src/w_MainWindow.ui @@ -44,7 +44,7 @@ - #Connect + Connect @@ -54,21 +54,21 @@ false - #Disconnect + Disconnect - #ClearLog + Clear Log - #Preferences + Prefrences @@ -91,7 +91,7 @@ - #Stopped + Stopped @@ -100,20 +100,20 @@ - #HostList + Host List - #CurrentConfigDetail + Config Details - #OutBoundType + Type @@ -127,7 +127,7 @@ - #Host + Host @@ -141,7 +141,7 @@ - #Port + Port @@ -155,7 +155,7 @@ - #DetailInfo + Detail @@ -323,7 +323,7 @@ - #Log + Log diff --git a/src/w_PrefrencesWindow.ui b/src/w_PrefrencesWindow.ui index 45ed01a2..46cbf1e4 100644 --- a/src/w_PrefrencesWindow.ui +++ b/src/w_PrefrencesWindow.ui @@ -33,13 +33,13 @@ - #General + General - #Language + Language @@ -66,7 +66,7 @@ - #RunAsRoot + Run As Root @@ -80,7 +80,7 @@ - #LogLevel + Log Level @@ -128,7 +128,7 @@ - #AutoStartEntry + Automatically Connect To @@ -144,7 +144,7 @@ - #VCoreExePath + v2ray Core Path @@ -165,7 +165,7 @@ - #VCoreAssetsPath + v2ray Assets Path @@ -187,27 +187,27 @@ - #MuxSettings + Mux Settings - #Enabled + Enabled - #Enabled + Enabled - #Concurrency + Concurrency @@ -228,7 +228,7 @@ - #InBoundSettings + InBound Settings @@ -236,7 +236,7 @@ - #ListenIP + Listen IP @@ -250,20 +250,20 @@ - #SOCKSBoundSettings + SOCKS InBound Settings - #Enabled + Enabled - #Port + Port @@ -277,21 +277,21 @@ - #Auth + Authentication - #Enabled + Enabled - #Username + Username @@ -301,7 +301,7 @@ - #Password + Password @@ -314,7 +314,7 @@ - #HTTPInBoundSettings + HTTP InBound Settings @@ -323,14 +323,14 @@ Qt::LeftToRight - #Enabled + Enabled - #Port + Port @@ -350,21 +350,21 @@ - #Auth + Authentication - #Enabled + Enabled - #Username + Username @@ -374,7 +374,7 @@ - #Password + Password @@ -403,7 +403,7 @@ - #RouteSettings + Route Settings @@ -411,42 +411,42 @@ - #ProxyGlobal + Enable Proxy - #Enabled + Enabled - #ProxyCN + Chinese Addresses - #WithLocalDNS + Use Local DNS - #Enabled + Enabled - #Enabled + Enabled @@ -458,7 +458,7 @@ - #DNSList + DNS List @@ -472,7 +472,7 @@ - #About + About @@ -542,7 +542,7 @@ - #Version: + Version: @@ -575,7 +575,7 @@ - #OfficialRepo: + Official Repo: @@ -626,7 +626,7 @@ - #License: + License: @@ -681,7 +681,7 @@ - #AboutQt + About Qt @@ -716,14 +716,14 @@ - #IgnoreNextVersion + Ingore Next Version - #CancelIngore + Cancel diff --git a/translations/en-US.ts b/translations/source.ts similarity index 64% rename from translations/en-US.ts rename to translations/source.ts index 794c8626..a75a0134 100644 --- a/translations/en-US.ts +++ b/translations/source.ts @@ -1,225 +1,226 @@ - + ConnectionEditWindow + + + #EditConnectionSettings + + - - #Host - Host + + Host + - #Port - Port + Port + - #Outbound - Outbound Type + Outbound Type + Socks - Socks + #OutBoundSettings - OutBound Settings + - #UUID - UUID + Use TLS + - - #AlterID - Alter ID + + + + + #Enabled + + + + + UUID + - - #Security - Security Settings + Alter ID + - - #Transport - Transport Settings + + + Security + + + + + Transport Method + #TransportSettings - Transport Settings + - - #Email - Email + + + Type + - - - #Password - Password + + Request + - - #EncryptionMethod - Encryption Method + + + Prettify + - - #Level - User Level + + Response + - - #OTA - One Time Auth (Outdated) - - - - - #Type - Type - - - - #Request - Request - - - - #InsertDefaultContent - Insert Default Content + + Default + - - #Response - Response + + + + Path + - - #UseTLS - Use TLS + + + Headers + - - - #Prettify - Prettify JSON + + Format: key|value + - - - - #Path - Path + + MTU + - - - #Headers - Headers + + TTI (ms) + - - #key|value format - Format: KEY|VALUE + + Uplink (MB/s) + - - #MTU - MTU + + Congestion Control + - - #TTI (ms) - TTI (ms) + + Downlink (MB/s) + - - #UplinkCapacity (MB/s) - Uplink Capacity (MB/s) + + Read Buffer (MB) + - - #Congestion - Congestion Control + + Write Buffer (MB) + + + + + Key + + + + + Mark + - #Mark - Mark + TCP Fast Open + - - #TCPFastOpen - TCP Fast Open + + tProxy + - - #TProxy - Transparent Proxy Mode + + EMail + - - - - - #Enabled - Enabled + + + Password + - - #EditConnectionSettings - Edit Connection Settings + + Encryption + - - #Username - Username + + User Level + - #JsonPreview - Preview Generated JSON + + OTA + - - #DownlinkCapacity (MB/s) - Downlink Capacity (MB/s) + + Username + - - #ReadBufferSize (MB) - Read Buffer Size (MB) - - - - #WriteBufferSize (MB) - Write Buffer Size (MB) - - - - #Key - Key + + Json Preview + #JsonPrettify - Prettify JSON + #JsonContainsError - JSON is in a bad syntax + @@ -227,99 +228,99 @@ Import file - Import file - - - - #ImportFrom - Import From - - - - #Path - Path - - - - #SelectFile - Select File + - #Name - Name + Name + + + + + Import Source + - #ExistingFile - Existing File Location + File + - - #VMessConnectionString - VMess connection string + VMess String + - #Subcription - Subscription + + Subscription Link + #Import - Import + + + + + Path + + + + + Select + - #Inbound - Inbound Settings + Inbound + - #KeepImportedInbounds - Use Inbound settings in the file + Keep imported inbound settings + - - #SubscriptionLink - Subscription Link + + VMess Connection String + TO DO IN VERSION 2 - + OpenConfigFile - Open Config File + - - #NotValidVMessProtocolString - VMess connection string is invalid + + #InvalidConfigFile + + + + + ConfigFileCheckFailed + #VMessCheck - VMess connection string check + + + + + #NotValidVMessProtocolString + #INTERNAL_ERROR - Internal Error - - - - #InvalidConfigFile - Config file contains errors - - - - ConfigFileCheckFailed - Failed to validate config file + @@ -327,267 +328,272 @@ Qv2ray - + - - #Connect - Connect + Connect + - - #Disconnect - Disconnect + Disconnect + + + + + Clear Log + + + + + Prefrences + + + + + Stopped + + + + + Host List + - #CurrentConfigDetail - Current Connection Details + Config Details + + + + + Type + + + + + Host + + + + + Port + + + + + Detail + #AddConnection - Add a connection + A - + + + + + + #ImportConnection + I - + - + #RemoveConnection - Remove a connection + R - - - - - ... - - - - - # - - - #Start - Start - - - - #Stop - Stop - - - - #Restart - Restart - - - - #ClearLog - Clear Log - - - - #Stopped - Stopped - - - - #HostList - Host List - - - - #DetailInfo - Detail Connection Info - #EditConnection - Edit Connection + - - #OutBoundType - Outbound Type + + ... + - - #Host - Host - - - - #Port - Port - - - - #Rename - Rename - - - - #Connected - Connected - - - - #Disconnected - Disconnected - - - - #UUID - UUID - - - - #AlterID - Alter ID - - - - #Transport - Transport Settings - - - - #Log - Log + + Log + #ManuallyCreateConnection - Manually Create Connection - - - - - #ImportConnection - Import Config File + #Exit - Exit + - - + #Preferences - Preferences + - - + + #Start + + + + + #Stop + + + + + #Restart + + + + + #Hide - Hide + #Quit - Quit + + + + + #Connect + #Reconnect - Reconnect + + + + + #Disconnect + + + + + #Rename + #ConnectSelected - Connect selected item + + + + + + + #Show + #NewReleaseVersionFound - Found a newer version + #ReleaseDownloadLink - New version download link + - - - + + #NoConfigSelected - No Config Selected + - - - + + #PleaseSelectAConfig - Please select a config from the list + + - #ConnectedToServer - Connected to server + - - - #RenameConnection - Rename a connection + + #Connected + - - #CannotUseEmptyName - You cannot use an empty connection name + + #Disconnected + - - #DuplicatedConnectionName - Connection name is duplicated + + #UUID + - - #RemoveConnectionConfirm - Are you sure want to remove this connection + + #AlterID + - + + #Transport + + + + #Email - Email + - + #Encryption - Encryption + - + #Username - Username + - - - - #Show - Show + + + #RenameConnection + + + + + #CannotUseEmptyName + + + + + #DuplicatedConnectionName + + + + + #RemoveConnectionConfirm + @@ -597,35 +603,95 @@ Prefrences - Preferences + - #General - General + General + - #Language - Language + Language + zh-CN - + en-US - + - #RunAsRoot - Run v2ray as root + Run As Root + + #Enabled + + + + + Log Level + + + + + none + + + + + debug + + + + + info + + + + + warning + + + + + error + + + + + Automatically Connect To + + + + + v2ray Core Path + + + + + + #Select + + + + + v2ray Assets Path + + + + + Mux Settings + + + @@ -635,246 +701,190 @@ - #Enabled - Enabled - - - - #LogLevel - Log Level - - - - debug - Debug - - - - info - Info - - - - warning - Warning - - - - error - Error - - - - - #Select - Select - - - - #AutoStartEntry - Auto Connect To - - - - #IgnoreNextVersion - Ignore Next Version - - - - #CancelIngore - Cancel Ignore - - - - #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: - - - - #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> - - - - - 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 + Enabled + - #Concurrency - Maximum Connections + Concurrency + + + + + InBound Settings + + + + + Listen IP + + + + + SOCKS InBound Settings + - #Port - Port - - - - - #Username - Username + Port + - #Auth - Authentication + Authentication + + + + + + Username + - #Password - Password + Password + + + + + HTTP InBound Settings + + + + + Route Settings + + + + + Enable Proxy + + + + + Chinese Addresses + + + + + Use Local DNS + + + + + DNS List + + + + + About + + + + + Qv2ray + + + + + Version: + + + + + Official Repo: + + + + + <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> + + + + + 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> + + + + + About Qt + + + + + Ingore Next Version + + + + + Cancel + 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 + QObject - - DependencyMissing - Dependency Missing - - - - osslDependMissing,PleaseReDownload - OpenSSL DLL is missing from the directory where Qv2ray.exe is located in, Please ReDownload the application, or contact support - - - - #AnotherInstanceRunning - Another instance is already running - - - - CoreNotFound - Core files are not found - - - - CoreFileNotFoundExplainationAt: - v2ray core file not found at here: + + #VMessDecodeError + ConfigurationError - Configuration Error + - - #VMessDecodeError - VMess string decode error + + CoreNotFound + + + + + CoreFileNotFoundExplainationAt: + + + + + DependencyMissing + + + + + osslDependMissing,PleaseReDownload + + + + + #AnotherInstanceRunning + @@ -962,13 +972,8 @@ - - #Outbounds - - - - - #AddDirect + + #Type @@ -991,7 +996,7 @@ #Port - Port + @@ -1012,10 +1017,30 @@ SubscribeEditor + + + #ConfigDetail + + + + + #Type + + + + + #Server + + + + + #Config + + #Port - Port + @@ -1030,7 +1055,7 @@ #AddConnection - Add a connection + @@ -1040,32 +1065,12 @@ #RemoveConnection - Remove a connection + R - - - #ConfigDetail - Detailed Config Info - - - - #Type - Type - - - - #Server - - - - - #Config - - diff --git a/translations/zh-CN.ts b/translations/zh-CN.ts deleted file mode 100644 index 9fc483ca..00000000 --- a/translations/zh-CN.ts +++ /dev/null @@ -1,1071 +0,0 @@ - - - - - ConnectionEditWindow - - - - #Host - 域名 - - - - #Port - 端口 - - - - #Outbound - 出站类型 - - - - Socks - Socks - - - - #OutBoundSettings - 出站设置 - - - - #UUID - UUID - - - - #AlterID - Alter ID - - - - - #Security - 安全设置 - - - - #Transport - 传输设置 - - - - #TransportSettings - 传输设置 - - - - #Email - 邮箱 - - - - - #Password - 密码 - - - - #EncryptionMethod - 加密方法 - - - - #Level - 用户等级 - - - - #OTA - 一次性验证 (过时的设置) - - - - - #Type - 类型 - - - - #Request - 请求头 - - - - - #InsertDefaultContent - 默认值 - - - - #Response - 响应头 - - - - #UseTLS - 使用 TLS - - - - - #Prettify - 格式化 JSON - - - - - - #Path - 路径 - - - - - #Headers - 头伪装 - - - - #key|value format - 格式:键|值 - - - - #MTU - 最大传输单元 - - - - #TTI (ms) - 传输时间间隔 - - - - #UplinkCapacity (MB/s) - 上行链路容量 (MB/s) - - - - #Congestion - 拥塞控制 - - - - #Mark - Mark - - - - #TCPFastOpen - TCP Fast Open - - - - #TProxy - 透明代理模式 - - - - - - - #Enabled - 启用 - - - - #EditConnectionSettings - 编辑连接设置 - - - - #Username - 用户名 - - - #JsonPreview - 生成JSON预览 - - - - #DownlinkCapacity (MB/s) - 下行链路容量 (MB/s) - - - - #ReadBufferSize (MB) - 读取缓冲区 (MB) - - - - #WriteBufferSize (MB) - 写入缓冲区 (MB) - - - - #Key - 密钥 - - - - - #JsonPrettify - 格式化 JSON - - - - - #JsonContainsError - JSON 包含语法错误 - - - - ImportConfigWindow - - - Import file - 导入文件 - - - - #ImportFrom - 导入源 - - - - #Path - 路径 - - - - #SelectFile - 选择文件 - - - - #Name - 名称 - - - - #ExistingFile - 现有文件 - - - - - #VMessConnectionString - VMess 连接字符串 - - - - #Subcription - 订阅 - - - - #Import - 导入 - - - - #Inbound - 入站设置 - - - - #KeepImportedInbounds - 使用文件中的入站设置 - - - - #SubscriptionLink - 订阅连接地址 - - - - TO DO IN VERSION 2 - - - - - OpenConfigFile - 打开配置文件 - - - - #NotValidVMessProtocolString - VMess 连接字符串不合法 - - - - - #VMessCheck - VMess 连接字符串检查 - - - - #INTERNAL_ERROR - 内部错误 - - - - #InvalidConfigFile - 配置文件中有错误 - - - - ConfigFileCheckFailed - 检查配置文件出错 - - - - MainWindow - - - Qv2ray - - - - - - #Connect - 连接 - - - - - #Disconnect - 断开连接 - - - - #CurrentConfigDetail - 当前连接详细信息 - - - - #AddConnection - 添加连接 - - - - A - - - - - I - - - - - - #RemoveConnection - 删除连接 - - - - R - - - - - ... - - - - - # - - - - - #Start - 启动 - - - - #Stop - 停止 - - - - #Restart - 重新启动 - - - - #ClearLog - 清除日志 - - - - #Stopped - 已停止 - - - - #HostList - 服务器列表 - - - - #DetailInfo - 详细信息 - - - - #EditConnection - 编辑连接 - - - - #OutBoundType - 出站类型 - - - - #Host - 域名 - - - - #Port - 端口 - - - - #Rename - 重命名 - - - - #Connected - 已连接 - - - - #Disconnected - 已断开连接 - - - - #UUID - UUID - - - - #AlterID - Alter ID - - - - #Transport - 传输设置 - - - - #Log - 日志 - - - - #ManuallyCreateConnection - 手动添加配置 - - - - - #ImportConnection - 导入配置文件 - - - - #Exit - 退出 - - - - - #Preferences - 首选项 - - - - - #Hide - 隐藏 - - - - #Quit - 退出 - - - - #Reconnect - 重新连接 - - - - #ConnectSelected - 连接当前选择的配置 - - - - - #NewReleaseVersionFound - 发现新版本 - - - - #ReleaseDownloadLink - 新版本下载链接 - - - - - - #NoConfigSelected - 没有选择配置文件 - - - - - - #PleaseSelectAConfig - 请从列表中选择配置 - - - - - #ConnectedToServer - 已连接到服务器 - - - - - #RenameConnection - 重命名连接 - - - - #CannotUseEmptyName - 不能使用空连接名 - - - - #DuplicatedConnectionName - 连接重名 - - - - #RemoveConnectionConfirm - 确定要删除连接吗 - - - - #Email - 邮箱 - - - - #Encryption - 加密方法 - - - - #Username - 用户名 - - - - - - #Show - 显示 - - - - PrefrencesWindow - - - - - Prefrences - 首选项 - - - - #General - 一般 - - - - #Language - 语言 - - - - zh-CN - - - - - en-US - - - - - #RunAsRoot - 使用 root 启动 - - - - - - - - - - - - - #Enabled - 启用 - - - - #LogLevel - 日志等级 - - - - debug - 调试 - - - - info - 信息 - - - - warning - 警告 - - - - error - 错误 - - - - - #Select - 选择 - - - - #AutoStartEntry - 自动连接到 - - - - #IgnoreNextVersion - 忽略下个版本 - - - - #CancelIngore - 取消忽略 - - - - #ProxyGlobal - 默认走代理 - - - - #ProxyCN - 中国大陆使用代理 - - - - #WithLocalDNS - 使用本地 DNS - - - - #DNSList - DNS 列表 - - - - #About - 关于 - - - - Qv2ray - Qv2ray - - - - #Version: - 版本号: - - - - #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> - - - - - 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 资源文件夹 - - - - QObject - - - DependencyMissing - 依赖项缺失 - - - - osslDependMissing,PleaseReDownload - OpenSSL 部分文件缺失,Qv2ray 将不能正常工作,请重新下载程序,或联系支持 - - - - #AnotherInstanceRunning - 另一个实例正在运行 - - - - CoreNotFound - 核心文件未找到 - - - - CoreFileNotFoundExplainationAt: - v2ray 文件在以下位置未找到: - - - - ConfigurationError - 配置出错 - - - - #VMessDecodeError - VMess 解码失败 - - - - RouteEditor - - - Dialog - - - - - #Routes - - - - - - #Type - 类型 - - - - #Outbound - 出站类型 - - - - #InBounds - - - - - #DomainOrIP - - - - - - - - - - ... - - - - - #ChangeIO - - - - - #RouteDetail - - - - - #DomainList - - - - - #IPList - - - - - #Inbounds - - - - - #FromGlobalConfig - - - - - #InboundDetail - - - - - - #Tag - - - - - #Outbounds - - - - - #AddDirect - - - - - #OutboundDetail - - - - - #EditCurrentOutbound - - - - - - #Address - - - - - - #Port - 端口 - - - - #Status - - - - - - #NoTag - - - - - w_SubscribeEditor - - - SubscribeEditor - - - - - #Port - 端口 - - - - #SubsGroupName - - - - - #SubsGroupURL - - - - - #AddConnection - 添加连接 - - - - A - - - - - #RemoveConnection - 删除连接 - - - - R - - - - - #ConfigDetail - 配置详细信息 - - - - #Type - 类型 - - - - #Server - - - - - #Config - - - -