Compare commits

..

1 commit
main ... master

Author SHA1 Message Date
62c423ce9c Update docker/Dockerfile.core
Some checks failed
CI / build (macos-13) (push) Has been cancelled
CI / build (ubuntu-22.04) (push) Has been cancelled
CI / build (windows-latest) (push) Has been cancelled
Codacy Coverage Reporter / Publish coverage (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
2025-06-26 13:56:09 +00:00
58 changed files with 446 additions and 666 deletions

View file

@ -7,7 +7,7 @@ permissions:
jobs: jobs:
build: build:
if: github.repository == 'MoneroEcosystem/haveno' if: github.repository == 'haveno-dex/haveno'
name: Publish coverage name: Publish coverage
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:

View file

@ -132,7 +132,8 @@ configure([project(':cli'),
project(':seednode'), project(':seednode'),
project(':statsnode'), project(':statsnode'),
project(':inventory'), project(':inventory'),
project(':apitest') project(':apitest'),
//project(':bot')
]) { ]) {
apply plugin: 'application' apply plugin: 'application'

View file

@ -49,7 +49,6 @@ import haveno.core.api.model.MarketPriceInfo;
import haveno.core.api.model.PaymentAccountForm; import haveno.core.api.model.PaymentAccountForm;
import haveno.core.api.model.PaymentAccountFormField; import haveno.core.api.model.PaymentAccountFormField;
import haveno.core.app.AppStartupState; import haveno.core.app.AppStartupState;
import haveno.core.filter.Filter;
import haveno.core.monetary.Price; import haveno.core.monetary.Price;
import haveno.core.offer.Offer; import haveno.core.offer.Offer;
import haveno.core.offer.OfferDirection; import haveno.core.offer.OfferDirection;
@ -74,7 +73,6 @@ import java.util.Set;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import java.util.function.Consumer; import java.util.function.Consumer;
import haveno.network.p2p.peers.peerexchange.Peer;
import lombok.Getter; import lombok.Getter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import monero.common.MoneroRpcConnection; import monero.common.MoneroRpcConnection;
@ -104,7 +102,6 @@ public class CoreApi {
private final CoreWalletsService walletsService; private final CoreWalletsService walletsService;
private final TradeStatisticsManager tradeStatisticsManager; private final TradeStatisticsManager tradeStatisticsManager;
private final CoreNotificationService notificationService; private final CoreNotificationService notificationService;
private final CoreNetworkService networkService;
private final XmrConnectionService xmrConnectionService; private final XmrConnectionService xmrConnectionService;
private final XmrLocalNode xmrLocalNode; private final XmrLocalNode xmrLocalNode;
@ -122,7 +119,6 @@ public class CoreApi {
CoreWalletsService walletsService, CoreWalletsService walletsService,
TradeStatisticsManager tradeStatisticsManager, TradeStatisticsManager tradeStatisticsManager,
CoreNotificationService notificationService, CoreNotificationService notificationService,
CoreNetworkService networkService,
XmrConnectionService xmrConnectionService, XmrConnectionService xmrConnectionService,
XmrLocalNode xmrLocalNode) { XmrLocalNode xmrLocalNode) {
this.config = config; this.config = config;
@ -138,7 +134,6 @@ public class CoreApi {
this.walletsService = walletsService; this.walletsService = walletsService;
this.tradeStatisticsManager = tradeStatisticsManager; this.tradeStatisticsManager = tradeStatisticsManager;
this.notificationService = notificationService; this.notificationService = notificationService;
this.networkService = networkService;
this.xmrConnectionService = xmrConnectionService; this.xmrConnectionService = xmrConnectionService;
this.xmrLocalNode = xmrLocalNode; this.xmrLocalNode = xmrLocalNode;
} }
@ -360,25 +355,6 @@ public class CoreApi {
notificationService.sendNotification(notification); notificationService.sendNotification(notification);
} }
///////////////////////////////////////////////////////////////////////////////////////////
// Network
///////////////////////////////////////////////////////////////////////////////////////////
//public void addNetworkListener(NetworkListener listener) {
// networkService.addListener(listener);
//}
public Set<Peer> getOnlinePeers() {
return networkService.getOnlinePeers();
}
public Set<Peer> getOnlineSeedNodes() {
return networkService.getOnlineSeedNodePeers();
}
public Filter getFilter() {
return networkService.getFilter();
}
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
// Disputes // Disputes
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
@ -416,11 +392,7 @@ public class CoreApi {
coreDisputeAgentsService.unregisterDisputeAgent(disputeAgentType, resultHandler, errorMessageHandler); coreDisputeAgentsService.unregisterDisputeAgent(disputeAgentType, resultHandler, errorMessageHandler);
} }
public void getRegisteredDisputeAgents(ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { ///////////////////////////////////////////////////////////////////////////////////////////
//coreDisputeAgentsService.getRegisteredDisputeAgents(resultHandler, errorMessageHandler);
}
/////////////////////////////////////////////s//////////////////////////////////////////////
// Offers // Offers
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////

View file

@ -161,17 +161,6 @@ class CoreDisputeAgentsService {
} }
} }
// void getRegisteredDisputeAgents(ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
// if (!p2PService.isBootstrapped())
// throw new IllegalStateException("p2p service is not bootstrapped yet");
//
// arbitratorManager.getObservableMap().forEach(entry -> {
// if (arbitrator != null) {
// log.info("Registered arbitrator: {}", arbitrator.getNodeAddress().getFullAddress());
// }
// });
// }
private void registerArbitrator(NodeAddress nodeAddress, private void registerArbitrator(NodeAddress nodeAddress,
List<String> languageCodes, List<String> languageCodes,
ECKey ecKey, ECKey ecKey,

View file

@ -1,61 +0,0 @@
package haveno.core.api;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.Set;
import haveno.network.p2p.peers.peerexchange.Peer;
import haveno.core.filter.Filter;
import haveno.core.filter.FilterManager;
import haveno.network.p2p.peers.PeerManager;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
@Singleton
@Slf4j
public class CoreNetworkService {
private final PeerManager peerManager;
private final FilterManager filterManager;
@Inject
public CoreNetworkService(PeerManager peerManager
, FilterManager filterManager) {
this.peerManager = peerManager;
this.filterManager = filterManager;
}
//public void addListener(@NonNull NetworkListener listener) {
// synchronized (lock) {
// listeners.add(listener);
// }
//}
Set<Peer> getOnlinePeers() {
return peerManager.getLivePeers();
}
Set<Peer> getOnlineSeedNodePeers() {
return peerManager.getLiveSeedNodePeers();
}
Filter getFilter() {
return filterManager.getFilter();
}
//public void sendNetworMessage(@NonNull NetworkMessage network_message) {
// synchronized (lock) {
// for (Iterator<NetworkListener> iter = listeners.iterator(); iter.hasNext(); ) {
// NetworkListener listener = iter.next();
// try {
// listener.onMessage(network_message);
// } catch (RuntimeException e) {
// log.warn("Failed to send network envelope to listener {}: {}", listener, e.getMessage());
// iter.remove();
// }
// }
// }
// }
}

View file

@ -1,9 +0,0 @@
package haveno.core.api;
import haveno.proto.grpc.NetworkMessage;
import lombok.NonNull;
public interface NetworkListener {
void onMessage(@NonNull NetworkMessage network_message);
}

View file

@ -1,62 +0,0 @@
package haveno.core.api.model;
import haveno.core.api.model.builder.PeerInfoBuilder;
import haveno.network.p2p.peers.peerexchange.Peer;
import haveno.common.Payload;
import java.util.List;
public class PeerInfo implements Payload {
private final String nodeAddress;
private final List<Integer> capabilities;
public static PeerInfo toPeerInfo(Peer peer) {
return getBuilder(peer)
.build();
}
public PeerInfo(PeerInfoBuilder builder) {
this.nodeAddress = builder.getNodeAddress();
this.capabilities = builder.getCapabilities();
}
private static PeerInfoBuilder getBuilder(Peer peer) {
return new PeerInfoBuilder()
.withNodeAddress(peer.getNodeAddress().getFullAddress());
}
///////////////////////////////////////////////////////////////////////////////////////////
// PROTO BUFFER
///////////////////////////////////////////////////////////////////////////////////////////
public static PeerInfo fromProto(haveno.proto.grpc.PeerInfo proto) {
return new PeerInfoBuilder()
.withNodeAddress(proto.getNodeAddress())
.build();
}
@Override
public haveno.proto.grpc.PeerInfo toProtoMessage() {
haveno.proto.grpc.PeerInfo.Builder builder = haveno.proto.grpc.PeerInfo.newBuilder()
.setNodeAddress(nodeAddress);
return builder.build();
}
@Override
public String toString() {
return "PeerInfo{" + "\n" +
" " + nodeAddress.toString() + "\n" +
'}';
}
public String getNodeAddress() {
return nodeAddress;
}
public List<Integer> getCapabilities() {
return capabilities;
}
}

View file

@ -1,44 +0,0 @@
package haveno.core.api.model.builder;
import haveno.core.api.model.PeerInfo;
import java.util.List;
/*
* A builder helps avoid bungling use of a large OfferInfo constructor
* argument list. If consecutive argument values of the same type are not
* ordered correctly, the compiler won't complain but the resulting bugs could
* be hard to find and fix.
*/
public final class PeerInfoBuilder {
private String nodeAddress;
private List<Integer> capabilities;
public PeerInfoBuilder withNodeAddress(String nodeAddress) {
this.nodeAddress = nodeAddress;
return this;
}
public PeerInfoBuilder withCapabilities(List<Integer> capabilities) {
this.capabilities = capabilities;
return this;
}
public PeerInfo build() {
return new PeerInfo(this);
}
public String getNodeAddress() {
return nodeAddress;
}
public List<Integer> getCapabilities() {
return capabilities;
}
}

View file

@ -1,5 +0,0 @@
package haveno.core.app;
public class EventBusSetup {
}

View file

@ -126,7 +126,7 @@ public abstract class HavenoExecutable implements GracefulShutDownHandler, Haven
System.exit(EXIT_FAILURE); System.exit(EXIT_FAILURE);
} catch (Throwable ex) { } catch (Throwable ex) {
System.err.println("fault: An unexpected error occurred. " + System.err.println("fault: An unexpected error occurred. " +
"Please file a report at https://github.com/MoneroEcosystem/haveno"); "Please file a report at https://github.com/haveno-dex/haveno/issues");
ex.printStackTrace(System.err); ex.printStackTrace(System.err);
System.exit(EXIT_FAILURE); System.exit(EXIT_FAILURE);
} }
@ -142,7 +142,6 @@ public abstract class HavenoExecutable implements GracefulShutDownHandler, Haven
CommonSetup.setup(config, this); CommonSetup.setup(config, this);
CoreSetup.setup(config); CoreSetup.setup(config);
addCapabilities(); addCapabilities();
// If application is JavaFX application we need to wait until it is initialized // If application is JavaFX application we need to wait until it is initialized

View file

@ -169,19 +169,15 @@ public class MobileNotificationService {
doSend = true; doSend = true;
break; break;
case OFFER: case OFFER:
doSend = true;
break;
case TRADE: case TRADE:
doSend = true;
break;
case DISPUTE: case DISPUTE:
doSend = true; doSend = useTradeNotificationsProperty.get();
break; break;
case PRICE: case PRICE:
doSend = true; doSend = usePriceNotificationsProperty.get();
break; break;
case MARKET: case MARKET:
doSend = true; doSend = useMarketNotificationsProperty.get();
break; break;
case ERASE: case ERASE:
doSend = true; doSend = true;

View file

@ -107,11 +107,11 @@ public class XmrWalletService extends XmrWalletBase {
// monero configuration // monero configuration
public static final int NUM_BLOCKS_UNLOCK = 10; public static final int NUM_BLOCKS_UNLOCK = 10;
public static final String MONERO_BINS_DIR = System.getenv().getOrDefault("MONERO_BINS_DIR", Config.appDataDir().getAbsolutePath()); public static final String MONERO_BINS_DIR = Config.appDataDir().getAbsolutePath();
public static final String MONERO_WALLET_RPC_NAME = Utilities.isWindows() ? "monero-wallet-rpc.exe" : "monero-wallet-rpc"; public static final String MONERO_WALLET_RPC_NAME = Utilities.isWindows() ? "monero-wallet-rpc.exe" : "monero-wallet-rpc";
public static final String MONERO_WALLET_RPC_PATH = MONERO_BINS_DIR + File.separator + MONERO_WALLET_RPC_NAME; public static final String MONERO_WALLET_RPC_PATH = MONERO_BINS_DIR + File.separator + MONERO_WALLET_RPC_NAME;
public static final MoneroTxPriority PROTOCOL_FEE_PRIORITY = MoneroTxPriority.DEFAULT; public static final MoneroTxPriority PROTOCOL_FEE_PRIORITY = MoneroTxPriority.DEFAULT;
public static final int MONERO_LOG_LEVEL = -1; // monero library log level, -1 to disable public static final int MONERO_LOG_LEVEL = 1; // monero library log level, -1 to disable
private static final MoneroNetworkType MONERO_NETWORK_TYPE = getMoneroNetworkType(); private static final MoneroNetworkType MONERO_NETWORK_TYPE = getMoneroNetworkType();
private static final MoneroWalletRpcManager MONERO_WALLET_RPC_MANAGER = new MoneroWalletRpcManager(); private static final MoneroWalletRpcManager MONERO_WALLET_RPC_MANAGER = new MoneroWalletRpcManager();
private static final String MONERO_WALLET_RPC_USERNAME = "haveno_user"; private static final String MONERO_WALLET_RPC_USERNAME = "haveno_user";

View file

@ -1002,7 +1002,7 @@ portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=T
(with seller receiving full trade amount back as well). \ (with seller receiving full trade amount back as well). \
This way, there is no security risk, and only trade fees are lost. \n\n\ This way, there is no security risk, and only trade fees are lost. \n\n\
You can request a reimbursement for lost trade fees here: \ You can request a reimbursement for lost trade fees here: \
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing \ portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing \
but funds have been locked in the deposit transaction.\n\n\ but funds have been locked in the deposit transaction.\n\n\
If the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open \ If the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open \
@ -1011,18 +1011,18 @@ portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=
their security deposits (with seller receiving full trade amount back as well). \ their security deposits (with seller receiving full trade amount back as well). \
Otherwise the trade amount should go to the buyer. \n\n\ Otherwise the trade amount should go to the buyer. \n\n\
You can request a reimbursement for lost trade fees here: \ You can request a reimbursement for lost trade fees here: \
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\n\ portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\n\
Error: {0}\n\n\ Error: {0}\n\n\
It might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation \ It might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation \
ticket to get advice from Haveno mediators. \n\n\ ticket to get advice from Haveno mediators. \n\n\
If the error was critical and the trade cannot be completed, you might have lost your trade fee. \ If the error was critical and the trade cannot be completed, you might have lost your trade fee. \
Request a reimbursement for lost trade fees here: \ Request a reimbursement for lost trade fees here: \
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\n\ portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\n\
The trade cannot be completed and you might \ The trade cannot be completed and you might \
have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: \ have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: \
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0} portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0}
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\n\ portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\n\
Do you want to move the trade to failed trades?\n\n\ Do you want to move the trade to failed trades?\n\n\
@ -2141,7 +2141,7 @@ popup.headline.error=Error
popup.doNotShowAgain=Don't show again popup.doNotShowAgain=Don't show again
popup.reportError.log=Open log file popup.reportError.log=Open log file
popup.reportError.gitHub=Report to GitHub issue tracker popup.reportError.gitHub=Report to GitHub issue tracker
popup.reportError={0}\n\nTo help us to improve the software please report this bug by opening a new issue at https://github.com/MoneroEcosystem/haveno/issues.\n\ popup.reportError={0}\n\nTo help us to improve the software please report this bug by opening a new issue at https://github.com/haveno-dex/haveno/issues.\n\
The above error message will be copied to the clipboard when you click either of the buttons below.\n\ The above error message will be copied to the clipboard when you click either of the buttons below.\n\
It will make debugging easier if you include the haveno.log file by pressing "Open log file", saving a copy, and attaching it to your bug report. It will make debugging easier if you include the haveno.log file by pressing "Open log file", saving a copy, and attaching it to your bug report.
@ -2264,17 +2264,17 @@ popup.shutDownInProgress.msg=Shutting down application can take a few seconds.\n
popup.attention.forTradeWithId=Attention required for trade with ID {0} popup.attention.forTradeWithId=Attention required for trade with ID {0}
popup.attention.welcome.stagenet=Welcome to the Haveno test instance!\n\n\ popup.attention.welcome.stagenet=Welcome to the Haveno test instance!\n\n\
This platform allows you to test Haveno's protocol. Make sure to follow the instructions[HYPERLINK:https://github.com/MoneroEcosystem/haveno/blob/master/docs/installing.md].\n\n\ This platform allows you to test Haveno's protocol. Make sure to follow the instructions[HYPERLINK:https://github.com/haveno-dex/haveno/blob/master/docs/installing.md].\n\n\
If you encounter any problem, please let us know by opening an issue [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].\n\n\ If you encounter any problem, please let us know by opening an issue [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].\n\n\
This is a test instance. Do not use real money! This is a test instance. Do not use real money!
popup.attention.welcome.mainnet=Welcome to Haveno!\n\n\ popup.attention.welcome.mainnet=Welcome to Haveno!\n\n\
This platform allows you to trade Monero for fiat currencies or other cryptocurrencies in a decentralized way.\n\n\ This platform allows you to trade Monero for fiat currencies or other cryptocurrencies in a decentralized way.\n\n\
Get started by creating a new payment account then making or taking an offer.\n\n\ Get started by creating a new payment account then making or taking an offer.\n\n\
If you encounter any problem, please let us know by opening an issue [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new]. If you encounter any problem, please let us know by opening an issue [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].
popup.attention.welcome.mainnet.test=Welcome to Haveno!\n\n\ popup.attention.welcome.mainnet.test=Welcome to Haveno!\n\n\
This platform allows you to trade Monero for fiat currencies or other cryptocurrencies in a decentralized way.\n\n\ This platform allows you to trade Monero for fiat currencies or other cryptocurrencies in a decentralized way.\n\n\
Get started by creating a new payment account then making or taking an offer.\n\n\ Get started by creating a new payment account then making or taking an offer.\n\n\
If you encounter any problem, please let us know by opening an issue [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].\n\n\ If you encounter any problem, please let us know by opening an issue [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].\n\n\
Haveno was recently released for public testing. Please use small amounts! Haveno was recently released for public testing. Please use small amounts!
popup.info.multiplePaymentAccounts.headline=Multiple payment accounts available popup.info.multiplePaymentAccounts.headline=Multiple payment accounts available

View file

@ -967,7 +967,7 @@ portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=Z
(přičemž prodejce také obdrží plnou částku obchodu). \ (přičemž prodejce také obdrží plnou částku obchodu). \
Tímto způsobem nehrozí žádné bezpečnostní riziko a jsou ztraceny pouze obchodní poplatky.\n\n\ Tímto způsobem nehrozí žádné bezpečnostní riziko a jsou ztraceny pouze obchodní poplatky.\n\n\
O vrácení ztracených obchodních poplatků můžete požádat zde: \ O vrácení ztracených obchodních poplatků můžete požádat zde: \
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=Zpožděná výplatní transakce chybí, \ portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=Zpožděná výplatní transakce chybí, \
ale prostředky byly v depozitní transakci uzamčeny.\n\n\ ale prostředky byly v depozitní transakci uzamčeny.\n\n\
Pokud kupujícímu chybí také odložená výplatní transakce, bude poučen, aby platbu NEPOSLAL a místo toho otevřel \ Pokud kupujícímu chybí také odložená výplatní transakce, bude poučen, aby platbu NEPOSLAL a místo toho otevřel \
@ -976,18 +976,18 @@ portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=
svých bezpečnostních vkladů (přičemž prodejce také obdrží plnou částku obchodu). \ svých bezpečnostních vkladů (přičemž prodejce také obdrží plnou částku obchodu). \
Jinak by částka obchodu měla jít kupujícímu.\n\n\ Jinak by částka obchodu měla jít kupujícímu.\n\n\
O vrácení ztracených obchodních poplatků můžete požádat zde: \ O vrácení ztracených obchodních poplatků můžete požádat zde: \
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.errorMsgSet=Během provádění obchodního protokolu došlo k chybě.\n\n portfolio.pending.failedTrade.errorMsgSet=Během provádění obchodního protokolu došlo k chybě.\n\n
Chyba: {0}\n\n\ Chyba: {0}\n\n\
Je možné, že tato chyba není kritická a obchod lze dokončit normálně. Pokud si nejste jisti, otevřete si mediační úkol \ Je možné, že tato chyba není kritická a obchod lze dokončit normálně. Pokud si nejste jisti, otevřete si mediační úkol \
a získejte radu od mediátorů Haveno.\n\n\ a získejte radu od mediátorů Haveno.\n\n\
Pokud byla chyba kritická a obchod nelze dokončit, možná jste ztratili obchodní poplatek. \ Pokud byla chyba kritická a obchod nelze dokončit, možná jste ztratili obchodní poplatek. \
O vrácení ztracených obchodních poplatků požádejte zde: \ O vrácení ztracených obchodních poplatků požádejte zde: \
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.missingContract=Obchodní kontrakt není stanoven.\n\n\ portfolio.pending.failedTrade.missingContract=Obchodní kontrakt není stanoven.\n\n\
Obchod nelze dokončit a možná jste ztratili poplatek \ Obchod nelze dokončit a možná jste ztratili poplatek \
za obchodování. Pokud ano, můžete požádat o vrácení ztracených obchodních poplatků zde: \ za obchodování. Pokud ano, můžete požádat o vrácení ztracených obchodních poplatků zde: \
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.info.popup=Obchodní protokol narazil na některé problémy.\n\n{0} portfolio.pending.failedTrade.info.popup=Obchodní protokol narazil na některé problémy.\n\n{0}
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=Obchodní protokol narazil na vážný problém.\n\n{0}\n\n\ portfolio.pending.failedTrade.txChainInvalid.moveToFailed=Obchodní protokol narazil na vážný problém.\n\n{0}\n\n\
Chcete obchod přesunout do neúspěšných obchodů?\n\n\ Chcete obchod přesunout do neúspěšných obchodů?\n\n\
@ -2099,7 +2099,7 @@ popup.headline.error=Chyba
popup.doNotShowAgain=Znovu nezobrazovat popup.doNotShowAgain=Znovu nezobrazovat
popup.reportError.log=Otevřít log popup.reportError.log=Otevřít log
popup.reportError.gitHub=Nahlaste problém na GitHub popup.reportError.gitHub=Nahlaste problém na GitHub
popup.reportError={0}\n\nChcete-li nám pomoci vylepšit software, nahlaste tuto chybu otevřením nového problému na adrese https://github.com/MoneroEcosystem/haveno/issues.\n\ popup.reportError={0}\n\nChcete-li nám pomoci vylepšit software, nahlaste tuto chybu otevřením nového problému na adrese https://github.com/haveno-dex/haveno/issues.\n\
Výše uvedená chybová zpráva bude zkopírována do schránky po kliknutí na některé z níže uvedených tlačítek.\n\ Výše uvedená chybová zpráva bude zkopírována do schránky po kliknutí na některé z níže uvedených tlačítek.\n\
Usnadníte ladění, pokud zahrnete soubor haveno.log stisknutím tlačítka 'Otevřít log soubor', uložením kopie a připojením ke hlášení chyby. Usnadníte ladění, pokud zahrnete soubor haveno.log stisknutím tlačítka 'Otevřít log soubor', uložením kopie a připojením ke hlášení chyby.
@ -2222,17 +2222,17 @@ popup.shutDownInProgress.msg=Vypnutí aplikace může trvat několik sekund.\nPr
popup.attention.forTradeWithId=Je třeba věnovat pozornost obchodu ID {0} popup.attention.forTradeWithId=Je třeba věnovat pozornost obchodu ID {0}
popup.attention.welcome.stagenet=Vítejte v testovací instanci Haveno!\n\n\ popup.attention.welcome.stagenet=Vítejte v testovací instanci Haveno!\n\n\
Tato platforma umožňuje testovat protokol Haveno. Ujistěte se, že postupujete podle pokynů [HYPERLINK:https://github.com/MoneroEcosystem/haveno/blob/master/docs/installing.md].\n\n\ Tato platforma umožňuje testovat protokol Haveno. Ujistěte se, že postupujete podle pokynů [HYPERLINK:https://github.com/haveno-dex/haveno/blob/master/docs/installing.md].\n\n\
Pokud narazíte na nějaký problém, dejte nám prosím vědět [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].\n\n\ Pokud narazíte na nějaký problém, dejte nám prosím vědět [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].\n\n\
Jedná se o testovací instanci. Nepoužívejte skutečné peníze! Jedná se o testovací instanci. Nepoužívejte skutečné peníze!
popup.attention.welcome.mainnet=Vítejte v Haveno!\n\n\ popup.attention.welcome.mainnet=Vítejte v Haveno!\n\n\
Tato platforma umožňuje decentralizovaně obchodovat s měnou Monero za fiat měny nebo jiné kryptoměny.\n\n\ Tato platforma umožňuje decentralizovaně obchodovat s měnou Monero za fiat měny nebo jiné kryptoměny.\n\n\
Začněte tím, že si vytvoříte nový platební účet a poté vytvoříte nebo přijmete nabídku.\n\n\ Začněte tím, že si vytvoříte nový platební účet a poté vytvoříte nebo přijmete nabídku.\n\n\
Pokud narazíte na nějaký problém, dejte nám prosím vědět [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new]. Pokud narazíte na nějaký problém, dejte nám prosím vědět [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].
popup.attention.welcome.mainnet.test=Vítejte v Haveno!\n\n\ popup.attention.welcome.mainnet.test=Vítejte v Haveno!\n\n\
Tato platforma umožňuje decentralizovaně obchodovat s měnou Monero za fiat měny nebo jiné kryptoměny.\n\n\ Tato platforma umožňuje decentralizovaně obchodovat s měnou Monero za fiat měny nebo jiné kryptoměny.\n\n\
Začněte tím, že si vytvoříte nový platební účet a poté vytvoříte nebo přijmete nabídku.\n\n\ Začněte tím, že si vytvoříte nový platební účet a poté vytvoříte nebo přijmete nabídku.\n\n\
Pokud narazíte na nějaký problém, dejte nám prosím vědět [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].\n\n\ Pokud narazíte na nějaký problém, dejte nám prosím vědět [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].\n\n\
Systém Haveno byl nedávno uvolněn k veřejnému testování. Používejte prosím nízké částky! Systém Haveno byl nedávno uvolněn k veřejnému testování. Používejte prosím nízké částky!
popup.info.multiplePaymentAccounts.headline=K dispozici jsou účty a více platebními metodami popup.info.multiplePaymentAccounts.headline=K dispozici jsou účty a více platebními metodami

View file

@ -821,10 +821,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=Sie haben bereits akzept
portfolio.pending.failedTrade.taker.missingTakerFeeTx=Die Transaktion der Abnehmer-Gebühr fehlt.\n\nOhne diese tx kann der Handel nicht abgeschlossen werden. Keine Gelder wurden gesperrt und keine Handelsgebühr wurde bezahlt. Sie können diesen Handel zu den fehlgeschlagenen Händeln verschieben. portfolio.pending.failedTrade.taker.missingTakerFeeTx=Die Transaktion der Abnehmer-Gebühr fehlt.\n\nOhne diese tx kann der Handel nicht abgeschlossen werden. Keine Gelder wurden gesperrt und keine Handelsgebühr wurde bezahlt. Sie können diesen Handel zu den fehlgeschlagenen Händeln verschieben.
portfolio.pending.failedTrade.maker.missingTakerFeeTx=Die Transaktion der Abnehmer-Gebühr fehlt.\n\nOhne diese tx kann der Handel nicht abgeschlossen werden. Keine Gelder wurden gesperrt. Ihr Angebot ist für andere Händler weiterhin verfügbar. Sie haben die Ersteller-Gebühr also nicht verloren. Sie können diesen Handel zu den fehlgeschlagenen Händeln verschieben. portfolio.pending.failedTrade.maker.missingTakerFeeTx=Die Transaktion der Abnehmer-Gebühr fehlt.\n\nOhne diese tx kann der Handel nicht abgeschlossen werden. Keine Gelder wurden gesperrt. Ihr Angebot ist für andere Händler weiterhin verfügbar. Sie haben die Ersteller-Gebühr also nicht verloren. Sie können diesen Handel zu den fehlgeschlagenen Händeln verschieben.
portfolio.pending.failedTrade.missingDepositTx=Eine Einzahlungstransaktion fehlt.\n\nDiese Transaktion ist erforderlich, um den Handel abzuschließen. Bitte stellen Sie sicher, dass Ihre Wallet vollständig mit der Monero-Blockchain synchronisiert ist.\n\nSie können diesen Handel in den Bereich „Fehlgeschlagene Trades“ verschieben, um ihn zu deaktivieren. portfolio.pending.failedTrade.missingDepositTx=Eine Einzahlungstransaktion fehlt.\n\nDiese Transaktion ist erforderlich, um den Handel abzuschließen. Bitte stellen Sie sicher, dass Ihre Wallet vollständig mit der Monero-Blockchain synchronisiert ist.\n\nSie können diesen Handel in den Bereich „Fehlgeschlagene Trades“ verschieben, um ihn zu deaktivieren.
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=Die verzögerte Auszahlungstransaktion fehlt, aber die Gelder wurden in der Einzahlungstransaktion gesperrt.\n\nBitte schicken Sie KEINE Geld-(Traditional-) oder Crypto-Zahlungen an den XMR Verkäufer, weil ohne die verzögerte Auszahlungstransaktion später kein Schlichtungsverfahren eröffnet werden kann. Stattdessen öffnen Sie ein Vermittlungs-Ticket mit Cmd/Strg+o. Der Vermittler sollte vorschlagen, dass beide Handelspartner ihre vollständige Sicherheitskaution zurückerstattet bekommen (und der Verkäufer auch seinen Handels-Betrag). Durch diese Vorgehensweise entsteht kein Sicherheitsrisiko und es geht ausschließlich die Handelsgebühr verloren.\n\nSie können eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier erbitten: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=Die verzögerte Auszahlungstransaktion fehlt, aber die Gelder wurden in der Einzahlungstransaktion gesperrt.\n\nBitte schicken Sie KEINE Geld-(Traditional-) oder Crypto-Zahlungen an den XMR Verkäufer, weil ohne die verzögerte Auszahlungstransaktion später kein Schlichtungsverfahren eröffnet werden kann. Stattdessen öffnen Sie ein Vermittlungs-Ticket mit Cmd/Strg+o. Der Vermittler sollte vorschlagen, dass beide Handelspartner ihre vollständige Sicherheitskaution zurückerstattet bekommen (und der Verkäufer auch seinen Handels-Betrag). Durch diese Vorgehensweise entsteht kein Sicherheitsrisiko und es geht ausschließlich die Handelsgebühr verloren.\n\nSie können eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier erbitten: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=Die verzögerte Auszahlungstransaktion fehlt, aber die Gelder wurden in der Einzahlungstransaktion gesperrt.\n\nWenn dem Käufer die verzögerte Auszahlungstransaktion auch fehlt, wird er dazu aufgefordert die Bezahlung NICHT zu schicken und stattdessen ein Vermittlungs-Ticket zu eröffnen. Sie sollten auch ein Vermittlungs-Ticket mit Cmd/Strg+o öffnen.\n\nWenn der Käufer die Zahlung noch nicht geschickt hat, sollte der Vermittler vorschlagen, dass beide Handelspartner ihre Sicherheitskaution vollständig zurückerhalten (und der Verkäufer auch den Handels-Betrag). Anderenfalls sollte der Handels-Betrag an den Käufer gehen.\n\nSie können eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier erbitten: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=Die verzögerte Auszahlungstransaktion fehlt, aber die Gelder wurden in der Einzahlungstransaktion gesperrt.\n\nWenn dem Käufer die verzögerte Auszahlungstransaktion auch fehlt, wird er dazu aufgefordert die Bezahlung NICHT zu schicken und stattdessen ein Vermittlungs-Ticket zu eröffnen. Sie sollten auch ein Vermittlungs-Ticket mit Cmd/Strg+o öffnen.\n\nWenn der Käufer die Zahlung noch nicht geschickt hat, sollte der Vermittler vorschlagen, dass beide Handelspartner ihre Sicherheitskaution vollständig zurückerhalten (und der Verkäufer auch den Handels-Betrag). Anderenfalls sollte der Handels-Betrag an den Käufer gehen.\n\nSie können eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier erbitten: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.errorMsgSet=Während der Ausführung des Handel-Protokolls ist ein Fehler aufgetreten.\n\nFehler: {0}\n\nEs kann sein, dass dieser Fehler nicht gravierend ist und der Handel ganz normal abgeschlossen werden kann. Wenn Sie sich unsicher sind, öffnen Sie ein Vermittlungs-Ticket um den Rat eines Haveno Vermittlers zu erhalten.\n\nWenn der Fehler gravierend war, kann der Handel nicht abgeschlossen werden und Sie haben vielleicht die Handelsgebühr verloren. Sie können eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier erbitten: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.errorMsgSet=Während der Ausführung des Handel-Protokolls ist ein Fehler aufgetreten.\n\nFehler: {0}\n\nEs kann sein, dass dieser Fehler nicht gravierend ist und der Handel ganz normal abgeschlossen werden kann. Wenn Sie sich unsicher sind, öffnen Sie ein Vermittlungs-Ticket um den Rat eines Haveno Vermittlers zu erhalten.\n\nWenn der Fehler gravierend war, kann der Handel nicht abgeschlossen werden und Sie haben vielleicht die Handelsgebühr verloren. Sie können eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier erbitten: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.missingContract=Der Handelsvertrag ist nicht festgelegt.\n\nDer Handel kann nicht abgeschlossen werden und Sie haben möglicherweise die Handelsgebühr verloren. Sollte das der Fall sein, können Sie eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier beantragen: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.missingContract=Der Handelsvertrag ist nicht festgelegt.\n\nDer Handel kann nicht abgeschlossen werden und Sie haben möglicherweise die Handelsgebühr verloren. Sollte das der Fall sein, können Sie eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier beantragen: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.info.popup=Das Handels-Protokoll hat ein paar Probleme gefunden.\n\n{0} portfolio.pending.failedTrade.info.popup=Das Handels-Protokoll hat ein paar Probleme gefunden.\n\n{0}
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=Das Handels-Protokoll hat ein schwerwiegendes Problem gefunden.\n\n{0}\n\nWollen Sie den Handel zu den fehlgeschlagenen Händeln verschieben?\n\nSie können keine Vermittlungs- oder Schlichtungsverfahren auf der Seite für fehlgeschlagene Händel eröffnen, aber Sie können einen fehlgeschlagene Handel wieder auf die Seite der offenen Händeln zurück verschieben. portfolio.pending.failedTrade.txChainInvalid.moveToFailed=Das Handels-Protokoll hat ein schwerwiegendes Problem gefunden.\n\n{0}\n\nWollen Sie den Handel zu den fehlgeschlagenen Händeln verschieben?\n\nSie können keine Vermittlungs- oder Schlichtungsverfahren auf der Seite für fehlgeschlagene Händel eröffnen, aber Sie können einen fehlgeschlagene Handel wieder auf die Seite der offenen Händeln zurück verschieben.
portfolio.pending.failedTrade.txChainValid.moveToFailed=Das Handels-Protokoll hat ein paar Probleme gefunden.\n\n{0}\n\nDie Transaktionen des Handels wurden veröffentlicht und die Gelder sind gesperrt. Verschieben Sie den Handel nur dann zu den fehlgeschlagenen Händeln, wenn Sie sich wirklich sicher sind. Dies könnte Optionen zur Behebung des Problems verhindern.\n\nWollen Sie den Handel zu den fehlgeschlagenen Händeln verschieben?\n\nSie können keine Vermittlungs- oder Schlichtungsverfahren auf der Seite für fehlgeschlagene Händel eröffnen, aber Sie können einen fehlgeschlagene Handel wieder auf die Seite der offenen Händeln zurück verschieben. portfolio.pending.failedTrade.txChainValid.moveToFailed=Das Handels-Protokoll hat ein paar Probleme gefunden.\n\n{0}\n\nDie Transaktionen des Handels wurden veröffentlicht und die Gelder sind gesperrt. Verschieben Sie den Handel nur dann zu den fehlgeschlagenen Händeln, wenn Sie sich wirklich sicher sind. Dies könnte Optionen zur Behebung des Problems verhindern.\n\nWollen Sie den Handel zu den fehlgeschlagenen Händeln verschieben?\n\nSie können keine Vermittlungs- oder Schlichtungsverfahren auf der Seite für fehlgeschlagene Händel eröffnen, aber Sie können einen fehlgeschlagene Handel wieder auf die Seite der offenen Händeln zurück verschieben.
@ -1590,7 +1590,7 @@ popup.headline.error=Fehler
popup.doNotShowAgain=Nicht erneut anzeigen popup.doNotShowAgain=Nicht erneut anzeigen
popup.reportError.log=Protokolldatei öffnen popup.reportError.log=Protokolldatei öffnen
popup.reportError.gitHub=Auf GitHub-Issue-Tracker melden popup.reportError.gitHub=Auf GitHub-Issue-Tracker melden
popup.reportError={0}\n\nUm uns bei der Verbesserung der Software zu helfen, erstellen Sie bitte einen Fehler-Bericht auf https://github.com/MoneroEcosystem/haveno/issues.\nDie Fehlermeldung wird in die Zwischenablage kopiert, wenn Sie auf einen der Knöpfe unten klicken.\nEs wird das Debuggen einfacher machen, wenn Sie die haveno.log Datei anfügen indem Sie "Logdatei öffnen" klicken, eine Kopie speichern und diese dem Fehler-Bericht anfügen. popup.reportError={0}\n\nUm uns bei der Verbesserung der Software zu helfen, erstellen Sie bitte einen Fehler-Bericht auf https://github.com/haveno-dex/haveno/issues.\nDie Fehlermeldung wird in die Zwischenablage kopiert, wenn Sie auf einen der Knöpfe unten klicken.\nEs wird das Debuggen einfacher machen, wenn Sie die haveno.log Datei anfügen indem Sie "Logdatei öffnen" klicken, eine Kopie speichern und diese dem Fehler-Bericht anfügen.
popup.error.tryRestart=Versuchen Sie bitte Ihre Anwendung neu zu starten und überprüfen Sie Ihre Netzwerkverbindung um zu sehen, ob Sie das Problem beheben können. popup.error.tryRestart=Versuchen Sie bitte Ihre Anwendung neu zu starten und überprüfen Sie Ihre Netzwerkverbindung um zu sehen, ob Sie das Problem beheben können.
popup.error.takeOfferRequestFailed=Es ist ein Fehler aufgetreten, als jemand versuchte eins Ihrer Angebote anzunehmen:\n{0} popup.error.takeOfferRequestFailed=Es ist ein Fehler aufgetreten, als jemand versuchte eins Ihrer Angebote anzunehmen:\n{0}

View file

@ -820,10 +820,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=You've already accepted
portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades. portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades.
portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades. portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades.
portfolio.pending.failedTrade.missingDepositTx=یک تراکنش واریز مفقود است.\n\nاین تراکنش برای تکمیل معامله لازم است. لطفاً اطمینان حاصل کنید که کیف پول شما به‌طور کامل با بلاک‌چین مونرو همگام‌سازی شده است.\n\nمیتوانید این معامله را به بخش «معاملات ناموفق» منتقل کنید تا غیرفعال شود. portfolio.pending.failedTrade.missingDepositTx=یک تراکنش واریز مفقود است.\n\nاین تراکنش برای تکمیل معامله لازم است. لطفاً اطمینان حاصل کنید که کیف پول شما به‌طور کامل با بلاک‌چین مونرو همگام‌سازی شده است.\n\nمیتوانید این معامله را به بخش «معاملات ناموفق» منتقل کنید تا غیرفعال شود.
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0} portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0}
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time. portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time. portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
@ -1586,7 +1586,7 @@ popup.headline.error=خطا
popup.doNotShowAgain=دوباره نشان نده popup.doNotShowAgain=دوباره نشان نده
popup.reportError.log=باز کردن فایل گزارش popup.reportError.log=باز کردن فایل گزارش
popup.reportError.gitHub=گزارش به پیگیر مسائل GitHub  popup.reportError.gitHub=گزارش به پیگیر مسائل GitHub 
popup.reportError={0}\n\nTo help us to improve the software please report this bug by opening a new issue at https://github.com/MoneroEcosystem/haveno/issues.\nThe above error message will be copied to the clipboard when you click either of the buttons below.\nIt will make debugging easier if you include the haveno.log file by pressing "Open log file", saving a copy, and attaching it to your bug report. popup.reportError={0}\n\nTo help us to improve the software please report this bug by opening a new issue at https://github.com/haveno-dex/haveno/issues.\nThe above error message will be copied to the clipboard when you click either of the buttons below.\nIt will make debugging easier if you include the haveno.log file by pressing "Open log file", saving a copy, and attaching it to your bug report.
popup.error.tryRestart=لطفاً سعی کنید برنامه را مجدداً راه اندازی کنید و اتصال شبکه خود را بررسی کنید تا ببینید آیا می توانید مشکل را حل کنید یا خیر. popup.error.tryRestart=لطفاً سعی کنید برنامه را مجدداً راه اندازی کنید و اتصال شبکه خود را بررسی کنید تا ببینید آیا می توانید مشکل را حل کنید یا خیر.
popup.error.takeOfferRequestFailed=وقتی کسی تلاش کرد تا یکی از پیشنهادات شما را بپذیرد خطایی رخ داد:\n{0} popup.error.takeOfferRequestFailed=وقتی کسی تلاش کرد تا یکی از پیشنهادات شما را بپذیرد خطایی رخ داد:\n{0}

View file

@ -822,10 +822,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=Vous avez déjà accept
portfolio.pending.failedTrade.taker.missingTakerFeeTx=Le frais de transaction du preneur est manquant.\n\nSans ce tx, le trade ne peut être complété. Aucun fonds ont été verrouillés et aucun frais de trade a été payé. Vous pouvez déplacer ce trade vers les trade échoués. portfolio.pending.failedTrade.taker.missingTakerFeeTx=Le frais de transaction du preneur est manquant.\n\nSans ce tx, le trade ne peut être complété. Aucun fonds ont été verrouillés et aucun frais de trade a été payé. Vous pouvez déplacer ce trade vers les trade échoués.
portfolio.pending.failedTrade.maker.missingTakerFeeTx=Le frais de transaction du pair preneur est manquant.\n\nSans ce tx, le trade ne peut être complété. Aucun fonds ont été verrouillés. Votre offre est toujours valable pour les autres traders, vous n'avez donc pas perdu le frais de maker. Vous pouvez déplacer ce trade vers les trades échoués. portfolio.pending.failedTrade.maker.missingTakerFeeTx=Le frais de transaction du pair preneur est manquant.\n\nSans ce tx, le trade ne peut être complété. Aucun fonds ont été verrouillés. Votre offre est toujours valable pour les autres traders, vous n'avez donc pas perdu le frais de maker. Vous pouvez déplacer ce trade vers les trades échoués.
portfolio.pending.failedTrade.missingDepositTx=Une transaction de dépôt est manquante.\n\nCette transaction est nécessaire pour compléter la transaction. Veuillez vous assurer que votre portefeuille est entièrement synchronisé avec la blockchain Monero.\n\nVous pouvez déplacer cette transaction dans la section « Transactions échouées » pour la désactiver. portfolio.pending.failedTrade.missingDepositTx=Une transaction de dépôt est manquante.\n\nCette transaction est nécessaire pour compléter la transaction. Veuillez vous assurer que votre portefeuille est entièrement synchronisé avec la blockchain Monero.\n\nVous pouvez déplacer cette transaction dans la section « Transactions échouées » pour la désactiver.
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=La transaction de paiement différée est manquante, mais les fonds ont été verrouillés dans la transaction de dépôt.\n\nVeuillez NE PAS envoyer de Fiat ou d'crypto au vendeur de XMR, car avec le tx de paiement différé, le jugemenbt ne peut être ouvert. À la place, ouvrez un ticket de médiation avec Cmd/Ctrl+O. Le médiateur devrait suggérer que les deux pair reçoivent tous les deux le montant total de leurs dépôts de sécurité (le vendeur aussi doit reçevoir le montant total du trade). De cette manière, il n'y a pas de risque de non sécurité, et seuls les frais du trade sont perdus.\n\nVous pouvez demander le remboursement des frais de trade perdus ici;\n[LIEN:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=La transaction de paiement différée est manquante, mais les fonds ont été verrouillés dans la transaction de dépôt.\n\nVeuillez NE PAS envoyer de Fiat ou d'crypto au vendeur de XMR, car avec le tx de paiement différé, le jugemenbt ne peut être ouvert. À la place, ouvrez un ticket de médiation avec Cmd/Ctrl+O. Le médiateur devrait suggérer que les deux pair reçoivent tous les deux le montant total de leurs dépôts de sécurité (le vendeur aussi doit reçevoir le montant total du trade). De cette manière, il n'y a pas de risque de non sécurité, et seuls les frais du trade sont perdus.\n\nVous pouvez demander le remboursement des frais de trade perdus ici;\n[LIEN:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=La transaction de paiement différée est manquante, mais les fonds ont été verrouillés dans la transaction de dépôt.\n\nSi l'acheteur n'a pas non plus la transaction de paiement différée, il sera informé du fait de ne PAS envoyer le paiement et d'ouvrir un ticket de médiation à la place. Vous devriez aussi ouvrir un ticket de médiation avec Cmd/Ctrl+o.\n\nSi l'acheteur n'a pas encore envoyé le paiement, le médiateur devrait suggérer que les deux pairs reçoivent le montant total de leurs dépôts de sécurité (le vendeur doit aussi reçevoir le montant total du trade). Sinon, le montant du trade revient à l'acheteur.\n\nVous pouvez effectuer une demande de remboursement pour les frais de trade perdus ici: [LIEN:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=La transaction de paiement différée est manquante, mais les fonds ont été verrouillés dans la transaction de dépôt.\n\nSi l'acheteur n'a pas non plus la transaction de paiement différée, il sera informé du fait de ne PAS envoyer le paiement et d'ouvrir un ticket de médiation à la place. Vous devriez aussi ouvrir un ticket de médiation avec Cmd/Ctrl+o.\n\nSi l'acheteur n'a pas encore envoyé le paiement, le médiateur devrait suggérer que les deux pairs reçoivent le montant total de leurs dépôts de sécurité (le vendeur doit aussi reçevoir le montant total du trade). Sinon, le montant du trade revient à l'acheteur.\n\nVous pouvez effectuer une demande de remboursement pour les frais de trade perdus ici: [LIEN:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.errorMsgSet=Il y'a eu une erreur durant l'exécution du protocole de trade.\n\nErreur: {0}\n\nIl est possible que cette erreur ne soit pas critique, et que le trade puisse être complété normalement. Si vous n'en êtes pas sûr, ouvrez un ticket de médiation pour avoir des conseils de la part des médiateurs de Haveno.\n\nSi cette erreur est critique et que le trade ne peut être complété, il est possible que vous ayez perdu le frais du trade. Effectuez une demande de remboursement ici: [LIEN:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.errorMsgSet=Il y'a eu une erreur durant l'exécution du protocole de trade.\n\nErreur: {0}\n\nIl est possible que cette erreur ne soit pas critique, et que le trade puisse être complété normalement. Si vous n'en êtes pas sûr, ouvrez un ticket de médiation pour avoir des conseils de la part des médiateurs de Haveno.\n\nSi cette erreur est critique et que le trade ne peut être complété, il est possible que vous ayez perdu le frais du trade. Effectuez une demande de remboursement ici: [LIEN:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.missingContract=Le contrat de trade n'est pas complété.\n\nCe trade ne peut être complété et il est possible que vous ayiez perdu votre frais de trade. Dans ce cas, vous pouvez demander un remboursement des frais de trade perdus ici: [LIEN:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.missingContract=Le contrat de trade n'est pas complété.\n\nCe trade ne peut être complété et il est possible que vous ayiez perdu votre frais de trade. Dans ce cas, vous pouvez demander un remboursement des frais de trade perdus ici: [LIEN:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.info.popup=Le protocole de trade a rencontré quelques problèmes/\n\n{0} portfolio.pending.failedTrade.info.popup=Le protocole de trade a rencontré quelques problèmes/\n\n{0}
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=Le protocole de trade a rencontré un problème critique.\n\n{0}\n\nVoulez-vous déplacer ce trade vers les trades échoués?\n\nVous ne pouvez pas ouvrir de médiations ou de jugements depuis la liste des trades échoués, mais vous pouvez redéplacer un trade échoué vers l'écran des trades ouverts quand vous le souhaitez. portfolio.pending.failedTrade.txChainInvalid.moveToFailed=Le protocole de trade a rencontré un problème critique.\n\n{0}\n\nVoulez-vous déplacer ce trade vers les trades échoués?\n\nVous ne pouvez pas ouvrir de médiations ou de jugements depuis la liste des trades échoués, mais vous pouvez redéplacer un trade échoué vers l'écran des trades ouverts quand vous le souhaitez.
portfolio.pending.failedTrade.txChainValid.moveToFailed=Il y a des problèmes avec cet accord de transaction. \n\n{0}\n\nLa transaction de devis a été validée et les fonds ont été bloqués. Déplacer la transaction vers une transaction échouée uniquement si elle est certaine. Cela peut empêcher les options disponibles pour résoudre le problème. \n\nÊtes-vous sûr de vouloir déplacer cette transaction vers la transaction échouée? \n\nVous ne pouvez pas ouvrir une médiation ou un arbitrage dans une transaction échouée, mais vous pouvez déplacer une transaction échouée vers la transaction incomplète à tout moment. portfolio.pending.failedTrade.txChainValid.moveToFailed=Il y a des problèmes avec cet accord de transaction. \n\n{0}\n\nLa transaction de devis a été validée et les fonds ont été bloqués. Déplacer la transaction vers une transaction échouée uniquement si elle est certaine. Cela peut empêcher les options disponibles pour résoudre le problème. \n\nÊtes-vous sûr de vouloir déplacer cette transaction vers la transaction échouée? \n\nVous ne pouvez pas ouvrir une médiation ou un arbitrage dans une transaction échouée, mais vous pouvez déplacer une transaction échouée vers la transaction incomplète à tout moment.
@ -1592,7 +1592,7 @@ popup.headline.error=Erreur
popup.doNotShowAgain=Ne plus montrer popup.doNotShowAgain=Ne plus montrer
popup.reportError.log=Ouvrir le dossier de log popup.reportError.log=Ouvrir le dossier de log
popup.reportError.gitHub=Signaler au Tracker de problème GitHub popup.reportError.gitHub=Signaler au Tracker de problème GitHub
popup.reportError={0}\n\nAfin de nous aider à améliorer le logiciel, veuillez signaler ce bug en ouvrant un nouveau ticket de support sur https://github.com/MoneroEcosystem/haveno/issues.\nLe message d''erreur ci-dessus sera copié dans le presse-papier lorsque vous cliquerez sur l''un des boutons ci-dessous.\nCela facilitera le dépannage si vous incluez le fichier haveno.log en appuyant sur "ouvrir le fichier de log", en sauvegardant une copie, et en l''attachant à votre rapport de bug. popup.reportError={0}\n\nAfin de nous aider à améliorer le logiciel, veuillez signaler ce bug en ouvrant un nouveau ticket de support sur https://github.com/haveno-dex/haveno/issues.\nLe message d''erreur ci-dessus sera copié dans le presse-papier lorsque vous cliquerez sur l''un des boutons ci-dessous.\nCela facilitera le dépannage si vous incluez le fichier haveno.log en appuyant sur "ouvrir le fichier de log", en sauvegardant une copie, et en l''attachant à votre rapport de bug.
popup.error.tryRestart=Veuillez essayer de redémarrer votre application et vérifier votre connexion réseau pour voir si vous pouvez résoudre ce problème. popup.error.tryRestart=Veuillez essayer de redémarrer votre application et vérifier votre connexion réseau pour voir si vous pouvez résoudre ce problème.
popup.error.takeOfferRequestFailed=Une erreur est survenue pendant que quelqu''un essayait d''accepter l''un de vos ordres:\n{0} popup.error.takeOfferRequestFailed=Une erreur est survenue pendant que quelqu''un essayait d''accepter l''un de vos ordres:\n{0}

View file

@ -821,10 +821,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=すでに受け入れて
portfolio.pending.failedTrade.taker.missingTakerFeeTx=欠測テイカー手数料のトランザクション。\n\nこのtxがなければ、トレードを完了できません。資金はロックされず、トレード手数料は支払いませんでした。「失敗トレード」へ送ることができます。 portfolio.pending.failedTrade.taker.missingTakerFeeTx=欠測テイカー手数料のトランザクション。\n\nこのtxがなければ、トレードを完了できません。資金はロックされず、トレード手数料は支払いませんでした。「失敗トレード」へ送ることができます。
portfolio.pending.failedTrade.maker.missingTakerFeeTx=ピアのテイカー手数料のトランザクションは欠測します。\n\nこのtxがなければ、トレードを完了できません。資金はロックされませんでした。あなたのオファーがまだ他の取引者には有効ですので、メイカー手数料は失っていません。このトレードを「失敗トレード」へ送ることができます。 portfolio.pending.failedTrade.maker.missingTakerFeeTx=ピアのテイカー手数料のトランザクションは欠測します。\n\nこのtxがなければ、トレードを完了できません。資金はロックされませんでした。あなたのオファーがまだ他の取引者には有効ですので、メイカー手数料は失っていません。このトレードを「失敗トレード」へ送ることができます。
portfolio.pending.failedTrade.missingDepositTx=入金トランザクションが見つかりません。\n\nこのトランザクションは取引を完了するために必要です。Moneroブロックチェーンとウォレットが完全に同期されていることを確認してください。\n\nこの取引を「失敗した取引」セクションに移動して、無効化することができます。 portfolio.pending.failedTrade.missingDepositTx=入金トランザクションが見つかりません。\n\nこのトランザクションは取引を完了するために必要です。Moneroブロックチェーンとウォレットが完全に同期されていることを確認してください。\n\nこの取引を「失敗した取引」セクションに移動して、無効化することができます。
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=遅延支払いトランザクションは欠測しますが、資金は入金トランザクションにロックされました。\n\nこの法定通貨・アルトコイン支払いをXMR売り手に送信しないで下さい。遅延支払いtxがなければ、係争仲裁は開始されることができません。代りに、「Cmd/Ctrl+o」で調停チケットをオープンして下さい。調停者はおそらく両方のピアへセキュリティデポジットの全額を払い戻しを提案します売り手はトレード金額も払い戻しを受ける。このような方法でセキュリティーのリスクがなし、トレード手数料のみが失われます。\n\n失われたトレード手数料の払い戻し要求はここから提出できます [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=遅延支払いトランザクションは欠測しますが、資金は入金トランザクションにロックされました。\n\nこの法定通貨・アルトコイン支払いをXMR売り手に送信しないで下さい。遅延支払いtxがなければ、係争仲裁は開始されることができません。代りに、「Cmd/Ctrl+o」で調停チケットをオープンして下さい。調停者はおそらく両方のピアへセキュリティデポジットの全額を払い戻しを提案します売り手はトレード金額も払い戻しを受ける。このような方法でセキュリティーのリスクがなし、トレード手数料のみが失われます。\n\n失われたトレード手数料の払い戻し要求はここから提出できます [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=遅延支払いトランザクションは欠測しますが、資金は入金トランザクションにロックされました。\n\n買い手の遅延支払いトランザクションが同じく欠測される場合、相手は支払いを送信せず調停チケットをオープンするように指示されます。同様に「Cmd/Ctrl+o」で調停チケットをオープンするのは賢明でしょう。\n\n買い手はまだ支払いを送信しなかった場合、調停者はおそらく両方のピアへセキュリティデポジットの全額を払い戻しを提案します売り手はトレード金額も払い戻しを受ける。さもなければ、トレード金額は買い手に支払われるでしょう。\n\n失われたトレード手数料の払い戻し要求はここから提出できます [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=遅延支払いトランザクションは欠測しますが、資金は入金トランザクションにロックされました。\n\n買い手の遅延支払いトランザクションが同じく欠測される場合、相手は支払いを送信せず調停チケットをオープンするように指示されます。同様に「Cmd/Ctrl+o」で調停チケットをオープンするのは賢明でしょう。\n\n買い手はまだ支払いを送信しなかった場合、調停者はおそらく両方のピアへセキュリティデポジットの全額を払い戻しを提案します売り手はトレード金額も払い戻しを受ける。さもなければ、トレード金額は買い手に支払われるでしょう。\n\n失われたトレード手数料の払い戻し要求はここから提出できます [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.errorMsgSet=トレードプロトコルの実行にはエラーが生じました。\n\nエラー {0}\n\nクリティカル・エラーではない可能性はあり、トレードは普通に完了できるかもしれない。迷う場合は調停チケットをオープンして、Haveno調停者からアドバイスを受けることができます。\n\nクリティカル・エラーでトレードが完了できなかった場合はトレード手数料は失われた可能性があります。失われたトレード手数料の払い戻し要求はここから提出できます [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.errorMsgSet=トレードプロトコルの実行にはエラーが生じました。\n\nエラー {0}\n\nクリティカル・エラーではない可能性はあり、トレードは普通に完了できるかもしれない。迷う場合は調停チケットをオープンして、Haveno調停者からアドバイスを受けることができます。\n\nクリティカル・エラーでトレードが完了できなかった場合はトレード手数料は失われた可能性があります。失われたトレード手数料の払い戻し要求はここから提出できます [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.missingContract=トレード契約書は設定されません。\n\nトレードは完了できません。トレード手数料は失われた可能性もあります。その場合は失われたトレード手数料の払い戻し要求はここから提出できます [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.missingContract=トレード契約書は設定されません。\n\nトレードは完了できません。トレード手数料は失われた可能性もあります。その場合は失われたトレード手数料の払い戻し要求はここから提出できます [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.info.popup=トレードプロトコルは問題に遭遇しました。\n\n{0} portfolio.pending.failedTrade.info.popup=トレードプロトコルは問題に遭遇しました。\n\n{0}
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=トレードプロトコルは深刻な問題に遭遇しました。\n\n{0}\n\nトレードを「失敗トレード」へ送りますか\n\n「失敗トレード」画面から調停・仲裁を開始できませんけど、失敗トレードがいつでも「オープントレード」へ戻されることができます。 portfolio.pending.failedTrade.txChainInvalid.moveToFailed=トレードプロトコルは深刻な問題に遭遇しました。\n\n{0}\n\nトレードを「失敗トレード」へ送りますか\n\n「失敗トレード」画面から調停・仲裁を開始できませんけど、失敗トレードがいつでも「オープントレード」へ戻されることができます。
portfolio.pending.failedTrade.txChainValid.moveToFailed=トレードプロトコルは問題に遭遇しました。\n\n{0}\n\nトレードのトランザクションは公開され、資金はロックされました。絶対に確信している場合のみにトレードを「失敗トレード」へ送りましょう。問題を解決できる選択肢に邪魔する可能性はあります。\n\nトレードを「失敗トレード」へ送りますか\n\n「失敗トレード」画面から調停・仲裁を開始できませんけど、失敗トレードがいつでも「オープントレード」へ戻されることができます。 portfolio.pending.failedTrade.txChainValid.moveToFailed=トレードプロトコルは問題に遭遇しました。\n\n{0}\n\nトレードのトランザクションは公開され、資金はロックされました。絶対に確信している場合のみにトレードを「失敗トレード」へ送りましょう。問題を解決できる選択肢に邪魔する可能性はあります。\n\nトレードを「失敗トレード」へ送りますか\n\n「失敗トレード」画面から調停・仲裁を開始できませんけど、失敗トレードがいつでも「オープントレード」へ戻されることができます。
@ -1590,7 +1590,7 @@ popup.headline.error=エラー
popup.doNotShowAgain=次回から表示しない popup.doNotShowAgain=次回から表示しない
popup.reportError.log=ログファイルを開く popup.reportError.log=ログファイルを開く
popup.reportError.gitHub=GitHub issue trackerに報告 popup.reportError.gitHub=GitHub issue trackerに報告
popup.reportError={0}\n\nソフトウェアの改善に役立てるため、https://github.com/MoneroEcosystem/haveno/issues で新しい issue を開いてこのバグを報告してください。\n下のボタンのいずれかをクリックすると、上記のエラーメッセージがクリップボードにコピーされます。\n「ログファイルを開く」を押して、コピーを保存し、バグレポートに添付されるhaveno.logファイル含めると、デバッグが容易になります。 popup.reportError={0}\n\nソフトウェアの改善に役立てるため、https://github.com/haveno-dex/haveno/issues で新しい issue を開いてこのバグを報告してください。\n下のボタンのいずれかをクリックすると、上記のエラーメッセージがクリップボードにコピーされます。\n「ログファイルを開く」を押して、コピーを保存し、バグレポートに添付されるhaveno.logファイル含めると、デバッグが容易になります。
popup.error.tryRestart=アプリケーションを再起動し、ネットワーク接続を確認して問題を解決できるかどうかを確認してください。 popup.error.tryRestart=アプリケーションを再起動し、ネットワーク接続を確認して問題を解決できるかどうかを確認してください。
popup.error.takeOfferRequestFailed=誰かがあなたのいずれかのオファーを受けようと時にエラーが発生しました:\n{0} popup.error.takeOfferRequestFailed=誰かがあなたのいずれかのオファーを受けようと時にエラーが発生しました:\n{0}

View file

@ -823,10 +823,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=Você já aceitou
portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades. portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades.
portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades. portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades.
portfolio.pending.failedTrade.missingDepositTx=Uma transação de depósito está faltando.\n\nEssa transação é necessária para concluir a negociação. Por favor, certifique-se de que sua carteira esteja totalmente sincronizada com a blockchain do Monero.\n\nVocê pode mover esta negociação para a seção "Negociações Falhas" para desativá-la. portfolio.pending.failedTrade.missingDepositTx=Uma transação de depósito está faltando.\n\nEssa transação é necessária para concluir a negociação. Por favor, certifique-se de que sua carteira esteja totalmente sincronizada com a blockchain do Monero.\n\nVocê pode mover esta negociação para a seção "Negociações Falhas" para desativá-la.
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0} portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0}
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time. portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time. portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
@ -1594,7 +1594,7 @@ popup.headline.error=Erro
popup.doNotShowAgain=Não mostrar novamente popup.doNotShowAgain=Não mostrar novamente
popup.reportError.log=Abrir arquivo de log popup.reportError.log=Abrir arquivo de log
popup.reportError.gitHub=Reportar à lista de problemas no GitHub popup.reportError.gitHub=Reportar à lista de problemas no GitHub
popup.reportError={0}\n\nPara nos ajudar a melhorar o aplicativo, reporte o bug criando um relatório (Issue) em nossa página do GitHub em https://github.com/MoneroEcosystem/haveno/issues.\n\nA mensagem de erro exibida acima será copiada para a área de transferência quando você clicar qualquer um dos botões abaixo.\nA solução de problemas será mais fácil se você anexar o arquivo haveno.log ao clicar em "Abrir arquivo de log", salvando uma cópia e incluindo-a em seu relatório do problema (Issue) no GitHub. popup.reportError={0}\n\nPara nos ajudar a melhorar o aplicativo, reporte o bug criando um relatório (Issue) em nossa página do GitHub em https://github.com/haveno-dex/haveno/issues.\n\nA mensagem de erro exibida acima será copiada para a área de transferência quando você clicar qualquer um dos botões abaixo.\nA solução de problemas será mais fácil se você anexar o arquivo haveno.log ao clicar em "Abrir arquivo de log", salvando uma cópia e incluindo-a em seu relatório do problema (Issue) no GitHub.
popup.error.tryRestart=Por favor, reinicie o aplicativo e verifique sua conexão de Internet para ver se o problema foi resolvido. popup.error.tryRestart=Por favor, reinicie o aplicativo e verifique sua conexão de Internet para ver se o problema foi resolvido.
popup.error.takeOfferRequestFailed=Houve um quando alguém tentou aceitar uma de suas ofertas:\n{0} popup.error.takeOfferRequestFailed=Houve um quando alguém tentou aceitar uma de suas ofertas:\n{0}

View file

@ -820,10 +820,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=You've already accepted
portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades. portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades.
portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades. portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades.
portfolio.pending.failedTrade.missingDepositTx=Отсутствует транзакция депозита.\n\nЭта транзакция необходима для завершения сделки. Пожалуйста, убедитесь, что ваш кошелёк полностью синхронизирован с блокчейном Monero.\n\nВы можете переместить эту сделку в раздел "Неудачные сделки", чтобы деактивировать её. portfolio.pending.failedTrade.missingDepositTx=Отсутствует транзакция депозита.\n\nЭта транзакция необходима для завершения сделки. Пожалуйста, убедитесь, что ваш кошелёк полностью синхронизирован с блокчейном Monero.\n\nВы можете переместить эту сделку в раздел "Неудачные сделки", чтобы деактивировать её.
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0} portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0}
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time. portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time. portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
@ -1587,7 +1587,7 @@ popup.headline.error=Ошибка
popup.doNotShowAgain=Не показывать снова popup.doNotShowAgain=Не показывать снова
popup.reportError.log=Открыть файл журнала popup.reportError.log=Открыть файл журнала
popup.reportError.gitHub=Сообщить о проблеме в Github popup.reportError.gitHub=Сообщить о проблеме в Github
popup.reportError={0}\n\nЧтобы помочь нам улучшить приложение, просьба сообщить об ошибке, открыв новую тему на https://github.com/MoneroEcosystem/haveno/issues. \nСообщение об ошибке будет скопировано в буфер обмена при нажатии любой из кнопок ниже.\nЕсли вы прикрепите к отчету о неисправности файл журнала haveno.log, нажав «Открыть файл журнала» и сохранив его копию, это поможет нам разобраться с проблемой быстрее. popup.reportError={0}\n\nЧтобы помочь нам улучшить приложение, просьба сообщить об ошибке, открыв новую тему на https://github.com/haveno-dex/haveno/issues. \nСообщение об ошибке будет скопировано в буфер обмена при нажатии любой из кнопок ниже.\nЕсли вы прикрепите к отчету о неисправности файл журнала haveno.log, нажав «Открыть файл журнала» и сохранив его копию, это поможет нам разобраться с проблемой быстрее.
popup.error.tryRestart=Попробуйте перезагрузить приложение и проверьте подключение к сети, чтобы попробовать решить проблему. popup.error.tryRestart=Попробуйте перезагрузить приложение и проверьте подключение к сети, чтобы попробовать решить проблему.
popup.error.takeOfferRequestFailed=Произошла ошибка, когда контрагент попытался принять одно из ваших предложений:\n{0} popup.error.takeOfferRequestFailed=Произошла ошибка, когда контрагент попытался принять одно из ваших предложений:\n{0}

View file

@ -820,10 +820,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=You've already accepted
portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades. portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades.
portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades. portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades.
portfolio.pending.failedTrade.missingDepositTx=ธุรกรรมเงินมัดจำหายไป\n\nธุรกรรมนี้จำเป็นสำหรับการดำเนินการซื้อขายให้เสร็จสมบูรณ์ กรุณาตรวจสอบให้แน่ใจว่า Wallet ของคุณได้ซิงค์กับบล็อกเชน Monero อย่างสมบูรณ์แล้ว\n\nคุณสามารถย้ายการซื้อขายนี้ไปยังส่วน "การซื้อขายที่ล้มเหลว" เพื่อปิดการใช้งานได้ portfolio.pending.failedTrade.missingDepositTx=ธุรกรรมเงินมัดจำหายไป\n\nธุรกรรมนี้จำเป็นสำหรับการดำเนินการซื้อขายให้เสร็จสมบูรณ์ กรุณาตรวจสอบให้แน่ใจว่า Wallet ของคุณได้ซิงค์กับบล็อกเชน Monero อย่างสมบูรณ์แล้ว\n\nคุณสามารถย้ายการซื้อขายนี้ไปยังส่วน "การซื้อขายที่ล้มเหลว" เพื่อปิดการใช้งานได้
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0} portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0}
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time. portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time. portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
@ -1587,7 +1587,7 @@ popup.headline.error=ผิดพลาด
popup.doNotShowAgain=ไม่ต้องแสดงอีกครั้ง popup.doNotShowAgain=ไม่ต้องแสดงอีกครั้ง
popup.reportError.log=เปิดไฟล์ที่บันทึก popup.reportError.log=เปิดไฟล์ที่บันทึก
popup.reportError.gitHub=รายงานไปที่ตัวติดตามปัญหา GitHub popup.reportError.gitHub=รายงานไปที่ตัวติดตามปัญหา GitHub
popup.reportError={0}\n\nTo help us to improve the software please report this bug by opening a new issue at https://github.com/MoneroEcosystem/haveno/issues.\nThe above error message will be copied to the clipboard when you click either of the buttons below.\nIt will make debugging easier if you include the haveno.log file by pressing "Open log file", saving a copy, and attaching it to your bug report. popup.reportError={0}\n\nTo help us to improve the software please report this bug by opening a new issue at https://github.com/haveno-dex/haveno/issues.\nThe above error message will be copied to the clipboard when you click either of the buttons below.\nIt will make debugging easier if you include the haveno.log file by pressing "Open log file", saving a copy, and attaching it to your bug report.
popup.error.tryRestart=โปรดลองเริ่มแอปพลิเคชั่นของคุณใหม่และตรวจสอบการเชื่อมต่อเครือข่ายของคุณเพื่อดูว่าคุณสามารถแก้ไขปัญหาได้หรือไม่ popup.error.tryRestart=โปรดลองเริ่มแอปพลิเคชั่นของคุณใหม่และตรวจสอบการเชื่อมต่อเครือข่ายของคุณเพื่อดูว่าคุณสามารถแก้ไขปัญหาได้หรือไม่
popup.error.takeOfferRequestFailed=เกิดข้อผิดพลาดขึ้นเมื่อมีคนพยายามรับข้อเสนอของคุณ: \n{0} popup.error.takeOfferRequestFailed=เกิดข้อผิดพลาดขึ้นเมื่อมีคนพยายามรับข้อเสนอของคุณ: \n{0}

View file

@ -965,7 +965,7 @@ portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=G
(satıcı da tam ticaret miktarını geri alır). \ (satıcı da tam ticaret miktarını geri alır). \
Bu şekilde, güvenlik riski yoktur ve yalnızca ticaret ücretleri kaybedilir. \n\n\ Bu şekilde, güvenlik riski yoktur ve yalnızca ticaret ücretleri kaybedilir. \n\n\
Kaybedilen ticaret ücretleri için burada geri ödeme talebinde bulunabilirsiniz: \ Kaybedilen ticaret ücretleri için burada geri ödeme talebinde bulunabilirsiniz: \
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=Gecikmiş ödeme işlemi eksik \ portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=Gecikmiş ödeme işlemi eksik \
ancak fonlar depozito işleminde kilitlendi.\n\n\ ancak fonlar depozito işleminde kilitlendi.\n\n\
Eğer alıcı da gecikmiş ödeme işlemini eksikse, onlara ödemeyi göndermemeleri ve \ Eğer alıcı da gecikmiş ödeme işlemini eksikse, onlara ödemeyi göndermemeleri ve \
@ -974,18 +974,18 @@ portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=
tamamını geri almasını önermelidir (satıcı da tam ticaret miktarını geri alır). \ tamamını geri almasını önermelidir (satıcı da tam ticaret miktarını geri alır). \
Aksi takdirde ticaret miktarı alıcıya gitmelidir. \n\n\ Aksi takdirde ticaret miktarı alıcıya gitmelidir. \n\n\
Kaybedilen ticaret ücretleri için burada geri ödeme talebinde bulunabilirsiniz: \ Kaybedilen ticaret ücretleri için burada geri ödeme talebinde bulunabilirsiniz: \
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.errorMsgSet=Ticaret protokolü yürütülürken bir hata oluştu.\n\n\ portfolio.pending.failedTrade.errorMsgSet=Ticaret protokolü yürütülürken bir hata oluştu.\n\n\
Hata: {0}\n\n\ Hata: {0}\n\n\
Bu hata kritik olmayabilir ve ticaret normal şekilde tamamlanabilir. Emin değilseniz, \ Bu hata kritik olmayabilir ve ticaret normal şekilde tamamlanabilir. Emin değilseniz, \
Haveno arabulucularından tavsiye almak için bir arabuluculuk bileti açın. \n\n\ Haveno arabulucularından tavsiye almak için bir arabuluculuk bileti açın. \n\n\
Eğer hata kritikse ve ticaret tamamlanamazsa, ticaret ücretinizi kaybetmiş olabilirsiniz. \ Eğer hata kritikse ve ticaret tamamlanamazsa, ticaret ücretinizi kaybetmiş olabilirsiniz. \
Kaybedilen ticaret ücretleri için burada geri ödeme talebinde bulunun: \ Kaybedilen ticaret ücretleri için burada geri ödeme talebinde bulunun: \
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.missingContract=Ticaret sözleşmesi ayarlanmadı.\n\n\ portfolio.pending.failedTrade.missingContract=Ticaret sözleşmesi ayarlanmadı.\n\n\
Ticaret tamamlanamaz ve ticaret ücretinizi kaybetmiş olabilirsiniz. \ Ticaret tamamlanamaz ve ticaret ücretinizi kaybetmiş olabilirsiniz. \
Eğer öyleyse, kaybedilen ticaret ücretleri için burada geri ödeme talebinde bulunun: \ Eğer öyleyse, kaybedilen ticaret ücretleri için burada geri ödeme talebinde bulunun: \
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.info.popup=Ticaret protokolü bazı sorunlarla karşılaştı.\n\n{0} portfolio.pending.failedTrade.info.popup=Ticaret protokolü bazı sorunlarla karşılaştı.\n\n{0}
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=Ticaret protokolü ciddi bir sorunla karşılaştı.\n\n{0}\n\n\ portfolio.pending.failedTrade.txChainInvalid.moveToFailed=Ticaret protokolü ciddi bir sorunla karşılaştı.\n\n{0}\n\n\
Ticareti başarısız ticaretler arasına taşımak ister misiniz?\n\n\ Ticareti başarısız ticaretler arasına taşımak ister misiniz?\n\n\
@ -2091,7 +2091,7 @@ popup.headline.error=Hata
popup.doNotShowAgain=Tekrar gösterme popup.doNotShowAgain=Tekrar gösterme
popup.reportError.log=Günlük dosyasını popup.reportError.log=Günlük dosyasını
popup.reportError.gitHub=GitHub hata izleyicisine bildir popup.reportError.gitHub=GitHub hata izleyicisine bildir
popup.reportError={0}\n\nYazılımı geliştirmemize yardımcı olmak için lütfen bu hatayı https://github.com/MoneroEcosystem/haveno/issues adresinde yeni bir sorun açarak bildirin.\n\ popup.reportError={0}\n\nYazılımı geliştirmemize yardımcı olmak için lütfen bu hatayı https://github.com/haveno-dex/haveno/issues adresinde yeni bir sorun açarak bildirin.\n\
Yukarıdaki hata mesajı, aşağıdaki düğmelerden birine tıkladığınızda panoya kopyalanacaktır.\n\ Yukarıdaki hata mesajı, aşağıdaki düğmelerden birine tıkladığınızda panoya kopyalanacaktır.\n\
Hata ayıklamayı kolaylaştırmak için \"Günlük dosyasını aç\" düğmesine basarak günlük dosyasını kaydedip hata raporunuza eklemeniz yararlı olacaktır. Hata ayıklamayı kolaylaştırmak için \"Günlük dosyasını aç\" düğmesine basarak günlük dosyasını kaydedip hata raporunuza eklemeniz yararlı olacaktır.
@ -2214,17 +2214,17 @@ popup.shutDownInProgress.msg=Uygulamayı kapatmak birkaç saniye sürebilir.\nL
popup.attention.forTradeWithId=ID'si {0} olan ticaret için bildirim popup.attention.forTradeWithId=ID'si {0} olan ticaret için bildirim
popup.attention.welcome.stagenet=Haveno test sürümüne hoş geldiniz!\n\n\ popup.attention.welcome.stagenet=Haveno test sürümüne hoş geldiniz!\n\n\
Bu platform Haveno'nun protokolünü test etmenizi sağlar. Talimatları izlediğinizden emin olun [HYPERLINK:https://github.com/MoneroEcosystem/haveno/blob/master/docs/installing.md].\n\n\ Bu platform Haveno'nun protokolünü test etmenizi sağlar. Talimatları izlediğinizden emin olun [HYPERLINK:https://github.com/haveno-dex/haveno/blob/master/docs/installing.md].\n\n\
Herhangi bir sorunla karşılaşırsanız, lütfen bir sorun bildirerek bize bildirin [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].\n\n\ Herhangi bir sorunla karşılaşırsanız, lütfen bir sorun bildirerek bize bildirin [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].\n\n\
Bu bir test sürümüdür. Gerçek para kullanmayın! Bu bir test sürümüdür. Gerçek para kullanmayın!
popup.attention.welcome.mainnet=Haveno'ya hoş geldiniz!\n\n\ popup.attention.welcome.mainnet=Haveno'ya hoş geldiniz!\n\n\
Bu platform, Monero'yu itibari para birimleri veya diğer kripto para birimleriyle merkezi olmayan bir şekilde ticaret yapmanızı sağlar.\n\n\ Bu platform, Monero'yu itibari para birimleri veya diğer kripto para birimleriyle merkezi olmayan bir şekilde ticaret yapmanızı sağlar.\n\n\
Yeni bir ödeme hesabı oluşturarak ve ardından bir teklif yaparak veya teklif alarak başlayın.\n\n\ Yeni bir ödeme hesabı oluşturarak ve ardından bir teklif yaparak veya teklif alarak başlayın.\n\n\
Herhangi bir sorunla karşılaşırsanız, lütfen bir sorun bildirerek bize bildirin [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new]. Herhangi bir sorunla karşılaşırsanız, lütfen bir sorun bildirerek bize bildirin [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].
popup.attention.welcome.mainnet.test=Haveno'ya hoş geldiniz!\n\n\ popup.attention.welcome.mainnet.test=Haveno'ya hoş geldiniz!\n\n\
Bu platform, Monero'yu itibari para birimleri veya diğer kripto para birimleriyle merkezi olmayan bir şekilde ticaret yapmanızı sağlar.\n\n\ Bu platform, Monero'yu itibari para birimleri veya diğer kripto para birimleriyle merkezi olmayan bir şekilde ticaret yapmanızı sağlar.\n\n\
Yeni bir ödeme hesabı oluşturarak ve ardından bir teklif yaparak veya teklif alarak başlayın.\n\n\ Yeni bir ödeme hesabı oluşturarak ve ardından bir teklif yaparak veya teklif alarak başlayın.\n\n\
Herhangi bir sorunla karşılaşırsanız, lütfen bir sorun bildirerek bize bildirin [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].\n\n\ Herhangi bir sorunla karşılaşırsanız, lütfen bir sorun bildirerek bize bildirin [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].\n\n\
Haveno kısa bir süre önce kamu testi için yayınlandı. Lütfen küçük miktarlar kullanın! Haveno kısa bir süre önce kamu testi için yayınlandı. Lütfen küçük miktarlar kullanın!
popup.info.multiplePaymentAccounts.headline=Birden fazla ödeme hesabı mevcut popup.info.multiplePaymentAccounts.headline=Birden fazla ödeme hesabı mevcut

View file

@ -820,10 +820,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=You've already accepted
portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades. portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades.
portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades. portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades.
portfolio.pending.failedTrade.missingDepositTx=Một giao dịch ký quỹ đang bị thiếu.\n\nGiao dịch này là bắt buộc để hoàn tất giao dịch. Vui lòng đảm bảo ví của bạn được đồng bộ hoàn toàn với blockchain Monero.\n\nBạn có thể chuyển giao dịch này đến mục "Giao dịch thất bại" để vô hiệu hóa nó. portfolio.pending.failedTrade.missingDepositTx=Một giao dịch ký quỹ đang bị thiếu.\n\nGiao dịch này là bắt buộc để hoàn tất giao dịch. Vui lòng đảm bảo ví của bạn được đồng bộ hoàn toàn với blockchain Monero.\n\nBạn có thể chuyển giao dịch này đến mục "Giao dịch thất bại" để vô hiệu hóa nó.
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues] portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0} portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0}
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time. portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time. portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
@ -1589,7 +1589,7 @@ popup.headline.error=Lỗi
popup.doNotShowAgain=Không hiển thị lại popup.doNotShowAgain=Không hiển thị lại
popup.reportError.log=Mở log file popup.reportError.log=Mở log file
popup.reportError.gitHub=Báo cáo cho người theo dõi vấn đề GitHub popup.reportError.gitHub=Báo cáo cho người theo dõi vấn đề GitHub
popup.reportError={0}\n\nĐể giúp chúng tôi cải tiến phần mềm, vui lòng báo cáo lỗi này bằng cách mở một thông báo vấn đề mới tại https://github.com/MoneroEcosystem/haveno/issues.\nTin nhắn lỗi phía trên sẽ được sao chép tới clipboard khi bạn ấn vào một nút bên dưới.\nSự cố sẽ được xử lý dễ dàng hơn nếu bạn đính kèm haveno.log file bằng cách nhấn "Mở log file", lưu bản sao, và đính kèm vào báo cáo lỗi. popup.reportError={0}\n\nĐể giúp chúng tôi cải tiến phần mềm, vui lòng báo cáo lỗi này bằng cách mở một thông báo vấn đề mới tại https://github.com/haveno-dex/haveno/issues.\nTin nhắn lỗi phía trên sẽ được sao chép tới clipboard khi bạn ấn vào một nút bên dưới.\nSự cố sẽ được xử lý dễ dàng hơn nếu bạn đính kèm haveno.log file bằng cách nhấn "Mở log file", lưu bản sao, và đính kèm vào báo cáo lỗi.
popup.error.tryRestart=Hãy khởi động lại ứng dụng và kiểm tra kết nối mạng để xem bạn có thể xử lý vấn đề này hay không. popup.error.tryRestart=Hãy khởi động lại ứng dụng và kiểm tra kết nối mạng để xem bạn có thể xử lý vấn đề này hay không.
popup.error.takeOfferRequestFailed=Có lỗi xảy ra khi ai đó cố gắng để nhận một trong các chào giá của bạn:\n{0} popup.error.takeOfferRequestFailed=Có lỗi xảy ra khi ai đó cố gắng để nhận một trong các chào giá của bạn:\n{0}

View file

@ -1,197 +0,0 @@
package haveno.daemon.grpc;
import com.google.inject.Inject;
import com.google.protobuf.ByteString;
import io.grpc.Context;
import io.grpc.ServerInterceptor;
import io.grpc.stub.ServerCallStreamObserver;
import io.grpc.stub.StreamObserver;
import haveno.core.api.CoreApi;
import haveno.core.api.NetworkListener;
import haveno.core.filter.Filter;
import haveno.core.filter.PaymentAccountFilter;
import haveno.daemon.grpc.interceptor.CallRateMeteringInterceptor;
import haveno.daemon.grpc.interceptor.GrpcCallRateMeter;
import static haveno.daemon.grpc.interceptor.GrpcServiceRateMeteringConfig.getCustomRateMeteringInterceptor;
import haveno.proto.grpc.NetworkMessage;
import static haveno.proto.grpc.NetworkGrpc.getRegisterNetworkListenerMethod;
import static haveno.proto.grpc.NetworkGrpc.getGetSeednodesMethod;
import static haveno.proto.grpc.NetworkGrpc.getGetOnlinePeersMethod;
import static haveno.proto.grpc.NetworkGrpc.getGetRegisteredArbitratorsMethod;
import haveno.proto.grpc.GetRegisteredArbitratorsReply;
import haveno.proto.grpc.GetRegisteredArbitratorsRequest;
import haveno.proto.grpc.GetOnlinePeersRequest;
import haveno.proto.grpc.GetSeednodesReply;
import haveno.proto.grpc.GetOnlinePeersReply;
import haveno.proto.grpc.GetSeednodesRequest;
import haveno.network.p2p.peers.peerexchange.Peer;
import haveno.proto.grpc.NetworkGrpc.NetworkImplBase;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import static java.util.concurrent.TimeUnit.SECONDS;
import java.util.ArrayList;
import haveno.core.support.dispute.arbitration.arbitrator.Arbitrator;
import haveno.proto.grpc.GetNetworkFilterReply;
import haveno.proto.grpc.GetNetworkFilterRequest;
import lombok.NonNull;
import lombok.Value;
import lombok.extern.slf4j.Slf4j;
import protobuf.StoragePayload;
@Slf4j
class GrpcNetworkService extends NetworkImplBase {
private final CoreApi coreApi;
private final GrpcExceptionHandler exceptionHandler;
@Inject
public GrpcNetworkService(CoreApi coreApi, GrpcExceptionHandler exceptionHandler) {
this.coreApi = coreApi;
this.exceptionHandler = exceptionHandler;
}
//@Override
//public void registerNetworkListener(RegisterNetworkListenerRequest request,
// StreamObserver<NetworkMessage> responseObserver) {
// Context ctx = Context.current().fork(); // context is independent for long-lived request
// ctx.run(() -> {
// try {
// coreApi.addNetworkListener(new GrpcNetworkListener(responseObserver));
// // No onNext / onCompleted, as the response observer should be kept open
// } catch (Throwable t) {
// exceptionHandler.handleException(log, t, responseObserver);
// }
// });
//}
@Override
public void getOnlinePeers(GetOnlinePeersRequest request,
StreamObserver<GetOnlinePeersReply> responseObserver) {
try {
GetOnlinePeersReply.Builder replyBuilder = GetOnlinePeersReply.newBuilder();
for (Peer peer : coreApi.getOnlinePeers()) {
replyBuilder.addPeers(
haveno.proto.grpc.PeerInfo.newBuilder()
.setNodeAddress(peer.getNodeAddress().getFullAddress())
//.addAllCapabilities(peer.getCapabilities().stream().map(Integer::intValue).toList())
.build());
}
responseObserver.onNext(replyBuilder.build());
responseObserver.onCompleted();
} catch (Throwable t) {
exceptionHandler.handleException(log, t, responseObserver);
}
}
@Override
public void getSeednodes(GetSeednodesRequest request,
StreamObserver<GetSeednodesReply> responseObserver) {
try {
GetSeednodesReply.Builder replyBuilder = GetSeednodesReply.newBuilder();
for (Peer peer : coreApi.getOnlineSeedNodes()) {
replyBuilder.addPeers(
haveno.proto.grpc.PeerInfo.newBuilder()
.setNodeAddress(peer.getNodeAddress().getFullAddress())
//.addAllCapabilities(peer.getCapabilities().stream().map(Integer::intValue).toList())
.build());
}
responseObserver.onNext(replyBuilder.build());
responseObserver.onCompleted();
} catch (Throwable t) {
exceptionHandler.handleException(log, t, responseObserver);
}
}
@Override
public void getNetworkFilter(GetNetworkFilterRequest request,
StreamObserver<GetNetworkFilterReply> responseObserver) {
try {
haveno.core.filter.Filter modelFilter = coreApi.getFilter();
protobuf.Filter.Builder grpcFilter = protobuf.Filter.newBuilder()
.addAllNodeAddressesBannedFromTrading(modelFilter.getNodeAddressesBannedFromTrading())
.addAllBannedOfferIds(modelFilter.getBannedOfferIds())
.addAllArbitrators(modelFilter.getArbitrators().stream().map(a -> a.toString()).toList())
.addAllSeedNodes(modelFilter.getSeedNodes().stream().map(n -> n.toString()).toList())
.addAllBannedPaymentAccounts(
modelFilter.getBannedPaymentAccounts().stream()
.map(PaymentAccountFilter::toProtoMessage)
.toList())
.setSignatureAsBase64(modelFilter.getSignatureAsBase64())
.setOwnerPubKeyBytes(ByteString.copyFrom(modelFilter.getOwnerPubKeyBytes()))
.putAllExtraData(modelFilter.getExtraDataMap())
.addAllBannedCurrencies(modelFilter.getBannedCurrencies())
.addAllBannedPaymentMethods(modelFilter.getBannedPaymentMethods())
.addAllPriceRelayNodes(modelFilter.getPriceRelayNodes())
.setPreventPublicXmrNetwork(modelFilter.isPreventPublicXmrNetwork())
.addAllXmrNodes(modelFilter.getXmrNodes())
.setDisableTradeBelowVersion(modelFilter.getDisableTradeBelowVersion())
.addAllMediators(modelFilter.getMediators())
.addAllRefundAgents(modelFilter.getRefundAgents())
.addAllBannedSignerPubKeys(modelFilter.getBannedAccountWitnessSignerPubKeys())
.addAllXmrFeeReceiverAddresses(modelFilter.getXmrFeeReceiverAddresses())
.setCreationDate(modelFilter.getCreationDate())
.setSignerPubKeyAsHex(modelFilter.getSignerPubKeyAsHex())
.addAllBannedPrivilegedDevPubKeys(modelFilter.getBannedPrivilegedDevPubKeys())
.setDisableAutoConf(modelFilter.isDisableAutoConf())
.addAllBannedAutoConfExplorers(modelFilter.getBannedAutoConfExplorers())
.addAllNodeAddressesBannedFromNetwork(modelFilter.getNodeAddressesBannedFromNetwork())
.setDisableApi(modelFilter.isDisableApi())
.setDisableMempoolValidation(modelFilter.isDisableMempoolValidation());
GetNetworkFilterReply reply = GetNetworkFilterReply.newBuilder()
.setFilter(grpcFilter)
.build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
} catch (Throwable t) {
exceptionHandler.handleException(log, t, responseObserver);
}
}
// @Override
// public void setNetworkFilter() {
//
// }
@Value
private static class GrpcNetworkListener implements NetworkListener {
@NonNull
StreamObserver<NetworkMessage> responseObserver;
@Override
public void onMessage(@NonNull NetworkMessage network_message) {
if (!((ServerCallStreamObserver<NetworkMessage>) responseObserver).isCancelled()) {
responseObserver.onNext(network_message);
}
}
}
final ServerInterceptor[] interceptors() {
Optional<ServerInterceptor> rateMeteringInterceptor = rateMeteringInterceptor();
return rateMeteringInterceptor.map(serverInterceptor ->
new ServerInterceptor[]{serverInterceptor}).orElseGet(() -> new ServerInterceptor[0]);
}
final Optional<ServerInterceptor> rateMeteringInterceptor() {
return getCustomRateMeteringInterceptor(coreApi.getConfig().appDataDir, this.getClass())
.or(() -> Optional.of(CallRateMeteringInterceptor.valueOf(
new HashMap<>() {{
put(getRegisterNetworkListenerMethod().getFullMethodName(), new GrpcCallRateMeter(10, SECONDS));
}}
)));
}
}

View file

@ -52,7 +52,6 @@ public class GrpcServer {
GrpcTradesService tradesService, GrpcTradesService tradesService,
GrpcWalletsService walletsService, GrpcWalletsService walletsService,
GrpcNotificationsService notificationsService, GrpcNotificationsService notificationsService,
GrpcNetworkService networkService,
GrpcXmrConnectionService moneroConnectionsService, GrpcXmrConnectionService moneroConnectionsService,
GrpcXmrNodeService moneroNodeService) { GrpcXmrNodeService moneroNodeService) {
this.server = ServerBuilder.forPort(config.apiPort) this.server = ServerBuilder.forPort(config.apiPort)
@ -71,7 +70,6 @@ public class GrpcServer {
.addService(interceptForward(notificationsService, notificationsService.interceptors())) .addService(interceptForward(notificationsService, notificationsService.interceptors()))
.addService(interceptForward(moneroConnectionsService, moneroConnectionsService.interceptors())) .addService(interceptForward(moneroConnectionsService, moneroConnectionsService.interceptors()))
.addService(interceptForward(moneroNodeService, moneroNodeService.interceptors())) .addService(interceptForward(moneroNodeService, moneroNodeService.interceptors()))
.addService(interceptForward(networkService, networkService.interceptors()))
.intercept(passwordAuthInterceptor) .intercept(passwordAuthInterceptor)
.build(); .build();
coreContext.setApiUser(true); coreContext.setApiUser(true);

View file

@ -216,7 +216,7 @@ public class HavenoAppMain extends HavenoExecutable {
// Set the dialog content // Set the dialog content
VBox vbox = new VBox(10); VBox vbox = new VBox(10);
ImageView logoImageView = new ImageView(ImageUtil.getImageByPath("logo_splash_light.png")); ImageView logoImageView = new ImageView(ImageUtil.getImageByPath("logo_splash_light_mode.png"));
logoImageView.setFitWidth(342); logoImageView.setFitWidth(342);
logoImageView.setPreserveRatio(true); logoImageView.setPreserveRatio(true);
vbox.getChildren().addAll(logoImageView, passwordField, errorMessageField, versionField); vbox.getChildren().addAll(logoImageView, passwordField, errorMessageField, versionField);

View file

@ -2283,6 +2283,7 @@ textfield */
-fx-background-insets: 44; -fx-background-insets: 44;
-fx-background-radius: 15; -fx-background-radius: 15;
-fx-border-radius: 15; -fx-border-radius: 15;
-fx-effect: dropshadow(gaussian, -bs-text-color-dropshadow-light-mode, 44, 0, 0, 0);
} }
.notification-popup-bg, .peer-info-popup-bg { .notification-popup-bg, .peer-info-popup-bg {

View file

@ -305,8 +305,12 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
} }
}); });
// add spacer to center the nav buttons when window is small
Region rightSpacer = new Region();
HBox.setHgrow(rightSpacer, Priority.ALWAYS);
HBox primaryNav = new HBox(getLogoPane(), marketButton, getNavigationSpacer(), buyButton, getNavigationSpacer(), HBox primaryNav = new HBox(getLogoPane(), marketButton, getNavigationSpacer(), buyButton, getNavigationSpacer(),
sellButton, getNavigationSpacer(), portfolioButtonWithBadge, getNavigationSpacer(), fundsButton); sellButton, getNavigationSpacer(), portfolioButtonWithBadge, getNavigationSpacer(), fundsButton, rightSpacer);
primaryNav.setAlignment(Pos.CENTER_LEFT); primaryNav.setAlignment(Pos.CENTER_LEFT);
primaryNav.getStyleClass().add("nav-primary"); primaryNav.getStyleClass().add("nav-primary");

View file

@ -9,21 +9,21 @@
-fx-text-fill: #dadada; -fx-text-fill: #dadada;
/* javafx elements */ /* javafx elements */
-fx-accent: #F4511E; -fx-accent: #0b65da;
-fx-box-border: transparent; -fx-box-border: transparent;
-fx-focus-color: #F4511E; -fx-focus-color: #0c59bd;
-fx-faint-focus-color: #F4511E; -fx-faint-focus-color: #0c59bd;
-fx-selection-bar: #0f87c3; -fx-selection-bar: #0f87c3;
-fx-selection-bar-non-focused: #4181d4; -fx-selection-bar-non-focused: #4181d4;
-fx-default-button: derive(-fx-accent, 95%); -fx-default-button: derive(-fx-accent, 95%);
/* haveno main colors */ /* haveno main colors */
-bs-color-primary: #F4511E; -bs-color-primary: #0b65da;
-bs-color-primary-dark: #F4511E; -bs-color-primary-dark: #0c59bd;
-bs-text-color: white; -bs-text-color: white;
-bs-background-color: #303030; -bs-background-color: black;
-bs-background-gray: transparent; -bs-background-gray: transparent;
-bs-content-background-gray: #303030; -bs-content-background-gray: black;
/* fifty shades of gray */ /* fifty shades of gray */
-bs-color-gray-13: #bbb; -bs-color-gray-13: #bbb;
@ -128,7 +128,7 @@
-bs-rd-tooltip-truncated: #afaeb0; -bs-rd-tooltip-truncated: #afaeb0;
/*-bs-toggle-selected: rgb(12, 89, 189);*/ /*-bs-toggle-selected: rgb(12, 89, 189);*/
-bs-toggle-selected: #F4511E; -bs-toggle-selected: rgb(12, 89, 190);
-bs-warning: #db6300; -bs-warning: #db6300;
-bs-buy: rgb(80, 180, 90); -bs-buy: rgb(80, 180, 90);
-bs-buy-focus: derive(-bs-buy, -50%); -bs-buy-focus: derive(-bs-buy, -50%);
@ -578,15 +578,15 @@
} }
#image-logo-splash { #image-logo-splash {
-fx-image: url("../../images/logo_splash_dark.png"); -fx-image: url("../../images/logo_splash_dark_mode.png");
} }
#image-logo-splash-testnet { #image-logo-splash-testnet {
-fx-image: url("../../images/logo_splash_testnet_dark.png"); -fx-image: url("../../images/logo_splash_testnet_dark_mode.png");
} }
#image-logo-landscape { #image-logo-landscape {
-fx-image: url("../../images/logo_landscape_dark.png"); -fx-image: url("../../images/logo_landscape_dark_mode.png");
} }
.table-view .placeholder { .table-view .placeholder {

View file

@ -144,15 +144,15 @@
} }
#image-logo-splash { #image-logo-splash {
-fx-image: url("../../images/logo_splash_light.png"); -fx-image: url("../../images/logo_splash_light_mode.png");
} }
#image-logo-splash-testnet { #image-logo-splash-testnet {
-fx-image: url("../../images/logo_splash_testnet_light.png"); -fx-image: url("../../images/logo_splash_testnet_light_mode.png");
} }
#image-logo-landscape { #image-logo-landscape {
-fx-image: url("../../images/logo_landscape_light.png"); -fx-image: url("../../images/logo_landscape_light_mode.png");
} }
#charts .default-color0.chart-series-area-fill { #charts .default-color0.chart-series-area-fill {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 667 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 667 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,51 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
NYeOG8Xnm4CxuWqUu0FDMv6BhkMCTz2X4xcnbtI=
=9LRS
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -0,0 +1,50 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=AWz+
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -0,0 +1,156 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
vUTpzlk=
=ZIr3
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -17,15 +17,14 @@ WORKDIR /home/haveno
RUN set -ex && git clone https://foss.haveno.com/haveno-network/haveno-core.git RUN set -ex && git clone https://foss.haveno.com/haveno-network/haveno-core.git
WORKDIR /home/haveno/haveno WORKDIR /home/haveno/haveno-core
RUN git checkout master && \ RUN git checkout master && \
git reset --hard git reset --hard
RUN make clean && make skip-tests RUN make clean && make skip-tests
WORKDIR /home/haveno/haveno WORKDIR /home/haveno/haveno-core
ENTRYPOINT [ "./haveno-seednode" ] ENTRYPOINT [ "./haveno-seednode" ]

View file

@ -2,7 +2,7 @@
Thanks for wishing to help! Here there are some guidelines and information about the development process. We suggest you to join the [matrix](https://app.element.io/#/room/#haveno-development:monero.social) room `#haveno-development` (relayed on [IRC/Libera](irc://irc.libera.chat/#haveno-development)) and have a chat with the devs, so that we can help get you started. Thanks for wishing to help! Here there are some guidelines and information about the development process. We suggest you to join the [matrix](https://app.element.io/#/room/#haveno-development:monero.social) room `#haveno-development` (relayed on [IRC/Libera](irc://irc.libera.chat/#haveno-development)) and have a chat with the devs, so that we can help get you started.
Issues are tracked on GitHub. We use [a label system](https://github.com/MoneroEcosystem/haveno/issues/50) and GitHub's [project boards](https://github.com/MoneroEcosystem/haveno/projects) to simplify development. Make sure to take a look at those and to follow the priorities suggested. Issues are tracked on GitHub. We use [a label system](https://github.com/haveno-dex/haveno/issues/50) and GitHub's [project boards](https://github.com/haveno-dex/haveno/projects) to simplify development. Make sure to take a look at those and to follow the priorities suggested.
## General guidelines ## General guidelines

View file

@ -7,7 +7,7 @@ For a more robust and decentralized deployment to VPS for reliable uptime, see t
## Clone and build Haveno ## Clone and build Haveno
``` ```
git clone https://github.com/MoneroEcosystem/haveno.git git clone https://github.com/haveno-dex/haveno.git
cd haveno cd haveno
git checkout master git checkout master
make clean && make make clean && make
@ -39,17 +39,17 @@ For demonstration, we can use the first generated public/private keypair for all
Hardcode the public key(s) in these files: Hardcode the public key(s) in these files:
- [AlertManager.java](https://github.com/MoneroEcosystem/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/core/src/main/java/haveno/core/alert/AlertManager.java#L111) - [AlertManager.java](https://github.com/haveno-dex/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/core/src/main/java/haveno/core/alert/AlertManager.java#L111)
- [ArbitratorManager.java](https://github.com/MoneroEcosystem/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/core/src/main/java/haveno/core/support/dispute/arbitration/arbitrator/ArbitratorManager.java#L81) - [ArbitratorManager.java](https://github.com/haveno-dex/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/core/src/main/java/haveno/core/support/dispute/arbitration/arbitrator/ArbitratorManager.java#L81)
- [FilterManager.java](https://github.com/MoneroEcosystem/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/core/src/main/java/haveno/core/filter/FilterManager.java#L117) - [FilterManager.java](https://github.com/haveno-dex/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/core/src/main/java/haveno/core/filter/FilterManager.java#L117)
- [PrivateNotificationManager.java](https://github.com/MoneroEcosystem/haveno/blob/mainnet_placeholders/core/src/main/java/haveno/core/alert/PrivateNotificationManager.java#L110) - [PrivateNotificationManager.java](https://github.com/haveno-dex/haveno/blob/mainnet_placeholders/core/src/main/java/haveno/core/alert/PrivateNotificationManager.java#L110)
## Change the default folder name for Haveno application data ## Change the default folder name for Haveno application data
To avoid user data corruption when using multiple Haveno networks, change the default folder name for Haveno's application data on your network: To avoid user data corruption when using multiple Haveno networks, change the default folder name for Haveno's application data on your network:
- Change `DEFAULT_APP_NAME` in [HavenoExecutable.java](https://github.com/MoneroEcosystem/haveno/blob/64acf86fbea069b0ae9f9bce086f8ecce1e91b87/core/src/main/java/haveno/core/app/HavenoExecutable.java#L85). - Change `DEFAULT_APP_NAME` in [HavenoExecutable.java](https://github.com/haveno-dex/haveno/blob/64acf86fbea069b0ae9f9bce086f8ecce1e91b87/core/src/main/java/haveno/core/app/HavenoExecutable.java#L85).
- Change `appName` throughout the [Makefile](https://github.com/MoneroEcosystem/haveno/blob/64acf86fbea069b0ae9f9bce086f8ecce1e91b87/Makefile#L479) accordingly. - Change `appName` throughout the [Makefile](https://github.com/haveno-dex/haveno/blob/64acf86fbea069b0ae9f9bce086f8ecce1e91b87/Makefile#L479) accordingly.
For example, change "Haveno" to "HavenoX", which will use this application folder: For example, change "Haveno" to "HavenoX", which will use this application folder:
@ -59,7 +59,7 @@ For example, change "Haveno" to "HavenoX", which will use this application folde
## Change the P2P network version ## Change the P2P network version
To avoid interference with other networks, change `P2P_NETWORK_VERSION` in [Version.java](https://github.com/MoneroEcosystem/haveno/blob/a7e90395d24ec3d33262dd5d09c5faec61651a51/common/src/main/java/haveno/common/app/Version.java#L83). To avoid interference with other networks, change `P2P_NETWORK_VERSION` in [Version.java](https://github.com/haveno-dex/haveno/blob/a7e90395d24ec3d33262dd5d09c5faec61651a51/common/src/main/java/haveno/common/app/Version.java#L83).
For example, change it to `"B"`. For example, change it to `"B"`.
@ -114,9 +114,9 @@ Otherwise set `ARBITRATOR_ASSIGNS_TRADE_FEE_ADDRESS` to `false` and set the XMR
### Optionally start a price node ### Optionally start a price node
The price node is separated from Haveno and is run as a standalone service. To deploy a pricenode on both TOR and clearnet, see the instructions on the repository: https://github.com/MoneroEcosystem/haveno-pricenode. The price node is separated from Haveno and is run as a standalone service. To deploy a pricenode on both TOR and clearnet, see the instructions on the repository: https://github.com/haveno-dex/haveno-pricenode.
After the price node is built and deployed, add the price node to `DEFAULT_NODES` in [ProvidersRepository.java](https://github.com/MoneroEcosystem/haveno/blob/3cdd88b56915c7f8afd4f1a39e6c1197c2665d63/core/src/main/java/haveno/core/provider/ProvidersRepository.java#L50). After the price node is built and deployed, add the price node to `DEFAULT_NODES` in [ProvidersRepository.java](https://github.com/haveno-dex/haveno/blob/3cdd88b56915c7f8afd4f1a39e6c1197c2665d63/core/src/main/java/haveno/core/provider/ProvidersRepository.java#L50).
### Update the download URL ### Update the download URL
@ -124,7 +124,7 @@ Change every instance of `https://haveno.exchange/downloads` to your download UR
## Review all local changes ## Review all local changes
For comparison, placeholders to run on mainnet are marked [here on this branch](https://github.com/MoneroEcosystem/haveno/tree/mainnet_placeholders). For comparison, placeholders to run on mainnet are marked [here on this branch](https://github.com/haveno-dex/haveno/tree/mainnet_placeholders).
## Start users for testing ## Start users for testing
@ -155,8 +155,8 @@ However a [more robust VPS setup](./deployment-guide.md) should be used for actu
## Build the installers for distribution ## Build the installers for distribution
To build the installers for distribution, first change `XMR_STAGENET` to `XMR_MAINNET` in [package.gradle](https://github.com/MoneroEcosystem/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/desktop/package/package.gradle#L278). To build the installers for distribution, first change `XMR_STAGENET` to `XMR_MAINNET` in [package.gradle](https://github.com/haveno-dex/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/desktop/package/package.gradle#L278).
Then [follow instructions](https://github.com/MoneroEcosystem/haveno/blob/master/desktop/package/README.md) to build the installers for distribution. Then [follow instructions](https://github.com/haveno-dex/haveno/blob/master/desktop/package/README.md) to build the installers for distribution.
Alternatively, the installers are built automatically by GitHub. Alternatively, the installers are built automatically by GitHub.

View file

@ -8,7 +8,7 @@ This document is a guide for Haveno development.
## Run the UI proof of concept ## Run the UI proof of concept
Follow [instructions](https://github.com/MoneroEcosystem/haveno-ui-poc) to run Haveno's UI proof of concept in a browser. Follow [instructions](https://github.com/haveno-dex/haveno-ui-poc) to run Haveno's UI proof of concept in a browser.
This proof of concept demonstrates using Haveno's gRPC server with a web frontend (react and typescript) instead of Haveno's JFX application. This proof of concept demonstrates using Haveno's gRPC server with a web frontend (react and typescript) instead of Haveno's JFX application.
@ -20,19 +20,19 @@ Otherwise follow [instructions](import-haveno.md) to import Haveno into a Eclips
## Run end-to-end API tests ## Run end-to-end API tests
Follow [instructions](https://github.com/MoneroEcosystem/haveno-ts#run-tests) to run end-to-end API tests in the UI project. Follow [instructions](https://github.com/haveno-dex/haveno-ts#run-tests) to run end-to-end API tests in the UI project.
## Add new API functions and tests ## Add new API functions and tests
1. Follow [instructions](https://github.com/MoneroEcosystem/haveno-ts#run-tests) to run Haveno's existing API tests successfully. 1. Follow [instructions](https://github.com/haveno-dex/haveno-ts#run-tests) to run Haveno's existing API tests successfully.
2. Define the new service or message in Haveno's [protobuf definition](../proto/src/main/proto/grpc.proto). 2. Define the new service or message in Haveno's [protobuf definition](../proto/src/main/proto/grpc.proto).
3. Clean and build Haveno after modifying the protobuf definition: `make clean && make` 3. Clean and build Haveno after modifying the protobuf definition: `make clean && make`
4. Implement the new service in Haveno's backend, following existing patterns.<br> 4. Implement the new service in Haveno's backend, following existing patterns.<br>
For example, the gRPC function to get offers is implemented by [`GrpcServer`](https://github.com/MoneroEcosystem/haveno/blob/master/daemon/src/main/java/haveno/daemon/grpc/GrpcServer.java) > [`GrpcOffersService.getOffers(...)`](https://github.com/MoneroEcosystem/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/daemon/src/main/java/haveno/daemon/grpc/GrpcOffersService.java#L102) > [`CoreApi.getOffers(...)`](https://github.com/MoneroEcosystem/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/core/src/main/java/haveno/core/api/CoreApi.java#L403) > [`CoreOffersService.getOffers(...)`](https://github.com/MoneroEcosystem/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/core/src/main/java/haveno/core/api/CoreOffersService.java#L131) > [`OfferBookService.getOffers()`](https://github.com/MoneroEcosystem/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/core/src/main/java/haveno/core/offer/OfferBookService.java#L248). For example, the gRPC function to get offers is implemented by [`GrpcServer`](https://github.com/haveno-dex/haveno/blob/master/daemon/src/main/java/haveno/daemon/grpc/GrpcServer.java) > [`GrpcOffersService.getOffers(...)`](https://github.com/haveno-dex/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/daemon/src/main/java/haveno/daemon/grpc/GrpcOffersService.java#L102) > [`CoreApi.getOffers(...)`](https://github.com/haveno-dex/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/core/src/main/java/haveno/core/api/CoreApi.java#L403) > [`CoreOffersService.getOffers(...)`](https://github.com/haveno-dex/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/core/src/main/java/haveno/core/api/CoreOffersService.java#L131) > [`OfferBookService.getOffers()`](https://github.com/haveno-dex/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/core/src/main/java/haveno/core/offer/OfferBookService.java#L248).
5. Build Haveno: `make` 5. Build Haveno: `make`
6. Update the gRPC client in haveno-ts: `npm install` 6. Update the gRPC client in haveno-ts: `npm install`
7. Add the corresponding typescript method(s) to [HavenoClient.ts](https://github.com/MoneroEcosystem/haveno-ts/blob/master/src/HavenoClient.ts) with clear and concise documentation. 7. Add the corresponding typescript method(s) to [HavenoClient.ts](https://github.com/haveno-dex/haveno-ts/blob/master/src/HavenoClient.ts) with clear and concise documentation.
8. Add clean and comprehensive tests to [HavenoClient.test.ts](https://github.com/MoneroEcosystem/haveno-ts/blob/master/src/HavenoClient.test.ts), following existing patterns. 8. Add clean and comprehensive tests to [HavenoClient.test.ts](https://github.com/haveno-dex/haveno-ts/blob/master/src/HavenoClient.test.ts), following existing patterns.
9. Run the tests with `npm run test -- -t 'my test'` to run tests by name and `npm test` to run all tests together. Ensure all tests pass and there are no exception stacktraces in the terminals of Alice, Bob, or the arbitrator. 9. Run the tests with `npm run test -- -t 'my test'` to run tests by name and `npm test` to run all tests together. Ensure all tests pass and there are no exception stacktraces in the terminals of Alice, Bob, or the arbitrator.
10. Open pull requests to the haveno and haveno-ts projects for the backend and frontend implementations. 10. Open pull requests to the haveno and haveno-ts projects for the backend and frontend implementations.

View file

@ -37,7 +37,7 @@ Restart the terminal for the changes to take effect.
If it's the first time you are building Haveno, run the following commands to download the repository, the needed dependencies, and build the latest release. If using a third party network, replace the repository URL with theirs: If it's the first time you are building Haveno, run the following commands to download the repository, the needed dependencies, and build the latest release. If using a third party network, replace the repository URL with theirs:
``` ```
git clone https://github.com/MoneroEcosystem/haveno.git git clone https://github.com/haveno-dex/haveno.git
cd haveno cd haveno
git checkout master git checkout master
make make
@ -107,7 +107,7 @@ If you don't use *screen* or *tmux*, open 4 terminal windows and run in each one
2. `make user1-desktop-local` or if you want to run user1 as a daemon: `make user1-daemon-local` 2. `make user1-desktop-local` or if you want to run user1 as a daemon: `make user1-daemon-local`
3. `make user2-desktop-local` or if you want to run user2 as a daemon: `make user2-daemon-local` 3. `make user2-desktop-local` or if you want to run user2 as a daemon: `make user2-daemon-local`
4. `make arbitrator-desktop-local` or if you want to run arbitrator as a daemon: `make arbitrator-daemon-local` 4. `make arbitrator-desktop-local` or if you want to run arbitrator as a daemon: `make arbitrator-daemon-local`
5. Optionally run a [local price node](https://github.com/MoneroEcosystem/haveno-pricenode/blob/main/README.md) 5. Optionally run a [local price node](https://github.com/haveno-dex/haveno-pricenode/blob/main/README.md)
If this is the first time launching the arbitrator desktop application, register the arbitrator after the interface opens. Go to the *Account* tab and press `cmd+r`. Confirm the registration of the arbitrator. If this is the first time launching the arbitrator desktop application, register the arbitrator after the interface opens. Go to the *Account* tab and press `cmd+r`. Confirm the registration of the arbitrator.

65
gpg_keys/woodser.asc Normal file
View file

@ -0,0 +1,65 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=4SFl
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -413,24 +413,6 @@ public final class PeerManager implements ConnectionListener, PersistedDataHost
return latestLivePeers; return latestLivePeers;
} }
public Set<Peer> getLiveSeedNodePeers() {
int oldNumLatestLivePeers = latestLivePeers.size();
Set<Peer> currentLiveSeedNodePeers = getConnectedReportedPeers().stream()
.filter(e -> isSeedNode(e))
.collect(Collectors.toSet());
long maxAge = new Date().getTime() - MAX_AGE_LIVE_PEERS;
latestLivePeers.clear();
Set<Peer> latestLiveSeedNodePeers = currentLiveSeedNodePeers.stream()
.filter(peer -> peer.getDateAsLong() > maxAge)
.collect(Collectors.toSet());
if (oldNumLatestLivePeers != latestLiveSeedNodePeers.size())
log.info("Num of latestLiveSeedNodePeers={}", latestLiveSeedNodePeers.size());
return latestLivePeers;
}
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
// Capabilities // Capabilities
@ -749,10 +731,6 @@ public final class PeerManager implements ConnectionListener, PersistedDataHost
return maxConnections; return maxConnections;
} }
public Set<NodeAddress> getSeedNodeAddresses() {
return new HashSet<>(seedNodeAddresses);
}
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
// Listeners // Listeners

View file

@ -278,8 +278,6 @@ message NotificationMessage {
KEEP_ALIVE = 2; KEEP_ALIVE = 2;
TRADE_UPDATE = 3; TRADE_UPDATE = 3;
CHAT_MESSAGE = 4; CHAT_MESSAGE = 4;
OFFER_UPDATE = 5;
MARKET_UPDATE = 6;
} }
string id = 1; string id = 1;
@ -1127,105 +1125,6 @@ message AddressBalanceInfo {
bool is_address_unused = 4; bool is_address_unused = 4;
} }
///////////////////////////////////////////////////////////////////////////////////////////
// Network
///////////////////////////////////////////////////////////////////////////////////////////
service Network {
rpc GetOnlinePeers (GetOnlinePeersRequest) returns (GetOnlinePeersReply) {
}
rpc GetSeednodes (GetSeednodesRequest) returns (GetSeednodesReply) {
}
rpc GetRegisteredArbitrators (GetRegisteredArbitratorsRequest) returns (GetRegisteredArbitratorsReply) {
}
rpc GetNetworkFilter (GetNetworkFilterRequest) returns (GetNetworkFilterReply) {
}
rpc SetNetworkFilter (SetNetworkFilterRequest) returns (SetNetworkFilterReply) {
}
rpc GetAlerts (GetAlertsRequest) returns (GetAlertsRequest) {
}
rpc RegisterNetworkListener (RegisterNetworkListenerRequest) returns (stream NetworkMessage) {
}
}
message RegisterNetworkListenerRequest {
}
message NetworkMessage {
NetworkEnvelope network_envelope = 1;
}
message PeerInfo {
enum Capability {
SEED_NODE = 0;
MEDIATION = 1;
SIGNED_ACCOUNT_AGE_WITNESS = 2;
REFUND_AGENT = 3;
TRADE_STATISTICS_HASH_UPDATE = 4;
NO_ADDRESS_PRE_FIX = 5;
TRADE_STATISTICS_3 = 6;
}
string node_address = 1;
repeated Capability capabilities = 2;
}
message GetOnlinePeersRequest {}
message GetOnlinePeersReply {
repeated PeerInfo peers = 1;
}
message GetSeednodesRequest {}
message GetSeednodesReply {
repeated PeerInfo peers = 1;
}
message GetRegisteredArbitratorsRequest {}
message GetRegisteredArbitratorsReply {
repeated Arbitrator arbitrators = 1;
}
message GetNetworkFilterRequest {}
message GetNetworkFilterReply {
Filter filter = 1;
}
message SetNetworkFilterRequest {
string signature = 1;
repeated string bannedOffers = 2;
repeated string bannedNetworkAddresses = 3;
repeated string bannedTradingAccountData = 4;
repeated string bannedCurrencyCodes = 5;
repeated string bannedTradingMethods = 6;
repeated string bannedAccountWitenessSignerPubKeys = 7;
repeated string bannedArbitratorAddresses = 8;
repeated string bannedRefundAgentAddresses = 10;
repeated string bannedXmrFeeReceiverAddresses = 11;
repeated string bannedSeedNodeAddresses = 12;
repeated string bannedPriceRelayNodeAddresses = 13;
repeated string bannedMoneroNodeAddresses = 14;
bool banPublicMoneroNetwork = 15;
bool disableAutoConfirm = 16;
repeated string minVersionRequiredForTrading = 17;
repeated string bannedPrivilegedDevPubKeys = 18;
repeated string bannedAutoConfirmExplorers = 19;
bool disableMempoolValidation = 20;
bool disableApi = 21;
}
message SetNetworkFilterReply {
}
message GetAlertsRequest {}
message GetAlertsReply {
repeated Alert alerts = 1;
}
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
// Marketplace Protospec // Marketplace Protospec

View file

@ -15,7 +15,7 @@
#### In `dispXXXX` AppVM: #### In `dispXXXX` AppVM:
##### Clone repository ##### Clone repository
```shell ```shell
% git clone --depth=1 https://github.com/MoneroEcosystem/haveno % git clone --depth=1 https://github.com/haveno-dex/haveno
``` ```
--- ---
@ -233,7 +233,7 @@ $ printf 'haveno-Haveno.desktop' | qvm-appmenus --set-whitelist haveno
<p style="text-align: center;">Example:</p> <p style="text-align: center;">Example:</p>
```shell ```shell
% bash haveno/scripts/install_qubes/scripts/1-TemplateVM/1.0-haveno-templatevm.sh "https://download.bell-sw.com/java/21.0.6+10/bellsoft-jdk21.0.6+10-linux-amd64.deb" "a5e3fd9f5323de5fc188180c91e0caa777863b5b" "https://github.com/MoneroEcosystem/haveno" % bash haveno/scripts/install_qubes/scripts/1-TemplateVM/1.0-haveno-templatevm.sh "https://download.bell-sw.com/java/21.0.6+10/bellsoft-jdk21.0.6+10-linux-amd64.deb" "a5e3fd9f5323de5fc188180c91e0caa777863b5b" "https://github.com/haveno-dex/haveno"
``` ```
+ Upon Successful Compilation & Packaging, A `Filecopy` Confirmation Will Be Presented + Upon Successful Compilation & Packaging, A `Filecopy` Confirmation Will Be Presented