[UI] Added ui for routes management.

This commit is contained in:
Leroy.H.Y 2019-08-23 23:33:24 +08:00
parent b0581f037a
commit 7a85c3e946
No known key found for this signature in database
GPG Key ID: 6AC1673B587DC37D
5 changed files with 834 additions and 535 deletions

View File

@ -8,28 +8,35 @@
#define UPGRADELOG(item, old, _new) LOG(MODULE_CONFIG, "Upgrading " item " from old value " + old + " to " + _new);
#define XConfLog(oldVersion, newVersion) LOG(MODULE_CONFIG, "Migrating config from version " + oldVersion + " to " + newVersion);
namespace Qv2ray {
namespace QvConfigModels {
namespace Qv2ray
{
namespace QvConfigModels
{
// Secret member
QJsonObject UpgradeConfig_Inc(int fromVersion, QJsonObject root) {
XConfLog(to_string(fromVersion), to_string(fromVersion + 1));
QJsonObject UpgradeConfig_Inc(int fromVersion, QJsonObject root)
{
XConfLog(to_string(fromVersion), to_string(fromVersion + 1))
switch (fromVersion) {
case 1:
// From 1 to 2, we changed the config_version from 'string' to 'int'
auto old_config_version = root["config_version"].toString();
root.remove("config_version");
root["config_version"] = 2;
UPGRADELOG("config_version", old_config_version.toStdString(), "2")
break;
case 1:
// From 1 to 2, we changed the config_version from 'string' to 'int'
auto old_config_version = root["config_version"].toString();
root.remove("config_version");
root["config_version"] = 2;
UPGRADELOG("config_version", old_config_version.toStdString(), "2")
break;
}
return root;
}
// Exported function
QJsonObject UpgradeConfig(int fromVersion, int toVersion, QJsonObject root) {
QJsonObject UpgradeConfig(int fromVersion, int toVersion, QJsonObject root)
{
for (int i = fromVersion; i < toVersion; i++) {
root = UpgradeConfig_Inc(i, root);
}
return root;
}

View File

@ -6,169 +6,389 @@
<rect>
<x>0</x>
<y>0</y>
<width>946</width>
<height>569</height>
<width>889</width>
<height>560</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>20</x>
<y>520</y>
<width>901</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QListWidget" name="listWidget">
<property name="geometry">
<rect>
<x>670</x>
<y>10</y>
<width>256</width>
<height>192</height>
</rect>
</property>
</widget>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>251</width>
<height>521</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>#Outbounds</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="outboundsList">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="outboundDetailGroup">
<property name="title">
<string>#OutboundDetail</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="1" column="0">
<widget class="QLabel" name="label">
<layout class="QGridLayout" name="gridLayout" columnstretch="1,2,1">
<item row="0" column="1">
<layout class="QVBoxLayout" name="routesLayout">
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>#Routes</string>
</property>
</widget>
</item>
<item>
<widget class="QTableWidget" name="tableWidget">
<column>
<property name="text">
<string>#Type</string>
</property>
</column>
<column>
<property name="text">
<string>#DomainOrIP</string>
</property>
</column>
<column>
<property name="text">
<string>#Outbound</string>
</property>
</column>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="routesControlButtons">
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QToolButton" name="toolButton_3">
<property name="text">
<string>#Tag</string>
<string>...</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/icons/add_connection_btn.png</normaloff>:/icons/add_connection_btn.png</iconset>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="outboundTagLabel">
<item>
<widget class="QToolButton" name="toolButton_4">
<property name="text">
<string/>
<string>...</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/icons/remove_connection_btn.png</normaloff>:/icons/remove_connection_btn.png</iconset>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_7">
<item>
<widget class="QPushButton" name="pushButton_5">
<property name="text">
<string>#Type</string>
<string>#ChangeIO</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="outboundTypeLabel">
<property name="text">
<string/>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>#Address</string>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="outboundAddressLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>#Port</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="outboundPortLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>24</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>#EditCurrentOutbound</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>24</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
</layout>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>#RouteDetail</string>
</property>
<layout class="QFormLayout" name="formLayout_3">
<item row="0" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>#DomainList</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>#IPList</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<layout class="QVBoxLayout" name="inboundLayout" stretch="0,1,0,1">
<item>
<widget class="QLabel" name="label_6">
<property name="text">
<string>#Inbounds</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="listWidget">
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QToolButton" name="toolButton">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/icons/add_connection_btn.png</normaloff>:/icons/add_connection_btn.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButton_2">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/icons/remove_connection_btn.png</normaloff>:/icons/remove_connection_btn.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>#FromGlobalConfig</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="outboundDetailGroup_2">
<property name="title">
<string>#InboundDetail</string>
</property>
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>#Tag</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="inboundTagLabel">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>#Type</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="inboundTypeLabel">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="0" column="2">
<layout class="QVBoxLayout" name="outboundLayout" stretch="0,1,0,1">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>#Outbounds</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="outboundsList">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QToolButton" name="toolButton_5">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/icons/add_connection_btn.png</normaloff>:/icons/add_connection_btn.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButton_6">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/icons/remove_connection_btn.png</normaloff>:/icons/remove_connection_btn.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_4">
<property name="text">
<string>#AddDirect</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="outboundDetailGroup">
<property name="title">
<string>#OutboundDetail</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>#Tag</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="outboundTagLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>24</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>#EditCurrentOutbound</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>24</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>#Type</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>#Address</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>#Port</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="outboundTypeLabel">
<property name="text">
<string>xx</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="outboundAddressLabel">
<property name="text">
<string>xx</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="outboundPortLabel">
<property name="text">
<string>xx</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="2" column="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QLabel" name="statusLabel">
<property name="text">
<string>#Status</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>

View File

@ -1,206 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>RouteEditor</class>
<widget class="QDialog" name="RouteEditor">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>946</width>
<height>569</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>20</x>
<y>520</y>
<width>901</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QListWidget" name="listWidget">
<property name="geometry">
<rect>
<x>670</x>
<y>40</y>
<width>256</width>
<height>192</height>
</rect>
</property>
</widget>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>251</width>
<height>521</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>#Outbounds</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="outboundsList">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="outboundDetailGroup">
<property name="title">
<string>#OutboundDetail</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>#Tag</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="outboundTagLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>#Type</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="outboundTypeLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>#Address</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="outboundAddressLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>#Port</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="outboundPortLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>24</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>#EditCurrentOutbound</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>24</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>RouteEditor</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>RouteEditor</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -211,14 +211,14 @@
<translation>Key</translation>
</message>
<message>
<location filename="../src/w_ConnectionEditWindow.cpp" line="395"/>
<location filename="../src/w_ConnectionEditWindow.cpp" line="406"/>
<location filename="../src/w_ConnectionEditWindow.cpp" line="398"/>
<location filename="../src/w_ConnectionEditWindow.cpp" line="409"/>
<source>#JsonPrettify</source>
<translation>Prettify JSON</translation>
</message>
<message>
<location filename="../src/w_ConnectionEditWindow.cpp" line="395"/>
<location filename="../src/w_ConnectionEditWindow.cpp" line="406"/>
<location filename="../src/w_ConnectionEditWindow.cpp" line="398"/>
<location filename="../src/w_ConnectionEditWindow.cpp" line="409"/>
<source>#JsonContainsError</source>
<translation>JSON is in a bad syntax</translation>
</message>
@ -297,18 +297,18 @@
<translation>Open Config File</translation>
</message>
<message>
<location filename="../src/w_ImportConfig.cpp" line="64"/>
<location filename="../src/w_ImportConfig.cpp" line="65"/>
<source>#NotValidVMessProtocolString</source>
<translation>VMess connection string is invalid</translation>
</message>
<message>
<location filename="../src/w_ImportConfig.cpp" line="64"/>
<location filename="../src/w_ImportConfig.cpp" line="68"/>
<location filename="../src/w_ImportConfig.cpp" line="65"/>
<location filename="../src/w_ImportConfig.cpp" line="69"/>
<source>#VMessCheck</source>
<translation>VMess connection string check</translation>
</message>
<message>
<location filename="../src/w_ImportConfig.cpp" line="68"/>
<location filename="../src/w_ImportConfig.cpp" line="69"/>
<source>#INTERNAL_ERROR</source>
<translation>Internal Error</translation>
</message>
@ -588,252 +588,252 @@
<name>PrefrencesWindow</name>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="20"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="96"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="168"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="97"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="169"/>
<source>Prefrences</source>
<translation>Preferences</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="33"/>
<location filename="../src/w_PrefrencesWindow.ui" line="36"/>
<source>#General</source>
<translation>General</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="39"/>
<location filename="../src/w_PrefrencesWindow.ui" line="42"/>
<source>#Language</source>
<translation>Language</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="53"/>
<location filename="../src/w_PrefrencesWindow.ui" line="56"/>
<source>zh-CN</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="58"/>
<location filename="../src/w_PrefrencesWindow.ui" line="61"/>
<source>en-US</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="66"/>
<location filename="../src/w_PrefrencesWindow.ui" line="69"/>
<source>#RunAsRoot</source>
<translation>Run v2ray as root</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="73"/>
<location filename="../src/w_PrefrencesWindow.ui" line="193"/>
<location filename="../src/w_PrefrencesWindow.ui" line="200"/>
<location filename="../src/w_PrefrencesWindow.ui" line="256"/>
<location filename="../src/w_PrefrencesWindow.ui" line="284"/>
<location filename="../src/w_PrefrencesWindow.ui" line="323"/>
<location filename="../src/w_PrefrencesWindow.ui" line="357"/>
<location filename="../src/w_PrefrencesWindow.ui" line="418"/>
<location filename="../src/w_PrefrencesWindow.ui" line="439"/>
<location filename="../src/w_PrefrencesWindow.ui" line="446"/>
<location filename="../src/w_PrefrencesWindow.ui" line="76"/>
<location filename="../src/w_PrefrencesWindow.ui" line="196"/>
<location filename="../src/w_PrefrencesWindow.ui" line="203"/>
<location filename="../src/w_PrefrencesWindow.ui" line="259"/>
<location filename="../src/w_PrefrencesWindow.ui" line="287"/>
<location filename="../src/w_PrefrencesWindow.ui" line="326"/>
<location filename="../src/w_PrefrencesWindow.ui" line="360"/>
<location filename="../src/w_PrefrencesWindow.ui" line="421"/>
<location filename="../src/w_PrefrencesWindow.ui" line="442"/>
<location filename="../src/w_PrefrencesWindow.ui" line="449"/>
<source>#Enabled</source>
<translation>Enabled</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="80"/>
<location filename="../src/w_PrefrencesWindow.ui" line="83"/>
<source>#LogLevel</source>
<translation>Log Level</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="105"/>
<location filename="../src/w_PrefrencesWindow.ui" line="108"/>
<source>debug</source>
<translation>Debug</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="110"/>
<location filename="../src/w_PrefrencesWindow.ui" line="113"/>
<source>info</source>
<translation>Info</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="115"/>
<location filename="../src/w_PrefrencesWindow.ui" line="118"/>
<source>warning</source>
<translation>Warning</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="120"/>
<location filename="../src/w_PrefrencesWindow.ui" line="123"/>
<source>error</source>
<translation>Error</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="156"/>
<location filename="../src/w_PrefrencesWindow.ui" line="177"/>
<location filename="../src/w_PrefrencesWindow.ui" line="159"/>
<location filename="../src/w_PrefrencesWindow.ui" line="180"/>
<source>#Select</source>
<translation>Select</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="128"/>
<location filename="../src/w_PrefrencesWindow.ui" line="131"/>
<source>#AutoStartEntry</source>
<translation>Auto Connect To</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="719"/>
<location filename="../src/w_PrefrencesWindow.ui" line="722"/>
<source>#IgnoreNextVersion</source>
<translation>Ignore Next Version</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="726"/>
<location filename="../src/w_PrefrencesWindow.ui" line="729"/>
<source>#CancelIngore</source>
<translation>Cancel Ignore</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="411"/>
<location filename="../src/w_PrefrencesWindow.ui" line="414"/>
<source>#ProxyGlobal</source>
<translation>Use Proxy as Default</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="425"/>
<location filename="../src/w_PrefrencesWindow.ui" line="428"/>
<source>#ProxyCN</source>
<translation>Use Proxy for China Mainland</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="432"/>
<location filename="../src/w_PrefrencesWindow.ui" line="435"/>
<source>#WithLocalDNS</source>
<translation>Use localhost DNS</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="458"/>
<location filename="../src/w_PrefrencesWindow.ui" line="461"/>
<source>#DNSList</source>
<translation>DNS Address List</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="472"/>
<location filename="../src/w_PrefrencesWindow.ui" line="475"/>
<source>#About</source>
<translation>About</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="520"/>
<location filename="../src/w_PrefrencesWindow.ui" line="523"/>
<source>Qv2ray</source>
<translation>Qv2ray</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="542"/>
<location filename="../src/w_PrefrencesWindow.ui" line="545"/>
<source>#Version:</source>
<translation>Version:</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="554"/>
<location filename="../src/w_PrefrencesWindow.ui" line="557"/>
<source>#QvVersion</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="578"/>
<location filename="../src/w_PrefrencesWindow.ui" line="581"/>
<source>#OfficialRepo:</source>
<translation>Official Repo:</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="629"/>
<location filename="../src/w_PrefrencesWindow.ui" line="632"/>
<source>#License:</source>
<translation>License:</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="647"/>
<location filename="../src/w_PrefrencesWindow.ui" line="650"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.txt&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;GPLv3 (https://www.gnu.org/licenses/gpl-3.0.txt)&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="684"/>
<location filename="../src/w_PrefrencesWindow.ui" line="687"/>
<source>#AboutQt</source>
<translation>About Qt</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="596"/>
<location filename="../src/w_PrefrencesWindow.ui" line="599"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/lhy0403/Qv2ray&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;https://github.com/lhy0403/Qv2ray&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="100"/>
<location filename="../src/w_PrefrencesWindow.ui" line="103"/>
<source>none</source>
<translation>Do not use</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="144"/>
<location filename="../src/w_PrefrencesWindow.ui" line="147"/>
<source>#VCoreExePath</source>
<translation>V2ray Kernal Path</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="165"/>
<location filename="../src/w_PrefrencesWindow.ui" line="168"/>
<source>#VCoreAssetsPath</source>
<translation>V2ray Assets Path</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="187"/>
<location filename="../src/w_PrefrencesWindow.ui" line="190"/>
<source>#MuxSettings</source>
<translation>Mux Settings</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="228"/>
<location filename="../src/w_PrefrencesWindow.ui" line="231"/>
<source>#InBoundSettings</source>
<translation>Inbound Settings</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="236"/>
<location filename="../src/w_PrefrencesWindow.ui" line="239"/>
<source>#ListenIP</source>
<translation>Listen IP</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="314"/>
<location filename="../src/w_PrefrencesWindow.ui" line="317"/>
<source>#HTTPInBoundSettings</source>
<translation>HTTP Inbound Settings</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="250"/>
<location filename="../src/w_PrefrencesWindow.ui" line="253"/>
<source>#SOCKSBoundSettings</source>
<translation>SOCKS Inbound Settings</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="403"/>
<location filename="../src/w_PrefrencesWindow.ui" line="406"/>
<source>#RouteSettings</source>
<translation>Route Settings</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="207"/>
<location filename="../src/w_PrefrencesWindow.ui" line="210"/>
<source>#Concurrency</source>
<translation>Maximum Connections</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="263"/>
<location filename="../src/w_PrefrencesWindow.ui" line="330"/>
<location filename="../src/w_PrefrencesWindow.ui" line="266"/>
<location filename="../src/w_PrefrencesWindow.ui" line="333"/>
<source>#Port</source>
<translation>Port</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="291"/>
<location filename="../src/w_PrefrencesWindow.ui" line="364"/>
<location filename="../src/w_PrefrencesWindow.ui" line="294"/>
<location filename="../src/w_PrefrencesWindow.ui" line="367"/>
<source>#Username</source>
<translation>Username</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="277"/>
<location filename="../src/w_PrefrencesWindow.ui" line="350"/>
<location filename="../src/w_PrefrencesWindow.ui" line="280"/>
<location filename="../src/w_PrefrencesWindow.ui" line="353"/>
<source>#Auth</source>
<translation>Authentication</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="301"/>
<location filename="../src/w_PrefrencesWindow.ui" line="374"/>
<location filename="../src/w_PrefrencesWindow.ui" line="304"/>
<location filename="../src/w_PrefrencesWindow.ui" line="377"/>
<source>#Password</source>
<translation>Password</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.cpp" line="96"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="97"/>
<source>PortNumbersCannotBeSame</source>
<translation>Port numbers cannot be the same</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.cpp" line="168"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="169"/>
<source>RunAsRootNotOnWindows</source>
<translation>Run as root is not avaliable on Windows Platform</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.cpp" line="285"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="286"/>
<source>#OpenVCoreFile</source>
<translation>Open v2rat-core file</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.cpp" line="296"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="297"/>
<source>OpenVAssetsDir</source>
<translation>Open v2ray assets folder</translation>
</message>
@ -876,6 +876,135 @@
<translation>VMess string decode error</translation>
</message>
</context>
<context>
<name>RouteEditor</name>
<message>
<location filename="../src/w_RouteEditor.ui" line="14"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="22"/>
<source>#Routes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="30"/>
<location filename="../src/w_RouteEditor.ui" line="201"/>
<location filename="../src/w_RouteEditor.ui" line="326"/>
<source>#Type</source>
<translation type="unfinished">Type</translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="40"/>
<source>#Outbound</source>
<translation type="unfinished">Outbound Type</translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="35"/>
<source>#DomainOrIP</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="63"/>
<location filename="../src/w_RouteEditor.ui" line="74"/>
<location filename="../src/w_RouteEditor.ui" line="150"/>
<location filename="../src/w_RouteEditor.ui" line="161"/>
<location filename="../src/w_RouteEditor.ui" line="238"/>
<location filename="../src/w_RouteEditor.ui" line="249"/>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="85"/>
<source>#ChangeIO</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="107"/>
<source>#RouteDetail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="113"/>
<source>#DomainList</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="120"/>
<source>#IPList</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="134"/>
<source>#Inbounds</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="172"/>
<source>#FromGlobalConfig</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="181"/>
<source>#InboundDetail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="187"/>
<location filename="../src/w_RouteEditor.ui" line="275"/>
<source>#Tag</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="194"/>
<location filename="../src/w_RouteEditor.ui" line="208"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="222"/>
<source>#Outbounds</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="260"/>
<source>#AddDirect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="269"/>
<source>#OutboundDetail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="304"/>
<source>#EditCurrentOutbound</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="333"/>
<source>#Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="340"/>
<source>#Port</source>
<translation type="unfinished">Port</translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="347"/>
<location filename="../src/w_RouteEditor.ui" line="354"/>
<location filename="../src/w_RouteEditor.ui" line="361"/>
<source>xx</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="383"/>
<source>#Status</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>w_SubscribeEditor</name>
<message>
@ -884,49 +1013,59 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="75"/>
<location filename="../src/w_SubscribeEditor.ui" line="92"/>
<source>#Port</source>
<translation type="unfinished">Port</translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="122"/>
<source>#SubsGroupName</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="80"/>
<location filename="../src/w_SubscribeEditor.ui" line="127"/>
<source>#SubsGroupURL</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="100"/>
<source>#ConfigList</source>
<location filename="../src/w_SubscribeEditor.ui" line="150"/>
<source>#AddConnection</source>
<translation type="unfinished">Add a connection</translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="153"/>
<source>A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="112"/>
<location filename="../src/w_SubscribeEditor.ui" line="170"/>
<source>#RemoveConnection</source>
<translation type="unfinished">Remove a connection</translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="173"/>
<source>R</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="48"/>
<source>#ConfigDetail</source>
<translation type="unfinished">Detailed Config Info</translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="118"/>
<location filename="../src/w_SubscribeEditor.ui" line="54"/>
<source>#Type</source>
<translation type="unfinished">Type</translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="132"/>
<location filename="../src/w_SubscribeEditor.ui" line="68"/>
<source>#Server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="146"/>
<location filename="../src/w_SubscribeEditor.ui" line="82"/>
<source>#Config</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="36"/>
<source>+</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="49"/>
<source>-</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -211,14 +211,14 @@
<translation></translation>
</message>
<message>
<location filename="../src/w_ConnectionEditWindow.cpp" line="395"/>
<location filename="../src/w_ConnectionEditWindow.cpp" line="406"/>
<location filename="../src/w_ConnectionEditWindow.cpp" line="398"/>
<location filename="../src/w_ConnectionEditWindow.cpp" line="409"/>
<source>#JsonPrettify</source>
<translation> JSON</translation>
</message>
<message>
<location filename="../src/w_ConnectionEditWindow.cpp" line="395"/>
<location filename="../src/w_ConnectionEditWindow.cpp" line="406"/>
<location filename="../src/w_ConnectionEditWindow.cpp" line="398"/>
<location filename="../src/w_ConnectionEditWindow.cpp" line="409"/>
<source>#JsonContainsError</source>
<translation>JSON </translation>
</message>
@ -297,18 +297,18 @@
<translation></translation>
</message>
<message>
<location filename="../src/w_ImportConfig.cpp" line="64"/>
<location filename="../src/w_ImportConfig.cpp" line="65"/>
<source>#NotValidVMessProtocolString</source>
<translation>VMess </translation>
</message>
<message>
<location filename="../src/w_ImportConfig.cpp" line="64"/>
<location filename="../src/w_ImportConfig.cpp" line="68"/>
<location filename="../src/w_ImportConfig.cpp" line="65"/>
<location filename="../src/w_ImportConfig.cpp" line="69"/>
<source>#VMessCheck</source>
<translation>VMess </translation>
</message>
<message>
<location filename="../src/w_ImportConfig.cpp" line="68"/>
<location filename="../src/w_ImportConfig.cpp" line="69"/>
<source>#INTERNAL_ERROR</source>
<translation></translation>
</message>
@ -588,252 +588,252 @@
<name>PrefrencesWindow</name>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="20"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="96"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="168"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="97"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="169"/>
<source>Prefrences</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="33"/>
<location filename="../src/w_PrefrencesWindow.ui" line="36"/>
<source>#General</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="39"/>
<location filename="../src/w_PrefrencesWindow.ui" line="42"/>
<source>#Language</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="53"/>
<location filename="../src/w_PrefrencesWindow.ui" line="56"/>
<source>zh-CN</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="58"/>
<location filename="../src/w_PrefrencesWindow.ui" line="61"/>
<source>en-US</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="66"/>
<location filename="../src/w_PrefrencesWindow.ui" line="69"/>
<source>#RunAsRoot</source>
<translation>使 root </translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="73"/>
<location filename="../src/w_PrefrencesWindow.ui" line="193"/>
<location filename="../src/w_PrefrencesWindow.ui" line="200"/>
<location filename="../src/w_PrefrencesWindow.ui" line="256"/>
<location filename="../src/w_PrefrencesWindow.ui" line="284"/>
<location filename="../src/w_PrefrencesWindow.ui" line="323"/>
<location filename="../src/w_PrefrencesWindow.ui" line="357"/>
<location filename="../src/w_PrefrencesWindow.ui" line="418"/>
<location filename="../src/w_PrefrencesWindow.ui" line="439"/>
<location filename="../src/w_PrefrencesWindow.ui" line="446"/>
<location filename="../src/w_PrefrencesWindow.ui" line="76"/>
<location filename="../src/w_PrefrencesWindow.ui" line="196"/>
<location filename="../src/w_PrefrencesWindow.ui" line="203"/>
<location filename="../src/w_PrefrencesWindow.ui" line="259"/>
<location filename="../src/w_PrefrencesWindow.ui" line="287"/>
<location filename="../src/w_PrefrencesWindow.ui" line="326"/>
<location filename="../src/w_PrefrencesWindow.ui" line="360"/>
<location filename="../src/w_PrefrencesWindow.ui" line="421"/>
<location filename="../src/w_PrefrencesWindow.ui" line="442"/>
<location filename="../src/w_PrefrencesWindow.ui" line="449"/>
<source>#Enabled</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="80"/>
<location filename="../src/w_PrefrencesWindow.ui" line="83"/>
<source>#LogLevel</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="105"/>
<location filename="../src/w_PrefrencesWindow.ui" line="108"/>
<source>debug</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="110"/>
<location filename="../src/w_PrefrencesWindow.ui" line="113"/>
<source>info</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="115"/>
<location filename="../src/w_PrefrencesWindow.ui" line="118"/>
<source>warning</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="120"/>
<location filename="../src/w_PrefrencesWindow.ui" line="123"/>
<source>error</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="156"/>
<location filename="../src/w_PrefrencesWindow.ui" line="177"/>
<location filename="../src/w_PrefrencesWindow.ui" line="159"/>
<location filename="../src/w_PrefrencesWindow.ui" line="180"/>
<source>#Select</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="128"/>
<location filename="../src/w_PrefrencesWindow.ui" line="131"/>
<source>#AutoStartEntry</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="719"/>
<location filename="../src/w_PrefrencesWindow.ui" line="722"/>
<source>#IgnoreNextVersion</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="726"/>
<location filename="../src/w_PrefrencesWindow.ui" line="729"/>
<source>#CancelIngore</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="411"/>
<location filename="../src/w_PrefrencesWindow.ui" line="414"/>
<source>#ProxyGlobal</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="425"/>
<location filename="../src/w_PrefrencesWindow.ui" line="428"/>
<source>#ProxyCN</source>
<translation>使</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="432"/>
<location filename="../src/w_PrefrencesWindow.ui" line="435"/>
<source>#WithLocalDNS</source>
<translation>使 DNS</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="458"/>
<location filename="../src/w_PrefrencesWindow.ui" line="461"/>
<source>#DNSList</source>
<translation>DNS </translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="472"/>
<location filename="../src/w_PrefrencesWindow.ui" line="475"/>
<source>#About</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="520"/>
<location filename="../src/w_PrefrencesWindow.ui" line="523"/>
<source>Qv2ray</source>
<translation>Qv2ray</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="542"/>
<location filename="../src/w_PrefrencesWindow.ui" line="545"/>
<source>#Version:</source>
<translation>:</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="554"/>
<location filename="../src/w_PrefrencesWindow.ui" line="557"/>
<source>#QvVersion</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="578"/>
<location filename="../src/w_PrefrencesWindow.ui" line="581"/>
<source>#OfficialRepo:</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="629"/>
<location filename="../src/w_PrefrencesWindow.ui" line="632"/>
<source>#License:</source>
<translation>:</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="647"/>
<location filename="../src/w_PrefrencesWindow.ui" line="650"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.txt&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;GPLv3 (https://www.gnu.org/licenses/gpl-3.0.txt)&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="684"/>
<location filename="../src/w_PrefrencesWindow.ui" line="687"/>
<source>#AboutQt</source>
<translation> Qt</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="596"/>
<location filename="../src/w_PrefrencesWindow.ui" line="599"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/lhy0403/Qv2ray&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;https://github.com/lhy0403/Qv2ray&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="100"/>
<location filename="../src/w_PrefrencesWindow.ui" line="103"/>
<source>none</source>
<translation>使</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="144"/>
<location filename="../src/w_PrefrencesWindow.ui" line="147"/>
<source>#VCoreExePath</source>
<translation>v2ray </translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="165"/>
<location filename="../src/w_PrefrencesWindow.ui" line="168"/>
<source>#VCoreAssetsPath</source>
<translation>v2ray </translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="187"/>
<location filename="../src/w_PrefrencesWindow.ui" line="190"/>
<source>#MuxSettings</source>
<translation>Mux </translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="228"/>
<location filename="../src/w_PrefrencesWindow.ui" line="231"/>
<source>#InBoundSettings</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="236"/>
<location filename="../src/w_PrefrencesWindow.ui" line="239"/>
<source>#ListenIP</source>
<translation> IP</translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="314"/>
<location filename="../src/w_PrefrencesWindow.ui" line="317"/>
<source>#HTTPInBoundSettings</source>
<translation>HTTP </translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="250"/>
<location filename="../src/w_PrefrencesWindow.ui" line="253"/>
<source>#SOCKSBoundSettings</source>
<translation>SOCKS </translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="403"/>
<location filename="../src/w_PrefrencesWindow.ui" line="406"/>
<source>#RouteSettings</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="207"/>
<location filename="../src/w_PrefrencesWindow.ui" line="210"/>
<source>#Concurrency</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="263"/>
<location filename="../src/w_PrefrencesWindow.ui" line="330"/>
<location filename="../src/w_PrefrencesWindow.ui" line="266"/>
<location filename="../src/w_PrefrencesWindow.ui" line="333"/>
<source>#Port</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="291"/>
<location filename="../src/w_PrefrencesWindow.ui" line="364"/>
<location filename="../src/w_PrefrencesWindow.ui" line="294"/>
<location filename="../src/w_PrefrencesWindow.ui" line="367"/>
<source>#Username</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="277"/>
<location filename="../src/w_PrefrencesWindow.ui" line="350"/>
<location filename="../src/w_PrefrencesWindow.ui" line="280"/>
<location filename="../src/w_PrefrencesWindow.ui" line="353"/>
<source>#Auth</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.ui" line="301"/>
<location filename="../src/w_PrefrencesWindow.ui" line="374"/>
<location filename="../src/w_PrefrencesWindow.ui" line="304"/>
<location filename="../src/w_PrefrencesWindow.ui" line="377"/>
<source>#Password</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.cpp" line="96"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="97"/>
<source>PortNumbersCannotBeSame</source>
<translation></translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.cpp" line="168"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="169"/>
<source>RunAsRootNotOnWindows</source>
<translation>Windows </translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.cpp" line="285"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="286"/>
<source>#OpenVCoreFile</source>
<translation> v2ray </translation>
</message>
<message>
<location filename="../src/w_PrefrencesWindow.cpp" line="296"/>
<location filename="../src/w_PrefrencesWindow.cpp" line="297"/>
<source>OpenVAssetsDir</source>
<translation> v2ray </translation>
</message>
@ -876,6 +876,135 @@
<translation>VMess </translation>
</message>
</context>
<context>
<name>RouteEditor</name>
<message>
<location filename="../src/w_RouteEditor.ui" line="14"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="22"/>
<source>#Routes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="30"/>
<location filename="../src/w_RouteEditor.ui" line="201"/>
<location filename="../src/w_RouteEditor.ui" line="326"/>
<source>#Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="40"/>
<source>#Outbound</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="35"/>
<source>#DomainOrIP</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="63"/>
<location filename="../src/w_RouteEditor.ui" line="74"/>
<location filename="../src/w_RouteEditor.ui" line="150"/>
<location filename="../src/w_RouteEditor.ui" line="161"/>
<location filename="../src/w_RouteEditor.ui" line="238"/>
<location filename="../src/w_RouteEditor.ui" line="249"/>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="85"/>
<source>#ChangeIO</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="107"/>
<source>#RouteDetail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="113"/>
<source>#DomainList</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="120"/>
<source>#IPList</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="134"/>
<source>#Inbounds</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="172"/>
<source>#FromGlobalConfig</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="181"/>
<source>#InboundDetail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="187"/>
<location filename="../src/w_RouteEditor.ui" line="275"/>
<source>#Tag</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="194"/>
<location filename="../src/w_RouteEditor.ui" line="208"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="222"/>
<source>#Outbounds</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="260"/>
<source>#AddDirect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="269"/>
<source>#OutboundDetail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="304"/>
<source>#EditCurrentOutbound</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="333"/>
<source>#Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="340"/>
<source>#Port</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="347"/>
<location filename="../src/w_RouteEditor.ui" line="354"/>
<location filename="../src/w_RouteEditor.ui" line="361"/>
<source>xx</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_RouteEditor.ui" line="383"/>
<source>#Status</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>w_SubscribeEditor</name>
<message>
@ -884,49 +1013,59 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="75"/>
<location filename="../src/w_SubscribeEditor.ui" line="92"/>
<source>#Port</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="122"/>
<source>#SubsGroupName</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="80"/>
<location filename="../src/w_SubscribeEditor.ui" line="127"/>
<source>#SubsGroupURL</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="100"/>
<source>#ConfigList</source>
<location filename="../src/w_SubscribeEditor.ui" line="150"/>
<source>#AddConnection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="153"/>
<source>A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="112"/>
<location filename="../src/w_SubscribeEditor.ui" line="170"/>
<source>#RemoveConnection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="173"/>
<source>R</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="48"/>
<source>#ConfigDetail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="118"/>
<location filename="../src/w_SubscribeEditor.ui" line="54"/>
<source>#Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="132"/>
<location filename="../src/w_SubscribeEditor.ui" line="68"/>
<source>#Server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="146"/>
<location filename="../src/w_SubscribeEditor.ui" line="82"/>
<source>#Config</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="36"/>
<source>+</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/w_SubscribeEditor.ui" line="49"/>
<source>-</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>