diff --git a/client/translations/amneziavpn_ru.ts b/client/translations/amneziavpn_ru.ts index 4f397034..000e0907 100644 --- a/client/translations/amneziavpn_ru.ts +++ b/client/translations/amneziavpn_ru.ts @@ -139,65 +139,50 @@ InstallController - - installed successfully. + + %1 installed successfully. - - - is already installed on the server. + + + %1 is already installed on the server. - - + + Already installed containers were found on the server. All installed containers have been added to the application - + Settings updated successfully - - Server ' + + Server '%1' was removed - - ' was removed + + All containers from server '%1' have been removed - - All containers from server ' + + 1% has been removed from the server '%2' - - ' have been removed - - - - - has been removed from the server ' - - - - - ' - - - - + Please login as the user - + Server added successfully @@ -253,7 +238,7 @@ Already installed containers were found on the server. All installed containers PageDeinstalling - Removing services from + Removing services from %1 @@ -519,13 +504,12 @@ Already installed containers were found on the server. All installed containers - Remove - from server? + Remove %1 from server? @@ -590,13 +574,12 @@ Already installed containers were found on the server. All installed containers - Remove - from server? + Remove %1 from server? @@ -1318,13 +1301,12 @@ And if you don't like the app, all the more support it - the donation will - Remove - from server? + Remove %1 from server? @@ -2540,22 +2522,22 @@ It's okay as long as it's from someone you trust. - New site added: + New site added: %1 - Site removed: + Site removed: %1 - Can't open file: + Can't open file: %1 - Failed to parse JSON data from file: + Failed to parse JSON data from file: %1 diff --git a/client/translations/amneziavpn_zh_CN.ts b/client/translations/amneziavpn_zh_CN.ts index a956c4e0..71e0169b 100644 --- a/client/translations/amneziavpn_zh_CN.ts +++ b/client/translations/amneziavpn_zh_CN.ts @@ -6,7 +6,7 @@ Split tunneling for WireGuard is not implemented, the option was disabled - 禁用选项,还未实现基于WireGuard协议的VPN分流 + 未启用选项,还未实现基于WireGuard协议的VPN分流 @@ -138,66 +138,72 @@ InstallController - - installed successfully. - 安装成功 + 安装成功 - - is already installed on the server. - 已安装在服务上 + 已安装在服务器上 - - + + + %1 installed successfully. + %1 安装成功。 + + + + + %1 is already installed on the server. + 服务器上已经安装 %1。 + + + + Already installed containers were found on the server. All installed containers have been added to the application - 在服务上发现已经安装协议并添加到应用程序 + +在服务上发现已经安装协议并添加到应用程序 - + Settings updated successfully 配置更新成功 - + + Server '%1' was removed + 已移除服务器 '%1' + + + + All containers from server '%1' have been removed + 服务器 '%1' 的所有容器已移除 + + + + 1% has been removed from the server '%2' + 容器 1% 已从服务器 '%2' 上移除 + + Server ' - 服务器 + 服务器 - ' was removed - 已经移除 + 已经移除 - - All containers from server ' - - - - - ' have been removed - - - - has been removed from the server ' - 协议已从 + 协议已从 - - ' - - - - + Please login as the user 请以用户身份登录 - + Server added successfully 服务器添加成功 @@ -253,8 +259,8 @@ Already installed containers were found on the server. All installed containers PageDeinstalling - Removing services from - + Removing services from %1 + 正从 %1 移除服务 @@ -519,14 +525,17 @@ Already installed containers were found on the server. All installed containers - Remove 移除 + Remove %1 from server? + 从服务器移除 %1 ? + + from server? - 从服务器 + 从服务器 @@ -583,14 +592,17 @@ Already installed containers were found on the server. All installed containers - Remove 移除 + Remove %1 from server? + 从服务器移除 %1 ? + + from server? - 从服务器 + 从服务器 @@ -673,12 +685,12 @@ Already installed containers were found on the server. All installed containers Remove SFTP and all data stored there - 删除SFTP和其存储在这里的所有数据 + 移除SFTP和其本地所有数据 Remove SFTP and all data stored there? - 删除SFTP和其存储在这里的所有数据? + 移除SFTP和其本地所有数据? @@ -864,7 +876,7 @@ And if you don't like the app, all the more support it - the donation will Check for updates - 检查更新 + 更新 @@ -917,7 +929,7 @@ And if you don't like the app, all the more support it - the donation will Disabled - 关闭 + 禁用 @@ -1241,22 +1253,22 @@ And if you don't like the app, all the more support it - the donation will Check the server for previously installed Amnezia services - 检查服务器上是否有以前安装的 Amnezia 服务 + 检查服务器上是否存在 Amnezia 服务 Add them to the application if they were not displayed - 如果未显示,请将它们添加到应用程序中 + 如果存在且未被显示,则添加到应用程序里 Remove server from application - 从应用程序中移除服务器 + 移除本地服务器信息 Remove server? - 移除服务器? + 移除本地服务器信息? @@ -1266,7 +1278,7 @@ And if you don't like the app, all the more support it - the donation will Clear server from Amnezia software - 从Amnezia中清除服务器 + 移除Amnezia中服务器信息 @@ -1316,14 +1328,17 @@ And if you don't like the app, all the more support it - the donation will - Remove 移除 - from server? - 从服务器 + 从服务器 + + + + Remove %1 from server? + 从服务器移除 %1 ? @@ -1374,7 +1389,7 @@ And if you don't like the app, all the more support it - the donation will Remove - 移除 + 移除 @@ -1583,7 +1598,7 @@ It's okay as long as it's from someone you trust. Amnesia has detected that your server is currently - Amnezia 检测到您的服务器当前处于 + Amnezia 检测到您的服务器当前 @@ -1731,7 +1746,7 @@ It's okay as long as it's from someone you trust. Show content - + 展示内容 @@ -1754,7 +1769,7 @@ It's okay as long as it's from someone you trust. For the AmneziaVPN app - 来自应用AmneziaVPN + AmneziaVPN 应用 @@ -1779,17 +1794,17 @@ It's okay as long as it's from someone you trust. Full access - 完全授权 + 完整授权 VPN access without the ability to manage the server - VPN 访问,不能管理服务器 + 无权控制服务器 Full access to server - 完全授权方式访问服务器 + 获得服务器完整授权 @@ -1810,7 +1825,7 @@ It's okay as long as it's from someone you trust. File with connection settings to - 连接配置文件到 + 连接配置文件的内容为: @@ -2000,12 +2015,12 @@ It's okay as long as it's from someone you trust. Could not retrieve private key from keystore - + 无法从密钥存储库中检索私钥 Could not create decryption cipher - + 无法创建解密密码 @@ -2059,27 +2074,27 @@ It's okay as long as it's from someone you trust. Could not create private key generator - + 无法创建私钥生成器 Could not generate new private key - + 无法生成新的私钥 Could not retrieve private key from keystore - + 无法从密钥库检索私钥 Could not create encryption cipher - + 无法创建加密密码 Could not encrypt data - + 无法加密数据 @@ -2328,7 +2343,7 @@ It's okay as long as it's from someone you trust. OpenVPN over Cloak - OpenVPN with VPN masquerading as web traffic and protection against active-probbing detection. Ideal for bypassing blocking in regions with the highest levels of censorship. - OpenVPN over Cloak - OpenVPN,具有伪装成网络流量的 VPN 和针对主动探测检测的保护.非常适合绕过审查力度特别强的地区的封锁。 + OpenVPN over Cloak - OpenVPN 与 VPN 具有伪装成网络流量和防止主动探测检测的保护。非常适合绕过审查力度特别强的地区的封锁。 @@ -2338,7 +2353,7 @@ It's okay as long as it's from someone you trust. IKEv2 - Modern stable protocol, a bit faster than others, restores connection after signal loss. It has native support on the latest versions of Android and iOS. - IKEv2 - 现代稳定协议,比其他协议快一点,在信号丢失后恢复连接。Android 和 iOS最新版原生支持。 + IKEv2 - 现代稳定协议,相比其他协议较快一些,在信号丢失后恢复连接。Android 和 iOS最新版原生支持。 @@ -2478,22 +2493,22 @@ It's okay as long as it's from someone you trust. Software version - + 软件版本 Backup file is corrupted - + 备份文件已损坏 All settings have been reset to default values - + 所配置恢复为默认值 Cached profiles cleared - + 缓存的配置文件已清除 @@ -2502,7 +2517,7 @@ It's okay as long as it's from someone you trust. Save AmneziaVPN config - + 保存配置 @@ -2512,22 +2527,22 @@ It's okay as long as it's from someone you trust. Copy - + 拷贝 Copied - 拷贝 + 已拷贝 Show content - + 展示内容 To read the QR code in the Amnezia app, select "Add server" → "I have data to connect" → "QR code, key or settings file" - + 要读取 Amnezia 应用程序中的二维码,请选择“添加服务器”→“我有数据要连接”→“二维码、密钥或配置文件” @@ -2539,22 +2554,22 @@ It's okay as long as it's from someone you trust. - New site added: + New site added: %1 - Site removed: + Site removed: %1 - Can't open file: + Can't open file: %1 - Failed to parse JSON data from file: + Failed to parse JSON data from file: %1 @@ -2593,7 +2608,7 @@ It's okay as long as it's from someone you trust. Visit Website - 访问官网 + 官网 @@ -2677,7 +2692,7 @@ It's okay as long as it's from someone you trust. Many foreign websites and VPN providers are blocked - 许多国外网站和VPN提供商被屏蔽 + 大多国外网站和VPN提供商被屏蔽 diff --git a/client/ui/controllers/installController.cpp b/client/ui/controllers/installController.cpp index 8b77252f..b03a45d8 100644 --- a/client/ui/controllers/installController.cpp +++ b/client/ui/controllers/installController.cpp @@ -107,10 +107,9 @@ void InstallController::installServer(DockerContainer container, QJsonObject &co if (!installedContainers.contains(container)) { errorCode = serverController.setupContainer(m_currentlyInstalledServerCredentials, container, config); installedContainers.insert(container, config); - finishMessage = ContainerProps::containerHumanNames().value(container) + tr(" installed successfully. "); + finishMessage = tr("%1 installed successfully. ").arg(ContainerProps::containerHumanNames().value(container)); } else { - finishMessage = - ContainerProps::containerHumanNames().value(container) + tr(" is already installed on the server. "); + finishMessage = tr("%1 is already installed on the server. ").arg(ContainerProps::containerHumanNames().value(container)); } if (installedContainers.size() > 1) { finishMessage += tr("\nAlready installed containers were found on the server. " @@ -160,10 +159,9 @@ void InstallController::installContainer(DockerContainer container, QJsonObject if (!installedContainers.contains(container)) { errorCode = serverController.setupContainer(serverCredentials, container, config); installedContainers.insert(container, config); - finishMessage = ContainerProps::containerHumanNames().value(container) + tr(" installed successfully. "); + finishMessage = tr("%1 installed successfully. ").arg(ContainerProps::containerHumanNames().value(container)); } else { - finishMessage = - ContainerProps::containerHumanNames().value(container) + tr(" is already installed on the server. "); + finishMessage = tr("%1 is already installed on the server. ").arg(ContainerProps::containerHumanNames().value(container)); } bool isInstalledContainerAddedToGui = false; @@ -278,7 +276,7 @@ void InstallController::removeCurrentlyProcessedServer() QString serverName = m_serversModel->data(serverIndex, ServersModel::Roles::NameRole).toString(); m_serversModel->removeServer(); - emit removeCurrentlyProcessedServerFinished(tr("Server '") + serverName + tr("' was removed")); + emit removeCurrentlyProcessedServerFinished(tr("Server '%1' was removed").arg(serverName)); } void InstallController::removeAllContainers() @@ -288,7 +286,7 @@ void InstallController::removeAllContainers() ErrorCode errorCode = m_containersModel->removeAllContainers(); if (errorCode == ErrorCode::NoError) { - emit removeAllContainersFinished(tr("All containers from server '") + serverName + tr("' have been removed")); + emit removeAllContainersFinished(tr("All containers from server '%1' have been removed").arg(serverName)); return; } emit installationErrorOccurred(errorString(errorCode)); @@ -304,8 +302,8 @@ void InstallController::removeCurrentlyProcessedContainer() ErrorCode errorCode = m_containersModel->removeCurrentlyProcessedContainer(); if (errorCode == ErrorCode::NoError) { - emit removeCurrentlyProcessedContainerFinished(containerName + tr(" has been removed from the server '") - + serverName + tr("'")); + + emit removeCurrentlyProcessedContainerFinished(tr("1% has been removed from the server '%2'").arg(containerName).arg(serverName)); return; } emit installationErrorOccurred(errorString(errorCode)); diff --git a/client/ui/controllers/sitesController.cpp b/client/ui/controllers/sitesController.cpp index a27e91d0..4d0391be 100644 --- a/client/ui/controllers/sitesController.cpp +++ b/client/ui/controllers/sitesController.cpp @@ -64,7 +64,7 @@ void SitesController::addSite(QString hostname) QHostInfo::lookupHost(hostname, this, resolveCallback); } - emit finished(tr("New site added: ") + hostname); + emit finished(tr("New site added: %1").arg(hostname)); } void SitesController::removeSite(int index) @@ -77,7 +77,7 @@ void SitesController::removeSite(int index) Q_ARG(QStringList, QStringList() << hostname)); QMetaObject::invokeMethod(m_vpnConnection.get(), "flushDns", Qt::QueuedConnection); - emit finished(tr("Site removed: ") + hostname); + emit finished(tr("Site removed: %1").arg(hostname)); } void SitesController::importSites(const QString &fileName, bool replaceExisting) @@ -85,19 +85,19 @@ void SitesController::importSites(const QString &fileName, bool replaceExisting) QFile file(fileName); if (!file.open(QIODevice::ReadOnly)) { - emit errorOccurred(tr("Can't open file: ") + fileName); + emit errorOccurred(tr("Can't open file: %1").arg(fileName)); return; } QByteArray jsonData = file.readAll(); QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonData); if (jsonDocument.isNull()) { - emit errorOccurred(tr("Failed to parse JSON data from file: ") + fileName); + emit errorOccurred(tr("Failed to parse JSON data from file: %1").arg(fileName)); return; } if (!jsonDocument.isArray()) { - emit errorOccurred(tr("The JSON data is not an array in file: ") + fileName); + emit errorOccurred(tr("The JSON data is not an array in file: ").arg(fileName)); return; } diff --git a/client/ui/qml/Pages2/PageDeinstalling.qml b/client/ui/qml/Pages2/PageDeinstalling.qml index 243b1205..8dffbbce 100644 --- a/client/ui/qml/Pages2/PageDeinstalling.qml +++ b/client/ui/qml/Pages2/PageDeinstalling.qml @@ -59,7 +59,7 @@ PageType { Layout.fillWidth: true Layout.topMargin: 20 - headerText: qsTr("Removing services from ") + name + headerText: qsTr("Removing services from %1").arg(name) } ProgressBarType { diff --git a/client/ui/qml/Pages2/PageProtocolRaw.qml b/client/ui/qml/Pages2/PageProtocolRaw.qml index 8bbfab14..34ca4055 100644 --- a/client/ui/qml/Pages2/PageProtocolRaw.qml +++ b/client/ui/qml/Pages2/PageProtocolRaw.qml @@ -173,7 +173,7 @@ PageType { textColor: "#EB5757" clickedFunction: function() { - questionDrawer.headerText = qsTr("Remove ") + ContainersModel.getCurrentlyProcessedContainerName() + qsTr(" from server?") + questionDrawer.headerText = qsTr("Remove %1 from server?").arg(ContainersModel.getCurrentlyProcessedContainerName()) 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.noButtonText = qsTr("Cancel") diff --git a/client/ui/qml/Pages2/PageServiceDnsSettings.qml b/client/ui/qml/Pages2/PageServiceDnsSettings.qml index 016a7c88..10fe6f56 100644 --- a/client/ui/qml/Pages2/PageServiceDnsSettings.qml +++ b/client/ui/qml/Pages2/PageServiceDnsSettings.qml @@ -63,7 +63,7 @@ PageType { textColor: "#EB5757" clickedFunction: function() { - questionDrawer.headerText = qsTr("Remove ") + ContainersModel.getCurrentlyProcessedContainerName() + qsTr(" from server?") + questionDrawer.headerText = qsTr("Remove %1 from server?").arg(ContainersModel.getCurrentlyProcessedContainerName()) questionDrawer.yesButtonText = qsTr("Continue") questionDrawer.noButtonText = qsTr("Cancel") diff --git a/client/ui/qml/Pages2/PageSettingsServerProtocol.qml b/client/ui/qml/Pages2/PageSettingsServerProtocol.qml index 14d34590..998948d1 100644 --- a/client/ui/qml/Pages2/PageSettingsServerProtocol.qml +++ b/client/ui/qml/Pages2/PageSettingsServerProtocol.qml @@ -113,7 +113,7 @@ PageType { textColor: "#EB5757" clickedFunction: function() { - questionDrawer.headerText = qsTr("Remove ") + ContainersModel.getCurrentlyProcessedContainerName() + qsTr(" from server?") + questionDrawer.headerText = qsTr("Remove %1 from server?").arg(ContainersModel.getCurrentlyProcessedContainerName()) 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.noButtonText = qsTr("Cancel")