diff --git a/assets/translations/en.json b/assets/translations/en.json index 38f3f23f02..090abdc687 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -1,701 +1,700 @@ { - "plsActivateKmd": "Please activate KMD", - "rewardClaiming": "Rewards claim in progress", - "noKmdAddress": "No KMD address found", - "dex": "DEX", - "asset": "Asset", - "assets": "Assets", - "price": "Price", - "volume": "Volume", - "history": "History", - "lastTransactions": "Last transactions", - "active": "Active", - "change24h": "Change 24h", - "change24hRevert": "24h %", - "viewOnExplorer": "View on Explorer", - "explorerUnavailable": "Block explorer unavailable", - "getRewards": "Get Rewards", - "rewardBoxTitle": "Komodo Active User Reward", - "network": "Network", - "rewardBoxSubTitle": "All You need to know", - "rewardBoxReadMore": "Read more", - "claimSuccess": "Claim success", - "noRewards": "There are no rewards available", - "kmdAmount": "Amount, KMD", - "kmdReward": "Reward, KMD", - "kmdRewardSpan1": "Market data (prices, charts, etc.) marked with this icon originates from third party sources", - "timeLeft": "Time Left", - "status": "Status", - "complete": "Complete", - "claim": "Claim", - "noTransactionsTitle": "No transactions available", - "noTransactionsDescription": "Click the receive button to view your address and deposit funds", - "noClaimableRewards": "No claimable rewards", - "amountToSend": "Amount to send", - "enterAmountToSend": "Enter {} send amount", - "inferiorSendAmount": "{} send amount must be > 0", - "date": "Date", - "confirmations": "Confirmations", - "blockHeight": "Block Height", - "from": "From", - "to": "To", - "fromDate": "Date from", - "toDate": "Date to", - "amount": "Amount", - "close": "Close", - "fee": "Fee", - "done": "Done", - "fees": "Fees", - "recipientAddress": "Recipient address", - "transactionHash": "Transaction Hash", - "transactionFailed": "Transaction Failed", - "hash": "Hash", - "fullHash": "Full Hash", - "coinAddress": "Enter {} address", - "youSend": "You are sending", - "invalidAddress": "Invalid {} address", - "customFeeCoin": "Custom fee [{}]", - "customFeeOptional": "Custom fee (optional)", - "optional": "Optional", - "showMore": "Show more", - "settings": "Settings", - "somethingWrong": "Something went wrong!", - "transactionComplete": "Transaction complete!", - "transactionDenied": "Denied", - "coinDisableSpan1": "You can't disable {} while it has a swap in progress", - "confirmSending": "Confirm sending", - "confirmSend": "Confirm send", - "confirm": "Confirm", - "confirmed": "Confirmed", - "ok": "OK", - "cancel": "Cancel", - "next": "Next", - "continueText": "Continue", - "accept": "Accept", - "create": "Create", - "import": "Import", - "enterDataToSend": "Enter data to send", - "address": "Address: ", - "request": "Request", - "disable": "Disable", - "usdPrice": "USD Price", - "portfolio": "Portfolio", - "editList": "Edit list", - "withBalance": "Hide 0 balance assets", - "balance": "Balance", - "transactions": "Transactions", - "send": "Send", - "receive": "Receive", - "faucet": "Faucet", - "reward": "Reward", - "loadingSwap": "Loading Swaps...", - "swapDaily": "Swaps Last 24h", - "swapMonthly": "Swaps Last 30d", - "swapAllTime": "Swaps All Time", - "seed": "Seed", - "wallet": "Wallet", - "logIn": "Log In", - "logOut": "Log out", - "logOutGo": "Go", - "delete": "Delete", - "forget": "Clear", - "seedPhrase": "Seed phrase:", - "assetNumber": { - "zero": "{} Assets", - "one": "{} Asset", - "two": "{} Assets", - "many": "{} Assets", - "few": "{} Assets", - "other": "{} Assets" - }, - "clipBoard": "Copied to the clipboard", - "walletsManagerCreateWalletButton": "Create wallet", - "walletsManagerImportWalletButton": "Import wallet", - "walletsManagerStepBuilderCreationWalletError": "Failed to create wallet, please try again later", - "walletCreationTitle": "Create wallet", - "walletImportTitle": "Import wallet", - "walletImportByFileTitle": "Importing seed file", - "walletImportCreatePasswordTitle": "Create a password for \"{}\" wallet", - "walletImportByFileDescription": "Create a password of your seed file to decrypt it. This password will be used to log in to your wallet", - "walletLogInTitle": "Log in", - "walletCreationNameHint": "Wallet name", - "walletCreationPasswordHint": "Wallet password", - "walletCreationConfirmPasswordHint": "Confirm password", - "walletCreationConfirmPassword": "Confirm password", - "walletCreationUploadFile": "Upload seed file", - "walletCreationEmptySeedError": "Seed should not be empty", - "walletCreationExistNameError": "Wallet name exists", - "walletCreationNameLengthError": "Name length should be between 1 and 40", - "walletCreationFormatPasswordError": "Password must contain at least 8 characters, with at least one digit, one lower-case, one upper-case and one special symbol. The password can't contain the same character 3 times in a row. The password can't contain the word 'password'", - "walletCreationConfirmPasswordError": "Your passwords do not match. Please try again.", - "incorrectPassword": "Incorrect password", - "importSeedEnterSeedPhraseHint": "Enter seed", - "passphraseCheckingTitle": "Let's double check your seed phrase", - "passphraseCheckingDescription": "Your seed phrase is important - that's why it is important to make sure it is saved correctly. We'll ask you to confirm the position of three words in your seed phrase to make sure it has been saved, so you'll be able to easily restore your wallet wherever and whenever you want.", - "passphraseCheckingEnterWord": "Enter the {} word of your seed phrase:", - "passphraseCheckingEnterWordHint": "Enter the {} word", - "back": "Back", - "settingsMenuGeneral": "General", - "settingsMenuLanguage": "Change language", - "settingsMenuSecurity": "Security", - "settingsMenuAbout": "About", - "seedPhraseSettingControlsViewSeed": "View seed phrase", - "seedPhraseSettingControlsDownloadSeed": "Download seed file", - "debugSettingsResetActivatedCoins": "Reset activated coins", - "debugSettingsDownloadButton": "Download logs", - "or": "Or", - "passwordTitle": "Password", - "passwordUpdateCreate": "Create the password", - "enterThePassword": "Enter your password", - "changeThePassword": "Change your password", - "changePasswordSpan1": "You can change your password for this wallet at any time (it is used to encrypt your seed phrase)", - "updatePassword": "Update password", - "passwordHasChanged": "Password has changed", - "confirmationForShowingSeedPhraseTitle": "Enter wallet password", - "saveAndRemember": "Save & remember", - "seedPhraseShowingTitle": "Your seed phrase", - "seedPhraseShowingWarning": "Make sure no one spies on your seed phrase!", - "seedPhraseShowingShowPhrase": "Show my seed phrase", - "seedPhraseShowingCopySeed": "Copy seed", - "seedPhraseShowingSavedPhraseButton": "I saved my seed phrase", - "seedAccessSpan1": "Your seed phrase is how you unlock your assets. Be sure to save this securely, and do not share it with anyone!", - "backupSeedNotificationTitle": "Backup your seed phrase", - "backupSeedNotificationDescription": "Confirm your seed phrase in the settings to make the first transaction", - "backupSeedNotificationButton": "Backup", - "swapConfirmationTitle": "Confirm exchange", - "swapConfirmationYouReceive": "You will receive:", - "swapConfirmationYouSending": "You are sending:", - "tradingDetailsTitleFailed": "Swap failed", - "tradingDetailsTitleCompleted": "Swap completed", - "tradingDetailsTitleInProgress": "Swap in progress", - "tradingDetailsTitleOrderMatching": "Order matching", - "tradingDetailsTotalSpentTime": "Total time {} min {} sec", - "tradingDetailsTotalSpentTimeWithHours": "Total time {} h {} min {} sec", - "swapRecoverButtonTitle": "You need unlock your funds", - "swapRecoverButtonText": "Unlock Funds", - "swapRecoverButtonErrorMessage": "Something wrong, please try again", - "swapRecoverButtonSuccessMessage": "Recover swap successful", - "swapProgressStatusFailed": "Failed swap", - "swapDetailsStepStatusFailed": "Failed", - "disclaimerAcceptEulaCheckbox": "EULA", - "disclaimerAcceptTermsAndConditionsCheckbox": "Terms & Conditions", - "disclaimerAcceptDescription": "By clicking the button below, you confirm that you have read and accept:", - "swapDetailsStepStatusInProcess": "In progress", - "swapDetailsStepStatusTimeSpent": "Time spent {}", - "milliseconds": "ms", - "seconds": "s", - "minutes": "m", - "hours": "h", - "coinAddressDetailsNotificationTitle": "Confirm your seed phrase", - "coinAddressDetailsNotificationDescription": "In order to receive funds to your wallet, confirm the following phrase", - "swapFeeDetailsPaidFromBalance": "Paid from balance:", - "swapFeeDetailsSendCoinTxFee": "send {} tx fee", - "swapFeeDetailsReceiveCoinTxFee": "receive {} tx fee", - "swapFeeDetailsTradingFee": "trading fee", - "swapFeeDetailsSendTradingFeeTxFee": "send trading fee tx fee", - "swapFeeDetailsNone": "None", - "swapFeeDetailsPaidFromReceivedVolume": "Paid from received volume", - "logoutPopupTitle": "Confirm log out?", - "logoutPopupDescriptionWalletOnly": "Are you sure you want to logout?", - "logoutPopupDescription": "Are you sure you want to logout? Your opened orders will no longer be available to match with other users and any trades in progress may not be completed", - "transactionDetailsTitle": "Transaction completed", - "customSeedWarningText": "Custom seed phrases are generally less secure and easier to crack than a generated BIP39-compliant seed phrase. To confirm you understand and are aware of the risk, type \"I understand\" in the box below.", - "customSeedIUnderstand": "i understand", - "walletCreationBip39SeedError": "BIP39 seed validation failed, try again or select 'Allow custom seed'", - "walletCreationHdBip39SeedError": "Your input seed is not BIP39 compliant, and can not be used in multi-address wallet mode. Please try again, or disable multi-address wallet mode and select 'Allow custom seed' to proceed.", - "walletPageNoSuchAsset": "No assets match search criteria", - "swapCoin": "Swap", - "fiatBalance": "Fiat balance", - "yourBalance": "Your balance", - "all": "All", - "taker": "Taker", - "maker": "Maker", - "successful": "Successful", - "success": "Success", - "failed": "Failed", - "exchangeCoin": "Exchange coin", - "search": "Search", - "searchAssets": "Search assets", - "searchCoin": "Search coin", - "filters": "Filters", - "sellAsset": "Sell asset", - "buyAsset": "Buy asset", - "assetName": "Asset name", - "protocol": "Protocol", - "resetAll": "Reset All", - "reset": "Reset", - "clearFilter": "Clear Filter", - "addAssets": "Add assets", - "removeAssets": "Remove assets", - "selectedAssetsCount": "Selected {} assets", - "clickAssetToAddHint": "No assets selected", - "clickAssetToRemoveHint": "Select assets to remove", - "defaultCoinDisableWarning": "You can't disable {}, it is a default coin", - "parentCoinDisableWarning": "Disabling {} will also disable its tokens: {}. Continue?", - "coinDisableOpenOrdersWarning": "There are {} open orders for {}. Cancel these orders and disable the coin?", - "supportFrequentlyQuestionSpan": "Frequently asked questions", - "support": "Support", - "supportInfoTitle1": "Do you store my private keys?", - "supportInfoContent1": "No! Komodo Wallet is non-custodial. We never store any sensitive data, private keys, seed phrases, or your PIN. This data is only stored locally, and is encrypted with your wallet password. It never leaves your device unless you export it. You are in full control of your assets.", - "supportInfoTitle2": "How is trading with Komodo Wallet different from trading on other DEXs?", - "supportInfoContent2": "Most DEXs only allow you to trade assets that are based on a single blockchain network, use proxy tokens, and only allow placing a single order with the same funds. Komodo Wallet enables you to trade across different blockchain networks without proxy tokens, and use the same funds to place multiple orders for different pairs. For example, you can sell 0.1 BTC for KMD, QTUM, or VRSC — the first order that fills automatically cancels all other orders.", - "supportInfoTitle3": "How long does each atomic swap take?", - "supportInfoContent3": "Several factors determine the processing time for each swap. The block time of the traded assets depends on each network (i.e. a BTC swap with 10 minute block time will typically be slower than a KMD swap with 1 minute block time). Depending on your security preferences, you can increase or lower the number of confirmations required, which will also affect the speed of your swap. For example, you can configure Komodo Wallet to consider a KMD transaction as final after just 3 confirmations which makes the swap time faster compared to waiting for a notarization.", - "supportInfoTitle4": "Do I need to be online for the duration of the swap?", - "supportInfoContent4": "Yes. You must remain connected to the internet and have your app running to successfully complete each atomic swap (very short breaks in connectivity are usually fine). If you go offline, there is risk of trade cancellation if you are a maker, or risk of loss of fees if you are a taker (remaining funds will be refunded after a few hours). The atomic swap protocol requires both participants to stay online so that Komodo Wallet can monitor the involved blockchains for the process to stay atomic. If you go offline, so will your orders, and any swaps that are in progress will fail, leading to potential loss of trade / transaction fees, and a wait time for the swap HTLC to timeout and issue a refund. It may also negatively affect your wallet's reputation score for future trade matching. When you come back online, your orders will begin to broadcast again at the price you set before you went offline. If there has been significant price movement in the meantime, you might unintentionally offer someone a bargain! For this reason, we recommend cancelling orders before closing Komodo Wallet, or reviewing and revising your prices when restarting Komodo Wallet.", - "supportInfoTitle5": "How are the fees in Komodo Wallet calculated?", - "supportInfoContent5": "There are two fee categories to consider when trading with Komodo Wallet. Komodo Wallet charges approximately 0.13% (1/777 of trading volume but not lower than 0.0001) as the trading fee for taker orders, and maker orders have zero trade fee! Both makers and takers will need to pay normal network transaction fees to the involved blockchains when making atomic swap transactions. Network transaction fees can vary greatly depending on your selected trading pair, and will include gas fees paid in the parent coin where applicable (e.g. a BTC-BEP20 to BTC-ERC20 trade will require BNB and ETH to pay the gas fee).", - "supportInfoTitle6": "Do you provide user support?", - "supportInfoContent6": "Yes! Komodo Wallet offers support through the Komodo Discord server. The team and the community are always happy to help!", - "supportInfoTitle7": "Who is behind Komodo Wallet?", - "supportInfoContent7": "Komodo Wallet is developed by the Komodo team. Komodo is one of the most established blockchain projects working on innovative solutions like atomic swaps, Delayed Proof of Work, and an interoperable multi-chain architecture.", - "supportInfoTitle8": "Is it possible to develop my own white-label exchange on Komodo Wallet?", - "supportInfoContent8": "Absolutely! You can read our developer documentation at https://developers.komodoplatform.com for more details or contact us with your partnership inquiries. Have a specific technical question? The Komodo Wallet developer community is always ready to help!", - "supportInfoTitle9": "Which devices can I use Komodo Wallet on?", - "supportInfoContent9": "Komodo Wallet is available for mobile on both Android and iPhone, and for desktop on Windows, Mac, and Linux operating systems.", - "supportInfoTitle10": "Compliance Info", - "supportInfoContent10": "Due to regulatory and legal restrictions the citizens of certain jurisdictions including, but not limited to, the United States of America, Canada, Hong Kong, Israel, Singapore, Sudan, Austria, Iran (and any other state, country or other jurisdiction that is embargoed by the United States of America or the European Union) are not allowed to use this application.", - "supportInfoTitle11": "My coins are missing", - "supportInfoContent11": "See the instructions in the dialog", - "supportDiscordButton": "Komodo #general-support DISCORD", - "supportAskSpan": "If you have any questions, suggestions or technical problems with the Komodo Wallet app, you can report it to get support from our team.", - "fiat": "Buy / Sell", - "bridge": "Bridge", - "apply": "Apply", - "makerOrder": "Maker order", - "takerOrder": "Taker order", - "buyPrice": "Buy price", - "inProgress": "In Progress", - "orders": "Orders", - "swap": "Swap", - "percentFilled": "{}% filled", - "orderType": "Order type", - "recover": "Recover", - "cancelAll": "Cancel all", - "type": "Type", - "sell": "Sell", - "sellCrypto": "Sell Crypto", - "sellCryptoDescription": "Select a cryptocurrency to sell through our integrated Bitrefill service.", - "buy": "Buy", - "changingWalletPassword": "Changing your wallet password", - "changingWalletPasswordDescription": "This password will be used for logging in to your wallet", - "dark": "Dark", - "darkMode": "Dark mode", - "light": "Light", - "lightMode": "Light mode", - "defaultText": "Default", - "clear": "Clear", - "remove": "Remove", - "newText": "new", - "whatsNew": "What's new?", - "remindLater": "Remind me later", - "updateNow": "Update now", - "updatePopupTitle": "New update! Would you like to\nupdate to latest version?", - "activationFailedMessage": "Activation failed", - "retryButtonText": "Retry", - "reloadButtonText": "Reload", - "feedbackFormTitle": "Your feedback is important to us", - "feedbackFormDescription": "Our mission to improve the wallet never stops, and your feedback is highly appreciated!", - "feedbackFormThanksTitle": "Thank you for your feedback", - "feedbackFormThanksDescription": "We will send a response to your email address as soon as possible", - "email": "Email", - "emailValidatorError": "Please enter a valid email address", - "contactRequiredError": "Contact details are required for support requests", - "contactDetailsMaxLengthError": "Contact details must be {} characters or less", - "discordUsernameValidatorError": "Please enter a valid Discord username (2-32 characters, letters, numbers, dots, underscores)", - "telegramUsernameValidatorError": "Please enter a valid Telegram username (5-32 characters, letters, numbers, underscores)", - "matrixIdValidatorError": "Please enter a valid Matrix ID (e.g., @username:server.com)", - "myCoinsMissing": "Can't find your coins?", - "myCoinsMissingReassurance": "Your coins should be safe—you're likely in the wrong wallet mode.", - "myCoinsMissingToRecover": "To recover:", - "myCoinsMissingSteps": "Log out → Turn OFF \"Multi Address Wallet\" → Log in → Add your coins back", - "myCoinsMissingMoreInfo": "More information", - "myCoinsMissingHelp": "I still need help", - "myCoinsMissingSignIn": "Sign in with single-address mode", - "feedbackValidatorEmptyError": "Please enter your feedback", - "feedbackValidatorMaxLengthError": "Please limit your feedback to {} characters or less", - "yourFeedback": "Your feedback", - "sendFeedback": "Send feedback", - "sendFeedbackError": "Something wrong :( Please try again later. Your feedback is very important for us", - "addMoreFeedback": "Add more feedback", - "closePopup": "Close pop-up", - "exchange": "Exchange", - "connectSomething": "Connect {}", - "hardwareWallet": "Hardware wallet", - "komodoWalletSeed": "Komodo Wallet seed", - "metamask": "Metamask", - "comingSoon": "Coming soon", - "walletsTypeListTitle": "Start using Komodo Wallet", - "seedPhraseMakeSureBody": "Write down a piece of paper and put the seed phrase in a safe place. This is the only access to your wallet if you lose your device or password access to your wallet.", - "seedPhraseSuccessTitle": "Seed phrase has been confirmed", - "seedPhraseSuccessBody": "You can trade, send and receive any coins. We hope you put your seed phrase in the safe place, because if you lose access to your seed phrase you can lose your funds. Be careful.", - "seedPhraseGotIt": "I got it", - "viewSeedPhrase": "View seed phrase", - "backupSeedPhrase": "Backup seed phrase", - "seedOr": "OR", - "seedDownload": "Download seed file", - "seedSaveAndRemember": "Save and remember", - "seedIntroWarning": "This phrase is the main access to your\nassets, save and never share this phrase", - "seedSettings": "Seed phrase", - "errorDescription": "Error description", - "tryAgain": "Oops! Something went wrong. \nPlease try again. \nIf it didn't help - contact us.", - "customFeesWarning": "Only use custom fees if you know what you are doing!", - "fiatExchange": "Exchange", - "bridgeExchange": "Exchange", - "noTxSupportHidden": "Please use button below to open block explorer", - "deleteWalletTitle": "Are you sure you want to delete \"{}\" wallet?", - "deleteWalletInfo": "Warning: This is a permanent action and cannot be undone. You can restore your wallet using the seed phrase, but you will lose your swap history. \n\nEnsure you have a backup of your seed phrase before proceeding.", - "trezorEnterPinTitle": "Enter PIN for your Trezor", - "trezorEnterPinHint": "The PIN layout is displayed on your Trezor", - "trezorInProgressTitle": "Looking for your Trezor...", - "trezorInProgressHint": "Please do not disable your Trezor", - "trezorErrorBusy": "Device is busy.\nMake sure that Trezor Suite is not running in background.", - "trezorErrorInvalidPin": "Invalid PIN code", - "trezorSelectTitle": "Connect a hardware wallet", - "trezorSelectSubTitle": "Select a hardware wallet you'd like to use with Komodo Wallet", - "mixedCaseError": "If you are using non mixed case address, please try to convert to mixed case one.", - "addressConvertedToMixedCase": "Address automatically converted to mixed-case for checksum validation.", - "invalidAddressChecksum": "Invalid address checksum", - "notEnoughBalance": "Not enough balance", - "pleaseInputData": "Please input data", - "customFeeHigherAmount": "Custom fee can't be higher than the amount", - "noSenderAddress": "Sender address is not specified.", - "confirmOnTrezor": "Confirm on Trezor", - "alphaVersionWarningTitle": "Notification about alpha-testing program", - "alphaVersionWarningDescription": "Komodo Wallet is currently available for alpha testing. As with any early-stage software, there are relevant risks for testers. It's recommended not to use the alpha version of this application to hold or trade large amounts of funds. The application is currently (during the alpha development phase) hosted on the Google Firebase cloud service (web only) and collects non-personal analytics using Google/Firebase Analytics. By clicking the \"Accept\" button, you confirm that you understand this disclaimer and accept the possible risks.", - "sendToAnalytics": "Send anonymous data to analytics", - "backToWallet": "Back to wallet", - "backToDex": "Back to DEX", - "backToBridge": "Back to Bridge", - "scanToGetAddress": "Scan to get address", - "listIsEmpty": "This list is empty", - "setMax": "Set Max", - "setMin": "Set Min", - "timeout": "Timeout", - "notEnoughBalanceForGasError": "Not enough balance to pay gas.", - "notEnoughFundsError": "Not enough funds to perform a trade", - "dexErrorMessage": "Something went wrong!", - "seedConfirmInitialText": "Enter the seed phrase", - "seedConfirmIncorrectText": "Incorrect seed phrase", - "usedSamePassword": "This password matches your current one. Please create a different password.", - "passwordNotAccepted": "Password not accepted", - "confirmNewPassword": "Confirm new password", - "enterNewPassword": "Enter new password", - "currentPassword": "Current password", - "walletNotFound": "Wallet not found!", - "passwordIsEmpty": "Password is empty", - "passwordContainsTheWordPassword": "Password cannot contain the word 'password'", - "passwordTooShort": "Password must be at least 8 characters long", - "passwordMissingDigit": "Password must contain at least 1 digit", - "passwordMissingLowercase": "Password must contain at least 1 lowercase character", - "passwordMissingUppercase": "Password must contain at least 1 uppercase character", - "passwordMissingSpecialCharacter": "Password must contain at least 1 special character", - "passwordConsecutiveCharacters": "Password cannot contain the same character 3 times in a row", - "passwordSecurity": "Password Security", - "allowWeakPassword": "Allow weak password", - "allowWeakPasswordDescription": "For support and debugging purposes only. Bypasses password security requirements.", - "dexBalanceNotSufficientError": "{} balance is not sufficient. {} {} required", - "dexEnterPriceError": "Please enter price", - "dexZeroPriceError": "Price must be greater than 0", - "dexSelectBuyCoinError": "Please select Buy Coin", - "dexSelectSellCoinError": "Please select Sell Coin", - "dexCoinSuspendedError": "{} is suspended, can't perform trade", - "dexEnterBuyAmountError": "Please enter Buy Amount", - "dexEnterSellAmountError": "Please enter Sell Amount", - "dexZeroBuyAmountError": "Buy amount should be greater than 0", - "dexZeroSellAmountError": "Sell amount should be greater than 0", - "dexMaxSellAmountError": "Max sell amount is {} {}", - "dexMaxOrderVolume": "Max volume for order at this price is {} {}", - "dexMinSellAmountError": "Minimum sell amount is {} {}", - "dexMaxOrderVolumeError": "Max order volume is {} {}", - "dexInsufficientFundsError": "Insufficient funds: {} {} available.", - "dexTradingWithSelfError": "Trading with self is not allowed.", - "bridgeSelectSendProtocolError": "Please select 'FROM' protocol", - "bridgeSelectFromProtocolError": "Please select 'FROM' protocol first.", - "bridgeSelectTokenFirstError": "Please select Token first", - "bridgeEnterSendAmountError": "Please enter send amount", - "bridgeZeroSendAmountError": "Send amount should be greater than 0", - "bridgeMaxSendAmountError": "Max send amount is {} {}", - "bridgeMinOrderAmountError": "Minimum order amount is {} {}", - "bridgeMaxOrderAmountError": "Maximum order amount is {} {}", - "bridgeInsufficientBalanceError": "Insufficient {} balance: {} required, {} available.", - "lowTradeVolumeError": "Trade volume is too low. Min {} {} required.", - "bridgeSelectReceiveCoinError": "Please select 'TO' protocol", - "withdrawNoParentCoinError": "Please activate {}", - "withdrawTopUpBalanceError": "Please top up {} balance", - "withdrawNotEnoughBalanceForGasError": "{} balance not sufficient to pay transaction fees", - "withdrawNotSufficientBalanceError": "Not enough {} to withdraw: available {}, required {} or more", - "withdrawZeroBalanceError": "You have zero {} balance", - "withdrawAmountTooLowError": "{} {} too low, you need > {} {} to send", - "withdrawNoSuchCoinError": "Invalid selection, {} does not exist", - "withdrawPreview": "Preview Withdrawal", - "withdrawPreviewError": "Error occurred while fetching withdrawal preview", - "txHistoryFetchError": "Error fetching tx history from the endpoint. Unsupported type: {}", - "txHistoryNoTransactions": "Transactions are not available", - "maxGapLimitReached": "Maximum gap limit reached - please use existing unused addresses first", - "maxAddressesReached": "Maximum number of addresses reached for this asset", - "missingDerivationPath": "Missing derivation path configuration", - "protocolNotSupported": "Protocol does not support multiple addresses", - "derivationModeNotSupported": "Current wallet mode does not support multiple addresses", - "hdWalletModeSwitchTitle": "Multi-address Wallet?", - "hdWalletModeSwitchSubtitle": "Enabling HD wallet allows you to create multiple addresses for each coin. However, your addresses and balances will change. You can easily switch between the modes when logging in.", - "hdWalletModeSwitchTooltip": "HD wallets require a valid BIP39 seed phrase.", - "noActiveWallet": "No active wallet - please sign in first", - "memo": "Memo", - "gasPriceGwei": "Gas price [Gwei]", - "gasLimit": "Gas limit", - "memoOptional": "Memo (optional)", - "convert": "Convert", - "youClaimed": "You claimed", - "successClaim": "Success claim", - "rewardProcessingShort": "Processing", - "rewardProcessingLong": "Transaction is in progress", - "rewardLessThanTenLong": "UTXO amount less than 10 KMD", - "rewardOneHourNotPassedShort": "<1 hour", - "rewardOneHourNotPassedLong": "One hour not passed yet", - "comparedToCexTitle": "Compared to CEX", - "comparedToCexInfo": "Markets data (prices, charts, etc.) marked with this icon originates from third party sources.", - "makeOrder": "Make Order", - "nothingFound": "Nothing found", - "half": "Half", - "max": "Max", - "reactivating": "Reactivating", - "weFailedCoinActivate": "We failed to activate {} :(", - "failedActivate": "Failed to activate", - "pleaseTryActivateAssets": "Please try to activate your assets again.", - "makerOrderDetails": "Maker Order details", - "cancelled": "Cancelled", - "fulfilled": "Fulfilled", - "cancelledInsufficientBalance": "Cancelled - insufficient balance", - "orderId": "Order ID", - "details": "Details", - "orderBook": "Order book", - "orderBookFailedLoadError": "Failed to load Orderbook", - "orderBookNoAsks": "No asks found", - "orderBookNoBids": "No bids found", - "orderBookEmpty": "Orderbook is empty", - "freshAddress": "Fresh address", - "userActionRequired": "User action required", - "unknown": "Unknown", - "unableToActiveCoin": "Unable to activate {}", - "feedback": "Feedback", - "feedbackViewTitle": "Send us your feedback", - "feedbackPageDescription": "Help us improve by sharing your suggestions, reporting bugs, or giving general feedback.", - "sendFeedbackButton": "Share your feedback", - "feedbackThankyou": "Thank you for your feedback!", - "feedbackError": "Failed to submit feedback", - "selectAToken": "Select a token", - "selectToken": "Select token", - "rate": "Rate", - "totalFees": "Total fees", - "selectProtocol": "Select protocol", - "showSwapData": "Show swap data", - "importSwaps": "Import Swaps", - "changeTheme": "Change theme", - "available": "Available", - "availableForSwaps": "Available for swaps", - "swapNow": "Swap Now", - "passphrase": "Passphrase", - "enterPassphraseHiddenWalletTitle": "Enter passphrase from hidden wallet", - "enterPassphraseHiddenWalletDescription": "Passphrase is required for hidden wallet", - "skip": "Skip", - "activateToSeeFunds": "Activate to see your funds", - "allowCustomFee": "Allow custom seed", - "cancelOrder": "Cancel Order", - "version": "version", - "copyAddressToClipboard": "Copy {} address to clipboard", - "copiedAddressToClipboard": "{} address copied to clipboard", - "createdAt": "Created at", - "coin": "Coin", - "token": "Token", - "matching": "Matching", - "matched": "Matched", - "ongoing": "Ongoing", - "manageAnalytics": "Manage analytics", - "logs": "Logs", - "resetActivatedCoinsTitle": "Reset Activated Coins", - "privateKeys": "Private Keys", - "copyWarning": "Your clipboard isn't a safe place for your private key! Copying the seed phrase or private keys can make them vulnerable to clipboard hacks. Please handle with caution and only copy if absolutely necessary.", - "seedConfirmTitle": "Let's double check your seed phrase", - "seedConfirmDescription": "Your seed phrase is the only way to access Your funds. That's why we want to ensure you saved it safely. Please input your seed phrase into text filed below.", - "standardWallet": "Standard wallet", - "noPassphrase": "No passphrase", - "passphraseRequired": "Passphrase is required", - "hiddenWallet": "Hidden wallet", - "accessHiddenWallet": "Access hidden wallet", - "passphraseIsEmpty": "Passphrase is empty", - "selectWalletType": "Select wallet type", - "trezorNoAddresses": "Please generate an address", - "trezorImportFailed": "Failed to import {}", - "faucetFailureTitle": "Failure", - "faucetLoadingTitle": "Loading...", - "faucetInitialTitle": "Starting...", - "faucetUnknownErrorMessage": "Service is unavailable. We bring you our apologies. Please try again later", - "faucetLinkToTransaction": "Link to the transaction", - "nfts": "NFTs", - "nft": "NFT", - "blockchain": "Blockchain", - "nItems": "{} items", - "nNetworks": "{} networks", - "receiveNft": "Receive NFT", - "yourCollectibles": "Your collectibles", - "transactionsHistory": "Transactions history", - "transactionsEmptyTitle": "No transactions", - "transactionsEmptyDescription": "Try to send or receive the first NFT to this wallet", - "transactionsNoLoginCAT": "There's nothing here yet, please connect your wallet", - "loadingError": "Loading Error", - "tryAgainButton": "Try again", - "contractAddress": "Contract address", - "tokenID": "Token ID", - "tokenStandard": "Token standard", - "tokensAmount": "Tokens amount", - "noCollectibles": "No NFTs found.", - "tryReceiveNft": "Make sure {} is enabled, then refresh the list to scan for your NFTs", - "networkFee": "Network fee", - "titleUnknown": "Title unknown", - "maxCount": "Max {}", - "minCount": "Min {}", - "successfullySent": "Successfully sent", - "transactionId": "Transaction ID", - "transactionFee": "Transaction Fee", - "collectibles": "Collectibles", - "sendingProcess": "Sending process", - "ercStandardDisclaimer": "Send only ERC721 and ERC1155 standard tokens on this address", - "nftReceiveNonSwapAddressWarning": "Non-Active Swap Address Selected", - "nftReceiveNonSwapWalletDetails": "You will be able to receive NFTs to this address, but they will not show up in Komodo Wallet. You will need to use a different wallet with bip39/HD support to access these NFTs.", - "nftMainLoggedOut": "There's nothing here yet, please connect your wallet", - "confirmLogoutOnAnotherTab": "You are already logged in to this wallet. Do you want to log out from another session?", - "refreshList": "Refresh {} NFT list", - "unableRetrieveNftData": "Waiting for {} NFT data sync", - "tryCheckInternetConnection": "Try checking your internet connection", - "connectionToServersFailing": "Connection to {} servers are failing. Please join the Komodo Platform Discord server for support and more information", - "resetWalletTitle": "Reset Wallet", - "resetWalletContent": "Do you want to reset activated coins of {} wallet?\n\nResetting the activated coins will revert your wallet to its initial state. You will need to re-enable the coins to include them in your wallet's balance and trade them.", - "resetCompleteTitle": "Reset Complete", - "resetCompleteContent": "Wallet {} has been reset successfully.", - "noWalletsAvailable": "No wallets available", - "selectWalletToReset": "Select a wallet to reset", - "qrScannerTitle": "QR Scanner", - "qrScannerErrorControllerUninitialized": "The controller was used before being initialized", - "qrScannerErrorPermissionDenied": "Camera permission denied", - "qrScannerErrorGenericError": "An error occurred", - "qrScannerErrorTitle": "ERROR", - "spend": "Spend", - "viewInvoice": "View Invoice", - "systemTimeWarning": "System Time Incorrect: Your system time is more than 60 seconds off from the network time. Please update your system time before starting any swaps.", - "errorCode": "Error code", - "errorDetails": "Error details", - "errorMessage": "Error message", - "technicalDetails": "Technical Details", - "followTrezorInstructions": "Follow the instructions on your Trezor screen", - "orderFailedTryAgain": "Order failed, please try again later or contact support", - "noOptionsToPurchase": "No options to purchase {} with {}. Please try a different pair.", - "youReceive": "You Receive", - "selectFiat": "Select fiat", - "selectCoin": "Select coin", - "bestOffer": "Best offer", - "komodoWallet": "Komodo Wallet", - "loadingNfts": "Thank you for your patience! We're currently loading your NFTs and carefully running them through our spam protection system to ensure a safe and smooth experience for you.", - "coinAssets": "Coin Assets", - "commit": "Commit", - "bundled": "Bundled", - "updated": "Updated", - "notUpdated": "Not Updated", - "api": "API", - "floodLogs": "Flood Logs", - "addressNotFound": "Address not found", - "enterAmount": "Enter amount", - "submitting": "Submitting", - "buyNow": "Buy Now", - "fiatCantCompleteOrder": "Cannot complete order. Please try again later or contact support", - "fiatPriceCanChange": "Price is subject to change depending on the selected provider", - "fiatConnectWallet": "Please connect your wallet to purchase coins", - "fiatMinimumAmount": "Please enter a value greater than {} {}", - "fiatMaximumAmount": "Please enter a value less than {} {}", - "fiatPaymentSubmittedTitle": "Your payment request was opened in another window or tab", - "fiatPaymentSubmittedMessage": "Please complete the payment in another window or tab.", - "fiatPaymentSuccessTitle": "Order successful!", - "fiatPaymentSuccessMessage": "Your coins have been deposited to your wallet.", - "fiatPaymentFailedTitle": "Payment failed", - "fiatPaymentFailedMessage": "Your payment has failed. Please check your email for more information or contact the provider's support.", - "fiatPaymentInProgressTitle": "Payment received", - "fiatPaymentInProgressMessage": "Congratulations! Your payment has been received and the coins are on the way to your wallet. \n\nYou will receive your coins in 1-60 minutes.", - "pleaseWait": "Please wait", - "bitrefillPaymentSuccessfull": "Bitrefill payment succssfull", - "bitrefillPaymentSuccessfullInstruction": "You should receive an email from Bitrefill shortly.\n\nPlease check your email for further information.\n\nInvoice ID: {}\n", - "tradingBot": "Trading Bot", - "margin": "Margin", - "updateInterval": "Update interval", - "expertMode": "Expert mode", - "testCoins": "Test coins", - "enableTradingBot": "Enable Trading Bot", - "enableTestCoins": "Enable Test Coins", - "makeMarket": "Make Market", - "custom": "Custom", - "edit": "Edit", - "offer": "Offer", - "asking": "Asking", - "mmBotRestart": "Restart Bot", - "mmBotStart": "Start Bot", - "mmBotStop": "Stop Bot", - "mmBotStatusRunning": "Bot Status: Active", - "mmBotStatusStopped": "Bot Status: Stopped", - "mmBotStatusStarting": "Bot Status: Starting", - "mmBotStatusStopping": "Bot Status: Stopping", - "mmBotTradeVolumeRequired": "Trade volume is required", - "postitiveNumberRequired": "Positive number is required", - "mustBeLessThan": "Must be less than {}", - "mmBotMinimumTradeVolume": "Minimum trade volume is {}", - "mmBotVolumePerTrade": "Volume of available {} balance used per trade", - "mmBotFirstTradePreview": "Preview of the first order", - "mmBotFirstTradeEstimate": "First trade estimate", - "mmBotFirstOrderVolume": "This is an estimate of the first order only. Following orders will be placed automatically using the configured volume of the available {} balance.", - "importCustomToken": "Import Custom Token", - "importTokenWarning": "Ensure the token is trustworthy before you import it.", - "importToken": "Import Token", - "selectNetwork": "Select Network", - "tokenContractAddress": "Token Contract Address", - "tokenNotFound": "Token is not found.", - "decimals": "Decimals", - "onlySendToThisAddress": "Only send {} to this address", - "scanTheQrCode": "Scan the QR code on any mobile device wallet", - "tradingAddress": "Trading Address", - "addresses": "Addresses", - "creating": "Creating", - "createAddress": "Create Address", - "hideZeroBalanceAddresses": "Hide 0 balance addresses", - "important": "Important", - "trend": "Trend", - "growth": "Growth", - "portfolioGrowth": "Portfolio Growth", - "performance": "Performance", - "portfolioPerformance": "Portfolio Performance", - "allTimeInvestment": "All-time Investment", - "allTimeProfit": "All-time Profit", - "profitAndLoss": "Profit & Loss", - "alertDialogBitrefill": "Bitrefill", - "showNoTradingWarning": "Warning", - "showNoTradingWarningMessage": "Important: This is a development environment only. Please use test networks and demo assets exclusively for development and testing. KomodoPlatform does not support or permit real trading through this application. By using this app, you acknowledge that any potential losses or issues that may arise are your responsibility. Happy developing!", - "showNoTradingWarningButton": "I agree", - "amountFieldCheckboxListTile": "Send maximum amount", - "customFeeToggleTitle": "Custom fee", - "priceChartCenterText": "Select an interval to load data", - "statistics": "Statistics", - "ibcTransferFieldTitle": "IBC Transfer", - "ibcTransferFieldSubtitle": "Send to another Cosmos chain", - "ibcChannel": "IBC Channel", - "ibcChannelHint": "channel-141", - "ibcChannelRequired": "IBC channel is required", - "ibcChannelInvalidFormat": "Invalid format. Use: channel-", - "successPageHeadline": "Withdrawal Successful", - "successPageBodySmall": "Transaction Hash:", - "withdrawErrorCardTileTitle": "Technical Details", - "transactionSuccessful": "Transaction Successful", - "customNetworkFee": "Custom Network Fee", - "previewWithdrawal": "Preview Withdrawal", - "createNewAddress": "Create New Address", - "searchAddresses": "Search addresses", - "trend7d": "7d trend", - "tradingDisabledTooltip": "Trading features are currently disabled", - "tradingDisabled": "Trading unavailable in your location" -} \ No newline at end of file + "plsActivateKmd": "Please activate KMD", + "rewardClaiming": "Rewards claim in progress", + "noKmdAddress": "No KMD address found", + "dex": "DEX", + "asset": "Asset", + "assets": "Assets", + "price": "Price", + "volume": "Volume", + "history": "History", + "lastTransactions": "Last transactions", + "active": "Active", + "change24h": "Change 24h", + "change24hRevert": "24h %", + "viewOnExplorer": "View on Explorer", + "explorerUnavailable": "Block explorer unavailable", + "getRewards": "Get Rewards", + "rewardBoxTitle": "Komodo Active User Reward", + "network": "Network", + "rewardBoxSubTitle": "All You need to know", + "rewardBoxReadMore": "Read more", + "claimSuccess": "Claim success", + "noRewards": "There are no rewards available", + "kmdAmount": "Amount, KMD", + "kmdReward": "Reward, KMD", + "kmdRewardSpan1": "Market data (prices, charts, etc.) marked with this icon originates from third party sources", + "timeLeft": "Time Left", + "status": "Status", + "complete": "Complete", + "claim": "Claim", + "noTransactionsTitle": "No transactions available", + "noTransactionsDescription": "Click the receive button to view your address and deposit funds", + "noClaimableRewards": "No claimable rewards", + "amountToSend": "Amount to send", + "enterAmountToSend": "Enter {} send amount", + "inferiorSendAmount": "{} send amount must be > 0", + "date": "Date", + "confirmations": "Confirmations", + "blockHeight": "Block Height", + "from": "From", + "to": "To", + "fromDate": "Date from", + "toDate": "Date to", + "amount": "Amount", + "close": "Close", + "fee": "Fee", + "done": "Done", + "fees": "Fees", + "recipientAddress": "Recipient address", + "transactionHash": "Transaction Hash", + "transactionFailed": "Transaction Failed", + "hash": "Hash", + "fullHash": "Full Hash", + "coinAddress": "Enter {} address", + "youSend": "You are sending", + "invalidAddress": "Invalid {} address", + "customFeeCoin": "Custom fee [{}]", + "customFeeOptional": "Custom fee (optional)", + "optional": "Optional", + "showMore": "Show more", + "settings": "Settings", + "somethingWrong": "Something went wrong!", + "transactionComplete": "Transaction complete!", + "transactionDenied": "Denied", + "coinDisableSpan1": "You can't disable {} while it has a swap in progress", + "confirmSending": "Confirm sending", + "confirmSend": "Confirm send", + "confirm": "Confirm", + "confirmed": "Confirmed", + "ok": "OK", + "cancel": "Cancel", + "next": "Next", + "continueText": "Continue", + "accept": "Accept", + "create": "Create", + "import": "Import", + "enterDataToSend": "Enter data to send", + "address": "Address: ", + "request": "Request", + "disable": "Disable", + "usdPrice": "USD Price", + "portfolio": "Portfolio", + "editList": "Edit list", + "withBalance": "Hide 0 balance assets", + "balance": "Balance", + "transactions": "Transactions", + "send": "Send", + "receive": "Receive", + "faucet": "Faucet", + "reward": "Reward", + "loadingSwap": "Loading Swaps...", + "swapDaily": "Swaps Last 24h", + "swapMonthly": "Swaps Last 30d", + "swapAllTime": "Swaps All Time", + "seed": "Seed", + "wallet": "Wallet", + "logIn": "Log In", + "logOut": "Log out", + "logOutGo": "Go", + "delete": "Delete", + "forget": "Clear", + "seedPhrase": "Seed phrase:", + "assetNumber": { + "zero": "{} Assets", + "one": "{} Asset", + "two": "{} Assets", + "many": "{} Assets", + "few": "{} Assets", + "other": "{} Assets" + }, + "clipBoard": "Copied to the clipboard", + "walletsManagerCreateWalletButton": "Create wallet", + "walletsManagerImportWalletButton": "Import wallet", + "walletsManagerStepBuilderCreationWalletError": "Failed to create wallet, please try again later", + "walletCreationTitle": "Create wallet", + "walletImportTitle": "Import wallet", + "walletImportByFileTitle": "Importing seed file", + "walletImportCreatePasswordTitle": "Create a password for \"{}\" wallet", + "walletImportByFileDescription": "Create a password of your seed file to decrypt it. This password will be used to log in to your wallet", + "walletLogInTitle": "Log in", + "walletCreationNameHint": "Wallet name", + "walletCreationPasswordHint": "Wallet password", + "walletCreationConfirmPasswordHint": "Confirm password", + "walletCreationConfirmPassword": "Confirm password", + "walletCreationUploadFile": "Upload seed file", + "walletCreationEmptySeedError": "Seed should not be empty", + "walletCreationExistNameError": "Wallet name exists", + "walletCreationNameLengthError": "Name length should be between 1 and 40", + "walletCreationFormatPasswordError": "Password must contain at least 8 characters, with at least one digit, one lower-case, one upper-case and one special symbol. The password can't contain the same character 3 times in a row. The password can't contain the word 'password'", + "walletCreationConfirmPasswordError": "Your passwords do not match. Please try again.", + "incorrectPassword": "Incorrect password", + "importSeedEnterSeedPhraseHint": "Enter seed", + "passphraseCheckingTitle": "Let's double check your seed phrase", + "passphraseCheckingDescription": "Your seed phrase is important - that's why it is important to make sure it is saved correctly. We'll ask you to confirm the position of three words in your seed phrase to make sure it has been saved, so you'll be able to easily restore your wallet wherever and whenever you want.", + "passphraseCheckingEnterWord": "Enter the {} word of your seed phrase:", + "passphraseCheckingEnterWordHint": "Enter the {} word", + "back": "Back", + "settingsMenuGeneral": "General", + "settingsMenuLanguage": "Change language", + "settingsMenuSecurity": "Security", + "settingsMenuAbout": "About", + "seedPhraseSettingControlsViewSeed": "View seed phrase", + "seedPhraseSettingControlsDownloadSeed": "Download seed file", + "debugSettingsResetActivatedCoins": "Reset activated coins", + "debugSettingsDownloadButton": "Download logs", + "or": "Or", + "passwordTitle": "Password", + "passwordUpdateCreate": "Create the password", + "enterThePassword": "Enter your password", + "changeThePassword": "Change your password", + "changePasswordSpan1": "You can change your password for this wallet at any time (it is used to encrypt your seed phrase)", + "updatePassword": "Update password", + "passwordHasChanged": "Password has changed", + "confirmationForShowingSeedPhraseTitle": "Enter wallet password", + "saveAndRemember": "Save & remember", + "seedPhraseShowingTitle": "Your seed phrase", + "seedPhraseShowingWarning": "Make sure no one spies on your seed phrase!", + "seedPhraseShowingShowPhrase": "Show my seed phrase", + "seedPhraseShowingCopySeed": "Copy seed", + "seedPhraseShowingSavedPhraseButton": "I saved my seed phrase", + "seedAccessSpan1": "Your seed phrase is how you unlock your assets. Be sure to save this securely, and do not share it with anyone!", + "backupSeedNotificationTitle": "Backup your seed phrase", + "backupSeedNotificationDescription": "Confirm your seed phrase in the settings to make the first transaction", + "backupSeedNotificationButton": "Backup", + "swapConfirmationTitle": "Confirm exchange", + "swapConfirmationYouReceive": "You will receive:", + "swapConfirmationYouSending": "You are sending:", + "tradingDetailsTitleFailed": "Swap failed", + "tradingDetailsTitleCompleted": "Swap completed", + "tradingDetailsTitleInProgress": "Swap in progress", + "tradingDetailsTitleOrderMatching": "Order matching", + "tradingDetailsTotalSpentTime": "Total time {} min {} sec", + "tradingDetailsTotalSpentTimeWithHours": "Total time {} h {} min {} sec", + "swapRecoverButtonTitle": "You need unlock your funds", + "swapRecoverButtonText": "Unlock Funds", + "swapRecoverButtonErrorMessage": "Something wrong, please try again", + "swapRecoverButtonSuccessMessage": "Recover swap successful", + "swapProgressStatusFailed": "Failed swap", + "swapDetailsStepStatusFailed": "Failed", + "disclaimerAcceptEulaCheckbox": "EULA", + "disclaimerAcceptTermsAndConditionsCheckbox": "Terms & Conditions", + "disclaimerAcceptDescription": "By clicking the button below, you confirm that you have read and accept:", + "swapDetailsStepStatusInProcess": "In progress", + "swapDetailsStepStatusTimeSpent": "Time spent {}", + "milliseconds": "ms", + "seconds": "s", + "minutes": "m", + "hours": "h", + "coinAddressDetailsNotificationTitle": "Confirm your seed phrase", + "coinAddressDetailsNotificationDescription": "In order to receive funds to your wallet, confirm the following phrase", + "swapFeeDetailsPaidFromBalance": "Paid from balance:", + "swapFeeDetailsSendCoinTxFee": "send {} tx fee", + "swapFeeDetailsReceiveCoinTxFee": "receive {} tx fee", + "swapFeeDetailsTradingFee": "trading fee", + "swapFeeDetailsSendTradingFeeTxFee": "send trading fee tx fee", + "swapFeeDetailsNone": "None", + "swapFeeDetailsPaidFromReceivedVolume": "Paid from received volume", + "logoutPopupTitle": "Confirm log out?", + "logoutPopupDescriptionWalletOnly": "Are you sure you want to logout?", + "logoutPopupDescription": "Are you sure you want to logout? Your opened orders will no longer be available to match with other users and any trades in progress may not be completed", + "transactionDetailsTitle": "Transaction completed", + "customSeedWarningText": "Custom seed phrases are generally less secure and easier to crack than a generated BIP39-compliant seed phrase. To confirm you understand and are aware of the risk, type \"I understand\" in the box below.", + "customSeedIUnderstand": "i understand", + "walletCreationBip39SeedError": "BIP39 seed validation failed, try again or select 'Allow custom seed'", + "walletCreationHdBip39SeedError": "Your input seed is not BIP39 compliant, and can not be used in multi-address wallet mode. Please try again, or disable multi-address wallet mode and select 'Allow custom seed' to proceed.", + "walletPageNoSuchAsset": "No assets match search criteria", + "swapCoin": "Swap", + "fiatBalance": "Fiat balance", + "yourBalance": "Your balance", + "all": "All", + "taker": "Taker", + "maker": "Maker", + "successful": "Successful", + "success": "Success", + "failed": "Failed", + "exchangeCoin": "Exchange coin", + "search": "Search", + "searchAssets": "Search assets", + "searchCoin": "Search coin", + "filters": "Filters", + "sellAsset": "Sell asset", + "buyAsset": "Buy asset", + "assetName": "Asset name", + "protocol": "Protocol", + "resetAll": "Reset All", + "reset": "Reset", + "clearFilter": "Clear Filter", + "addAssets": "Add assets", + "removeAssets": "Remove assets", + "selectedAssetsCount": "Selected {} assets", + "clickAssetToAddHint": "No assets selected", + "clickAssetToRemoveHint": "Select assets to remove", + "defaultCoinDisableWarning": "You can't disable {}, it is a default coin", + "parentCoinDisableWarning": "Disabling {} will also disable its tokens: {}. Continue?", + "coinDisableOpenOrdersWarning": "There are {} open orders for {}. Cancel these orders and disable the coin?", + "supportFrequentlyQuestionSpan": "Frequently asked questions", + "support": "Support", + "supportInfoTitle1": "Do you store my private keys?", + "supportInfoContent1": "No! Komodo Wallet is non-custodial. We never store any sensitive data, private keys, seed phrases, or your PIN. This data is only stored locally, and is encrypted with your wallet password. It never leaves your device unless you export it. You are in full control of your assets.", + "supportInfoTitle2": "How is trading with Komodo Wallet different from trading on other DEXs?", + "supportInfoContent2": "Most DEXs only allow you to trade assets that are based on a single blockchain network, use proxy tokens, and only allow placing a single order with the same funds. Komodo Wallet enables you to trade across different blockchain networks without proxy tokens, and use the same funds to place multiple orders for different pairs. For example, you can sell 0.1 BTC for KMD, QTUM, or VRSC — the first order that fills automatically cancels all other orders.", + "supportInfoTitle3": "How long does each atomic swap take?", + "supportInfoContent3": "Several factors determine the processing time for each swap. The block time of the traded assets depends on each network (i.e. a BTC swap with 10 minute block time will typically be slower than a KMD swap with 1 minute block time). Depending on your security preferences, you can increase or lower the number of confirmations required, which will also affect the speed of your swap. For example, you can configure Komodo Wallet to consider a KMD transaction as final after just 3 confirmations which makes the swap time faster compared to waiting for a notarization.", + "supportInfoTitle4": "Do I need to be online for the duration of the swap?", + "supportInfoContent4": "Yes. You must remain connected to the internet and have your app running to successfully complete each atomic swap (very short breaks in connectivity are usually fine). If you go offline, there is risk of trade cancellation if you are a maker, or risk of loss of fees if you are a taker (remaining funds will be refunded after a few hours). The atomic swap protocol requires both participants to stay online so that Komodo Wallet can monitor the involved blockchains for the process to stay atomic. If you go offline, so will your orders, and any swaps that are in progress will fail, leading to potential loss of trade / transaction fees, and a wait time for the swap HTLC to timeout and issue a refund. It may also negatively affect your wallet's reputation score for future trade matching. When you come back online, your orders will begin to broadcast again at the price you set before you went offline. If there has been significant price movement in the meantime, you might unintentionally offer someone a bargain! For this reason, we recommend cancelling orders before closing Komodo Wallet, or reviewing and revising your prices when restarting Komodo Wallet.", + "supportInfoTitle5": "How are the fees in Komodo Wallet calculated?", + "supportInfoContent5": "There are two fee categories to consider when trading with Komodo Wallet. Komodo Wallet charges approximately 0.13% (1/777 of trading volume but not lower than 0.0001) as the trading fee for taker orders, and maker orders have zero trade fee! Both makers and takers will need to pay normal network transaction fees to the involved blockchains when making atomic swap transactions. Network transaction fees can vary greatly depending on your selected trading pair, and will include gas fees paid in the parent coin where applicable (e.g. a BTC-BEP20 to BTC-ERC20 trade will require BNB and ETH to pay the gas fee).", + "supportInfoTitle6": "Do you provide user support?", + "supportInfoContent6": "Yes! Komodo Wallet offers support through the Komodo Discord server. The team and the community are always happy to help!", + "supportInfoTitle7": "Who is behind Komodo Wallet?", + "supportInfoContent7": "Komodo Wallet is developed by the Komodo team. Komodo is one of the most established blockchain projects working on innovative solutions like atomic swaps, Delayed Proof of Work, and an interoperable multi-chain architecture.", + "supportInfoTitle8": "Is it possible to develop my own white-label exchange on Komodo Wallet?", + "supportInfoContent8": "Absolutely! You can read our developer documentation at https://developers.komodoplatform.com for more details or contact us with your partnership inquiries. Have a specific technical question? The Komodo Wallet developer community is always ready to help!", + "supportInfoTitle9": "Which devices can I use Komodo Wallet on?", + "supportInfoContent9": "Komodo Wallet is available for mobile on both Android and iPhone, and for desktop on Windows, Mac, and Linux operating systems.", + "supportInfoTitle10": "Compliance Info", + "supportInfoContent10": "Due to regulatory and legal restrictions the citizens of certain jurisdictions including, but not limited to, the United States of America, Canada, Hong Kong, Israel, Singapore, Sudan, Austria, Iran (and any other state, country or other jurisdiction that is embargoed by the United States of America or the European Union) are not allowed to use this application.", + "supportInfoTitle11": "My coins are missing", + "supportInfoContent11": "See the instructions in the dialog", + "supportDiscordButton": "Komodo #general-support DISCORD", + "supportAskSpan": "If you have any questions, suggestions or technical problems with the Komodo Wallet app, you can report it to get support from our team.", + "fiat": "Buy / Sell", + "bridge": "Bridge", + "apply": "Apply", + "makerOrder": "Maker order", + "takerOrder": "Taker order", + "buyPrice": "Buy price", + "inProgress": "In Progress", + "orders": "Orders", + "swap": "Swap", + "percentFilled": "{}% filled", + "orderType": "Order type", + "recover": "Recover", + "cancelAll": "Cancel all", + "type": "Type", + "sell": "Sell", + "sellCrypto": "Sell Crypto", + "sellCryptoDescription": "Select a cryptocurrency to sell through our integrated Bitrefill service.", + "buy": "Buy", + "changingWalletPassword": "Changing your wallet password", + "changingWalletPasswordDescription": "This password will be used for logging in to your wallet", + "dark": "Dark", + "darkMode": "Dark mode", + "light": "Light", + "lightMode": "Light mode", + "defaultText": "Default", + "clear": "Clear", + "remove": "Remove", + "newText": "new", + "whatsNew": "What's new?", + "remindLater": "Remind me later", + "updateNow": "Update now", + "updatePopupTitle": "New update! Would you like to\nupdate to latest version?", + "activationFailedMessage": "Activation failed", + "retryButtonText": "Retry", + "reloadButtonText": "Reload", + "feedbackFormTitle": "Your feedback is important to us", + "feedbackFormDescription": "Our mission to improve the wallet never stops, and your feedback is highly appreciated!", + "feedbackFormThanksTitle": "Thank you for your feedback", + "feedbackFormThanksDescription": "We will send a response to your email address as soon as possible", + "email": "Email", + "emailValidatorError": "Please enter a valid email address", + "contactRequiredError": "Contact details are required for support requests", + "contactDetailsMaxLengthError": "Contact details must be {} characters or less", + "discordUsernameValidatorError": "Please enter a valid Discord username (2-32 characters, letters, numbers, dots, underscores)", + "telegramUsernameValidatorError": "Please enter a valid Telegram username (5-32 characters, letters, numbers, underscores)", + "matrixIdValidatorError": "Please enter a valid Matrix ID (e.g., @username:server.com)", + "myCoinsMissing": "Can't find your coins?", + "myCoinsMissingReassurance": "Your coins should be safe—you're likely in the wrong wallet mode.", + "myCoinsMissingToRecover": "To recover:", + "myCoinsMissingSteps": "Log out → Turn OFF \"Multi Address Wallet\" → Log in → Add your coins back", + "myCoinsMissingMoreInfo": "More information", + "myCoinsMissingHelp": "I still need help", + "myCoinsMissingSignIn": "Sign in with single-address mode", + "feedbackValidatorEmptyError": "Please enter your feedback", + "feedbackValidatorMaxLengthError": "Please limit your feedback to {} characters or less", + "yourFeedback": "Your feedback", + "sendFeedback": "Send feedback", + "sendFeedbackError": "Something wrong :( Please try again later. Your feedback is very important for us", + "addMoreFeedback": "Add more feedback", + "closePopup": "Close pop-up", + "exchange": "Exchange", + "connectSomething": "Connect {}", + "hardwareWallet": "Hardware wallet", + "komodoWalletSeed": "Komodo Wallet seed", + "metamask": "Metamask", + "comingSoon": "Coming soon", + "walletsTypeListTitle": "Start using Komodo Wallet", + "seedPhraseMakeSureBody": "Write down a piece of paper and put the seed phrase in a safe place. This is the only access to your wallet if you lose your device or password access to your wallet.", + "seedPhraseSuccessTitle": "Seed phrase has been confirmed", + "seedPhraseSuccessBody": "You can trade, send and receive any coins. We hope you put your seed phrase in the safe place, because if you lose access to your seed phrase you can lose your funds. Be careful.", + "seedPhraseGotIt": "I got it", + "viewSeedPhrase": "View seed phrase", + "backupSeedPhrase": "Backup seed phrase", + "seedOr": "OR", + "seedDownload": "Download seed file", + "seedSaveAndRemember": "Save and remember", + "seedIntroWarning": "This phrase is the main access to your\nassets, save and never share this phrase", + "seedSettings": "Seed phrase", + "errorDescription": "Error description", + "tryAgain": "Oops! Something went wrong. \nPlease try again. \nIf it didn't help - contact us.", + "customFeesWarning": "Only use custom fees if you know what you are doing!", + "fiatExchange": "Exchange", + "bridgeExchange": "Exchange", + "noTxSupportHidden": "Please use button below to open block explorer", + "deleteWalletTitle": "Are you sure you want to delete \"{}\" wallet?", + "deleteWalletInfo": "Warning: This is a permanent action and cannot be undone. You can restore your wallet using the seed phrase, but you will lose your swap history. \n\nEnsure you have a backup of your seed phrase before proceeding.", + "trezorEnterPinTitle": "Enter PIN for your Trezor", + "trezorEnterPinHint": "The PIN layout is displayed on your Trezor", + "trezorInProgressTitle": "Looking for your Trezor...", + "trezorInProgressHint": "Please do not disable your Trezor", + "trezorErrorBusy": "Device is busy.\nMake sure that Trezor Suite is not running in background.", + "trezorErrorInvalidPin": "Invalid PIN code", + "trezorSelectTitle": "Connect a hardware wallet", + "trezorSelectSubTitle": "Select a hardware wallet you'd like to use with Komodo Wallet", + "mixedCaseError": "If you are using non mixed case address, please try to convert to mixed case one.", + "addressConvertedToMixedCase": "Address automatically converted to mixed-case for checksum validation.", + "invalidAddressChecksum": "Invalid address checksum", + "notEnoughBalance": "Not enough balance", + "pleaseInputData": "Please input data", + "customFeeHigherAmount": "Custom fee can't be higher than the amount", + "noSenderAddress": "Sender address is not specified.", + "confirmOnTrezor": "Confirm on Trezor", + "alphaVersionWarningTitle": "Notification about alpha-testing program", + "alphaVersionWarningDescription": "Komodo Wallet is currently available for alpha testing. As with any early-stage software, there are relevant risks for testers. It's recommended not to use the alpha version of this application to hold or trade large amounts of funds. The application is currently (during the alpha development phase) hosted on the Google Firebase cloud service (web only) and collects non-personal analytics using Google/Firebase Analytics. By clicking the \"Accept\" button, you confirm that you understand this disclaimer and accept the possible risks.", + "sendToAnalytics": "Send anonymous data to analytics", + "backToWallet": "Back to wallet", + "backToDex": "Back to DEX", + "backToBridge": "Back to Bridge", + "scanToGetAddress": "Scan to get address", + "listIsEmpty": "This list is empty", + "setMax": "Set Max", + "setMin": "Set Min", + "timeout": "Timeout", + "notEnoughBalanceForGasError": "Not enough balance to pay gas.", + "notEnoughFundsError": "Not enough funds to perform a trade", + "dexErrorMessage": "Something went wrong!", + "seedConfirmInitialText": "Enter the seed phrase", + "seedConfirmIncorrectText": "Incorrect seed phrase", + "usedSamePassword": "This password matches your current one. Please create a different password.", + "passwordNotAccepted": "Password not accepted", + "confirmNewPassword": "Confirm new password", + "enterNewPassword": "Enter new password", + "currentPassword": "Current password", + "walletNotFound": "Wallet not found!", + "passwordIsEmpty": "Password is empty", + "passwordContainsTheWordPassword": "Password cannot contain the word 'password'", + "passwordTooShort": "Password must be at least 8 characters long", + "passwordMissingDigit": "Password must contain at least 1 digit", + "passwordMissingLowercase": "Password must contain at least 1 lowercase character", + "passwordMissingUppercase": "Password must contain at least 1 uppercase character", + "passwordMissingSpecialCharacter": "Password must contain at least 1 special character", + "passwordConsecutiveCharacters": "Password cannot contain the same character 3 times in a row", + "passwordSecurity": "Password Security", + "allowWeakPassword": "Allow weak password", + "allowWeakPasswordDescription": "For support and debugging purposes only. Bypasses password security requirements.", + "dexBalanceNotSufficientError": "{} balance is not sufficient. {} {} required", + "dexEnterPriceError": "Please enter price", + "dexZeroPriceError": "Price must be greater than 0", + "dexSelectBuyCoinError": "Please select Buy Coin", + "dexSelectSellCoinError": "Please select Sell Coin", + "dexCoinSuspendedError": "{} is suspended, can't perform trade", + "dexEnterBuyAmountError": "Please enter Buy Amount", + "dexEnterSellAmountError": "Please enter Sell Amount", + "dexZeroBuyAmountError": "Buy amount should be greater than 0", + "dexZeroSellAmountError": "Sell amount should be greater than 0", + "dexMaxSellAmountError": "Max sell amount is {} {}", + "dexMaxOrderVolume": "Max volume for order at this price is {} {}", + "dexMinSellAmountError": "Minimum sell amount is {} {}", + "dexMaxOrderVolumeError": "Max order volume is {} {}", + "dexInsufficientFundsError": "Insufficient funds: {} {} available.", + "dexTradingWithSelfError": "Trading with self is not allowed.", + "bridgeSelectSendProtocolError": "Please select 'FROM' protocol", + "bridgeSelectFromProtocolError": "Please select 'FROM' protocol first.", + "bridgeSelectTokenFirstError": "Please select Token first", + "bridgeEnterSendAmountError": "Please enter send amount", + "bridgeZeroSendAmountError": "Send amount should be greater than 0", + "bridgeMaxSendAmountError": "Max send amount is {} {}", + "bridgeMinOrderAmountError": "Minimum order amount is {} {}", + "bridgeMaxOrderAmountError": "Maximum order amount is {} {}", + "bridgeInsufficientBalanceError": "Insufficient {} balance: {} required, {} available.", + "lowTradeVolumeError": "Trade volume is too low. Min {} {} required.", + "bridgeSelectReceiveCoinError": "Please select 'TO' protocol", + "withdrawNoParentCoinError": "Please activate {}", + "withdrawTopUpBalanceError": "Please top up {} balance", + "withdrawNotEnoughBalanceForGasError": "{} balance not sufficient to pay transaction fees", + "withdrawNotSufficientBalanceError": "Not enough {} to withdraw: available {}, required {} or more", + "withdrawZeroBalanceError": "You have zero {} balance", + "withdrawAmountTooLowError": "{} {} too low, you need > {} {} to send", + "withdrawNoSuchCoinError": "Invalid selection, {} does not exist", + "withdrawPreview": "Preview Withdrawal", + "withdrawPreviewError": "Error occurred while fetching withdrawal preview", + "txHistoryFetchError": "Error fetching tx history from the endpoint. Unsupported type: {}", + "txHistoryNoTransactions": "Transactions are not available", + "maxGapLimitReached": "Maximum gap limit reached - please use existing unused addresses first", + "maxAddressesReached": "Maximum number of addresses reached for this asset", + "missingDerivationPath": "Missing derivation path configuration", + "protocolNotSupported": "Protocol does not support multiple addresses", + "derivationModeNotSupported": "Current wallet mode does not support multiple addresses", + "hdWalletModeSwitchTitle": "Multi-address Wallet?", + "hdWalletModeSwitchSubtitle": "Enabling HD wallet allows you to create multiple addresses for each coin. However, your addresses and balances will change. You can easily switch between the modes when logging in.", + "hdWalletModeSwitchTooltip": "HD wallets require a valid BIP39 seed phrase.", + "noActiveWallet": "No active wallet - please sign in first", + "memo": "Memo", + "gasPriceGwei": "Gas price [Gwei]", + "gasLimit": "Gas limit", + "memoOptional": "Memo (optional)", + "convert": "Convert", + "youClaimed": "You claimed", + "successClaim": "Success claim", + "rewardProcessingShort": "Processing", + "rewardProcessingLong": "Transaction is in progress", + "rewardLessThanTenLong": "UTXO amount less than 10 KMD", + "rewardOneHourNotPassedShort": "<1 hour", + "rewardOneHourNotPassedLong": "One hour not passed yet", + "comparedToCexTitle": "Compared to CEX", + "comparedToCexInfo": "Markets data (prices, charts, etc.) marked with this icon originates from third party sources.", + "makeOrder": "Make Order", + "nothingFound": "Nothing found", + "half": "Half", + "max": "Max", + "reactivating": "Reactivating", + "weFailedCoinActivate": "We failed to activate {} :(", + "failedActivate": "Failed to activate", + "pleaseTryActivateAssets": "Please try to activate your assets again.", + "makerOrderDetails": "Maker Order details", + "cancelled": "Cancelled", + "fulfilled": "Fulfilled", + "cancelledInsufficientBalance": "Cancelled - insufficient balance", + "orderId": "Order ID", + "details": "Details", + "orderBook": "Order book", + "orderBookFailedLoadError": "Failed to load Orderbook", + "orderBookNoAsks": "No asks found", + "orderBookNoBids": "No bids found", + "orderBookEmpty": "Orderbook is empty", + "freshAddress": "Fresh address", + "userActionRequired": "User action required", + "unknown": "Unknown", + "unableToActiveCoin": "Unable to activate {}", + "feedback": "Feedback", + "feedbackViewTitle": "Send us your feedback", + "feedbackPageDescription": "Help us improve by sharing your suggestions, reporting bugs, or giving general feedback.", + "sendFeedbackButton": "Share your feedback", + "feedbackThankyou": "Thank you for your feedback!", + "feedbackError": "Failed to submit feedback", + "selectAToken": "Select a token", + "selectToken": "Select token", + "rate": "Rate", + "totalFees": "Total fees", + "selectProtocol": "Select protocol", + "showSwapData": "Show swap data", + "importSwaps": "Import Swaps", + "changeTheme": "Change theme", + "available": "Available", + "availableForSwaps": "Available for swaps", + "swapNow": "Swap Now", + "passphrase": "Passphrase", + "enterPassphraseHiddenWalletTitle": "Enter passphrase from hidden wallet", + "enterPassphraseHiddenWalletDescription": "Passphrase is required for hidden wallet", + "skip": "Skip", + "activateToSeeFunds": "Activate to see your funds", + "allowCustomFee": "Allow custom seed", + "cancelOrder": "Cancel Order", + "version": "version", + "copyAddressToClipboard": "Copy {} address to clipboard", + "copiedAddressToClipboard": "{} address copied to clipboard", + "createdAt": "Created at", + "coin": "Coin", + "token": "Token", + "matching": "Matching", + "matched": "Matched", + "ongoing": "Ongoing", + "manageAnalytics": "Manage analytics", + "logs": "Logs", + "resetActivatedCoinsTitle": "Reset Activated Coins", + "privateKeys": "Private Keys", + "copyWarning": "Your clipboard isn't a safe place for your private key! Copying the seed phrase or private keys can make them vulnerable to clipboard hacks. Please handle with caution and only copy if absolutely necessary.", + "seedConfirmTitle": "Let's double check your seed phrase", + "seedConfirmDescription": "Your seed phrase is the only way to access Your funds. That's why we want to ensure you saved it safely. Please input your seed phrase into text filed below.", + "standardWallet": "Standard wallet", + "noPassphrase": "No passphrase", + "passphraseRequired": "Passphrase is required", + "hiddenWallet": "Hidden wallet", + "accessHiddenWallet": "Access hidden wallet", + "passphraseIsEmpty": "Passphrase is empty", + "selectWalletType": "Select wallet type", + "trezorNoAddresses": "Please generate an address", + "trezorImportFailed": "Failed to import {}", + "faucetFailureTitle": "Failure", + "faucetLoadingTitle": "Loading...", + "faucetInitialTitle": "Starting...", + "faucetUnknownErrorMessage": "Service is unavailable. We bring you our apologies. Please try again later", + "faucetLinkToTransaction": "Link to the transaction", + "nfts": "NFTs", + "nft": "NFT", + "blockchain": "Blockchain", + "nItems": "{} items", + "nNetworks": "{} networks", + "receiveNft": "Receive NFT", + "yourCollectibles": "Your collectibles", + "transactionsHistory": "Transactions history", + "transactionsEmptyTitle": "No transactions", + "transactionsEmptyDescription": "Try to send or receive the first NFT to this wallet", + "transactionsNoLoginCAT": "There's nothing here yet, please connect your wallet", + "loadingError": "Loading Error", + "tryAgainButton": "Try again", + "contractAddress": "Contract address", + "tokenID": "Token ID", + "tokenStandard": "Token standard", + "tokensAmount": "Tokens amount", + "noCollectibles": "No NFTs found.", + "tryReceiveNft": "Make sure {} is enabled, then refresh the list to scan for your NFTs", + "networkFee": "Network fee", + "titleUnknown": "Title unknown", + "maxCount": "Max {}", + "minCount": "Min {}", + "successfullySent": "Successfully sent", + "transactionId": "Transaction ID", + "transactionFee": "Transaction Fee", + "collectibles": "Collectibles", + "sendingProcess": "Sending process", + "ercStandardDisclaimer": "Send only ERC721 and ERC1155 standard tokens on this address", + "nftReceiveNonSwapAddressWarning": "Non-Active Swap Address Selected", + "nftReceiveNonSwapWalletDetails": "You will be able to receive NFTs to this address, but they will not show up in Komodo Wallet. You will need to use a different wallet with bip39/HD support to access these NFTs.", + "nftMainLoggedOut": "There's nothing here yet, please connect your wallet", + "confirmLogoutOnAnotherTab": "You are already logged in to this wallet. Do you want to log out from another session?", + "refreshList": "Refresh {} NFT list", + "unableRetrieveNftData": "Waiting for {} NFT data sync", + "tryCheckInternetConnection": "Try checking your internet connection", + "connectionToServersFailing": "Connection to {} servers are failing. Please join the Komodo Platform Discord server for support and more information", + "resetWalletTitle": "Reset Wallet", + "resetWalletContent": "Do you want to reset activated coins of {} wallet?\n\nResetting the activated coins will revert your wallet to its initial state. You will need to re-enable the coins to include them in your wallet's balance and trade them.", + "resetCompleteTitle": "Reset Complete", + "resetCompleteContent": "Wallet {} has been reset successfully.", + "noWalletsAvailable": "No wallets available", + "selectWalletToReset": "Select a wallet to reset", + "qrScannerTitle": "QR Scanner", + "qrScannerErrorControllerUninitialized": "The controller was used before being initialized", + "qrScannerErrorPermissionDenied": "Camera permission denied", + "qrScannerErrorGenericError": "An error occurred", + "qrScannerErrorTitle": "ERROR", + "spend": "Spend", + "viewInvoice": "View Invoice", + "systemTimeWarning": "System Time Incorrect: Your system time is more than 60 seconds off from the network time. Please update your system time before starting any swaps.", + "errorCode": "Error code", + "errorDetails": "Error details", + "errorMessage": "Error message", + "technicalDetails": "Technical Details", + "followTrezorInstructions": "Follow the instructions on your Trezor screen", + "orderFailedTryAgain": "Order failed, please try again later or contact support", + "noOptionsToPurchase": "No options to purchase {} with {}. Please try a different pair.", + "youReceive": "You Receive", + "selectFiat": "Select fiat", + "selectCoin": "Select coin", + "bestOffer": "Best offer", + "komodoWallet": "Komodo Wallet", + "loadingNfts": "Thank you for your patience! We're currently loading your NFTs and carefully running them through our spam protection system to ensure a safe and smooth experience for you.", + "coinAssets": "Coin Assets", + "commit": "Commit", + "bundled": "Bundled", + "updated": "Updated", + "notUpdated": "Not Updated", + "api": "API", + "floodLogs": "Flood Logs", + "addressNotFound": "Address not found", + "enterAmount": "Enter amount", + "submitting": "Submitting", + "buyNow": "Buy Now", + "fiatCantCompleteOrder": "Cannot complete order. Please try again later or contact support", + "fiatPriceCanChange": "Price is subject to change depending on the selected provider", + "fiatConnectWallet": "Please connect your wallet to purchase coins", + "fiatMinimumAmount": "Please enter a value greater than {} {}", + "fiatMaximumAmount": "Please enter a value less than {} {}", + "fiatPaymentSubmittedTitle": "Your payment request was opened in another window or tab", + "fiatPaymentSubmittedMessage": "Please complete the payment in another window or tab.", + "fiatPaymentSuccessTitle": "Order successful!", + "fiatPaymentSuccessMessage": "Your coins have been deposited to your wallet.", + "fiatPaymentFailedTitle": "Payment failed", + "fiatPaymentFailedMessage": "Your payment has failed. Please check your email for more information or contact the provider's support.", + "fiatPaymentInProgressTitle": "Payment received", + "fiatPaymentInProgressMessage": "Congratulations! Your payment has been received and the coins are on the way to your wallet. \n\nYou will receive your coins in 1-60 minutes.", + "pleaseWait": "Please wait", + "bitrefillPaymentSuccessfull": "Bitrefill payment succssfull", + "bitrefillPaymentSuccessfullInstruction": "You should receive an email from Bitrefill shortly.\n\nPlease check your email for further information.\n\nInvoice ID: {}\n", + "tradingBot": "Trading Bot", + "margin": "Margin", + "updateInterval": "Update interval", + "expertMode": "Expert mode", + "testCoins": "Test coins", + "enableTradingBot": "Enable Trading Bot", + "enableTestCoins": "Enable Test Coins", + "makeMarket": "Make Market", + "custom": "Custom", + "edit": "Edit", + "offer": "Offer", + "asking": "Asking", + "mmBotRestart": "Restart Bot", + "mmBotStart": "Start Bot", + "mmBotStop": "Stop Bot", + "mmBotStatusRunning": "Bot Status: Active", + "mmBotStatusStopped": "Bot Status: Stopped", + "mmBotStatusStarting": "Bot Status: Starting", + "mmBotStatusStopping": "Bot Status: Stopping", + "mmBotTradeVolumeRequired": "Trade volume is required", + "postitiveNumberRequired": "Positive number is required", + "mustBeLessThan": "Must be less than {}", + "mmBotMinimumTradeVolume": "Minimum trade volume is {}", + "mmBotVolumePerTrade": "Volume of available {} balance used per trade", + "mmBotFirstTradePreview": "Preview of the first order", + "mmBotFirstTradeEstimate": "First trade estimate", + "mmBotFirstOrderVolume": "This is an estimate of the first order only. Following orders will be placed automatically using the configured volume of the available {} balance.", + "importCustomToken": "Import Custom Token", + "importTokenWarning": "Ensure the token is trustworthy before you import it.", + "importToken": "Import Token", + "selectNetwork": "Select Network", + "tokenContractAddress": "Token Contract Address", + "tokenNotFound": "Token is not found.", + "decimals": "Decimals", + "onlySendToThisAddress": "Only send {} to this address", + "scanTheQrCode": "Scan the QR code on any mobile device wallet", + "tradingAddress": "Trading Address", + "addresses": "Addresses", + "creating": "Creating", + "createAddress": "Create Address", + "hideZeroBalanceAddresses": "Hide 0 balance addresses", + "important": "Important", + "trend": "Trend", + "growth": "Growth", + "portfolioGrowth": "Portfolio Growth", + "performance": "Performance", + "portfolioPerformance": "Portfolio Performance", + "allTimeInvestment": "All-time Investment", + "allTimeProfit": "All-time Profit", + "profitAndLoss": "Profit & Loss", + "alertDialogBitrefill": "Bitrefill", + "showNoTradingWarning": "Warning", + "showNoTradingWarningMessage": "Important: This is a development environment only. Please use test networks and demo assets exclusively for development and testing. KomodoPlatform does not support or permit real trading through this application. By using this app, you acknowledge that any potential losses or issues that may arise are your responsibility. Happy developing!", + "showNoTradingWarningButton": "I agree", + "amountFieldCheckboxListTile": "Send maximum amount", + "customFeeToggleTitle": "Custom fee", + "priceChartCenterText": "Select an interval to load data", + "statistics": "Statistics", + "ibcTransferFieldTitle": "IBC Transfer", + "ibcTransferFieldSubtitle": "Send to another Cosmos chain", + "ibcChannel": "IBC Channel", + "ibcChannelHint": "141", + "enterIbcChannel": "Enter IBC Channel ID", + "successPageHeadline": "Withdrawal Successful", + "successPageBodySmall": "Transaction Hash:", + "withdrawErrorCardTileTitle": "Technical Details", + "transactionSuccessful": "Transaction Successful", + "customNetworkFee": "Custom Network Fee", + "previewWithdrawal": "Preview Withdrawal", + "createNewAddress": "Create New Address", + "searchAddresses": "Search addresses", + "trend7d": "7d trend", + "tradingDisabledTooltip": "Trading features are currently disabled", + "tradingDisabled": "Trading unavailable in your location" +} diff --git a/lib/bloc/withdraw_form/withdraw_form_bloc.dart b/lib/bloc/withdraw_form/withdraw_form_bloc.dart index ffc20c9b12..e8c1388644 100644 --- a/lib/bloc/withdraw_form/withdraw_form_bloc.dart +++ b/lib/bloc/withdraw_form/withdraw_form_bloc.dart @@ -369,30 +369,24 @@ class WithdrawFormBloc extends Bloc { WithdrawFormIbcChannelChanged event, Emitter emit, ) { - final ibcChannelError = _validateIbcChannel(event.channel); + if (event.channel.isEmpty) { + emit( + state.copyWith( + ibcChannel: () => event.channel, + ibcChannelError: () => TextError(error: LocaleKeys.enterIbcChannel.tr()), + ), + ); + return; + } emit( state.copyWith( ibcChannel: () => event.channel, - ibcChannelError: () => ibcChannelError, + ibcChannelError: () => null, ), ); } - /// Validate format: channel-{number} - TextError? _validateIbcChannel(String channel) { - if (channel.isEmpty) { - return TextError(error: 'Channel ID is required'); - } - - final channelRegex = RegExp(r'^channel-\d+$'); - if (!channelRegex.hasMatch(channel)) { - return TextError(error: 'Invalid format. Use: channel-'); - } - - return null; - } - Future _onPreviewSubmitted( WithdrawFormPreviewSubmitted event, Emitter emit, diff --git a/lib/bloc/withdraw_form/withdraw_form_state.dart b/lib/bloc/withdraw_form/withdraw_form_state.dart index 5dc4e3e38a..b8a5169b0c 100644 --- a/lib/bloc/withdraw_form/withdraw_form_state.dart +++ b/lib/bloc/withdraw_form/withdraw_form_state.dart @@ -186,7 +186,7 @@ class WithdrawFormState extends Equatable { memo: memo, ibcTransfer: isIbcTransfer ? true : null, ibcSourceChannel: - ibcChannel?.isNotEmpty == true ? ibcChannel!.trim() : null, + ibcChannel?.isNotEmpty == true ? int.tryParse(ibcChannel!.trim()) : null, isMax: isMaxAmount, ); } diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 544cbf7d91..4ba1871820 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -2,7 +2,7 @@ // ignore_for_file: constant_identifier_names -abstract class LocaleKeys { +abstract class LocaleKeys { static const plsActivateKmd = 'plsActivateKmd'; static const rewardClaiming = 'rewardClaiming'; static const noKmdAddress = 'noKmdAddress'; @@ -106,50 +106,39 @@ abstract class LocaleKeys { static const seedPhrase = 'seedPhrase'; static const assetNumber = 'assetNumber'; static const clipBoard = 'clipBoard'; - static const walletsManagerCreateWalletButton = - 'walletsManagerCreateWalletButton'; - static const walletsManagerImportWalletButton = - 'walletsManagerImportWalletButton'; - static const walletsManagerStepBuilderCreationWalletError = - 'walletsManagerStepBuilderCreationWalletError'; + static const walletsManagerCreateWalletButton = 'walletsManagerCreateWalletButton'; + static const walletsManagerImportWalletButton = 'walletsManagerImportWalletButton'; + static const walletsManagerStepBuilderCreationWalletError = 'walletsManagerStepBuilderCreationWalletError'; static const walletCreationTitle = 'walletCreationTitle'; static const walletImportTitle = 'walletImportTitle'; static const walletImportByFileTitle = 'walletImportByFileTitle'; - static const walletImportCreatePasswordTitle = - 'walletImportCreatePasswordTitle'; + static const walletImportCreatePasswordTitle = 'walletImportCreatePasswordTitle'; static const walletImportByFileDescription = 'walletImportByFileDescription'; static const walletLogInTitle = 'walletLogInTitle'; static const walletCreationNameHint = 'walletCreationNameHint'; static const walletCreationPasswordHint = 'walletCreationPasswordHint'; - static const walletCreationConfirmPasswordHint = - 'walletCreationConfirmPasswordHint'; + static const walletCreationConfirmPasswordHint = 'walletCreationConfirmPasswordHint'; static const walletCreationConfirmPassword = 'walletCreationConfirmPassword'; static const walletCreationUploadFile = 'walletCreationUploadFile'; static const walletCreationEmptySeedError = 'walletCreationEmptySeedError'; static const walletCreationExistNameError = 'walletCreationExistNameError'; static const walletCreationNameLengthError = 'walletCreationNameLengthError'; - static const walletCreationFormatPasswordError = - 'walletCreationFormatPasswordError'; - static const walletCreationConfirmPasswordError = - 'walletCreationConfirmPasswordError'; + static const walletCreationFormatPasswordError = 'walletCreationFormatPasswordError'; + static const walletCreationConfirmPasswordError = 'walletCreationConfirmPasswordError'; static const incorrectPassword = 'incorrectPassword'; static const importSeedEnterSeedPhraseHint = 'importSeedEnterSeedPhraseHint'; static const passphraseCheckingTitle = 'passphraseCheckingTitle'; static const passphraseCheckingDescription = 'passphraseCheckingDescription'; static const passphraseCheckingEnterWord = 'passphraseCheckingEnterWord'; - static const passphraseCheckingEnterWordHint = - 'passphraseCheckingEnterWordHint'; + static const passphraseCheckingEnterWordHint = 'passphraseCheckingEnterWordHint'; static const back = 'back'; static const settingsMenuGeneral = 'settingsMenuGeneral'; static const settingsMenuLanguage = 'settingsMenuLanguage'; static const settingsMenuSecurity = 'settingsMenuSecurity'; static const settingsMenuAbout = 'settingsMenuAbout'; - static const seedPhraseSettingControlsViewSeed = - 'seedPhraseSettingControlsViewSeed'; - static const seedPhraseSettingControlsDownloadSeed = - 'seedPhraseSettingControlsDownloadSeed'; - static const debugSettingsResetActivatedCoins = - 'debugSettingsResetActivatedCoins'; + static const seedPhraseSettingControlsViewSeed = 'seedPhraseSettingControlsViewSeed'; + static const seedPhraseSettingControlsDownloadSeed = 'seedPhraseSettingControlsDownloadSeed'; + static const debugSettingsResetActivatedCoins = 'debugSettingsResetActivatedCoins'; static const debugSettingsDownloadButton = 'debugSettingsDownloadButton'; static const or = 'or'; static const passwordTitle = 'passwordTitle'; @@ -159,19 +148,16 @@ abstract class LocaleKeys { static const changePasswordSpan1 = 'changePasswordSpan1'; static const updatePassword = 'updatePassword'; static const passwordHasChanged = 'passwordHasChanged'; - static const confirmationForShowingSeedPhraseTitle = - 'confirmationForShowingSeedPhraseTitle'; + static const confirmationForShowingSeedPhraseTitle = 'confirmationForShowingSeedPhraseTitle'; static const saveAndRemember = 'saveAndRemember'; static const seedPhraseShowingTitle = 'seedPhraseShowingTitle'; static const seedPhraseShowingWarning = 'seedPhraseShowingWarning'; static const seedPhraseShowingShowPhrase = 'seedPhraseShowingShowPhrase'; static const seedPhraseShowingCopySeed = 'seedPhraseShowingCopySeed'; - static const seedPhraseShowingSavedPhraseButton = - 'seedPhraseShowingSavedPhraseButton'; + static const seedPhraseShowingSavedPhraseButton = 'seedPhraseShowingSavedPhraseButton'; static const seedAccessSpan1 = 'seedAccessSpan1'; static const backupSeedNotificationTitle = 'backupSeedNotificationTitle'; - static const backupSeedNotificationDescription = - 'backupSeedNotificationDescription'; + static const backupSeedNotificationDescription = 'backupSeedNotificationDescription'; static const backupSeedNotificationButton = 'backupSeedNotificationButton'; static const swapConfirmationTitle = 'swapConfirmationTitle'; static const swapConfirmationYouReceive = 'swapConfirmationYouReceive'; @@ -179,54 +165,41 @@ abstract class LocaleKeys { static const tradingDetailsTitleFailed = 'tradingDetailsTitleFailed'; static const tradingDetailsTitleCompleted = 'tradingDetailsTitleCompleted'; static const tradingDetailsTitleInProgress = 'tradingDetailsTitleInProgress'; - static const tradingDetailsTitleOrderMatching = - 'tradingDetailsTitleOrderMatching'; + static const tradingDetailsTitleOrderMatching = 'tradingDetailsTitleOrderMatching'; static const tradingDetailsTotalSpentTime = 'tradingDetailsTotalSpentTime'; - static const tradingDetailsTotalSpentTimeWithHours = - 'tradingDetailsTotalSpentTimeWithHours'; + static const tradingDetailsTotalSpentTimeWithHours = 'tradingDetailsTotalSpentTimeWithHours'; static const swapRecoverButtonTitle = 'swapRecoverButtonTitle'; static const swapRecoverButtonText = 'swapRecoverButtonText'; static const swapRecoverButtonErrorMessage = 'swapRecoverButtonErrorMessage'; - static const swapRecoverButtonSuccessMessage = - 'swapRecoverButtonSuccessMessage'; + static const swapRecoverButtonSuccessMessage = 'swapRecoverButtonSuccessMessage'; static const swapProgressStatusFailed = 'swapProgressStatusFailed'; static const swapDetailsStepStatusFailed = 'swapDetailsStepStatusFailed'; static const disclaimerAcceptEulaCheckbox = 'disclaimerAcceptEulaCheckbox'; - static const disclaimerAcceptTermsAndConditionsCheckbox = - 'disclaimerAcceptTermsAndConditionsCheckbox'; + static const disclaimerAcceptTermsAndConditionsCheckbox = 'disclaimerAcceptTermsAndConditionsCheckbox'; static const disclaimerAcceptDescription = 'disclaimerAcceptDescription'; - static const swapDetailsStepStatusInProcess = - 'swapDetailsStepStatusInProcess'; - static const swapDetailsStepStatusTimeSpent = - 'swapDetailsStepStatusTimeSpent'; + static const swapDetailsStepStatusInProcess = 'swapDetailsStepStatusInProcess'; + static const swapDetailsStepStatusTimeSpent = 'swapDetailsStepStatusTimeSpent'; static const milliseconds = 'milliseconds'; static const seconds = 'seconds'; static const minutes = 'minutes'; static const hours = 'hours'; - static const coinAddressDetailsNotificationTitle = - 'coinAddressDetailsNotificationTitle'; - static const coinAddressDetailsNotificationDescription = - 'coinAddressDetailsNotificationDescription'; + static const coinAddressDetailsNotificationTitle = 'coinAddressDetailsNotificationTitle'; + static const coinAddressDetailsNotificationDescription = 'coinAddressDetailsNotificationDescription'; static const swapFeeDetailsPaidFromBalance = 'swapFeeDetailsPaidFromBalance'; static const swapFeeDetailsSendCoinTxFee = 'swapFeeDetailsSendCoinTxFee'; - static const swapFeeDetailsReceiveCoinTxFee = - 'swapFeeDetailsReceiveCoinTxFee'; + static const swapFeeDetailsReceiveCoinTxFee = 'swapFeeDetailsReceiveCoinTxFee'; static const swapFeeDetailsTradingFee = 'swapFeeDetailsTradingFee'; - static const swapFeeDetailsSendTradingFeeTxFee = - 'swapFeeDetailsSendTradingFeeTxFee'; + static const swapFeeDetailsSendTradingFeeTxFee = 'swapFeeDetailsSendTradingFeeTxFee'; static const swapFeeDetailsNone = 'swapFeeDetailsNone'; - static const swapFeeDetailsPaidFromReceivedVolume = - 'swapFeeDetailsPaidFromReceivedVolume'; + static const swapFeeDetailsPaidFromReceivedVolume = 'swapFeeDetailsPaidFromReceivedVolume'; static const logoutPopupTitle = 'logoutPopupTitle'; - static const logoutPopupDescriptionWalletOnly = - 'logoutPopupDescriptionWalletOnly'; + static const logoutPopupDescriptionWalletOnly = 'logoutPopupDescriptionWalletOnly'; static const logoutPopupDescription = 'logoutPopupDescription'; static const transactionDetailsTitle = 'transactionDetailsTitle'; static const customSeedWarningText = 'customSeedWarningText'; static const customSeedIUnderstand = 'customSeedIUnderstand'; static const walletCreationBip39SeedError = 'walletCreationBip39SeedError'; - static const walletCreationHdBip39SeedError = - 'walletCreationHdBip39SeedError'; + static const walletCreationHdBip39SeedError = 'walletCreationHdBip39SeedError'; static const walletPageNoSuchAsset = 'walletPageNoSuchAsset'; static const swapCoin = 'swapCoin'; static const fiatBalance = 'fiatBalance'; @@ -302,8 +275,7 @@ abstract class LocaleKeys { static const sellCryptoDescription = 'sellCryptoDescription'; static const buy = 'buy'; static const changingWalletPassword = 'changingWalletPassword'; - static const changingWalletPasswordDescription = - 'changingWalletPasswordDescription'; + static const changingWalletPasswordDescription = 'changingWalletPasswordDescription'; static const dark = 'dark'; static const darkMode = 'darkMode'; static const light = 'light'; @@ -328,8 +300,7 @@ abstract class LocaleKeys { static const contactRequiredError = 'contactRequiredError'; static const contactDetailsMaxLengthError = 'contactDetailsMaxLengthError'; static const discordUsernameValidatorError = 'discordUsernameValidatorError'; - static const telegramUsernameValidatorError = - 'telegramUsernameValidatorError'; + static const telegramUsernameValidatorError = 'telegramUsernameValidatorError'; static const matrixIdValidatorError = 'matrixIdValidatorError'; static const myCoinsMissing = 'myCoinsMissing'; static const myCoinsMissingReassurance = 'myCoinsMissingReassurance'; @@ -339,8 +310,7 @@ abstract class LocaleKeys { static const myCoinsMissingHelp = 'myCoinsMissingHelp'; static const myCoinsMissingSignIn = 'myCoinsMissingSignIn'; static const feedbackValidatorEmptyError = 'feedbackValidatorEmptyError'; - static const feedbackValidatorMaxLengthError = - 'feedbackValidatorMaxLengthError'; + static const feedbackValidatorMaxLengthError = 'feedbackValidatorMaxLengthError'; static const yourFeedback = 'yourFeedback'; static const sendFeedback = 'sendFeedback'; static const sendFeedbackError = 'sendFeedbackError'; @@ -389,8 +359,7 @@ abstract class LocaleKeys { static const noSenderAddress = 'noSenderAddress'; static const confirmOnTrezor = 'confirmOnTrezor'; static const alphaVersionWarningTitle = 'alphaVersionWarningTitle'; - static const alphaVersionWarningDescription = - 'alphaVersionWarningDescription'; + static const alphaVersionWarningDescription = 'alphaVersionWarningDescription'; static const sendToAnalytics = 'sendToAnalytics'; static const backToWallet = 'backToWallet'; static const backToDex = 'backToDex'; @@ -412,14 +381,12 @@ abstract class LocaleKeys { static const currentPassword = 'currentPassword'; static const walletNotFound = 'walletNotFound'; static const passwordIsEmpty = 'passwordIsEmpty'; - static const passwordContainsTheWordPassword = - 'passwordContainsTheWordPassword'; + static const passwordContainsTheWordPassword = 'passwordContainsTheWordPassword'; static const passwordTooShort = 'passwordTooShort'; static const passwordMissingDigit = 'passwordMissingDigit'; static const passwordMissingLowercase = 'passwordMissingLowercase'; static const passwordMissingUppercase = 'passwordMissingUppercase'; - static const passwordMissingSpecialCharacter = - 'passwordMissingSpecialCharacter'; + static const passwordMissingSpecialCharacter = 'passwordMissingSpecialCharacter'; static const passwordConsecutiveCharacters = 'passwordConsecutiveCharacters'; static const passwordSecurity = 'passwordSecurity'; static const allowWeakPassword = 'allowWeakPassword'; @@ -448,16 +415,13 @@ abstract class LocaleKeys { static const bridgeMaxSendAmountError = 'bridgeMaxSendAmountError'; static const bridgeMinOrderAmountError = 'bridgeMinOrderAmountError'; static const bridgeMaxOrderAmountError = 'bridgeMaxOrderAmountError'; - static const bridgeInsufficientBalanceError = - 'bridgeInsufficientBalanceError'; + static const bridgeInsufficientBalanceError = 'bridgeInsufficientBalanceError'; static const lowTradeVolumeError = 'lowTradeVolumeError'; static const bridgeSelectReceiveCoinError = 'bridgeSelectReceiveCoinError'; static const withdrawNoParentCoinError = 'withdrawNoParentCoinError'; static const withdrawTopUpBalanceError = 'withdrawTopUpBalanceError'; - static const withdrawNotEnoughBalanceForGasError = - 'withdrawNotEnoughBalanceForGasError'; - static const withdrawNotSufficientBalanceError = - 'withdrawNotSufficientBalanceError'; + static const withdrawNotEnoughBalanceForGasError = 'withdrawNotEnoughBalanceForGasError'; + static const withdrawNotSufficientBalanceError = 'withdrawNotSufficientBalanceError'; static const withdrawZeroBalanceError = 'withdrawZeroBalanceError'; static const withdrawAmountTooLowError = 'withdrawAmountTooLowError'; static const withdrawNoSuchCoinError = 'withdrawNoSuchCoinError'; @@ -529,10 +493,8 @@ abstract class LocaleKeys { static const availableForSwaps = 'availableForSwaps'; static const swapNow = 'swapNow'; static const passphrase = 'passphrase'; - static const enterPassphraseHiddenWalletTitle = - 'enterPassphraseHiddenWalletTitle'; - static const enterPassphraseHiddenWalletDescription = - 'enterPassphraseHiddenWalletDescription'; + static const enterPassphraseHiddenWalletTitle = 'enterPassphraseHiddenWalletTitle'; + static const enterPassphraseHiddenWalletDescription = 'enterPassphraseHiddenWalletDescription'; static const skip = 'skip'; static const activateToSeeFunds = 'activateToSeeFunds'; static const allowCustomFee = 'allowCustomFee'; @@ -596,10 +558,8 @@ abstract class LocaleKeys { static const collectibles = 'collectibles'; static const sendingProcess = 'sendingProcess'; static const ercStandardDisclaimer = 'ercStandardDisclaimer'; - static const nftReceiveNonSwapAddressWarning = - 'nftReceiveNonSwapAddressWarning'; - static const nftReceiveNonSwapWalletDetails = - 'nftReceiveNonSwapWalletDetails'; + static const nftReceiveNonSwapAddressWarning = 'nftReceiveNonSwapAddressWarning'; + static const nftReceiveNonSwapWalletDetails = 'nftReceiveNonSwapWalletDetails'; static const nftMainLoggedOut = 'nftMainLoggedOut'; static const confirmLogoutOnAnotherTab = 'confirmLogoutOnAnotherTab'; static const refreshList = 'refreshList'; @@ -613,10 +573,8 @@ abstract class LocaleKeys { static const noWalletsAvailable = 'noWalletsAvailable'; static const selectWalletToReset = 'selectWalletToReset'; static const qrScannerTitle = 'qrScannerTitle'; - static const qrScannerErrorControllerUninitialized = - 'qrScannerErrorControllerUninitialized'; - static const qrScannerErrorPermissionDenied = - 'qrScannerErrorPermissionDenied'; + static const qrScannerErrorControllerUninitialized = 'qrScannerErrorControllerUninitialized'; + static const qrScannerErrorPermissionDenied = 'qrScannerErrorPermissionDenied'; static const qrScannerErrorGenericError = 'qrScannerErrorGenericError'; static const qrScannerErrorTitle = 'qrScannerErrorTitle'; static const spend = 'spend'; @@ -661,8 +619,7 @@ abstract class LocaleKeys { static const fiatPaymentInProgressMessage = 'fiatPaymentInProgressMessage'; static const pleaseWait = 'pleaseWait'; static const bitrefillPaymentSuccessfull = 'bitrefillPaymentSuccessfull'; - static const bitrefillPaymentSuccessfullInstruction = - 'bitrefillPaymentSuccessfullInstruction'; + static const bitrefillPaymentSuccessfullInstruction = 'bitrefillPaymentSuccessfullInstruction'; static const tradingBot = 'tradingBot'; static const margin = 'margin'; static const updateInterval = 'updateInterval'; @@ -725,8 +682,7 @@ abstract class LocaleKeys { static const ibcTransferFieldSubtitle = 'ibcTransferFieldSubtitle'; static const ibcChannel = 'ibcChannel'; static const ibcChannelHint = 'ibcChannelHint'; - static const ibcChannelRequired = 'ibcChannelRequired'; - static const ibcChannelInvalidFormat = 'ibcChannelInvalidFormat'; + static const enterIbcChannel = 'enterIbcChannel'; static const successPageHeadline = 'successPageHeadline'; static const successPageBodySmall = 'successPageBodySmall'; static const withdrawErrorCardTileTitle = 'withdrawErrorCardTileTitle'; @@ -738,4 +694,5 @@ abstract class LocaleKeys { static const trend7d = 'trend7d'; static const tradingDisabledTooltip = 'tradingDisabledTooltip'; static const tradingDisabled = 'tradingDisabled'; + } diff --git a/lib/views/wallet/coin_details/withdraw_form/widgets/fill_form/fields/fields.dart b/lib/views/wallet/coin_details/withdraw_form/widgets/fill_form/fields/fields.dart index 48c92249b3..a8abdbd6b8 100644 --- a/lib/views/wallet/coin_details/withdraw_form/widgets/fill_form/fields/fields.dart +++ b/lib/views/wallet/coin_details/withdraw_form/widgets/fill_form/fields/fields.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/services.dart' show FilteringTextInputFormatter; import 'package:web_dex/generated/codegen_loader.g.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:decimal/decimal.dart'; @@ -579,68 +580,24 @@ class IbcTransferField extends StatelessWidget { } } -class IbcChannelField extends StatefulWidget { +class IbcChannelField extends StatelessWidget { const IbcChannelField({super.key}); - @override - State createState() => _IbcChannelFieldState(); -} - -class _IbcChannelFieldState extends State { - late final TextEditingController _controller; - - @override - void initState() { - super.initState(); - _controller = TextEditingController(); - } - - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } - @override Widget build(BuildContext context) { - return BlocConsumer( - listenWhen: (previous, current) => - previous.ibcChannel != current.ibcChannel && - current.ibcChannel != _controller.text, - listener: (context, state) { - // Only update controller if the bloc state differs from current text - // This prevents the cursor from jumping when user is typing - if (state.ibcChannel != _controller.text) { - _controller.text = state.ibcChannel ?? ''; - } - }, - buildWhen: (previous, current) => - previous.ibcChannelError != current.ibcChannelError, + return BlocBuilder( builder: (context, state) { return UiTextFormField( key: const Key('withdraw-ibc-channel-input'), - controller: _controller, labelText: LocaleKeys.ibcChannel.tr(), hintText: LocaleKeys.ibcChannelHint.tr(), - errorText: state.ibcChannelError?.message, + keyboardType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly], onChanged: (value) { context .read() .add(WithdrawFormIbcChannelChanged(value ?? '')); }, - validator: (value) { - if (value?.isEmpty ?? true) { - return LocaleKeys.ibcChannelRequired.tr(); - } - - // Validate format: channel- - final channelRegex = RegExp(r'^channel-\d+$'); - if (!channelRegex.hasMatch(value!)) { - return LocaleKeys.ibcChannelInvalidFormat.tr(); - } - - return null; - }, ); }, ); diff --git a/packages/komodo_ui_kit/pubspec.lock b/packages/komodo_ui_kit/pubspec.lock index 79e9d9ba29..cdf24ee1a5 100644 --- a/packages/komodo_ui_kit/pubspec.lock +++ b/packages/komodo_ui_kit/pubspec.lock @@ -95,7 +95,7 @@ packages: description: path: "packages/komodo_defi_rpc_methods" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -104,7 +104,7 @@ packages: description: path: "packages/komodo_defi_types" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -113,7 +113,7 @@ packages: description: path: "packages/komodo_ui" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" diff --git a/pubspec.lock b/pubspec.lock index c2eeb7a4e4..5ab8d4c0e4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -656,7 +656,7 @@ packages: description: path: "packages/komodo_cex_market_data" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.0.1" @@ -665,7 +665,7 @@ packages: description: path: "packages/komodo_coin_updates" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "1.0.0" @@ -674,7 +674,7 @@ packages: description: path: "packages/komodo_coins" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -683,7 +683,7 @@ packages: description: path: "packages/komodo_defi_framework" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0" @@ -692,7 +692,7 @@ packages: description: path: "packages/komodo_defi_local_auth" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -701,7 +701,7 @@ packages: description: path: "packages/komodo_defi_rpc_methods" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -710,7 +710,7 @@ packages: description: path: "packages/komodo_defi_sdk" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -719,7 +719,7 @@ packages: description: path: "packages/komodo_defi_types" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -735,7 +735,7 @@ packages: description: path: "packages/komodo_ui" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -751,7 +751,7 @@ packages: description: path: "packages/komodo_wallet_build_transformer" ref: dev - resolved-ref: a44acf31e94fa4973ba59940abeceaf1f38839ec + resolved-ref: a521a80f6f77e888512d13aa961511d6f83e2c14 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0"