Merge remote-tracking branch 'origin/bugfix/pull-awg-config' into feature/split-tunnel-mobile
This commit is contained in:
commit
f0b872e86b
38 changed files with 649 additions and 417 deletions
|
@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.25.0 FATAL_ERROR)
|
||||||
|
|
||||||
set(PROJECT AmneziaVPN)
|
set(PROJECT AmneziaVPN)
|
||||||
|
|
||||||
project(${PROJECT} VERSION 4.0.8.2
|
project(${PROJECT} VERSION 4.0.8.5
|
||||||
DESCRIPTION "AmneziaVPN"
|
DESCRIPTION "AmneziaVPN"
|
||||||
HOMEPAGE_URL "https://amnezia.org/"
|
HOMEPAGE_URL "https://amnezia.org/"
|
||||||
)
|
)
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 15b0ff395d9d372339c5ea8ea35cb2715b975ea9
|
Subproject commit ac32d33555bd62f0b0af314b1e5119d6d78a1a4e
|
|
@ -286,6 +286,8 @@ void AmneziaApplication::initModels()
|
||||||
m_engine->rootContext()->setContextProperty("ServersModel", m_serversModel.get());
|
m_engine->rootContext()->setContextProperty("ServersModel", m_serversModel.get());
|
||||||
connect(m_serversModel.get(), &ServersModel::currentlyProcessedServerIndexChanged, m_containersModel.get(),
|
connect(m_serversModel.get(), &ServersModel::currentlyProcessedServerIndexChanged, m_containersModel.get(),
|
||||||
&ContainersModel::setCurrentlyProcessedServerIndex);
|
&ContainersModel::setCurrentlyProcessedServerIndex);
|
||||||
|
connect(m_serversModel.get(), &ServersModel::defaultServerIndexChanged, m_containersModel.get(),
|
||||||
|
&ContainersModel::setCurrentlyProcessedServerIndex);
|
||||||
|
|
||||||
m_languageModel.reset(new LanguageModel(m_settings, this));
|
m_languageModel.reset(new LanguageModel(m_settings, this));
|
||||||
m_engine->rootContext()->setContextProperty("LanguageModel", m_languageModel.get());
|
m_engine->rootContext()->setContextProperty("LanguageModel", m_languageModel.get());
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
android:label="-- %%INSERT_APP_NAME%% --"
|
android:label="-- %%INSERT_APP_NAME%% --"
|
||||||
android:screenOrientation="unspecified"
|
android:screenOrientation="unspecified"
|
||||||
android:launchMode="singleInstance"
|
android:launchMode="singleInstance"
|
||||||
|
android:windowSoftInputMode="adjustResize"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
|
|
||||||
<!-- android:theme="@style/splashScreenTheme"-->
|
<!-- android:theme="@style/splashScreenTheme"-->
|
||||||
|
|
|
@ -138,7 +138,7 @@ android {
|
||||||
resConfig "en"
|
resConfig "en"
|
||||||
minSdkVersion = 24
|
minSdkVersion = 24
|
||||||
targetSdkVersion = 34
|
targetSdkVersion = 34
|
||||||
versionCode 36 // Change to a higher number
|
versionCode 37 // Change to a higher number
|
||||||
versionName "4.0.8" // Change to a higher number
|
versionName "4.0.8" // Change to a higher number
|
||||||
|
|
||||||
javaCompileOptions.annotationProcessorOptions.arguments = [
|
javaCompileOptions.annotationProcessorOptions.arguments = [
|
||||||
|
|
|
@ -16,8 +16,6 @@ QString AwgConfigurator::genAwgConfig(const ServerCredentials &credentials,
|
||||||
{
|
{
|
||||||
QString config = WireguardConfigurator::genWireguardConfig(credentials, container, containerConfig, errorCode);
|
QString config = WireguardConfigurator::genWireguardConfig(credentials, container, containerConfig, errorCode);
|
||||||
|
|
||||||
QJsonObject jsonConfig = QJsonDocument::fromJson(config.toUtf8()).object();
|
|
||||||
|
|
||||||
ServerController serverController(m_settings);
|
ServerController serverController(m_settings);
|
||||||
QString serverConfig = serverController.getTextFileFromContainer(container, credentials, protocols::awg::serverConfigPath, errorCode);
|
QString serverConfig = serverController.getTextFileFromContainer(container, credentials, protocols::awg::serverConfigPath, errorCode);
|
||||||
|
|
||||||
|
@ -45,6 +43,8 @@ QString AwgConfigurator::genAwgConfig(const ServerCredentials &credentials,
|
||||||
config.replace("$UNDERLOAD_PACKET_MAGIC_HEADER", serverConfigMap.value(config_key::underloadPacketMagicHeader));
|
config.replace("$UNDERLOAD_PACKET_MAGIC_HEADER", serverConfigMap.value(config_key::underloadPacketMagicHeader));
|
||||||
config.replace("$TRANSPORT_PACKET_MAGIC_HEADER", serverConfigMap.value(config_key::transportPacketMagicHeader));
|
config.replace("$TRANSPORT_PACKET_MAGIC_HEADER", serverConfigMap.value(config_key::transportPacketMagicHeader));
|
||||||
|
|
||||||
|
QJsonObject jsonConfig = QJsonDocument::fromJson(config.toUtf8()).object();
|
||||||
|
|
||||||
jsonConfig[config_key::junkPacketCount] = serverConfigMap.value(config_key::junkPacketCount);
|
jsonConfig[config_key::junkPacketCount] = serverConfigMap.value(config_key::junkPacketCount);
|
||||||
jsonConfig[config_key::junkPacketMinSize] = serverConfigMap.value(config_key::junkPacketMinSize);
|
jsonConfig[config_key::junkPacketMinSize] = serverConfigMap.value(config_key::junkPacketMinSize);
|
||||||
jsonConfig[config_key::junkPacketMaxSize] = serverConfigMap.value(config_key::junkPacketMaxSize);
|
jsonConfig[config_key::junkPacketMaxSize] = serverConfigMap.value(config_key::junkPacketMaxSize);
|
||||||
|
|
|
@ -16,11 +16,11 @@ namespace amnezia
|
||||||
Q_NAMESPACE
|
Q_NAMESPACE
|
||||||
enum DockerContainer {
|
enum DockerContainer {
|
||||||
None = 0,
|
None = 0,
|
||||||
OpenVpn,
|
|
||||||
ShadowSocks,
|
|
||||||
Cloak,
|
|
||||||
WireGuard,
|
|
||||||
Awg,
|
Awg,
|
||||||
|
WireGuard,
|
||||||
|
OpenVpn,
|
||||||
|
Cloak,
|
||||||
|
ShadowSocks,
|
||||||
Ipsec,
|
Ipsec,
|
||||||
|
|
||||||
// non-vpn
|
// non-vpn
|
||||||
|
|
|
@ -337,7 +337,7 @@ bool ServerController::isReinstallContainerRequired(DockerContainer container, c
|
||||||
!= newProtoConfig.value(config_key::port).toString(protocols::shadowsocks::defaultPort))
|
!= newProtoConfig.value(config_key::port).toString(protocols::shadowsocks::defaultPort))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (container == DockerContainer::Awg) {
|
if (container == DockerContainer::Awg) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -490,8 +490,7 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential
|
||||||
const QJsonObject &cloakConfig = config.value(ProtocolProps::protoToString(Proto::Cloak)).toObject();
|
const QJsonObject &cloakConfig = config.value(ProtocolProps::protoToString(Proto::Cloak)).toObject();
|
||||||
const QJsonObject &ssConfig = config.value(ProtocolProps::protoToString(Proto::ShadowSocks)).toObject();
|
const QJsonObject &ssConfig = config.value(ProtocolProps::protoToString(Proto::ShadowSocks)).toObject();
|
||||||
const QJsonObject &wireguarConfig = config.value(ProtocolProps::protoToString(Proto::WireGuard)).toObject();
|
const QJsonObject &wireguarConfig = config.value(ProtocolProps::protoToString(Proto::WireGuard)).toObject();
|
||||||
const QJsonObject &amneziaWireguarConfig =
|
const QJsonObject &amneziaWireguarConfig = config.value(ProtocolProps::protoToString(Proto::Awg)).toObject();
|
||||||
config.value(ProtocolProps::protoToString(Proto::Awg)).toObject();
|
|
||||||
const QJsonObject &sftpConfig = config.value(ProtocolProps::protoToString(Proto::Sftp)).toObject();
|
const QJsonObject &sftpConfig = config.value(ProtocolProps::protoToString(Proto::Sftp)).toObject();
|
||||||
|
|
||||||
Vars vars;
|
Vars vars;
|
||||||
|
@ -591,33 +590,23 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential
|
||||||
// Amnezia wireguard vars
|
// Amnezia wireguard vars
|
||||||
vars.append({ { "$AWG_SERVER_PORT",
|
vars.append({ { "$AWG_SERVER_PORT",
|
||||||
amneziaWireguarConfig.value(config_key::port).toString(protocols::awg::defaultPort) } });
|
amneziaWireguarConfig.value(config_key::port).toString(protocols::awg::defaultPort) } });
|
||||||
vars.append({ { "$JUNK_PACKET_COUNT",
|
|
||||||
amneziaWireguarConfig.value(config_key::junkPacketCount)
|
if (!amneziaWireguarConfig.value(config_key::junkPacketCount).toString().isEmpty()){
|
||||||
.toString(protocols::awg::defaultJunkPacketCount) } });
|
vars.append({ { "$JUNK_PACKET_COUNT", amneziaWireguarConfig.value(config_key::junkPacketCount).toString() } });
|
||||||
vars.append({ { "$JUNK_PACKET_MIN_SIZE",
|
vars.append({ { "$JUNK_PACKET_MIN_SIZE", amneziaWireguarConfig.value(config_key::junkPacketMinSize).toString() } });
|
||||||
amneziaWireguarConfig.value(config_key::junkPacketMinSize)
|
vars.append({ { "$JUNK_PACKET_MAX_SIZE", amneziaWireguarConfig.value(config_key::junkPacketMaxSize).toString() } });
|
||||||
.toString(protocols::awg::defaultJunkPacketMinSize) } });
|
vars.append({ { "$INIT_PACKET_JUNK_SIZE", amneziaWireguarConfig.value(config_key::initPacketJunkSize).toString() } });
|
||||||
vars.append({ { "$JUNK_PACKET_MAX_SIZE",
|
vars.append({ { "$RESPONSE_PACKET_JUNK_SIZE",
|
||||||
amneziaWireguarConfig.value(config_key::junkPacketMaxSize)
|
amneziaWireguarConfig.value(config_key::responsePacketJunkSize).toString() } });
|
||||||
.toString(protocols::awg::defaultJunkPacketMaxSize) } });
|
vars.append({ { "$INIT_PACKET_MAGIC_HEADER",
|
||||||
vars.append({ { "$INIT_PACKET_JUNK_SIZE",
|
amneziaWireguarConfig.value(config_key::initPacketMagicHeader).toString() } });
|
||||||
amneziaWireguarConfig.value(config_key::initPacketJunkSize)
|
vars.append({ { "$RESPONSE_PACKET_MAGIC_HEADER",
|
||||||
.toString(protocols::awg::defaultInitPacketJunkSize) } });
|
amneziaWireguarConfig.value(config_key::responsePacketMagicHeader).toString() } });
|
||||||
vars.append({ { "$RESPONSE_PACKET_JUNK_SIZE",
|
vars.append({ { "$UNDERLOAD_PACKET_MAGIC_HEADER",
|
||||||
amneziaWireguarConfig.value(config_key::responsePacketJunkSize)
|
amneziaWireguarConfig.value(config_key::underloadPacketMagicHeader).toString() } });
|
||||||
.toString(protocols::awg::defaultResponsePacketJunkSize) } });
|
vars.append({ { "$TRANSPORT_PACKET_MAGIC_HEADER",
|
||||||
vars.append({ { "$INIT_PACKET_MAGIC_HEADER",
|
amneziaWireguarConfig.value(config_key::transportPacketMagicHeader).toString() } });
|
||||||
amneziaWireguarConfig.value(config_key::initPacketMagicHeader)
|
}
|
||||||
.toString(protocols::awg::defaultInitPacketMagicHeader) } });
|
|
||||||
vars.append({ { "$RESPONSE_PACKET_MAGIC_HEADER",
|
|
||||||
amneziaWireguarConfig.value(config_key::responsePacketMagicHeader)
|
|
||||||
.toString(protocols::awg::defaultResponsePacketMagicHeader) } });
|
|
||||||
vars.append({ { "$UNDERLOAD_PACKET_MAGIC_HEADER",
|
|
||||||
amneziaWireguarConfig.value(config_key::underloadPacketMagicHeader)
|
|
||||||
.toString(protocols::awg::defaultUnderloadPacketMagicHeader) } });
|
|
||||||
vars.append({ { "$TRANSPORT_PACKET_MAGIC_HEADER",
|
|
||||||
amneziaWireguarConfig.value(config_key::transportPacketMagicHeader)
|
|
||||||
.toString(protocols::awg::defaultTransportPacketMagicHeader) } });
|
|
||||||
|
|
||||||
QString serverIp = Utils::getIPAddress(credentials.hostName);
|
QString serverIp = Utils::getIPAddress(credentials.hostName);
|
||||||
if (!serverIp.isEmpty()) {
|
if (!serverIp.isEmpty()) {
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "protocols_defs.h"
|
#include "protocols_defs.h"
|
||||||
|
|
||||||
|
#include <QRandomGenerator>
|
||||||
|
|
||||||
using namespace amnezia;
|
using namespace amnezia;
|
||||||
|
|
||||||
QDebug operator<<(QDebug debug, const amnezia::ProtocolEnumNS::Proto &p)
|
QDebug operator<<(QDebug debug, const amnezia::ProtocolEnumNS::Proto &p)
|
||||||
|
@ -98,15 +100,28 @@ amnezia::ServiceType ProtocolProps::protocolService(Proto p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ProtocolProps::getPortForInstall(Proto p)
|
||||||
|
{
|
||||||
|
switch (p) {
|
||||||
|
case Awg:
|
||||||
|
case WireGuard:
|
||||||
|
case ShadowSocks:
|
||||||
|
case OpenVpn:
|
||||||
|
return QRandomGenerator::global()->bounded(30000, 50000);
|
||||||
|
default:
|
||||||
|
return defaultPort(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int ProtocolProps::defaultPort(Proto p)
|
int ProtocolProps::defaultPort(Proto p)
|
||||||
{
|
{
|
||||||
switch (p) {
|
switch (p) {
|
||||||
case Proto::Any: return -1;
|
case Proto::Any: return -1;
|
||||||
case Proto::OpenVpn: return 1194;
|
case Proto::OpenVpn: return QString(protocols::openvpn::defaultPort).toInt();
|
||||||
case Proto::Cloak: return 443;
|
case Proto::Cloak: return QString(protocols::cloak::defaultPort).toInt();
|
||||||
case Proto::ShadowSocks: return 6789;
|
case Proto::ShadowSocks: return QString(protocols::shadowsocks::defaultPort).toInt();
|
||||||
case Proto::WireGuard: return 51820;
|
case Proto::WireGuard: return QString(protocols::wireguard::defaultPort).toInt();
|
||||||
case Proto::Awg: return 55424;
|
case Proto::Awg: return QString(protocols::awg::defaultPort).toInt();
|
||||||
case Proto::Ikev2: return -1;
|
case Proto::Ikev2: return -1;
|
||||||
case Proto::L2tp: return -1;
|
case Proto::L2tp: return -1;
|
||||||
|
|
||||||
|
|
|
@ -232,6 +232,8 @@ namespace amnezia
|
||||||
|
|
||||||
Q_INVOKABLE static ServiceType protocolService(Proto p);
|
Q_INVOKABLE static ServiceType protocolService(Proto p);
|
||||||
|
|
||||||
|
Q_INVOKABLE static int getPortForInstall(Proto p);
|
||||||
|
|
||||||
Q_INVOKABLE static int defaultPort(Proto p);
|
Q_INVOKABLE static int defaultPort(Proto p);
|
||||||
Q_INVOKABLE static bool defaultPortChangeable(Proto p);
|
Q_INVOKABLE static bool defaultPortChangeable(Proto p);
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ if ! command -v sudo > /dev/null 2>&1; then $pm update -yq; $pm install -yq sudo
|
||||||
if ! command -v fuser > /dev/null 2>&1; then sudo $pm install -yq psmisc; fi;\
|
if ! command -v fuser > /dev/null 2>&1; then sudo $pm install -yq psmisc; fi;\
|
||||||
if ! command -v lsof > /dev/null 2>&1; then sudo $pm install -yq lsof; fi;\
|
if ! command -v lsof > /dev/null 2>&1; then sudo $pm install -yq lsof; fi;\
|
||||||
if ! command -v docker > /dev/null 2>&1; then sudo $pm update -yq; sudo $pm install -yq $docker_pkg;\
|
if ! command -v docker > /dev/null 2>&1; then sudo $pm update -yq; sudo $pm install -yq $docker_pkg;\
|
||||||
if [ "$dist" = "fedora" ] || [ "$dist" = "debian" ]; then sudo systemctl enable docker && sudo systemctl start docker; fi;\
|
if [ "$dist" = "fedora" ] || [ "$dist" = "centos" ] || [ "$dist" = "debian" ]; then sudo systemctl enable docker && sudo systemctl start docker; fi;\
|
||||||
fi;\
|
fi;\
|
||||||
if [ "$dist" = "debian" ]; then \
|
if [ "$dist" = "debian" ]; then \
|
||||||
docker_service=$(systemctl list-units --full --all | grep docker.service | grep -v inactive | grep -v dead | grep -v failed);\
|
docker_service=$(systemctl list-units --full --all | grep docker.service | grep -v inactive | grep -v dead | grep -v failed);\
|
||||||
|
|
|
@ -4,13 +4,9 @@
|
||||||
<context>
|
<context>
|
||||||
<name>AmneziaApplication</name>
|
<name>AmneziaApplication</name>
|
||||||
<message>
|
<message>
|
||||||
|
<location filename="../amnezia_application.cpp" line="304"/>
|
||||||
<source>Split tunneling for WireGuard is not implemented, the option was disabled</source>
|
<source>Split tunneling for WireGuard is not implemented, the option was disabled</source>
|
||||||
<translation type="vanished">Раздельное туннелирование для "Wireguard" не реализовано,опция отключена</translation>
|
<translation>Раздельное туннелирование для "Wireguard" не реализовано,опция отключена</translation>
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../amnezia_application.cpp" line="303"/>
|
|
||||||
<source>Split tunneling for %1 is not implemented, the option was disabled</source>
|
|
||||||
<translation>Раздельное туннелирование для %1 не реализовано, опция отключена</translation>
|
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -123,19 +119,23 @@
|
||||||
<name>HomeContainersListView</name>
|
<name>HomeContainersListView</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Components/HomeContainersListView.qml" line="58"/>
|
<location filename="../ui/qml/Components/HomeContainersListView.qml" line="58"/>
|
||||||
|
<source>Unable change protocol while there is an active connection</source>
|
||||||
|
<translation>Невозможно изменить протокол при активном соединении</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../ui/qml/Components/HomeContainersListView.qml" line="69"/>
|
||||||
<source>The selected protocol is not supported on the current platform</source>
|
<source>The selected protocol is not supported on the current platform</source>
|
||||||
<translation>Выбранный протокол не поддерживается на данном устройстве</translation>
|
<translation>Выбранный протокол не поддерживается на данном устройстве</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Components/HomeContainersListView.qml" line="76"/>
|
|
||||||
<source>Reconnect via VPN Procotol: </source>
|
<source>Reconnect via VPN Procotol: </source>
|
||||||
<translation>Переподключение через VPN протокол: </translation>
|
<translation type="vanished">Переподключение через VPN протокол: </translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ImportController</name>
|
<name>ImportController</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/importController.cpp" line="436"/>
|
<location filename="../ui/controllers/importController.cpp" line="427"/>
|
||||||
<source>Scanned %1 of %2.</source>
|
<source>Scanned %1 of %2.</source>
|
||||||
<translation>Отсканировано %1 из%2.</translation>
|
<translation>Отсканировано %1 из%2.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -143,58 +143,58 @@
|
||||||
<context>
|
<context>
|
||||||
<name>InstallController</name>
|
<name>InstallController</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="110"/>
|
<location filename="../ui/controllers/installController.cpp" line="143"/>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="161"/>
|
<location filename="../ui/controllers/installController.cpp" line="193"/>
|
||||||
<source>%1 installed successfully. </source>
|
<source>%1 installed successfully. </source>
|
||||||
<translation>%1 успешно установлен. </translation>
|
<translation>%1 успешно установлен. </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="112"/>
|
<location filename="../ui/controllers/installController.cpp" line="145"/>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="163"/>
|
<location filename="../ui/controllers/installController.cpp" line="195"/>
|
||||||
<source>%1 is already installed on the server. </source>
|
<source>%1 is already installed on the server. </source>
|
||||||
<translation>%1 уже установлен на сервер. </translation>
|
<translation>%1 уже установлен на сервер. </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="115"/>
|
<location filename="../ui/controllers/installController.cpp" line="148"/>
|
||||||
<source>
|
<source>
|
||||||
Added containers that were already installed on the server</source>
|
Added containers that were already installed on the server</source>
|
||||||
<translation>
|
<translation>
|
||||||
В приложение добавлены обнаруженные на сервере протоклы и сервисы</translation>
|
В приложение добавлены обнаруженные на сервере протоклы и сервисы</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="182"/>
|
<location filename="../ui/controllers/installController.cpp" line="214"/>
|
||||||
<source>
|
<source>
|
||||||
Already installed containers were found on the server. All installed containers have been added to the application</source>
|
Already installed containers were found on the server. All installed containers have been added to the application</source>
|
||||||
<translation>
|
<translation>
|
||||||
На сервере обнаружены установленные протоколы и сервисы, все они добавлены в приложение</translation>
|
На сервере обнаружены установленные протоколы и сервисы, все они добавлены в приложение</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="266"/>
|
<location filename="../ui/controllers/installController.cpp" line="295"/>
|
||||||
<source>Settings updated successfully</source>
|
<source>Settings updated successfully</source>
|
||||||
<translation>Настройки успешно обновлены</translation>
|
<translation>Настройки успешно обновлены</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="281"/>
|
<location filename="../ui/controllers/installController.cpp" line="310"/>
|
||||||
<source>Server '%1' was removed</source>
|
<source>Server '%1' was removed</source>
|
||||||
<translation>Сервер '%1' был удален</translation>
|
<translation>Сервер '%1' был удален</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="291"/>
|
<location filename="../ui/controllers/installController.cpp" line="320"/>
|
||||||
<source>All containers from server '%1' have been removed</source>
|
<source>All containers from server '%1' have been removed</source>
|
||||||
<translation>Все протоклы и сервисы были удалены с сервера '%1'</translation>
|
<translation>Все протоклы и сервисы были удалены с сервера '%1'</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="308"/>
|
<location filename="../ui/controllers/installController.cpp" line="337"/>
|
||||||
<source>%1 has been removed from the server '%2'</source>
|
<source>%1 has been removed from the server '%2'</source>
|
||||||
<translation>%1 был удален с сервера '%2'</translation>
|
<translation>%1 был удален с сервера '%2'</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="454"/>
|
<location filename="../ui/controllers/installController.cpp" line="483"/>
|
||||||
<source>Please login as the user</source>
|
<source>Please login as the user</source>
|
||||||
<translation>Пожалуйста, войдите в систему от имени пользователя</translation>
|
<translation>Пожалуйста, войдите в систему от имени пользователя</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="481"/>
|
<location filename="../ui/controllers/installController.cpp" line="511"/>
|
||||||
<source>Server added successfully</source>
|
<source>Server added successfully</source>
|
||||||
<translation>Сервер успешно добавлен</translation>
|
<translation>Сервер успешно добавлен</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -262,15 +262,20 @@ Already installed containers were found on the server. All installed containers
|
||||||
<context>
|
<context>
|
||||||
<name>PageHome</name>
|
<name>PageHome</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="344"/>
|
<location filename="../ui/qml/Pages2/PageHome.qml" line="354"/>
|
||||||
<source>VPN protocol</source>
|
<source>VPN protocol</source>
|
||||||
<translation>VPN протокол</translation>
|
<translation>VPN протокол</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="388"/>
|
<location filename="../ui/qml/Pages2/PageHome.qml" line="398"/>
|
||||||
<source>Servers</source>
|
<source>Servers</source>
|
||||||
<translation>Серверы</translation>
|
<translation>Серверы</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../ui/qml/Pages2/PageHome.qml" line="490"/>
|
||||||
|
<source>Unable change server while there is an active connection</source>
|
||||||
|
<translation>Невозможно изменить сервер при активном соединении</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>PageProtocolAwgSettings</name>
|
<name>PageProtocolAwgSettings</name>
|
||||||
|
@ -341,9 +346,13 @@ Already installed containers were found on the server. All installed containers
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="279"/>
|
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="279"/>
|
||||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||||
<translation>Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
<translation>Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||||
|
<translation type="vanished">Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="280"/>
|
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="280"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
|
@ -392,195 +401,199 @@ Already installed containers were found on the server. All installed containers
|
||||||
<context>
|
<context>
|
||||||
<name>PageProtocolOpenVpnSettings</name>
|
<name>PageProtocolOpenVpnSettings</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="76"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="77"/>
|
||||||
<source>OpenVPN settings</source>
|
<source>OpenVPN settings</source>
|
||||||
<translation>Настройки OpenVPN</translation>
|
<translation>Настройки OpenVPN</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="83"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="84"/>
|
||||||
<source>VPN Addresses Subnet</source>
|
<source>VPN Addresses Subnet</source>
|
||||||
<translation>VPN Адреса Подсеть</translation>
|
<translation>Подсеть для VPN</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="97"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="98"/>
|
||||||
<source>Network protocol</source>
|
<source>Network protocol</source>
|
||||||
<translation>Сетевой протокол</translation>
|
<translation>Сетевой протокол</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="126"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="127"/>
|
||||||
<source>Port</source>
|
<source>Port</source>
|
||||||
<translation>Порт</translation>
|
<translation>Порт</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="144"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="145"/>
|
||||||
<source>Auto-negotiate encryption</source>
|
<source>Auto-negotiate encryption</source>
|
||||||
<translation>Шифрование с автоматическим согласованием</translation>
|
<translation>Шифрование с автоматическим согласованием</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="161"/>
|
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="162"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="162"/>
|
||||||
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="163"/>
|
||||||
<source>Hash</source>
|
<source>Hash</source>
|
||||||
<translation>Хэш</translation>
|
<translation>Хэш</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="170"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="171"/>
|
||||||
<source>SHA512</source>
|
<source>SHA512</source>
|
||||||
<translation>SHA512</translation>
|
<translation>SHA512</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="171"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="172"/>
|
||||||
<source>SHA384</source>
|
<source>SHA384</source>
|
||||||
<translation>SHA384</translation>
|
<translation>SHA384</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="172"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="173"/>
|
||||||
<source>SHA256</source>
|
<source>SHA256</source>
|
||||||
<translation>SHA256</translation>
|
<translation>SHA256</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="173"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="174"/>
|
||||||
<source>SHA3-512</source>
|
<source>SHA3-512</source>
|
||||||
<translation>SHA3-512</translation>
|
<translation>SHA3-512</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="174"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="175"/>
|
||||||
<source>SHA3-384</source>
|
<source>SHA3-384</source>
|
||||||
<translation>SHA3-384</translation>
|
<translation>SHA3-384</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="175"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="176"/>
|
||||||
<source>SHA3-256</source>
|
<source>SHA3-256</source>
|
||||||
<translation>SHA3-256</translation>
|
<translation>SHA3-256</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="176"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="177"/>
|
||||||
<source>whirlpool</source>
|
<source>whirlpool</source>
|
||||||
<translation>whirlpool</translation>
|
<translation>whirlpool</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="177"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="178"/>
|
||||||
<source>BLAKE2b512</source>
|
<source>BLAKE2b512</source>
|
||||||
<translation>BLAKE2b512</translation>
|
<translation>BLAKE2b512</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="178"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="179"/>
|
||||||
<source>BLAKE2s256</source>
|
<source>BLAKE2s256</source>
|
||||||
<translation>BLAKE2s256</translation>
|
<translation>BLAKE2s256</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="179"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="180"/>
|
||||||
<source>SHA1</source>
|
<source>SHA1</source>
|
||||||
<translation>SHA1</translation>
|
<translation>SHA1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="207"/>
|
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="208"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="208"/>
|
||||||
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="209"/>
|
||||||
<source>Cipher</source>
|
<source>Cipher</source>
|
||||||
<translation>Шифрование</translation>
|
<translation>Шифрование</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="216"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="217"/>
|
||||||
<source>AES-256-GCM</source>
|
<source>AES-256-GCM</source>
|
||||||
<translation>AES-256-GCM</translation>
|
<translation>AES-256-GCM</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="217"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="218"/>
|
||||||
<source>AES-192-GCM</source>
|
<source>AES-192-GCM</source>
|
||||||
<translation>AES-192-GCM</translation>
|
<translation>AES-192-GCM</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="218"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="219"/>
|
||||||
<source>AES-128-GCM</source>
|
<source>AES-128-GCM</source>
|
||||||
<translation>AES-128-GCM</translation>
|
<translation>AES-128-GCM</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="219"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="220"/>
|
||||||
<source>AES-256-CBC</source>
|
<source>AES-256-CBC</source>
|
||||||
<translation>AES-256-CBC</translation>
|
<translation>AES-256-CBC</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="220"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="221"/>
|
||||||
<source>AES-192-CBC</source>
|
<source>AES-192-CBC</source>
|
||||||
<translation>AES-192-CBC</translation>
|
<translation>AES-192-CBC</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="221"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="222"/>
|
||||||
<source>AES-128-CBC</source>
|
<source>AES-128-CBC</source>
|
||||||
<translation>AES-128-CBC</translation>
|
<translation>AES-128-CBC</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="222"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="223"/>
|
||||||
<source>ChaCha20-Poly1305</source>
|
<source>ChaCha20-Poly1305</source>
|
||||||
<translation>ChaCha20-Poly1305</translation>
|
<translation>ChaCha20-Poly1305</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="223"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="224"/>
|
||||||
<source>ARIA-256-CBC</source>
|
<source>ARIA-256-CBC</source>
|
||||||
<translation>ARIA-256-CBC</translation>
|
<translation>ARIA-256-CBC</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="224"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="225"/>
|
||||||
<source>CAMELLIA-256-CBC</source>
|
<source>CAMELLIA-256-CBC</source>
|
||||||
<translation>CAMELLIA-256-CBC</translation>
|
<translation>CAMELLIA-256-CBC</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="225"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="226"/>
|
||||||
<source>none</source>
|
<source>none</source>
|
||||||
<translation>none</translation>
|
<translation>none</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="258"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="261"/>
|
||||||
<source>TLS auth</source>
|
<source>TLS auth</source>
|
||||||
<translation>TLS авторизация</translation>
|
<translation>TLS авторизация</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="273"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="276"/>
|
||||||
<source>Block DNS requests outside of VPN</source>
|
<source>Block DNS requests outside of VPN</source>
|
||||||
<translation>Блокировать DNS запросы за пределами VPN</translation>
|
<translation>Блокировать DNS запросы за пределами VPN</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="292"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="295"/>
|
||||||
<source>Additional client configuration commands</source>
|
<source>Additional client configuration commands</source>
|
||||||
<translation>Дополнительные команды конфигурации клиента</translation>
|
<translation>Дополнительные команды конфигурации клиента</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="308"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="311"/>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="340"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="343"/>
|
||||||
<source>Commands:</source>
|
<source>Commands:</source>
|
||||||
<translation>Commands:</translation>
|
<translation>Commands:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="324"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="327"/>
|
||||||
<source>Additional server configuration commands</source>
|
<source>Additional server configuration commands</source>
|
||||||
<translation>Дополнительные команды конфигурации сервера</translation>
|
<translation>Дополнительные команды конфигурации сервера</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="359"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="364"/>
|
||||||
<source>Remove OpenVPN</source>
|
<source>Remove OpenVPN</source>
|
||||||
<translation>Удалить OpenVPN</translation>
|
<translation>Удалить OpenVPN</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="362"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="367"/>
|
||||||
<source>Remove OpenVpn from server?</source>
|
<source>Remove OpenVpn from server?</source>
|
||||||
<translation>Удалить OpenVpn с сервера?</translation>
|
<translation>Удалить OpenVpn с сервера?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="363"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="368"/>
|
||||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||||
<translation>Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
<translation>Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="364"/>
|
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||||
|
<translation type="vanished">Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="369"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>Продолжить</translation>
|
<translation>Продолжить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="365"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="370"/>
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<translation>Отменить</translation>
|
<translation>Отменить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="384"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="389"/>
|
||||||
<source>Save and Restart Amnezia</source>
|
<source>Save and Restart Amnezia</source>
|
||||||
<translation>Сохранить и перезагрузить</translation>
|
<translation>Сохранить и перезагрузить</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -603,27 +616,31 @@ Already installed containers were found on the server. All installed containers
|
||||||
<translation>Параметры подключения %1</translation>
|
<translation>Параметры подключения %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="172"/>
|
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="174"/>
|
||||||
<source>Remove </source>
|
<source>Remove </source>
|
||||||
<translation>Удалить </translation>
|
<translation>Удалить </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="176"/>
|
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="178"/>
|
||||||
<source>Remove %1 from server?</source>
|
<source>Remove %1 from server?</source>
|
||||||
<translation>Удалить %1 с сервера?</translation>
|
<translation>Удалить %1 с сервера?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="177"/>
|
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="179"/>
|
||||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||||
<translation>Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
<translation>Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="178"/>
|
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||||
|
<translation type="obsolete">Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="180"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>Продолжить</translation>
|
<translation>Продолжить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="179"/>
|
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="181"/>
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<translation>Отменить</translation>
|
<translation>Отменить</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -769,7 +786,7 @@ Already installed containers were found on the server. All installed containers
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageServiceSftpSettings.qml" line="251"/>
|
<location filename="../ui/qml/Pages2/PageServiceSftpSettings.qml" line="251"/>
|
||||||
<source>Remove SFTP and all data stored there?</source>
|
<source>Remove SFTP and all data stored there?</source>
|
||||||
<translation>Удалить SFTP-хранилище и все хранящиеся на нем данные?</translation>
|
<translation>Удалить SFTP-хранилище и все хранящиеся на нем данные?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageServiceSftpSettings.qml" line="252"/>
|
<location filename="../ui/qml/Pages2/PageServiceSftpSettings.qml" line="252"/>
|
||||||
|
@ -989,8 +1006,8 @@ Already installed containers were found on the server. All installed containers
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsApplication.qml" line="73"/>
|
<location filename="../ui/qml/Pages2/PageSettingsApplication.qml" line="73"/>
|
||||||
<source>Launch the application every time %1 starts</source>
|
<source>Launch the application every time the device is starts</source>
|
||||||
<translation>Запускать приложение при каждом включении %1</translation>
|
<translation>Запускать приложение при каждом включении</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsApplication.qml" line="93"/>
|
<location filename="../ui/qml/Pages2/PageSettingsApplication.qml" line="93"/>
|
||||||
|
@ -1089,7 +1106,7 @@ Already installed containers were found on the server. All installed containers
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsBackup.qml" line="106"/>
|
<location filename="../ui/qml/Pages2/PageSettingsBackup.qml" line="106"/>
|
||||||
<source>Backup file saved</source>
|
<source>Backup file saved</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Бэкап файл сохранен</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsBackup.qml" line="122"/>
|
<location filename="../ui/qml/Pages2/PageSettingsBackup.qml" line="122"/>
|
||||||
|
@ -1127,7 +1144,7 @@ Already installed containers were found on the server. All installed containers
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsConnection.qml" line="41"/>
|
<location filename="../ui/qml/Pages2/PageSettingsConnection.qml" line="41"/>
|
||||||
<source>Connection</source>
|
<source>Connection</source>
|
||||||
<translation>Подключение</translation>
|
<translation>Соединение</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsConnection.qml" line="50"/>
|
<location filename="../ui/qml/Pages2/PageSettingsConnection.qml" line="50"/>
|
||||||
|
@ -1188,52 +1205,52 @@ Already installed containers were found on the server. All installed containers
|
||||||
<translation>DNS сервер</translation>
|
<translation>DNS сервер</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="49"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="50"/>
|
||||||
<source>If AmneziaDNS is not used or installed</source>
|
<source>If AmneziaDNS is not used or installed</source>
|
||||||
<translation>Эти адреса будут использоваться, если не включен или не установлен AmneziaDNS</translation>
|
<translation>Эти адреса будут использоваться, если не включен или не установлен AmneziaDNS</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="56"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="57"/>
|
||||||
<source>Primary DNS</source>
|
<source>Primary DNS</source>
|
||||||
<translation>Первичный DNS</translation>
|
<translation>Первичный DNS</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="68"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="69"/>
|
||||||
<source>Secondary DNS</source>
|
<source>Secondary DNS</source>
|
||||||
<translation>Вторичный DNS</translation>
|
<translation>Вторичный DNS</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="86"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="87"/>
|
||||||
<source>Restore default</source>
|
<source>Restore default</source>
|
||||||
<translation>Восстановить по умолчанию</translation>
|
<translation>Восстановить по умолчанию</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="89"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="90"/>
|
||||||
<source>Restore default DNS settings?</source>
|
<source>Restore default DNS settings?</source>
|
||||||
<translation>Восстановить настройки DNS по умолчанию?</translation>
|
<translation>Восстановить настройки DNS по умолчанию?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="90"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="91"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>Продолжить</translation>
|
<translation>Продолжить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="91"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="92"/>
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<translation>Отменить</translation>
|
<translation>Отменить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="99"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="100"/>
|
||||||
<source>Settings have been reset</source>
|
<source>Settings have been reset</source>
|
||||||
<translation>Настройки сброшены</translation>
|
<translation>Настройки сброшены</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="111"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="112"/>
|
||||||
<source>Save</source>
|
<source>Save</source>
|
||||||
<translation>Сохранить</translation>
|
<translation>Сохранить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="120"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="121"/>
|
||||||
<source>Settings saved</source>
|
<source>Settings saved</source>
|
||||||
<translation>Сохранить настройки</translation>
|
<translation>Сохранить настройки</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1248,7 +1265,7 @@ Already installed containers were found on the server. All installed containers
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="54"/>
|
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="54"/>
|
||||||
<source>Save logs</source>
|
<source>Save logs</source>
|
||||||
<translation>Сохранить логи</translation>
|
<translation>Сохранять логи</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="86"/>
|
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="86"/>
|
||||||
|
@ -1268,12 +1285,12 @@ Already installed containers were found on the server. All installed containers
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="118"/>
|
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="118"/>
|
||||||
<source>Logs file saved</source>
|
<source>Logs file saved</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Файл с логами сохранен</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="127"/>
|
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="127"/>
|
||||||
<source>Save logs to file</source>
|
<source>Save logs to file</source>
|
||||||
<translation>Сохранять логи в файл</translation>
|
<translation>Сохранить логи в файл</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="145"/>
|
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="145"/>
|
||||||
|
@ -1435,8 +1452,12 @@ Already installed containers were found on the server. All installed containers
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsServerProtocol.qml" line="117"/>
|
<location filename="../ui/qml/Pages2/PageSettingsServerProtocol.qml" line="117"/>
|
||||||
|
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||||
|
<translation>Все пользователи, с которыми вы поделились этим VPN-протоколом, больше не смогут к нему подключаться.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||||
<translation>Все пользователи, которым вы поделились VPN, больше не смогут к нему подключаться.</translation>
|
<translation type="vanished">Все пользователи, которым вы поделились VPN, больше не смогут к нему подключаться.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsServerProtocol.qml" line="118"/>
|
<location filename="../ui/qml/Pages2/PageSettingsServerProtocol.qml" line="118"/>
|
||||||
|
@ -1475,75 +1496,75 @@ Already installed containers were found on the server. All installed containers
|
||||||
<translation>Раздельное VPN-туннелирование</translation>
|
<translation>Раздельное VPN-туннелирование</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="121"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="128"/>
|
||||||
<source>Mode</source>
|
<source>Mode</source>
|
||||||
<translation>Режим</translation>
|
<translation>Режим</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="199"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="206"/>
|
||||||
<source>Remove </source>
|
<source>Remove </source>
|
||||||
<translation>Удалить </translation>
|
<translation>Удалить </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="200"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="207"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>Продолжить</translation>
|
<translation>Продолжить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="201"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="208"/>
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<translation>Отменить</translation>
|
<translation>Отменить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="248"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="255"/>
|
||||||
<source>Site or IP</source>
|
<source>Site or IP</source>
|
||||||
<translation>Сайт или IP</translation>
|
<translation>Сайт или IP</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="292"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="299"/>
|
||||||
<source>Import/Export Sites</source>
|
<source>Import/Export Sites</source>
|
||||||
<translation>Импорт/экспорт Сайтов</translation>
|
<translation>Импорт/экспорт Сайтов</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="298"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="305"/>
|
||||||
<source>Import</source>
|
<source>Import</source>
|
||||||
<translation>Импорт</translation>
|
<translation>Импорт</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="310"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="317"/>
|
||||||
<source>Save site list</source>
|
<source>Save site list</source>
|
||||||
<translation>Сохранить список сайтов</translation>
|
<translation>Сохранить список сайтов</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="317"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="324"/>
|
||||||
<source>Save sites</source>
|
<source>Save sites</source>
|
||||||
<translation>Сохранить</translation>
|
<translation>Сохранить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="318"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="325"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="385"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="392"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="400"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="407"/>
|
||||||
<source>Sites files (*.json)</source>
|
<source>Sites files (*.json)</source>
|
||||||
<translation>Sites files (*.json)</translation>
|
<translation>Sites files (*.json)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="375"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="382"/>
|
||||||
<source>Import a list of sites</source>
|
<source>Import a list of sites</source>
|
||||||
<translation>Импортировать список с сайтами</translation>
|
<translation>Импортировать список с сайтами</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="381"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="388"/>
|
||||||
<source>Replace site list</source>
|
<source>Replace site list</source>
|
||||||
<translation>Заменить список сайтов</translation>
|
<translation>Заменить список сайтов</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="384"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="391"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="399"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="406"/>
|
||||||
<source>Open sites file</source>
|
<source>Open sites file</source>
|
||||||
<translation>Открыть список с сайтами</translation>
|
<translation>Открыть список с сайтами</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="396"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="403"/>
|
||||||
<source>Add imported sites to existing ones</source>
|
<source>Add imported sites to existing ones</source>
|
||||||
<translation>Добавить импортированные сайты к существующим</translation>
|
<translation>Добавить импортированные сайты к существующим</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1689,7 +1710,7 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<context>
|
<context>
|
||||||
<name>PageSetupWizardInstalling</name>
|
<name>PageSetupWizardInstalling</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="57"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="65"/>
|
||||||
<source>The server has already been added to the application</source>
|
<source>The server has already been added to the application</source>
|
||||||
<translation>Сервер уже был добавлен в приложение</translation>
|
<translation>Сервер уже был добавлен в приложение</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1702,28 +1723,28 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<translation type="vanished">занят установкой других протоколов или сервисов. Установка Amnesia </translation>
|
<translation type="vanished">занят установкой других протоколов или сервисов. Установка Amnesia </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="62"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="70"/>
|
||||||
<source>Amnezia has detected that your server is currently </source>
|
<source>Amnezia has detected that your server is currently </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Amnezia обнаружила, что ваш сервер в настоящее время </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="63"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="71"/>
|
||||||
<source>busy installing other software. Amnezia installation </source>
|
<source>busy installing other software. Amnezia installation </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>занят установкой другого программного обеспечения. Установка Amnezia </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="64"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="72"/>
|
||||||
<source>will pause until the server finishes installing other software</source>
|
<source>will pause until the server finishes installing other software</source>
|
||||||
<translation>будет приостановлена до тех пор, пока сервер не завершит установку</translation>
|
<translation>будет приостановлена до тех пор, пока сервер не завершит установку</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="121"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="129"/>
|
||||||
<source>Installing</source>
|
<source>Installing</source>
|
||||||
<translation>Установка</translation>
|
<translation>Установка</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="21"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="21"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="67"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="75"/>
|
||||||
<source>Usually it takes no more than 5 minutes</source>
|
<source>Usually it takes no more than 5 minutes</source>
|
||||||
<translation>Обычно это занимает не более 5 минут</translation>
|
<translation>Обычно это занимает не более 5 минут</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1841,27 +1862,27 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<context>
|
<context>
|
||||||
<name>PageSetupWizardViewConfig</name>
|
<name>PageSetupWizardViewConfig</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="59"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="63"/>
|
||||||
<source>New connection</source>
|
<source>New connection</source>
|
||||||
<translation>Новое соединение</translation>
|
<translation>Новое соединение</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="86"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="90"/>
|
||||||
<source>Do not use connection code from public sources. It could be created to intercept your data.</source>
|
<source>Do not use connection code from public sources. It could be created to intercept your data.</source>
|
||||||
<translation>Не используйте код подключения из публичных источников. Его могли создать, чтобы перехватывать ваши данные.</translation>
|
<translation>Не используйте код подключения из публичных источников. Его могли создать, чтобы перехватывать ваши данные.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="101"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="105"/>
|
||||||
<source>Collapse content</source>
|
<source>Collapse content</source>
|
||||||
<translation>Свернуть</translation>
|
<translation>Свернуть</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="101"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="105"/>
|
||||||
<source>Show content</source>
|
<source>Show content</source>
|
||||||
<translation>Показать содержимое ключа</translation>
|
<translation>Показать содержимое ключа</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="144"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="148"/>
|
||||||
<source>Connect</source>
|
<source>Connect</source>
|
||||||
<translation>Подключиться</translation>
|
<translation>Подключиться</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1879,9 +1900,8 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<translation>WireGuard нативный формат</translation>
|
<translation>WireGuard нативный формат</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="121"/>
|
|
||||||
<source>VPN Access</source>
|
<source>VPN Access</source>
|
||||||
<translation>VPN-Доступ</translation>
|
<translation type="vanished">VPN-Доступ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="146"/>
|
<location filename="../ui/qml/Pages2/PageShare.qml" line="146"/>
|
||||||
|
@ -1889,14 +1909,12 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<translation>Соединение</translation>
|
<translation>Соединение</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="174"/>
|
|
||||||
<source>VPN access without the ability to manage the server</source>
|
<source>VPN access without the ability to manage the server</source>
|
||||||
<translation>Доступ к VPN, без возможности управления сервером</translation>
|
<translation type="vanished">Доступ к VPN, без возможности управления сервером</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="175"/>
|
|
||||||
<source>Access to server management. The user with whom you share full access to the connection will be able to add and remove your protocols and services to the server, as well as change settings.</source>
|
<source>Access to server management. The user with whom you share full access to the connection will be able to add and remove your protocols and services to the server, as well as change settings.</source>
|
||||||
<translation>Доступ к управлению сервером. Пользователь, с которым вы делитесь полным доступом к соединению, сможет добавлять и удалять ваши протоколы и службы на сервере, а также изменять настройки.</translation>
|
<translation type="vanished">Доступ к управлению сервером. Пользователь, с которым вы делитесь полным доступом к соединению, сможет добавлять и удалять ваши протоколы и службы на сервере, а также изменять настройки.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="190"/>
|
<location filename="../ui/qml/Pages2/PageShare.qml" line="190"/>
|
||||||
|
@ -1939,11 +1957,26 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<source>For the AmneziaVPN app</source>
|
<source>For the AmneziaVPN app</source>
|
||||||
<translation>Для AmneziaVPN</translation>
|
<translation>Для AmneziaVPN</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../ui/qml/Pages2/PageShare.qml" line="121"/>
|
||||||
|
<source>Share VPN Access</source>
|
||||||
|
<translation>Поделиться VPN</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="158"/>
|
<location filename="../ui/qml/Pages2/PageShare.qml" line="158"/>
|
||||||
<source>Full access</source>
|
<source>Full access</source>
|
||||||
<translation>Полный доступ</translation>
|
<translation>Полный доступ</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../ui/qml/Pages2/PageShare.qml" line="174"/>
|
||||||
|
<source>Share VPN access without the ability to manage the server</source>
|
||||||
|
<translation>Поделиться доступом к VPN, без возможности управления сервером</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../ui/qml/Pages2/PageShare.qml" line="175"/>
|
||||||
|
<source>Share access to server management. The user with whom you share full access to the server will be able to add and remove any protocols and services to the server, as well as change settings.</source>
|
||||||
|
<translation>Поделиться доступом к управлению сервером. Пользователь, с которым вы делитесь полным доступом к серверу, сможет добавлять и удалять любые протоколы и службы на сервере, а также изменять настройки.</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="251"/>
|
<location filename="../ui/qml/Pages2/PageShare.qml" line="251"/>
|
||||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="252"/>
|
<location filename="../ui/qml/Pages2/PageShare.qml" line="252"/>
|
||||||
|
@ -2428,7 +2461,15 @@ While it offers a blend of security, stability, and speed, it's essential t
|
||||||
* Minimal configuration
|
* Minimal configuration
|
||||||
* Recognised by DPI analysis systems
|
* Recognised by DPI analysis systems
|
||||||
* Works over UDP network protocol, ports 500 and 4500.</source>
|
* Works over UDP network protocol, ports 500 and 4500.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>IKEv2 в сочетании с уровнем шифрования IPSec это современный и стабильный протокол VPN.
|
||||||
|
Он может быстро переключаться между сетями и устройствами, что делает его особенно адаптивным в динамичных сетевых средах.
|
||||||
|
Несмотря на сочетание безопасности, стабильности и скорости, необходимо отметить, что IKEv2 легко обнаруживается и подвержен блокировке.
|
||||||
|
|
||||||
|
* Доступно в AmneziaVPN только для Windows.
|
||||||
|
* Низкое энергопотребление, на мобильных устройствах
|
||||||
|
* Минимальная конфигурация
|
||||||
|
* Распознается системами DPI-анализа
|
||||||
|
* Работает по сетевому протоколу UDP, порты 500 и 4500.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="215"/>
|
<location filename="../containers/containers_defs.cpp" line="215"/>
|
||||||
|
@ -2474,12 +2515,7 @@ While it offers a blend of security, stability, and speed, it's essential t
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="111"/>
|
<location filename="../containers/containers_defs.cpp" line="111"/>
|
||||||
<source>AmneziaWG - Special protocol from Amnezia, based on WireGuard. It's fast like WireGuard, but very resistant to blockages. Recommended for regions with high levels of censorship.</source>
|
<source>AmneziaWG - Special protocol from Amnezia, based on WireGuard. It's fast like WireGuard, but very resistant to blockages. Recommended for regions with high levels of censorship.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>AmneziaWG - Специальный протокол от Amnezia, основанный на протоколе WireGuard. Он такой же быстрый, как WireGuard, но очень устойчив к блокировкам. Рекомендуется для регионов с высоким уровнем цензуры.</translation>
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../containers/containers_defs.cpp" line="112"/>
|
|
||||||
<source>AmneziaWG - Special protocol from Amnezia, based on WireGuard. It's fast like WireGuard, but very resistant to blockages. Recommended for regions with high levels of censorship.</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="115"/>
|
<location filename="../containers/containers_defs.cpp" line="115"/>
|
||||||
|
@ -2511,7 +2547,14 @@ It employs its unique security protocol, leveraging the strength of SSL/TLS for
|
||||||
* Flexible customisation to suit user needs to work with different operating systems and devices
|
* Flexible customisation to suit user needs to work with different operating systems and devices
|
||||||
* Recognised by DPI analysis systems and therefore susceptible to blocking
|
* Recognised by DPI analysis systems and therefore susceptible to blocking
|
||||||
* Can operate over both TCP and UDP network protocols.</source>
|
* Can operate over both TCP and UDP network protocols.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>OpenVPN однин из самых популярных и проверенных временем VPN-протоколов.
|
||||||
|
В нем используется уникальный протокол безопасности, опирающийся на протокол SSL/TLS для шифрования и обмена ключами. Кроме того, поддержка OpenVPN множества методов аутентификации делает его универсальным и адаптируемым к широкому спектру устройств и операционных систем. Благодаря открытому исходному коду OpenVPN подвергается тщательному анализу со стороны мирового сообщества, что постоянно повышает его безопасность. Благодаря оптимальному соотношению производительности, безопасности и совместимости OpenVPN остается лучшим выбором как для частных лиц, так и для компаний, заботящихся о конфиденциальности.
|
||||||
|
|
||||||
|
* Доступность AmneziaVPN для всех платформ
|
||||||
|
* Нормальное энергопотребление на мобильных устройствах
|
||||||
|
* Гибкая настройка под нужды пользователя для работы с различными операционными системами и устройствами
|
||||||
|
* Распознается системами DPI-анализа и поэтому подвержен блокировке
|
||||||
|
* Может работать по сетевым протоколам TCP и UDP.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="145"/>
|
<location filename="../containers/containers_defs.cpp" line="145"/>
|
||||||
|
@ -2523,7 +2566,12 @@ It employs its unique security protocol, leveraging the strength of SSL/TLS for
|
||||||
* Configurable encryption protocol
|
* Configurable encryption protocol
|
||||||
* Detectable by some DPI systems
|
* Detectable by some DPI systems
|
||||||
* Works over TCP network protocol.</source>
|
* Works over TCP network protocol.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Shadowsocks, создан на основе протокола SOCKS5, защищает соединение с помощью шифра AEAD. Несмотря на то, что протокол Shadowsocks разработан таким образом, чтобы быть незаметным и сложным для идентификации, он не идентичен стандартному HTTPS-соединению. Однако некоторые системы анализа трафика все же могут обнаружить соединение Shadowsocks. В связи с ограниченной поддержкой в Amnezia рекомендуется использовать протокол AmneziaWG, или OpenVPN over Cloak.
|
||||||
|
|
||||||
|
* Доступен в AmneziaVPN только на ПК ноутбуках.
|
||||||
|
* Настраиваемый протокол шифрования
|
||||||
|
* Обнаруживается некоторыми DPI-системами
|
||||||
|
* Работает по сетевому протоколу TCP.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="155"/>
|
<location filename="../containers/containers_defs.cpp" line="155"/>
|
||||||
|
@ -2545,7 +2593,24 @@ If there is a extreme level of Internet censorship in your region, we advise you
|
||||||
* Not recognised by DPI analysis systems
|
* Not recognised by DPI analysis systems
|
||||||
* Works over TCP network protocol, 443 port.
|
* Works over TCP network protocol, 443 port.
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>OpenVPN over Cloak - это комбинация протокола OpenVPN и плагина Cloak, разработанного специально для защиты от блокировок.
|
||||||
|
|
||||||
|
OpenVPN обеспечивает безопасное VPN-соединение за счет шифрования всего интернет-трафика между клиентом и сервером.
|
||||||
|
|
||||||
|
Cloak защищает OpenVPN от обнаружения и блокировок.
|
||||||
|
|
||||||
|
Cloak может изменять метаданные пакетов. Он полностью маскирует VPN-трафик под обычный веб-трафик, а также защищает VPN от обнаружения с помощью Active Probing. Это делает его очень устойчивым к обнаружению
|
||||||
|
|
||||||
|
Сразу же после получения первого пакета данных Cloak проверяет подлинность входящего соединения. Если аутентификация не проходит, плагин маскирует сервер под поддельный сайт, и ваш VPN становится невидимым для аналитических систем.
|
||||||
|
|
||||||
|
Если в вашем регионе существует экстремальный уровень цензуры в Интернете, мы советуем вам при первом подключении использовать только OpenVPN через Cloak
|
||||||
|
|
||||||
|
* Доступность AmneziaVPN на всех платформах
|
||||||
|
* Высокое энергопотребление на мобильных устройствах
|
||||||
|
* Гибкие настройки
|
||||||
|
* Не распознается системами DPI-анализа
|
||||||
|
* Работает по сетевому протоколу TCP, 443 порт.
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="174"/>
|
<location filename="../containers/containers_defs.cpp" line="174"/>
|
||||||
|
@ -2558,7 +2623,15 @@ WireGuard is very susceptible to blocking due to its distinct packet signatures.
|
||||||
* Minimum number of settings
|
* Minimum number of settings
|
||||||
* Easily recognised by DPI analysis systems, susceptible to blocking
|
* Easily recognised by DPI analysis systems, susceptible to blocking
|
||||||
* Works over UDP network protocol.</source>
|
* Works over UDP network protocol.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>WireGuard - относительно новый популярный VPN-протокол с упрощенной архитектурой.
|
||||||
|
Обеспечивает стабильное VPN-соединение, высокую производительность на всех устройствах. Использует жестко заданные настройки шифрования. WireGuard по сравнению с OpenVPN имеет меньшую задержку и лучшую пропускную способность при передаче данных.
|
||||||
|
WireGuard очень восприимчив к блокированию из-за особенностей сигнатур пакетов. В отличие от некоторых других VPN-протоколов, использующих методы обфускации, последовательные сигнатуры пакетов WireGuard легче выявляются и, соответственно, блокируются современными системами глубокой проверки пакетов (DPI) и другими средствами сетевого мониторинга.
|
||||||
|
|
||||||
|
* Доступность AmneziaVPN для всех платформ
|
||||||
|
* Низкое энергопотребление
|
||||||
|
* Минимальное количество настроек
|
||||||
|
* Легко распознается системами DPI-анализа, подвержен блокировке
|
||||||
|
* Работает по сетевому протоколу UDP.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="187"/>
|
<location filename="../containers/containers_defs.cpp" line="187"/>
|
||||||
|
@ -2571,7 +2644,15 @@ This means that AmneziaWG keeps the fast performance of the original while addin
|
||||||
* Minimum number of settings
|
* Minimum number of settings
|
||||||
* Not recognised by DPI analysis systems, resistant to blocking
|
* Not recognised by DPI analysis systems, resistant to blocking
|
||||||
* Works over UDP network protocol.</source>
|
* Works over UDP network protocol.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>AmneziaWG - усовершенствованная версия популярного VPN-протокола Wireguard. AmneziaWG опирается на фундамент, заложенный WireGuard, сохраняя упрощенную архитектуру и высокопроизводительные возможности работы на разных устройствах.
|
||||||
|
Хотя WireGuard известен своей эффективностью, у него были проблемы с обнаружением из-за характерных сигнатур пакетов. AmneziaWG решает эту проблему за счет использования более совершенных методов обфускации, благодаря чему его трафик сливается с обычным интернет-трафиком.
|
||||||
|
Таким образом, AmneziaWG сохраняет высокую производительность оригинала, добавляя при этом дополнительный уровень скрытности, что делает его отличным выбором для тех, кому нужно быстрое и незаметное VPN-соединение.
|
||||||
|
|
||||||
|
* Доступность AmneziaVPN на всех платформах
|
||||||
|
* Низкое энергопотребление
|
||||||
|
* Минимальное количество настроек
|
||||||
|
* Не распознается системами DPI-анализа, устойчив к блокировке
|
||||||
|
* Работает по сетевому протоколу UDP.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>AmneziaWG container</source>
|
<source>AmneziaWG container</source>
|
||||||
|
@ -2583,7 +2664,7 @@ This means that AmneziaWG keeps the fast performance of the original while addin
|
||||||
<translation>Сервис обмена файлами Sftp - безопасный FTP-сервис</translation>
|
<translation>Сервис обмена файлами Sftp - безопасный FTP-сервис</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../protocols/protocols_defs.cpp" line="75"/>
|
<location filename="../protocols/protocols_defs.cpp" line="77"/>
|
||||||
<source>Sftp service</source>
|
<source>Sftp service</source>
|
||||||
<translation>Сервис SFTP</translation>
|
<translation>Сервис SFTP</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2647,26 +2728,6 @@ This means that AmneziaWG keeps the fast performance of the original while addin
|
||||||
<source>error 0x%1: %2</source>
|
<source>error 0x%1: %2</source>
|
||||||
<translation>error 0x%1: %2</translation>
|
<translation>error 0x%1: %2</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../3rd/wireguard-tools/contrib/highlighter/gui/highlight.cpp" line="39"/>
|
|
||||||
<source>WireGuard Configuration Highlighter</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../3rd/wireguard-tools/contrib/highlighter/gui/highlight.cpp" line="82"/>
|
|
||||||
<source>&Randomize colors</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../3rd/wireguard-tools/contrib/highlighter/gui/highlight.cpp" line="39"/>
|
|
||||||
<source>WireGuard Configuration Highlighter</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../3rd/wireguard-tools/contrib/highlighter/gui/highlight.cpp" line="82"/>
|
|
||||||
<source>&Randomize colors</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>SelectLanguageDrawer</name>
|
<name>SelectLanguageDrawer</name>
|
||||||
|
@ -2834,7 +2895,7 @@ This means that AmneziaWG keeps the fast performance of the original while addin
|
||||||
<context>
|
<context>
|
||||||
<name>VpnConnection</name>
|
<name>VpnConnection</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../vpnconnection.cpp" line="422"/>
|
<location filename="../vpnconnection.cpp" line="406"/>
|
||||||
<source>Mbps</source>
|
<source>Mbps</source>
|
||||||
<translation>Mbps</translation>
|
<translation>Mbps</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2892,7 +2953,7 @@ This means that AmneziaWG keeps the fast performance of the original while addin
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="309"/>
|
<location filename="../containers/containers_defs.cpp" line="309"/>
|
||||||
<source>Medium or High</source>
|
<source>Medium or High</source>
|
||||||
<translation>Спедний или Высокий</translation>
|
<translation>Средний или Высокий</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="310"/>
|
<location filename="../containers/containers_defs.cpp" line="310"/>
|
||||||
|
@ -2940,7 +3001,7 @@ This means that AmneziaWG keeps the fast performance of the original while addin
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/main2.qml" line="172"/>
|
<location filename="../ui/qml/main2.qml" line="172"/>
|
||||||
<source>Private key passphrase</source>
|
<source>Private key passphrase</source>
|
||||||
<translation>Кодовая фраза для закрытого ключа</translation>
|
<translation>Кодовая фраза для закрытого ключа</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/main2.qml" line="191"/>
|
<location filename="../ui/qml/main2.qml" line="191"/>
|
||||||
|
|
|
@ -4,13 +4,9 @@
|
||||||
<context>
|
<context>
|
||||||
<name>AmneziaApplication</name>
|
<name>AmneziaApplication</name>
|
||||||
<message>
|
<message>
|
||||||
|
<location filename="../amnezia_application.cpp" line="304"/>
|
||||||
<source>Split tunneling for WireGuard is not implemented, the option was disabled</source>
|
<source>Split tunneling for WireGuard is not implemented, the option was disabled</source>
|
||||||
<translation type="vanished">未启用选项,还未实现基于WireGuard协议的VPN分离</translation>
|
<translation>未启用选项,还未实现基于WireGuard协议的VPN分离</translation>
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../amnezia_application.cpp" line="303"/>
|
|
||||||
<source>Split tunneling for %1 is not implemented, the option was disabled</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -78,17 +74,17 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Components/ConnectionTypeSelectionDrawer.qml" line="30"/>
|
<location filename="../ui/qml/Components/ConnectionTypeSelectionDrawer.qml" line="30"/>
|
||||||
<source>Add new connection</source>
|
<source>Add new connection</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>添加新连接</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Components/ConnectionTypeSelectionDrawer.qml" line="38"/>
|
<location filename="../ui/qml/Components/ConnectionTypeSelectionDrawer.qml" line="38"/>
|
||||||
<source>Configure your server</source>
|
<source>Configure your server</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>配置您的服务器</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Components/ConnectionTypeSelectionDrawer.qml" line="52"/>
|
<location filename="../ui/qml/Components/ConnectionTypeSelectionDrawer.qml" line="52"/>
|
||||||
<source>Open config file, key or QR code</source>
|
<source>Open config file, key or QR code</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>配置文件,授权码或二维码</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Server IP, login and password</source>
|
<source>Server IP, login and password</source>
|
||||||
|
@ -134,19 +130,23 @@
|
||||||
<name>HomeContainersListView</name>
|
<name>HomeContainersListView</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Components/HomeContainersListView.qml" line="58"/>
|
<location filename="../ui/qml/Components/HomeContainersListView.qml" line="58"/>
|
||||||
|
<source>Unable change protocol while there is an active connection</source>
|
||||||
|
<translation>已建立连接时无法更改服务器配置</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../ui/qml/Components/HomeContainersListView.qml" line="69"/>
|
||||||
<source>The selected protocol is not supported on the current platform</source>
|
<source>The selected protocol is not supported on the current platform</source>
|
||||||
<translation>当前平台不支持所选协议</translation>
|
<translation>当前平台不支持所选协议</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Components/HomeContainersListView.qml" line="76"/>
|
|
||||||
<source>Reconnect via VPN Procotol: </source>
|
<source>Reconnect via VPN Procotol: </source>
|
||||||
<translation>重连VPN基于协议: </translation>
|
<translation type="vanished">重连VPN基于协议: </translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ImportController</name>
|
<name>ImportController</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/importController.cpp" line="436"/>
|
<location filename="../ui/controllers/importController.cpp" line="427"/>
|
||||||
<source>Scanned %1 of %2.</source>
|
<source>Scanned %1 of %2.</source>
|
||||||
<translation>扫描 %1 of %2.</translation>
|
<translation>扫描 %1 of %2.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -162,47 +162,47 @@
|
||||||
<translation type="obsolete"> 已安装在服务器上</translation>
|
<translation type="obsolete"> 已安装在服务器上</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="110"/>
|
<location filename="../ui/controllers/installController.cpp" line="143"/>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="161"/>
|
<location filename="../ui/controllers/installController.cpp" line="193"/>
|
||||||
<source>%1 installed successfully. </source>
|
<source>%1 installed successfully. </source>
|
||||||
<translation>%1 安装成功。</translation>
|
<translation>%1 安装成功。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="112"/>
|
<location filename="../ui/controllers/installController.cpp" line="145"/>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="163"/>
|
<location filename="../ui/controllers/installController.cpp" line="195"/>
|
||||||
<source>%1 is already installed on the server. </source>
|
<source>%1 is already installed on the server. </source>
|
||||||
<translation>服务器上已经安装 %1。</translation>
|
<translation>服务器上已经安装 %1。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="115"/>
|
<location filename="../ui/controllers/installController.cpp" line="148"/>
|
||||||
<source>
|
<source>
|
||||||
Added containers that were already installed on the server</source>
|
Added containers that were already installed on the server</source>
|
||||||
<translation>添加已安装在服务器上的容器</translation>
|
<translation>添加已安装在服务器上的容器</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="182"/>
|
<location filename="../ui/controllers/installController.cpp" line="214"/>
|
||||||
<source>
|
<source>
|
||||||
Already installed containers were found on the server. All installed containers have been added to the application</source>
|
Already installed containers were found on the server. All installed containers have been added to the application</source>
|
||||||
<translation>
|
<translation>
|
||||||
在服务上发现已经安装协议并添加至应用</translation>
|
在服务上发现已经安装协议并添加至应用</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="266"/>
|
<location filename="../ui/controllers/installController.cpp" line="295"/>
|
||||||
<source>Settings updated successfully</source>
|
<source>Settings updated successfully</source>
|
||||||
<translation>配置更新成功</translation>
|
<translation>配置更新成功</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="281"/>
|
<location filename="../ui/controllers/installController.cpp" line="310"/>
|
||||||
<source>Server '%1' was removed</source>
|
<source>Server '%1' was removed</source>
|
||||||
<translation>已移除服务器 '%1'</translation>
|
<translation>已移除服务器 '%1'</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="291"/>
|
<location filename="../ui/controllers/installController.cpp" line="320"/>
|
||||||
<source>All containers from server '%1' have been removed</source>
|
<source>All containers from server '%1' have been removed</source>
|
||||||
<translation>服务器 '%1' 的所有容器已移除</translation>
|
<translation>服务器 '%1' 的所有容器已移除</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="308"/>
|
<location filename="../ui/controllers/installController.cpp" line="337"/>
|
||||||
<source>%1 has been removed from the server '%2'</source>
|
<source>%1 has been removed from the server '%2'</source>
|
||||||
<translation>%1 已从服务器 '%2' 上移除</translation>
|
<translation>%1 已从服务器 '%2' 上移除</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -223,12 +223,12 @@ Already installed containers were found on the server. All installed containers
|
||||||
<translation type="obsolete"> 协议已从</translation>
|
<translation type="obsolete"> 协议已从</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="454"/>
|
<location filename="../ui/controllers/installController.cpp" line="483"/>
|
||||||
<source>Please login as the user</source>
|
<source>Please login as the user</source>
|
||||||
<translation>请以用户身份登录</translation>
|
<translation>请以用户身份登录</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/controllers/installController.cpp" line="481"/>
|
<location filename="../ui/controllers/installController.cpp" line="511"/>
|
||||||
<source>Server added successfully</source>
|
<source>Server added successfully</source>
|
||||||
<translation>增加服务器成功</translation>
|
<translation>增加服务器成功</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -296,15 +296,20 @@ Already installed containers were found on the server. All installed containers
|
||||||
<context>
|
<context>
|
||||||
<name>PageHome</name>
|
<name>PageHome</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="344"/>
|
<location filename="../ui/qml/Pages2/PageHome.qml" line="354"/>
|
||||||
<source>VPN protocol</source>
|
<source>VPN protocol</source>
|
||||||
<translation>VPN协议</translation>
|
<translation>VPN协议</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageHome.qml" line="388"/>
|
<location filename="../ui/qml/Pages2/PageHome.qml" line="398"/>
|
||||||
<source>Servers</source>
|
<source>Servers</source>
|
||||||
<translation>服务器</translation>
|
<translation>服务器</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../ui/qml/Pages2/PageHome.qml" line="490"/>
|
||||||
|
<source>Unable change server while there is an active connection</source>
|
||||||
|
<translation>已建立连接时无法更改服务器配置</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>PageProtocolAwgSettings</name>
|
<name>PageProtocolAwgSettings</name>
|
||||||
|
@ -375,8 +380,12 @@ Already installed containers were found on the server. All installed containers
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="279"/>
|
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="279"/>
|
||||||
|
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||||
|
<translation>与您共享连接的所有用户将无法再连接到该连接。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||||
<translation>使用此共享连接的所有用户,将无法再连接它。</translation>
|
<translation type="vanished">使用此共享连接的所有用户,将无法再连接它。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="280"/>
|
<location filename="../ui/qml/Pages2/PageProtocolAwgSettings.qml" line="280"/>
|
||||||
|
@ -426,199 +435,203 @@ Already installed containers were found on the server. All installed containers
|
||||||
<context>
|
<context>
|
||||||
<name>PageProtocolOpenVpnSettings</name>
|
<name>PageProtocolOpenVpnSettings</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="76"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="77"/>
|
||||||
<source>OpenVPN settings</source>
|
<source>OpenVPN settings</source>
|
||||||
<translation>OpenVPN 配置</translation>
|
<translation>OpenVPN 配置</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="83"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="84"/>
|
||||||
<source>VPN Addresses Subnet</source>
|
<source>VPN Addresses Subnet</source>
|
||||||
<translation>VPN子网掩码</translation>
|
<translation>VPN子网掩码</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="97"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="98"/>
|
||||||
<source>Network protocol</source>
|
<source>Network protocol</source>
|
||||||
<translation>网络协议</translation>
|
<translation>网络协议</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="126"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="127"/>
|
||||||
<source>Port</source>
|
<source>Port</source>
|
||||||
<translation>端口</translation>
|
<translation>端口</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="144"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="145"/>
|
||||||
<source>Auto-negotiate encryption</source>
|
<source>Auto-negotiate encryption</source>
|
||||||
<translation>自定义加密方式</translation>
|
<translation>自定义加密方式</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="161"/>
|
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="162"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="162"/>
|
||||||
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="163"/>
|
||||||
<source>Hash</source>
|
<source>Hash</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="170"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="171"/>
|
||||||
<source>SHA512</source>
|
<source>SHA512</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="171"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="172"/>
|
||||||
<source>SHA384</source>
|
<source>SHA384</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="172"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="173"/>
|
||||||
<source>SHA256</source>
|
<source>SHA256</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="173"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="174"/>
|
||||||
<source>SHA3-512</source>
|
<source>SHA3-512</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="174"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="175"/>
|
||||||
<source>SHA3-384</source>
|
<source>SHA3-384</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="175"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="176"/>
|
||||||
<source>SHA3-256</source>
|
<source>SHA3-256</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="176"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="177"/>
|
||||||
<source>whirlpool</source>
|
<source>whirlpool</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="177"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="178"/>
|
||||||
<source>BLAKE2b512</source>
|
<source>BLAKE2b512</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="178"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="179"/>
|
||||||
<source>BLAKE2s256</source>
|
<source>BLAKE2s256</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="179"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="180"/>
|
||||||
<source>SHA1</source>
|
<source>SHA1</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="207"/>
|
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="208"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="208"/>
|
||||||
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="209"/>
|
||||||
<source>Cipher</source>
|
<source>Cipher</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="216"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="217"/>
|
||||||
<source>AES-256-GCM</source>
|
<source>AES-256-GCM</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="217"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="218"/>
|
||||||
<source>AES-192-GCM</source>
|
<source>AES-192-GCM</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="218"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="219"/>
|
||||||
<source>AES-128-GCM</source>
|
<source>AES-128-GCM</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="219"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="220"/>
|
||||||
<source>AES-256-CBC</source>
|
<source>AES-256-CBC</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="220"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="221"/>
|
||||||
<source>AES-192-CBC</source>
|
<source>AES-192-CBC</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="221"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="222"/>
|
||||||
<source>AES-128-CBC</source>
|
<source>AES-128-CBC</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="222"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="223"/>
|
||||||
<source>ChaCha20-Poly1305</source>
|
<source>ChaCha20-Poly1305</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="223"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="224"/>
|
||||||
<source>ARIA-256-CBC</source>
|
<source>ARIA-256-CBC</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="224"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="225"/>
|
||||||
<source>CAMELLIA-256-CBC</source>
|
<source>CAMELLIA-256-CBC</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="225"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="226"/>
|
||||||
<source>none</source>
|
<source>none</source>
|
||||||
<translation>无</translation>
|
<translation>无</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="258"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="261"/>
|
||||||
<source>TLS auth</source>
|
<source>TLS auth</source>
|
||||||
<translation>TLS认证</translation>
|
<translation>TLS认证</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="273"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="276"/>
|
||||||
<source>Block DNS requests outside of VPN</source>
|
<source>Block DNS requests outside of VPN</source>
|
||||||
<translation>阻止VPN外的DNS请求</translation>
|
<translation>阻止VPN外的DNS请求</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="292"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="295"/>
|
||||||
<source>Additional client configuration commands</source>
|
<source>Additional client configuration commands</source>
|
||||||
<translation>附加客户端配置命令</translation>
|
<translation>附加客户端配置命令</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="308"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="311"/>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="340"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="343"/>
|
||||||
<source>Commands:</source>
|
<source>Commands:</source>
|
||||||
<translation>命令:</translation>
|
<translation>命令:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="324"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="327"/>
|
||||||
<source>Additional server configuration commands</source>
|
<source>Additional server configuration commands</source>
|
||||||
<translation>附加服务器端配置命令</translation>
|
<translation>附加服务器端配置命令</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="359"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="364"/>
|
||||||
<source>Remove OpenVPN</source>
|
<source>Remove OpenVPN</source>
|
||||||
<translation>移除OpenVPN</translation>
|
<translation>移除OpenVPN</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="362"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="367"/>
|
||||||
<source>Remove OpenVpn from server?</source>
|
<source>Remove OpenVpn from server?</source>
|
||||||
<translation>从服务器移除OpenVPN吗?</translation>
|
<translation>从服务器移除OpenVPN吗?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="363"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="368"/>
|
||||||
|
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||||
|
<translation>与您共享连接的所有用户将无法再连接到该连接。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||||
<translation>使用此共享连接的所有用户,将无法再连接它。</translation>
|
<translation type="vanished">使用此共享连接的所有用户,将无法再连接它。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>All users with whom you shared a connection will no longer be able to connect to it</source>
|
<source>All users with whom you shared a connection will no longer be able to connect to it</source>
|
||||||
<translation type="obsolete">与您共享连接的所有用户将无法再连接到此链接</translation>
|
<translation type="obsolete">与您共享连接的所有用户将无法再连接到此链接</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="364"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="369"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>继续</translation>
|
<translation>继续</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="365"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="370"/>
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<translation>取消</translation>
|
<translation>取消</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="384"/>
|
<location filename="../ui/qml/Pages2/PageProtocolOpenVpnSettings.qml" line="389"/>
|
||||||
<source>Save and Restart Amnezia</source>
|
<source>Save and Restart Amnezia</source>
|
||||||
<translation>保存并重启Amnezia</translation>
|
<translation>保存并重启Amnezia</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -645,19 +658,23 @@ Already installed containers were found on the server. All installed containers
|
||||||
<translation>%1 连接选项</translation>
|
<translation>%1 连接选项</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="172"/>
|
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="174"/>
|
||||||
<source>Remove </source>
|
<source>Remove </source>
|
||||||
<translation>移除 </translation>
|
<translation>移除 </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="176"/>
|
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="178"/>
|
||||||
<source>Remove %1 from server?</source>
|
<source>Remove %1 from server?</source>
|
||||||
<translation>从服务器移除 %1 ?</translation>
|
<translation>从服务器移除 %1 ?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="177"/>
|
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="179"/>
|
||||||
|
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||||
|
<translation>与您共享连接的所有用户将无法再连接到该连接。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||||
<translation>使用此共享连接的所有用户,将无法再连接它。</translation>
|
<translation type="vanished">使用此共享连接的所有用户,将无法再连接它。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source> from server?</source>
|
<source> from server?</source>
|
||||||
|
@ -668,12 +685,12 @@ Already installed containers were found on the server. All installed containers
|
||||||
<translation type="obsolete">与您共享连接的所有用户将无法再连接到此链接</translation>
|
<translation type="obsolete">与您共享连接的所有用户将无法再连接到此链接</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="178"/>
|
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="180"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>继续</translation>
|
<translation>继续</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="179"/>
|
<location filename="../ui/qml/Pages2/PageProtocolRaw.qml" line="181"/>
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<translation>取消</translation>
|
<translation>取消</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -864,7 +881,7 @@ Already installed containers were found on the server. All installed containers
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageServiceTorWebsiteSettings.qml" line="112"/>
|
<location filename="../ui/qml/Pages2/PageServiceTorWebsiteSettings.qml" line="112"/>
|
||||||
<source>When configuring WordPress set the this onion address as domain.</source>
|
<source>When configuring WordPress set the this onion address as domain.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>配置 WordPress 时,将此洋葱地址设置为域。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>When configuring WordPress set the domain as this onion address.</source>
|
<source>When configuring WordPress set the domain as this onion address.</source>
|
||||||
|
@ -1050,9 +1067,13 @@ And if you don't like the app, all the more support it - the donation will
|
||||||
<translation type="obsolete"> 启动时自动运行运用程序</translation>
|
<translation type="obsolete"> 启动时自动运行运用程序</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsApplication.qml" line="73"/>
|
|
||||||
<source>Launch the application every time %1 starts</source>
|
<source>Launch the application every time %1 starts</source>
|
||||||
<translation>运行应用软件在%1系统启动时</translation>
|
<translation type="vanished">运行应用软件在%1系统启动时</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../ui/qml/Pages2/PageSettingsApplication.qml" line="73"/>
|
||||||
|
<source>Launch the application every time the device is starts</source>
|
||||||
|
<translation>每次设备启动时启动应用程序</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsApplication.qml" line="93"/>
|
<location filename="../ui/qml/Pages2/PageSettingsApplication.qml" line="93"/>
|
||||||
|
@ -1155,7 +1176,7 @@ And if you don't like the app, all the more support it - the donation will
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsBackup.qml" line="106"/>
|
<location filename="../ui/qml/Pages2/PageSettingsBackup.qml" line="106"/>
|
||||||
<source>Backup file saved</source>
|
<source>Backup file saved</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>备份文件已保存</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsBackup.qml" line="122"/>
|
<location filename="../ui/qml/Pages2/PageSettingsBackup.qml" line="122"/>
|
||||||
|
@ -1270,52 +1291,52 @@ And if you don't like the app, all the more support it - the donation will
|
||||||
<translation>DNS服务器</translation>
|
<translation>DNS服务器</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="49"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="50"/>
|
||||||
<source>If AmneziaDNS is not used or installed</source>
|
<source>If AmneziaDNS is not used or installed</source>
|
||||||
<translation>如果未使用或未安装AmneziaDNS</translation>
|
<translation>如果未使用或未安装AmneziaDNS</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="56"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="57"/>
|
||||||
<source>Primary DNS</source>
|
<source>Primary DNS</source>
|
||||||
<translation>首选 DNS</translation>
|
<translation>首选 DNS</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="68"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="69"/>
|
||||||
<source>Secondary DNS</source>
|
<source>Secondary DNS</source>
|
||||||
<translation>备用 DNS</translation>
|
<translation>备用 DNS</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="86"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="87"/>
|
||||||
<source>Restore default</source>
|
<source>Restore default</source>
|
||||||
<translation>恢复默认配置</translation>
|
<translation>恢复默认配置</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="89"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="90"/>
|
||||||
<source>Restore default DNS settings?</source>
|
<source>Restore default DNS settings?</source>
|
||||||
<translation>是否恢复默认DNS配置?</translation>
|
<translation>是否恢复默认DNS配置?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="90"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="91"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>继续</translation>
|
<translation>继续</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="91"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="92"/>
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<translation>取消</translation>
|
<translation>取消</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="99"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="100"/>
|
||||||
<source>Settings have been reset</source>
|
<source>Settings have been reset</source>
|
||||||
<translation>已重置</translation>
|
<translation>已重置</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="111"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="112"/>
|
||||||
<source>Save</source>
|
<source>Save</source>
|
||||||
<translation>保存</translation>
|
<translation>保存</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="120"/>
|
<location filename="../ui/qml/Pages2/PageSettingsDns.qml" line="121"/>
|
||||||
<source>Settings saved</source>
|
<source>Settings saved</source>
|
||||||
<translation>配置已保存</translation>
|
<translation>配置已保存</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1350,7 +1371,7 @@ And if you don't like the app, all the more support it - the donation will
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="118"/>
|
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="118"/>
|
||||||
<source>Logs file saved</source>
|
<source>Logs file saved</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>日志文件已保存</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="127"/>
|
<location filename="../ui/qml/Pages2/PageSettingsLogging.qml" line="127"/>
|
||||||
|
@ -1512,8 +1533,12 @@ And if you don't like the app, all the more support it - the donation will
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsServerProtocol.qml" line="117"/>
|
<location filename="../ui/qml/Pages2/PageSettingsServerProtocol.qml" line="117"/>
|
||||||
|
<source>All users with whom you shared a connection will no longer be able to connect to it.</source>
|
||||||
|
<translation>与您共享连接的所有用户将无法再连接到该连接。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
<source>All users who you shared a connection with will no longer be able to connect to it.</source>
|
||||||
<translation>使用此共享连接的所有用户,将无法再连接它。</translation>
|
<translation type="vanished">使用此共享连接的所有用户,将无法再连接它。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source> from server?</source>
|
<source> from server?</source>
|
||||||
|
@ -1577,75 +1602,75 @@ And if you don't like the app, all the more support it - the donation will
|
||||||
<translation>隧道分离</translation>
|
<translation>隧道分离</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="121"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="128"/>
|
||||||
<source>Mode</source>
|
<source>Mode</source>
|
||||||
<translation>规则</translation>
|
<translation>规则</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="199"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="206"/>
|
||||||
<source>Remove </source>
|
<source>Remove </source>
|
||||||
<translation>移除 </translation>
|
<translation>移除 </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="200"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="207"/>
|
||||||
<source>Continue</source>
|
<source>Continue</source>
|
||||||
<translation>继续</translation>
|
<translation>继续</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="201"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="208"/>
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<translation>取消</translation>
|
<translation>取消</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="248"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="255"/>
|
||||||
<source>Site or IP</source>
|
<source>Site or IP</source>
|
||||||
<translation>网站或IP地址</translation>
|
<translation>网站或IP地址</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="292"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="299"/>
|
||||||
<source>Import/Export Sites</source>
|
<source>Import/Export Sites</source>
|
||||||
<translation>导入/导出网站</translation>
|
<translation>导入/导出网站</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="298"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="305"/>
|
||||||
<source>Import</source>
|
<source>Import</source>
|
||||||
<translation>导入</translation>
|
<translation>导入</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="310"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="317"/>
|
||||||
<source>Save site list</source>
|
<source>Save site list</source>
|
||||||
<translation>保存网址</translation>
|
<translation>保存网址</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="317"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="324"/>
|
||||||
<source>Save sites</source>
|
<source>Save sites</source>
|
||||||
<translation>保存网址</translation>
|
<translation>保存网址</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="318"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="325"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="385"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="392"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="400"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="407"/>
|
||||||
<source>Sites files (*.json)</source>
|
<source>Sites files (*.json)</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="375"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="382"/>
|
||||||
<source>Import a list of sites</source>
|
<source>Import a list of sites</source>
|
||||||
<translation>导入网址列表</translation>
|
<translation>导入网址列表</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="381"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="388"/>
|
||||||
<source>Replace site list</source>
|
<source>Replace site list</source>
|
||||||
<translation>替换网址列表</translation>
|
<translation>替换网址列表</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="384"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="391"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="399"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="406"/>
|
||||||
<source>Open sites file</source>
|
<source>Open sites file</source>
|
||||||
<translation>打开网址文件</translation>
|
<translation>打开网址文件</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="396"/>
|
<location filename="../ui/qml/Pages2/PageSettingsSplitTunneling.qml" line="403"/>
|
||||||
<source>Add imported sites to existing ones</source>
|
<source>Add imported sites to existing ones</source>
|
||||||
<translation>将导入的网址添加到现有网址中</translation>
|
<translation>将导入的网址添加到现有网址中</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1705,7 +1730,7 @@ It's okay as long as it's from someone you trust.</source>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardCredentials.qml" line="44"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardCredentials.qml" line="44"/>
|
||||||
<source>Configure your server</source>
|
<source>Configure your server</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>配置服务器</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardCredentials.qml" line="51"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardCredentials.qml" line="51"/>
|
||||||
|
@ -1720,7 +1745,7 @@ It's okay as long as it's from someone you trust.</source>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardCredentials.qml" line="66"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardCredentials.qml" line="66"/>
|
||||||
<source>Login to connect via SSH</source>
|
<source>Login to connect via SSH</source>
|
||||||
<translation>ssh账号</translation>
|
<translation>用户</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardCredentials.qml" line="76"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardCredentials.qml" line="76"/>
|
||||||
|
@ -1736,7 +1761,8 @@ It's okay as long as it's from someone you trust.</source>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardCredentials.qml" line="115"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardCredentials.qml" line="115"/>
|
||||||
<source>All data you enter will remain strictly confidential
|
<source>All data you enter will remain strictly confidential
|
||||||
and will not be shared or disclosed to the Amnezia or any third parties</source>
|
and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>您输入的所有数据将严格保密
|
||||||
|
不会向 Amnezia 或任何第三方分享或披露</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardCredentials.qml" line="125"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardCredentials.qml" line="125"/>
|
||||||
|
@ -1791,24 +1817,24 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<name>PageSetupWizardInstalling</name>
|
<name>PageSetupWizardInstalling</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="21"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="21"/>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="67"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="75"/>
|
||||||
<source>Usually it takes no more than 5 minutes</source>
|
<source>Usually it takes no more than 5 minutes</source>
|
||||||
<translation>通常不超过5分钟</translation>
|
<translation>通常不超过5分钟</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="57"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="65"/>
|
||||||
<source>The server has already been added to the application</source>
|
<source>The server has already been added to the application</source>
|
||||||
<translation>服务器已添加到应用软件中</translation>
|
<translation>服务器已添加到应用软件中</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="62"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="70"/>
|
||||||
<source>Amnezia has detected that your server is currently </source>
|
<source>Amnezia has detected that your server is currently </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Amnezia 检测到您的服务器当前</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="63"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="71"/>
|
||||||
<source>busy installing other software. Amnezia installation </source>
|
<source>busy installing other software. Amnezia installation </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>正安装其他软件。Amnezia安装</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Amnesia has detected that your server is currently </source>
|
<source>Amnesia has detected that your server is currently </source>
|
||||||
|
@ -1819,12 +1845,12 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<translation type="vanished">正安装其他软件。Amnezia安装</translation>
|
<translation type="vanished">正安装其他软件。Amnezia安装</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="64"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="72"/>
|
||||||
<source>will pause until the server finishes installing other software</source>
|
<source>will pause until the server finishes installing other software</source>
|
||||||
<translation>将暂停,直到其他软件安装完成。</translation>
|
<translation>将暂停,直到其他软件安装完成。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="121"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardInstalling.qml" line="129"/>
|
||||||
<source>Installing</source>
|
<source>Installing</source>
|
||||||
<translation>安装中</translation>
|
<translation>安装中</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1942,27 +1968,27 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<context>
|
<context>
|
||||||
<name>PageSetupWizardViewConfig</name>
|
<name>PageSetupWizardViewConfig</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="59"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="63"/>
|
||||||
<source>New connection</source>
|
<source>New connection</source>
|
||||||
<translation>新连接</translation>
|
<translation>新连接</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="86"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="90"/>
|
||||||
<source>Do not use connection code from public sources. It could be created to intercept your data.</source>
|
<source>Do not use connection code from public sources. It could be created to intercept your data.</source>
|
||||||
<translation>请勿使用公共来源的连接码。它可以被创建来拦截您的数据。</translation>
|
<translation>请勿使用公共来源的连接码。它可以被创建来拦截您的数据。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="101"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="105"/>
|
||||||
<source>Collapse content</source>
|
<source>Collapse content</source>
|
||||||
<translation>折叠内容</translation>
|
<translation>折叠内容</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="101"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="105"/>
|
||||||
<source>Show content</source>
|
<source>Show content</source>
|
||||||
<translation>显示内容</translation>
|
<translation>显示内容</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="144"/>
|
<location filename="../ui/qml/Pages2/PageSetupWizardViewConfig.qml" line="148"/>
|
||||||
<source>Connect</source>
|
<source>Connect</source>
|
||||||
<translation>连接</translation>
|
<translation>连接</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1996,8 +2022,22 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="121"/>
|
<location filename="../ui/qml/Pages2/PageShare.qml" line="121"/>
|
||||||
|
<source>Share VPN Access</source>
|
||||||
|
<translation>共享 VPN 访问</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../ui/qml/Pages2/PageShare.qml" line="174"/>
|
||||||
|
<source>Share VPN access without the ability to manage the server</source>
|
||||||
|
<translation>共享 VPN 访问,无需管理服务器</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../ui/qml/Pages2/PageShare.qml" line="175"/>
|
||||||
|
<source>Share access to server management. The user with whom you share full access to the server will be able to add and remove any protocols and services to the server, as well as change settings.</source>
|
||||||
|
<translation>共享服务器管理访问权限。与您共享服务器全部访问权限的用户将可以添加和删除服务器上的任何协议和服务,以及更改设置。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
<source>VPN Access</source>
|
<source>VPN Access</source>
|
||||||
<translation>访问VPN</translation>
|
<translation type="vanished">访问VPN</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="146"/>
|
<location filename="../ui/qml/Pages2/PageShare.qml" line="146"/>
|
||||||
|
@ -2010,14 +2050,12 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<translation>完全访问</translation>
|
<translation>完全访问</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="174"/>
|
|
||||||
<source>VPN access without the ability to manage the server</source>
|
<source>VPN access without the ability to manage the server</source>
|
||||||
<translation>访问VPN,但没有权限管理服务。</translation>
|
<translation type="vanished">访问VPN,但没有权限管理服务。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../ui/qml/Pages2/PageShare.qml" line="175"/>
|
|
||||||
<source>Access to server management. The user with whom you share full access to the connection will be able to add and remove your protocols and services to the server, as well as change settings.</source>
|
<source>Access to server management. The user with whom you share full access to the connection will be able to add and remove your protocols and services to the server, as well as change settings.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="vanished">除访问VPN外,用户还能添加和删除协议、服务以及更改配置信息</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Access to server management. The user with whom you share full access to the connection will be able to add and remove your protocols and services to the servers, as well as change settings.</source>
|
<source>Access to server management. The user with whom you share full access to the connection will be able to add and remove your protocols and services to the servers, as well as change settings.</source>
|
||||||
|
@ -2325,7 +2363,7 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<context>
|
<context>
|
||||||
<name>QObject</name>
|
<name>QObject</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../protocols/protocols_defs.cpp" line="75"/>
|
<location filename="../protocols/protocols_defs.cpp" line="77"/>
|
||||||
<source>Sftp service</source>
|
<source>Sftp service</source>
|
||||||
<translation>Sftp 服务</translation>
|
<translation>Sftp 服务</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2578,7 +2616,7 @@ and will not be shared or disclosed to the Amnezia or any third parties</source>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="111"/>
|
<location filename="../containers/containers_defs.cpp" line="111"/>
|
||||||
<source>AmneziaWG - Special protocol from Amnezia, based on WireGuard. It's fast like WireGuard, but very resistant to blockages. Recommended for regions with high levels of censorship.</source>
|
<source>AmneziaWG - Special protocol from Amnezia, based on WireGuard. It's fast like WireGuard, but very resistant to blockages. Recommended for regions with high levels of censorship.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>AmneziaWG - Amnezia 的特殊协议,基于 WireGuard。它的速度像 WireGuard 一样快,但非常抗堵塞。推荐用于审查较严的地区。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="115"/>
|
<location filename="../containers/containers_defs.cpp" line="115"/>
|
||||||
|
@ -2610,7 +2648,14 @@ It employs its unique security protocol, leveraging the strength of SSL/TLS for
|
||||||
* Flexible customisation to suit user needs to work with different operating systems and devices
|
* Flexible customisation to suit user needs to work with different operating systems and devices
|
||||||
* Recognised by DPI analysis systems and therefore susceptible to blocking
|
* Recognised by DPI analysis systems and therefore susceptible to blocking
|
||||||
* Can operate over both TCP and UDP network protocols.</source>
|
* Can operate over both TCP and UDP network protocols.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>OpenVPN 是最流行且经过时间考验的 VPN 协议之一。
|
||||||
|
它采用其独特的安全协议,利用 SSL/TLS 的优势进行加密和密钥交换。此外,OpenVPN 支持多种身份验证方法,使其具有多功能性和适应性,可适应各种设备和操作系统。由于其开源性质,OpenVPN 受益于全球社区的广泛审查,这不断增强了其安全性。凭借性能、安全性和兼容性的强大平衡,OpenVPN 仍然是注重隐私的个人和企业的首选。
|
||||||
|
|
||||||
|
* 可在所有平台的 AmneziaVPN 中使用
|
||||||
|
* 移动设备的正常功耗
|
||||||
|
* 灵活定制,满足用户使用不同操作系统和设备的需求
|
||||||
|
* 被DPI分析系统识别,因此容易被阻塞
|
||||||
|
* 可以通过 TCP 和 UDP 网络协议运行</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="145"/>
|
<location filename="../containers/containers_defs.cpp" line="145"/>
|
||||||
|
@ -2622,7 +2667,14 @@ It employs its unique security protocol, leveraging the strength of SSL/TLS for
|
||||||
* Configurable encryption protocol
|
* Configurable encryption protocol
|
||||||
* Detectable by some DPI systems
|
* Detectable by some DPI systems
|
||||||
* Works over TCP network protocol.</source>
|
* Works over TCP network protocol.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Shadowsocks 受到 SOCKS5 协议的启发,使用 AEAD 密码保护连接。尽管 Shadowsocks 设计得谨慎且难以识别,但它与标准 HTTPS 连接并不相同。但是,某些流量分析系统可能仍会检测到 Shadowsocks 连接。由于Amnezia支持有限,建议使用AmneziaWG协议。
|
||||||
|
|
||||||
|
* 仅在桌面平台上的 AmneziaVPN 中可用
|
||||||
|
* 移动设备的正常功耗
|
||||||
|
|
||||||
|
* 可配置的加密协议
|
||||||
|
* 可以被某些 DPI 系统检测到
|
||||||
|
* 通过 TCP 网络协议工作。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="155"/>
|
<location filename="../containers/containers_defs.cpp" line="155"/>
|
||||||
|
@ -2644,7 +2696,23 @@ If there is a extreme level of Internet censorship in your region, we advise you
|
||||||
* Not recognised by DPI analysis systems
|
* Not recognised by DPI analysis systems
|
||||||
* Works over TCP network protocol, 443 port.
|
* Works over TCP network protocol, 443 port.
|
||||||
</source>
|
</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>这是 OpenVPN 协议和专门用于阻止保护的 Cloak 插件的组合。
|
||||||
|
|
||||||
|
OpenVPN 通过加密客户端和服务器之间的所有 Internet 流量来提供安全的 VPN 连接。
|
||||||
|
|
||||||
|
Cloak 可保护 OpenVPN 免遭检测和阻止。
|
||||||
|
|
||||||
|
Cloak 可以修改数据包元数据,以便将 VPN 流量完全屏蔽为正常 Web 流量,并且还可以保护 VPN 免受主动探测的检测。这使得它非常难以被发现
|
||||||
|
|
||||||
|
收到第一个数据包后,Cloak 立即对传入连接进行身份验证。如果身份验证失败,该插件会将服务器伪装成虚假网站,并且您的 VPN 对分析系统来说将变得不可见。
|
||||||
|
|
||||||
|
如果您所在地区的互联网审查非常严格,我们建议您在第一次连接时仅使用 OpenVPN over Cloak
|
||||||
|
|
||||||
|
* 可在所有平台的 AmneziaVPN 中使用
|
||||||
|
* 移动设备功耗高
|
||||||
|
* 配置灵活
|
||||||
|
* 不被 DPI 分析系统识别
|
||||||
|
* 通过 TCP 网络协议、443 端口工作。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="174"/>
|
<location filename="../containers/containers_defs.cpp" line="174"/>
|
||||||
|
@ -2657,7 +2725,15 @@ WireGuard is very susceptible to blocking due to its distinct packet signatures.
|
||||||
* Minimum number of settings
|
* Minimum number of settings
|
||||||
* Easily recognised by DPI analysis systems, susceptible to blocking
|
* Easily recognised by DPI analysis systems, susceptible to blocking
|
||||||
* Works over UDP network protocol.</source>
|
* Works over UDP network protocol.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>一种相对较新的流行 VPN 协议,具有简化的架构。
|
||||||
|
在所有设备上提供稳定的 VPN 连接和高性能。使用硬编码的加密设置。 WireGuard 与 OpenVPN 相比具有更低的延迟和更好的数据传输吞吐量。
|
||||||
|
由于其独特的数据包签名,WireGuard 非常容易受到阻塞。与其他一些采用混淆技术的 VPN 协议不同,WireGuard 数据包的一致签名模式可以更容易地被高级深度数据包检测 (DPI) 系统和其他网络监控工具识别并阻止。
|
||||||
|
|
||||||
|
* 可在所有平台的 AmneziaVPN 中使用
|
||||||
|
* 低功耗
|
||||||
|
* 配置简单
|
||||||
|
* 容易被DPI分析系统识别,容易被阻塞
|
||||||
|
* 通过 UDP 网络协议工作。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="187"/>
|
<location filename="../containers/containers_defs.cpp" line="187"/>
|
||||||
|
@ -2670,7 +2746,15 @@ This means that AmneziaWG keeps the fast performance of the original while addin
|
||||||
* Minimum number of settings
|
* Minimum number of settings
|
||||||
* Not recognised by DPI analysis systems, resistant to blocking
|
* Not recognised by DPI analysis systems, resistant to blocking
|
||||||
* Works over UDP network protocol.</source>
|
* Works over UDP network protocol.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>AmneziaWG 是流行 VPN 协议的现代迭代,它建立在 WireGuard 的基础上,保留了其简化的架构和跨设备的高性能功能。
|
||||||
|
虽然 WireGuard 以其高效而闻名,但由于其独特的数据包签名,它存在容易被检测到的问题。 AmneziaWG 通过使用更好的混淆方法解决了这个问题,使其流量与常规互联网流量融合在一起。
|
||||||
|
这意味着 AmneziaWG 保留了原始版本的快速性能,同时添加了额外的隐秘层,使其成为那些想要快速且谨慎的 VPN 连接的人的绝佳选择。
|
||||||
|
|
||||||
|
* 可在所有平台的 AmneziaVPN 中使用
|
||||||
|
* 低功耗
|
||||||
|
* 配置简单
|
||||||
|
* 不被DPI分析系统识别,抗阻塞
|
||||||
|
* 通过 UDP 网络协议工作。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="203"/>
|
<location filename="../containers/containers_defs.cpp" line="203"/>
|
||||||
|
@ -2683,7 +2767,15 @@ While it offers a blend of security, stability, and speed, it's essential t
|
||||||
* Minimal configuration
|
* Minimal configuration
|
||||||
* Recognised by DPI analysis systems
|
* Recognised by DPI analysis systems
|
||||||
* Works over UDP network protocol, ports 500 and 4500.</source>
|
* Works over UDP network protocol, ports 500 and 4500.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>IKEv2 与 IPSec 加密层配合使用,是一种现代且稳定的 VPN 协议。
|
||||||
|
其显着特征之一是能够在网络和设备之间快速切换,使其特别适应动态网络环境。
|
||||||
|
虽然 IKEv2 兼具安全性、稳定性和速度,但必须注意的是,IKEv2 很容易被检测到,并且容易受到阻止。
|
||||||
|
|
||||||
|
* 仅在 Windows 上的 AmneziaVPN 中可用
|
||||||
|
* 低功耗,在移动设备上
|
||||||
|
* 最低配置
|
||||||
|
* 获得DPI分析系统认可
|
||||||
|
* 通过 UDP 网络协议、端口 500 和 4500 工作。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>OpenVPN container</source>
|
<source>OpenVPN container</source>
|
||||||
|
@ -2775,16 +2867,6 @@ While it offers a blend of security, stability, and speed, it's essential t
|
||||||
<source>error 0x%1: %2</source>
|
<source>error 0x%1: %2</source>
|
||||||
<translation>错误 0x%1: %2</translation>
|
<translation>错误 0x%1: %2</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../3rd/wireguard-tools/contrib/highlighter/gui/highlight.cpp" line="39"/>
|
|
||||||
<source>WireGuard Configuration Highlighter</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../3rd/wireguard-tools/contrib/highlighter/gui/highlight.cpp" line="82"/>
|
|
||||||
<source>&Randomize colors</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>SelectLanguageDrawer</name>
|
<name>SelectLanguageDrawer</name>
|
||||||
|
@ -2956,7 +3038,7 @@ While it offers a blend of security, stability, and speed, it's essential t
|
||||||
<context>
|
<context>
|
||||||
<name>VpnConnection</name>
|
<name>VpnConnection</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../vpnconnection.cpp" line="422"/>
|
<location filename="../vpnconnection.cpp" line="406"/>
|
||||||
<source>Mbps</source>
|
<source>Mbps</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -3014,27 +3096,27 @@ While it offers a blend of security, stability, and speed, it's essential t
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="309"/>
|
<location filename="../containers/containers_defs.cpp" line="309"/>
|
||||||
<source>Medium or High</source>
|
<source>Medium or High</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>中或高</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="310"/>
|
<location filename="../containers/containers_defs.cpp" line="310"/>
|
||||||
<source>Extreme</source>
|
<source>Extreme</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>极度</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="318"/>
|
<location filename="../containers/containers_defs.cpp" line="318"/>
|
||||||
<source>I just want to increase the level of my privacy.</source>
|
<source>I just want to increase the level of my privacy.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>只是想提高隐私保护级别。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="319"/>
|
<location filename="../containers/containers_defs.cpp" line="319"/>
|
||||||
<source>I want to bypass censorship. This option recommended in most cases.</source>
|
<source>I want to bypass censorship. This option recommended in most cases.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>想要绕过审查制度。大多数情况下推荐使用此选项。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../containers/containers_defs.cpp" line="321"/>
|
<location filename="../containers/containers_defs.cpp" line="321"/>
|
||||||
<source>Most VPN protocols are blocked. Recommended if other options are not working.</source>
|
<source>Most VPN protocols are blocked. Recommended if other options are not working.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>大多数 VPN 协议都被阻止。如果其他选项不起作用,推荐此选项。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>High</source>
|
<source>High</source>
|
||||||
|
|
|
@ -144,8 +144,6 @@ void ImportController::importConfig()
|
||||||
if (credentials.isValid() || m_config.contains(config_key::containers)) {
|
if (credentials.isValid() || m_config.contains(config_key::containers)) {
|
||||||
m_serversModel->addServer(m_config);
|
m_serversModel->addServer(m_config);
|
||||||
|
|
||||||
m_serversModel->setDefaultServerIndex(m_serversModel->getServersCount() - 1);
|
|
||||||
|
|
||||||
emit importFinished();
|
emit importFinished();
|
||||||
} else {
|
} else {
|
||||||
qDebug() << "Failed to import profile";
|
qDebug() << "Failed to import profile";
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include <QEventLoop>
|
#include <QEventLoop>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
|
#include <QRandomGenerator>
|
||||||
|
|
||||||
#include "core/errorstrings.h"
|
#include "core/errorstrings.h"
|
||||||
#include "core/servercontroller.h"
|
#include "core/servercontroller.h"
|
||||||
|
@ -73,6 +74,38 @@ void InstallController::install(DockerContainer container, int port, TransportPr
|
||||||
containerConfig.insert(config_key::transport_proto,
|
containerConfig.insert(config_key::transport_proto,
|
||||||
ProtocolProps::transportProtoToString(transportProto, protocol));
|
ProtocolProps::transportProtoToString(transportProto, protocol));
|
||||||
|
|
||||||
|
if (container == DockerContainer::Awg) {
|
||||||
|
QString junkPacketCount = QString::number(QRandomGenerator::global()->bounded(3, 10));
|
||||||
|
QString junkPacketMinSize = QString::number(50);
|
||||||
|
QString junkPacketMaxSize = QString::number(1000);
|
||||||
|
QString initPacketJunkSize = QString::number(QRandomGenerator::global()->bounded(15, 150));
|
||||||
|
QString responsePacketJunkSize = QString::number(QRandomGenerator::global()->bounded(15, 150));
|
||||||
|
|
||||||
|
QSet<QString> headersValue;
|
||||||
|
while (headersValue.size() != 4) {
|
||||||
|
|
||||||
|
auto max = (std::numeric_limits<qint32>::max)();
|
||||||
|
headersValue.insert(QString::number(QRandomGenerator::global()->bounded(1, max)));
|
||||||
|
}
|
||||||
|
|
||||||
|
auto headersValueList = headersValue.values();
|
||||||
|
|
||||||
|
QString initPacketMagicHeader = headersValueList.at(0);
|
||||||
|
QString responsePacketMagicHeader = headersValueList.at(1);
|
||||||
|
QString underloadPacketMagicHeader = headersValueList.at(2);
|
||||||
|
QString transportPacketMagicHeader = headersValueList.at(3);
|
||||||
|
|
||||||
|
containerConfig[config_key::junkPacketCount] = junkPacketCount;
|
||||||
|
containerConfig[config_key::junkPacketMinSize] = junkPacketMinSize;
|
||||||
|
containerConfig[config_key::junkPacketMaxSize] = junkPacketMaxSize;
|
||||||
|
containerConfig[config_key::initPacketJunkSize] = initPacketJunkSize;
|
||||||
|
containerConfig[config_key::responsePacketJunkSize] = responsePacketJunkSize;
|
||||||
|
containerConfig[config_key::initPacketMagicHeader] = initPacketMagicHeader;
|
||||||
|
containerConfig[config_key::responsePacketMagicHeader] = responsePacketMagicHeader;
|
||||||
|
containerConfig[config_key::underloadPacketMagicHeader] = underloadPacketMagicHeader;
|
||||||
|
containerConfig[config_key::transportPacketMagicHeader] = transportPacketMagicHeader;
|
||||||
|
}
|
||||||
|
|
||||||
if (container == DockerContainer::Sftp) {
|
if (container == DockerContainer::Sftp) {
|
||||||
containerConfig.insert(config_key::userName, protocols::sftp::defaultUserName);
|
containerConfig.insert(config_key::userName, protocols::sftp::defaultUserName);
|
||||||
containerConfig.insert(config_key::password, Utils::getRandomString(10));
|
containerConfig.insert(config_key::password, Utils::getRandomString(10));
|
||||||
|
@ -132,7 +165,6 @@ void InstallController::installServer(DockerContainer container, QJsonObject &co
|
||||||
server.insert(config_key::defaultContainer, ContainerProps::containerToString(container));
|
server.insert(config_key::defaultContainer, ContainerProps::containerToString(container));
|
||||||
|
|
||||||
m_serversModel->addServer(server);
|
m_serversModel->addServer(server);
|
||||||
m_serversModel->setDefaultServerIndex(m_serversModel->getServersCount() - 1);
|
|
||||||
|
|
||||||
emit installServerFinished(finishMessage);
|
emit installServerFinished(finishMessage);
|
||||||
return;
|
return;
|
||||||
|
@ -183,9 +215,6 @@ void InstallController::installContainer(DockerContainer container, QJsonObject
|
||||||
"All installed containers have been added to the application");
|
"All installed containers have been added to the application");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ContainerProps::containerService(container) == ServiceType::Vpn) {
|
|
||||||
m_containersModel->setData(m_containersModel->index(0, 0), container, ContainersModel::Roles::IsDefaultRole);
|
|
||||||
}
|
|
||||||
emit installContainerFinished(finishMessage, ContainerProps::containerService(container) == ServiceType::Other);
|
emit installContainerFinished(finishMessage, ContainerProps::containerService(container) == ServiceType::Other);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -475,8 +504,9 @@ void InstallController::addEmptyServer()
|
||||||
server.insert(config_key::port, m_currentlyInstalledServerCredentials.port);
|
server.insert(config_key::port, m_currentlyInstalledServerCredentials.port);
|
||||||
server.insert(config_key::description, m_settings->nextAvailableServerName());
|
server.insert(config_key::description, m_settings->nextAvailableServerName());
|
||||||
|
|
||||||
|
server.insert(config_key::defaultContainer, ContainerProps::containerToString(DockerContainer::None));
|
||||||
|
|
||||||
m_serversModel->addServer(server);
|
m_serversModel->addServer(server);
|
||||||
m_serversModel->setDefaultServerIndex(m_serversModel->getServersCount() - 1);
|
|
||||||
|
|
||||||
emit installServerFinished(tr("Server added successfully"));
|
emit installServerFinished(tr("Server added successfully"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ bool ContainersModel::setData(const QModelIndex &index, const QVariant &value, i
|
||||||
// return container;
|
// return container;
|
||||||
case IsInstalledRole:
|
case IsInstalledRole:
|
||||||
// return m_settings->containers(m_currentlyProcessedServerIndex).contains(container);
|
// return m_settings->containers(m_currentlyProcessedServerIndex).contains(container);
|
||||||
case IsDefaultRole: {
|
case IsDefaultRole: { //todo remove
|
||||||
m_settings->setDefaultContainer(m_currentlyProcessedServerIndex, container);
|
m_settings->setDefaultContainer(m_currentlyProcessedServerIndex, container);
|
||||||
m_defaultContainerIndex = container;
|
m_defaultContainerIndex = container;
|
||||||
emit defaultContainerChanged();
|
emit defaultContainerChanged();
|
||||||
|
@ -117,6 +117,13 @@ QString ContainersModel::getDefaultContainerName()
|
||||||
return ContainerProps::containerHumanNames().value(m_defaultContainerIndex);
|
return ContainerProps::containerHumanNames().value(m_defaultContainerIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ContainersModel::setDefaultContainer(DockerContainer container)
|
||||||
|
{
|
||||||
|
m_settings->setDefaultContainer(m_currentlyProcessedServerIndex, container);
|
||||||
|
m_defaultContainerIndex = container;
|
||||||
|
emit defaultContainerChanged();
|
||||||
|
}
|
||||||
|
|
||||||
int ContainersModel::getCurrentlyProcessedContainerIndex()
|
int ContainersModel::getCurrentlyProcessedContainerIndex()
|
||||||
{
|
{
|
||||||
return m_currentlyProcessedContainerIndex;
|
return m_currentlyProcessedContainerIndex;
|
||||||
|
|
|
@ -46,6 +46,7 @@ public:
|
||||||
public slots:
|
public slots:
|
||||||
DockerContainer getDefaultContainer();
|
DockerContainer getDefaultContainer();
|
||||||
QString getDefaultContainerName();
|
QString getDefaultContainerName();
|
||||||
|
void setDefaultContainer(DockerContainer container);
|
||||||
|
|
||||||
void setCurrentlyProcessedServerIndex(const int index);
|
void setCurrentlyProcessedServerIndex(const int index);
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,7 @@ void ServersModel::setDefaultServerIndex(const int index)
|
||||||
{
|
{
|
||||||
m_settings->setDefaultServer(index);
|
m_settings->setDefaultServer(index);
|
||||||
m_defaultServerIndex = m_settings->defaultServerIndex();
|
m_defaultServerIndex = m_settings->defaultServerIndex();
|
||||||
emit defaultServerIndexChanged();
|
emit defaultServerIndexChanged(m_defaultServerIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
const int ServersModel::getDefaultServerIndex()
|
const int ServersModel::getDefaultServerIndex()
|
||||||
|
|
|
@ -64,7 +64,7 @@ protected:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void currentlyProcessedServerIndexChanged(const int index);
|
void currentlyProcessedServerIndexChanged(const int index);
|
||||||
void defaultServerIndexChanged();
|
void defaultServerIndexChanged(const int index);
|
||||||
void defaultServerNameChanged();
|
void defaultServerNameChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -142,6 +142,7 @@ Button {
|
||||||
PageController.setTriggeredBtConnectButton(true)
|
PageController.setTriggeredBtConnectButton(true)
|
||||||
|
|
||||||
ServersModel.currentlyProcessedIndex = ServersModel.getDefaultServerIndex()
|
ServersModel.currentlyProcessedIndex = ServersModel.getDefaultServerIndex()
|
||||||
|
InstallController.setShouldCreateServer(false)
|
||||||
PageController.goToPage(PageEnum.PageSetupWizardEasy)
|
PageController.goToPage(PageEnum.PageSetupWizardEasy)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
|
@ -50,34 +50,26 @@ ListView {
|
||||||
imageSource: "qrc:/images/controls/download.svg"
|
imageSource: "qrc:/images/controls/download.svg"
|
||||||
showImage: !isInstalled
|
showImage: !isInstalled
|
||||||
|
|
||||||
checkable: isInstalled
|
checkable: isInstalled && !ConnectionController.isConnected && isSupported
|
||||||
checked: isDefault
|
checked: isDefault
|
||||||
|
|
||||||
onPressed: function(mouse) {
|
|
||||||
if (!isSupported) {
|
|
||||||
PageController.showErrorMessage(qsTr("The selected protocol is not supported on the current platform"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (checked) {
|
if (ConnectionController.isConnected && isInstalled) {
|
||||||
var needReconnected = false
|
PageController.showNotificationMessage(qsTr("Unable change protocol while there is an active connection"))
|
||||||
if (!isDefault) {
|
return
|
||||||
needReconnected = true
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
if (checked) {
|
||||||
isDefault = true
|
isDefault = true
|
||||||
|
|
||||||
menuContent.currentIndex = index
|
menuContent.currentIndex = index
|
||||||
containersDropDown.menuVisible = false
|
containersDropDown.menuVisible = false
|
||||||
|
|
||||||
|
|
||||||
if (needReconnected && (ConnectionController.isConnected || ConnectionController.isConnectionInProgress)) {
|
|
||||||
PageController.showNotificationMessage(qsTr("Reconnect via VPN Procotol: ") + name)
|
|
||||||
PageController.goToPageHome()
|
|
||||||
ConnectionController.openConnection()
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
|
if (!isSupported && isInstalled) {
|
||||||
|
PageController.showErrorMessage(qsTr("The selected protocol is not supported on the current platform"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
ContainersModel.setCurrentlyProcessedContainerIndex(proxyContainersModel.mapToSource(index))
|
ContainersModel.setCurrentlyProcessedContainerIndex(proxyContainersModel.mapToSource(index))
|
||||||
InstallController.setShouldCreateServer(false)
|
InstallController.setShouldCreateServer(false)
|
||||||
PageController.goToPage(PageEnum.PageSetupWizardProtocolSettings)
|
PageController.goToPage(PageEnum.PageSetupWizardProtocolSettings)
|
||||||
|
|
|
@ -17,9 +17,11 @@ DrawerType {
|
||||||
property var noButtonFunction
|
property var noButtonFunction
|
||||||
|
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: parent.height * 0.5
|
height: content.implicitHeight + 32
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
|
id: content
|
||||||
|
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
|
|
|
@ -81,6 +81,7 @@ RadioButton {
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: root.headerText
|
text: root.headerText
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
color: "#D7D8DB"
|
color: "#D7D8DB"
|
||||||
font.pixelSize: 25
|
font.pixelSize: 25
|
||||||
font.weight: 700
|
font.weight: 700
|
||||||
|
@ -110,6 +111,7 @@ RadioButton {
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: root.footerText
|
text: root.footerText
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
visible: root.footerText !== ""
|
visible: root.footerText !== ""
|
||||||
color: "#878B91"
|
color: "#878B91"
|
||||||
font.pixelSize: 13
|
font.pixelSize: 13
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
|
|
||||||
|
import "../Config"
|
||||||
|
|
||||||
Drawer {
|
Drawer {
|
||||||
id: drawer
|
id: drawer
|
||||||
property bool needCloseButton: true
|
property bool needCloseButton: true
|
||||||
|
@ -39,6 +41,18 @@ Drawer {
|
||||||
|
|
||||||
border.color: "#2C2D30"
|
border.color: "#2C2D30"
|
||||||
border.width: 1
|
border.width: 1
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
visible: GC.isMobile()
|
||||||
|
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.topMargin: 10
|
||||||
|
|
||||||
|
width: 20
|
||||||
|
height: 2
|
||||||
|
color: "#2C2D30"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Overlay.modal: Rectangle {
|
Overlay.modal: Rectangle {
|
||||||
|
|
|
@ -30,17 +30,13 @@ Switch {
|
||||||
property string hoveredIndicatorBackgroundColor: Qt.rgba(1, 1, 1, 0.08)
|
property string hoveredIndicatorBackgroundColor: Qt.rgba(1, 1, 1, 0.08)
|
||||||
property string defaultIndicatorBackgroundColor: "transparent"
|
property string defaultIndicatorBackgroundColor: "transparent"
|
||||||
|
|
||||||
implicitWidth: content.implicitWidth + switcher.implicitWidth
|
|
||||||
implicitHeight: content.implicitHeight
|
|
||||||
|
|
||||||
hoverEnabled: enabled ? true : false
|
hoverEnabled: enabled ? true : false
|
||||||
|
|
||||||
indicator: Rectangle {
|
indicator: Rectangle {
|
||||||
id: switcher
|
id: switcher
|
||||||
|
|
||||||
anchors.left: content.right
|
anchors.right: parent.right
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.leftMargin: 4
|
|
||||||
|
|
||||||
implicitWidth: 52
|
implicitWidth: 52
|
||||||
implicitHeight: 32
|
implicitHeight: 32
|
||||||
|
@ -90,11 +86,11 @@ Switch {
|
||||||
contentItem: ColumnLayout {
|
contentItem: ColumnLayout {
|
||||||
id: content
|
id: content
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.rightMargin: switcher.implicitWidth
|
|
||||||
|
|
||||||
ListItemTitleType {
|
ListItemTitleType {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
rightPadding: indicator.width
|
||||||
|
|
||||||
text: root.text
|
text: root.text
|
||||||
color: root.enabled ? root.textColor : root.textDisabledColor
|
color: root.enabled ? root.textColor : root.textDisabledColor
|
||||||
|
@ -104,6 +100,7 @@ Switch {
|
||||||
id: description
|
id: description
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
rightPadding: indicator.width
|
||||||
|
|
||||||
color: root.enabled ? root.descriptionTextColor : root.descriptionTextDisabledColor
|
color: root.enabled ? root.descriptionTextColor : root.descriptionTextDisabledColor
|
||||||
|
|
||||||
|
|
|
@ -241,8 +241,18 @@ PageType {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
DividerType {
|
||||||
|
Layout.topMargin: 10
|
||||||
|
Layout.fillWidth: false
|
||||||
|
Layout.preferredWidth: 20
|
||||||
|
Layout.preferredHeight: 2
|
||||||
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
|
||||||
|
|
||||||
|
visible: (buttonContent.collapsedVisibility || buttonContent.expandedVisibility)
|
||||||
|
}
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
Layout.topMargin: 24
|
Layout.topMargin: 14
|
||||||
Layout.leftMargin: 24
|
Layout.leftMargin: 24
|
||||||
Layout.rightMargin: 24
|
Layout.rightMargin: 24
|
||||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
|
||||||
|
@ -305,7 +315,7 @@ PageType {
|
||||||
|
|
||||||
Header1TextType {
|
Header1TextType {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.topMargin: 24
|
Layout.topMargin: 14
|
||||||
Layout.leftMargin: 16
|
Layout.leftMargin: 16
|
||||||
Layout.rightMargin: 16
|
Layout.rightMargin: 16
|
||||||
|
|
||||||
|
@ -471,10 +481,16 @@ PageType {
|
||||||
}
|
}
|
||||||
|
|
||||||
checked: index === serversMenuContent.currentIndex
|
checked: index === serversMenuContent.currentIndex
|
||||||
|
checkable: !ConnectionController.isConnected
|
||||||
|
|
||||||
ButtonGroup.group: serversRadioButtonGroup
|
ButtonGroup.group: serversRadioButtonGroup
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
if (ConnectionController.isConnected) {
|
||||||
|
PageController.showNotificationMessage(qsTr("Unable change server while there is an active connection"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
serversMenuContent.currentIndex = index
|
serversMenuContent.currentIndex = index
|
||||||
|
|
||||||
ServersModel.currentlyProcessedIndex = index
|
ServersModel.currentlyProcessedIndex = index
|
||||||
|
|
|
@ -276,7 +276,7 @@ PageType {
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
questionDrawer.headerText = qsTr("Remove AmneziaWG from server?")
|
questionDrawer.headerText = qsTr("Remove AmneziaWG from server?")
|
||||||
questionDrawer.descriptionText = qsTr("All users who you shared a connection with will no longer be able to connect to it.")
|
questionDrawer.descriptionText = qsTr("All users with whom you shared a connection will no longer be able to connect to it.")
|
||||||
questionDrawer.yesButtonText = qsTr("Continue")
|
questionDrawer.yesButtonText = qsTr("Continue")
|
||||||
questionDrawer.noButtonText = qsTr("Cancel")
|
questionDrawer.noButtonText = qsTr("Cancel")
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import QtQuick.Layouts
|
||||||
import SortFilterProxyModel 0.2
|
import SortFilterProxyModel 0.2
|
||||||
|
|
||||||
import PageEnum 1.0
|
import PageEnum 1.0
|
||||||
|
import ContainerEnum 1.0
|
||||||
|
|
||||||
import "./"
|
import "./"
|
||||||
import "../Controls2"
|
import "../Controls2"
|
||||||
|
@ -252,6 +253,8 @@ PageType {
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: checkboxLayout
|
id: checkboxLayout
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
CheckBoxType {
|
CheckBoxType {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
@ -351,6 +354,8 @@ PageType {
|
||||||
Layout.leftMargin: -8
|
Layout.leftMargin: -8
|
||||||
implicitHeight: 32
|
implicitHeight: 32
|
||||||
|
|
||||||
|
visible: ContainersModel.getCurrentlyProcessedContainerIndex() === ContainerEnum.OpenVpn
|
||||||
|
|
||||||
defaultColor: "transparent"
|
defaultColor: "transparent"
|
||||||
hoveredColor: Qt.rgba(1, 1, 1, 0.08)
|
hoveredColor: Qt.rgba(1, 1, 1, 0.08)
|
||||||
pressedColor: Qt.rgba(1, 1, 1, 0.12)
|
pressedColor: Qt.rgba(1, 1, 1, 0.12)
|
||||||
|
@ -360,7 +365,7 @@ PageType {
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
questionDrawer.headerText = qsTr("Remove OpenVpn from server?")
|
questionDrawer.headerText = qsTr("Remove OpenVpn from server?")
|
||||||
questionDrawer.descriptionText = qsTr("All users who you shared a connection with will no longer be able to connect to it.")
|
questionDrawer.descriptionText = qsTr("All users with whom you shared a connection will no longer be able to connect to it.")
|
||||||
questionDrawer.yesButtonText = qsTr("Continue")
|
questionDrawer.yesButtonText = qsTr("Continue")
|
||||||
questionDrawer.noButtonText = qsTr("Cancel")
|
questionDrawer.noButtonText = qsTr("Cancel")
|
||||||
|
|
||||||
|
|
|
@ -169,12 +169,14 @@ PageType {
|
||||||
|
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
||||||
|
visible: ServersModel.isCurrentlyProcessedServerHasWriteAccess()
|
||||||
|
|
||||||
text: qsTr("Remove ") + ContainersModel.getCurrentlyProcessedContainerName()
|
text: qsTr("Remove ") + ContainersModel.getCurrentlyProcessedContainerName()
|
||||||
textColor: "#EB5757"
|
textColor: "#EB5757"
|
||||||
|
|
||||||
clickedFunction: function() {
|
clickedFunction: function() {
|
||||||
questionDrawer.headerText = qsTr("Remove %1 from server?").arg(ContainersModel.getCurrentlyProcessedContainerName())
|
questionDrawer.headerText = qsTr("Remove %1 from server?").arg(ContainersModel.getCurrentlyProcessedContainerName())
|
||||||
questionDrawer.descriptionText = qsTr("All users who you shared a connection with will no longer be able to connect to it.")
|
questionDrawer.descriptionText = qsTr("All users with whom you shared a connection will no longer be able to connect to it.")
|
||||||
questionDrawer.yesButtonText = qsTr("Continue")
|
questionDrawer.yesButtonText = qsTr("Continue")
|
||||||
questionDrawer.noButtonText = qsTr("Cancel")
|
questionDrawer.noButtonText = qsTr("Cancel")
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ PageType {
|
||||||
Layout.margins: 16
|
Layout.margins: 16
|
||||||
|
|
||||||
text: qsTr("Auto start")
|
text: qsTr("Auto start")
|
||||||
descriptionText: qsTr("Launch the application every time %1 starts").arg(Qt.platform.os)
|
descriptionText: qsTr("Launch the application every time the device is starts")
|
||||||
|
|
||||||
checked: SettingsController.isAutoStartEnabled()
|
checked: SettingsController.isAutoStartEnabled()
|
||||||
onCheckedChanged: {
|
onCheckedChanged: {
|
||||||
|
|
|
@ -46,6 +46,7 @@ PageType {
|
||||||
}
|
}
|
||||||
|
|
||||||
ParagraphTextType {
|
ParagraphTextType {
|
||||||
|
Layout.fillWidth: true
|
||||||
text: qsTr("If AmneziaDNS is not used or installed")
|
text: qsTr("If AmneziaDNS is not used or installed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -114,7 +114,7 @@ PageType {
|
||||||
|
|
||||||
clickedFunction: function() {
|
clickedFunction: function() {
|
||||||
questionDrawer.headerText = qsTr("Remove %1 from server?").arg(ContainersModel.getCurrentlyProcessedContainerName())
|
questionDrawer.headerText = qsTr("Remove %1 from server?").arg(ContainersModel.getCurrentlyProcessedContainerName())
|
||||||
questionDrawer.descriptionText = qsTr("All users who you shared a connection with will no longer be able to connect to it.")
|
questionDrawer.descriptionText = qsTr("All users with whom you shared a connection will no longer be able to connect to it.")
|
||||||
questionDrawer.yesButtonText = qsTr("Continue")
|
questionDrawer.yesButtonText = qsTr("Continue")
|
||||||
questionDrawer.noButtonText = qsTr("Cancel")
|
questionDrawer.noButtonText = qsTr("Cancel")
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,10 @@ PageType {
|
||||||
target: InstallController
|
target: InstallController
|
||||||
|
|
||||||
function onInstallContainerFinished(finishedMessage, isServiceInstall) {
|
function onInstallContainerFinished(finishedMessage, isServiceInstall) {
|
||||||
|
if (!ConnectionController.isConnected && !isServiceInstall) {
|
||||||
|
ContainersModel.setDefaultContainer(ContainersModel.getCurrentlyProcessedContainerIndex)
|
||||||
|
}
|
||||||
|
|
||||||
PageController.goToStartPage()
|
PageController.goToStartPage()
|
||||||
if (stackView.currentItem.objectName === PageController.getPagePath(PageEnum.PageHome)) {
|
if (stackView.currentItem.objectName === PageController.getPagePath(PageEnum.PageHome)) {
|
||||||
PageController.restorePageHomeState(true)
|
PageController.restorePageHomeState(true)
|
||||||
|
@ -41,6 +45,10 @@ PageType {
|
||||||
}
|
}
|
||||||
|
|
||||||
function onInstallServerFinished(finishedMessage) {
|
function onInstallServerFinished(finishedMessage) {
|
||||||
|
if (!ConnectionController.isConnected) {
|
||||||
|
ServersModel.setDefaultServerIndex(ServersModel.getServersCount() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
PageController.goToStartPage()
|
PageController.goToStartPage()
|
||||||
if (stackView.currentItem.objectName === PageController.getPagePath(PageEnum.PageSetupWizardStart)) {
|
if (stackView.currentItem.objectName === PageController.getPagePath(PageEnum.PageSetupWizardStart)) {
|
||||||
PageController.replaceStartPage()
|
PageController.replaceStartPage()
|
||||||
|
|
|
@ -224,7 +224,7 @@ PageType {
|
||||||
if (ProtocolProps.defaultPort(defaultContainerProto) < 0) {
|
if (ProtocolProps.defaultPort(defaultContainerProto) < 0) {
|
||||||
port.visible = false
|
port.visible = false
|
||||||
} else {
|
} else {
|
||||||
port.textFieldText = ProtocolProps.defaultPort(defaultContainerProto)
|
port.textFieldText = ProtocolProps.getPortForInstall(defaultContainerProto)
|
||||||
}
|
}
|
||||||
transportProtoSelector.currentIndex = ProtocolProps.defaultTransportProto(defaultContainerProto)
|
transportProtoSelector.currentIndex = ProtocolProps.defaultTransportProto(defaultContainerProto)
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ PageType {
|
||||||
|
|
||||||
text: qsTr("I have nothing")
|
text: qsTr("I have nothing")
|
||||||
|
|
||||||
onClicked: Qt.openUrlExternally("https://ru-docs.amnezia.org/guides/hosting-instructions")
|
onClicked: Qt.openUrlExternally("https://amnezia.org/instructions/0_starter-guide")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,10 @@ PageType {
|
||||||
}
|
}
|
||||||
|
|
||||||
function onImportFinished() {
|
function onImportFinished() {
|
||||||
|
if (ConnectionController.isConnected) {
|
||||||
|
ServersModel.setDefaultServerIndex(ServersModel.getServersCount() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
PageController.goToStartPage()
|
PageController.goToStartPage()
|
||||||
if (stackView.currentItem.objectName === PageController.getPagePath(PageEnum.PageSetupWizardStart)) {
|
if (stackView.currentItem.objectName === PageController.getPagePath(PageEnum.PageSetupWizardStart)) {
|
||||||
PageController.replaceStartPage()
|
PageController.replaceStartPage()
|
||||||
|
|
|
@ -118,7 +118,7 @@ PageType {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.topMargin: 24
|
Layout.topMargin: 24
|
||||||
|
|
||||||
headerText: qsTr("VPN Access")
|
headerText: qsTr("Share VPN Access")
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
@ -171,8 +171,8 @@ PageType {
|
||||||
Layout.topMargin: 24
|
Layout.topMargin: 24
|
||||||
Layout.bottomMargin: 24
|
Layout.bottomMargin: 24
|
||||||
|
|
||||||
text: accessTypeSelector.currentIndex === 0 ? qsTr("VPN access without the ability to manage the server") :
|
text: accessTypeSelector.currentIndex === 0 ? qsTr("Share VPN access without the ability to manage the server") :
|
||||||
qsTr("Access to server management. The user with whom you share full access to the connection will be able to add and remove your protocols and services to the server, as well as change settings.")
|
qsTr("Share access to server management. The user with whom you share full access to the server will be able to add and remove any protocols and services to the server, as well as change settings.")
|
||||||
color: "#878B91"
|
color: "#878B91"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@ PageType {
|
||||||
|
|
||||||
if (index === ContainerProps.containerFromString("amnezia-openvpn")) {
|
if (index === ContainerProps.containerFromString("amnezia-openvpn")) {
|
||||||
root.connectionTypesModel.push(openVpnConnectionFormat)
|
root.connectionTypesModel.push(openVpnConnectionFormat)
|
||||||
} else if (index === ContainerProps.containerFromString("amnezia-awg")) {
|
} else if (index === ContainerProps.containerFromString("amnezia-wireguard")) {
|
||||||
root.connectionTypesModel.push(wireGuardConnectionFormat)
|
root.connectionTypesModel.push(wireGuardConnectionFormat)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,16 +96,16 @@ if [ "${MAC_CERT_PW+x}" ]; then
|
||||||
security find-identity -p codesigning
|
security find-identity -p codesigning
|
||||||
|
|
||||||
echo "Signing App bundle..."
|
echo "Signing App bundle..."
|
||||||
/usr/bin/codesign --deep --force --verbose --timestamp -o runtime --sign "Developer ID Application: Privacy Technologies OU (X7UJ388FXK)" $BUNDLE_DIR
|
/usr/bin/codesign --deep --force --verbose --timestamp -o runtime --sign "$MAC_SIGNER_ID" $BUNDLE_DIR
|
||||||
/usr/bin/codesign --verify -vvvv $BUNDLE_DIR || true
|
/usr/bin/codesign --verify -vvvv $BUNDLE_DIR || true
|
||||||
spctl -a -vvvv $BUNDLE_DIR || true
|
spctl -a -vvvv $BUNDLE_DIR || true
|
||||||
|
|
||||||
if [ "${NOTARIZE_APP+x}" ]; then
|
if [ "${NOTARIZE_APP+x}" ]; then
|
||||||
echo "Notarizing App bundle..."
|
echo "Notarizing App bundle..."
|
||||||
/usr/bin/ditto -c -k --keepParent $BUNDLE_DIR $PROJECT_DIR/Bundle_to_notarize.zip
|
/usr/bin/ditto -c -k --keepParent $BUNDLE_DIR $PROJECT_DIR/Bundle_to_notarize.zip
|
||||||
xcrun altool --notarize-app -f $PROJECT_DIR/Bundle_to_notarize.zip -t osx --primary-bundle-id "$APP_DOMAIN" -u "$APPLE_DEV_EMAIL" -p $APPLE_DEV_PASSWORD
|
xcrun notarytool submit $PROJECT_DIR/Bundle_to_notarize.zip --apple-id $APPLE_DEV_EMAIL --team-id $MAC_TEAM_ID --password $APPLE_DEV_PASSWORD
|
||||||
rm $PROJECT_DIR/Bundle_to_notarize.zip
|
rm $PROJECT_DIR/Bundle_to_notarize.zip
|
||||||
sleep 600
|
sleep 300
|
||||||
xcrun stapler staple $BUNDLE_DIR
|
xcrun stapler staple $BUNDLE_DIR
|
||||||
xcrun stapler validate $BUNDLE_DIR
|
xcrun stapler validate $BUNDLE_DIR
|
||||||
spctl -a -vvvv $BUNDLE_DIR || true
|
spctl -a -vvvv $BUNDLE_DIR || true
|
||||||
|
@ -130,15 +130,15 @@ $QIF_BIN_DIR/binarycreator --offline-only -v -c $BUILD_DIR/installer/config/maco
|
||||||
if [ "${MAC_CERT_PW+x}" ]; then
|
if [ "${MAC_CERT_PW+x}" ]; then
|
||||||
echo "Signing installer bundle..."
|
echo "Signing installer bundle..."
|
||||||
security unlock-keychain -p $TEMP_PASS $KEYCHAIN
|
security unlock-keychain -p $TEMP_PASS $KEYCHAIN
|
||||||
/usr/bin/codesign --deep --force --verbose --timestamp -o runtime --sign "Developer ID Application: Privacy Technologies OU (X7UJ388FXK)" $INSTALLER_BUNDLE_DIR
|
/usr/bin/codesign --deep --force --verbose --timestamp -o runtime --sign "$MAC_SIGNER_ID" $INSTALLER_BUNDLE_DIR
|
||||||
/usr/bin/codesign --verify -vvvv $INSTALLER_BUNDLE_DIR || true
|
/usr/bin/codesign --verify -vvvv $INSTALLER_BUNDLE_DIR || true
|
||||||
|
|
||||||
if [ "${NOTARIZE_APP+x}" ]; then
|
if [ "${NOTARIZE_APP+x}" ]; then
|
||||||
echo "Notarizing installer bundle..."
|
echo "Notarizing installer bundle..."
|
||||||
/usr/bin/ditto -c -k --keepParent $INSTALLER_BUNDLE_DIR $PROJECT_DIR/Installer_bundle_to_notarize.zip
|
/usr/bin/ditto -c -k --keepParent $INSTALLER_BUNDLE_DIR $PROJECT_DIR/Installer_bundle_to_notarize.zip
|
||||||
xcrun altool --notarize-app -f $PROJECT_DIR/Installer_bundle_to_notarize.zip -t osx --primary-bundle-id "$APP_DOMAIN" -u "$APPLE_DEV_EMAIL" -p $APPLE_DEV_PASSWORD
|
xcrun notarytool submit $PROJECT_DIR/Installer_bundle_to_notarize.zip --apple-id $APPLE_DEV_EMAIL --team-id $MAC_TEAM_ID --password $APPLE_DEV_PASSWORD
|
||||||
rm $PROJECT_DIR/Installer_bundle_to_notarize.zip
|
rm $PROJECT_DIR/Installer_bundle_to_notarize.zip
|
||||||
sleep 600
|
sleep 300
|
||||||
xcrun stapler staple $INSTALLER_BUNDLE_DIR
|
xcrun stapler staple $INSTALLER_BUNDLE_DIR
|
||||||
xcrun stapler validate $INSTALLER_BUNDLE_DIR
|
xcrun stapler validate $INSTALLER_BUNDLE_DIR
|
||||||
spctl -a -vvvv $INSTALLER_BUNDLE_DIR || true
|
spctl -a -vvvv $INSTALLER_BUNDLE_DIR || true
|
||||||
|
@ -151,13 +151,13 @@ hdiutil create -volname AmneziaVPN -srcfolder $BUILD_DIR/installer/$APP_NAME.app
|
||||||
if [ "${MAC_CERT_PW+x}" ]; then
|
if [ "${MAC_CERT_PW+x}" ]; then
|
||||||
echo "Signing DMG installer..."
|
echo "Signing DMG installer..."
|
||||||
security unlock-keychain -p $TEMP_PASS $KEYCHAIN
|
security unlock-keychain -p $TEMP_PASS $KEYCHAIN
|
||||||
/usr/bin/codesign --deep --force --verbose --timestamp -o runtime --sign "Developer ID Application: Privacy Technologies OU (X7UJ388FXK)" $DMG_FILENAME
|
/usr/bin/codesign --deep --force --verbose --timestamp -o runtime --sign "$MAC_SIGNER_ID" $DMG_FILENAME
|
||||||
/usr/bin/codesign --verify -vvvv $DMG_FILENAME || true
|
/usr/bin/codesign --verify -vvvv $DMG_FILENAME || true
|
||||||
|
|
||||||
if [ "${NOTARIZE_APP+x}" ]; then
|
if [ "${NOTARIZE_APP+x}" ]; then
|
||||||
echo "Notarizing DMG installer..."
|
echo "Notarizing DMG installer..."
|
||||||
xcrun altool --notarize-app -f $DMG_FILENAME -t osx --primary-bundle-id $APP_DOMAIN -u $APPLE_DEV_EMAIL -p $APPLE_DEV_PASSWORD
|
xcrun notarytool submit $DMG_FILENAME --apple-id $APPLE_DEV_EMAIL --team-id $MAC_TEAM_ID --password $APPLE_DEV_PASSWORD
|
||||||
sleep 600
|
sleep 300
|
||||||
xcrun stapler staple $DMG_FILENAME
|
xcrun stapler staple $DMG_FILENAME
|
||||||
xcrun stapler validate $DMG_FILENAME
|
xcrun stapler validate $DMG_FILENAME
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue