Add English and Russian ChatGUI interface translations

This commit is contained in:
evgeny committed 2026-10-05 16:55:43 +02:00
1 parent 972c6b7f0a
commit 27d93ecaf9
50 files changed
+4978 -491

No files matched your search

+23 -21
View File
@@ -1,3 +1,4 @@
#include <QCoreApplication>
#include "joindialog.h"
#include "invite_link.h"
#include "debug_ui.h"
@@ -23,7 +24,7 @@ JoinDialog::JoinDialog(UtunNode* node, DbManager* db, QWidget* parent,
, m_node(node)
, m_db(db)
{
setWindowTitle("Join Channel");
setWindowTitle(QCoreApplication::translate("ChatGui", "Join Channel"));
setMinimumWidth(420);
setModal(true);
@@ -31,7 +32,7 @@ JoinDialog::JoinDialog(UtunNode* node, DbManager* db, QWidget* parent,
layout->setSpacing(12);
layout->setContentsMargins(20, 16, 20, 16);
auto *titleLabel = new QLabel("Paste invite link:", this);
auto *titleLabel = new QLabel(QCoreApplication::translate("ChatGui", "Paste invite link:"), this);
titleLabel->setStyleSheet("font-weight: bold; font-size: 13px;");
layout->addWidget(titleLabel);
@@ -41,8 +42,9 @@ JoinDialog::JoinDialog(UtunNode* node, DbManager* db, QWidget* parent,
"QLineEdit { border: 1px solid palette(mid); border-radius: 6px;"
" padding: 8px 12px; font-size: 13px; background: palette(base); }");
layout->addWidget(m_linkEdit);
auto* expiry = new QLabel(QStringLiteral("Приглашение действует 10 минут с момента создания.\n"
"Если срок истёк, попросите отправителя создать новую ссылку."), this);
auto* expiry = new QLabel(QCoreApplication::translate("ChatGui",
"The invitation expires 10 minutes after creation.\nIf it has expired, ask the sender to "
"create a new link."), this);
expiry->setWordWrap(true);
layout->addWidget(expiry);
@@ -57,8 +59,8 @@ JoinDialog::JoinDialog(UtunNode* node, DbManager* db, QWidget* parent,
btnLayout->setSpacing(8);
btnLayout->addStretch();
m_cancelBtn = new QPushButton("Cancel", this);
m_cancelBtn->setFixedWidth(90);
m_cancelBtn = new QPushButton(QCoreApplication::translate("ChatGui", "Cancel"), this);
m_cancelBtn->setMinimumWidth(90);
m_cancelBtn->setStyleSheet(
"QPushButton { border: 1px solid palette(mid); border-radius: 4px;"
" padding: 6px 16px; font-size: 13px; background: palette(button); }"
@@ -66,8 +68,8 @@ JoinDialog::JoinDialog(UtunNode* node, DbManager* db, QWidget* parent,
connect(m_cancelBtn, &QPushButton::clicked, this, &QDialog::reject);
btnLayout->addWidget(m_cancelBtn);
m_connectBtn = new QPushButton("Connect", this);
m_connectBtn->setFixedWidth(90);
m_connectBtn = new QPushButton(QCoreApplication::translate("ChatGui", "Connect"), this);
m_connectBtn->setMinimumWidth(90);
m_connectBtn->setDefault(true);
m_connectBtn->setStyleSheet(
"QPushButton { border: none; border-radius: 4px;"
@@ -113,7 +115,7 @@ JoinDialog::JoinDialog(UtunNode* node, DbManager* db, QWidget* parent,
: QString("?%1").arg(a.proto);
addrList.append(QString("%1:%2 (%3)").arg(addrStr).arg(a.port).arg(protoName));
}
setStatus(QString("Node: 0x%1 | %2")
setStatus(QCoreApplication::translate("ChatGui", "Node: 0x%1 %2")
.arg(nodeId, 16, 16, QLatin1Char('0'))
.arg(addrList.join(", ")));
});
@@ -149,22 +151,22 @@ void JoinDialog::onConnectClicked() {
if (m_connecting) return;
QString link = m_linkEdit->text().trimmed();
if (link.isEmpty()) {
setStatus("Enter an invite link.", true);
setStatus(QCoreApplication::translate("ChatGui", "Enter an invite link."), true);
return;
}
setStatus("Parsing link...");
setStatus(QCoreApplication::translate("ChatGui", "Parsing link..."));
InviteData d = decodeInviteLink(link);
if (!d.error.isEmpty()) {
setStatus("Invalid invite link: " + d.error, true);
setStatus(QCoreApplication::translate("ChatGui", "Invalid invite link: ") + d.error, true);
return;
}
if (d.pubkey.size() != 32) {
setStatus(QString("Invalid invite link: pubkey is %1 bytes (need 32)").arg(d.pubkey.size()), true);
setStatus(QCoreApplication::translate("ChatGui", "Invalid invite link: pubkey is %1 bytes (need 32)").arg(d.pubkey.size()), true);
return;
}
if (d.addrs.isEmpty()) {
setStatus("No peer addresses in the invite link.", true);
setStatus(QCoreApplication::translate("ChatGui", "No peer addresses in the invite link."), true);
return;
}
@@ -190,7 +192,7 @@ void JoinDialog::onConnectClicked() {
m_connectBtn->setEnabled(false);
m_linkEdit->setReadOnly(true);
setStatus("Connecting to peer...");
setStatus(QCoreApplication::translate("ChatGui", "Connecting to peer..."));
QByteArray addrsBuf = serializeInviteAddrs(d);
@@ -206,7 +208,7 @@ void JoinDialog::onConnectResult(uint64_t nodeId, uint64_t channelId, int result
if (!m_connecting || nodeId != m_pendingNodeId || channelId != m_pendingChannelId) return;
if (result == 0) {
setStatus("Connected!");
setStatus(QCoreApplication::translate("ChatGui", "Connected!"));
QString cid = QString::number(m_pendingChannelId);
emit joined(cid);
accept();
@@ -216,13 +218,13 @@ void JoinDialog::onConnectResult(uint64_t nodeId, uint64_t channelId, int result
m_linkEdit->setReadOnly(false);
m_connectBtn->setFocus();
const char* errMsg = "Unknown error.";
QString errMsg = QCoreApplication::translate("ChatGui", "Unknown error.");
switch (result) {
case -1: errMsg = "Channel not found."; break;
case 2: errMsg = "Connection timed out."; break;
case -7: errMsg = "Node not initialized."; break;
case -1: errMsg = QCoreApplication::translate("ChatGui", "Channel not found."); break;
case 2: errMsg = QCoreApplication::translate("ChatGui", "Connection timed out."); break;
case -7: errMsg = QCoreApplication::translate("ChatGui", "Node not initialized."); break;
default: break;
}
setStatus(QString("Connection failed: %1").arg(errMsg), true);
setStatus(QCoreApplication::translate("ChatGui", "Connection failed: %1").arg(errMsg), true);
}
}