Integrate translations into build process
This commit is contained in:
@@ -38,7 +38,7 @@ void ConnectionLoader::doAutoConnect(bool tryEzcashdStart) {
|
||||
|
||||
// Priority 2: Try to connect to detect zcash.conf and connect to it.
|
||||
auto config = autoDetectZcashConf();
|
||||
main->logger->write("Attempting autoconnect");
|
||||
main->logger->write(QObject::tr("Attempting autoconnect"));
|
||||
|
||||
if (config.get() != nullptr) {
|
||||
auto connection = makeConnection(config);
|
||||
@@ -47,7 +47,7 @@ void ConnectionLoader::doAutoConnect(bool tryEzcashdStart) {
|
||||
// Refused connection. So try and start embedded zcashd
|
||||
if (Settings::getInstance()->useEmbedded()) {
|
||||
if (tryEzcashdStart) {
|
||||
this->showInformation("Starting embedded zcashd");
|
||||
this->showInformation(QObject::tr("Starting embedded zcashd"));
|
||||
if (this->startEmbeddedZcashd()) {
|
||||
// Embedded zcashd started up. Wait a second and then refresh the connection
|
||||
main->logger->write("Embedded zcashd started up, trying autoconnect in 1 sec");
|
||||
@@ -57,7 +57,7 @@ void ConnectionLoader::doAutoConnect(bool tryEzcashdStart) {
|
||||
// zcashd is configured to run as a daemon, so we must wait for a few seconds
|
||||
// to let it start up.
|
||||
main->logger->write("zcashd is daemon=1. Waiting for it to start up");
|
||||
this->showInformation("zcashd is set to run as daemon", "Waiting for zcashd");
|
||||
this->showInformation(QObject::tr("zcashd is set to run as daemon"), QObject::tr("Waiting for zcashd"));
|
||||
QTimer::singleShot(5000, [=]() { doAutoConnect(/* don't attempt to start ezcashd */ false); });
|
||||
} else {
|
||||
// Something is wrong.
|
||||
@@ -72,15 +72,15 @@ void ConnectionLoader::doAutoConnect(bool tryEzcashdStart) {
|
||||
main->logger->write("Couldn't start embedded zcashd for unknown reason");
|
||||
QString explanation;
|
||||
if (config->zcashDaemon) {
|
||||
explanation = QString() % "You have zcashd set to start as a daemon, which can cause problems "
|
||||
explanation = QString() % QObject::tr("You have zcashd set to start as a daemon, which can cause problems "
|
||||
"with zec-qt-wallet\n\n."
|
||||
"Please remove the following line from your zcash.conf and restart zec-qt-wallet\n"
|
||||
"daemon=1";
|
||||
"daemon=1");
|
||||
} else {
|
||||
explanation = QString() % "Couldn't start the embedded zcashd.\n\n" %
|
||||
"Please try restarting.\n\nIf you previously started zcashd with custom arguments, you might need to reset zcash.conf.\n\n" %
|
||||
"If all else fails, please run zcashd manually." %
|
||||
(ezcashd ? "The process returned:\n\n" % ezcashd->errorString() : QString(""));
|
||||
explanation = QString() % QObject::tr("Couldn't start the embedded zcashd.\n\n"
|
||||
"Please try restarting.\n\nIf you previously started zcashd with custom arguments, you might need to reset zcash.conf.\n\n"
|
||||
"If all else fails, please run zcashd manually.") %
|
||||
(ezcashd ? QObject::tr("The process returned") + ":\n\n" % ezcashd->errorString() : QString(""));
|
||||
}
|
||||
|
||||
this->showError(explanation);
|
||||
@@ -88,8 +88,8 @@ void ConnectionLoader::doAutoConnect(bool tryEzcashdStart) {
|
||||
} else {
|
||||
// zcash.conf exists, there's no connection, and the user asked us not to start zcashd. Error!
|
||||
main->logger->write("Not using embedded and couldn't connect to zcashd");
|
||||
QString explanation = QString() % "Couldn't connect to zcashd configured in zcash.conf.\n\n" %
|
||||
"Not starting embedded zcashd because --no-embedded was passed";
|
||||
QString explanation = QString() % QObject::tr("Couldn't connect to zcashd configured in zcash.conf.\n\n"
|
||||
"Not starting embedded zcashd because --no-embedded was passed");
|
||||
this->showError(explanation);
|
||||
}
|
||||
});
|
||||
@@ -180,7 +180,7 @@ void ConnectionLoader::doNextDownload(std::function<void(void)> cb) {
|
||||
client->deleteLater();
|
||||
|
||||
main->logger->write("All Downloads done");
|
||||
this->showInformation("All Downloads Finished Successfully!");
|
||||
this->showInformation(QObject::tr("All Downloads Finished Successfully!"));
|
||||
cb();
|
||||
return;
|
||||
}
|
||||
@@ -203,7 +203,7 @@ void ConnectionLoader::doNextDownload(std::function<void(void)> cb) {
|
||||
|
||||
if (!currentOutput->open(QIODevice::WriteOnly)) {
|
||||
main->logger->write("Couldn't open " + currentOutput->fileName() + " for writing");
|
||||
this->showError("Couldn't download params. Please check the help site for more info.");
|
||||
this->showError(QObject::tr("Couldn't download params. Please check the help site for more info."));
|
||||
}
|
||||
main->logger->write("Downloading to " + filename);
|
||||
qDebug() << "Downloading " << url << " to " << filename;
|
||||
@@ -229,8 +229,8 @@ void ConnectionLoader::doNextDownload(std::function<void(void)> cb) {
|
||||
}
|
||||
|
||||
this->showInformation(
|
||||
"Downloading " % filename % (filesRemaining > 1 ? " ( +" % QString::number(filesRemaining) % " more remaining )" : QString("")),
|
||||
QString::number(done/1024/1024, 'f', 0) % "MB of " % QString::number(total/1024/1024, 'f', 0) + "MB at " % QString::number(speed, 'f', 2) % unit);
|
||||
QObject::tr("Downloading ") % filename % (filesRemaining > 1 ? " ( +" % QString::number(filesRemaining) % QObject::tr(" more remaining )") : QString("")),
|
||||
QString::number(done/1024/1024, 'f', 0) % QObject::tr("MB of ") % QString::number(total/1024/1024, 'f', 0) + QObject::tr("MB at ") % QString::number(speed, 'f', 2) % unit);
|
||||
});
|
||||
|
||||
// Download Finished
|
||||
@@ -245,7 +245,7 @@ void ConnectionLoader::doNextDownload(std::function<void(void)> cb) {
|
||||
|
||||
if (currentDownload->error()) {
|
||||
main->logger->write("Downloading " + filename + " failed");
|
||||
this->showError("Downloading " + filename + " failed. Please check the help site for more info");
|
||||
this->showError(QObject::tr("Downloading ") + filename + QObject::tr(" failed. Please check the help site for more info"));
|
||||
} else {
|
||||
doNextDownload(cb);
|
||||
}
|
||||
@@ -269,7 +269,7 @@ bool ConnectionLoader::startEmbeddedZcashd() {
|
||||
if (ezcashd != nullptr) {
|
||||
if (ezcashd->state() == QProcess::NotRunning) {
|
||||
if (!processStdErrOutput.isEmpty()) {
|
||||
QMessageBox::critical(main, "zcashd error", "zcashd said: " + processStdErrOutput,
|
||||
QMessageBox::critical(main, QObject::tr("zcashd error"), "zcashd said: " + processStdErrOutput,
|
||||
QMessageBox::Ok);
|
||||
}
|
||||
return false;
|
||||
@@ -336,8 +336,8 @@ void ConnectionLoader::doManualConnect() {
|
||||
if (!config) {
|
||||
// Nothing configured, show an error
|
||||
QString explanation = QString()
|
||||
% "A manual connection was requested, but the settings are not configured.\n\n"
|
||||
% "Please set the host/port and user/password in the Edit->Settings menu.";
|
||||
% QObject::tr("A manual connection was requested, but the settings are not configured.\n\n"
|
||||
"Please set the host/port and user/password in the Edit->Settings menu.");
|
||||
|
||||
showError(explanation);
|
||||
doRPCSetConnection(nullptr);
|
||||
@@ -348,8 +348,8 @@ void ConnectionLoader::doManualConnect() {
|
||||
auto connection = makeConnection(config);
|
||||
refreshZcashdState(connection, [=] () {
|
||||
QString explanation = QString()
|
||||
% "Could not connect to zcashd configured in settings.\n\n"
|
||||
% "Please set the host/port and user/password in the Edit->Settings menu.";
|
||||
% QObject::tr("Could not connect to zcashd configured in settings.\n\n"
|
||||
"Please set the host/port and user/password in the Edit->Settings menu.");
|
||||
|
||||
showError(explanation);
|
||||
doRPCSetConnection(nullptr);
|
||||
@@ -407,9 +407,9 @@ void ConnectionLoader::refreshZcashdState(Connection* connection, std::function<
|
||||
refused();
|
||||
} else if (err == QNetworkReply::NetworkError::AuthenticationRequiredError) {
|
||||
main->logger->write("Authentication failed");
|
||||
QString explanation = QString()
|
||||
% "Authentication failed. The username / password you specified was "
|
||||
% "not accepted by zcashd. Try changing it in the Edit->Settings menu";
|
||||
QString explanation = QString() %
|
||||
QObject::tr("Authentication failed. The username / password you specified was "
|
||||
"not accepted by zcashd. Try changing it in the Edit->Settings menu");
|
||||
|
||||
this->showError(explanation);
|
||||
} else if (err == QNetworkReply::NetworkError::InternalServerError &&
|
||||
@@ -423,7 +423,7 @@ void ConnectionLoader::refreshZcashdState(Connection* connection, std::function<
|
||||
if (dots > 3)
|
||||
dots = 0;
|
||||
}
|
||||
this->showInformation("Your zcashd is starting up. Please wait.", status);
|
||||
this->showInformation(QObject::tr("Your zcashd is starting up. Please wait."), status);
|
||||
main->logger->write("Waiting for zcashd to come online.");
|
||||
// Refresh after one second
|
||||
QTimer::singleShot(1000, [=]() { this->refreshZcashdState(connection, refused); });
|
||||
@@ -444,7 +444,7 @@ void ConnectionLoader::showError(QString explanation) {
|
||||
rpc->setEZcashd(nullptr);
|
||||
rpc->noConnection();
|
||||
|
||||
QMessageBox::critical(main, "Connection Error", explanation, QMessageBox::Ok);
|
||||
QMessageBox::critical(main, QObject::tr("Connection Error"), explanation, QMessageBox::Ok);
|
||||
d->close();
|
||||
}
|
||||
|
||||
@@ -663,7 +663,7 @@ void Connection::showTxError(const QString& error) {
|
||||
return;
|
||||
|
||||
shown = true;
|
||||
QMessageBox::critical(main, "Transaction Error", "There was an error sending the transaction. The error was: \n\n"
|
||||
QMessageBox::critical(main, QObject::tr("Transaction Error"), QObject::tr("There was an error sending the transaction. The error was:") + "\n\n"
|
||||
+ error, QMessageBox::StandardButton::Ok);
|
||||
shown = false;
|
||||
}
|
||||
|
||||
@@ -627,7 +627,7 @@ void MainWindow::importPrivKey() {
|
||||
|
||||
pui.buttonBox->button(QDialogButtonBox::Save)->setVisible(false);
|
||||
pui.helpLbl->setText(QString() %
|
||||
"Please paste your private keys (z-Addr or t-Addr) here, one per line.\n" %
|
||||
tr("Please paste your private keys (z-Addr or t-Addr) here, one per line") % ".\n" %
|
||||
tr("The keys will be imported into your connected zcashd node"));
|
||||
|
||||
if (d.exec() == QDialog::Accepted && !pui.privKeyTxt->toPlainText().trimmed().isEmpty()) {
|
||||
@@ -667,17 +667,17 @@ void MainWindow::backupWalletDat() {
|
||||
|
||||
QFile wallet(zcashdir.filePath("wallet.dat"));
|
||||
if (!wallet.exists()) {
|
||||
QMessageBox::critical(this, "No wallet.dat", tr("Couldn't find the wallet.dat on this computer.\n") +
|
||||
QMessageBox::critical(this, tr("No wallet.dat"), tr("Couldn't find the wallet.dat on this computer") + "\n" +
|
||||
tr("You need to back it up from the machine zcashd is running on"), QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
|
||||
QUrl backupName = QFileDialog::getSaveFileUrl(this, "Backup wallet.dat", backupDefaultName, "Data file (*.dat)");
|
||||
QUrl backupName = QFileDialog::getSaveFileUrl(this, tr("Backup wallet.dat"), backupDefaultName, "Data file (*.dat)");
|
||||
if (backupName.isEmpty())
|
||||
return;
|
||||
|
||||
if (!wallet.copy(backupName.toLocalFile())) {
|
||||
QMessageBox::critical(this, "Couldn't backup", tr("Couldn't backup the wallet.dat file.") +
|
||||
QMessageBox::critical(this, tr("Couldn't backup"), tr("Couldn't backup the wallet.dat file.") +
|
||||
tr("You need to back it up manually."), QMessageBox::Ok);
|
||||
}
|
||||
}
|
||||
|
||||
15
src/scripts/dotranslations.sh
Executable file
15
src/scripts/dotranslations.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -z $QT_STATIC ]; then
|
||||
echo "QT_STATIC is not set. Please set it to the base directory of a statically compiled Qt";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
rm -f res/*.qm
|
||||
$QT_STATIC/bin/lrelease zec-qt-wallet.pro
|
||||
|
||||
# Then update the qt base translations. First, get all languages
|
||||
ls res/*.qm | awk -F '[_.]' '{print $4}' | while read -r language ; do
|
||||
$QT_STATIC/bin/lconvert -o res/zec_$language.qm $QT_STATIC/translations/qtbase_$language.qm res/zec_qt_wallet_$language.qm
|
||||
mv res/zec_$language.qm res/zec_qt_wallet_$language.qm
|
||||
done
|
||||
@@ -34,9 +34,14 @@ rm -f artifacts/macOS-zec-qt-wallet-v$APP_VERSION.dmg
|
||||
echo "[OK]"
|
||||
|
||||
|
||||
echo -n "Building..............."
|
||||
echo -n "Configuring............"
|
||||
# Build
|
||||
$QT_PATH/bin/qmake zec-qt-wallet.pro CONFIG+=release >/dev/null
|
||||
QT_STATIC=$QT_STATIC src/scripts/dotranslations.sh >/dev/null
|
||||
echo "[OK]"
|
||||
|
||||
|
||||
echo -n "Building..............."
|
||||
make -j4 >/dev/null
|
||||
echo "[OK]"
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ echo "[Building on" `lsb_release -r`"]"
|
||||
echo -n "Configuring............"
|
||||
$QT_STATIC/bin/qmake zec-qt-wallet.pro -spec linux-clang CONFIG+=release > /dev/null
|
||||
#Mingw seems to have trouble with precompiled headers, so strip that option from the .pro file
|
||||
QT_STATIC=$QT_STATIC src/scripts/dotranslations.sh >/dev/null
|
||||
echo "[OK]"
|
||||
|
||||
|
||||
|
||||
@@ -145,7 +145,7 @@ void MainWindow::addAddressSection() {
|
||||
int itemNumber = ui->sendToWidgets->children().size() - 1;
|
||||
|
||||
auto verticalGroupBox = new QGroupBox(ui->sendToWidgets);
|
||||
verticalGroupBox->setTitle(QString("Recipient ") % QString::number(itemNumber));
|
||||
verticalGroupBox->setTitle(QString(tr("Recipient ")) % QString::number(itemNumber));
|
||||
verticalGroupBox->setObjectName(QString("AddressGroupBox") % QString::number(itemNumber));
|
||||
auto sendAddressLayout = new QVBoxLayout(verticalGroupBox);
|
||||
sendAddressLayout->setSpacing(6);
|
||||
@@ -154,12 +154,12 @@ void MainWindow::addAddressSection() {
|
||||
auto horizontalLayout_12 = new QHBoxLayout();
|
||||
horizontalLayout_12->setSpacing(6);
|
||||
auto label_4 = new QLabel(verticalGroupBox);
|
||||
label_4->setText("Address");
|
||||
label_4->setText(tr("Address"));
|
||||
horizontalLayout_12->addWidget(label_4);
|
||||
|
||||
auto Address1 = new QLineEdit(verticalGroupBox);
|
||||
Address1->setObjectName(QString("Address") % QString::number(itemNumber));
|
||||
Address1->setPlaceholderText("Address");
|
||||
Address1->setPlaceholderText(tr("Address"));
|
||||
QObject::connect(Address1, &QLineEdit::textChanged, [=] (auto text) {
|
||||
this->addressChanged(itemNumber, text);
|
||||
});
|
||||
@@ -169,7 +169,7 @@ void MainWindow::addAddressSection() {
|
||||
|
||||
auto addressBook1 = new QPushButton(verticalGroupBox);
|
||||
addressBook1->setObjectName(QStringLiteral("AddressBook") % QString::number(itemNumber));
|
||||
addressBook1->setText("Address Book");
|
||||
addressBook1->setText(tr("Address Book"));
|
||||
QObject::connect(addressBook1, &QPushButton::clicked, [=] () {
|
||||
AddressBook::open(this, Address1);
|
||||
});
|
||||
@@ -182,11 +182,11 @@ void MainWindow::addAddressSection() {
|
||||
horizontalLayout_13->setSpacing(6);
|
||||
|
||||
auto label_6 = new QLabel(verticalGroupBox);
|
||||
label_6->setText("Amount");
|
||||
label_6->setText(tr("Amount"));
|
||||
horizontalLayout_13->addWidget(label_6);
|
||||
|
||||
auto Amount1 = new QLineEdit(verticalGroupBox);
|
||||
Amount1->setPlaceholderText("Amount");
|
||||
Amount1->setPlaceholderText(tr("Amount"));
|
||||
Amount1->setObjectName(QString("Amount") % QString::number(itemNumber));
|
||||
Amount1->setBaseSize(QSize(200, 0));
|
||||
// Create the validator for send to/amount fields
|
||||
@@ -207,7 +207,7 @@ void MainWindow::addAddressSection() {
|
||||
|
||||
auto MemoBtn1 = new QPushButton(verticalGroupBox);
|
||||
MemoBtn1->setObjectName(QString("MemoBtn") % QString::number(itemNumber));
|
||||
MemoBtn1->setText("Memo");
|
||||
MemoBtn1->setText(tr("Memo"));
|
||||
// Connect Memo Clicked button
|
||||
QObject::connect(MemoBtn1, &QPushButton::clicked, [=] () {
|
||||
this->memoButtonClicked(itemNumber);
|
||||
@@ -251,7 +251,7 @@ void MainWindow::setMemoEnabled(int number, bool enabled) {
|
||||
memoBtn->setToolTip("");
|
||||
} else {
|
||||
memoBtn->setEnabled(false);
|
||||
memoBtn->setToolTip("Only z-addresses can have memos");
|
||||
memoBtn->setToolTip(tr("Only z-addresses can have memos"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,8 +259,8 @@ void MainWindow::memoButtonClicked(int number) {
|
||||
// Memos can only be used with zAddrs. So check that first
|
||||
auto addr = ui->sendToWidgets->findChild<QLineEdit*>(QString("Address") + QString::number(number));
|
||||
if (!AddressBook::addressFromAddressLabel(addr->text()).startsWith("z")) {
|
||||
QMessageBox msg(QMessageBox::Critical, "Memos can only be used with z-addresses",
|
||||
"The memo field can only be used with a z-address.\n" + addr->text() + "\ndoesn't look like a z-address",
|
||||
QMessageBox msg(QMessageBox::Critical, tr("Memos can only be used with z-addresses"),
|
||||
tr("The memo field can only be used with a z-address.\n") + addr->text() + tr("\ndoesn't look like a z-address"),
|
||||
QMessageBox::Ok, this);
|
||||
|
||||
msg.exec();
|
||||
@@ -414,7 +414,7 @@ Tx MainWindow::createTxFromSendPage() {
|
||||
double change = rpc->getAllBalances()->value(tx.fromAddr) - totalAmt - tx.fee;
|
||||
|
||||
if (Settings::getDecimalString(change) != "0") {
|
||||
QString changeMemo = "Change from " + tx.fromAddr;
|
||||
QString changeMemo = tr("Change from ") + tx.fromAddr;
|
||||
tx.toAddrs.push_back(ToFields{ *saplingAddr, change, changeMemo, changeMemo.toUtf8().toHex() });
|
||||
}
|
||||
}
|
||||
@@ -517,7 +517,7 @@ bool MainWindow::confirmTx(Tx tx) {
|
||||
auto labelMinerFee = new QLabel(confirm.sendToAddrs);
|
||||
labelMinerFee->setObjectName(QStringLiteral("labelMinerFee"));
|
||||
confirm.gridLayout->addWidget(labelMinerFee, row, 0, 1, 1);
|
||||
labelMinerFee->setText("Miner Fee");
|
||||
labelMinerFee->setText(tr("Miner Fee"));
|
||||
|
||||
auto minerFee = new QLabel(confirm.sendToAddrs);
|
||||
QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
|
||||
@@ -566,7 +566,7 @@ void MainWindow::sendButton() {
|
||||
QString error = doSendTxValidations(tx);
|
||||
if (!error.isEmpty()) {
|
||||
// Something went wrong, so show an error and exit
|
||||
QMessageBox msg(QMessageBox::Critical, "Transaction Error", error,
|
||||
QMessageBox msg(QMessageBox::Critical, tr("Transaction Error"), error,
|
||||
QMessageBox::Ok, this);
|
||||
|
||||
msg.exec();
|
||||
@@ -593,12 +593,12 @@ void MainWindow::sendButton() {
|
||||
}
|
||||
|
||||
QString MainWindow::doSendTxValidations(Tx tx) {
|
||||
if (!Settings::isValidAddress(tx.fromAddr)) return QString("From Address is Invalid");
|
||||
if (!Settings::isValidAddress(tx.fromAddr)) return QString(tr("From Address is Invalid"));
|
||||
|
||||
for (auto toAddr : tx.toAddrs) {
|
||||
if (!Settings::isValidAddress(toAddr.addr)) {
|
||||
QString addr = (toAddr.addr.length() > 100 ? toAddr.addr.left(100) + "..." : toAddr.addr);
|
||||
return QString("Recipient Address ") % addr % " is Invalid";
|
||||
return QString(tr("Recipient Address ")) % addr % tr(" is Invalid");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user