diff --git a/cryptonote b/cryptonote
index f15bcca55..ebe194e48 160000
--- a/cryptonote
+++ b/cryptonote
@@ -1 +1 @@
-Subproject commit f15bcca5559eb7405bc28fb68c2362042d38ceba
+Subproject commit ebe194e488d0030e0328022a3aba0d09773ea83d
diff --git a/src/Languages.pro b/src/Languages.pro
index 4c96403b1..62f2bf443 100644
--- a/src/Languages.pro
+++ b/src/Languages.pro
@@ -70,6 +70,7 @@ gui/VerifyMnemonicSeedDialog.cpp \
gui/NoWalletFrame.cpp \
gui/SendGlassFrame.cpp \
gui/SignMessageDialog.cpp \
+gui/OptimizationSettings.cpp \
HEADERS = CommandLineParser.h \
@@ -129,6 +130,7 @@ gui/VerifyMnemonicSeedDialog.h \
gui/NoWalletFrame.h \
gui/SendGlassFrame.h \
gui/SignMessageDialog.h \
+gui/OptimizationSettings.h \
FORMS = gui/ui/aboutdialog.ui \
@@ -166,6 +168,7 @@ gui/ui/restorefrommnemonicseeddialog.ui \
gui/ui/verifymnemonicseeddialog.ui \
gui/ui/nowalletframe.ui \
gui/ui/signmessagedialog.ui \
+gui/ui/optimizationsettingsdialog.ui \
TRANSLATIONS = languages/uk.ts \
diff --git a/src/OptimizationManager.cpp b/src/OptimizationManager.cpp
new file mode 100644
index 000000000..79629c55b
--- /dev/null
+++ b/src/OptimizationManager.cpp
@@ -0,0 +1,157 @@
+// Copyright (c) 2015-2017, The Bytecoin developers
+// Copyright (c) 2018, The Karbo developers
+//
+// This file is part of Karbovanets.
+//
+// Karbovanets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Karbovanets is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with Karbovanets. If not, see .
+
+#include
+#include
+
+#include "OptimizationManager.h"
+#include "WalletAdapter.h"
+#include "gui/WalletEvents.h"
+#include "NodeAdapter.h"
+#include "Settings.h"
+
+namespace WalletGui {
+
+namespace {
+
+const int CHECK_TIMER_INTERVAL = 1000;
+
+}
+
+OptimizationManager::OptimizationManager(QObject* _parent) : QObject(_parent),
+ m_checkTimerId(-1), m_optimizationTimerId(-1), m_currentOptimizationInterval(0), m_isSynchronized(false) {
+ connect(&WalletAdapter::instance(), &WalletAdapter::walletInitCompletedSignal, this, &OptimizationManager::walletOpened);
+ connect(&WalletAdapter::instance(), &WalletAdapter::walletCloseCompletedSignal, this, &OptimizationManager::walletClosed);
+ connect(&WalletAdapter::instance(), &WalletAdapter::walletSynchronizationProgressUpdatedSignal, this, &OptimizationManager::synchronizationProgressUpdated, Qt::QueuedConnection);
+ connect(&WalletAdapter::instance(), &WalletAdapter::walletSynchronizationCompletedSignal, this, &OptimizationManager::synchronizationCompleted, Qt::QueuedConnection);
+}
+
+OptimizationManager::~OptimizationManager() {
+}
+
+void OptimizationManager::walletOpened() {
+ Q_ASSERT(m_checkTimerId == -1);
+ m_checkTimerId = startTimer(CHECK_TIMER_INTERVAL);
+}
+
+void OptimizationManager::walletClosed() {
+ if (m_checkTimerId != -1) {
+ killTimer(m_checkTimerId);
+ m_checkTimerId = -1;
+ }
+
+ if (m_optimizationTimerId != -1) {
+ killTimer(m_optimizationTimerId);
+ m_optimizationTimerId = -1;
+ }
+}
+
+void OptimizationManager::synchronizationProgressUpdated() {
+ m_isSynchronized = false;
+}
+
+void OptimizationManager::synchronizationCompleted() {
+ m_isSynchronized = true;
+}
+
+void OptimizationManager::timerEvent(QTimerEvent* _event) {
+ if (_event->timerId() == m_checkTimerId) {
+ checkOptimization();
+ } else if (_event->timerId() == m_optimizationTimerId) {
+ optimize();
+ }
+
+ QObject::timerEvent(_event);
+}
+
+void OptimizationManager::checkOptimization() {
+ if (Settings::instance().isOptimizationEnabled()) {
+ bool customTimeEnabled = Settings::instance().isOptimizationTimeSetManually();
+ QTime startTime = Settings::instance().getOptimizationStartTime();
+ QTime stopTime = Settings::instance().getOptimizationStopTime();
+ QTime currentTime = QTime::currentTime();
+ if (!customTimeEnabled || startTime == stopTime) {
+ ensureStarted();
+ } else if (stopTime > startTime) {
+ if (currentTime >= startTime && currentTime < stopTime) {
+ ensureStarted();
+ } else {
+ ensureStopped();
+ }
+ } else {
+ if ((currentTime >= startTime && currentTime < QTime(0, 0)) || (currentTime >= QTime(0, 0) && currentTime < stopTime)) {
+ ensureStarted();
+ } else {
+ ensureStopped();
+ }
+ }
+ } else {
+ ensureStopped();
+ }
+}
+
+void OptimizationManager::optimize() {
+ if (!m_isSynchronized) {
+ return;
+ }
+
+ Q_ASSERT(WalletAdapter::instance().isOpen());
+ if (Settings::instance().isTrackingMode()) {
+ return;
+ }
+
+ size_t fusionReadyCount = WalletAdapter::instance().estimateFusion(CurrencyAdapter::instance().getMinimumFee());
+ const size_t MAX_FUSION_OUTPUT_COUNT = 4;
+ const quint64 mixin = Settings::instance().getOptimizationMixin();
+ size_t estimatedFusionInputsCount = CurrencyAdapter::instance().getCurrency().getApproximateMaximumInputCount(CurrencyAdapter::instance().getCurrency().fusionTxMaxSize(), MAX_FUSION_OUTPUT_COUNT, mixin);
+ if (estimatedFusionInputsCount < CurrencyAdapter::instance().getCurrency().fusionTxMinInputCount()) {
+ // Mixin is too big
+ return;
+ }
+ std::list fusionInputs = WalletAdapter::instance().getFusionTransfersToSend(Settings::instance().getOptimizationThreshold(), CurrencyAdapter::instance().getCurrency().fusionTxMinInputCount(), estimatedFusionInputsCount);
+ if (fusionInputs.size() < CurrencyAdapter::instance().getCurrency().fusionTxMinInputCount()) {
+ //nothing to optimize
+ return;
+ }
+ quint64 amount = 0;
+ WalletAdapter::instance().sendFusionTransaction(fusionInputs, 0, "", mixin);
+}
+
+void OptimizationManager::ensureStarted() {
+ if (m_optimizationTimerId != -1) {
+ if (m_currentOptimizationInterval == Settings::instance().getOptimizationInterval()) {
+ return;
+ }
+ }
+
+ optimize();
+ m_currentOptimizationInterval = Settings::instance().getOptimizationInterval();
+ m_optimizationTimerId = startTimer(m_currentOptimizationInterval);
+}
+
+void OptimizationManager::ensureStopped() {
+ if (m_optimizationTimerId == -1) {
+ return;
+ }
+
+ killTimer(m_optimizationTimerId);
+ m_currentOptimizationInterval = 0;
+ m_optimizationTimerId = -1;
+}
+
+}
diff --git a/src/OptimizationManager.h b/src/OptimizationManager.h
new file mode 100644
index 000000000..39441d1dc
--- /dev/null
+++ b/src/OptimizationManager.h
@@ -0,0 +1,59 @@
+// Copyright (c) 2015-2017, The Bytecoin developers
+// Copyright (c) 2018, The Karbo developers
+//
+// This file is part of Karbovanets.
+//
+// Karbovanets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Karbovanets is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with Karbovanets. If not, see .
+
+#pragma once
+
+#include
+
+#include "CryptoNoteWrapper.h"
+#include "CurrencyAdapter.h"
+#include "WalletAdapter.h"
+
+namespace WalletGui {
+
+class OptimizationManager : public QObject {
+ Q_OBJECT
+ Q_DISABLE_COPY(OptimizationManager)
+
+public:
+ OptimizationManager(QObject *_parent);
+ ~OptimizationManager();
+
+ void checkOptimization();
+
+ Q_SLOT void walletOpened();
+ Q_SLOT void walletClosed();
+ Q_SLOT void synchronizationProgressUpdated();
+ Q_SLOT void synchronizationCompleted();
+
+protected:
+ virtual void timerEvent(QTimerEvent* _event);
+
+private:
+ int m_checkTimerId;
+ int m_optimizationTimerId;
+ quint64 m_currentOptimizationInterval;
+ bool m_isSynchronized;
+
+ void optimize();
+ void ensureStarted();
+ void ensureStopped();
+
+};
+
+}
diff --git a/src/Settings.cpp b/src/Settings.cpp
index 3754f8817..3ec3b5ca8 100644
--- a/src/Settings.cpp
+++ b/src/Settings.cpp
@@ -6,6 +6,7 @@
#include
#include
+#include
#include
#include
#include
@@ -25,9 +26,20 @@ Q_DECL_CONSTEXPR char OPTION_CONNECTION[] = "connectionMode";
Q_DECL_CONSTEXPR char OPTION_RPCNODES[] = "remoteNodes";
Q_DECL_CONSTEXPR char OPTION_DAEMON_PORT[] = "daemonPort";
Q_DECL_CONSTEXPR char OPTION_REMOTE_NODE[] = "remoteNode";
-Q_DECL_CONSTEXPR char OPTION_CURRENT_POOL[] = "currentPool";
const char OPTION_WALLET_THEME[] = "theme";
+const char OPTION_WALLET_OPTIMIZATION[] = "optimization";
+const char OPTION_WALLET_OPTIMIZATION_ENABLED[] = "enabled";
+const char OPTION_WALLET_OPTIMIZATION_TIME_SET_MANUALLY[] = "useCustomTime";
+const char OPTION_WALLET_OPTIMIZATION_START_TIME[] = "startTime";
+const char OPTION_WALLET_OPTIMIZATION_STOP_TIME[] = "stopTime";
+const char OPTION_WALLET_OPTIMIZATION_INTERVAL[] = "interval";
+const char OPTION_WALLET_OPTIMIZATION_THRESHOLD[] = "target";
+const char OPTION_WALLET_OPTIMIZATION_MIXIN[] = "mixin";
+const quint64 DEFAULT_OPTIMIZATION_PERIOD = 1000 * 60 * 30; // 30 minutes
+const quint64 DEFAULT_OPTIMIZATION_THRESHOLD = 10000000000000;
+const quint64 DEFAULT_OPTIMIZATION_MIXIN = 3;
+
Settings& Settings::instance() {
static Settings inst;
return inst;
@@ -245,14 +257,6 @@ QString Settings::getCurrentRemoteNode() const {
return remotenode;
}
-QString Settings::getCurrentPool() const {
- QString pool;
- if (m_settings.contains(OPTION_CURRENT_POOL)) {
- pool = m_settings.value(OPTION_CURRENT_POOL).toString();
- }
- return pool;
-}
-
bool Settings::isStartOnLoginEnabled() const {
bool res = false;
#ifdef Q_OS_MAC
@@ -300,6 +304,95 @@ bool Settings::isCloseToTrayEnabled() const {
}
#endif
+bool Settings::isOptimizationEnabled() const {
+ if (!m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ return false;
+ }
+
+ QJsonObject optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ return optimizationObject.contains(OPTION_WALLET_OPTIMIZATION_ENABLED) ? optimizationObject.value(OPTION_WALLET_OPTIMIZATION_ENABLED).toBool() : false;
+}
+
+bool Settings::isOptimizationTimeSetManually() const {
+ if (!m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ return false;
+ }
+
+ QJsonObject optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ if (!optimizationObject.contains(OPTION_WALLET_OPTIMIZATION_TIME_SET_MANUALLY)) {
+ return false;
+ }
+
+ return optimizationObject.value(OPTION_WALLET_OPTIMIZATION_TIME_SET_MANUALLY).toBool();
+}
+
+QTime Settings::getOptimizationStartTime() const {
+ if (!m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ return QTime(0, 0);
+ }
+
+ QJsonObject optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ if (!optimizationObject.contains(OPTION_WALLET_OPTIMIZATION_START_TIME)) {
+ return QTime(0, 0);
+ }
+
+ QString timeString = optimizationObject.value(OPTION_WALLET_OPTIMIZATION_START_TIME).toString();
+ return QTime::fromString(timeString, Qt::ISODate);
+}
+
+QTime Settings::getOptimizationStopTime() const {
+ if (!m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ return QTime(0, 0);
+ }
+
+ QJsonObject optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ if (!optimizationObject.contains(OPTION_WALLET_OPTIMIZATION_STOP_TIME)) {
+ return QTime(0, 0);
+ }
+
+ QString timeString = optimizationObject.value(OPTION_WALLET_OPTIMIZATION_STOP_TIME).toString();
+ return QTime::fromString(timeString, Qt::ISODate);
+}
+
+quint64 Settings::getOptimizationInterval() const {
+ if (!m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ return DEFAULT_OPTIMIZATION_PERIOD;
+ }
+
+ QJsonObject optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ if (!optimizationObject.contains(OPTION_WALLET_OPTIMIZATION_INTERVAL)) {
+ return DEFAULT_OPTIMIZATION_PERIOD;
+ }
+
+ return optimizationObject.value(OPTION_WALLET_OPTIMIZATION_INTERVAL).toString().toULongLong();
+}
+
+quint64 Settings::getOptimizationThreshold() const {
+ if (!m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ return DEFAULT_OPTIMIZATION_THRESHOLD;
+ }
+
+ QJsonObject optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ if (!optimizationObject.contains(OPTION_WALLET_OPTIMIZATION_THRESHOLD)) {
+ return DEFAULT_OPTIMIZATION_THRESHOLD;
+ }
+
+ return optimizationObject.value(OPTION_WALLET_OPTIMIZATION_THRESHOLD).toString().toULongLong();
+}
+
+quint64 Settings::getOptimizationMixin() const {
+ if (!m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ return DEFAULT_OPTIMIZATION_MIXIN;
+ }
+
+ QJsonObject optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ if (!optimizationObject.contains(OPTION_WALLET_OPTIMIZATION_MIXIN)) {
+ return DEFAULT_OPTIMIZATION_MIXIN;
+ }
+
+ return optimizationObject.value(OPTION_WALLET_OPTIMIZATION_MIXIN).toString().toULongLong();
+}
+
void Settings::setWalletFile(const QString& _file) {
if (_file.endsWith(".wallet") || _file.endsWith(".keys")) {
m_settings.insert("walletFile", _file);
@@ -461,6 +554,125 @@ void Settings::setCloseToTrayEnabled(bool _enable) {
}
#endif
+void Settings::setOptimizationEnabled(bool _enable) {
+ if (_enable == isOptimizationEnabled()) {
+ return;
+ }
+
+ {
+ QJsonObject optimizationObject;
+ if (m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ }
+
+ optimizationObject.insert(OPTION_WALLET_OPTIMIZATION_ENABLED, _enable);
+ m_settings.insert(OPTION_WALLET_OPTIMIZATION, optimizationObject);
+ saveSettings();
+ }
+}
+
+void Settings::setOptimizationTimeSetManually(bool _enable) {
+ if (_enable == isOptimizationTimeSetManually()) {
+ return;
+ }
+
+ {
+ QJsonObject optimizationObject;
+ if (m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ }
+
+ optimizationObject.insert(OPTION_WALLET_OPTIMIZATION_TIME_SET_MANUALLY, _enable);
+ m_settings.insert(OPTION_WALLET_OPTIMIZATION, optimizationObject);
+ saveSettings();
+ }
+}
+
+void Settings::setOptimizationStartTime(const QTime& _startTime) {
+ if (_startTime == getOptimizationStartTime()) {
+ return;
+ }
+
+ {
+ QJsonObject optimizationObject;
+ if (m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ }
+
+ optimizationObject.insert(OPTION_WALLET_OPTIMIZATION_START_TIME, _startTime.toString(Qt::ISODate));
+ m_settings.insert(OPTION_WALLET_OPTIMIZATION, optimizationObject);
+ saveSettings();
+ }
+}
+
+void Settings::setOptimizationStopTime(const QTime& _stopTime) {
+ if (_stopTime == getOptimizationStopTime()) {
+ return;
+ }
+
+ {
+ QJsonObject optimizationObject;
+ if (m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ }
+
+ optimizationObject.insert(OPTION_WALLET_OPTIMIZATION_STOP_TIME, _stopTime.toString(Qt::ISODate));
+ m_settings.insert(OPTION_WALLET_OPTIMIZATION, optimizationObject);
+ saveSettings();
+ }
+}
+
+void Settings::setOptimizationInterval(quint64 _interval) {
+ if (_interval == getOptimizationInterval()) {
+ return;
+ }
+
+ {
+ QJsonObject optimizationObject;
+ if (m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ }
+
+ optimizationObject.insert(OPTION_WALLET_OPTIMIZATION_INTERVAL, QString::number(_interval));
+ m_settings.insert(OPTION_WALLET_OPTIMIZATION, optimizationObject);
+ saveSettings();
+ }
+}
+
+void Settings::setOptimizationThreshold(quint64 _threshold) {
+ if (_threshold == getOptimizationThreshold()) {
+ return;
+ }
+
+ {
+ QJsonObject optimizationObject;
+ if (m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ }
+
+ optimizationObject.insert(OPTION_WALLET_OPTIMIZATION_THRESHOLD, QString::number(_threshold));
+ m_settings.insert(OPTION_WALLET_OPTIMIZATION, optimizationObject);
+ saveSettings();
+ }
+}
+
+void Settings::setOptimizationMixin(quint64 _mixin) {
+ if (_mixin == getOptimizationMixin()) {
+ return;
+ }
+
+ {
+ QJsonObject optimizationObject;
+ if (m_settings.contains(OPTION_WALLET_OPTIMIZATION)) {
+ optimizationObject = m_settings.value(OPTION_WALLET_OPTIMIZATION).toObject();
+ }
+
+ optimizationObject.insert(OPTION_WALLET_OPTIMIZATION_MIXIN, QString::number(_mixin));
+ m_settings.insert(OPTION_WALLET_OPTIMIZATION, optimizationObject);
+ saveSettings();
+ }
+}
+
void Settings::saveSettings() const {
QFile cfgFile(getDataDir().absoluteFilePath(QCoreApplication::applicationName() + ".cfg"));
if (cfgFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
diff --git a/src/Settings.h b/src/Settings.h
index 948e4ea97..5777be13a 100644
--- a/src/Settings.h
+++ b/src/Settings.h
@@ -48,6 +48,14 @@ class Settings : public QObject {
QString getCurrentPool() const;
QString getCurrentTheme() const;
+ bool isOptimizationEnabled() const;
+ bool isOptimizationTimeSetManually() const;
+ QTime getOptimizationStartTime() const;
+ QTime getOptimizationStopTime() const;
+ quint64 getOptimizationInterval() const;
+ quint64 getOptimizationThreshold() const;
+ quint64 getOptimizationMixin() const;
+
bool isEncrypted() const;
bool isStartOnLoginEnabled() const;
bool isTrackingMode() const;
@@ -72,6 +80,14 @@ class Settings : public QObject {
void setCloseToTrayEnabled(bool _enable);
#endif
+ void setOptimizationEnabled(bool _enable);
+ void setOptimizationTimeSetManually(bool _enable);
+ void setOptimizationStartTime(const QTime& _startTime);
+ void setOptimizationStopTime(const QTime& _stopTime);
+ void setOptimizationInterval(quint64 _interval);
+ void setOptimizationThreshold(quint64 _threshold);
+ void setOptimizationMixin(quint64 _mixin);
+
private:
QJsonObject m_settings;
QString m_addressBookFile;
diff --git a/src/WalletAdapter.cpp b/src/WalletAdapter.cpp
index ea8549d6e..8a7fadf95 100644
--- a/src/WalletAdapter.cpp
+++ b/src/WalletAdapter.cpp
@@ -360,6 +360,35 @@ void WalletAdapter::sweepDust(const std::vectorestimateFusion(_threshold);
+ } catch (std::system_error&) {
+ return 0;
+ }
+}
+
+std::list WalletAdapter::getFusionTransfersToSend(quint64 _threshold, size_t _min_input_count, size_t _max_input_count) {
+ Q_CHECK_PTR(m_wallet);
+ try {
+ return m_wallet->selectFusionTransfersToSend(_threshold, _min_input_count, _max_input_count);
+ } catch (std::system_error&) {
+ return {};
+ }
+}
+
+void WalletAdapter::sendFusionTransaction(const std::list& _fusion_inputs, quint64 _fee, const QString& _extra, quint64 _mixin) {
+ Q_CHECK_PTR(m_wallet);
+ try {
+ lock();
+ m_wallet->sendFusionTransaction(_fusion_inputs, _fee, _extra.toStdString(), _mixin, 0);
+ Q_EMIT walletStateChangedSignal(tr("Optimizing wallet"));
+ } catch (std::system_error&) {
+ unlock();
+ }
+}
+
bool WalletAdapter::changePassword(const QString& _oldPassword, const QString& _newPassword) {
Q_CHECK_PTR(m_wallet);
try {
diff --git a/src/WalletAdapter.h b/src/WalletAdapter.h
index fdfde9fb0..d6c6517b1 100644
--- a/src/WalletAdapter.h
+++ b/src/WalletAdapter.h
@@ -11,10 +11,12 @@
#include
#include
+#include
#include
#include
#include
+#include
namespace WalletGui {
@@ -51,6 +53,10 @@ class WalletAdapter : public QObject, public CryptoNote::IWalletLegacyObserver {
void setWalletFile(const QString& _path);
Crypto::SecretKey getTxKey(Crypto::Hash& txid);
+ quint64 estimateFusion(quint64 _threshold);
+ std::list getFusionTransfersToSend(quint64 _threshold, size_t _min_input_count, size_t _max_input_count);
+ void sendFusionTransaction(const std::list& _fusion_inputs, quint64 _fee, const QString& _extra, quint64 _mixin);
+
void initCompleted(std::error_code _result) Q_DECL_OVERRIDE;
void saveCompleted(std::error_code _result) Q_DECL_OVERRIDE;
void synchronizationProgressUpdated(uint32_t _current, uint32_t _total) Q_DECL_OVERRIDE;
diff --git a/src/gui/ConnectionSettings.cpp b/src/gui/ConnectionSettings.cpp
index 36a1fc8bb..5fe4d183c 100644
--- a/src/gui/ConnectionSettings.cpp
+++ b/src/gui/ConnectionSettings.cpp
@@ -10,8 +10,6 @@
#include "NodeModel.h"
#include "Settings.h"
-#include
-
namespace Ui {
class ConnectionSettingsDialog;
}
diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp
index 25641af12..112aff784 100644
--- a/src/gui/MainWindow.cpp
+++ b/src/gui/MainWindow.cpp
@@ -27,6 +27,7 @@
#include "AddressBookModel.h"
#include "ChangePasswordDialog.h"
#include "ConnectionSettings.h"
+#include "OptimizationSettings.h"
#include "PrivateKeysDialog.h"
#include "ExportTrackingKeyDialog.h"
#include "ImportTrackingKeyDialog.h"
@@ -74,7 +75,7 @@ MainWindow& MainWindow::instance() {
}
MainWindow::MainWindow() : QMainWindow(), m_ui(new Ui::MainWindow), m_trayIcon(nullptr), m_tabActionGroup(new QActionGroup(this)),
- m_isAboutToQuit(false), paymentServer(0), maxRecentFiles(10), trayIconMenu(0), toggleHideAction(0) {
+ m_isAboutToQuit(false), paymentServer(0), optimizationManager(nullptr), maxRecentFiles(10), trayIconMenu(0), toggleHideAction(0) {
m_ui->setupUi(this);
m_connectionStateIconLabel = new QPushButton();
m_connectionStateIconLabel->setFlat(true); // Make the button look like a label, but clickable
@@ -87,13 +88,14 @@ MainWindow::MainWindow() : QMainWindow(), m_ui(new Ui::MainWindow), m_trayIcon(n
connectToSignals();
createLanguageMenu();
initUi();
-
walletClosed();
}
MainWindow::~MainWindow() {
delete paymentServer;
paymentServer = 0;
+ delete optimizationManager;
+ optimizationManager = 0;
//if(m_trayIcon) // Hide tray icon, as deleting will let it linger until quit (on Ubuntu)
// m_trayIcon->hide();
#ifdef Q_OS_MAC
@@ -221,6 +223,7 @@ void MainWindow::initUi() {
m_ui->m_closeToTrayAction->deleteLater();
#endif
+ OptimizationManager* optimizationManager = new OptimizationManager(this);
createTrayIconMenu();
}
@@ -535,6 +538,7 @@ void MainWindow::isTrackingMode() {
m_ui->m_openUriAction->setEnabled(false);
m_ui->m_showMnemonicSeedAction->setEnabled(false);
m_ui->m_sweepUnmixableAction->setEnabled(false);
+ m_ui->m_optimizationAction->setEnabled(false);
m_trackingModeIconLabel->show();
}
@@ -676,7 +680,6 @@ void MainWindow::openConnectionSettings() {
dlg.setRemoteNode();
dlg.setLocalDaemonPort();
if (dlg.exec() == QDialog::Accepted) {
-
QString connection = dlg.setConnectionMode();
Settings::instance().setConnection(connection);
@@ -690,6 +693,15 @@ void MainWindow::openConnectionSettings() {
}
}
+void MainWindow::openOptimizationSettings() {
+ OptimizationSettingsDialog dlg(&MainWindow::instance());
+ dlg.exec();
+
+// if (dlg.exec() == QDialog::Accepted) {
+// optimizationManager->checkOptimization();
+// }
+}
+
void MainWindow::showStatusInfo() {
InfoDialog dlg(this);
dlg.exec();
@@ -938,6 +950,7 @@ void MainWindow::walletOpened(bool _error, const QString& _error_text) {
m_ui->m_resetAction->setEnabled(true);
m_ui->m_openUriAction->setEnabled(true);
m_ui->m_sweepUnmixableAction->setEnabled(true);
+ m_ui->m_optimizationAction->setEnabled(true);
m_ui->m_signMessageAction->setEnabled(true);
m_ui->m_verifySignedMessageAction->setEnabled(true);
if(WalletAdapter::instance().isDeterministic()) {
@@ -980,6 +993,7 @@ void MainWindow::walletClosed() {
m_ui->m_resetAction->setEnabled(false);
m_ui->m_showMnemonicSeedAction->setEnabled(false);
m_ui->m_sweepUnmixableAction->setEnabled(false);
+ m_ui->m_optimizationAction->setEnabled(false);
m_ui->m_signMessageAction->setEnabled(false);
m_ui->m_verifySignedMessageAction->setEnabled(false);
m_ui->m_overviewFrame->hide();
diff --git a/src/gui/MainWindow.h b/src/gui/MainWindow.h
index 81da325fa..8a3582200 100644
--- a/src/gui/MainWindow.h
+++ b/src/gui/MainWindow.h
@@ -15,8 +15,10 @@
#include
#include "CommandLineParser.h"
#include "PaymentServer.h"
+#include "OptimizationManager.h"
class QActionGroup;
+class OptimizationManager;
namespace Ui {
class MainWindow;
@@ -49,6 +51,7 @@ private slots:
private:
PaymentServer* paymentServer;
+ OptimizationManager* optimizationManager;
QScopedPointer m_ui;
QPushButton* m_connectionStateIconLabel;
@@ -117,6 +120,7 @@ private slots:
Q_SLOT void showPrivateKeys();
Q_SLOT void DisplayCmdLineHelp();
Q_SLOT void openConnectionSettings();
+ Q_SLOT void openOptimizationSettings();
Q_SLOT void exportTrackingKey();
Q_SLOT void importTrackingKey();
Q_SLOT void signMessage();
diff --git a/src/gui/OptimizationSettings.cpp b/src/gui/OptimizationSettings.cpp
new file mode 100644
index 000000000..d65f2f036
--- /dev/null
+++ b/src/gui/OptimizationSettings.cpp
@@ -0,0 +1,138 @@
+// Copyright (c) 2018 The Karbowanec developers
+// Distributed under the MIT/X11 software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#include
+
+#include "ui_optimizationsettingsdialog.h"
+#include "OptimizationSettings.h"
+#include "CurrencyAdapter.h"
+#include "WalletAdapter.h"
+#include "MainWindow.h"
+#include "Settings.h"
+
+namespace Ui {
+class OptimizationSettingsDialog;
+}
+
+namespace WalletGui {
+
+namespace {
+
+const int MIN_THRESHOLD_ORDER_VALUE = 0;
+const int MAX_THRESHOLD_ORDER_VALUE = 4;
+const int MIN_MIXIN_VALUE = 0;
+const int MAX_MIXIN_VALUE = 5;
+const quint64 MINUTE_MSECS = 1000 * 60;
+const quint64 HOUR_MSECS = MINUTE_MSECS * 60;
+
+}
+
+OptimizationSettingsDialog::OptimizationSettingsDialog(QWidget* _parent) : QDialog(_parent),
+ m_ui(new Ui::OptimizationSettingsDialog) {
+ m_ui->setupUi(this);
+ m_ui->m_thresholdSlider->setRange(MIN_THRESHOLD_ORDER_VALUE, MAX_THRESHOLD_ORDER_VALUE);
+ m_ui->m_mixinSpin->setRange(MIN_MIXIN_VALUE, MAX_MIXIN_VALUE);
+ m_ui->m_mixinSlider->setRange(MIN_MIXIN_VALUE, MAX_MIXIN_VALUE);
+ initOptimizationPeriods();
+ m_currencyMultiplier = CurrencyAdapter::instance().parseAmount("1");
+ initThresholdCombo();
+ load();
+}
+
+OptimizationSettingsDialog::~OptimizationSettingsDialog() {
+}
+
+void OptimizationSettingsDialog::load() {
+ m_ui->m_enableOptimizationCheck->setChecked(Settings::instance().isOptimizationEnabled());
+ m_ui->m_optimizationTimeCheck->setChecked(Settings::instance().isOptimizationTimeSetManually());
+ m_ui->m_startTimeEdit->setTime(Settings::instance().getOptimizationStartTime());
+ m_ui->m_stopTimeEdit->setTime(Settings::instance().getOptimizationStopTime());
+ int index = m_ui->m_periodCombo->findData(Settings::instance().getOptimizationInterval());
+ if (index == -1) {
+ Settings::instance().setOptimizationInterval(1000 * 60 * 30);
+ }
+
+ m_ui->m_periodCombo->setCurrentIndex(m_ui->m_periodCombo->findData(Settings::instance().getOptimizationInterval()));
+ quint64 coinCount = Settings::instance().getOptimizationThreshold() / m_currencyMultiplier;
+ m_ui->m_thresholdSlider->setValue(std::log10(coinCount));
+ m_ui->m_mixinSlider->setValue(Settings::instance().getOptimizationMixin());
+ updateEstimateValue();
+}
+
+void OptimizationSettingsDialog::save() {
+ Settings::instance().setOptimizationEnabled(m_ui->m_enableOptimizationCheck->isChecked());
+ Settings::instance().setOptimizationTimeSetManually(m_ui->m_optimizationTimeCheck->isChecked());
+ Settings::instance().setOptimizationStartTime(m_ui->m_startTimeEdit->time());
+ Settings::instance().setOptimizationStopTime(m_ui->m_stopTimeEdit->time());
+ Settings::instance().setOptimizationInterval(m_ui->m_periodCombo->currentData().value());
+ Settings::instance().setOptimizationThreshold(qPow(10, m_ui->m_thresholdSlider->value()) * m_currencyMultiplier);
+ Settings::instance().setOptimizationMixin(m_ui->m_mixinSlider->value());
+
+ accept();
+}
+
+void OptimizationSettingsDialog::initOptimizationPeriods() {
+ m_ui->m_periodCombo->addItem(tr("30 minutes"), 30 * MINUTE_MSECS);
+ m_ui->m_periodCombo->addItem(tr("1 hour"), HOUR_MSECS);
+ m_ui->m_periodCombo->addItem(tr("1.5 hours"), HOUR_MSECS + 30 * MINUTE_MSECS);
+ m_ui->m_periodCombo->addItem(tr("2 hours"), 2 * HOUR_MSECS);
+ m_ui->m_periodCombo->addItem(tr("2.5 hours"), 2 * HOUR_MSECS + 30 * MINUTE_MSECS);
+ m_ui->m_periodCombo->addItem(tr("3 hours"), 3 * HOUR_MSECS);
+ m_ui->m_periodCombo->addItem(tr("3.5 hours"), 3 * HOUR_MSECS + 30 * MINUTE_MSECS);
+ m_ui->m_periodCombo->addItem(tr("4 hours"), 4 * HOUR_MSECS);
+ m_ui->m_periodCombo->addItem(tr("4.5 hours"), 4 * HOUR_MSECS + 30 * MINUTE_MSECS);
+ m_ui->m_periodCombo->addItem(tr("5 hours"), 5 * HOUR_MSECS);
+ m_ui->m_periodCombo->addItem(tr("5.5 hours"), 5 * HOUR_MSECS + 30 * MINUTE_MSECS);
+ m_ui->m_periodCombo->addItem(tr("6 hours"), 6 * HOUR_MSECS);
+}
+
+void OptimizationSettingsDialog::initThresholdCombo() {
+ for (int i = MIN_THRESHOLD_ORDER_VALUE; i <= MAX_THRESHOLD_ORDER_VALUE; ++i) {
+ int value = qPow(10, i);
+ m_ui->m_thresholdCombo->addItem(QString("%1 %2").arg(value).arg(CurrencyAdapter::instance().getCurrencyTicker().toUpper()), i);
+ }
+}
+
+void OptimizationSettingsDialog::updateEstimateValue() {
+ quintptr estimate = 0;
+ if (WalletAdapter::instance().isOpen()) {
+ estimate = WalletAdapter::instance().estimateFusion(qPow(10, m_ui->m_thresholdSlider->value()) * m_currencyMultiplier);
+ if (estimate == 0) {
+ m_ui->m_nonOptimizedOutputsLabel->hide();
+ m_ui->m_nonOptimizedOutputsTextLabel->setText(tr("Wallet is currently optimized for this target"));
+ } else {
+ m_ui->m_nonOptimizedOutputsLabel->show();
+ m_ui->m_nonOptimizedOutputsLabel->setText(QString::number(estimate));
+ m_ui->m_nonOptimizedOutputsTextLabel->setText(tr(" outputs below selected target"));
+ }
+ } else {
+ m_ui->m_nonOptimizedOutputsLabel->hide();
+ m_ui->m_nonOptimizedOutputsTextLabel->setText(tr("Wallet is closed"));
+ }
+}
+
+void OptimizationSettingsDialog::thresholdChanged(int _value) {
+ if (m_ui->m_thresholdCombo->currentIndex() != _value) {
+ m_ui->m_thresholdCombo->setCurrentIndex(_value);
+ }
+
+ if (m_ui->m_thresholdSlider->value() != _value) {
+ m_ui->m_thresholdSlider->setValue(_value);
+ }
+
+ updateEstimateValue();
+}
+
+void OptimizationSettingsDialog::mixinChanged(int _mixin) {
+ if (m_ui->m_mixinSlider->value() != _mixin) {
+ m_ui->m_mixinSlider->setValue(_mixin);
+ }
+
+ if (m_ui->m_mixinSpin->value() != _mixin) {
+ m_ui->m_mixinSpin->setValue(_mixin);
+ }
+}
+
+}
+
diff --git a/src/gui/OptimizationSettings.h b/src/gui/OptimizationSettings.h
new file mode 100644
index 000000000..16fa69261
--- /dev/null
+++ b/src/gui/OptimizationSettings.h
@@ -0,0 +1,43 @@
+// Copyright (c) 2018 The Karbowanec developers
+// Distributed under the MIT/X11 software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#pragma once
+
+#include
+
+namespace Ui {
+class OptimizationSettingsDialog;
+}
+
+namespace WalletGui {
+
+//class NodeModel;
+
+class OptimizationSettingsDialog : public QDialog {
+ Q_OBJECT
+ Q_DISABLE_COPY(OptimizationSettingsDialog)
+
+public:
+ OptimizationSettingsDialog(QWidget* _parent);
+ ~OptimizationSettingsDialog();
+
+ void load();
+
+private:
+ QScopedPointer m_ui;
+
+ quint64 m_currencyMultiplier;
+
+ void initOptimizationPeriods();
+ void initThresholdCombo();
+ void updateEstimateValue();
+
+ Q_SLOT void thresholdChanged(int _value);
+ Q_SLOT void mixinChanged(int _mixin);
+ Q_SLOT void save();
+
+};
+
+}
+
diff --git a/src/gui/ui/mainwindow.ui b/src/gui/ui/mainwindow.ui
index dc0320c97..5b834d376 100644
--- a/src/gui/ui/mainwindow.ui
+++ b/src/gui/ui/mainwindow.ui
@@ -230,6 +230,7 @@
+
@@ -609,6 +610,11 @@
Verify signed message
+
+
+ Optimization
+
+
@@ -1154,6 +1160,22 @@
+
+ m_optimizationAction
+ triggered()
+ MainWindow
+ openOptimizationSettings()
+
+
+ -1
+ -1
+
+
+ 489
+ 274
+
+
+
createWallet()
@@ -1169,6 +1191,7 @@
resetWallet()
showPrivateKeys()
openConnectionSettings()
+ openOptimizationSettings()
showStatusInfo()
sweepUnmixable()
diff --git a/src/gui/ui/optimizationsettingsdialog.ui b/src/gui/ui/optimizationsettingsdialog.ui
new file mode 100644
index 000000000..e115abd2c
--- /dev/null
+++ b/src/gui/ui/optimizationsettingsdialog.ui
@@ -0,0 +1,649 @@
+
+
+ OptimizationSettingsDialog
+
+
+ Qt::ApplicationModal
+
+
+
+ 0
+ 0
+ 757
+ 516
+
+
+
+ Wallet optimization settings
+
+
+ -
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
-
+
+
+ Run background wallet optimization
+
+
+
+ -
+
+
+ (Recommended)
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ true
+
+
+
+ 75
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 5
+
+
-
+
+
+ Optimization target
+
+
+ 0
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 20
+
+
+
+
+ -
+
+
+ 6
+
+
+ 1
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 15
+
+
+
+
+ -
+
+
+ QAbstractSpinBox::UpDownArrows
+
+
+
+ -
+
+
+ Anonymity level
+
+
+ 0
+
+
+
+ -
+
+
+ 1
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 0
+
+
+
+
+ -
+
+
-
+
+
+ 0
+
+
+
+ -
+
+
+ outputs below selected target
+
+
+
+
+
+
+
+
+ -
+
+
+ 10
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 5
+
+
-
+
+
+ From
+
+
+
+ -
+
+
+ -
+
+
+ false
+
+
+ HH:mm
+
+
+
+ -
+
+
+ To
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 0
+
+
+
+
+ -
+
+
+ Send optimization transactions each
+
+
+ 0
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 0
+
+
+
+
+ -
+
+
+ false
+
+
+ HH:mm
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 10
+
+
+
+
+ -
+
+
+ Specific time for optimization transactions
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 10
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Wallet optimization is a background task performed in order to aggregate transactions outputs that are below optimization target into bigger ones. It allows to send larger amounts of KRB within one transaction. Wallet optimization is free for all users but takes some time.
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Cancel
+
+
+
+ -
+
+
+ Save
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+ optimizationCancelButton
+ clicked()
+ OptimizationSettingsDialog
+ reject()
+
+
+ 549
+ 259
+
+
+ 338
+ 140
+
+
+
+
+ optimizationSaveButton
+ clicked()
+ OptimizationSettingsDialog
+ save()
+
+
+ 630
+ 259
+
+
+ 338
+ 140
+
+
+
+
+ m_enableOptimizationCheck
+ toggled(bool)
+ widget1
+ setEnabled(bool)
+
+
+ 147
+ 47
+
+
+ 176
+ 204
+
+
+
+
+ m_optimizationTimeCheck
+ toggled(bool)
+ m_startTimeEdit
+ setEnabled(bool)
+
+
+ 543
+ 179
+
+
+ 501
+ 207
+
+
+
+
+ m_optimizationTimeCheck
+ toggled(bool)
+ m_stopTimeEdit
+ setEnabled(bool)
+
+
+ 543
+ 179
+
+
+ 643
+ 207
+
+
+
+
+ m_enableOptimizationCheck
+ toggled(bool)
+ widget2
+ setEnabled(bool)
+
+
+ 158
+ 48
+
+
+ 556
+ 197
+
+
+
+
+ m_thresholdSlider
+ valueChanged(int)
+ OptimizationSettingsDialog
+ thresholdChanged(int)
+
+
+ 116
+ 139
+
+
+ 355
+ 194
+
+
+
+
+ m_mixinSlider
+ valueChanged(int)
+ OptimizationSettingsDialog
+ mixinChanged(int)
+
+
+ 116
+ 240
+
+
+ 367
+ 236
+
+
+
+
+
+ thresholdChanged(int)
+ mixinChanged(int)
+ save()
+
+
diff --git a/src/gui/ui/sendframe.ui b/src/gui/ui/sendframe.ui
index dce1624c3..d8c4a4195 100644
--- a/src/gui/ui/sendframe.ui
+++ b/src/gui/ui/sendframe.ui
@@ -205,7 +205,7 @@
- 2
+ 0
19
diff --git a/src/languages/ar.qm b/src/languages/ar.qm
index fb1e5c62c..59d0645d4 100644
Binary files a/src/languages/ar.qm and b/src/languages/ar.qm differ
diff --git a/src/languages/ar.ts b/src/languages/ar.ts
index 45e0b710f..b032f5c35 100644
--- a/src/languages/ar.ts
+++ b/src/languages/ar.ts
@@ -551,7 +551,7 @@ Please wait...
-
+
المحافظ الأخيرة
@@ -561,134 +561,139 @@ Please wait...
الإعدادات
-
-
+
+
مساعدة
-
+
محفظة
-
+
شريط الأدوات
-
+
شريط أدوات الحساب
-
+
لمحة عامة
-
+
إرسال
-
+
استلام
-
+
المعاملات
-
+
خروج
-
+
كونترول + Q
-
+
جهات الاتصال
-
+
إنشاء محفظة
-
+
فتح محفظة
-
+
تشفير المحفظة
-
-
+
+
تغيير كلمة المرور
-
+
حول
-
+
حول Qt
-
+
نسخ المحفظة
-
+
البدء بتسجيل الدخول إلى النظام
-
+
تصغير إلى شريط الأدوات
-
+
بالقرب من شريط الأدوات
-
+
استيراد المفتاح الخاص
-
+
-
+ العنوان
-
+
+
+
+
+ الاقوي
+
تعدين
-
-
+
+
إعادة تعيين المحفظة
@@ -702,62 +707,62 @@ Please wait...
تغيير اللغة
-
+
تصدير المفتاح الخاص
-
+
F1
-
+
اتصال
-
+
فتح طلب الدفع
-
+
تصدير مفتاح التتبع
-
+
استيراد مفتاح التتبع
-
+
إغلاق المحفظة
-
+
معلومات
-
+
فتح ملف السجل
-
+
عرض كلمة استرجاع المحفظة
-
+
استعاد ة من كلمة استرجاع المحفظة
-
+
إنشاء نظام عدم اشتقاق مفاتيح
@@ -766,7 +771,7 @@ Please wait...
بدء التعدين الجماعي تلقائياً
-
+
زر الدفعات القديمة
@@ -1003,6 +1008,85 @@ Please wait...
موافق
+
+ OptimizationSettingsDialog
+
+
+
+ إعدادات تحسين المحفظة
+
+
+
+
+ تشغيل الخلفية المحفظة الأمثل
+
+
+
+
+ (موصى به)
+
+
+
+
+ هدف التحسين
+
+
+
+
+ مستوى سرية الهوية
+
+
+
+
+ 0
+
+
+
+
+ النواتج دون الهدف المحدد
+
+
+
+
+ من
+
+
+
+
+
+
+
+
+
+
+ إلى
+
+
+
+
+ الوقت المحدد لمعاملات التحسين
+
+
+
+
+
+
+
+
+
+ إرسال المعاملات الأمثل لكل منهما
+
+
+
+
+
+
+
+
+
+ حفظ
+
+
OverviewFrame
@@ -1117,7 +1201,7 @@ Please wait...
QObject
-
+
مساعدة
@@ -1404,7 +1488,7 @@ Do you want to go to download page?
-
+ العنوان
@@ -1873,113 +1957,113 @@ Do you want to go to download page?
WalletGui::MainWindow
-
+
عرض أو إخفاء النافذة الرئيسية
-
-
+
+
ملف محفظة جديد
-
-
-
+
+
+
المحافظ (*. wallet)
-
+
فتح ملف .wallet/.keys
-
+
المحفظة (* .wallet * .keys)
-
+
امتداد ملف محفظة خاطئ
-
+
-
+
مفاتيح المحفظة غير صحيحة
-
+
المفاتيح الخاصة التي أدخلتها غير صالحة.
-
+
مفتاح التتبع غير صالح
-
+
مفتاح التتبع الذي أدخلته غير صالح.
-
-
-
-
+
+
+
+
المفتاح غير صالح.
-
+
مفتاح الإنفاق العام الذي أدخلته غير صالح.
-
+
مفتاح العرض العام الذي أدخلته غير صالح.
-
+
مفتاح الإنفاق الخاص الذي أدخلته غير صالح.
-
+
مفتاح العرض الخاص الذي أدخلته غير صالح.
-
+
كلمة استرجاع المحفظة غير صحيحة
-
+
لابد أن هناك خطأ في كلمة استرجاع المحفظة. تأكد من إدخالها بشكل صحيح.
-
+
%1 تم تغيير اللغة
-
+
تم تغيير اللغة
-
+
@@ -1988,58 +2072,58 @@ Do you want to go to download page?
سيتم تغيير اللغة بعد إعادة تشغيل المحفظة.
-
+
يمكن العثور على مزيد من المعلومات على www.karbowanec.com في قسم الوثائق.
-
+
تم تغيير إعدادات الاتصال
-
+
سيتم تغيير وضع الاتصال بعد إعادة تشغيل المحفظة.
-
+
حفظ المحفظة في...
-
+
تحذير
-
+
سيتم إعادة تعيين محفظتك، واستعادتها من البلوكتشين. هل أنت متأكد من ذلك؟
-
+
خطأ في المحفظة
-
+
المحفظة
-
+
مشفر
-
+
غير مشفر
-
+
٪ n اتصال نشط
@@ -2051,43 +2135,43 @@ Are you sure?
-
+
التزامن جارٍ
-
+
غير متزامن
-
+
متزامن
-
-
+
+
محفظة 1% Karbo
-
+
تقريباً محفظة 1%
-
+
تتبع المحفظة. الإنفاق غير متوفر
-
+
متصل من خلال وحدة بعيدة
-
+
عرض / إخفاء
@@ -2135,6 +2219,84 @@ Are you sure?
رباط الوحدة
+
+ WalletGui::OptimizationSettingsDialog
+
+
+
+ 30 دقيقة
+
+
+
+
+ ساعة واحدة
+
+
+
+
+ 1.5 ساعة
+
+
+
+
+ 2 ساعة
+
+
+
+
+ 2.5 ساعة
+
+
+
+
+ 3 ساعات
+
+
+
+
+ 3.5 ساعة
+
+
+
+
+ 4 ساعات
+
+
+
+
+ 4.5 ساعة
+
+
+
+
+ 5 ساعات
+
+
+
+
+ 5.5 ساعة
+
+
+
+
+ 6 ساعات
+
+
+
+
+ المحفظة محسنة حاليًا لهذا الهدف
+
+
+
+
+ النواتج دون الهدف المحدد
+
+
+
+
+ المحفظة مغلقة
+
+
WalletGui::PoolModel
@@ -2593,183 +2755,188 @@ when the wallet is synchronized
مسح القيمة الكسرية غير قابلة للمزج
-
-
+
+
+
+
+
+
+
جاهز
-
+
مزامنة
-
+
لم يتم تهيئة العنصر
-
+
كلمة المرور خاطئة
-
+
تمت تهيئة العنصر من قبل
-
+
حدث خطأ داخلي
-
+
عدد التوقيعات كبير جداً
-
+
عنوان غير صالح
-
+
حجم المعاملة كبير جداً
-
+
مبلغ خاطئ
-
+
تجاوز الحد المطلوب
-
+
الوجهة فارغة
-
+
لا يمكن إلغاء المعاملة
-
+
المحفظة في حالة خطأ (ربما التحميل أو الحفظ)، حاول مرة أخرى لاحقًا.
-
+
لقد تم إلغاء العملية التي طلبتها.
-
+
لا يمكن تحويل المعاملة.
-
+
إصدار خاطئ
-
+
رسوم المعاملة صغيرة جداً.
-
+
لا يمكن إنشاء مفتاح جديد
-
+
الفهرس خارج النطاق
-
+
العنوان موجود بالفعل
-
+
المحفظة في وضع التتبع
-
+
معلمات خاطئة
-
+
العنصر غير موجود
-
+
المحفظة المطلوبة غير موجودة
-
+
تغيير العنوان مطلوب
-
+
تغيير العنوان غير موجود
-
+
عنوان الوجهة مطلوب
-
+
عنوان الوجهة غير موجود
-
+
صيغة رقم الدفع خاطئة
-
+
صيغة المعاملة الإضافية خاطئة
-
+
خطأ غير معروف
-
+
تحذير: تم استلام آخر بلوك قبل 1% ساعة٪ 2% دقيقة.
-
+
المحفظة متزامنة. الارتفاع:٪ :%1 | الوقت (UTC): %2%3
-
+
كلمة استرجاع المحفظة غير صحيحة
-
+
لابد أن هناك خطأ في كلمة استرجاع المحفظة. تأكد من إدخالها بشكل صحيح.
diff --git a/src/languages/be.qm b/src/languages/be.qm
index db0230d31..41a09de9f 100644
Binary files a/src/languages/be.qm and b/src/languages/be.qm differ
diff --git a/src/languages/be.ts b/src/languages/be.ts
index 9115e9b3d..1316a7275 100644
--- a/src/languages/be.ts
+++ b/src/languages/be.ts
@@ -648,6 +648,10 @@ Please wait...
Праверка падпісанага паведамленні
+
+
+ Аптымізацыя
+
MiningFrame
@@ -861,6 +865,69 @@ Please wait...
Добра
+
+ OptimizationSettingsDialog
+
+
+ Налады аптымізацыі гаманца
+
+
+
+ Выканаць аптымізацыю гаманца ў фонавым рэжыме
+
+
+
+ (Рэкамендуецца)
+
+
+
+ Мэта аптымізацыі
+
+
+
+ Узровень прыватнасці
+
+
+
+ 0
+
+
+
+ выхадаў ніжэй абранай мэты
+
+
+
+ Ад
+
+
+
+
+
+
+
+ да
+
+
+
+ Канкрэтны час для аптымізацыі
+
+
+
+ Адпраўляць аптымізацыйныя транзакцыйі са кожную
+
+
+
+ Адмяніць
+
+
+
+ Захаваць
+
+
+
+
+
+
OverviewFrame
@@ -1865,6 +1932,69 @@ Are you sure?
Адрас узла
+
+ WalletGui::OptimizationSettingsDialog
+
+
+ 30 хвілін
+
+
+
+ 1 гадз.
+
+
+
+ 1,5 гадз.
+
+
+
+ 2 гадз.
+
+
+
+ 2,5 гадз.
+
+
+
+ 3 гадз.
+
+
+
+ 3,5 гадз.
+
+
+
+ 4 гадз.
+
+
+
+ 4,5 гадз.
+
+
+
+ 5 гадз.
+
+
+
+ 5,5 гадз.
+
+
+
+ 6 гадз.
+
+
+
+ Гаманец у цяперашні час аптымізаваны для гэтай мэты
+
+
+
+ выхадаў ніжэй абранай мэты
+
+
+
+ Гаманец зачынены
+
+
WalletGui::PoolModel
@@ -2401,5 +2531,9 @@ when the wallet is synchronized
Аптымізацыя несмешываемых выхадаў
+
+
+ Аптымізацыя гаманца
+
diff --git a/src/languages/de.qm b/src/languages/de.qm
index 39ae5c1cd..ca7cc644f 100644
Binary files a/src/languages/de.qm and b/src/languages/de.qm differ
diff --git a/src/languages/de.ts b/src/languages/de.ts
index aae1d3979..408871e45 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -649,6 +649,10 @@ Bitte warten...
Überprüfen Sie die signierte Nachricht
+
+
+ Optimierung
+
MiningFrame
@@ -866,6 +870,69 @@ Bitte warten...
OK
+
+ OptimizationSettingsDialog
+
+
+ Wallet-Optimierungseinstellungen
+
+
+
+ Führen Hintergrund Optimierung der Brieftasche
+
+
+
+ (Empfohlen)
+
+
+
+ Optimierungsziel
+
+
+
+ Anonymitätsebene
+
+
+
+ 0
+
+
+
+ Ausgänge liegen unter dem ausgewählten Ziel
+
+
+
+ Von
+
+
+
+
+
+
+
+ an
+
+
+
+ Spezifische Zeit für die Optimierung
+
+
+
+ Sende Optimierungstransaktionen jede
+
+
+
+ Abbrechen
+
+
+
+ Speichern
+
+
+
+
+
+
OverviewFrame
@@ -1865,6 +1932,69 @@ Bist du sicher?
Node URL
+
+ WalletGui::OptimizationSettingsDialog
+
+
+ 30 Minuten
+
+
+
+ 1 Stunde
+
+
+
+ 1,5 Stunden
+
+
+
+ 2 Stunden
+
+
+
+ 2,5 Stunden
+
+
+
+ 3 Stunden
+
+
+
+ 3,5 Stunden
+
+
+
+ 4 Stunden
+
+
+
+ 4,5 Stunden
+
+
+
+ 5 Stunden
+
+
+
+ 5,5 Stunden
+
+
+
+ 6 Stunden
+
+
+
+ Die Brieftasche ist derzeit für dieses Ziel optimiert
+
+
+
+ Ausgänge liegen unter dem ausgewählten Ziel
+
+
+
+ Brieftasche ist geschlossen
+
+
WalletGui::PoolModel
@@ -2400,5 +2530,9 @@ Kann keinen neuen Schlüssel generieren
Unvermischbaren Staub ausstreichen
+
+
+ Optimierung der Brieftasche
+
diff --git a/src/languages/es.qm b/src/languages/es.qm
index 58fa70085..f3a58b2d5 100644
Binary files a/src/languages/es.qm and b/src/languages/es.qm differ
diff --git a/src/languages/es.ts b/src/languages/es.ts
index d78c7c684..83f45051c 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -650,6 +650,10 @@ Por favor, espera...
Verificar mensaje firmado
+
+
+ Optimización
+
MiningFrame
@@ -869,6 +873,69 @@ Por favor, espera...
OK
+
+ OptimizationSettingsDialog
+
+
+ Configuración de optimización de cartera
+
+
+
+ Ejecutar la optimización de la cartera en el fondo
+
+
+
+ (Recomendado)
+
+
+
+ Objetivo de optimización
+
+
+
+ Nivel de anonimato
+
+
+
+ 0
+
+
+
+ salidas están por debajo del objetivo seleccionado
+
+
+
+ De
+
+
+
+
+
+
+
+ a
+
+
+
+ Tiempo específico para la optimización
+
+
+
+ Enviar transacciones de optimización cada
+
+
+
+ Cancelar
+
+
+
+ Guardar
+
+
+
+
+
+
OverviewFrame
@@ -1861,6 +1928,69 @@ Are you sure?
Nodo URL
+
+ WalletGui::OptimizationSettingsDialog
+
+
+ 30 minutos
+
+
+
+ 1 hora
+
+
+
+ 1,5 horas
+
+
+
+ 2 horas
+
+
+
+ 2,5 horas
+
+
+
+ 3 horas
+
+
+
+ 3,5 horas
+
+
+
+ 4 horas
+
+
+
+ 4,5 horas
+
+
+
+ 5 horas
+
+
+
+ 5,5 horas
+
+
+
+ 6 horas
+
+
+
+ La cartera está actualmente optimizada para este objetivo
+
+
+
+ salidas están por debajo del objetivo seleccionado
+
+
+
+ La cartera esta cerrada
+
+
WalletGui::PoolModel
@@ -2393,5 +2523,9 @@ cuando la cartera termine de sincronizar
Barrer inigualable
+
+
+ La optimización de la cartera
+
diff --git a/src/languages/fa.qm b/src/languages/fa.qm
index 0918bece6..e2443e5fc 100644
Binary files a/src/languages/fa.qm and b/src/languages/fa.qm differ
diff --git a/src/languages/fa.ts b/src/languages/fa.ts
index bb697ce24..20c5d06da 100644
--- a/src/languages/fa.ts
+++ b/src/languages/fa.ts
@@ -1,6 +1,6 @@
-
+
AboutDialog
@@ -221,10 +221,6 @@
لغو
-
-
- تایید ارسال %1 KRB
-
ConnectionSettingsDialog
@@ -648,6 +644,10 @@ Please wait...
تایید امضا پیام
+
+
+ بهينه سازي
+
MiningFrame
@@ -716,7 +716,7 @@ Please wait...
MnemonicSeedDialog
- کدهای پشتیبان مهم
+ کدهای پشتیبان مهم
@@ -865,6 +865,69 @@ Please wait...
تایید
+
+ OptimizationSettingsDialog
+
+
+ تنظیمات بهینه سازی کیف پول
+
+
+
+ اجرای پسزمینه کیف پول را انجام دهید
+
+
+
+ (توصیه شده)
+
+
+
+ هدف بهینه سازی
+
+
+
+ میزان ناشناس بودن
+
+
+
+ 0
+
+
+
+ خروجی زیر هدف انتخاب شده
+
+
+
+ از طرف
+
+
+
+
+
+
+
+
+
+
+
+ زمان خاص برای معاملات بهینه سازی
+
+
+
+ ارسال هر یک از معاملات بهینه سازی
+
+
+
+ لغو
+
+
+
+ ذخیره
+
+
+
+
+
+
OverviewFrame
@@ -1555,6 +1618,10 @@ Do you want to go to download page?
<html><head/><body><p>آیا مطمینید که میخواهید <strong>sin کربو را بدون شناسه واریز ارسال کنید</strong>?</p></body></html>
+
+
+ تایید ارسال %1 KRB
+
WalletGui::ExportTrackingKeyDialog
@@ -1852,6 +1919,69 @@ Are you sure?
Node URL
+
+ WalletGui::OptimizationSettingsDialog
+
+
+ 30 دقیقه
+
+
+
+ 1 ساعت
+
+
+
+ 1.5 ساعت
+
+
+
+ 2 ساعت
+
+
+
+ 2.5 ساعت
+
+
+
+ 3 ساعت
+
+
+
+ 3.5 ساعت
+
+
+
+ 4 ساعت
+
+
+
+ 4.5 ساعت
+
+
+
+ 5 ساعت
+
+
+
+ 5.5 ساعت
+
+
+
+ 6 ساعت
+
+
+
+ کیف پول در حال حاضر برای این هدف بهینه شده است
+
+
+
+ خروجی زیر هدف انتخاب شده
+
+
+
+ کیف پول بسته است
+
+
WalletGui::PoolModel
@@ -2017,7 +2147,6 @@ when the wallet is synchronized
%n confirmacion
- %n تاییدیه
@@ -2379,5 +2508,9 @@ when the wallet is synchronized
پاکسازی میزان غیرقابل ارسال
+
+
+
+
diff --git a/src/languages/fr.qm b/src/languages/fr.qm
index 070d9e9c9..c8ffa25b6 100644
Binary files a/src/languages/fr.qm and b/src/languages/fr.qm differ
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 100c69028..61cf5dfcd 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -664,6 +664,10 @@ S'il vous plaît, patientez...
Vérifier le message signé
+
+
+ Optimisation
+
MiningFrame
@@ -881,6 +885,69 @@ S'il vous plaît, patientez...
OK
+
+ OptimizationSettingsDialog
+
+
+ Paramètres d'optimisation du portefeuille
+
+
+
+ Exécuter l'optimisation de l'arrière-plan du portefeuille
+
+
+
+ (Conseillé)
+
+
+
+ Cible d'optimisation
+
+
+
+ Niveau d'anonymat
+
+
+
+ 0
+
+
+
+ sorties sont en dessous de la cible sélectionnée
+
+
+
+ De
+
+
+
+
+
+
+
+ à
+
+
+
+ Heure spécifique pour l'optimisation
+
+
+
+ Envoyez des transactions d'optimisation toutes les
+
+
+
+ Annuler
+
+
+
+ Sauvegarder
+
+
+
+
+
+
OverviewFrame
@@ -1873,6 +1940,69 @@ Are you sure?
URL du noeud
+
+ WalletGui::OptimizationSettingsDialog
+
+
+ 30 minutes
+
+
+
+ 1 heure
+
+
+
+ 1,5 heure
+
+
+
+ 2 heures
+
+
+
+ 2,5 heures
+
+
+
+ 3 heures
+
+
+
+ 3,5 heures
+
+
+
+ 4 heures
+
+
+
+ 4,5 heures
+
+
+
+ 5 heures
+
+
+
+ 5,5 heures
+
+
+
+ 6 heures
+
+
+
+ Le portefeuille est actuellement optimisé pour cette cible
+
+
+
+ sorties sont en dessous de la cible sélectionnée
+
+
+
+ Le portefeuille est fermé
+
+
WalletGui::PoolModel
@@ -2404,5 +2534,9 @@ quand le portefeuille aura terminé la synchronisation
Balayer non mélangeable
+
+
+ Optimiser le portefeuille
+
diff --git a/src/languages/hi.qm b/src/languages/hi.qm
index c0bcf3184..40b7f5a53 100644
Binary files a/src/languages/hi.qm and b/src/languages/hi.qm differ
diff --git a/src/languages/hi.ts b/src/languages/hi.ts
index 0650e44b0..1a75fd67f 100644
--- a/src/languages/hi.ts
+++ b/src/languages/hi.ts
@@ -536,7 +536,7 @@ Please wait...
-
+
हाल के वॉलेट
@@ -546,134 +546,139 @@ Please wait...
सेटिंग्स
-
-
+
+
सहायता
-
+
वॉलेट
-
+
टूलबार
-
+
अकाउंट टूलबार
-
+
अवलोकन
-
+
भेजें
-
+
प्राप्त करें
-
+
लेनदेन
-
+
बाहर जाएँ
-
+
Ctrl + Q
-
+
संपर्क
-
+
वॉलेट बनाएँ
-
+
वॉलेट खोलें
-
+
वॉलेट एन्क्रिप्ट करें
-
-
+
+
पासवर्ड बदलें
-
+
बारे में
-
+
QT के बारे में
-
+
बैकअप वॉलेट
-
+
सिस्टम लॉगिन पर शुरू करें
-
+
ट्रे में छोटा करें
-
+
ट्रे में बंद करें
-
+
प्राइवेट की इम्पोर्ट करें
-
+
-
+
+
+
+
+
+
माइनिंग
-
-
+
+
वॉलेट रीसेट करें
@@ -687,62 +692,62 @@ Please wait...
भाषा बदलें
-
+
प्राइवेट की एक्सपोर्ट करें
-
+
F1
-
+
कनेक्शन
-
+
भुगतान रिक्वेस्ट खोलें
-
+
ट्रैकिंग की एक्सपोर्ट करें
-
+
ट्रैकिंग की इम्पोर्ट करें
-
+
वॉलेट बंद करें
-
+
जानकारी
-
+
लॉग फ़ाइल खोलें
-
+
म्नेमोनिक सीड दिखाएँ
-
+
म्नेमोनिक सीड से रिस्टोर करें
-
+
नोनडिटर्मिनिस्टिक वॉलेट बनायें
@@ -751,7 +756,7 @@ Please wait...
पूल माइनिंग स्वतः शुरू करें
-
+
मिक्स नहीं होने वालों को स्वीप करें
@@ -988,6 +993,85 @@ Please wait...
+
+ OptimizationSettingsDialog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ गुमनाम स्तर
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ से
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ रद्द करें
+
+
+
+
+ सेव करें
+
+
OverviewFrame
@@ -1098,7 +1182,7 @@ Please wait...
QObject
-
+
@@ -1845,118 +1929,118 @@ Do you want to go to download page?
WalletGui::MainWindow
-
+
Show / Hide
-
+
मुख्य विंडो दिखाएं या छुपाएं
-
-
+
+
नई वॉलेट फ़ाइल
-
-
-
+
+
+
वॉलेट (*.wallet)
-
+
.wallet/.keys फाइल खोलें
-
+
वॉलेट (*.wallet *.keys)
-
+
गलत वॉलेट फ़ाइल एक्सटेंशन
-
+
-
+
वॉलेट की मान्य नहीं हैं
-
+
आपके द्वारा दर्ज की गई प्राइवेट की मान्य नहीं हैं।
-
+
ट्रैकिंग की मान्य नहीं है
-
+
आपके द्वारा दर्ज की गई ट्रैकिंग की मान्य नहीं है।
-
-
-
-
+
+
+
+
की मान्य नहीं है
-
+
आपके द्वारा दर्ज की गई पब्लिक स्पेंड की मान्य नहीं है।
-
+
आपके द्वारा दर्ज की गई पब्लिक व्यू की मान्य नहीं है।
-
+
आपके द्वारा दर्ज की गई प्राइवेट स्पेंड की मान्य नहीं है।
-
+
आपके द्वारा दर्ज की गई प्राइवेट व्यू की मान्य नहीं है।
-
+
म्नेमोनिक सीड सही नहीं है
-
+
म्नेमोनिक सीड में एक त्रुटि होनी चाहिए। सुनिश्चित करें कि आपने यह सही दर्ज की है।
-
+
-
+
भाषा बदल दी गई थी
-
+
@@ -1965,58 +2049,58 @@ Do you want to go to download page?
वॉलेट को रीस्टार्ट करने के बाद भाषा बदल दी जाएगी।
-
+
डॉक्यूमेंटेशन अनुभाग में www.karbowanec.com पर अधिक जानकारी मिल सकती है
-
+
कनेक्शन सेटिंग्स बदल दी
-
+
वॉलेट को रीस्टार्ट करने के बाद कनेक्शन मोड बदल दिया जाएगा।
-
+
... में वॉलेट का बैकअप
-
+
चेतावनी
-
+
आपका वॉलेट ब्लॉकचेन से रीसेट और रिस्टोर किया जाएगा। क्या आपको चाहते हैं?
-
+
वॉलेट त्रुटि
-
+
वॉलेट
-
+
एन्क्रिप्टेड
-
+
एन्क्रिप्ट नहीं किया गया
-
+
%n सक्रिय कनेक्शन
@@ -2024,38 +2108,38 @@ Are you sure?
-
+
प्रगति पर सिंक्रनाइज़ेशन
-
+
सिंक्रोनाइज नहीं है
-
+
सिंक्रनाइज़ है
-
-
+
+
कार्बो वॉलेट %1
-
+
लगभग %1 वॉलेट
-
+
ट्रैकिंग वॉलेट। अनुपलब्ध खर्च करना
-
+
रिमोट नोड के माध्यम से कनेक्ट किया गया
@@ -2103,6 +2187,84 @@ Are you sure?
नोड URL
+
+ WalletGui::OptimizationSettingsDialog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
WalletGui::PoolModel
@@ -2550,183 +2712,188 @@ when the wallet is synchronized
मिक्स नहीं होने वाला डस्ट साफ़ हो रहा है
-
-
+
+
+
+
+
+
+
तैयार
-
+
सिंक्रनाइज़ हो रहा है
-
+
वस्तु शुरू नहीं हुई थी
-
+
पासवर्ड गलत है
-
+
वस्तु पहले ही शुरू हो चुकी है
-
+
आंतरिक त्रुटि हुई
-
+
मिक्सलन संख्या बहुत बड़ी है
-
+
गलत पता
-
+
लेनदेन की साइज़ बहुत बड़ी है
-
+
ग़लत राशि
-
+
कुल ज्यादा है
-
+
गंतव्य खाली है
-
+
लेनदेन रद्द करना असंभव है
-
+
वॉलेट गलत स्थिति में है (शायद लोड हो रहा है या सेव हो रहा है), बाद में पुनः प्रयास करें
-
+
आपके द्वारा अनुरोधित ऑपरेशन रद्द कर दिया गया है
-
+
लेनदेन हस्तांतरण असंभव है
-
+
गलत वर्ज़न
-
+
लेनदेन शुल्क बहुत कम है
-
+
नई की को बनाया नहीं जा सकता
-
+
सूचकांक सीमा से बाहर है
-
+
पता पहले से मौजूद है
-
+
वॉलेट ट्रैकिंग मोड में है
-
+
गलत पैरामीटर पारित किया
-
+
वस्तु नहीं मिली
-
+
अनुरोधित वॉलेट नहीं मिला
-
+
पता बदलने की आवश्यकता
-
+
पता बदलना नहीं मिला
-
+
गंतव्य पता आवश्यक है
-
+
गंतव्य पता नहीं मिला
-
+
गलत भुगतान आईडी प्रारूप
-
+
गलत लेनदेन अतिरिक्त प्रारूप
-
+
अज्ञात त्रुटि
-
+
चेतावनी: अंतिम ब्लॉक %1 घंटे %2 मिनट पहले प्राप्त हुआ था
-
+
वॉलेट सिंक्रनाइज़ किया गया। ऊंचाई: %1 | समय (UTC): %2%3
-
+
म्नेमोनिक सीड सही नहीं है
-
+
म्नेमोनिक सीड में कोई त्रुटि है। सुनिश्चित करें कि आपने इसे सही तरीके से दर्ज किया है।
diff --git a/src/languages/it.qm b/src/languages/it.qm
index 6734cca77..e0b880109 100644
Binary files a/src/languages/it.qm and b/src/languages/it.qm differ
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 249ecdbf5..9ead6b5ee 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -514,7 +514,7 @@ Attendere prego…
-
+
Portafogli recenti
@@ -524,130 +524,135 @@ Attendere prego…
Impostazioni
-
-
+
+
Aiuto
-
+
Portafoglio
-
+
-
+
Barra degli strumenti dell'account
-
+
Riepilogo
-
+
Invia
-
+
Ricevi
-
+
Transazioni
-
+
Esci
-
+
-
+
Contatti
-
+
Crea un portafoglio
-
+
Apri il portafoglio
-
+
Cripta il portafoglio
-
-
+
+
Cambia password
-
+
Informazioni
-
+
Info su Qt
-
+
Portafoglio di backup
-
+
Avvia il login di sistema
-
+
Riduci a icona nel vassoio
-
+
Chiudi nel vassoio
-
+
Importa la chiave privata
-
+
Firmare un messaggio
-
+
Verifica messaggio firmato
-
-
+
+
+ Ottimizzazione
+
+
+
+
Resetta il portafoglio
@@ -657,62 +662,62 @@ Attendere prego…
Lingua
-
+
Esporta la chiave privata
-
+
-
+
Connessione
-
+
Apri una richiesta di pagamento
-
+
Esporta la chiave di tracking
-
+
Importa la chiave di tracking
-
+
Chiudi il portafoglio
-
+
Informazioni
-
+
Apri il file di registro
-
+
Mostra il seed mnemonico
-
+
Ripristina dal seed mnemonico
-
+
Crea un portafoglio nondeterministico
@@ -721,7 +726,7 @@ Attendere prego…
Inizia il mining pool automaticamente
-
+
Sweep unmixable
@@ -970,6 +975,85 @@ Attendere prego…
OK
+
+ OptimizationSettingsDialog
+
+
+
+ Impostazioni di ottimizzazione del portafoglio
+
+
+
+
+ Esegui l'ottimizzazione del portafoglio in background
+
+
+
+
+ (Consigliato)
+
+
+
+
+ Obiettivo di ottimizzazione
+
+
+
+
+ Anonimato
+
+
+
+
+
+
+
+
+
+ uscite sono sotto il obiettivo selezionato
+
+
+
+
+ Da
+
+
+
+
+
+
+
+
+
+
+ a
+
+
+
+
+ Tempo specifico per l'ottimizzazione
+
+
+
+
+
+
+
+
+
+ Invia transazioni di ottimizzazione ogni
+
+
+
+
+ Annulla
+
+
+
+
+ Salva
+
+
OverviewFrame
@@ -1080,7 +1164,7 @@ Attendere prego…
QObject
-
+
Aiuto
@@ -1812,195 +1896,195 @@ Vuoi andare alla pagina dei download?
WalletGui::MainWindow
-
-
+
+
Karbo Wallet %1
-
+
Informazioni su %1 Wallet
-
+
Portafoglio di tracking. Non è possibile spendere
-
+
Connesso tramite un nodo remoto
-
+
Mostra/Nascondi
-
+
Mostra o nascondi la finestra principale
-
-
+
+
Nuovo file di portafoglio
-
-
-
+
+
+
Portafogli (*.wallet)
-
+
Apri file .wallet/.keys
-
+
Portafoglio (*.wallet *.keys)
-
+
Estensione del file di portafoglio errata
-
+
-
+
Le chiavi di portafoglio non sono valide
-
+
Le chiavi private che hai inserito non sono valide.
-
+
La chiave di tracking non è valida
-
+
La chiave di tracking che hai inserito non è valida.
-
-
-
-
+
+
+
+
La chiave non è valida.
-
+
La chiave di spesa pubblica che hai inserito non è valida.
-
+
La chiave di vista pubblica che hai inserito non è valida.
-
+
La chiave di spesa privata che hai inserito non è valida.
-
+
La chiave di vista privata che hai inserito non è valida.
-
+
Il seed mnemonico non è corretto
-
+
Ci deve essere un errore nel seed mnemonico. Assicuratevi di averlo inserito correttamente.
-
+
La lingua è stata modificata 1%
-
+
La lingua è stata modificata
-
+
La lingua è stata modificata in %1. La lingua sarà modificata dopo il riavvio del portafoglio.
-
+
Maggiori info si possono trovare su www.karbowanec.com nella sezione Documentazione
-
+
Impostazioni di connessione modificate
-
+
La modalità di connessione sarà modificata dopo il riavvio del portafoglio.
-
+
Portafoglio di backup in…
-
+
Attenzione
-
+
Il tuo portafoglio sarà resettato e ripristinato dal blockchain. Sei sicuro?
-
+
Errore nel portafoglio
-
+
Portafoglio
-
+
Criptato
-
+
Non criptato
-
+
%n connessione attiva
@@ -2008,17 +2092,17 @@ Are you sure?
-
+
Sincronizzazione in corso
-
+
Non sincronizzato
-
+
Sincronizzato
@@ -2066,6 +2150,84 @@ Are you sure?
UrL del nodo
+
+ WalletGui::OptimizationSettingsDialog
+
+
+
+ 30 minuti
+
+
+
+
+ 1 ora
+
+
+
+
+ 1,5 ore
+
+
+
+
+ 2 ore
+
+
+
+
+ 2,5 ore
+
+
+
+
+ 3 ore
+
+
+
+
+ 3,5 ore
+
+
+
+
+ 4 ore
+
+
+
+
+ 4,5 ore
+
+
+
+
+ 5 ore
+
+
+
+
+ 5,5 ore
+
+
+
+
+ 6 ore
+
+
+
+
+ Il portafoglio è attualmente ottimizzato per questo obiettivo
+
+
+
+
+ uscite sono sotto il obiettivo selezionato
+
+
+
+
+ Il portafoglio è chiuso
+
+
WalletGui::PoolModel
@@ -2513,183 +2675,188 @@ when the wallet is synchronized
Sweeping unmixable dust
-
-
+
+
+ Ottimizzazione del portafoglio
+
+
+
+
Pronto
-
+
Sincronizzazione in corso
-
+
L'oggetto non è stato inizializzato
-
+
La password è errata
-
+
L'oggetto è già stato inizializzato
-
+
C'è stato un errore interno
-
+
Il conto Mixln è troppo elevato
-
+
Indirizzo errato
-
+
La dimensione della transazione è troppo grande
-
+
Somma errata
-
+
Somma eccessiva
-
+
La destinazione è vuota
-
+
Impossibile cancellare la transazione
-
+
Il portafoglio è in stato di errore (forse in fase di caricamento o salvataggio), riprovate più tardi
-
+
L'operazione che hai richiesto è stata annullata
-
+
Impossibile trasferire la transazione
-
+
Versione errata
-
+
La commissione di transazione è troppo bassa
-
+
Impossibile generare una nuova chiave
-
+
L'indice è fuori dal range
-
+
L'indirizzo è già esistente
-
+
Il portafoglio è in modalità tracking
-
+
Passati parametri errati
-
+
Oggetto non trovato
-
+
Il portafoglio richiesto non è stato trovato
-
+
Necessaria modifica all'indirizzo
-
+
Indirizzo modificato non trovato
-
+
Necessario indirizzo di destinazione
-
+
Indirizzo di destinazione non trovato
-
+
Pagamento errato formato id
-
+
Transazione errata formato extra
-
+
Errore sconosciuto
-
+
Attenzione: l'ultimo blocco è stato ricevuto %1 ora e %2 minuti fa
-
+
Il portafoglio è stato sicronizzato. Altezza: %1 | Ora (UTC): %2%3
-
+
Il seed mnemonico non è corretto
-
+
Ci deve essere un errore nel seed mnemonico. Assicuratevi di averlo inserito correttamente.
diff --git a/src/languages/ja.qm b/src/languages/ja.qm
index a38dc167e..c404bf8c6 100644
Binary files a/src/languages/ja.qm and b/src/languages/ja.qm differ
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 6f53f3a91..c7e5dbd9f 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -513,7 +513,7 @@ Please wait...
-
+
最近のウォレット
@@ -523,134 +523,139 @@ Please wait...
設定
-
-
+
+
ヘルプ
-
+
ウォレット
-
+
-
+
アカウント ツールバー
-
+
概要
-
+
送信
-
+
受信
-
+
史籍
-
+
退出
-
+
-
+
連絡先
-
+
ウォレットを作る
-
+
ウォレットを開く
-
+
ウォレットの暗号化
-
-
+
+
パスワードの変更
-
+
アバウト
-
+
Qtについて
-
+
ウォレットをバックアップ
-
+
システム ログインを始める
-
+
トレイに最小化
-
+
トレイに閉じる
-
+
プライベートキーのインポート
-
+
-
+ サインメッセージ
-
+
-
+ 署名されたメッセージを確認する
+
+
+
+
+ 最適化
マイニング
-
-
+
+
ウォレットをリセット
@@ -660,62 +665,62 @@ Please wait...
言語
-
+
プライベートキーをエクスポート
-
+
-
+
接続
-
+
ペイメント リクエストを開く
-
+
トラッキングキーをエクスポート
-
+
トラッキングキーをインポート
-
+
ウォレットを閉じる
-
+
インフォメーション
-
+
ログファイルを開く
-
+
ニーモニックシードを表示
-
+
ニーモニックシードから復元
-
+
非決定的ウォレットを作成
@@ -724,7 +729,7 @@ Please wait...
自動プールマイニング開始
-
+
スイープ混合不可
@@ -953,6 +958,85 @@ Please wait...
+
+ OptimizationSettingsDialog
+
+
+
+ 最適化設定
+
+
+
+
+ バックグラウンドで財布の最適化を実行します
+
+
+
+
+ (推奨)
+
+
+
+
+ 最適化対象
+
+
+
+
+ 匿名性レベル
+
+
+
+
+
+
+
+
+
+ 選択されたターゲットの下に出力
+
+
+
+
+ から
+
+
+
+
+
+
+
+
+
+
+ まで
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ キャンセル
+
+
+
+
+ 保存
+
+
OverviewFrame
@@ -1067,7 +1151,7 @@ Please wait...
QObject
-
+
ヘルプ
@@ -1354,7 +1438,7 @@ Do you want to go to download page?
-
+ サインメッセージ
@@ -1815,212 +1899,212 @@ Do you want to go to download page?
WalletGui::MainWindow
-
-
+
+
カルボウォレット %1
-
+
カルボウォレットについて
-
+
トラッキングウォレット. 利用不可能な出費
-
+
リモートノードを介して接続
-
+
表示 / 非表示
-
+
メインウィンドウを表示または非表示
-
-
+
+
新ウォレットファイル
-
-
-
+
+
+
ウォレット (*.wallet)
-
+
.wallet/.keysファイルを開く
-
+
ウォレット (*.wallet *.keys)
-
+
ウォレットファイルの拡張子が間違っています
-
+
-
+
ウォレットキーは無効です
-
+
あなたが入力したプライベートキーは無効です。
-
+
トラッキングキーは無効です
-
+
あなたが入力したトラッキングキーは無効です。
-
-
-
-
+
+
+
+
キーは無効です
-
+
あなたが入力したパブリックスペンドキーは無効です。
-
+
あなたが入力したパブリックビューキーは無効です。
-
+
あなたが入力したプライベートスペンドキーは無効です。
-
+
あなたが入力したプライベートビューキーは無効です。
-
+
ニーモニックシードが正しくありません。
-
+
ニーモニックシードにエラーがあります。正しく入力したか確認してください。
-
+
-
+
言語は変更されました。
-
+
ウォレットの再起動後に言語が変更されます。
-
+
詳細情報はwww.karbowanec.comのDocumentationセクションにあります。
-
+
接続設定は変更されました
-
+
ウォレットの再起動後に接続モードが変更されます。
-
+
...へウォレットをバックアップ
-
+
警告
-
+
ウォレットがリセットされ、ブロックチェーンから復元されます。本当に実行してもよろしいでしょうか?
-
+
ウォレットエラー
-
+
ウォレット
-
+
暗号化
-
+
暗号化されていない
-
+
%n アクティブコネクション
-
+
同期化進行中
-
+
同期化されていない
-
+
同期化
@@ -2068,6 +2152,84 @@ Are you sure?
ノードURL
+
+ WalletGui::OptimizationSettingsDialog
+
+
+
+ 30分
+
+
+
+
+ 1時間
+
+
+
+
+ 1.5時間
+
+
+
+
+ 2時間
+
+
+
+
+ 2,5時間
+
+
+
+
+ 3時間
+
+
+
+
+ 3,5時間
+
+
+
+
+ 4時間
+
+
+
+
+ 4,5時間
+
+
+
+
+ 5時間
+
+
+
+
+ 5,5時間
+
+
+
+
+ 6時間
+
+
+
+
+ ウォレットは現在、このターゲット用に最適化されています
+
+
+
+
+ 選択されたターゲットの下に出力
+
+
+
+
+ ウォレットは閉鎖されています
+
+
WalletGui::PoolModel
@@ -2501,183 +2663,188 @@ when the wallet is synchronized
混合不可ダスト一掃中
-
-
+
+
+
+
+
+
+
開始
-
+
同期中
-
+
オブジェクトは初期化されませんでした
-
+
パスワードが違います
-
+
オブジェクトは既に初期化されました
-
+
内部エラー発生
-
+
ミックスインカウントが大きすぎます。
-
+
無効アドレス
-
+
トランザクションサイズが大きすぎます
-
+
不適切な数量
-
+
合計オーバーフロー
-
+
宛先は空です
-
+
トランザクションのキャンセルはできません。
-
+
ウォレットが不適切な状態(おそらくローディング中、または、保存中)なので、しばらく経ってからもう一度試してください。
-
+
あなたがリクエストした操作はキャンセルされました。
-
+
トランザクショントランスファー不可能
-
+
不適当なバージョン
-
+
トランザクション手数料が少なすぎます
-
+
新キーは生成できない
-
+
インデックスは範囲外
-
+
アドレスは既に存在します
-
+
ウォレットはトラッキングモードです
-
+
不適切なパラメーターが渡されました
-
+
不明オブジェクト
-
+
リクエストされたウォレットが見つかりません
-
+
アドレスの変更が必要
-
+
変更されたアドレスが見つかりません
-
+
宛先アドレスが必要
-
+
宛先アドレスが見つかりません
-
+
不適切なペイメントIDフォーマット
-
+
不適切なトランザクションエキストラフォーマット
-
+
不明のエラー
-
+
警告: 最新のブロックは%1時間%2分前に受信されました。
-
+
ウォレットは同期されました。高さ: %1 | 時刻(UTC): %2%3
-
+
ニーモニックシードが正しくありません。
-
+
ニーモニックシードにエラーがあります。正しく入力したか確認してください。
diff --git a/src/languages/ko.qm b/src/languages/ko.qm
index 11f128d46..020d3db20 100644
Binary files a/src/languages/ko.qm and b/src/languages/ko.qm differ
diff --git a/src/languages/ko.ts b/src/languages/ko.ts
index 8ea688854..cdef3e788 100644
--- a/src/languages/ko.ts
+++ b/src/languages/ko.ts
@@ -536,7 +536,7 @@ Please wait...
-
+
최근 지갑
@@ -546,134 +546,139 @@ Please wait...
설정
-
-
+
+
도움말
-
+
지갑
-
+
툴바
-
+
계정 툴바
-
+
개요
-
+
전송
-
+
수신
-
+
트랜잭션
-
+
나가기
-
+
Ctrl+Q
-
+
연락처
-
+
지갑 생성
-
+
지갑 열기
-
+
지갑 암호화
-
-
+
+
암호 변경
-
+
소개
-
+
Qt 소개
-
+
백업 지갑
-
+
시스템 로그인 시작
-
+
트레이에 최소화하기
-
+
트레이에 닫기
-
+
개인 키 불러오기
-
+
-
+ 메시지에 서명
-
+
-
+ 서명 된 메시지 확인
+
+
+
+
+ 최적화
마이닝
-
-
+
+
지갑 재설정
@@ -687,62 +692,62 @@ Please wait...
언어 변경
-
+
개인 키 내보내기
-
+
F1
-
+
연결
-
+
지갑 요청 열기
-
+
추적 키 내보내기
-
+
추적 키 불러오기
-
+
지갑 닫기
-
+
정보
-
+
로그 파일 열기
-
+
연상기호 시드 표시
-
+
연상기호 시드에서 복구
-
+
연상기호 지갑 생성
@@ -751,7 +756,7 @@ Please wait...
자동 풀 마이닝 시작
-
+
혼합불가 제거
@@ -988,6 +993,85 @@ Please wait...
확인
+
+ OptimizationSettingsDialog
+
+
+
+ 최적화 설정
+
+
+
+
+ 백그라운드에서 지갑의 최적화 실행
+
+
+
+
+ (권장)
+
+
+
+
+ 최적화 대상
+
+
+
+
+ 익명 레벨
+
+
+
+
+ 0
+
+
+
+
+ 선택한 목표보다 낮은 출력
+
+
+
+
+ 에서
+
+
+
+
+
+
+
+
+
+
+ 까지
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 취소
+
+
+
+
+ 저장
+
+
OverviewFrame
@@ -1102,7 +1186,7 @@ Please wait...
QObject
-
+
도움말
@@ -1413,7 +1497,7 @@ Do you want to go to download page?
-
+ 메시지에 서명
@@ -1878,133 +1962,133 @@ Do you want to go to download page?
WalletGui::MainWindow
-
+
%1 지갑 소개
-
+
지갑 추적. 지출 이용 불가
-
+
원격 노드로 연결됨
-
+
표시/숨기기
-
+
메인창 표시 또는 숨기기
-
-
+
+
새로운 지갑 파일
-
-
-
+
+
+
지갑 (*.wallet)
-
+
.wallet/.keys 파일 열기
-
+
지갑 (*.wallet *.keys)
-
+
잘못된 지갑 파일 확장
-
+
-
+
지갑 키가 유효하지 않습니다
-
+
입력하신 개인 키가 유효하지 않습니다
-
+
추적 키가 유효하지 않습니다
-
+
입력하신 추적 키가 유효하지 않습니다
-
-
-
-
+
+
+
+
키가 유효하지 않습니다
-
+
입력하신 공개 지출 키가 유효하지 않습니다.
-
+
입력하신 공개 보기 키가 유효하지 않습니다.
-
+
입력하신 비공개 지출 키가 유효하지 않습니다.
-
+
입력하신 비공개 보기 키가 유효하지 않습니다.
-
+
연산 기호가 올바르지 않습니다
-
+
연산기호 시드에 오류가 있습니다. 올바르게 입력했는지 확인하세요.
-
+
-
+
언어가 변경되었습니다
-
+
@@ -2013,81 +2097,81 @@ Do you want to go to download page?
지갑을 재시작한 후에 언어가 변경되었습니다.
-
+
더 많은 정보는 www.karbowanec.com 문서 항목에서 확인하실 수 있습니다
-
+
연결 설정 변경됨
-
+
연결 모드가 지갑을 재시작한 후에 변경되었습니다.
-
+
지갑을 다음으로 백업합니다...
-
+
경고
-
+
지갑이 블록체인에서 재설정 및 복구되었습니다. 계속 진행하시겠습니까?
-
+
지갑 오류
-
+
지갑
-
+
암호화됨
-
+
암호화되지 않음
-
+
%n개의 활성화된 연결
-
+
진행 중인 동기화
-
+
동기화되지 않음
-
+
동기화됨
-
-
+
+
Karbo 지갑 %1
@@ -2135,6 +2219,84 @@ Are you sure?
노드 URL
+
+ WalletGui::OptimizationSettingsDialog
+
+
+
+ 30 분
+
+
+
+
+ 1 시간
+
+
+
+
+ 1.5 시간
+
+
+
+
+ 2시간
+
+
+
+
+ 2.5시간
+
+
+
+
+ 3시간
+
+
+
+
+ 3.5시간
+
+
+
+
+ 4시간
+
+
+
+
+ 4.5시간
+
+
+
+
+ 5시간
+
+
+
+
+ 5.5시간
+
+
+
+
+ 6시간
+
+
+
+
+ 지갑은 현재이 타겟에 맞게 최적화되어 있습니다
+
+
+
+
+ 선택한 목표보다 낮은 출력
+
+
+
+
+ 지갑이 폐쇄되었습니다
+
+
WalletGui::PoolModel
@@ -2568,183 +2730,188 @@ when the wallet is synchronized
혼합 불가능한 현금 삭제
-
-
+
+
+
+
+
+
+
완료
-
+
동기화 중
-
+
개체가 초기화되지 않았습니다
-
+
올바르지 않은 암호
-
+
개체가 이미 초기화되었습니다
-
+
내부 오류 발생
-
+
믹스인 수가 너무 큽니다
-
+
나쁜 주소
-
+
트랜잭션 크기가 너무 큽니다
-
+
잘못된 금액
-
+
합계 개요
-
+
대상이 비어있습니다
-
+
트랜잭션 취소가 불가능합니다
-
+
지갑이 작동할 수 없는 상태입니다(로딩 중 또는 저장 중). 다시 시도하세요.
-
+
요청하신 작업이 취소되었습니다
-
+
트랜잭션 거래가 불가능합니다
-
+
잘못된 버전
-
+
전송비용이 너무 적습니다
-
+
새로운 키를 생성할 수 없습니다
-
+
인덱스가 범위를 벗어났습니다
-
+
주소가 이미 존재합니다
-
+
지갑이 추적 모드입니다
-
+
잘못된 한도가 패스됨
-
+
발견된 개체가 없습니다
-
+
요청한 지갑을 찾을 수 없습니다
-
+
변경된 주소가 필요합니다
-
+
변경된 주소를 찾을 수 없습니다
-
+
대상 주소가 필요합니다
-
+
대상 주소를 찾을 수 없습니다
-
+
잘못된 지출 id 형식
-
+
잘못된 트랜잭션 추가 형식
-
+
알 수 없는 오류
-
+
경고: 마지막 블록이 %1시간 %2분 전에 수신되었습니다
-
+
지갑 동기화 완료됨. 절정: %1 | 시간(UTC): %2%3
-
+
연상기호 시드가 올바르지 않습니다
-
+
연상기호 시드에 오류가 있어야 합니다. 올바르게 입력했는지 확인하세요.
diff --git a/src/languages/pl.qm b/src/languages/pl.qm
index 377c7ba3a..0cd07dcd0 100644
Binary files a/src/languages/pl.qm and b/src/languages/pl.qm differ
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index dc66d1ef6..520dcaf82 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -644,6 +644,10 @@ Proszę czekać...
Sprawdź podpis wiadomości
+
+
+ Optymalizacja
+
MiningFrame
@@ -857,6 +861,69 @@ Proszę czekać...
OK
+
+ OptimizationSettingsDialog
+
+
+ Ustawienia optymalizacji portfela
+
+
+
+ Wykonywać optymalizację portfela w tle
+
+
+
+ (Zalecane)
+
+
+
+ Cel optymalizacji
+
+
+
+ Poziom prywatności
+
+
+
+ 0
+
+
+
+ wyjść znajduje się poniżej wybranego celu
+
+
+
+ Od
+
+
+
+
+
+
+
+ do
+
+
+
+ Określony czas na optymalizację
+
+
+
+ Wysyłaj transakcje optymalizacyjne co
+
+
+
+ Anuluj
+
+
+
+ Zapisz
+
+
+
+
+
+
OverviewFrame
@@ -1861,6 +1928,69 @@ Jesteś pewien?
Adres węzła
+
+ WalletGui::OptimizationSettingsDialog
+
+
+ 30 minut
+
+
+
+ 1 godz.
+
+
+
+ 1,5 godz.
+
+
+
+ 2 godz.
+
+
+
+ 2,5 godz.
+
+
+
+ 3 godz.
+
+
+
+ 3,5 godz.
+
+
+
+ 4 godz.
+
+
+
+ 4,5 godz.
+
+
+
+ 5 godz.
+
+
+
+ 5,5 godz.
+
+
+
+ 6 godz.
+
+
+
+ Portfel jest obecnie zoptymalizowany dla tego celu
+
+
+
+ wyjść znajduje się poniżej wybranego celu
+
+
+
+ Portfel jest zamknięty
+
+
WalletGui::PoolModel
@@ -2397,5 +2527,9 @@ kiedy portfel skończy synchronizowanie
Optymizacja nieosiągalnych wyjść
+
+
+ Optymalizacja portfela
+
diff --git a/src/languages/pt.qm b/src/languages/pt.qm
index 10f8471e9..7c6c45f8c 100644
Binary files a/src/languages/pt.qm and b/src/languages/pt.qm differ
diff --git a/src/languages/pt.ts b/src/languages/pt.ts
index 2a8a6f153..8308852fd 100644
--- a/src/languages/pt.ts
+++ b/src/languages/pt.ts
@@ -665,6 +665,10 @@ Por favor aguarde...
Verificar mensagem assinada
+
+
+ Otimização
+
MiningFrame
@@ -878,6 +882,69 @@ Por favor aguarde...
OK
+
+ OptimizationSettingsDialog
+
+
+ Configurações de otimização de carteira
+
+
+
+ Execute a otimização da carteira em segundo plano
+
+
+
+ (Recomendado)
+
+
+
+ Meta de otimização
+
+
+
+ Nível de privacidade
+
+
+
+ 0
+
+
+
+ saídas estão abaixo da meta selecionada
+
+
+
+ De
+
+
+
+
+
+
+
+ a
+
+
+
+ Hora específica para otimização
+
+
+
+ Envie transações de otimização a cada
+
+
+
+ Cancelar
+
+
+
+ Salvar
+
+
+
+
+
+
OverviewFrame
@@ -1870,6 +1937,69 @@ Você tem certeza?
Node URL
+
+ WalletGui::OptimizationSettingsDialog
+
+
+ 30 minutos
+
+
+
+ 1 hora
+
+
+
+ 1,5 horas
+
+
+
+ 2 horas
+
+
+
+ 2,5 horas
+
+
+
+ 3 horas
+
+
+
+ 3,5 horas
+
+
+
+ 4 horas
+
+
+
+ 45,5 horas
+
+
+
+ 5 horas
+
+
+
+ 5,5 horas
+
+
+
+ 6 horas
+
+
+
+ Carteira está otimizada para essa meta
+
+
+
+ saídas estão abaixo da meta selecionada
+
+
+
+ Carteira é fechada
+
+
WalletGui::PoolModel
@@ -2401,5 +2531,9 @@ quando a carteira vai terminar de sincronizar
Varrendo não misturável
+
+
+ Otimizando carteira
+
diff --git a/src/languages/ru.qm b/src/languages/ru.qm
index bfb2e97f9..0dc80023b 100644
Binary files a/src/languages/ru.qm and b/src/languages/ru.qm differ
diff --git a/src/languages/ru.ts b/src/languages/ru.ts
index 33e1d41b6..5afeaff7e 100644
--- a/src/languages/ru.ts
+++ b/src/languages/ru.ts
@@ -644,6 +644,10 @@ Please wait...
Проверка подписанного сообщения
+
+
+ Оптимизация
+
MiningFrame
@@ -857,6 +861,70 @@ Please wait...
Хорошо
+
+ OptimizationSettingsDialog
+
+
+ Настройки оптимизации кошелька
+
+
+
+ Выполнять оптимизацию кошелька в фоновом режиме
+
+
+
+ (Рекомендуется)
+
+
+
+ Цель оптимизации
+
+
+
+ Уровень анонимности
+
+
+
+ 0
+
+
+
+ выходов ниже выбранной цели
+
+
+
+ От
+
+
+
+
+
+
+
+ до
+
+
+
+ Конкретное время для оптимизации
+
+
+
+ Отправлять транзакции оптимизации каждые
+
+
+
+ Отменить
+
+
+
+ Сохранить
+
+
+
+ Оптимизация кошелька - это фоновая задача, выполняемая для суммирования выходов транзакций, которые ниже целевого показателя оптимизации, в более крупные. Это позволяет отправлять большие суммы KRB в одной транзакции. Оптимизация кошелька бесплатна для всех пользователей, но занимает некоторое время.
+
+
+
OverviewFrame
@@ -1854,6 +1922,69 @@ Are you sure?
Адрес узла
+
+ WalletGui::OptimizationSettingsDialog
+
+
+ 30 мин.
+
+
+
+ 1 час
+
+
+
+ 1,5 часа
+
+
+
+ 2 часа
+
+
+
+ 2,5 часа
+
+
+
+ 3 часа
+
+
+
+ 3,5 часа
+
+
+
+ 4 часа
+
+
+
+ 4,5 часа
+
+
+
+ 5 часов
+
+
+
+ 5,5 часов
+
+
+
+ 6 часов
+
+
+
+ Кошелек в настоящее время оптимизирован для этой цели
+
+
+
+ выходов ниже выбранной цели
+
+
+
+ Кошелек закрыт
+
+
WalletGui::PoolModel
@@ -2390,5 +2521,9 @@ when the wallet is synchronized
Оптимизация несмешываемых выходов
+
+
+ Оптимизация кошелька
+
diff --git a/src/languages/uk.qm b/src/languages/uk.qm
index 6057be275..64c334b89 100644
Binary files a/src/languages/uk.qm and b/src/languages/uk.qm differ
diff --git a/src/languages/uk.ts b/src/languages/uk.ts
index ffe926a38..9199ede47 100644
--- a/src/languages/uk.ts
+++ b/src/languages/uk.ts
@@ -644,6 +644,10 @@ Please wait...
Перевірити підписане повідомлення
+
+
+ Оптимізація
+
MiningFrame
@@ -857,6 +861,69 @@ Please wait...
Гаразд
+
+ OptimizationSettingsDialog
+
+
+ Налаштування оптимізації гаманця
+
+
+
+ Виконувати оптимізацію гаманця у фоновому режимі
+
+
+
+ (Рекомедується)
+
+
+
+ Ціль оптимізації
+
+
+
+ Рівень приватності
+
+
+
+ 0
+
+
+
+ виходів нижче вибраної цілі
+
+
+
+ Від
+
+
+
+
+
+
+
+ до
+
+
+
+ Конкретний час для оптимізації
+
+
+
+ Надсилати транзакції оптимізації кожні
+
+
+
+ Скасувати
+
+
+
+ Зберегти
+
+
+
+ Оптимізація гаманця - це фонове завдання, що виконується для об'єднання виходів транзакцій, які нижче цільового показника оптимізації, в більш великі. Це дозволяє відправляти великі суми KRB в одній транзакції. Оптимізація гаманця безкоштовна для всіх користувачів, але займає деякий час.
+
+
OverviewFrame
@@ -1850,6 +1917,69 @@ Are you sure?
Адреса вузла
+
+ WalletGui::OptimizationSettingsDialog
+
+
+ 30 хв.
+
+
+
+ 1 год.
+
+
+
+ 1,5 год.
+
+
+
+ 2 год.
+
+
+
+ 2,5 год.
+
+
+
+ 3 год.
+
+
+
+ 3,5 год.
+
+
+
+ 4 год.
+
+
+
+ 4,5 год.
+
+
+
+ 5 год.
+
+
+
+ 5,5 год.
+
+
+
+ 6 год.
+
+
+
+ Гаманець наразі оптимізовано для цієї цілі
+
+
+
+ виходів нижче вибраної цілі
+
+
+
+ Гаманець закритий
+
+
WalletGui::PoolModel
@@ -2384,7 +2514,11 @@ when the wallet is synchronized
- Триває оптимізація незмішуваних виходів
+ Триває оптимізація незмішуваних виходів
+
+
+
+ Триває оптимізація гаманця
diff --git a/src/languages/zh.qm b/src/languages/zh.qm
index 1adbce66e..2fca2c30f 100644
Binary files a/src/languages/zh.qm and b/src/languages/zh.qm differ
diff --git a/src/languages/zh.ts b/src/languages/zh.ts
index 75eb7a935..6b87c0ef3 100644
--- a/src/languages/zh.ts
+++ b/src/languages/zh.ts
@@ -536,7 +536,7 @@ Please wait...
-
+
最近的钱包
@@ -546,134 +546,139 @@ Please wait...
设置
-
-
+
+
帮助
-
+
钱包
-
+
工具栏
-
+
账户工具栏
-
+
概览
-
+
发送
-
+
接收
-
+
交易
-
+
退出
-
+
按键 Ctrl+Q
-
+
联系人
-
+
创建钱包
-
+
打开钱包
-
+
加密钱包
-
-
+
+
更改密码
-
+
相关信息
-
+
关于QT
-
+
备用钱包
-
+
开始登陆系统
-
+
最小化到托盘
-
+
关闭至托盘
-
+
导入私钥
-
+
签名消息
-
+
验证已签名的邮件
+
+
+
+ 优化
+
挖矿
-
-
+
+
重置钱包
@@ -687,62 +692,62 @@ Please wait...
更换语言
-
+
导出私钥
-
+
F1
-
+
连接
-
+
打开付款请求
-
+
导出跟踪密钥
-
+
导入跟踪密钥
-
+
关闭钱包
-
+
信息
-
+
打开日志文件
-
+
显示助记种子
-
+
从助记种子恢复
-
+
创建非确定性钱包
@@ -751,7 +756,7 @@ Please wait...
自动开始从矿池挖矿
-
+
扫除不可混合的金额
@@ -988,6 +993,85 @@ Please wait...
好
+
+ OptimizationSettingsDialog
+
+
+
+ 优化设置
+
+
+
+
+ 在后台运行钱包的优化
+
+
+
+
+ (推荐的)
+
+
+
+
+ 优化目标
+
+
+
+
+ 匿名级别
+
+
+
+
+ 0
+
+
+
+
+ 个输出低于所选目标
+
+
+
+
+ 从
+
+
+
+
+
+
+
+
+
+
+ 到
+
+
+
+
+ 优化交易的具体时间
+
+
+
+
+
+
+
+
+
+ 每次发送优化事务
+
+
+
+
+ 取消
+
+
+
+
+ 保存
+
+
OverviewFrame
@@ -1102,7 +1186,7 @@ Please wait...
QObject
-
+
帮助
@@ -1862,128 +1946,128 @@ Do you want to go to download page?
WalletGui::MainWindow
-
+
跟踪钱包。支付不可用。
-
+
通过远程节点连接
-
+
显示/隐藏
-
+
显示或隐藏主窗口
-
-
+
+
新钱包文件
-
-
-
+
+
+
钱包(*.wallet)
-
+
打开.wallet/.key文件
-
+
钱包(*.wallet *.keys)
-
+
钱包文件扩展名错误
-
+
-
+
钱包密钥无效
-
+
您输入的私钥无效。
-
+
跟踪密钥无效
-
+
您输入的跟踪密钥无效。
-
-
-
-
+
+
+
+
密钥无效
-
+
您输入的支出公钥无效。
-
+
您输入的检视公钥无效。
-
+
您输入的支出私钥无效。
-
+
您输入的检视私钥无效。
-
+
助记种子不正确
-
+
助记种子有误,请确保输入正确的数据。
-
+
-
+
语言已更改
-
+
@@ -1992,86 +2076,86 @@ Do you want to go to download page?
语言更改会在重启钱包后生效
-
+
更多信息请阅读www.karbowanec.com的文档部分。
-
+
连接设置已更改
-
+
连接模式更改会在重启钱包后生效
-
+
备份钱包至...
-
+
系统提醒
-
+
您的钱包将会被重置,并从区块链中恢复,您确定吗?
-
+
钱包错误
-
+
钱包
-
+
加密
-
+
未加密
-
+
%n 有效连接
-
+
正在同步中
-
+
未同步
-
+
已同步
-
-
+
+
Karbo钱包%1
-
+
关于%1钱包
@@ -2119,6 +2203,84 @@ Are you sure?
节点网址URL
+
+ WalletGui::OptimizationSettingsDialog
+
+
+
+ 30分钟
+
+
+
+
+ 1小时
+
+
+
+
+ 1.5小时
+
+
+
+
+ 2小时
+
+
+
+
+ 2.5小时
+
+
+
+
+ 3小时
+
+
+
+
+ 3.5小时
+
+
+
+
+ 4个小时
+
+
+
+
+ 4.5小时
+
+
+
+
+ 5个小时
+
+
+
+
+ 5.5小时
+
+
+
+
+ 6个小时
+
+
+
+
+ 钱包目前针对此目标进行了优化
+
+
+
+
+ 输出低于所选目标
+
+
+
+
+ 钱包已关闭
+
+
WalletGui::PoolModel
@@ -2552,183 +2714,188 @@ when the wallet is synchronized
正在扫除不可混合的尘额
-
-
+
+
+
+
+
+
+
已就绪
-
+
同步中
-
+
对象未初始化
-
+
密码错误
-
+
对象已初始化
-
+
发生内部错误
-
+
MixIn计数过大
-
+
地址错误
-
+
交易规模过大
-
+
数额错误
-
+
总和溢位
-
+
目的地不存在
-
+
无法取消交易
-
+
钱包状态有误(可能正在加载或保存中),请稍后再试
-
+
您请求的操作已取消
-
+
无法进行交易转移
-
+
版本错误
-
+
交易费用太小
-
+
无法生成新的密钥
-
+
指数超出范围
-
+
地址已存在
-
+
钱包处于跟踪模式
-
+
传递的参数错误
-
+
对象未找到
-
+
请求的钱包未找到
-
+
需要更改地址
-
+
更改地址未找到
-
+
需要目标地址
-
+
目标地址未找到
-
+
付款ID格式错误
-
+
交易额外格式错误
-
+
未知错误
-
+
系统提醒:上个区块已于%1小时%2分钟前收到
-
+
钱包已同步。高度:%1 | 时间(UTC):%2%3
-
+
助记种子不正确
-
+
助记种子有误,请确保输入正确的数据。