diff --git a/.gitignore b/.gitignore
index c54929c4..91b8519e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -81,3 +81,13 @@ yarn-error.log
!.yarn/releases
!.yarn/sdks
!.yarn/versions
+
+# other dev tooling
+repomix-output.*
+repomix*
+mise.toml
+mise.yaml
+
+# temp dev scripts 2025-07-14 and beyond. will remove afterwards
+key-mappings.json
+replace-translation-keys.js
diff --git a/__tests__/missingTranslations.js b/__tests__/missingTranslations.js
index ed62dbe2..bcbf6c8c 100644
--- a/__tests__/missingTranslations.js
+++ b/__tests__/missingTranslations.js
@@ -1,16 +1,97 @@
const { exec } = require('child_process');
+const fs = require('fs');
+const path = require('path');
-exec('tsc --noEmit', (error, stdout, stderr) => {
+console.log('TRANSLATION ANALYSIS');
+console.log('=' + '='.repeat(50));
+
+// First, run the translation analysis
+try {
+ // Read settings.json to get language configuration
+ const settingsPath = path.join(__dirname, '..', 'minibits.inlang', 'settings.json');
+ const settings = JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
+
+ const defaultLanguage = settings.sourceLanguageTag;
+ const allLanguages = settings.languageTags;
+
+ console.log(`Default language: ${defaultLanguage}`);
+ console.log(`All languages: ${allLanguages.join(', ')}`);
+ console.log('=' + '='.repeat(50));
+
+ // Load all translation files
+ const translations = {};
+ const i18nMessagesPath = path.join(__dirname, '..', 'src', 'i18n_messages');
+
+ allLanguages.forEach(lang => {
+ const filePath = path.join(i18nMessagesPath, `${lang}.json`);
+ if (fs.existsSync(filePath)) {
+ try {
+ translations[lang] = JSON.parse(fs.readFileSync(filePath, 'utf8'));
+ } catch (error) {
+ console.error(`Error reading ${lang}.json:`, error.message);
+ translations[lang] = {};
+ }
+ } else {
+ console.warn(`Translation file not found: ${lang}.json`);
+ translations[lang] = {};
+ }
+ });
+
+ // Get keys from default language
+ const defaultKeys = Object.keys(translations[defaultLanguage] || {});
+ const totalKeys = defaultKeys.length;
+
+ console.log(`Total keys in default language (${defaultLanguage}): ${totalKeys}`);
+ console.log('=' + '='.repeat(50));
+
+ // Check each language
+ allLanguages.forEach(lang => {
+ if (lang === defaultLanguage) {
+ console.log(`\n${lang.toUpperCase()} (default language)`);
+ console.log(`โ
100% translated (${totalKeys}/${totalKeys} keys)`);
+ return;
+ }
+
+ const currentKeys = Object.keys(translations[lang] || {});
+ const currentTotal = currentKeys.length;
+ const missingKeys = defaultKeys.filter(key => !translations[lang].hasOwnProperty(key));
+ const percentageTranslated = totalKeys > 0 ? Math.round((currentTotal / totalKeys) * 100) : 0;
+
+ console.log(`\n${lang.toUpperCase()}`);
+ console.log(`๐ ${percentageTranslated}% translated (${currentTotal}/${totalKeys} keys)`);
+
+ if (missingKeys.length > 0) {
+ console.log(`โ Missing ${missingKeys.length} keys:`);
+ missingKeys.forEach(key => {
+ console.log(` - ${key}`);
+ });
+ } else {
+ console.log(`โ
No missing keys!`);
+ }
+ });
+
+ console.log('\n' + '=' + '='.repeat(50));
+ console.log('โ
Translation analysis complete!');
+} catch (translationError) {
+ console.error('โ Error during translation analysis:', translationError.message);
+}
+
+console.log('\n' + '=' + '='.repeat(50));
+console.log('TYPESCRIPT ERROR CHECK');
+console.log('=' + '='.repeat(50));
+
+// Now run the TypeScript error checking
+exec('tsc --noEmit', (error, stdout) => {
if (error) {
const output = stdout;
const filteredErrors = output.split('\n').filter(line => line.includes('TxKeyPath'));
if (filteredErrors.length > 0) {
+ console.log('โ TypeScript errors containing TxKeyPath found:');
console.log(filteredErrors.join('\n'));
} else {
- console.log('No errors containing TxKeyPath found.');
+ console.log('โ
No TypeScript errors containing TxKeyPath found.');
}
- // process.exit(1); // Ensure the script returns an error code if there were any errors
} else {
- console.log('No TypeScript errors found.');
+ console.log('โ
No TypeScript errors found.');
}
});
diff --git a/minibits.inlang/settings.json b/minibits.inlang/settings.json
index 18ab7a59..b57eb50b 100644
--- a/minibits.inlang/settings.json
+++ b/minibits.inlang/settings.json
@@ -8,7 +8,7 @@
"modules": [
"https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-empty-pattern@latest/dist/index.js",
"https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-without-source@latest/dist/index.js",
- "https://cdn.jsdelivr.net/gh/KraXen72/inlang-t-function-jsx-hybrid-matcher/dist/index.js",
+ "https://cdn.jsdelivr.net/gh/KraXen72/inlang-t-function-jsx-hybrid-matcher@main/dist/index.js",
"https://cdn.jsdelivr.net/npm/@inlang/plugin-json@latest/dist/index.js"
],
"plugin.inlang.json": {
@@ -26,7 +26,11 @@
"recognizedJSXAttributes": [
"tx",
"subTx",
- "contentTx"
+ "labelTx",
+ "titleTx",
+ "headingTx",
+ "contentTx",
+ "footerTx"
]
}
}
\ No newline at end of file
diff --git a/package.json b/package.json
index 9a9e61ed..2513a75b 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,8 @@
"adb:unreverse": "adb devices && adb reverse --remove-all",
"adb:inspect": "adb shell input keyevent 82",
"postinstall": "patch-package --exclude 'nothing'",
- "clean": "npx react-native-clean-project"
+ "clean": "npx react-native-clean-project",
+ "machine-translate": "npx @inlang/cli machine translate --project minibits.inlang"
},
"dependencies": {
"@cashu/cashu-ts": "minibits-cash/cashu-ts#b3ba36757d84ec03f1064029db02308eb3a09cc4",
diff --git a/src/components/CollapsibleText.tsx b/src/components/CollapsibleText.tsx
index 58d488df..81f4e9e9 100644
--- a/src/components/CollapsibleText.tsx
+++ b/src/components/CollapsibleText.tsx
@@ -46,7 +46,7 @@ export const CollapsibleText = (props: CollapsibleProps) => {
{...props.textProps}
/>
-
+
diff --git a/src/components/MemoInputCard.tsx b/src/components/MemoInputCard.tsx
index 7cfe6664..e0ab2ffe 100644
--- a/src/components/MemoInputCard.tsx
+++ b/src/components/MemoInputCard.tsx
@@ -42,7 +42,7 @@ export const MemoInputCard = forwardRef((props, memoI
maxLength={maxLength}
keyboardType="default"
selectTextOnFocus={true}
- placeholder={translate('sendScreen.memo')}
+ placeholder={translate('sendScreen_memo')}
placeholderTextColor={placeholderTextColor}
editable={!disabled}
/>
diff --git a/src/components/ProfileHeader.tsx b/src/components/ProfileHeader.tsx
index 24ea4e7d..fcca6194 100644
--- a/src/components/ProfileHeader.tsx
+++ b/src/components/ProfileHeader.tsx
@@ -16,7 +16,7 @@ export const ProfileHeader = observer(function (props: ProfileHeaderProps) {
const { picture, nip05 } = walletProfileStore
return ( {
diff --git a/src/i18n_messages/en.json b/src/i18n_messages/en.json
index eec2feb0..5d0b4d3c 100644
--- a/src/i18n_messages/en.json
+++ b/src/i18n_messages/en.json
@@ -1,135 +1,125 @@
{
- "recoveryOptions": {
- "title": "Recovery options",
- "fromBackup": "Recover from backup",
- "fromBackupDescription": "Import backup exported from another Minibits wallet. Easy option if you move to a new device.",
- "fromSeed": "Recover from seed",
- "fromSeedDescription": "Use 12 word seed phrase to re-create your lost ecash with assistance of mints. Use in case of device loss."
- },
"addMints": "Add mints",
- "amount": {
- "requested": "Requested amount",
- "topup": "Topup amount",
- "withdraw": "Withdraw amount",
- "send": "Amount to send"
- },
+ "amountRequested": "Requested amount",
+ "amountSend": "Amount to send",
+ "amountTopup": "Topup amount",
+ "amountWithdraw": "Withdraw amount",
"attention": "Attention!",
- "backupScreen": {
- "deletedSuccess": "Your backup of minibits tokens has been deleted. New tokens will NOT be backed up.",
- "invalidMnemonicError": "Corrupted or invalid seed phrase. Please move funds and reinstall this wallet.",
- "localBackup": "Local backup",
- "localBackupDescription": "Local backup stores a copy of all your ecash in the local database. Ecash is never deleted unless you switch off the backup. Please note that this backup is not encrypted.",
- "missingMnemonicError": "Missing seed phrase phrase.",
- "missingMnemonicOrSeedError": "Missing seed phrase or seed.",
- "mnemonicDescription": "This 12 word sequence represents your seed and allows you to recover your ecash balance in case of device loss. Keep them in safe place.",
- "mnemonicTitle": "Your seed phrase",
- "recoveryTool": "Export ecash",
- "recoveryToolDescription": "Filter and export all ecash from local database grouped by mint keysets.",
- "remoteBackupDescription": "Seed phrase encodes your seed and allows you to recover your ecash balance in case of device loss.",
- "removeSpentCoins": "Remove spent ecash",
- "removeSpentCoinsDescription": "This tool removes spent ecash from the balance.",
- "result": "Spent ecash proofs were removed from the wallet.",
- "seedBackup": "Seed backup",
- "success": "Your minibits tokens were backed up to local database. New tokens will be backed up automatically.",
- "remoteBackup": "Seed backup"
- },
+ "backupDeletedSuccess": "Your backup of minibits tokens has been deleted. New tokens will NOT be backed up.",
+ "backupInvalidMnemonicError": "Corrupted or invalid seed phrase. Please move funds and reinstall this wallet.",
+ "backupLocalBackup": "Local backup",
+ "backupLocalBackupDescription": "Local backup stores a copy of all your ecash in the local database. Ecash is never deleted unless you switch off the backup. Please note that this backup is not encrypted.",
+ "backupMissingMnemonicError": "Missing seed phrase phrase.",
+ "backupMissingMnemonicOrSeedError": "Missing seed phrase or seed.",
+ "backupMnemonicDescription": "This 12 word sequence represents your seed and allows you to recover your ecash balance in case of device loss. Keep them in safe place.",
+ "backupMnemonicTitle": "Your seed phrase",
+ "backupOptionsTitle": "Backup",
+ "backupRecoveryTool": "Export ecash",
+ "backupRecoveryToolDescription": "Filter and export all ecash from local database grouped by mint keysets.",
+ "backupRemoteBackup": "Seed backup",
+ "backupRemoteBackupDescription": "Seed phrase encodes your seed and allows you to recover your ecash balance in case of device loss.",
+ "backupRemoveSpentCoins": "Remove spent ecash",
+ "backupRemoveSpentCoinsDescription": "This tool removes spent ecash from the balance.",
+ "backupResult": "Spent ecash proofs were removed from the wallet.",
+ "backupSeedBackup": "Seed backup",
+ "backupSuccess": "Your minibits tokens were backed up to local database. New tokens will be backed up automatically.",
+ "backupWalletBackupDescription": "Export wallet backup so that you can import it into a new device.",
+ "backupWalletBackupTitle": "Wallet backup",
"backupWillOverwriteBalanceWarning": "Your wallet has non zero-balance. If you continue, existing ecash will be deleted and replaced by backup.",
+ "buttonAdd": "Add",
+ "buttonCheck": "Check",
+ "cashuPaymentRequest_create": "Create request",
+ "cashuPaymentRequest_to": "Receive to",
+ "cashuPaymentRequestQRTitle": "Cashu Payment request",
+ "cashuPaymentRequestTitle": "Mint to receive",
"checkAndSync": "Check and sync",
"checkAndSyncDesc": "Checks that contact name is still linked to the same pubkey and updates picture if it was changed.",
- "common": {
- "add": "Add",
- "back": "Back",
- "cancel": "Cancel",
- "change": "Change",
- "close": "Close",
- "complete": "Complete",
- "completed": "Completed",
- "confirm": "Confirm",
- "confirmAlertTitle": "Confirmation",
- "confirmCreateInvoice": "Create invoice",
- "connectedParam": "%{param} relays connected",
- "copy": "Copy",
- "copyFailParam": "Couldn't copy %{param}",
- "create": "Create",
- "disabled": "Disabled",
- "edit": "Edit",
- "enabled": "Enabled",
- "hideMore": "Collapse",
- "import": "Import",
- "noDescPlaceholder": "No description",
- "notCreated": "Not yet created",
- "off": "off",
- "offline": "Offline",
- "offlinePretty": "Your device is currently offline",
- "ok": "OK",
- "on": "on",
- "paste": "Paste",
- "pasteEcash": "Paste ecash",
- "pasteEcashToken": "Paste ecash token",
- "createCashuPaymentRequest": "Create payment request",
- "qr": "QR Code",
- "reconnect": "Reconnect",
- "reset": "Reset",
- "resetDefault": "Reset to default",
- "sats": "SAT",
- "save": "Save",
- "saveFailParam": "Failed to save %{param}",
- "scan": "Scan",
- "sendAsEcash": "Send as ecash",
- "share": "Share",
- "showMore": "Show more",
- "success": "Success!",
- "copySuccessParam": "Copied %{param}",
- "hide": "Hide",
- "show": "Show",
- "update": "Update",
- "none": ""
- },
+ "commonAdd": "Add",
+ "commonBack": "Back",
+ "commonCancel": "Cancel",
+ "commonChange": "Change",
+ "commonClose": "Close",
+ "commonComplete": "Complete",
+ "commonCompleted": "Completed",
+ "commonConfirm": "Confirm",
+ "commonConfirmAlertTitle": "Confirmation",
+ "commonConfirmCreateInvoice": "Create invoice",
+ "commonConnectedParam": "%{param} relays connected",
+ "commonCopy": "Copy",
+ "commonCopyFailParam": "Couldn't copy %{param}",
+ "commonCopySuccessParam": "Copied %{param}",
+ "commonCreate": "Create",
+ "commonCreateCashuPaymentRequest": "Create payment request",
+ "commonDisabled": "Disabled",
+ "commonEdit": "Edit",
+ "commonEnabled": "Enabled",
+ "commonHide": "Hide",
+ "commonHideMore": "Collapse",
+ "commonImport": "Import",
+ "commonNoDescPlaceholder": "No description",
+ "commonNotCreated": "Not yet created",
+ "commonOff": "off",
+ "commonOffline": "Offline",
+ "commonOfflinePretty": "Your device is currently offline",
+ "commonOk": "OK",
+ "commonOn": "on",
+ "commonPaste": "Paste",
+ "commonPasteEcash": "Paste ecash",
+ "commonPasteEcashToken": "Paste ecash token",
+ "commonQr": "QR Code",
+ "commonReconnect": "Reconnect",
+ "commonReset": "Reset",
+ "commonResetDefault": "Reset to default",
+ "commonSats": "SAT",
+ "commonSave": "Save",
+ "commonSaveFailParam": "Failed to save %{param}",
+ "commonScan": "Scan",
+ "commonSend": "Send",
+ "commonSendAsEcash": "Send as ecash",
+ "commonShare": "Share",
+ "commonShow": "Show",
+ "commonShowMore": "Show more",
+ "commonSuccess": "Success!",
+ "commonTryAgain": "Try again",
+ "commonUpdate": "Update",
"confirmBackupRecovery": "Do you really want to recover ecash from the backup?",
"confirmMintRemoval": "Do you really want to remove %{hostname} - %{shortname} from the wallet?",
+ "contactHasNoLightningAddrUseEcash": "This contact does not have a Lightning address, send ecash instead.",
"contacts": "Contacts",
- "contactsScreen": {
- "getInvoice": "Get invoice",
- "new": "New",
- "newTitle": "Add new contact",
- "ownName": {
- "available": "%{name} is available!",
- "betaWarning": "Please accept this is an early beta software. Your data can still be lost due to a bug or unexpected data loss.",
- "chooseOwnName": "Choose your own name",
- "chooseOwnNameFooter": "Use lowercase letters, numbers and .-_",
- "ctaPay": "Pay from wallet",
- "donationSuccess": "Thank you! Donation for %{receiver} has been successfully paid.",
- "illegalChar": "Do not use . or - characters at the beginning or the end of name.",
- "insufficient": "Your wallet balance is not enough to pay this invoice amount but you can still pay it from another wallet.",
- "payToGetOwnName": "Pay the following lightning invoice and get your %{name} wallet name.",
- "profileExists": "This wallet name is already in use, choose another one.",
- "tooShort": "Please use at least 2 characters for your name"
- },
- "privateContacts": {
- "bottomModal": "Private contacts are unique identifiers of other Minibits wallets. You can use them to send or request ecash and you can safely share your own with others.",
- "domainExternal": "Use another domain",
- "domainMinibits": "Use minibits.cash domain",
- "explainerSubText": "Add other Minibits users as your private contacts. Every user gets sharable @minibits.cash wallet address. You can pay privately to your contacts anytime even if they are offline.",
- "explainerText": "Private contacts",
- "profileNotFound": "Profile name %{name} could not be found. Make sure the name is correct.",
- "saveNewFormat": "Please enter a wallet address in name@domain.xyz format",
- "selectSendLnURL": "Select contact to send Lightning payment to.",
- "selectSendPaymentRequest": "Select contact to send your payment request to.",
- "selectSendToken": "Select contact to send your ecash to.",
- "switchName": "Switch your wallet name and picture?",
- "switchNameSubText": "Get cooler wallet name or profile picture. Select from an array of random names and images or opt for your own @minibits.cash wallet name."
- },
- "publicContacts": {
- "addNpub": "Add your npub key",
- "npubPasteError": "Copy your NPUB key before pasting",
- "pasteDemoKey": "Paste demo key",
- "setOwnRelay": "Set your own relay"
- },
- "randomName": {
- "selectOneOfUsernames": "Select one of the usernames"
- },
- "scan": "Scan"
- },
+ "contactsScreen_getInvoice": "Get invoice",
+ "contactsScreen_new": "New",
+ "contactsScreen_newTitle": "Add new contact",
+ "contactsScreen_ownName_available": "%{name} is available!",
+ "contactsScreen_ownName_betaWarning": "Please accept this is an early beta software. Your data can still be lost due to a bug or unexpected data loss.",
+ "contactsScreen_ownName_chooseOwnName": "Choose your own name",
+ "contactsScreen_ownName_chooseOwnNameFooter": "Use lowercase letters, numbers and .-_",
+ "contactsScreen_ownName_ctaPay": "Pay from wallet",
+ "contactsScreen_ownName_donationSubtext": "kindly asks you for a small donation for your new wallet address.",
+ "contactsScreen_ownName_donationSuccess": "Thank you! Donation for %{receiver} has been successfully paid.",
+ "contactsScreen_ownName_illegalChar": "Do not use . or - characters at the beginning or the end of name.",
+ "contactsScreen_ownName_insufficient": "Your wallet balance is not enough to pay this invoice amount but you can still pay it from another wallet.",
+ "contactsScreen_ownName_lightningInvoiceToPayQR": "Lightning invoice to pay",
+ "contactsScreen_ownName_payToGetOwnName": "Pay the following lightning invoice and get your %{name} wallet name.",
+ "contactsScreen_ownName_profileExists": "This wallet name is already in use, choose another one.",
+ "contactsScreen_ownName_tooShort": "Please use at least 2 characters for your name",
+ "contactsScreen_privateContacts_bottomModal": "Private contacts are unique identifiers of other Minibits wallets. You can use them to send or request ecash and you can safely share your own with others.",
+ "contactsScreen_privateContacts_domainExternal": "Use another domain",
+ "contactsScreen_privateContacts_domainMinibits": "Use minibits.cash domain",
+ "contactsScreen_privateContacts_explainerSubText": "Add other Minibits users as your private contacts. Every user gets sharable @minibits.cash wallet address. You can pay privately to your contacts anytime even if they are offline.",
+ "contactsScreen_privateContacts_explainerText": "Private contacts",
+ "contactsScreen_privateContacts_profileNotFound": "Profile name %{name} could not be found. Make sure the name is correct.",
+ "contactsScreen_privateContacts_saveNewFormat": "Please enter a wallet address in name@domain.xyz format",
+ "contactsScreen_privateContacts_selectSendLnURL": "Select contact to send Lightning payment to.",
+ "contactsScreen_privateContacts_selectSendPaymentRequest": "Select contact to send your payment request to.",
+ "contactsScreen_privateContacts_selectSendToken": "Select contact to send your ecash to.",
+ "contactsScreen_privateContacts_switchName": "Switch your wallet name and picture?",
+ "contactsScreen_privateContacts_switchNameSubText": "Get cooler wallet name or profile picture. Select from an array of random names and images or opt for your own @minibits.cash wallet name.",
+ "contactsScreen_publicContacts_addNpub": "Add your npub key",
+ "contactsScreen_publicContacts_npubPasteError": "Copy your NPUB key before pasting",
+ "contactsScreen_publicContacts_pasteDemoKey": "Paste demo key",
+ "contactsScreen_publicContacts_setOwnRelay": "Set your own relay",
+ "contactsScreen_randomName_selectOneOfUsernames": "Select one of the usernames",
+ "contactsScreen_scan": "Scan",
"copyAsEncodedTokens": "Copy as sendable tokens",
"copyContactPublicKey": "Copy contact's public key",
"copyMnemonicBackupWorkaround": "To apply backup to your existing funds, send your entire balance to yourself. Otherwise, only funds from this point onward can be restored.",
@@ -138,33 +128,49 @@
"deleteContact": "Delete contact",
"deleteContactDesc": "Remove this contact from your wallet.",
"derivingSeedStatus": "Deriving seed, this takes a while...",
- "developerScreen": {
- "devOptions": "Developer options",
- "go": "Let's go!",
- "info": "About Minibits wallet",
- "logLevel": "Log level",
- "reset": "Factory reset",
- "resetDescription": "This will wipe out all local data from storage and from the local database. Do only during development or testing.",
- "title": "Developer options",
- "transactions": "Sync recent transactions",
- "transactionsDescription": "There are %{count} recent transactions cached in the app's fast storage. Resetting will reload them from the app's database. Do only during development or testing."
- },
- "errorScreen": {
- "friendlySubtitle": "Unfortunately, the Minibits app encountered an unexpected error. Please contact us at support@minibits.cash or raise an issue on Github.",
- "reset": "RESET APP",
- "title": "Something went wrong!"
+ "developerScreen_devOptions": "Developer options",
+ "developerScreen_forceDeletePending": "Force delete pending",
+ "developerScreen_forceDeletePendingDescription": "Removes ecash from pending state and deletes all pending transactions.",
+ "developerScreen_forceMovePending": "Force move pending",
+ "developerScreen_forceMovePendingDescription": "Move pending ecash back to spendable balance.",
+ "developerScreen_go": "Let's go!",
+ "developerScreen_info": "About Minibits wallet",
+ "developerScreen_logLevel": "Log level",
+ "developerScreen_reset": "Factory reset",
+ "developerScreen_resetDescription": "This will wipe out all local data from storage and from the local database. Do only during development or testing.",
+ "developerScreen_resyncTransactions": "Resync transactions",
+ "developerScreen_resyncTransactionsDescription": "Refresh recent transactions history from database.",
+ "developerScreen_title": "Developer options",
+ "developerScreen_transactions": "Sync recent transactions",
+ "developerScreen_transactionsDescription": "There are %{count} recent transactions cached in the app's fast storage. Resetting will reload them from the app's database. Do only during development or testing.",
+ "emptyStateComponent": {
+ "generic": {
+ "button": "Try again",
+ "content": "There is nothing to display at the moment.",
+ "heading": "No data available"
+ }
},
+ "errorScreen_friendlySubtitle": "Unfortunately, the Minibits app encountered an unexpected error. Please contact us at support@minibits.cash or raise an issue on Github.",
+ "errorScreen_reset": "RESET APP",
+ "errorScreen_title": "Something went wrong!",
+ "exportBackup": "Export backup",
+ "exportBackupCopyBackup": "Copy backup",
+ "exportBackupCopyOrphanedProofs": "Copy orphaned proofs",
+ "exportBackupEcashProofs": "Ecash proofs",
+ "exportBackupMints": "Mints",
+ "exportBackupWalletTitle": "Wallet backup",
"factoryResetSuccess": "Factory reset completed, please restart immediately.",
"factoryResetUserConfirmDesc": "All application data will be deleted. Are you sure you want to perform a factory reset?",
+ "importBackupInsertWalletBackup": "Insert wallet backup",
+ "importBackupWalletProfileNotFound": "Wallet profile linked to the provided seed not found, new one will be created for you.",
+ "importBackupWalletRecovery": "Wallet recovery",
"increaseRecoveryIndexes": "Increase recovery indexes",
"increaseRecoveryIndexesDesc": "In case you encounter 'outputs already signed' error, use this tool to resolve the issue.",
"invalidRelayUrl": "Invalid relay URL.",
"lightningAddress": "Lightning address",
"lightningInvoiceSharedWaiting": "Lightning invoice has been shared, waiting to be paid by receiver.",
- "lightningPayScreen": {
- "onPasteEmptyClipboard": "First copy Lightning invoice, address or pay code to pay to. Then paste.",
- "payHeading": "Pay"
- },
+ "lightningPayScreen_onPasteEmptyClipboard": "First copy Lightning invoice, address or pay code to pay to. Then paste.",
+ "lightningPayScreen_payHeading": "Pay",
"loadingPublicInfo": "Loading public info",
"localBackupDisabled": "Local backup is off",
"localBackupEnabled": "Local backup is on",
@@ -172,31 +178,42 @@
"loglevelErrorDesc": "Log errors and crashes only, without private data.",
"loglevelInfoDesc": "Log anonymous usage, without private data.",
"manageMints": "Manage mints",
+ "mintInfo_contactsHeading": "Contacts",
+ "mintInfo_depositMint": "Deposit (Mint)",
+ "mintInfo_descriptionHeading": "Description",
+ "mintInfo_emptyValueParam": "No %{param} provided.",
+ "mintInfo_keyValueInfoCardHeading": "More Info",
+ "mintInfo_loadingNamePlaceholder": "Loading name...",
+ "mintInfo_loadingUnitsPlaceholder": "Loading units...",
+ "mintInfo_mintMeltHeading": "Limits",
+ "mintInfo_mintUrlHeading": "Mint URL",
+ "mintInfo_motd": "Important notice",
+ "mintInfo_nutsHeading": "Supported NUTs",
+ "mintInfo_withdrawMelt": "Withdraw (Melt)",
"mintInfoHeading": "Mint info",
"mintSettingsUpdated": "Updated mint settings",
- "mintsScreen": {
- "addMint": "Add mint",
- "addMintMinibits": "Add Minibits mint",
- "addMintUrl": "Add mint URL",
- "updateMintUrl": "Update mint URL",
- "blockMint": "Block receiving from this mint",
- "copy": "Copy mint URL",
- "invalidUrl": "This is not a valid URL.",
- "mintAdded": "The mint has been added",
- "mintBlocked": "The mint has been blocked. The wallet will not receive ecash from this mint.",
- "mintExists": "This mint already exists.",
- "mintInfo": "Mint information page",
- "mintRemoved": "The mint has been removed",
- "mintUnblocked": "The mint has been unblocked. You can now receive ecash from this mint.",
- "mintUrl": "Mint URL",
- "mintUrlHint": "Provide the URL of a trusted mint.",
- "refreshMintSettings": "Refresh mint settings",
- "removeMint": "Remove mint",
- "rename": "Rename mint",
- "setColor": "Change the mint's icon color",
- "unblockMint": "Unblock receiving from this mint",
- "share": "Share Mint URL"
- },
+ "mintsScreen_addMint": "Add mint",
+ "mintsScreen_addMintMinibits": "Add Minibits mint",
+ "mintsScreen_addMintUrl": "Add mint URL",
+ "mintsScreen_blockMint": "Block receiving from this mint",
+ "mintsScreen_copy": "Copy mint URL",
+ "mintsScreen_invalidUrl": "This is not a valid URL.",
+ "mintsScreen_keepAtLeastOneMint": "You need to keep at least 1 mint.",
+ "mintsScreen_mintAdded": "The mint has been added",
+ "mintsScreen_mintBlocked": "The mint has been blocked. The wallet will not receive ecash from this mint.",
+ "mintsScreen_mintExists": "This mint already exists.",
+ "mintsScreen_mintInfo": "Mint information page",
+ "mintsScreen_mintRemoved": "The mint has been removed",
+ "mintsScreen_mintUnblocked": "The mint has been unblocked. You can now receive ecash from this mint.",
+ "mintsScreen_mintUrl": "Mint URL",
+ "mintsScreen_mintUrlHint": "Provide the URL of a trusted mint.",
+ "mintsScreen_refreshMintSettings": "Refresh mint settings",
+ "mintsScreen_removeMint": "Remove mint",
+ "mintsScreen_rename": "Rename mint",
+ "mintsScreen_setColor": "Change the mint's icon color",
+ "mintsScreen_share": "Share Mint URL",
+ "mintsScreen_unblockMint": "Unblock receiving from this mint",
+ "mintsScreen_updateMintUrl": "Update mint URL",
"missingEcashTokenToReceiveError": "Missing ecash token to receive.",
"missingLNURLParamsError": "Missing LNURL params.",
"missingMintsForProofsUserMessage": "Please add all mints belonging to your proofs to the wallet and try again.",
@@ -206,175 +223,221 @@
"nextInterval": "Next interval",
"noEcashRecovered": "No ecash recovered",
"noSpentEcashFound": "No spent ecash found in your wallet.",
- "nostr": {
- "copyPubKey": "Copy Nostr public key",
- "enterAddress": "Enter your Nostr address",
- "enterAddressDesc": "Minibits uses Nostr address (nip05) as a sharable contact to send and receive ecash.",
- "invalidAddressFormat": "Invalid NOSTR address, please check that it follows name@domain.com format",
- "lastStandDialog": {
- "cancel": "Cancel",
- "complete": "Profile change is complete.",
- "confirm": "Apply Change",
- "desc": "Using your own Nostr address will disable Lightning address features unique to minibits.cash address.",
- "readyDesc": "Wallet needs to restart to apply this change.",
- "readyTitle": "Profile change is ready.",
- "title": "Consider before change"
- },
- "minibitsNameKeyReuseError": "%{domain} names and keys can't be used with multiple wallets.",
- "missingRelaysError": "Missing Nostr relays.",
- "pasteError": "Copy your NOSTR address first, then paste.",
- "profileRelayMismatchedIdentifierError": "Profile from the relay does not match the given nip05 identifier",
- "relaysTitle": "Nostr relays",
- "removePub": "Remove your public key",
- "removePubSubText": "Remove your npub key and stop loading public contacts.",
- "setPublicKey": "Set your public key",
- "setPublicKeySubText": "Add or change your NOSTR social network public key (npub).",
- "setRelay": "Set relay",
- "setRelaySubText": "Add or change your own relay if your profile and follows are not hosted on the default relays.",
- "tip": "Tip the people you follow",
- "tipSubText": "Add your Nostr social network public key (npub) and tip or donate to your favourite people and projects directly from the minibits wallet.",
- "useOwnProfile": {
- "desc": "Import your own Nostr address and keys. Your wallet will stop communicating with minibits.cash Nostr and LNURL address servers, disabling Lightning address features for receiving zaps and payments. Only for hardcore ecash-ers!",
- "title": "Use own Nostr profile"
- }
- },
+ "nostr_copyPubKey": "Copy Nostr public key",
+ "nostr_enterAddress": "Enter your Nostr address",
+ "nostr_enterAddressDesc": "Minibits uses Nostr address (nip05) as a sharable contact to send and receive ecash.",
+ "nostr_invalidAddressFormat": "Invalid NOSTR address, please check that it follows name@domain.com format",
+ "nostr_lastStandDialog_cancel": "Cancel",
+ "nostr_lastStandDialog_complete": "Profile change is complete.",
+ "nostr_lastStandDialog_confirm": "Apply Change",
+ "nostr_lastStandDialog_desc": "Using your own Nostr address will disable Lightning address features unique to minibits.cash address.",
+ "nostr_lastStandDialog_readyDesc": "Wallet needs to restart to apply this change.",
+ "nostr_lastStandDialog_readyTitle": "Profile change is ready.",
+ "nostr_lastStandDialog_title": "Consider before change",
+ "nostr_minibitsNameKeyReuseError": "%{domain} names and keys can't be used with multiple wallets.",
+ "nostr_missingRelaysError": "Missing Nostr relays.",
+ "nostr_pasteError": "Copy your NOSTR address first, then paste.",
+ "nostr_profileRelayMismatchedIdentifierError": "Profile from the relay does not match the given nip05 identifier",
+ "nostr_relaysTitle": "Nostr relays",
+ "nostr_removePub": "Remove your public key",
+ "nostr_removePubSubText": "Remove your npub key and stop loading public contacts.",
+ "nostr_setPublicKey": "Set your public key",
+ "nostr_setPublicKeySubText": "Add or change your NOSTR social network public key (npub).",
+ "nostr_setRelay": "Set relay",
+ "nostr_setRelaySubText": "Add or change your own relay if your profile and follows are not hosted on the default relays.",
+ "nostr_tip": "Tip the people you follow",
+ "nostr_tipSubText": "Add your Nostr social network public key (npub) and tip or donate to your favourite people and projects directly from the minibits wallet.",
+ "nostr_useOwnProfile_desc": "Import your own Nostr address and keys. Your wallet will stop communicating with minibits.cash Nostr and LNURL address servers, disabling Lightning address features for receiving zaps and payments. Only for hardcore ecash-ers!",
+ "nostr_useOwnProfile_title": "Use own Nostr profile",
"nsecEnterPrivateKey": "Enter your private key",
"nsecEnterPrivateKeyDesc": "Minibits needs your private key in nsec format in order to decrypt messages containing incoming payments. Your key will be stored in your device secure key vault.",
"nsecMissingProfileError": "Missing profile to update",
"nsecPasteError": "Copy your nsec key first, then paste.",
"nsecPrivatePublicKeyMismatchError": "Provided private key does not match your new profile public key.",
"numberOfBackedupProofs": "Number of stored proofs",
+ "nwcScreen_addConnection": "Add connection",
+ "nwcScreen_appNamePlaceholder": "My NWC application",
+ "nwcScreen_connectionExists": "Connection with this name already exists.",
+ "nwcScreen_createNwcConnection": "Create NWC connection",
+ "nwcScreen_dailyLimit": "Daily limit %{limit} %{currency}",
+ "nwcScreen_dailyLimitHint": "Set maximal daily limit to spend",
+ "nwcScreen_dailyLimitPlaceholder": "Enter daily limit in SAT",
+ "nwcScreen_limitMustBePositive": "Daily limit must be above zero",
+ "nwcScreen_missingNameOrLimit": "Insert name or daily limit",
+ "nwcScreen_nameConnectionHint": "Name your connection by the app you will use it with",
+ "nwcScreen_nwcDescription": "NWC lets you control your wallet from another application, such as your favourite Nostr app. Allow access only to the apps you trust. Your device must have push notifications enabled and stay online.",
+ "nwcScreen_nwcSummary": "NWC lets you control your wallet from another application, such as your favourite Nostr app.",
+ "nwcScreen_pushNotificationWarning": "Your device can not receive background push messages. This is essential to recieve NWC commands. As a fallback, Minibits subscribed to Nostr relays to receive the commands. However, this will stop working when app is in the background or off.",
+ "nwcScreen_remainingLimit": "Remaining %{remaining} %{currency}",
+ "nwcScreen_removeConnection": "Remove connection",
+ "nwcScreen_satCurrency": "SAT",
+ "nwcScreen_shareDescription": "Scan or copy this connection string to another application to allow it to connect to your wallet. Use only with apps you trust.",
+ "nwcScreen_shareNwcConnection": "Share NWC connection",
"onDeviceInfo": "On-device information",
"pasteEcashTokenDesc": "Ecash token you want to receive.",
- "payCommon": {
- "amountToPayLabel": "Amount to pay",
- "amountZeroOrNegative": "Amount should be positive number.",
- "completed": "Payment completed",
- "failed": "Payment failed",
- "insufficientFunds": "There are not enough funds to send this amount.",
- "isPending": "Payment is pending",
- "maximumPay": "Maximum amount to pay is %{amount} %{currency}.",
- "minimumWithdraw": "Minimal withdraw amount is %{amount} %{currency}.",
- "minimumPay": "Minimal payment amount is %{amount} %{currency}.",
- "pay": "Pay",
- "payFrom": "Pay from",
- "payFromWallet": "Pay from wallet",
- "payMe": "Pay me",
- "payNow": "Pay now",
- "payToAddress": "Pay to this address",
- "payWithLightning": "Pay with Lightning",
- "receive": "Receive",
- "receiveEcash": "Receive ecash",
- "receiveInPerson": "Receive in person",
- "receiveOffline": "Receive offline",
- "requestPayment": "Request payment",
- "send": "Send",
- "withdraw": "Withdraw"
-
- },
+ "payCommon_amountToPayLabel": "Amount to pay",
+ "payCommon_amountZeroOrNegative": "Amount should be positive number.",
+ "payCommon_completed": "Payment completed",
+ "payCommon_failed": "Payment failed",
+ "payCommon_insufficientFunds": "There are not enough funds to send this amount.",
+ "payCommon_isPending": "Payment is pending",
+ "payCommon_maximumPay": "Maximum amount to pay is %{amount} %{currency}.",
+ "payCommon_minimumPay": "Minimal payment amount is %{amount} %{currency}.",
+ "payCommon_minimumWithdraw": "Minimal withdraw amount is %{amount} %{currency}.",
+ "payCommon_pay": "Pay",
+ "payCommon_payFrom": "Pay from",
+ "payCommon_payFromWallet": "Pay from wallet",
+ "payCommon_payMe": "Pay me",
+ "payCommon_payNow": "Pay now",
+ "payCommon_payToAddress": "Pay to this address",
+ "payCommon_payWithLightning": "Pay with Lightning",
+ "payCommon_receive": "Receive",
+ "payCommon_receiveEcash": "Receive ecash",
+ "payCommon_receiveInPerson": "Receive in person",
+ "payCommon_receiveOffline": "Receive offline",
+ "payCommon_requestPayment": "Request payment",
+ "payCommon_send": "Send",
+ "payCommon_withdraw": "Withdraw",
"payerMemo": "Memo for the payer",
"payWithLightningDesc": "Enter or paste Lightning address, invoice or LNURL pay code you want to pay to.",
"pictureRetrieveFail": "Could not retrieve pictures from the server, try again later.",
- "privacyScreen": {
- "logger": "Enable logging",
- "loggerDescription": "Log anonymous error information in order to identify and fix wallet bugs during beta testing. Switch off for best privacy.",
- "torDaemon": "Use Tor network",
- "torDaemonDescription": "Allow connections with mints through Tor .onion addresses.",
- "torStatus": "Tor status"
- },
+ "placeholderNpub": "npub...",
+ "placeholderRelay": "wss://...",
+ "privacyScreen_logger": "Enable logging",
+ "privacyScreen_loggerDescription": "Log anonymous error information in order to identify and fix wallet bugs during beta testing. Switch off for best privacy.",
+ "privacyScreen_title": "Privacy",
+ "privacyScreen_torDaemon": "Use Tor network",
+ "privacyScreen_torDaemonDescription": "Allow connections with mints through Tor .onion addresses.",
+ "privacyScreen_torStatus": "Tor status",
"privateKey": "Private key",
"privateNotePlaceholder": "Your private note",
"profileMissingAddressError": "Missing address",
"profileMissingNostrAddress": "This profile does not have a Nostr address.",
- "profileOnboarding": {
- "desc": "Your minibits.cash wallet address allows you to receive encrypted ecash over Nostr. Simultaneously, it serves as your Lightning address, enabling you to receive payments from any Lightning wallet or zaps on the Nostr social network.",
- "minibitsDesc": "Share your wallet address to receive encrypted ecash over Nostr. This also serves as your Lightning address, enabling you to receive payments from any Lightning wallet or zaps on the Nostr social network.",
- "minibitsTitle": "Your Minibits wallet address",
- "ownAddrDesc": "You are using your own Nostr address to send and receive ecash. Please note that this setup does not allow you to receive Nostr zaps or Lightning payments to this address.",
- "ownAddrTitle": "Your own wallet address",
- "title": "Create wallet address"
- },
+ "profileOnboarding_desc": "Your minibits.cash wallet address allows you to receive encrypted ecash over Nostr. Simultaneously, it serves as your Lightning address, enabling you to receive payments from any Lightning wallet or zaps on the Nostr social network.",
+ "profileOnboarding_minibitsDesc": "Share your wallet address to receive encrypted ecash over Nostr. This also serves as your Lightning address, enabling you to receive payments from any Lightning wallet or zaps on the Nostr social network.",
+ "profileOnboarding_minibitsTitle": "Your Minibits wallet address",
+ "profileOnboarding_ownAddrDesc": "You are using your own Nostr address to send and receive ecash. Please note that this setup does not allow you to receive Nostr zaps or Lightning payments to this address.",
+ "profileOnboarding_ownAddrTitle": "Your own wallet address",
+ "profileOnboarding_title": "Create wallet address",
"profilePublicKeyMismatchError": "Profile from relays public key differs from yor wallet pubkey. Reset this profile in Privacy settings and import again with new keys.",
- "profileScreen": {
- "changeAvatar": "Change picture",
- "changeAvatarSubtext": "Select one from randomly generated pictures.",
- "changeWalletaddress": "Change wallet address",
- "changeWalletaddressSubtext": "Change unique wallet address. Select one of randomly generated or choose your own."
- },
+ "profileScreen_batchReceive": "Batch receive",
+ "profileScreen_batchReceiveDesc": "Recommended for heavy zap collectors. If there are more payments or zaps received to your lightning address, batch them into a single one.",
+ "profileScreen_changeAvatar": "Change picture",
+ "profileScreen_changeAvatarSubtext": "Select one from randomly generated pictures.",
+ "profileScreen_changeWalletaddress": "Change wallet address",
+ "profileScreen_changeWalletaddressSubtext": "Change unique wallet address. Select one of randomly generated or choose your own.",
"profileToRecoverDesc": "This is the wallet address linked to your seed. If you continue, your wallet profile will reset to above seed and address.",
"pushNotifications": "Push notifications",
- "qr": {
- "fail": "Could not display QR code, use option to copy or send the token to the payee wallet address."
- },
+ "qr_fail": "Could not display QR code, use option to copy or send the token to the payee wallet address.",
+ "qrCodeAnimateButton": "Animate",
+ "qrCodeNewFormatButton": "New",
+ "qrCodeOldFormatButton": "Old",
+ "qrCodeStaticButton": "Static",
+ "readyToDonateMore": "Ready to donate more?",
"receiverMemo": "Memo for the receiver",
- "receiveScreen": {
- "memoFromSender": "Memo from sender",
- "newMintsAdded": {
- "one": "%{count} mint has been added to your wallet",
- "other": "%{count} mints have been added to your wallet"
- },
- "pasteoReceiveDescription": "Paste ecash token to receive it into your wallet.",
- "pasteToReceive": "Paste",
- "received": "Amount received",
- "scanToReceive": "Scan or paste to receive",
- "scanToReceiveDescription": "Scan or paste ecash token or LNURL withdraw link to receive into your wallet.",
- "scanWithdrawalLink": "Scan withdrawal link",
- "sharePaymentRequest": "Send payment request",
- "sharePaymentRequestDescription": "Send payment request to one of your contacts, so that the payer can pay you exact amount.",
- "showOrShareInvoice": "Share lightning invoice",
- "showOrShareInvoiceDescription": "Present or share lightning invoice for an amount you want to receive.",
- "status": "Status",
- "title": "Receive",
- "toReceive": "Amount to receive",
- "lockedToWalletPK": "Locked to your keys",
- "lockedToUnknownPK": "Can not unlock"
- },
+ "receiveScreen_lockedToUnknownPK": "Can not unlock",
+ "receiveScreen_lockedToWalletPK": "Locked to your keys",
+ "receiveScreen_memoFromSender": "Memo from sender",
+ "receiveScreen_newMintsAdded_one": "%{count} mint has been added to your wallet",
+ "receiveScreen_newMintsAdded_other": "%{count} mints have been added to your wallet",
+ "receiveScreen_pasteoReceiveDescription": "Paste ecash token to receive it into your wallet.",
+ "receiveScreen_pasteToReceive": "Paste",
+ "receiveScreen_received": "Amount received",
+ "receiveScreen_scanToReceive": "Scan or paste to receive",
+ "receiveScreen_scanToReceiveDescription": "Scan or paste ecash token or LNURL withdraw link to receive into your wallet.",
+ "receiveScreen_scanWithdrawalLink": "Scan withdrawal link",
+ "receiveScreen_sharePaymentRequest": "Send payment request",
+ "receiveScreen_sharePaymentRequestDescription": "Send payment request to one of your contacts, so that the payer can pay you exact amount.",
+ "receiveScreen_showOrShareInvoice": "Share lightning invoice",
+ "receiveScreen_showOrShareInvoiceDescription": "Present or share lightning invoice for an amount you want to receive.",
+ "receiveScreen_status": "Status",
+ "receiveScreen_title": "Receive",
+ "receiveScreen_toReceive": "Amount to receive",
"recoverToWallet": "Recover to wallet",
- "recovery": {
- "completeCTA": "Complete recovery",
- "completed": "Recovery completed",
- "completing": "Completing recovery...",
- "failed": "Recovery failed",
- "findAddressCTA": "Find wallet address",
- "foundAddrParam": "Found %{addr}",
- "foundPendingProofsAmount": "Found %{amount} pending proofs...",
- "foundProofsAmount": "Found %{amount} proofs...",
- "intervalParam": "Recovery interval %{startIndex} - %{endIndex} ยท ",
- "keysetID": "Keyset ID %{id} (%{unit})",
- "missingMnemonicSeedProfileError": "Missing seed phrase or seed or profile to recover.",
- "mnemonicCollision": "Seed phrase exists",
- "mnemonicCollisionDesc": "Your wallet already has another seed phrase in its secure storage. Recovery process works only with freshly installed wallet to avoid loss of your funds.",
- "noKeysetSelected": "Please select keyset.",
- "noMintSelected": "Please select the mint.",
- "noWalletForSeedError": "Could not find wallet address linked to your seed on the server.",
- "ownKeysImportAgain": "You used wallet address %{addr} with your own keys, import it again.",
- "recoveredResult": "%{formattedCurrency} %{code} were recovered into your wallet.",
- "recoveringAddress": "Recovering wallet address...",
- "restoringFromParam": "Restoring from %{hostname}...",
- "resultErrors": "Recovery ended with errors.",
- "resultExpired": "Nothing has been found in this recovery interval.",
- "resultSpent": "Good news is that already spent Ecash has been found. Continue with next recovery interval.",
- "seedFromCurrentDeviceError": "Can not use seed from this device.",
- "selectAnotherKeyset": " ยท Select another",
- "selectKeyset": "Select keyset to be used for recovery",
- "selectMintFrom": "Select mint to recover from.",
- "setManually": "Set manually",
- "spentProofsAmount": "%{amount} proofs were already spent...",
- "startIndexDesc": "Use to increase starting index of recovery interval e.g. in case of repeated recovery. You need to know at what index you completed your previous recovery or you'll miss ecash to recover.",
- "starting": "Starting recovery...",
- "success": "Recovery success!"
- },
+ "recovery_addressLinkedToSeed": "This is the wallet address linked to the provided seed.",
+ "recovery_completeCTA": "Complete recovery",
+ "recovery_completed": "Recovery completed",
+ "recovery_completing": "Completing recovery...",
+ "recovery_doNotLoseEcashDesc": "Your current wallet seed phrase will NOT be changed. Keep it in a safe place!",
+ "recovery_doNotLoseEcashTitle": "Do not lose your ecash!",
+ "recovery_failed": "Recovery failed",
+ "recovery_findAddressCTA": "Find wallet address",
+ "recovery_foundAddrParam": "Found %{addr}",
+ "recovery_foundPendingProofsAmount": "Found %{amount} pending proofs...",
+ "recovery_foundProofsAmount": "Found %{amount} proofs...",
+ "recovery_intervalParam": "Recovery interval %{startIndex} - %{endIndex} ยท ",
+ "recovery_keysetID": "Keyset ID %{id} (%{unit})",
+ "recovery_missingMnemonicSeedProfileError": "Missing seed phrase or seed or profile to recover.",
+ "recovery_mnemonicCollision": "Seed phrase exists",
+ "recovery_mnemonicCollisionDesc": "Your wallet already has another seed phrase in its secure storage. Recovery process works only with freshly installed wallet to avoid loss of your funds.",
+ "recovery_noKeysetSelected": "Please select keyset.",
+ "recovery_noMintSelected": "Please select the mint.",
+ "recovery_noWalletForSeedError": "Could not find wallet address linked to your seed on the server.",
+ "recovery_ownKeysImportAgain": "You used wallet address %{addr} with your own keys, import it again.",
+ "recovery_recoverAddress": "Recover address",
+ "recovery_recoveredResult": "%{formattedCurrency} %{code} were recovered into your wallet.",
+ "recovery_recoveringAddress": "Recovering wallet address...",
+ "recovery_restoringFromParam": "Restoring from %{hostname}...",
+ "recovery_resultErrors": "Recovery ended with errors.",
+ "recovery_resultExpired": "Nothing has been found in this recovery interval.",
+ "recovery_resultSpent": "Good news is that already spent Ecash has been found. Continue with next recovery interval.",
+ "recovery_seedFromCurrentDeviceError": "Can not use seed from this device.",
+ "recovery_selectAnotherKeyset": " ยท Select another",
+ "recovery_selectKeyset": "Select keyset to be used for recovery",
+ "recovery_selectMintFrom": "Select mint to recover from.",
+ "recovery_setManually": "Set manually",
+ "recovery_spentProofsAmount": "%{amount} proofs were already spent...",
+ "recovery_startIndexDesc": "Use to increase starting index of recovery interval e.g. in case of repeated recovery. You need to know at what index you completed your previous recovery or you'll miss ecash to recover.",
+ "recovery_starting": "Starting recovery...",
+ "recovery_success": "Recovery success!",
+ "recoveryConfirmButton": "Confirm",
+ "recoveryEnterMeltQuote": "Enter melt quote",
+ "recoveryEnterMintQuote": "Enter mint quote",
+ "recoveryExperimentalTools": "Experimental tools",
"recoveryFromMints": "Recovery from mints",
"recoveryFromMintsDesc": "Identify mints to recover your ecash from and add them to the list.",
+ "recoveryIncreaseButton": "Increase",
"recoveryIndexesIncSuccess": "Recovery indexes increased by %{indCount}",
"recoveryInsertMnemonic": "Insert seed phrase",
"recoveryInsertMnemonicDesc": "Paste or rewrite 12 word phrase to recover your ecash balance and wallet address on this device. Separate words by blank spaces.",
"recoveryInsertMnemonicDescAddrOnly": "Paste or rewrite 12 word phrase to recover your wallet address on this device. Separate words by blank spaces.",
"recoveryInsertMnemonicDescImportBackup": "Paste or rewrite 12 word phrase to recover your wallet address on this device. Separate words by blank spaces.",
+ "recoveryInvalidMeltQuote": "Invalid melt quote",
+ "recoveryInvalidMintQuote": "Invalid mint quote",
"recoveryInvalidMnemonicError": "Invalid seed phrase. Provide 12 word sequence separated by blank spaces.",
- "exportBackup": "Export backup",
+ "recoveryMeltQuoteDesc": "Retry to receive back unspent ecash from a completed Lightning payment.",
+ "recoveryMeltQuoteTitle": "Recover melt quote change",
+ "recoveryMeltSuccessMessage": "Successfully recovered %{amount} SAT from the provided melt quote.",
+ "recoveryMintEcashButton": "Mint ecash",
+ "recoveryMintQuoteDesc": "Retry to mint ecash from an already paid mint quote.",
+ "recoveryMintQuoteTitle": "Recover mint quote",
+ "recoveryMintSuccessMessage": "Successfully minted %{amount} SAT from the provided mint quote.",
+ "recoveryOpenSettingsButton": "Open settings",
+ "recoveryOptionsFromBackup": "Recover from backup",
+ "recoveryOptionsFromBackupDescription": "Import backup exported from another Minibits wallet. Easy option if you move to a new device.",
+ "recoveryOptionsFromSeed": "Recover from seed",
+ "recoveryOptionsFromSeedDescription": "Use 12 word seed phrase to re-create your lost ecash with assistance of mints. Use in case of device loss.",
+ "recoveryOptionsTitle": "Recovery options",
+ "recoveryPermissionNeededDesc": "Minibits needs a permission to display notification while this task will be running.",
+ "recoveryPermissionNeededTitle": "Permission needed",
+ "recoveryRecoverChangeButton": "Recover change",
+ "recoveryRemoveButton": "Remove",
+ "recoveryScreen_confirm": "Confirm",
+ "recoveryScreen_experimentalTools": "Experimental tools",
+ "recoveryScreen_increase": "Increase",
+ "recoveryScreen_recoverMeltQuoteChange": "Recover melt quote change",
+ "recoveryScreen_recoverMeltQuoteChangeDesc": "Retry to receive back unspent ecash from a completed Lightning payment.",
+ "recoveryScreen_recoverMintQuote": "Recover mint quote",
+ "recoveryScreen_recoverMintQuoteDesc": "Retry to mint ecash from an already paid mint quote.",
+ "recoveryScreen_remove": "Remove",
+ "recoveryScreen_selectMintToRecoverFrom": "Select mint to recover from",
+ "recoveryScreen_start": "Start",
+ "recoverySelectMintTitle": "Select mint to recover from",
+ "recoveryStartButton": "Start",
+ "recoverySuccessTitle": "Success!",
"relayExists": "Relay already exists",
"relays": "Relays",
+ "relaysSetYourRelay": "Set your own relay",
"relayurlPasteError": "Copy your relay URL key before pasting",
"removeRelay": "Remove relay",
"removingMintLostBalanceWarning": "Your wallet has non-zero balance with this mint. If removed, your ecash will be lost!",
@@ -382,55 +445,73 @@
"resetCompletedDetail": "Reset completed. %{transCount} recent transactions were loaded from database.",
"resetOwnProfile": "Reset own profile",
"resetOwnProfileDesc": "Stop using your own NOSTR address and re-create Minibits wallet profile.",
- "scanReceiveExtractFail": "Could not extract ecash token nor LNURL withdraw link to receive.",
- "scanScreen": {
- "onPasteEmptyClipboard": "First copy ecash token, invoice, LNURL link or lightning address. Then paste."
- },
- "securityScreen": {
- "biometry": "Biometric authentication",
- "biometryAvailable": "Biometric authentication is now required for Minibits to start.",
- "biometryNone": "You have not setup biometric authentication or your device does not support it.",
- "biometricAuth": "Biometric authentication",
- "biometricAuthDescription": "Require biometric authentication for Minibits to start."
- },
- "sendScreen": {
- "pasteToSend": "Paste",
- "pasteToSendDescription": "Paste lightning invoice from clipboard to pay it from your wallet.",
- "scanToPay": "Scan to pay",
- "scanToPayDescription": "Scan Lightning invoice, LNURL pay code or Lightning address to pay.",
- "sendToContact": "Send to contact",
- "sendToContactDescription": "Send your ecash to one of your contacts stored in your contact list.",
- "showOrShareToken": "Share ecash",
- "showOrShareTokenDescription": "Present or share ecash token for an amount you want to send.",
- "title": "Send",
- "memo": "Memo for recipient"
- },
"saveContactPrivate": "Save as private contact",
"saveContactPrivateDesc": "Save %{nip05} to your Private contacts so you can pay faster",
+ "scanReceiveExtractFail": "Could not extract ecash token nor LNURL withdraw link to receive.",
+ "scanScreen_onPasteEmptyClipboard": "First copy ecash token, invoice, LNURL link or lightning address. Then paste.",
+ "securityScreen_biometricAuth": "Biometric authentication",
+ "securityScreen_biometricAuthDescription": "Require biometric authentication for Minibits to start.",
+ "securityScreen_biometry": "Biometric authentication",
+ "securityScreen_biometryAvailable": "Biometric authentication is now required for Minibits to start.",
+ "securityScreen_biometryNone": "You have not setup biometric authentication or your device does not support it.",
+ "securityScreenTitle": "Security",
+ "seedRecoveryMints": "Mints",
+ "seedRecoveryScreenTitle": "Wallet recovery",
+ "seedRecoveryStep2": "2",
+ "sendCreateToken": "Create token",
+ "sendLock": "Lock",
+ "sendLockEcash": "Lock ecash",
+ "sendLockEcashDesc": "Lock ecash token to one of your contacts or to a public key. Only the receiver will be able to unlock it.",
+ "sendLocked": "Locked",
+ "sendLockFor": "Lock for",
+ "sendOfflineExactDenoms": "You can only send exact ecash denominations while you are offline.",
+ "sendScreen_memo": "Memo for recipient",
+ "sendScreen_pasteToSend": "Paste",
+ "sendScreen_pasteToSendDescription": "Paste lightning invoice from clipboard to pay it from your wallet.",
+ "sendScreen_scanToPay": "Scan to pay",
+ "sendScreen_scanToPayDescription": "Scan Lightning invoice, LNURL pay code or Lightning address to pay.",
+ "sendScreen_sendToContact": "Send to contact",
+ "sendScreen_sendToContactDescription": "Send your ecash to one of your contacts stored in your contact list.",
+ "sendScreen_showOrShareToken": "Share ecash",
+ "sendScreen_showOrShareTokenDescription": "Present or share ecash token for an amount you want to send.",
+ "sendScreen_title": "Send",
+ "sendSelectEcashToSend": "Select ecash to send",
+ "sendToContact": "Send to contact",
"setStartIndex": "Set start index",
- "settingsScreen": {
- "backupRecovery": "Backup and recovery",
- "devOptions": "Developer options",
- "go": "Let's go!",
- "mintsCount": {
- "one": "%{count} mint",
- "other": "%{count} mints"
- },
- "preferredUnit": "Preferred unit",
- "exchangeCurrency": "Balance conversion",
- "theme": "Theme",
- "privacy": "Privacy",
- "security": "Security",
- "title": "Settings",
- "update": "Update manager"
+ "settingsScreen_backup": "Backup",
+ "settingsScreen_backupRecovery": "Backup and recovery",
+ "settingsScreen_currencyNone": "None",
+ "settingsScreen_devOptions": "Developer options",
+ "settingsScreen_doNotLoadRates": "Do not load exchange rates",
+ "settingsScreen_exchangeCurrency": "Balance conversion",
+ "settingsScreen_go": "Let's go!",
+ "settingsScreen_mintsCount": {
+ "one": "%{count} mint",
+ "other": "%{count} mints"
},
- "share": {
- "cancelled": "Sharing cancelled",
- "contactAddress": "Share contact address"
+ "settingsScreen_nwcSubtext": {
+ "one": "%{count} allowed app",
+ "other": "%{count} allowed apps"
},
+ "settingsScreen_nwcTitle": "Nostr Wallet Connect",
+ "settingsScreen_preferredUnit": "Preferred unit",
+ "settingsScreen_privacy": "Privacy",
+ "settingsScreen_recovery": "Recovery",
+ "settingsScreen_relaysCount": {
+ "one": "%{count} relay",
+ "other": "%{count} relays"
+ },
+ "settingsScreen_restartTheme": "Restart the wallet to apply the new theme.",
+ "settingsScreen_security": "Security",
+ "settingsScreen_theme": "Theme",
+ "settingsScreen_title": "Settings",
+ "settingsScreen_update": "Update manager",
+ "settingsScreen_updateAvailable": "1 update",
+ "share_cancelled": "Sharing cancelled",
+ "share_contactAddress": "Share contact address",
"shareWalletAddress": "Share wallet address",
- "shareWalletPubkey": "Share wallet public key (HEX)",
"shareWalletNpub": "Share wallet public key (NPUB)",
+ "shareWalletPubkey": "Share wallet public key (HEX)",
"showErrors": "Show errors",
"showOnboarding": "Show onboarding again",
"showOnboardingDesc": "Go through onboarding screens again next time you restart Minibits.",
@@ -438,217 +519,189 @@
"syncCompleted": "Sync completed.",
"syncOwnProfile": "Sync own profile",
"syncOwnProfileDesc": "Synchronize your profile name and picture with up to date information from Nostr relays.",
- "tabNavigator": {
- "contactsLabel": "Contacts",
- "settingsLabel": "Settings",
- "walletLabel": "Wallet",
- "transactionsLabel": "Transactions"
- },
- "tokenReceiveScreen": {
- "onPasteEmptyClipboard": "First copy ecash token, then paste.",
- "topupWithLightning": "Topup with Lightning"
- },
- "topup": {
- "failed": "Topup failed",
- "mint": "Topup mint",
- "missingMintAddFirst": "Please add the mint first",
- "missingMintAddFirstDesc": "There is no mint connected to your wallet eligible for receiving ecash.",
- "nostrDMreceived": "nostr:%{npub} sent you Lightning invoice for %{amount} %{currency} from Minibits wallet!",
- "relayMissingSentEvent": "Relay could not confirm that the message has been published.",
- "sendToNip": "Send to %{sendTonip05}",
- "to": "Topup to",
- "withLightning": "Topup with Lightning",
- "sendToContact": "Send to contact",
- "withdrawalAvailable": "Withdrawal is available",
- "withdrawAvailableDesc": "Up to %{amount} %{code} are available to withdraw",
- "invoiceCreatedParam": "Invoice for %{amount} %{code} created",
- "withdraw": "Withdraw",
- "sendRequest": "Send request",
- "invoiceCreatedDescParam": "Your selected mint balance to top up is %{mintUrl}"
- },
- "cashuPaymentRequest": {
- "to": "Receive to",
- "create": "Create request"
- },
- "tranDetailScreen": {
- "amount": "Amount",
- "paymentId": "Payment ID",
- "balanceAfter": "Balance after this transaction",
- "claim": "Claim",
- "createdAt": "Created at",
- "expiresAt": "Expires at",
- "id": "Transaction ID",
- "invoice": "Lightning invoice to pay",
- "isOffline": "Redeem online",
- "lightningFee": "Lightning network fee",
- "fee": "Fee",
- "memoFromInvoice": "Memo from invoice",
- "memoFromSender": "Memo from sender",
- "receiveOfflineComplete": "Redeem to wallet",
- "revert": "Revert",
- "sentFrom": "Sent from",
- "sentTo": "Sent to",
- "eventUrl": "Zapped note",
- "status": "Status",
- "topupTo": "Topup to",
- "trasferredTo": "Paid to",
- "type": "Type",
- "addYourNote": "Add your note",
- "addTags": "Add tags",
- "backedUpEcash": "Backed up ecash",
- "successRetrieveEcashAfterRetry": "Ecash has been successfully received after retry. New transaction has been created.",
- "retryToReceive": "Retry to receive",
- "auditTrail": "Audit trail",
- "modalSuccess": "Success!",
- "pendingToken": "Pending token",
- "retryToComplete": "Retry to complete",
- "invoiceToPay": "Invoice to pay",
- "invoiceNotPaid": "Invoice not paid",
- "invoiceExpired": "Invoice expired",
- "topupError": "Topup error",
- "proof": "Proof of payment"
- },
- "transactionCommon": {
- "feePaid": "Paid fee",
- "from": "From %{sender}",
- "paidFrom": "Paid from",
- "paidTo": "Paid to %{receiver}",
- "payTo": "Pay to %{receiver}",
- "payNow": "Pay now",
- "receivedFrom": "Received from %{sender}",
- "receivedTo": "Received to",
- "receiveFailed": "Receive failed",
- "redeemOnline": "Redeem online",
- "reverted": "Transaction reverted",
- "sentTo": "Sent to %{receiver}",
- "status": {
- "blocked": "Blocked",
- "completedFee": "Completed %{fee}",
- "completed": "Completed",
- "draft": "Draft",
- "error": "Error",
- "expired": "Expired",
- "pending": "Pending",
- "prepared": "Prepared",
- "reverted": "Reverted",
- "spent": "Spent",
- "unspent": "Unspent",
- "recovered": "Recovered"
- },
- "tapToRedeem": "Tap to redeem",
- "unknown": "Unknown transaction",
- "youPaid": "You paid",
- "youReceived": "You received",
- "youSent": "You sent"
- },
- "transferScreen": {
- "insufficientFunds": "There is not enough balance in %{currency} to pay the invoice amount and expected fees: %{amount} %{currency}",
- "LUD18unsupported": "Minibits does not yet support entering of payer identity data (LUD18).",
- "noMintWithBalance": "There is no mint with %{unit} balance from which payment can be made.",
- "selectMintFrom": "Select mint balance to transfer from",
- "requestInvoice": "Continue"
- },
- "updateScreen": {
- "gotoPlayStore": "Visit Play Store",
- "nativeUpdateAvailableDesc": "There is a new native version of Minibits Wallet in the Google Play Store.",
- "updateAvailable": "Update is available",
- "updateAvailableDesc": "There is a new Over-the-Air update of Minibits Wallet ready to download and install.",
- "updateNew": "What's new?",
- "updateNotAvailable": "Nothing to update",
- "updateNotAvailableDesc": "Good, you are running the latest version of the app.",
- "updateNow": "Update and restart",
- "updateSize": "Download size",
- "downloading": "Downloading update...",
- "installing": "Installing update...",
- "updateManagerTitle": "Update manager",
- "defaultUpdateDesc": "UX and performance improvements",
- "apkOnGithub": "APK on Github"
- },
- "userErrorMissingLightningData": "Missing Lightning invoice, paycode or address.",
+ "tabNavigator_contactsLabel": "Contacts",
+ "tabNavigator_settingsLabel": "Settings",
+ "tabNavigator_transactionsLabel": "Transactions",
+ "tabNavigator_walletLabel": "Wallet",
+ "tokenReceiveScreen_onPasteEmptyClipboard": "First copy ecash token, then paste.",
+ "tokenReceiveScreen_scan": "Scan",
+ "tokenReceiveScreen_topupWithLightning": "Topup with Lightning",
+ "topup_failed": "Topup failed",
+ "topup_invoiceCreatedDescParam": "Your selected mint balance to top up is %{mintUrl}",
+ "topup_invoiceCreatedParam": "Invoice for %{amount} %{code} created",
+ "topup_mint": "Topup mint",
+ "topup_missingMintAddFirst": "Please add the mint first",
+ "topup_missingMintAddFirstDesc": "There is no mint connected to your wallet eligible for receiving ecash.",
+ "topup_nostrDMreceived": "nostr:%{npub} sent you Lightning invoice for %{amount} %{currency} from Minibits wallet!",
+ "topup_relayMissingSentEvent": "Relay could not confirm that the message has been published.",
+ "topup_sendRequest": "Send request",
+ "topup_sendToContact": "Send to contact",
+ "topup_sendToNip": "Send to %{sendTonip05}",
+ "topup_to": "Topup to",
+ "topup_withdraw": "Withdraw",
+ "topup_withdrawalAvailable": "Withdrawal is available",
+ "topup_withdrawAvailableDesc": "Up to %{amount} %{code} are available to withdraw",
+ "topup_withLightning": "Topup with Lightning",
+ "topupScreen_done": "Done",
+ "topupScreen_invoiceToPay": "Invoice to pay",
+ "tranDetailScreen_addTags": "Add tags",
+ "tranDetailScreen_addYourNote": "Add your note",
+ "tranDetailScreen_amount": "Amount",
+ "tranDetailScreen_auditTrail": "Audit trail",
+ "tranDetailScreen_auditTrailDesc": "Detailed record of your transaction",
+ "tranDetailScreen_backedUpEcash": "Backed up ecash",
+ "tranDetailScreen_balanceAfter": "Balance after this transaction",
+ "tranDetailScreen_claim": "Claim",
+ "tranDetailScreen_createdAt": "Created at",
+ "tranDetailScreen_eventUrl": "Zapped note",
+ "tranDetailScreen_expiresAt": "Expires at",
+ "tranDetailScreen_fee": "Fee",
+ "tranDetailScreen_id": "Transaction ID",
+ "tranDetailScreen_inputs": "Inputs",
+ "tranDetailScreen_invoice": "Lightning invoice to pay",
+ "tranDetailScreen_invoiceExpired": "Invoice expired",
+ "tranDetailScreen_invoiceNotPaid": "Invoice not paid",
+ "tranDetailScreen_invoiceToPay": "Invoice to pay",
+ "tranDetailScreen_isOffline": "Redeem online",
+ "tranDetailScreen_lightningFee": "Lightning network fee",
+ "tranDetailScreen_memoFromInvoice": "Memo from invoice",
+ "tranDetailScreen_memoFromSender": "Memo from sender",
+ "tranDetailScreen_modalSuccess": "Success!",
+ "tranDetailScreen_outputs": "Outputs",
+ "tranDetailScreen_paymentId": "Payment ID",
+ "tranDetailScreen_pendingToken": "Pending token",
+ "tranDetailScreen_proof": "Proof of payment",
+ "tranDetailScreen_receiveOfflineComplete": "Redeem to wallet",
+ "tranDetailScreen_retryToComplete": "Retry to complete",
+ "tranDetailScreen_retryToReceive": "Retry to receive",
+ "tranDetailScreen_revert": "Revert",
+ "tranDetailScreen_sentFrom": "Sent from",
+ "tranDetailScreen_sentTo": "Sent to",
+ "tranDetailScreen_status": "Status",
+ "tranDetailScreen_successRetrieveEcashAfterRetry": "Ecash has been successfully received after retry. New transaction has been created.",
+ "tranDetailScreen_tokenTracking": "Token tracking",
+ "tranDetailScreen_tokenTrackingDesc": "Logged ecash tokens for debugging purposes",
+ "tranDetailScreen_topupError": "Topup error",
+ "tranDetailScreen_topupTo": "Topup to",
+ "tranDetailScreen_trasferredTo": "Paid to",
+ "tranDetailScreen_type": "Type",
+ "tranHistory_deleteErrored": "Delete transactions with errors",
+ "tranHistory_deleteErroredDesc": "This will delete %{count} transactions with errors",
+ "tranHistory_deleteExpired": "Delete expired",
+ "tranHistory_deleteExpiredDesc": "This will delete %{count} expired transactions",
+ "tranHistory_deleteReverted": "Delete reverted",
+ "tranHistory_deleteRevertedDesc": "This will delete %{count} reverted transactions",
+ "tranHistory_listIsComplete": "List is complete",
+ "tranHistory_noTransToShow": "No transactions to show.",
+ "tranHistory_pendingParam": "%{param} pending transactions",
+ "tranHistory_showingPaginationPending": "Showing %{amount} of %{total} pending",
+ "tranHistory_showingPaginationTotal": "Showing %{amount} of %{total} total",
+ "tranHistory_viewMore": "View more",
+ "tranHistoryScreen_title": "History",
+ "transactionCommon_fee": "Fee",
+ "transactionCommon_feePaid": "Paid fee",
+ "transactionCommon_from": "From %{sender}",
+ "transactionCommon_paidFrom": "Paid from",
+ "transactionCommon_paidTo": "Paid to %{receiver}",
+ "transactionCommon_payNow": "Pay now",
+ "transactionCommon_payTo": "Pay to %{receiver}",
+ "transactionCommon_receivedFrom": "Received from %{sender}",
+ "transactionCommon_receivedTo": "Received to",
+ "transactionCommon_receiveFailed": "Receive failed",
+ "transactionCommon_redeemOnline": "Redeem online",
+ "transactionCommon_reverted": "Transaction reverted",
+ "transactionCommon_sentTo": "Sent to %{receiver}",
+ "transactionCommon_status_blocked": "Blocked",
+ "transactionCommon_status_completed": "Completed",
+ "transactionCommon_status_completedFee": "Completed %{fee}",
+ "transactionCommon_status_draft": "Draft",
+ "transactionCommon_status_error": "Error",
+ "transactionCommon_status_expired": "Expired",
+ "transactionCommon_status_pending": "Pending",
+ "transactionCommon_status_prepared": "Prepared",
+ "transactionCommon_status_recovered": "Recovered",
+ "transactionCommon_status_reverted": "Reverted",
+ "transactionCommon_status_spent": "Spent",
+ "transactionCommon_status_unspent": "Unspent",
+ "transactionCommon_tapToRedeem": "Tap to redeem",
+ "transactionCommon_unknown": "Unknown transaction",
+ "transactionCommon_youPaid": "You paid",
+ "transactionCommon_youReceived": "You received",
+ "transactionCommon_youSent": "You sent",
+ "transferScreen_donationSuccessMessage": "Donation for %{donationForName} has been successfully paid and your wallet address has been updated. Thank you!",
+ "transferScreen_insufficientFunds": "There is not enough balance in %{currency} to pay the invoice amount and expected fees: %{amount} %{currency}",
+ "transferScreen_LUD18unsupported": "Minibits does not yet support entering of payer identity data (LUD18).",
+ "transferScreen_noMintWithBalance": "There is no mint with %{unit} balance from which payment can be made.",
+ "transferScreen_requestInvoice": "Continue",
+ "transferScreen_selectMintFrom": "Select mint balance to transfer from",
"unspentOnlyRecoverable": "Only unspent proofs are recoverable.",
+ "updateModal_desc": "Updates provide new functionalities and important bug fixes. View details in the Update manager.",
+ "updateModal_title": "New Minibits version is available",
+ "updateScreen_apkOnGithub": "APK on Github",
+ "updateScreen_couldNotRetrieveUpdate": "Could not retrieve update information",
+ "updateScreen_defaultUpdateDesc": "UX and performance improvements",
+ "updateScreen_downloading": "Downloading update...",
+ "updateScreen_gotoPlayStore": "Visit Play Store",
+ "updateScreen_installing": "Installing update...",
+ "updateScreen_nativeUpdateAvailableDesc": "There is a new native version of Minibits Wallet in the Google Play Store.",
+ "updateScreen_updateAvailable": "Update is available",
+ "updateScreen_updateAvailableDesc": "There is a new Over-the-Air update of Minibits Wallet ready to download and install.",
+ "updateScreen_updateInProgress": "Update is in progress...",
+ "updateScreen_updateManagerTitle": "Update manager",
+ "updateScreen_updateNew": "What's new?",
+ "updateScreen_updateNotAvailable": "Nothing to update",
+ "updateScreen_updateNotAvailableDesc": "Good, you are running the latest version of the app.",
+ "updateScreen_updateNow": "Update and restart",
+ "updateScreen_updateSize": "Download size",
+ "userErrorMissingLightningData": "Missing Lightning invoice, paycode or address.",
+ "wallerScreen_mintButton": "Mint",
"walletAddressRecovery": "Wallet address recovery",
"walletAddressRecoveryDesc": "Use your seed phrase from another device to get your original wallet address on this device. This will not recover balances.",
- "walletScreen": {
- "feeBadge": {
- "final": "+ final fee %{fee} %{code}",
- "upto": "+ fee up to %{fee} %{code}"
- },
- "mintExists": "This mint already exists",
- "paymentSentSuccess": "Payment request has been successfully sent.",
- "sendEcash": "Send ecash",
- "sendEcashDesc": "Share ecash or send it to one of your contacts",
- "payWithLightning": "Pay with Lightning",
- "payWithLightningDesc": "Pay invoice or to a Lightning address",
- "receiveEcash": "Receive Ecash",
- "topupWithLightning": "Topup with Lightning",
- "topupWithLightningDesc": "Create Lightning invoice to topup your balance",
- "receiveEcashDesc": "Paste or scan ecash token",
- "addFirstMint": "Add your first mint",
- "topup": "Topup",
- "pay": "Pay"
- },
+ "walletNameScreen_ownNameTab": "Own name",
+ "walletNameScreen_randomNameTab": "Random name",
+ "walletScreen_addFirstMint": "Add your first mint",
+ "walletScreen_andOtherMints": "and %{count} other",
+ "walletScreen_andOtherMints_plural": "and %{count} others",
+ "walletScreen_feeBadge_final": "+ final fee %{fee} %{code}",
+ "walletScreen_feeBadge_upto": "+ fee up to %{fee} %{code}",
+ "walletScreen_mintExists": "This mint already exists",
+ "walletScreen_pay": "Pay",
+ "walletScreen_paymentSentSuccess": "Payment request has been successfully sent.",
+ "walletScreen_payWithLightning": "Pay with Lightning",
+ "walletScreen_payWithLightningDesc": "Pay invoice or to a Lightning address",
+ "walletScreen_receiveEcash": "Receive Ecash",
+ "walletScreen_receiveEcashDesc": "Paste or scan ecash token",
+ "walletScreen_sendEcash": "Send ecash",
+ "walletScreen_sendEcashDesc": "Share ecash or send it to one of your contacts",
+ "walletScreen_spentToday": "Spent today",
+ "walletScreen_startByFunding": "Start by funding your wallet",
+ "walletScreen_topup": "Topup",
+ "walletScreen_topupWithLightning": "Topup with Lightning",
+ "walletScreen_topupWithLightningDesc": "Create Lightning invoice to topup your balance",
"warning": "Warning",
- "welcomeScreen": {
- "page1": {
- "bullet1": "Minibits follows the Cashu protocol, where mints back ecash with Bitcoin.",
- "bullet2": "Ecash is issued or converted back to Bitcoin instantly via Lightning payments.",
- "bullet3": "Ecash tokens are stored on-device; mints do not maintain ledgers or wallet balances.",
- "final": "No Watson, there's no blockchain.",
- "heading": "Welcome",
- "intro": "Minibits is an ecash and Lightning wallet focused on ease of use and security. Ecash is a digitally signed token issued by custodians known as mints."
- },
- "page2": {
- "bullet1": "Minibits provides a free Lightning address that also allows instant ecash transfers over Nostr.",
- "bullet2": "First-class support for sending and receiving zaps on Nostr, including Nostr Wallet Connect.",
- "bullet3": "Realtime encrypted push notifications and support for ecash issued in currencies other than Bitcoin.",
- "final": "Minibits is free, open-source software. Find us on GitHub for our roadmap and contributions.",
- "heading": "Why Minibits?",
- "intro": "Minibits aims to explore how ecash can help people use Bitcoin by offering frictionless onboarding, low fees, ease of use, and strong privacy."
- },
- "page3": {
- "bullet1": "Mints are custodial by design. Run your own or use them only for research and testing.",
- "bullet2": "Ecash is stored on your device. If lost, ecash is lost unless you safely back up your seed phrase.",
- "bullet3": "Minibits offers its own mint for testing with small amounts. It operates on a best-effort basis with no guarantees.",
- "final": "Now, let's move some ecash!",
- "go": "Let's go!",
- "heading": "Don't forget",
- "intro": "Both the Cashu protocol and the Minibits wallet are experimental. By using them, you accept known and unknown risks."
- },
- "lastPageConfirmButton": "Got it, take me to the wallet",
- "lastPageRecoverLostWalletButton": "Recover lost wallet",
- "generatingWalletSeedStatusMessage": "Creating wallet seed, this takes a while..."
- },
- "contactHasNoLightningAddrUseEcash": "This contact does not have a Lightning address, send ecash instead.",
- "tranHistory": {
- "showingPaginationPending": "Showing %{amount} of %{total} pending",
- "showingPaginationTotal": "Showing %{amount} of %{total} total",
- "pendingParam": "%{param} pending transactions",
- "listIsComplete": "List is complete",
- "viewMore": "View more",
- "noTransToShow": "No transactions to show.",
- "deleteExpired": "Delete expired",
- "deleteExpiredDesc": "This will delete %{count} expired transactions",
- "deleteErrored": "Delete transactions with errors",
- "deleteErroredDesc": "This will delete %{count} transactions with errors",
- "deleteReverted": "Delete reverted",
- "deleteRevertedDesc": "This will delete %{count} reverted transactions"
- },
- "updateModal": {
- "title": "New Minibits version is available",
- "desc": "Updates provide new functionalities and important bug fixes. View details in the Update manager."
- },
- "wallerScreen": {
- "mintButton": "Mint"
- },
- "mintInfo": {
- "emptyValueParam": "No %{param} provided.",
- "loadingNamePlaceholder": "Loading name...",
- "loadingUnitsPlaceholder": "Loading units...",
- "descriptionHeading": "Description",
- "motd": "Important notice",
- "contactsHeading": "Contacts",
- "nutsHeading": "Supported NUTs",
- "mintMeltHeading": "Limits",
- "keyValueInfoCardHeading": "More Info"
- }
+ "welcomeScreen_creatingKeys": "Creating wallet keys...",
+ "welcomeScreen_creatingProfile": "Creating wallet profile...",
+ "welcomeScreen_generatingWalletSeedStatusMessage": "Creating wallet seed, this takes a while...",
+ "welcomeScreen_lastPageConfirmButton": "Got it, take me to the wallet",
+ "welcomeScreen_lastPageRecoverLostWalletButton": "Recover lost wallet",
+ "welcomeScreen_offlineWarning": "Please make sure you are online to set up the new wallet.",
+ "welcomeScreen_page1_bullet1": "Minibits follows the Cashu protocol, where mints back ecash with Bitcoin.",
+ "welcomeScreen_page1_bullet2": "Ecash is issued or converted back to Bitcoin instantly via Lightning payments.",
+ "welcomeScreen_page1_bullet3": "Ecash tokens are stored on-device; mints do not maintain ledgers or wallet balances.",
+ "welcomeScreen_page1_final": "No Watson, there's no blockchain.",
+ "welcomeScreen_page1_heading": "Welcome",
+ "welcomeScreen_page1_intro": "Minibits is an ecash and Lightning wallet focused on ease of use and security. Ecash is a digitally signed token issued by custodians known as mints.",
+ "welcomeScreen_page2_bullet1": "Minibits provides a free Lightning address that also allows instant ecash transfers over Nostr.",
+ "welcomeScreen_page2_bullet2": "First-class support for sending and receiving zaps on Nostr, including Nostr Wallet Connect.",
+ "welcomeScreen_page2_bullet3": "Realtime encrypted push notifications and support for ecash issued in currencies other than Bitcoin.",
+ "welcomeScreen_page2_final": "Minibits is free, open-source software. Find us on GitHub for our roadmap and contributions.",
+ "welcomeScreen_page2_heading": "Why Minibits?",
+ "welcomeScreen_page2_intro": "Minibits aims to explore how ecash can help people use Bitcoin by offering frictionless onboarding, low fees, ease of use, and strong privacy.",
+ "welcomeScreen_page3_bullet1": "Mints are custodial by design. Run your own or use them only for research and testing.",
+ "welcomeScreen_page3_bullet2": "Ecash is stored on your device. If lost, ecash is lost unless you safely back up your seed phrase.",
+ "welcomeScreen_page3_bullet3": "Minibits offers its own mint for testing with small amounts. It operates on a best-effort basis with no guarantees.",
+ "welcomeScreen_page3_final": "Now, let's move some ecash!",
+ "welcomeScreen_page3_go": "Let's go!",
+ "welcomeScreen_page3_heading": "Don't forget",
+ "welcomeScreen_page3_intro": "Both the Cashu protocol and the Minibits wallet are experimental. By using them, you accept known and unknown risks."
}
\ No newline at end of file
diff --git a/src/i18n_messages/sk.json b/src/i18n_messages/sk.json
index 52de2a17..6adae6b2 100644
--- a/src/i18n_messages/sk.json
+++ b/src/i18n_messages/sk.json
@@ -1,122 +1,125 @@
{
"addMints": "Pridaลฅ minty",
- "amount": {
- "requested": "Poลพadovanรก suma",
- "topup": "Pridaลฅ sumu",
- "withdraw": "Vybraลฅ sumu"
- },
+ "amountRequested": "Poลพadovanรก suma",
+ "amountSend": "Suma na odoslanie",
+ "amountTopup": "Pridaลฅ sumu",
+ "amountWithdraw": "Vybraลฅ sumu",
"attention": "Pozor!",
- "backupScreen": {
- "deletedSuccess": "Zรกloha bola vymazanรก.",
- "invalidMnemonicError": "Poลกkodenรก alebo neplatnรก mnemonickรก veta. Reinลกtaluj aplikรกciu.",
- "localBackup": "Lokรกlna zรกloha",
- "missingMnemonicError": "Chรฝba mnemonickรก veta.",
- "missingMnemonicOrSeedError": "Chรฝba mnemonickรก veta alebo seed kฤพรบฤ.",
- "mnemonicDesc": "tรฝchto 12 slov reprezentuje tvoj seed kฤพรบฤ a umoลพลuje obnoviลฅ tvoj ecash ak stratรญลก svoj mobil. Uloลพ na bezpeฤnรฉ miesto.",
- "mnemonicTitle": "Tvoja mnemonickรก veta",
- "recoveryTool": "Exportuj ecash",
- "recoveryToolDescription": "Exportuj ecash z lokรกlnej databรกzy zoskupenรฝ podฤพa setov kฤพรบฤov.",
- "remoteBackupDescription": "Mnemonickรก veta kรณduje tvoj seed kฤพรบฤ do 12 slov a umoลพลuje ti obnoviลฅ tvoj ecash ak stratรญลก svoj mobil.",
- "removeSpentCoins": "Odstrรกล minutรฝ ecash",
- "removeSpentCoinsDescription": "V prรญpade SEND a TRANSFER chyby, minutรฝ ecash mรดลพe ostaลฅ v tvojej peลaลพenke. Toto zablokuje ฤalลกie transakcie s mintom. Tento nรกstroj odstrรกni minutรฝ ecash z peลaลพenky.",
- "result": "Minutรฉ ecash bankovky boli odstrรกnenรฉ z peลaลพenky.",
- "seedBackup": "Zรกloha seed kฤพรบฤa",
- "success": "Tvoje Minibits bankovky boli zรกlohovanรฉ do lokรกlnej databรกzy. Novรฉ bankovky budรบ zรกlohovanรฉ automaticky.",
- "remoteBackup": "Zรกloha seed kฤพรบฤa"
- },
+ "backupDeletedSuccess": "Zรกloha bola vymazanรก.",
+ "backupInvalidMnemonicError": "Poลกkodenรก alebo neplatnรก mnemonickรก veta. Reinลกtaluj aplikรกciu.",
+ "backupLocalBackup": "Lokรกlna zรกloha",
+ "backupLocalBackupDescription": "Lokรกlna zรกloha ukladรก kรณpiu vลกetkรฝch vaลกich elektronickรฝch peลazรญ v lokรกlnej databรกze. Elektronickรฉ peniaze sa nikdy neodstrรกnia, pokiaฤพ nevypnete zรกlohovanie. Upozorลujeme, ลพe tรกto zรกloha nie je ลกifrovanรก.",
+ "backupMissingMnemonicError": "Chรฝba mnemonickรก veta.",
+ "backupMissingMnemonicOrSeedError": "Chรฝba mnemonickรก veta alebo seed kฤพรบฤ.",
+ "backupMnemonicDescription": "Tรกto 12-slovnรก sekvencia predstavuje vaลกe seed kรณdy a umoลพลuje vรกm obnoviลฅ zostatok na vaลกich peลaลพnรฝch prostriedkoch v prรญpade straty zariadenia. Uschovajte si ich na bezpeฤnom mieste.",
+ "backupMnemonicTitle": "Tvoja mnemonickรก veta",
+ "backupOptionsTitle": "Zรกloha",
+ "backupRecoveryTool": "Exportuj ecash",
+ "backupRecoveryToolDescription": "Exportuj ecash z lokรกlnej databรกzy zoskupenรฝ podฤพa setov kฤพรบฤov.",
+ "backupRemoteBackup": "Zรกloha seed kฤพรบฤa",
+ "backupRemoteBackupDescription": "Mnemonickรก veta kรณduje tvoj seed kฤพรบฤ do 12 slov a umoลพลuje ti obnoviลฅ tvoj ecash ak stratรญลก svoj mobil.",
+ "backupRemoveSpentCoins": "Odstrรกล minutรฝ ecash",
+ "backupRemoveSpentCoinsDescription": "V prรญpade SEND a TRANSFER chyby, minutรฝ ecash mรดลพe ostaลฅ v tvojej peลaลพenke. Toto zablokuje ฤalลกie transakcie s mintom. Tento nรกstroj odstrรกni minutรฝ ecash z peลaลพenky.",
+ "backupResult": "Minutรฉ ecash bankovky boli odstrรกnenรฉ z peลaลพenky.",
+ "backupSeedBackup": "Zรกloha seed kฤพรบฤa",
+ "backupSuccess": "Tvoje Minibits bankovky boli zรกlohovanรฉ do lokรกlnej databรกzy. Novรฉ bankovky budรบ zรกlohovanรฉ automaticky.",
+ "backupWalletBackupDescription": "Exportovaลฅ zรกlohu peลaลพenky, aby ste ju mohli importovaลฅ do novรฉho zariadenia.",
+ "backupWalletBackupTitle": "Zรกloha peลaลพenky",
"backupWillOverwriteBalanceWarning": "Tvoja peลaลพenka mรก nenulovรฝ zostatok. Ak budeลก pokraฤovaลฅ, existujรบci ecash bude zmazanรฝ a nahradenรฝ zรกlohou.",
+ "buttonAdd": "Pridaj",
+ "buttonCheck": "Skontroluj",
+ "cashuPaymentRequest_create": "Vytvoriลฅ ลพiadosลฅ",
+ "cashuPaymentRequest_to": "Prijaลฅ na",
+ "cashuPaymentRequestQRTitle": "Cashu platobnรก poลพiadavka",
+ "cashuPaymentRequestTitle": "Mint na prijatie",
"checkAndSync": "Skontroluj a synchronizuj",
"checkAndSyncDesc": "Skontroluje, ลพe kontakt je stรกle priradenรฝ k rovnakรฉmu verejnรฉmu kฤพรบฤu a zaktualizuje obrรกzok.",
- "common": {
- "add": "Pridaลฅ",
- "back": "Spรคลฅ",
- "cancel": "Zruลกiลฅ",
- "change": "Zmeniลฅ",
- "close": "Zavrieลฅ",
- "complete": "Dokonฤiลฅ",
- "confirm": "Potvrdiลฅ",
- "confirmAlertTitle": "Potvrdenie",
- "confirmCreateInvoice": "Vytvoriลฅ invoice",
- "connectedParam": "%{param} pripojenรฝch",
- "copy": "Kopรญruj",
- "copyFailParam": "Nejde skopรญrovaลฅ %{param}",
- "create": "Vytvor",
- "disabled": "Neaktรญvne",
- "enabled": "Aktรญvne",
- "hideMore": "Skry",
- "import": "Importuj",
- "noDescPlaceholder": "Bez popisu",
- "notCreated": "Eลกte nevytvorenรฝ",
- "off": "Vypnutรฉ",
- "offline": "Offline",
- "offlinePretty": "Vaลกe zariadenie je momentรกlne offline.",
- "ok": "OK",
- "on": "zapnutรฉ",
- "paste": "Vloลพiลฅ",
- "pasteEcash": "Vloลพ ecash",
- "pasteEcashToken": "Vloลพ ecash token",
- "qr": "QR kรณd",
- "reconnect": "Znovu pripojiลฅ",
- "reset": "Obnoviลฅ pรดvodnรฉ",
- "resetDefault": "Obnoviลฅ pรดvodnรฉ nastavenia",
- "sats": "SAT",
- "save": "Uloลพ",
- "saveFailParam": "Nejde uloลพiลฅ %{param}",
- "scan": "Skenuj",
- "sendAsEcash": "Poลกli ecash",
- "share": "Zdieฤพaj",
- "showMore": "Viac",
- "success": "Hotovo!",
- "copySuccessParam": "Skopรญrovanรฝ %{param}",
- "hide": "Skry",
- "show": "Ukรกลพ",
- "update": "Aktualizuj"
- },
+ "commonAdd": "Pridaลฅ",
+ "commonBack": "Spรคลฅ",
+ "commonCancel": "Zruลกiลฅ",
+ "commonChange": "Zmeniลฅ",
+ "commonClose": "Zavrieลฅ",
+ "commonComplete": "Dokonฤiลฅ",
+ "commonCompleted": "Dokonฤenรฉ",
+ "commonConfirm": "Potvrdiลฅ",
+ "commonConfirmAlertTitle": "Potvrdenie",
+ "commonConfirmCreateInvoice": "Vytvoriลฅ invoice",
+ "commonConnectedParam": "%{param} pripojenรฝch",
+ "commonCopy": "Kopรญruj",
+ "commonCopyFailParam": "Nejde skopรญrovaลฅ %{param}",
+ "commonCopySuccessParam": "Skopรญrovanรฝ %{param}",
+ "commonCreate": "Vytvor",
+ "commonCreateCashuPaymentRequest": "Vytvoriลฅ ลพiadosลฅ o platbu",
+ "commonDisabled": "Neaktรญvne",
+ "commonEdit": "Upraviลฅ",
+ "commonEnabled": "Aktรญvne",
+ "commonHide": "Skry",
+ "commonHideMore": "Skry",
+ "commonImport": "Importuj",
+ "commonNoDescPlaceholder": "Bez popisu",
+ "commonNotCreated": "Eลกte nevytvorenรฝ",
+ "commonOff": "Vypnutรฉ",
+ "commonOffline": "Offline",
+ "commonOfflinePretty": "Vaลกe zariadenie je momentรกlne offline.",
+ "commonOk": "OK",
+ "commonOn": "zapnutรฉ",
+ "commonPaste": "Vloลพiลฅ",
+ "commonPasteEcash": "Vloลพ ecash",
+ "commonPasteEcashToken": "Vloลพ ecash token",
+ "commonQr": "QR kรณd",
+ "commonReconnect": "Znovu pripojiลฅ",
+ "commonReset": "Obnoviลฅ pรดvodnรฉ",
+ "commonResetDefault": "Obnoviลฅ pรดvodnรฉ nastavenia",
+ "commonSats": "SAT",
+ "commonSave": "Uloลพ",
+ "commonSaveFailParam": "Nejde uloลพiลฅ %{param}",
+ "commonScan": "Skenuj",
+ "commonSend": "Poslaลฅ",
+ "commonSendAsEcash": "Poลกli ecash",
+ "commonShare": "Zdieฤพaj",
+ "commonShow": "Ukรกลพ",
+ "commonShowMore": "Viac",
+ "commonSuccess": "Hotovo!",
+ "commonTryAgain": "Skรบsiลฅ znovu",
+ "commonUpdate": "Aktualizuj",
"confirmBackupRecovery": "Chceลก obnoviลฅ ecash zo zรกlohy?",
"confirmMintRemoval": "Chceลก naozaj odstrรกniลฅ %{hostname} - %{shortname} z peลaลพenky?",
+ "contactHasNoLightningAddrUseEcash": "Tento kontakt nemรก Lightning adresu, namiesto toho poลกli ecash.",
"contacts": "Kontakty",
- "contactsScreen": {
- "getInvoice": "Zรญskaj invoice",
- "new": "Novรฝ",
- "newTitle": "Pridaj kontakt",
- "ownName": {
- "available": "%{name} je dostupnรฝ!",
- "betaWarning": "Prosรญm akceptuj, ลพe toto je skorรฉ vydanie beta softvรฉru. Mรดลพeลก prรญsลฅ o svoje dรกta z dรดvodu chyby, alebo z inej prรญฤiny.",
- "chooseOwnName": "Vyber vlastnรฉ meno",
- "chooseOwnNameFooter": "Pouลพi malรฉ pรญsmenรก, ฤรญsla alebo .-_ znaky",
- "ctaPay": "Zaplaลฅ z peลaลพenky",
- "donationSuccess": "ฤakujem! Dar za %{receiver} si รบspeลกne poslal.",
- "illegalChar": "Nepouลพรญvaj . alebo - na zaฤiatku alebo na konci mena.",
- "insufficient": "Tvoj zostatok v peลaลพenke nie je dostatoฤnรฝ na zaplatenie potrebnej sumy. Mรดลพeลก ju vลกak uhradiลฅ z inej lightning peลaลพenky.",
- "payToGetOwnName": "Zaplaลฅ tento lightning invoice a zรญskaj meno %{name} svojej peลaลพenky.",
- "profileExists": "Meno peลaลพenky uลพ pouลพรญva niekto inรฝ, vyber si inรฉ.",
- "tooShort": "Zadaj aspoล 2 znaky."
- },
- "privateContacts": {
- "bottomModal": "Privรกtne kontakty sรบ unikรกtne menรก inรฝch Minibits peลaลพeniek. Mรดลพeลก ich pouลพรญvaลฅ na poslanie ecash alebo vyลพiadanie platby. Svoje meno peลaลพenky mรดลพeลก zdieฤพaลฅ s ostatnรฝmi.",
- "domainExternal": "Pouลพi inรบ domรฉnu",
- "domainMinibits": "Pouลพi minibits.cash domรฉnu",
- "explainerSubText": "Pridaj inรฝch pouลพรญvateฤพov Minibits ako svoje sรบkromnรฉ kontakty. Kaลพdรฝ mรก unikรกtnu @minibits.cash adresu peลaลพenky. Svojim kontaktom mรดลพeลก platiลฅ aj ak sรบ offline.",
- "explainerText": "Sรบktromnรฉ kontakty",
- "profileNotFound": "Meno %{meno} sa nenaลกlo, uisti sa, ลพe je sprรกvne.",
- "saveNewFormat": "Zadaj adresu peลaลพenky vo formรกte meno@domena.xyz formรกte.",
- "selectSendLnURL": "Vyber kontakt komu poลกleลก lightning platbu.",
- "selectSendPaymentRequest": "Vyber kontakt, komu poลกleลก ลพiadosลฅ o platbu.",
- "selectSendToken": "Vyber kontakt komu poลกleลก ecash.",
- "switchName": "Zmeniลฅ meno peลaลพenky a obrรกzok?",
- "switchNameSubText": "Vyber si meno a obrรกzok. Vyber si z nรกhodnรฝch, alebo si zvoฤพ svoje vlastnรฉ meno peลaลพenky."
- },
- "publicContacts": {
- "addNpub": "Pridaj svoj npub kฤพรบฤ",
- "npubPasteError": "Skopรญruj NPUB pred vloลพenรญm",
- "pasteDemoKey": "Vloลพ demo kฤพรบฤ",
- "setOwnRelay": "Nastav vlastnรบ relay"
- },
- "randomName": {
- "selectOneOfUsernames": "Vyber si jedno z mien"
- },
- "scan": "Skenuj"
- },
+ "contactsScreen_getInvoice": "Zรญskaj invoice",
+ "contactsScreen_new": "Novรฝ",
+ "contactsScreen_newTitle": "Pridaj kontakt",
+ "contactsScreen_ownName_available": "%{name} je dostupnรฝ!",
+ "contactsScreen_ownName_betaWarning": "Prosรญm akceptuj, ลพe toto je skorรฉ vydanie beta softvรฉru. Mรดลพeลก prรญsลฅ o svoje dรกta z dรดvodu chyby, alebo z inej prรญฤiny.",
+ "contactsScreen_ownName_chooseOwnName": "Vyber vlastnรฉ meno",
+ "contactsScreen_ownName_chooseOwnNameFooter": "Pouลพi malรฉ pรญsmenรก, ฤรญsla alebo .-_ znaky",
+ "contactsScreen_ownName_ctaPay": "Zaplaลฅ z peลaลพenky",
+ "contactsScreen_ownName_donationSubtext": "lรกskavo vรกs ลพiada o malรฝ dar na vaลกu novรบ adresu peลaลพenky.",
+ "contactsScreen_ownName_donationSuccess": "ฤakujem! Dar za %{receiver} si รบspeลกne poslal.",
+ "contactsScreen_ownName_illegalChar": "Nepouลพรญvaj . alebo - na zaฤiatku alebo na konci mena.",
+ "contactsScreen_ownName_insufficient": "Tvoj zostatok v peลaลพenke nie je dostatoฤnรฝ na zaplatenie potrebnej sumy. Mรดลพeลก ju vลกak uhradiลฅ z inej lightning peลaลพenky.",
+ "contactsScreen_ownName_lightningInvoiceToPayQR": "Lightning faktรบra na รบhradu",
+ "contactsScreen_ownName_payToGetOwnName": "Zaplaลฅ tento lightning invoice a zรญskaj meno %{name} svojej peลaลพenky.",
+ "contactsScreen_ownName_profileExists": "Meno peลaลพenky uลพ pouลพรญva niekto inรฝ, vyber si inรฉ.",
+ "contactsScreen_ownName_tooShort": "Zadaj aspoล 2 znaky.",
+ "contactsScreen_privateContacts_bottomModal": "Privรกtne kontakty sรบ unikรกtne menรก inรฝch Minibits peลaลพeniek. Mรดลพeลก ich pouลพรญvaลฅ na poslanie ecash alebo vyลพiadanie platby. Svoje meno peลaลพenky mรดลพeลก zdieฤพaลฅ s ostatnรฝmi.",
+ "contactsScreen_privateContacts_domainExternal": "Pouลพi inรบ domรฉnu",
+ "contactsScreen_privateContacts_domainMinibits": "Pouลพi minibits.cash domรฉnu",
+ "contactsScreen_privateContacts_explainerSubText": "Pridaj inรฝch pouลพรญvateฤพov Minibits ako svoje sรบkromnรฉ kontakty. Kaลพdรฝ mรก unikรกtnu @minibits.cash adresu peลaลพenky. Svojim kontaktom mรดลพeลก platiลฅ aj ak sรบ offline.",
+ "contactsScreen_privateContacts_explainerText": "Sรบktromnรฉ kontakty",
+ "contactsScreen_privateContacts_profileNotFound": "Meno %{meno} sa nenaลกlo, uisti sa, ลพe je sprรกvne.",
+ "contactsScreen_privateContacts_saveNewFormat": "Zadaj adresu peลaลพenky vo formรกte meno@domena.xyz formรกte.",
+ "contactsScreen_privateContacts_selectSendLnURL": "Vyber kontakt komu poลกleลก lightning platbu.",
+ "contactsScreen_privateContacts_selectSendPaymentRequest": "Vyber kontakt, komu poลกleลก ลพiadosลฅ o platbu.",
+ "contactsScreen_privateContacts_selectSendToken": "Vyber kontakt komu poลกleลก ecash.",
+ "contactsScreen_privateContacts_switchName": "Zmeniลฅ meno peลaลพenky a obrรกzok?",
+ "contactsScreen_privateContacts_switchNameSubText": "Vyber si meno a obrรกzok. Vyber si z nรกhodnรฝch, alebo si zvoฤพ svoje vlastnรฉ meno peลaลพenky.",
+ "contactsScreen_publicContacts_addNpub": "Pridaj svoj npub kฤพรบฤ",
+ "contactsScreen_publicContacts_npubPasteError": "Skopรญruj NPUB pred vloลพenรญm",
+ "contactsScreen_publicContacts_pasteDemoKey": "Vloลพ demo kฤพรบฤ",
+ "contactsScreen_publicContacts_setOwnRelay": "Nastav vlastnรบ relay",
+ "contactsScreen_randomName_selectOneOfUsernames": "Vyber si jedno z mien",
+ "contactsScreen_scan": "Skenuj",
"copyAsEncodedTokens": "Skopรญruj ako tokeny",
"copyContactPublicKey": "Skopรญruj verejnรฝ kฤพรบฤ kontaktu",
"copyMnemonicBackupWorkaround": "Aby si odzรกlohoval svoj existujรบci ecash, poลกli celรฝ zostatok sรกme sebe.",
@@ -125,33 +128,49 @@
"deleteContact": "Vymaลพ kontakt",
"deleteContactDesc": "Vymaลพ tento kontakt zo zoznamu.",
"derivingSeedStatus": "Derivujem seed kฤพรบฤ, mรดลพe to cvรญฤพu trvaลฅ.",
- "developerScreen": {
- "devOptions": "Vรฝvojรกrske moลพnosti",
- "go": "Ideme na to!",
- "info": "O Minibits peลaลพenke",
- "logLevel": "รroveล logovania",
- "reset": "Factory reset",
- "resetDescription": "Vymaลพe vลกetky lokรกlne รบdaje z รบloลพiska a databรกzy. Pouลพรญvaj iba pri vรฝvoji a testovanรญ.",
- "title": "Vรฝvojรกrske moลพnosti",
- "transactions": "Synchronizuj nedรกvne transakcie",
- "transactionsDescription": "V รบloลพisku je %{{count}} nedรกvnych transakciรญ. Reset ich obnovรญ z databรกzy. Pouลพรญvaj len pri vรฝvoji a testovanรญ."
- },
- "errorScreen": {
- "friendlySubtitle": "Minibits peลaลพenka zaznamenala neoฤakรกvanรบ chybu. Kontaktuj support@minibits.cash alebo pridaj chybu na Github.",
- "reset": "RESET APP",
- "title": "Nieฤo sa pokazilo!"
+ "developerScreen_devOptions": "Vรฝvojรกrske moลพnosti",
+ "developerScreen_forceDeletePending": "Nรบtiลฅ zmazanie ฤakajรบcich",
+ "developerScreen_forceDeletePendingDescription": "Odstrรกniลฅ ecash z ฤakajรบceho stavu a zmazaลฅ vลกetky ฤakajรบce transakcie.",
+ "developerScreen_forceMovePending": "Nรบtiลฅ presun ฤakajรบcich",
+ "developerScreen_forceMovePendingDescription": "Presunรบลฅ ฤakajรบci ecash spรคลฅ do dostupnรฉho zostatku.",
+ "developerScreen_go": "Ideme na to!",
+ "developerScreen_info": "O Minibits peลaลพenke",
+ "developerScreen_logLevel": "รroveล logovania",
+ "developerScreen_reset": "Factory reset",
+ "developerScreen_resetDescription": "Vymaลพe vลกetky lokรกlne รบdaje z รบloลพiska a databรกzy. Pouลพรญvaj iba pri vรฝvoji a testovanรญ.",
+ "developerScreen_resyncTransactions": "Resync transakciรญ",
+ "developerScreen_resyncTransactionsDescription": "Obnoviลฅ histรณriu poslednรฝch transakciรญ z databรกzy.",
+ "developerScreen_title": "Vรฝvojรกrske moลพnosti",
+ "developerScreen_transactions": "Synchronizuj nedรกvne transakcie",
+ "developerScreen_transactionsDescription": "V รบloลพisku je %{{count}} nedรกvnych transakciรญ. Reset ich obnovรญ z databรกzy. Pouลพรญvaj len pri vรฝvoji a testovanรญ.",
+ "emptyStateComponent": {
+ "generic": {
+ "button": "Skรบste to znova",
+ "content": "Momentรกlne nie je niฤ na zobrazenie.",
+ "heading": "Nie sรบ k dispozรญcii ลพiadne รบdaje"
+ }
},
+ "errorScreen_friendlySubtitle": "Minibits peลaลพenka zaznamenala neoฤakรกvanรบ chybu. Kontaktuj support@minibits.cash alebo pridaj chybu na Github.",
+ "errorScreen_reset": "RESET APP",
+ "errorScreen_title": "Nieฤo sa pokazilo!",
+ "exportBackup": "Exportovaลฅ zรกlohu",
+ "exportBackupCopyBackup": "Kopรญrovaลฅ zรกlohu",
+ "exportBackupCopyOrphanedProofs": "Kopรญrovaลฅ osirelรฉ dรดkazy",
+ "exportBackupEcashProofs": "Ecash dรดkazy",
+ "exportBackupMints": "Minty",
+ "exportBackupWalletTitle": "Zรกloha peลaลพenky",
"factoryResetSuccess": "Factory reset ukonฤenรฝ, ihneฤ reลกtartuj aplikรกciu.",
"factoryResetUserConfirmDesc": "Vลกetky dรกta aplikรกcie budรบ vymazanรฉ. Si si istรฝ, ลพe chceลก pokraฤovaลฅ?",
+ "importBackupInsertWalletBackup": "Vloลพiลฅ zรกlohu peลaลพenky",
+ "importBackupWalletProfileNotFound": "Profil peลaลพenky pripojenรฝ k poskytnutรฉmu seedu nebol nรกjdenรฝ, novรฝ bude vytvorenรฝ pre vรกs.",
+ "importBackupWalletRecovery": "Obnova peลaลพenky",
"increaseRecoveryIndexes": "Navรฝลกiลฅ indexy pre obnovenie",
"increaseRecoveryIndexesDesc": "Po nekompletnej obnove pomocou seed kฤพรบฤa alebo po inej chybe sa mรดลพeลก stretnรบลฅ s duplicate outputs chybou pri poslanรญ ecash. Toto nastavรญ indexy obnovenia na vyลกลกiu hodnotu, ฤo vyrieลกi tento problรฉm.",
"invalidRelayUrl": "Neplatnรก relay URL adresa.",
"lightningAddress": "Lightning adresa",
"lightningInvoiceSharedWaiting": "Lightning invoice bola vyzdieฤพanรก, ฤakรก na zaplatenie prรญjemcom.",
- "lightningPayScreen": {
- "onPasteEmptyClipboard": "Najprv skopรญruj Lightning invoice, adresu alebo platobnรฝ kรณd, potom vloลพ.",
- "payHeading": "Zaplaลฅ"
- },
+ "lightningPayScreen_onPasteEmptyClipboard": "Najprv skopรญruj Lightning invoice, adresu alebo platobnรฝ kรณd, potom vloลพ.",
+ "lightningPayScreen_payHeading": "Zaplaลฅ",
"loadingPublicInfo": "Naฤรญtavam verejnรฉ informรกcie",
"localBackupDisabled": "Lokรกlna zรกloha je vypnutรก",
"localBackupEnabled": "Lokรกlna zรกloha je zapnutรก",
@@ -159,31 +178,42 @@
"loglevelErrorDesc": "Loguj len chyby a zlyhania, bez sรบkromnรฝch รบdajov.",
"loglevelInfoDesc": "Loguj anonymnรฉ รบdaje o pouลพรญvanรญ, bez sรบkreomnรฝch dรกt.",
"manageMints": "Sprรกva mintov",
+ "mintInfo_contactsHeading": "Kontakty",
+ "mintInfo_depositMint": "Vklad (Mint)",
+ "mintInfo_descriptionHeading": "Popis",
+ "mintInfo_emptyValueParam": "%{param} neposkytnutรฝ.",
+ "mintInfo_keyValueInfoCardHeading": "Viac info",
+ "mintInfo_loadingNamePlaceholder": "Naฤรญtavam...",
+ "mintInfo_loadingUnitsPlaceholder": "Naฤรญtavam...",
+ "mintInfo_mintMeltHeading": "Limity",
+ "mintInfo_mintUrlHeading": "URL mintu",
+ "mintInfo_motd": "Dรดleลพitรก sprรกva",
+ "mintInfo_nutsHeading": "Podporovanรฉ NUTs",
+ "mintInfo_withdrawMelt": "Vรฝber (Melt)",
"mintInfoHeading": "Informรกcie o minte",
"mintSettingsUpdated": "Aktualizovanรฉ nastavenia mintu",
- "mintsScreen": {
- "addMint": "Pridaj mint",
- "addMintMinibits": "Pridaj Minibits mint",
- "addMintUrl": "Pridaj URL adresu mintu",
- "updateMintUrl": "Aktualizuj mint URL adresu",
- "blockMint": "Blokuj prijatie ecash z tejto minty",
- "copy": "Kopรญruj URL adresu mintu",
- "invalidUrl": "Toto nie je platnรก URL.",
- "mintAdded": "Mint pridanรฝ",
- "mintBlocked": "Tento mint bol zablokovanรฝ. Peลaลพenka z neho neprijme ecash.",
- "mintExists": "Tento mint uลพ existuje.",
- "mintInfo": "Informรกcie o minte",
- "mintRemoved": "Mint bol odstrรกnenรฝ",
- "mintUnblocked": "Mint je odblokovanรฝ. Mรดลพeลก prijรญmaลฅ ecash z tohto mintu.",
- "mintUrl": "URL mintu",
- "mintUrlHint": "Zadaj URL adresu mintu, ktorรฉmu dรดverujeลก.",
- "refreshMintSettings": "Obnov nastavenia mintu",
- "removeMint": "Odstrรกล mint",
- "rename": "Premenuj mint",
- "setColor": "Nastav farbu mintu",
- "unblockMint": "Odblokuj prijรญmanie z tohto mintu",
- "share": "Zdieฤพaj URL mintu"
- },
+ "mintsScreen_addMint": "Pridaj mint",
+ "mintsScreen_addMintMinibits": "Pridaj Minibits mint",
+ "mintsScreen_addMintUrl": "Pridaj URL adresu mintu",
+ "mintsScreen_blockMint": "Blokuj prijatie ecash z tejto minty",
+ "mintsScreen_copy": "Kopรญruj URL adresu mintu",
+ "mintsScreen_invalidUrl": "Toto nie je platnรก URL.",
+ "mintsScreen_keepAtLeastOneMint": "Musรญลก ponechaลฅ aspoล 1 mint.",
+ "mintsScreen_mintAdded": "Mint pridanรฝ",
+ "mintsScreen_mintBlocked": "Tento mint bol zablokovanรฝ. Peลaลพenka z neho neprijme ecash.",
+ "mintsScreen_mintExists": "Tento mint uลพ existuje.",
+ "mintsScreen_mintInfo": "Informรกcie o minte",
+ "mintsScreen_mintRemoved": "Mint bol odstrรกnenรฝ",
+ "mintsScreen_mintUnblocked": "Mint je odblokovanรฝ. Mรดลพeลก prijรญmaลฅ ecash z tohto mintu.",
+ "mintsScreen_mintUrl": "URL mintu",
+ "mintsScreen_mintUrlHint": "Zadaj URL adresu mintu, ktorรฉmu dรดverujeลก.",
+ "mintsScreen_refreshMintSettings": "Obnov nastavenia mintu",
+ "mintsScreen_removeMint": "Odstrรกล mint",
+ "mintsScreen_rename": "Premenuj mint",
+ "mintsScreen_setColor": "Nastav farbu mintu",
+ "mintsScreen_share": "Zdieฤพaj URL mintu",
+ "mintsScreen_unblockMint": "Odblokuj prijรญmanie z tohto mintu",
+ "mintsScreen_updateMintUrl": "Aktualizuj mint URL adresu",
"missingEcashTokenToReceiveError": "Chรฝbajรบci ecash token.",
"missingLNURLParamsError": "Chรฝbajรบce LNURL paramtere.",
"missingMintsForProofsUserMessage": "Prosรญm pridaj vลกetky minty do peลaลพenky a skรบs znova.",
@@ -193,128 +223,221 @@
"nextInterval": "ฤalลกรญ interval",
"noEcashRecovered": "ลฝiadny ecash nebol obnovenรฝ",
"noSpentEcashFound": "Minutรฝ ecash sa v peลaลพenke nenaลกiel.",
- "nostr": {
- "copyPubKey": "Kopรญruj Nostr verejnรฝ kฤพรบฤ",
- "enterAddress": "Zadaj Nostr adresu",
- "enterAddressDesc": "Minibits pouลพรญva Nostr adresz ako zdieฤพateฤพnรฝ kontakt na poslanie alebo vyลพiadanie platby.",
- "invalidAddressFormat": "Neplatnรฝ formรกt Nostr adresy, skontroluj, ลพe mรก meno@adresa.com formรกt.",
- "lastStandDialog": {
- "cancel": "Zruลกiลฅ",
- "complete": "Zmena profilu je hotovรก.",
- "confirm": "Potvrฤ zmenu.",
- "desc": "Pouลพitie vlastnej Nostr adresy deaktivuje funkcie Lightning adresy, ktorรฉ sรบ dostupnรฉ len pre @minibits.cash adresu.",
- "readyDesc": "Peลaลพenka po tejto zmene vyลพaduje reลกtart.",
- "readyTitle": "Zmena profilu je pripravenรก.",
- "title": "Mysli na toto"
- },
- "minibitsNameKeyReuseError": "%{domain} menรก a kฤพรบฤe nemรดลพu byลฅ pouลพitรฉ vo viacerรฝch peลaลพenkรกch.",
- "missingRelaysError": "Chรฝbajรบce Nostr relays.",
- "pasteError": "Kopรญruj najprv tvoju Nostr adresu, potom vloลพ.",
- "profileRelayMismatchedIdentifierError": "Profil z relay nesedรญ na danรฝ nip05 identifikรกtor.",
- "relaysTitle": "Nostr relays",
- "removePub": "Odstrรกล svoj verejnรฝ kฤพรบฤ",
- "removePubSubText": "Odstrรกล svoj npub kฤพรบฤ a nenaฤรญtavaj verejnรฉ kontaky.",
- "setPublicKey": "Nastav svoj verejnรฝ kฤพรบฤ.",
- "setPublicKeySubText": "Pridaj alebo zmeล svoj Nostr verejnรฝ kฤพรบฤ (npub).",
- "setRelay": "Nastav relay",
- "setRelaySubText": "Pridaj alebo zmeล svoj relay ako tvoj profil a sledovatelia sรบ na inom.",
- "tip": "Prispej ฤพuฤom, ktorรฝch sledujeลก",
- "tipSubText": "Pridaj svoj verejnรฝ Nostr kฤพรบฤ (npub) a prispej svojim obฤพรบbenรฝm sledovanรฝm ฤพuฤom, alebo projektom priamo z peลaลพenky.",
- "useOwnProfile": {
- "desc": "Importuj svoju vlastnรบ Nostr adresu. Peลaลพenka prestane komunikovaลฅ s Minibits Nostr a Lnurl servermi, ฤo znemoลพnรญ funkcie Lightning adresy pre prijรญmanie zapov a inรฝch Lightning platieb. Len pre hard core ecash-erov!",
- "title": "Pouลพi svoj Nostr profil"
- }
- },
+ "nostr_copyPubKey": "Kopรญruj Nostr verejnรฝ kฤพรบฤ",
+ "nostr_enterAddress": "Zadaj Nostr adresu",
+ "nostr_enterAddressDesc": "Minibits pouลพรญva Nostr adresz ako zdieฤพateฤพnรฝ kontakt na poslanie alebo vyลพiadanie platby.",
+ "nostr_invalidAddressFormat": "Neplatnรฝ formรกt Nostr adresy, skontroluj, ลพe mรก meno@adresa.com formรกt.",
+ "nostr_lastStandDialog_cancel": "Zruลกiลฅ",
+ "nostr_lastStandDialog_complete": "Zmena profilu je hotovรก.",
+ "nostr_lastStandDialog_confirm": "Potvrฤ zmenu.",
+ "nostr_lastStandDialog_desc": "Pouลพitie vlastnej Nostr adresy deaktivuje funkcie Lightning adresy, ktorรฉ sรบ dostupnรฉ len pre @minibits.cash adresu.",
+ "nostr_lastStandDialog_readyDesc": "Peลaลพenka po tejto zmene vyลพaduje reลกtart.",
+ "nostr_lastStandDialog_readyTitle": "Zmena profilu je pripravenรก.",
+ "nostr_lastStandDialog_title": "Mysli na toto",
+ "nostr_minibitsNameKeyReuseError": "%{domain} menรก a kฤพรบฤe nemรดลพu byลฅ pouลพitรฉ vo viacerรฝch peลaลพenkรกch.",
+ "nostr_missingRelaysError": "Chรฝbajรบce Nostr relays.",
+ "nostr_pasteError": "Kopรญruj najprv tvoju Nostr adresu, potom vloลพ.",
+ "nostr_profileRelayMismatchedIdentifierError": "Profil z relay nesedรญ na danรฝ nip05 identifikรกtor.",
+ "nostr_relaysTitle": "Nostr relays",
+ "nostr_removePub": "Odstrรกล svoj verejnรฝ kฤพรบฤ",
+ "nostr_removePubSubText": "Odstrรกล svoj npub kฤพรบฤ a nenaฤรญtavaj verejnรฉ kontaky.",
+ "nostr_setPublicKey": "Nastav svoj verejnรฝ kฤพรบฤ.",
+ "nostr_setPublicKeySubText": "Pridaj alebo zmeล svoj Nostr verejnรฝ kฤพรบฤ (npub).",
+ "nostr_setRelay": "Nastav relay",
+ "nostr_setRelaySubText": "Pridaj alebo zmeล svoj relay ako tvoj profil a sledovatelia sรบ na inom.",
+ "nostr_tip": "Prispej ฤพuฤom, ktorรฝch sledujeลก",
+ "nostr_tipSubText": "Pridaj svoj verejnรฝ Nostr kฤพรบฤ (npub) a prispej svojim obฤพรบbenรฝm sledovanรฝm ฤพuฤom, alebo projektom priamo z peลaลพenky.",
+ "nostr_useOwnProfile_desc": "Importuj svoju vlastnรบ Nostr adresu. Peลaลพenka prestane komunikovaลฅ s Minibits Nostr a Lnurl servermi, ฤo znemoลพnรญ funkcie Lightning adresy pre prijรญmanie zapov a inรฝch Lightning platieb. Len pre hard core ecash-erov!",
+ "nostr_useOwnProfile_title": "Pouลพi svoj Nostr profil",
"nsecEnterPrivateKey": "Zadaj svoj privรกtny kฤพรบฤ",
"nsecEnterPrivateKeyDesc": "Minibits potrebuje tvoj privรกtny kฤพรบฤ v nsec formรกte, aby deลกifroval sprรกvy obsahujรบce prichรกdzajรบce platby. Tvoje kฤพรบฤe budรบ uloลพenรฉ v bezpeฤnom รบloลพisku tvojhjo smartfรณnu.",
"nsecMissingProfileError": "Chรฝbajรบce รบdaje profilu",
"nsecPasteError": "Skopรญruj najprv nsec, potom vloลพ.",
"nsecPrivatePublicKeyMismatchError": "Poskytnutรฝ privรกtny kฤพรบฤ nesedรญ na tvoj novรฝ kฤพรบฤ z verejnรฉho profilu.",
"numberOfBackedupProofs": "Poฤet uloลพenรฝch potvrdenรญ",
+ "nwcScreen_addConnection": "Pridaลฅ spojenie",
+ "nwcScreen_appNamePlaceholder": "Moja NWC aplikรกcia",
+ "nwcScreen_connectionExists": "Spojenie s tรฝmto nรกzvom uลพ existuje.",
+ "nwcScreen_createNwcConnection": "Vytvoriลฅ NWC spojenie",
+ "nwcScreen_dailyLimit": "Dennรฝ limit %{limit} %{currency}",
+ "nwcScreen_dailyLimitHint": "Nastav maximรกlny dennรฝ limit na mรญลanie",
+ "nwcScreen_dailyLimitPlaceholder": "Zadaj dennรฝ limit v SAT",
+ "nwcScreen_limitMustBePositive": "Dennรฝ limit musรญ byลฅ nad nulou",
+ "nwcScreen_missingNameOrLimit": "Vloลพte nรกzov alebo dennรฝ limit",
+ "nwcScreen_nameConnectionHint": "Pomenuj spojenie podฤพa aplikรกcie, s ktorou ho budeลก pouลพรญvaลฅ",
+ "nwcScreen_nwcDescription": "NWC ti umoลพลuje ovlรกdaลฅ peลaลพenku z inej aplikรกcie, naprรญklad z tvojej obฤพรบbenej Nostr aplikรกcie. Povoluj prรญstup len aplikรกciรกm, ktorรฝm dรดverujeลก. Tvoje zariadenie musรญ maลฅ povolenรฉ push notifikรกcie a zostaลฅ online.",
+ "nwcScreen_nwcSummary": "NWC ti umoลพลuje ovlรกdaลฅ peลaลพenku z inej aplikรกcie, naprรญklad z tvojej obฤพรบbenej Nostr aplikรกcie.",
+ "nwcScreen_pushNotificationWarning": "Vaลกe zariadenie nemรดลพe prijรญmaลฅ push sprรกvy na pozadรญ. To je nevyhnutnรฉ pre prijรญmanie NWC prรญkazov. Ako zรกloลพka sa Minibits pripojil k Nostr relรฉรกm na prijรญmanie prรญkazov. Toto vลกak prestane fungovaลฅ, keฤ je aplikรกcia na pozadรญ alebo vypnutรก.",
+ "nwcScreen_remainingLimit": "Zostรกva %{remaining} %{currency}",
+ "nwcScreen_removeConnection": "Odstrรกniลฅ spojenie",
+ "nwcScreen_satCurrency": "SAT",
+ "nwcScreen_shareDescription": "Naskenuj alebo skopรญruj tento reลฅazec spojenia do inej aplikรกcie, aby sa mohla pripojiลฅ k tvojej peลaลพenke. Pouลพรญvaj len s aplikรกciami, ktorรฝm dรดverujeลก.",
+ "nwcScreen_shareNwcConnection": "Zdieฤพaลฅ NWC spojenie",
"onDeviceInfo": "รdaje na zariadenรญ",
"pasteEcashTokenDesc": "Vloลพ ecash, ktorรฝ chceลก prijaลฅ.",
- "payCommon": {
- "amountToPayLabel": "Suma na zaplatenie",
- "amountZeroOrNegative": "Suma mรก byลฅ kladnรฉ ฤรญslo.",
- "completed": "Plaba hotovรก.",
- "failed": "Platba zlyhala.",
- "insufficientFunds": "Nemรกลก dostatoฤnรฉ prostriedky na poslanie tejto sumy.",
- "isPending": "Platba je beลพiaca",
- "maximumPay": "Najvyลกลกia suma na zaplatenie je %{amount}.",
- "minimumWithdraw": "Najmenลกia suma na zaplatenie je %{amount} %{currnecy}",
- "pay": "Zaplaลฅ",
- "payFrom": "zaplaลฅ z",
- "payFromWallet": "Zaplaลฅ z peลaลพenky",
- "payMe": "Zaplaลฅ mi",
- "payNow": "Zaplaลฅ teraz",
- "payToAddress": "Zaplaลฅ na adresu",
- "payWithLightning": "Zaplaลฅ cez Lightning",
- "receive": "Prijmi",
- "receiveEcash": "Prijmy ecash",
- "receiveInPerson": "Prijmy osobne",
- "receiveOffline": "Prijmy offline",
- "requestPayment": "Vyลพiadaj platbu",
- "send": "Poลกli",
- "withdraw": "Vyber"
- },
+ "payCommon_amountToPayLabel": "Suma na zaplatenie",
+ "payCommon_amountZeroOrNegative": "Suma mรก byลฅ kladnรฉ ฤรญslo.",
+ "payCommon_completed": "Plaba hotovรก.",
+ "payCommon_failed": "Platba zlyhala.",
+ "payCommon_insufficientFunds": "Nemรกลก dostatoฤnรฉ prostriedky na poslanie tejto sumy.",
+ "payCommon_isPending": "Platba je beลพiaca",
+ "payCommon_maximumPay": "Najvyลกลกia suma na zaplatenie je %{amount}.",
+ "payCommon_minimumPay": "Minimรกlna suma platby je %{amount} %{currency} .",
+ "payCommon_minimumWithdraw": "Najmenลกia suma na zaplatenie je %{amount} %{currnecy}",
+ "payCommon_pay": "Zaplaลฅ",
+ "payCommon_payFrom": "zaplaลฅ z",
+ "payCommon_payFromWallet": "Zaplaลฅ z peลaลพenky",
+ "payCommon_payMe": "Zaplaลฅ mi",
+ "payCommon_payNow": "Zaplaลฅ teraz",
+ "payCommon_payToAddress": "Zaplaลฅ na adresu",
+ "payCommon_payWithLightning": "Zaplaลฅ cez Lightning",
+ "payCommon_receive": "Prijmi",
+ "payCommon_receiveEcash": "Prijmy ecash",
+ "payCommon_receiveInPerson": "Prijmy osobne",
+ "payCommon_receiveOffline": "Prijmy offline",
+ "payCommon_requestPayment": "Vyลพiadaj platbu",
+ "payCommon_send": "Poลกli",
+ "payCommon_withdraw": "Vyber",
"payerMemo": "Poznรกmka pre prรญjemcu",
"payWithLightningDesc": "Zadaj Lightning adresu, invoice alebo LNURL kรณd ktorรฝ chceลก zaplatiลฅ.",
"pictureRetrieveFail": "Nejde naฤรญtaลฅ obrรกzky zo servera, skรบs neskรดr.",
- "privacyScreen": {
- "logger": "Povoฤพ logovanie",
- "loggerDescription": "Loguj anonymnรฉ informรกcie o chybรกch, aby ich bolo moลพnรฉ opraviลฅ poฤas beta testovania. Vypni pre najvyลกลกiu ochranu sรบkromia.",
- "torDaemon": "Pouลพi Tor sieลฅ",
- "torDaemonDescription": "Umoลพni spojenie s mintmi na Tor .onion adresรกch.",
- "torStatus": "Tor status"
- },
+ "placeholderNpub": "npub...",
+ "placeholderRelay": "wss://...",
+ "privacyScreen_logger": "Povoฤพ logovanie",
+ "privacyScreen_loggerDescription": "Loguj anonymnรฉ informรกcie o chybรกch, aby ich bolo moลพnรฉ opraviลฅ poฤas beta testovania. Vypni pre najvyลกลกiu ochranu sรบkromia.",
+ "privacyScreen_title": "Sรบkromie",
+ "privacyScreen_torDaemon": "Pouลพi Tor sieลฅ",
+ "privacyScreen_torDaemonDescription": "Umoลพni spojenie s mintmi na Tor .onion adresรกch.",
+ "privacyScreen_torStatus": "Tor status",
"privateKey": "Privรกtny kฤพรบฤ",
"privateNotePlaceholder": "Sรบkromnรก poznรกmka",
"profileMissingAddressError": "Chรฝbajรบca adresa",
"profileMissingNostrAddress": "Tento profil nemรก nostr adresu na ktorรบ je moลพnรฉ poslaลฅ ecash.",
- "profileOnboarding": {
- "desc": "Tvoja minibits.cash adresa peลaลพenky ti umoลพnรญ prijรญmaลฅ ecash cez zaลกifrovanรฉ sprรกvy v sieti Nostr. Tieลพ funguje ako tvoja Lightning adresa, na ktorรบ mรดลพeลก prijรญmaลฅ platby z akejkoฤพvek Lightning peลaลพenky, alebo zapy na sieti Nostr.",
- "minibitsDesc": "Zdieฤพaj svoju adresu peลaลพenky, aby si mohol na ลu prijaลฅ ecash cez ลกifrovanรฉ sprรกvy v sieti Nostr. Tieลพ funguje ako tvoja Lightning adresa na prijรญmanie platieb z kaลพdej Lightning peลaลพenky, alebo zapy na Nostr sieti.",
- "minibitsTitle": "Tvoja Minibits adresa",
- "ownAddrDesc": "Pouลพรญvaลก vlastnรบ Nostr adresu na prijรญmanie a posielanie ecash. Nie je moลพnรฉ prijรญmaลฅ Nostr zapy ani Lightning platby na tรบto adresu.",
- "ownAddrTitle": "Tvoja vlastnรก adresa peลaลพenky",
- "title": "Vytvoriลฅ adresu peลaลพenky"
- },
+ "profileOnboarding_desc": "Tvoja minibits.cash adresa peลaลพenky ti umoลพnรญ prijรญmaลฅ ecash cez zaลกifrovanรฉ sprรกvy v sieti Nostr. Tieลพ funguje ako tvoja Lightning adresa, na ktorรบ mรดลพeลก prijรญmaลฅ platby z akejkoฤพvek Lightning peลaลพenky, alebo zapy na sieti Nostr.",
+ "profileOnboarding_minibitsDesc": "Zdieฤพaj svoju adresu peลaลพenky, aby si mohol na ลu prijaลฅ ecash cez ลกifrovanรฉ sprรกvy v sieti Nostr. Tieลพ funguje ako tvoja Lightning adresa na prijรญmanie platieb z kaลพdej Lightning peลaลพenky, alebo zapy na Nostr sieti.",
+ "profileOnboarding_minibitsTitle": "Tvoja Minibits adresa",
+ "profileOnboarding_ownAddrDesc": "Pouลพรญvaลก vlastnรบ Nostr adresu na prijรญmanie a posielanie ecash. Nie je moลพnรฉ prijรญmaลฅ Nostr zapy ani Lightning platby na tรบto adresu.",
+ "profileOnboarding_ownAddrTitle": "Tvoja vlastnรก adresa peลaลพenky",
+ "profileOnboarding_title": "Vytvoriลฅ adresu peลaลพenky",
"profilePublicKeyMismatchError": "Verejnรฝ kฤพรบฤ profilu z relay je inรฝ ako tvoj kฤพรบฤ peลaลพneky. Resetuj tento profil v nastaveniach sรบkromia.",
- "profileScreen": {
- "changeAvatar": "Zmeล obrรกzok",
- "changeAvatarSubtext": "Vyber jeden z nรกhodne vygenerovanรฝch obrรกzkov.",
- "changeWalletaddress": "Zmeล adresu peลaลพenky",
- "changeWalletaddressSubtext": "Zmeล adresu peลaลพenky. Vyber z nรกhodne generovanรฝch, alebo si zvoฤพ svoju vlastnรบ."
- },
+ "profileScreen_batchReceive": "Dรกvkovรฝ prรญjem",
+ "profileScreen_batchReceiveDesc": "Odporรบฤanรฉ pre veฤพkรฝch zberateฤพov zapov. Ak je do tvojej lightning adresy prijatรฝch viac platieb alebo zapov, zhlukni ich do jednej.",
+ "profileScreen_changeAvatar": "Zmeล obrรกzok",
+ "profileScreen_changeAvatarSubtext": "Vyber jeden z nรกhodne vygenerovanรฝch obrรกzkov.",
+ "profileScreen_changeWalletaddress": "Zmeล adresu peลaลพenky",
+ "profileScreen_changeWalletaddressSubtext": "Zmeล adresu peลaลพenky. Vyber z nรกhodne generovanรฝch, alebo si zvoฤพ svoju vlastnรบ.",
"profileToRecoverDesc": "Toto je adresa peลaลพenky prepojenรก s tvojim seed kฤพรบฤom. Ak stlaฤรญลก Dokonฤiลฅ, tvoj profil sa zaktualizuje na uvedenรบ adresu a seed kฤพรบฤ.",
"pushNotifications": "Push notifikรกcie",
- "qr": {
- "fail": "Nejde zobraziลฅ QR kรณd, skopรญruj ho, alebo poลกli token na platiteฤพovu adresu peลaลพenky."
- },
+ "qr_fail": "Nejde zobraziลฅ QR kรณd, skopรญruj ho, alebo poลกli token na platiteฤพovu adresu peลaลพenky.",
+ "qrCodeAnimateButton": "Animovaลฅ",
+ "qrCodeNewFormatButton": "Novรฝ",
+ "qrCodeOldFormatButton": "Starรฝ",
+ "qrCodeStaticButton": "Statickรฝ",
+ "readyToDonateMore": "Chceลก darovaลฅ viac?",
"receiverMemo": "Sprรกva pre prijรญmateฤพa",
- "receiveScreen": {
- "memoFromSender": "Sprรกva od odosielateฤพa",
- "newMintsAdded": {
- "one": "%{{count}} mint bol pridanรฝ do tvojej peลaลพenky",
- "other": "%{{count}} minty boli pridanรฉ do tvojej peลaลพenky"
- },
- "pasteoReceiveDescription": "Vloลพ ecash token do peลaลพenky",
- "pasteToReceive": "Vloลพ",
- "received": "Prijatรก suma",
- "scanToReceive": "Skenuj alebo vloลพ na prijatie",
- "scanToReceiveDescription": "Skenuj alebo vloลพ token alebo LNURL-w kรณd na prijatie do peลaลพenky.",
- "scanWithdrawalLink": "Skenu linku pre vรฝber",
- "sharePaymentRequest": "Poลกli poลพiadavku na platbu",
- "sharePaymentRequestDescription": "Poลกli poลพiadavku na platbu jednรฉmu zo svojich kontaktov, aby ti mohol zaplatiลฅ presnรบ sumu.",
- "showOrShareInvoice": "Zdieฤพaj Lightning invoice",
- "showOrShareInvoiceDescription": "Zobraz alebo zdieฤพaj Lightning invoice pre sumu, ktorรบ chceลก prijaลฅ.",
- "status": "Status",
- "title": "Prijaลฅ",
- "toReceive": "Suma na prรญjem"
- },
- "exportEcash": "Exportuj ecash",
+ "receiveScreen_lockedToUnknownPK": "Nedรก sa odomknรบลฅ",
+ "receiveScreen_lockedToWalletPK": "Zamknutรฉ na tvoje kฤพรบฤe",
+ "receiveScreen_memoFromSender": "Sprรกva od odosielateฤพa",
+ "receiveScreen_newMintsAdded_one": "%{{count}} mint bol pridanรฝ do tvojej peลaลพenky",
+ "receiveScreen_newMintsAdded_other": "%{{count}} minty boli pridanรฉ do tvojej peลaลพenky",
+ "receiveScreen_pasteoReceiveDescription": "Vloลพ ecash token do peลaลพenky",
+ "receiveScreen_pasteToReceive": "Vloลพ",
+ "receiveScreen_received": "Prijatรก suma",
+ "receiveScreen_scanToReceive": "Skenuj alebo vloลพ na prijatie",
+ "receiveScreen_scanToReceiveDescription": "Skenuj alebo vloลพ token alebo LNURL-w kรณd na prijatie do peลaลพenky.",
+ "receiveScreen_scanWithdrawalLink": "Skenu linku pre vรฝber",
+ "receiveScreen_sharePaymentRequest": "Poลกli poลพiadavku na platbu",
+ "receiveScreen_sharePaymentRequestDescription": "Poลกli poลพiadavku na platbu jednรฉmu zo svojich kontaktov, aby ti mohol zaplatiลฅ presnรบ sumu.",
+ "receiveScreen_showOrShareInvoice": "Zdieฤพaj Lightning invoice",
+ "receiveScreen_showOrShareInvoiceDescription": "Zobraz alebo zdieฤพaj Lightning invoice pre sumu, ktorรบ chceลก prijaลฅ.",
+ "receiveScreen_status": "Status",
+ "receiveScreen_title": "Prijaลฅ",
+ "receiveScreen_toReceive": "Suma na prรญjem",
+ "recoverToWallet": "Obnoviลฅ do peลaลพenky",
+ "recovery_addressLinkedToSeed": "Toto je adresa peลaลพenky prepojenรก s poskytnutรฝm seedom.",
+ "recovery_completeCTA": "รplnรฉ zotavenie",
+ "recovery_completed": "Obnova dokonฤenรก",
+ "recovery_completing": "Dokonฤuje sa obnova...",
+ "recovery_doNotLoseEcashDesc": "Tvoja sรบฤasnรก mnemonickรก veta peลaลพenky sa NEZMENร. Uchovaj ju na bezpeฤnom mieste!",
+ "recovery_doNotLoseEcashTitle": "Nestrรกลฅ svoj ecash!",
+ "recovery_failed": "Obnova zlyhala",
+ "recovery_findAddressCTA": "Nรกjsลฅ adresu peลaลพenky",
+ "recovery_foundAddrParam": "Nรกjdenรฉ %{addr}",
+ "recovery_foundPendingProofsAmount": "Nรกjdenรฉ %{amount} ฤakajรบce na overenie...",
+ "recovery_foundProofsAmount": "Nรกjdenรฉ dรดkazy %{amount} ...",
+ "recovery_intervalParam": "Interval obnovy %{startIndex} - %{endIndex} ยท ",
+ "recovery_keysetID": "ID sady kฤพรบฤov %{id} ( %{unit} )",
+ "recovery_missingMnemonicSeedProfileError": "Chรฝbajรบca poฤiatoฤnรก frรกza, poฤiatoฤnรฉ heslo alebo profil, ktorรฉ je potrebnรฉ obnoviลฅ.",
+ "recovery_mnemonicCollision": "Existuje poฤiatoฤnรก frรกza",
+ "recovery_mnemonicCollisionDesc": "Vaลกa peลaลพenka uลพ mรก inรบ seed frรกzu vo svojom bezpeฤnom รบloลพisku. Proces obnovy funguje iba s novo nainลกtalovanou peลaลพenkou, aby sa prediลกlo strate vaลกich finanฤnรฝch prostriedkov.",
+ "recovery_noKeysetSelected": "Vyberte sadu kฤพรบฤov.",
+ "recovery_noMintSelected": "Prosรญm, vyberte si mincovลu.",
+ "recovery_noWalletForSeedError": "Na serveri sa nenaลกla adresa peลaลพenky prepojenรก s vaลกรญm seedom.",
+ "recovery_ownKeysImportAgain": "Pouลพili ste adresu peลaลพenky %{addr} s vlastnรฝmi kฤพรบฤmi, importujte ju znova.",
+ "recovery_recoverAddress": "Obnoviลฅ adresu",
+ "recovery_recoveredResult": "%{formattedCurrency} %{code} boli obnovenรฉ do vaลกej peลaลพenky.",
+ "recovery_recoveringAddress": "Obnovuje sa adresa peลaลพenky...",
+ "recovery_restoringFromParam": "Obnova z %{hostname} ...",
+ "recovery_resultErrors": "Obnova skonฤila s chybami.",
+ "recovery_resultExpired": "V tomto intervale obnovy sa niฤ nenaลกlo.",
+ "recovery_resultSpent": "Dobrou sprรกvou je, ลพe uลพ bola nรกjdenรก pouลพitรก elektronickรก hotovosลฅ. Pokraฤujte s ฤalลกรญm intervalom obnovy.",
+ "recovery_seedFromCurrentDeviceError": "Semenรก z tohto zariadenia nie je moลพnรฉ pouลพiลฅ.",
+ "recovery_selectAnotherKeyset": " ยท Vybraลฅ inรฝ",
+ "recovery_selectKeyset": "Vyberte sadu kฤพรบฤov, ktorรก sa mรก pouลพiลฅ na obnovenie",
+ "recovery_selectMintFrom": "Vyberte mรคtu, z ktorej sa mรก zotaviลฅ.",
+ "recovery_setManually": "Nastaviลฅ manuรกlne",
+ "recovery_spentProofsAmount": "%{amount} dรดkazy uลพ boli pouลพitรฉ...",
+ "recovery_startIndexDesc": "Pouลพรญva sa na zvรฝลกenie poฤiatoฤnรฉho indexu intervalu obnovy, napr. v prรญpade opakovanej obnovy. Musรญte vedieลฅ, pri akom indexe ste dokonฤili predchรกdzajรบcu obnovu, inak vรกm uniknรบ peniaze na obnovu.",
+ "recovery_starting": "Spรบลกลฅa sa obnova...",
+ "recovery_success": "รspeลกnรฉ zotavenie!",
+ "recoveryConfirmButton": "Potvrdiลฅ",
+ "recoveryEnterMeltQuote": "Zadaj melt quote",
+ "recoveryEnterMintQuote": "Zadaj mint quote",
+ "recoveryExperimentalTools": "Experimentรกlne nรกstroje",
+ "recoveryFromMints": "Zotavenie z mรคtovรฝch cukrรญkov",
+ "recoveryFromMintsDesc": "Identifikujte mincovne, z ktorรฝch chcete zรญskaลฅ spรคลฅ svoje hotovostnรฉ peniaze, a pridajte ich do zoznamu.",
+ "recoveryIncreaseButton": "Zvรฝลกiลฅ",
+ "recoveryIndexesIncSuccess": "Indexy obnovy zvรฝลกenรฉ o %{indCount}",
+ "recoveryInsertMnemonic": "Vloลพiลฅ รบvodnรบ frรกzu",
+ "recoveryInsertMnemonicDesc": "Vloลพte alebo prepรญลกte 12-slovnรบ frรกzu na obnovenie zostatku na vaลกom bankovom รบฤte a adresy peลaลพenky na tomto zariadenรญ. Slovรก oddeฤพte medzerami.",
+ "recoveryInsertMnemonicDescAddrOnly": "Vloลพte alebo prepรญลกte 12-slovnรบ frรกzu na obnovenie adresy peลaลพenky na tomto zariadenรญ. Slovรก oddeฤพte medzerami.",
+ "recoveryInsertMnemonicDescImportBackup": "Vloลพte alebo prepรญลกte 12-slovnรบ frรกzu na obnovenie adresy peลaลพenky na tomto zariadenรญ. Slovรก oddeฤพte medzerami.",
+ "recoveryInvalidMeltQuote": "Neplatnรฝ melt quote",
+ "recoveryInvalidMintQuote": "Neplatnรฝ mint quote",
+ "recoveryInvalidMnemonicError": "Neplatnรก รบvodnรก frรกza. Zadajte postupnosลฅ 12 slov oddelenรฝch medzerami.",
+ "recoveryMeltQuoteDesc": "Pokรบsiลฅ sa znovu prijaลฅ neminutรฝ ecash z dokonฤenej Lightning platby.",
+ "recoveryMeltQuoteTitle": "Obnoviลฅ melt quote vรฝdavok",
+ "recoveryMeltSuccessMessage": "รspeลกne obnovenรฝch %{amount} SAT z poskytnutej melt quote.",
+ "recoveryMintEcashButton": "Vytvoriลฅ ecash",
+ "recoveryMintQuoteDesc": "Pokรบsiลฅ sa znovu vytvoriลฅ ecash z uลพ zaplatenej mint quote.",
+ "recoveryMintQuoteTitle": "Obnoviลฅ mint quote",
+ "recoveryMintSuccessMessage": "รspeลกne vytvorenรฝch %{amount} SAT z poskytnutej mint quote.",
+ "recoveryOpenSettingsButton": "Otvoriลฅ nastavenia",
+ "recoveryOptionsFromBackup": "Obnoviลฅ zo zรกlohy",
+ "recoveryOptionsFromBackupDescription": "Importovaลฅ zรกlohu exportovanรบ z inej peลaลพenky Minibits. Jednoduchรก moลพnosลฅ, ak prechรกdzate na novรฉ zariadenie.",
+ "recoveryOptionsFromSeed": "Zotavenie zo semien",
+ "recoveryOptionsFromSeedDescription": "Pouลพite 12-slovnรบ รบvodnรบ frรกzu na obnovenie stratenรฝch elektronickรฝch peลazรญ s pomocou mincovnรญ. Pouลพite v prรญpade straty zariadenia.",
+ "recoveryOptionsTitle": "Moลพnosti obnovenia",
+ "recoveryPermissionNeededDesc": "Minibits potrebuje povolenie na zobrazenie notifikรกcie poฤas behu tejto รบlohy.",
+ "recoveryPermissionNeededTitle": "Potrebnรฉ povolenie",
+ "recoveryRecoverChangeButton": "Obnoviลฅ vรฝdavok",
+ "recoveryRemoveButton": "Odstrรกniลฅ",
+ "recoveryScreen_confirm": "Potvrdiลฅ",
+ "recoveryScreen_experimentalTools": "Experimentรกlne nรกstroje",
+ "recoveryScreen_increase": "Zvรฝลกiลฅ",
+ "recoveryScreen_recoverMeltQuoteChange": "Obnoviลฅ melt quote vรฝdavok",
+ "recoveryScreen_recoverMeltQuoteChangeDesc": "Pokรบsiลฅ sa znovu prijaลฅ neminutรฝ ecash z dokonฤenej Lightning platby.",
+ "recoveryScreen_recoverMintQuote": "Obnoviลฅ mint quote",
+ "recoveryScreen_recoverMintQuoteDesc": "Pokรบsiลฅ sa znovu vytvoriลฅ ecash z uลพ zaplatenej mint quote.",
+ "recoveryScreen_remove": "Odstrรกniลฅ",
+ "recoveryScreen_selectMintToRecoverFrom": "Vyber mint na obnovu",
+ "recoveryScreen_start": "Zaฤaลฅ",
+ "recoverySelectMintTitle": "Vyber mint na obnovu",
+ "recoveryStartButton": "Zaฤaลฅ",
+ "recoverySuccessTitle": "รspech!",
"relayExists": "Relay uลพ existuje",
"relays": "Relays",
+ "relaysSetYourRelay": "Nastav svoj vlastnรฝ relay",
"relayurlPasteError": "Skopรญruj relay URL, potom vloลพ.",
"removeRelay": "Odstrรกล relay",
"removingMintLostBalanceWarning": "Tvoja peลaลพenka mรก od tejto mint ecahs a nenulovรฝm zostatkom. Ak ju odstrรกniลก, ecash bude vymazanรฝ.",
@@ -322,53 +445,73 @@
"resetCompletedDetail": "Reset ukonฤenรฝ. %{transCount} nedรกvnych transakciรญ bolo naฤรญtanรฝch z databรกzy.",
"resetOwnProfile": "Resetovaลฅ vlastnรฝ profil",
"resetOwnProfileDesc": "Prestaลฅ pouลพรญvaลฅ vlastnรบ Nostr adresu a znovu vytvoriลฅ Minibits profil.",
- "scanReceiveExtractFail": "Nenaลกiel sa ecash token ani LNURL vรฝber na prijatie.",
- "scanScreen": {
- "onPasteEmptyClipboard": "Najprv skopรญruj ecash token, invoice, LNURL kรณd, alebo lightning adresu. Potom vloลพ."
- },
- "securityScreen": {
- "biometry": "Biometrickรก autentifikรกcia",
- "biometryAvailable": "Biometrickรก autentifikรกcia je potrebnรก na vstup do Minibits.",
- "biometryNone": "Nenastavil si biometrickรบ autentifikรกciu, alebo ju tvoj mobil nepodporuje.",
- "biometricAuth": "Biometrickรก autentifikรกcia",
- "biometricAuthDescription": "Vyลพaduj biometrickรบ autentifikรกciu na vstup do Minibits."
- },
- "sendScreen": {
- "pasteToSend": "Vloลพiลฅ",
- "pasteToSendDescription": "Vloลพ Lightning invoice zo schrรกnky, aby si ju zaplatil.",
- "scanToPay": "Skenuj na zaplatenie",
- "scanToPayDescription": "Skenuj invoice, LNURL kรณd, alebo Lightning address kam chceลก platiลฅ.",
- "sendToContact": "Poลกli na kontakt",
- "sendToContactDescription": "Poลกli ecash na kontakt uloลพenรฝ v tvojom zozname",
- "showOrShareToken": "Zdieฤพaj ecash",
- "showOrShareTokenDescription": "Zobraz alebo zdieฤพaj ecash token na sumu, ktorรบ chceลก poslaลฅ",
- "title": "Poslaลฅ",
- "memo": "Sprรกva pre prijรญmateฤพa"
- },
"saveContactPrivate": "Uloลพ ako sรบkromnรฝ kontakt",
"saveContactPrivateDesc": "Uloลพ %{nip05} do svojich sรบkromnรฝch kontaktov a plaลฅ rรฝchlejลกie.",
+ "scanReceiveExtractFail": "Nenaลกiel sa ecash token ani LNURL vรฝber na prijatie.",
+ "scanScreen_onPasteEmptyClipboard": "Najprv skopรญruj ecash token, invoice, LNURL kรณd, alebo lightning adresu. Potom vloลพ.",
+ "securityScreen_biometricAuth": "Biometrickรก autentifikรกcia",
+ "securityScreen_biometricAuthDescription": "Vyลพaduj biometrickรบ autentifikรกciu na vstup do Minibits.",
+ "securityScreen_biometry": "Biometrickรก autentifikรกcia",
+ "securityScreen_biometryAvailable": "Biometrickรก autentifikรกcia je potrebnรก na vstup do Minibits.",
+ "securityScreen_biometryNone": "Nenastavil si biometrickรบ autentifikรกciu, alebo ju tvoj mobil nepodporuje.",
+ "securityScreenTitle": "Bezpeฤnosลฅ",
+ "seedRecoveryMints": "Minty",
+ "seedRecoveryScreenTitle": "Obnova peลaลพenky",
+ "seedRecoveryStep2": "2",
+ "sendCreateToken": "Vytvoriลฅ token",
+ "sendLock": "Zamknรบลฅ",
+ "sendLockEcash": "Zamknรบลฅ ecash",
+ "sendLockEcashDesc": "Zamkni ecash token pre jeden z tvojich kontaktov alebo na verejnรฝ kฤพรบฤ. Iba prรญjemca ho bude mรดcลฅ odomknรบลฅ.",
+ "sendLocked": "Zamknutรฉ",
+ "sendLockFor": "Zamknรบลฅ pre",
+ "sendOfflineExactDenoms": "Offline mรดลพeลก poslaลฅ len presnรฉ denominรกcie ecash.",
+ "sendScreen_memo": "Sprรกva pre prijรญmateฤพa",
+ "sendScreen_pasteToSend": "Vloลพiลฅ",
+ "sendScreen_pasteToSendDescription": "Vloลพ Lightning invoice zo schrรกnky, aby si ju zaplatil.",
+ "sendScreen_scanToPay": "Skenuj na zaplatenie",
+ "sendScreen_scanToPayDescription": "Skenuj invoice, LNURL kรณd, alebo Lightning address kam chceลก platiลฅ.",
+ "sendScreen_sendToContact": "Poลกli na kontakt",
+ "sendScreen_sendToContactDescription": "Poลกli ecash na kontakt uloลพenรฝ v tvojom zozname",
+ "sendScreen_showOrShareToken": "Zdieฤพaj ecash",
+ "sendScreen_showOrShareTokenDescription": "Zobraz alebo zdieฤพaj ecash token na sumu, ktorรบ chceลก poslaลฅ",
+ "sendScreen_title": "Poslaลฅ",
+ "sendSelectEcashToSend": "Vyber ecash na odoslanie",
+ "sendToContact": "Poslaลฅ kontaktu",
"setStartIndex": "Nastav zaฤiatoฤnรฝ index",
- "settingsScreen": {
- "backupRecovery": "Zรกlohovanie a obnova",
- "devOptions": "Vรฝvojรกrske nastavenia",
- "go": "Poฤme na to!",
- "mintsCount": {
- "one": "{{count}} mint",
- "other": "{{count}} minty"
- },
- "preferredUnit": "Preferovanรก mena",
- "exchangeCurrency": "Zobraziลฅ zostatok v mene",
- "theme": "Tรฉma",
- "privacy": "Sรบkromie",
- "security": "Bezpeฤnosลฅ",
- "title": "Nastavenia",
- "update": "Sprรกvca aktualizรกciรญ"
+ "settingsScreen_backup": "Zรกloha",
+ "settingsScreen_backupRecovery": "Zรกlohovanie a obnova",
+ "settingsScreen_currencyNone": "ลฝiadna",
+ "settingsScreen_devOptions": "Vรฝvojรกrske nastavenia",
+ "settingsScreen_doNotLoadRates": "Nenaฤรญtavaลฅ vรฝmennรฉ kurzy",
+ "settingsScreen_exchangeCurrency": "Zobraziลฅ zostatok v mene",
+ "settingsScreen_go": "Poฤme na to!",
+ "settingsScreen_mintsCount": {
+ "one": "{{count}} mint",
+ "other": "{{count}} minty"
},
- "share": {
- "cancelled": "Zdieฤพanie zruลกenรฉ",
- "contactAddress": "Zdieฤพaj kontakt"
+ "settingsScreen_nwcSubtext": {
+ "one": "%{count} povolenรก aplikรกcia",
+ "other": "%{count} povolenรก aplikรกcie"
},
+ "settingsScreen_nwcTitle": "Nostr Wallet Connect",
+ "settingsScreen_preferredUnit": "Preferovanรก mena",
+ "settingsScreen_privacy": "Sรบkromie",
+ "settingsScreen_recovery": "Obnova",
+ "settingsScreen_relaysCount": {
+ "one": "%{count} relay",
+ "other": "%{count} relays"
+ },
+ "settingsScreen_restartTheme": "Reลกtartuj peลaลพenku na aplikovanie novej tรฉmy.",
+ "settingsScreen_security": "Bezpeฤnosลฅ",
+ "settingsScreen_theme": "Tรฉma",
+ "settingsScreen_title": "Nastavenia",
+ "settingsScreen_update": "Sprรกvca aktualizรกciรญ",
+ "settingsScreen_updateAvailable": "1 aktualizรกcia",
+ "share_cancelled": "Zdieฤพanie zruลกenรฉ",
+ "share_contactAddress": "Zdieฤพaj kontakt",
"shareWalletAddress": "Zdieฤพaj adresu peลaลพenky",
+ "shareWalletNpub": "Verejnรฝ kฤพรบฤ peลaลพenky (NPUB)",
+ "shareWalletPubkey": "Verejnรฝ kฤพรบฤ peลaลพenky (HEX) pre zdieฤพanie",
"showErrors": "Zobraz chyby",
"showOnboarding": "Zobraz opรคลฅ รบvod",
"showOnboardingDesc": "Choฤ cez รบvodnรฉ obrazovkz po reลกtarte Minibits.",
@@ -376,182 +519,189 @@
"syncCompleted": "Synchronizรกcia hotovรก.",
"syncOwnProfile": "Synchronizuj svoj profil",
"syncOwnProfileDesc": "Synchronizuj svoj profil a obrรกzok s aktuรกlnymi รบdajmi z Nostr relays",
- "tabNavigator": {
- "contactsLabel": "Kontakty",
- "settingsLabel": "Nastavenia",
- "walletLabel": "Peลaลพenka"
- },
- "tokenReceiveScreen": {
- "onPasteEmptyClipboard": "Najprv skopรญruj ecash token, potom vloลพ.",
- "topupWithLightning": "Pridaj cez Lightning"
- },
- "topup": {
- "failed": "Pridanie zlyhalo",
- "mint": "Mint na pridanie",
- "missingMintAddFirst": "Najprv pridaj mint",
- "missingMintAddFirstDesc": "Nemรกลก pridanรฝ mint, ktorรฝ mรดลพe prijaลฅ ecash.",
- "nostrDMreceived": "nostr:%{npub} sent you Lightning invoice for %{amount} %{currency} from Minibits wallet!",
- "relayMissingSentEvent": "Relay nepotvrdil, ลพe sprรกva bola publikovanรก.",
- "sendToNip": "Poลกli na %{sendTonip05}",
- "to": "Pridaj do",
- "withLightning": "Pridaj cez Lightning",
- "sendToContact": "Poลกli na kontakt",
- "withdrawalAvailable": "Vรฝber je k dispozรญcii",
- "withdrawAvailableDesc": "Vybraลฅ si mรดลพeลก do sumy %{amount} %{code}",
- "invoiceCreatedParam": "Invoice na %{amount} %{code} vytvorenรก",
- "withdraw": "Vรฝber",
- "sendRequest": "Poลกli poลพiadavku",
- "invoiceCreatedDescParam": "Vybranรก mint na pridanie je"
- },
- "tranDetailScreen": {
- "amount": "Suma",
- "balanceAfter": "Zostatok po transakcii",
- "claim": "Vybraลฅ",
- "createdAt": "Vytvorenรฉ",
- "expiresAt": "Expiruje",
- "id": "ID",
- "invoice": "Lightning invoice na zaplatenie",
- "isOffline": "Vybraลฅ online",
- "lightningFee": "Lightning poplatok",
- "fee": "Poplatok",
- "memoFromInvoice": "Poznรกmka z invoice",
- "memoFromSender": "Sprรกva od odosielateฤพa",
- "receiveOfflineComplete": "Vybraลฅ do peลaลพenky",
- "revert": "Vrรกtiลฅ",
- "sentFrom": "Poslanรฉ od",
- "sentTo": "Poslanรฉ komu",
- "eventUrl": "Zapovanรก sprรกva",
- "status": "Status",
- "topupTo": "Pridanรฉ do",
- "trasferredTo": "Zaplatenรฉ komu",
- "type": "Typ",
- "addYourNote": "Pridaj sรบkromnรบ poznรกmku",
- "addTags": "Pridaj tagy",
- "backedUpEcash": "Zรกloha ecash",
- "successRetrieveEcashAfterRetry": "Ecash bol prijatรฝ po opรคtovnom opakovanรญ. Novรก transakcia vytvorenรก.",
- "retryToReceive": "Skรบs znova prijaลฅ",
- "auditTrail": "Auditnรฝ zรกznam",
- "modalSuccess": "Hotovo!",
- "pendingToken": "ฤakajรบci token",
- "retryToComplete": "Skรบs znova dokonฤiลฅ",
- "invoiceToPay": "Invoice na zaplatenie",
- "invoiceNotPaid": "Invoice nezaplatenรก",
- "invoiceExpired": "Invoice expiroval",
- "topupError": "Chyba pridania",
- "proof": "Potvrdenie platby"
- },
- "transactionCommon": {
- "feePaid": "Zaplatenรฝ poplatok",
- "from": "Od %{sender}",
- "paidFrom": "Zaplatenรฉ od",
- "paidTo": "Zaplatenรฉ komu %{receiver}",
- "receivedFrom": "Prijatรฉ od %{sender}",
- "receivedTo": "Prijatรฉ do",
- "receiveFailed": "Prijatie zlyhalo",
- "redeemOnline": "Vyplaลฅ online",
- "reverted": "Transakcia vrรกtenรก",
- "sentTo": "Poslanรฉ na %{receiver}",
- "status": {
- "blocked": "Blokovanรฉ",
- "completedFee": "Ukonฤenรฉ %{fee}",
- "draft": "Zadanรฉ",
- "error": "Chyba",
- "expired": "Expirovanรฉ",
- "pending": "ฤakajรบce",
- "prepared": "Pripravenรฉ",
- "reverted": "Vrรกtenรฉ",
- "spent": "Minutรฉ",
- "unspent": "Neminutรฉ"
- },
- "tapToRedeem": "Stlaฤ na vyplatenie",
- "unknown": "Neznรกma transakcia",
- "youPaid": "Zaplatil si",
- "youReceived": "Prijal si",
- "youSent": "Poslal si"
- },
- "transferScreen": {
- "insufficientFunds": "Nie je dostatoฤnรฝ zostatok %{currency} na zaplatenie sumy invoice a poplatku: %{amount} %{currency}",
- "LUD18unsupported": "Minibits eลกte nepodporuje zadanie รบdajov platiteฤพa (LUD1รก)",
- "noMintWithBalance": "Neexistuje ลพiaden mint so zostatkom %{unit} z ktorรฉho je moลพnรฉ uskutoฤniลฅ platbu.",
- "selectMintFrom": "Vyber mint z ktorรฉho platรญลก",
- "requestInvoice": "Pokraฤovaลฅ"
- },
- "updateScreen": {
- "gotoPlayStore": "Prejdi do Play Store",
- "nativeUpdateAvailableDesc": "Novรก natรญvna verzia Minibits peลaลพenky je na Google Play Store.",
- "updateAvailable": "Aktulizรกcia je k dispozรญcii",
- "updateAvailableDesc": "Mรกme novรบ Minibits aktualizรกciu pripravenรบ na stiahnutie a inลกtalรกciu.",
- "updateNew": "ฤo je novรฉ?",
- "updateNotAvailable": "ลฝiadna aktualizรกcia nie je k dispozรญcii",
- "updateNotAvailableDesc": "Fajn, mรกลก najnovลกiu verziu aplikรกcie.",
- "updateNow": "Aktualizuj a reลกtartuj",
- "updateSize": "Veฤพkosลฅ balรญka",
- "downloading": "Sลฅahujem aktualizรกciu...",
- "installing": "Inลกtalujem aktualizรกciu...",
- "updateManagerTitle": "Sprรกvca aktualizรกciรญ",
- "defaultUpdateDesc": "Vylepลกenia vรฝkonu a UX",
- "apkOnGithub": "APK na Github"
- },
- "userErrorMissingLightningData": "Chรฝbajรบca Lightning invoice, LNURL kรณd, alebo adresa.",
+ "tabNavigator_contactsLabel": "Kontakty",
+ "tabNavigator_settingsLabel": "Nastavenia",
+ "tabNavigator_transactionsLabel": "Transakcie",
+ "tabNavigator_walletLabel": "Peลaลพenka",
+ "tokenReceiveScreen_onPasteEmptyClipboard": "Najprv skopรญruj ecash token, potom vloลพ.",
+ "tokenReceiveScreen_scan": "Skenovaลฅ",
+ "tokenReceiveScreen_topupWithLightning": "Pridaj cez Lightning",
+ "topup_failed": "Pridanie zlyhalo",
+ "topup_invoiceCreatedDescParam": "Vybranรก mint na pridanie je",
+ "topup_invoiceCreatedParam": "Invoice na %{amount} %{code} vytvorenรก",
+ "topup_mint": "Mint na pridanie",
+ "topup_missingMintAddFirst": "Najprv pridaj mint",
+ "topup_missingMintAddFirstDesc": "Nemรกลก pridanรฝ mint, ktorรฝ mรดลพe prijaลฅ ecash.",
+ "topup_nostrDMreceived": "nostr:%{npub} sent you Lightning invoice for %{amount} %{currency} from Minibits wallet!",
+ "topup_relayMissingSentEvent": "Relay nepotvrdil, ลพe sprรกva bola publikovanรก.",
+ "topup_sendRequest": "Poลกli poลพiadavku",
+ "topup_sendToContact": "Poลกli na kontakt",
+ "topup_sendToNip": "Poลกli na %{sendTonip05}",
+ "topup_to": "Pridaj do",
+ "topup_withdraw": "Vรฝber",
+ "topup_withdrawalAvailable": "Vรฝber je k dispozรญcii",
+ "topup_withdrawAvailableDesc": "Vybraลฅ si mรดลพeลก do sumy %{amount} %{code}",
+ "topup_withLightning": "Pridaj cez Lightning",
+ "topupScreen_done": "Hotovo",
+ "topupScreen_invoiceToPay": "Invoice na zaplatenie",
+ "tranDetailScreen_addTags": "Pridaj tagy",
+ "tranDetailScreen_addYourNote": "Pridaj sรบkromnรบ poznรกmku",
+ "tranDetailScreen_amount": "Suma",
+ "tranDetailScreen_auditTrail": "Auditnรฝ zรกznam",
+ "tranDetailScreen_auditTrailDesc": "Detailnรฝ zรกznam vaลกej transakcie",
+ "tranDetailScreen_backedUpEcash": "Zรกloha ecash",
+ "tranDetailScreen_balanceAfter": "Zostatok po transakcii",
+ "tranDetailScreen_claim": "Vybraลฅ",
+ "tranDetailScreen_createdAt": "Vytvorenรฉ",
+ "tranDetailScreen_eventUrl": "Zapovanรก sprรกva",
+ "tranDetailScreen_expiresAt": "Expiruje",
+ "tranDetailScreen_fee": "Poplatok",
+ "tranDetailScreen_id": "ID",
+ "tranDetailScreen_inputs": "Vstupy",
+ "tranDetailScreen_invoice": "Lightning invoice na zaplatenie",
+ "tranDetailScreen_invoiceExpired": "Invoice expiroval",
+ "tranDetailScreen_invoiceNotPaid": "Invoice nezaplatenรก",
+ "tranDetailScreen_invoiceToPay": "Invoice na zaplatenie",
+ "tranDetailScreen_isOffline": "Vybraลฅ online",
+ "tranDetailScreen_lightningFee": "Lightning poplatok",
+ "tranDetailScreen_memoFromInvoice": "Poznรกmka z invoice",
+ "tranDetailScreen_memoFromSender": "Sprรกva od odosielateฤพa",
+ "tranDetailScreen_modalSuccess": "Hotovo!",
+ "tranDetailScreen_outputs": "Vรฝstupy",
+ "tranDetailScreen_paymentId": "ID platby",
+ "tranDetailScreen_pendingToken": "ฤakajรบci token",
+ "tranDetailScreen_proof": "Potvrdenie platby",
+ "tranDetailScreen_receiveOfflineComplete": "Vybraลฅ do peลaลพenky",
+ "tranDetailScreen_retryToComplete": "Skรบs znova dokonฤiลฅ",
+ "tranDetailScreen_retryToReceive": "Skรบs znova prijaลฅ",
+ "tranDetailScreen_revert": "Vrรกtiลฅ",
+ "tranDetailScreen_sentFrom": "Poslanรฉ od",
+ "tranDetailScreen_sentTo": "Poslanรฉ komu",
+ "tranDetailScreen_status": "Status",
+ "tranDetailScreen_successRetrieveEcashAfterRetry": "Ecash bol prijatรฝ po opรคtovnom opakovanรญ. Novรก transakcia vytvorenรก.",
+ "tranDetailScreen_tokenTracking": "Sledovanie tokenov",
+ "tranDetailScreen_tokenTrackingDesc": "Zaznamenanรฉ ecash tokeny na รบฤely ladenia",
+ "tranDetailScreen_topupError": "Chyba pridania",
+ "tranDetailScreen_topupTo": "Pridanรฉ do",
+ "tranDetailScreen_trasferredTo": "Zaplatenรฉ komu",
+ "tranDetailScreen_type": "Typ",
+ "tranHistory_deleteErrored": "Zmaลพ transakcie s chybami",
+ "tranHistory_deleteErroredDesc": "Toto zmaลพe %{count} chybnรฝch transakciรญ",
+ "tranHistory_deleteExpired": "Zmaลพ expirovanรฉ",
+ "tranHistory_deleteExpiredDesc": "Toto zmaลพe %{count} expirovanรฝch transakciรญ",
+ "tranHistory_deleteReverted": "Zmaลพ vrรกtenรฉ",
+ "tranHistory_deleteRevertedDesc": "Toto zmaลพe %{count} vrรกtenรฝch transakciรญ",
+ "tranHistory_listIsComplete": "Zoznam je ukonฤenรฝ",
+ "tranHistory_noTransToShow": "ลฝiadne transakcie na zobrazenie",
+ "tranHistory_pendingParam": "%{param} ฤakajรบcich transakciรญ",
+ "tranHistory_showingPaginationPending": "Zobrazujem %{amount} z %{total} ฤakajรบcich",
+ "tranHistory_showingPaginationTotal": "Zobrazujem %{amount} z %{total} celkovo",
+ "tranHistory_viewMore": "Zobraziลฅ viac",
+ "tranHistoryScreen_title": "Histรณria",
+ "transactionCommon_fee": "Poplatok",
+ "transactionCommon_feePaid": "Zaplatenรฝ poplatok",
+ "transactionCommon_from": "Od %{sender}",
+ "transactionCommon_paidFrom": "Zaplatenรฉ od",
+ "transactionCommon_paidTo": "Zaplatenรฉ komu %{receiver}",
+ "transactionCommon_payNow": "Zaplatiลฅ teraz",
+ "transactionCommon_payTo": "Zaplatiลฅ pre %{receiver}",
+ "transactionCommon_receivedFrom": "Prijatรฉ od %{sender}",
+ "transactionCommon_receivedTo": "Prijatรฉ do",
+ "transactionCommon_receiveFailed": "Prijatie zlyhalo",
+ "transactionCommon_redeemOnline": "Vyplaลฅ online",
+ "transactionCommon_reverted": "Transakcia vrรกtenรก",
+ "transactionCommon_sentTo": "Poslanรฉ na %{receiver}",
+ "transactionCommon_status_blocked": "Blokovanรฉ",
+ "transactionCommon_status_completed": "Dokonฤenรฉ",
+ "transactionCommon_status_completedFee": "Ukonฤenรฉ %{fee}",
+ "transactionCommon_status_draft": "Zadanรฉ",
+ "transactionCommon_status_error": "Chyba",
+ "transactionCommon_status_expired": "Expirovanรฉ",
+ "transactionCommon_status_pending": "ฤakajรบce",
+ "transactionCommon_status_prepared": "Pripravenรฉ",
+ "transactionCommon_status_recovered": "Zotavenรฉ",
+ "transactionCommon_status_reverted": "Vrรกtenรฉ",
+ "transactionCommon_status_spent": "Minutรฉ",
+ "transactionCommon_status_unspent": "Neminutรฉ",
+ "transactionCommon_tapToRedeem": "Stlaฤ na vyplatenie",
+ "transactionCommon_unknown": "Neznรกma transakcia",
+ "transactionCommon_youPaid": "Zaplatil si",
+ "transactionCommon_youReceived": "Prijal si",
+ "transactionCommon_youSent": "Poslal si",
+ "transferScreen_donationSuccessMessage": "Dar pre %{donationForName} bol รบspeลกne zaplatenรฝ a vaลกa adresa peลaลพenky bola aktualizovanรก. ฤakujeme!",
+ "transferScreen_insufficientFunds": "Nie je dostatoฤnรฝ zostatok %{currency} na zaplatenie sumy invoice a poplatku: %{amount} %{currency}",
+ "transferScreen_LUD18unsupported": "Minibits eลกte nepodporuje zadanie รบdajov platiteฤพa (LUD1รก)",
+ "transferScreen_noMintWithBalance": "Neexistuje ลพiaden mint so zostatkom %{unit} z ktorรฉho je moลพnรฉ uskutoฤniลฅ platbu.",
+ "transferScreen_requestInvoice": "Pokraฤovaลฅ",
+ "transferScreen_selectMintFrom": "Vyber mint z ktorรฉho platรญลก",
"unspentOnlyRecoverable": "Iba neminutรฉ potvrdenia je moลพnรฉ obnoviลฅ.",
+ "updateModal_desc": "Aktualizรกcie poskytujรบ novรฉ funkฤnosti a dรดleลพitรฉ opravy. Pozri si detaily v sprรกvcovi aktualizรกciรญ.",
+ "updateModal_title": "Novรก Minibits verzia je k dispozรญcii",
+ "updateScreen_apkOnGithub": "APK na Github",
+ "updateScreen_couldNotRetrieveUpdate": "Nepodarilo sa zรญskaลฅ informรกcie o aktualizรกcii",
+ "updateScreen_defaultUpdateDesc": "Vylepลกenia vรฝkonu a UX",
+ "updateScreen_downloading": "Sลฅahujem aktualizรกciu...",
+ "updateScreen_gotoPlayStore": "Prejdi do Play Store",
+ "updateScreen_installing": "Inลกtalujem aktualizรกciu...",
+ "updateScreen_nativeUpdateAvailableDesc": "Novรก natรญvna verzia Minibits peลaลพenky je na Google Play Store.",
+ "updateScreen_updateAvailable": "Aktulizรกcia je k dispozรญcii",
+ "updateScreen_updateAvailableDesc": "Mรกme novรบ Minibits aktualizรกciu pripravenรบ na stiahnutie a inลกtalรกciu.",
+ "updateScreen_updateInProgress": "Prebieha aktualizรกcia...",
+ "updateScreen_updateManagerTitle": "Sprรกvca aktualizรกciรญ",
+ "updateScreen_updateNew": "ฤo je novรฉ?",
+ "updateScreen_updateNotAvailable": "ลฝiadna aktualizรกcia nie je k dispozรญcii",
+ "updateScreen_updateNotAvailableDesc": "Fajn, mรกลก najnovลกiu verziu aplikรกcie.",
+ "updateScreen_updateNow": "Aktualizuj a reลกtartuj",
+ "updateScreen_updateSize": "Veฤพkosลฅ balรญka",
+ "userErrorMissingLightningData": "Chรฝbajรบca Lightning invoice, LNURL kรณd, alebo adresa.",
+ "wallerScreen_mintButton": "Mint",
"walletAddressRecovery": "Obnovenie adresy peลaลพenky",
"walletAddressRecoveryDesc": "Pomocou mnemonickej vety z inรฉho mobilu prenes svoju pรดvodnรบ adresu peลaลพenky na tento mobil. Tรกto funkcia neobnovuje zostatok ecash.",
- "walletScreen": {
- "feeBadge": {
- "final": "+ poplatok %{fee} %{code}",
- "upto": "+ poplatok do %{fee} %{code}"
- },
- "mintExists": "Tento mint uลพ existuje",
- "paymentSentSuccess": "Poลพiadavka na platbu bola odoslanรก.",
- "sendEcash": "Poลกli ecash",
- "sendEcashDesc": "Zdieฤพaj ecash alebo poลกli ecash jednรฉmu zo svojich kontaktov",
- "payWithLightning": "Zaplaลฅ cez Lightning",
- "payWithLightningDesc": "Zaplaลฅ invoice alebo na Lightning adresu",
- "receiveEcash": "Prijmi ecash",
- "topupWithLightning": "Pridaj cez Lightning",
- "topupWithLightningDesc": "Vytvor Lightning invoice na pridanie ecash",
- "receiveEcashDesc": "Vloลพ alebo skenuj ecash token",
- "addFirstMint": "Pridaj prvรฝ mint",
- "topup": "Pridaj",
- "pay": "Zaplaลฅ"
- },
+ "walletNameScreen_ownNameTab": "Vlastnรฉ meno",
+ "walletNameScreen_randomNameTab": "Nรกhodnรฉ meno",
+ "walletScreen_addFirstMint": "Pridaj prvรฝ mint",
+ "walletScreen_andOtherMints": "a %{count} ฤalลกรญ",
+ "walletScreen_andOtherMints_plural": "a %{count} ฤalลกรญch",
+ "walletScreen_feeBadge_final": "+ poplatok %{fee} %{code}",
+ "walletScreen_feeBadge_upto": "+ poplatok do %{fee} %{code}",
+ "walletScreen_mintExists": "Tento mint uลพ existuje",
+ "walletScreen_pay": "Zaplaลฅ",
+ "walletScreen_paymentSentSuccess": "Poลพiadavka na platbu bola odoslanรก.",
+ "walletScreen_payWithLightning": "Zaplaลฅ cez Lightning",
+ "walletScreen_payWithLightningDesc": "Zaplaลฅ invoice alebo na Lightning adresu",
+ "walletScreen_receiveEcash": "Prijmi ecash",
+ "walletScreen_receiveEcashDesc": "Vloลพ alebo skenuj ecash token",
+ "walletScreen_sendEcash": "Poลกli ecash",
+ "walletScreen_sendEcashDesc": "Zdieฤพaj ecash alebo poลกli ecash jednรฉmu zo svojich kontaktov",
+ "walletScreen_spentToday": "Dnes minutรฉ",
+ "walletScreen_startByFunding": "Zaฤni doplnenรญm peลaลพenky",
+ "walletScreen_topup": "Pridaj",
+ "walletScreen_topupWithLightning": "Pridaj cez Lightning",
+ "walletScreen_topupWithLightningDesc": "Vytvor Lightning invoice na pridanie ecash",
"warning": "Upozornenie",
- "welcomeScreen": {
- "lastPageConfirmButton": "Jasnรฉ, poฤme do peลaลพenky",
- "lastPageRecoverLostWalletButton": "Obnov stratenรบ peลaลพenku",
- "generatingWalletSeedStatusMessage": "Vytvรกram seed kฤพรบฤ peลaลพenky, mรดลพe to chvรญฤพu trvaลฅ"
- },
- "contactHasNoLightningAddrUseEcash": "Tento kontakt nemรก Lightning adresu, namiesto toho poลกli ecash.",
- "tranHistory": {
- "showingPaginationPending": "Zobrazujem %{amount} z %{total} ฤakajรบcich",
- "showingPaginationTotal": "Zobrazujem %{amount} z %{total} celkovo",
- "pendingParam": "%{param} ฤakajรบcich transakciรญ",
- "listIsComplete": "Zoznam je ukonฤenรฝ",
- "viewMore": "Zobraziลฅ viac",
- "noTransToShow": "ลฝiadne transakcie na zobrazenie",
- "deleteExpired": "Zmaลพ expirovanรฉ",
- "deleteExpiredDesc": "Toto zmaลพe %{count} expirovanรฝch transakciรญ",
- "deleteErrored": "Zmaลพ transakcie s chybami",
- "deleteErroredDesc": "Toto zmaลพe %{count} chybnรฝch transakciรญ",
- "deleteReverted": "Zmaลพ vrรกtenรฉ",
- "deleteRevertedDesc": "Toto zmaลพe %{count} vrรกtenรฝch transakciรญ"
- },
- "updateModal": {
- "title": "Novรก Minibits verzia je k dispozรญcii",
- "desc": "Aktualizรกcie poskytujรบ novรฉ funkฤnosti a dรดleลพitรฉ opravy. Pozri si detaily v sprรกvcovi aktualizรกciรญ."
- },
- "wallerScreen": {
- "mintButton": "Mint"
- },
- "mintInfo": {
- "emptyValueParam": "%{param} neposkytnutรฝ.",
- "loadingNamePlaceholder": "Naฤรญtavam...",
- "loadingUnitsPlaceholder": "Naฤรญtavam...",
- "descriptionHeading": "Popis",
- "motd": "Dรดleลพitรก sprรกva",
- "contactsHeading": "Kontakty",
- "nutsHeading": "Podporovanรฉ NUTs",
- "mintMeltHeading": "Limity",
- "keyValueInfoCardHeading": "Viac info"
- }
+ "welcomeScreen_creatingKeys": "Vytvรกram kฤพรบฤe peลaลพenky...",
+ "welcomeScreen_creatingProfile": "Vytvรกram profil peลaลพenky...",
+ "welcomeScreen_generatingWalletSeedStatusMessage": "Vytvรกram seed kฤพรบฤ peลaลพenky, mรดลพe to chvรญฤพu trvaลฅ",
+ "welcomeScreen_lastPageConfirmButton": "Jasnรฉ, poฤme do peลaลพenky",
+ "welcomeScreen_lastPageRecoverLostWalletButton": "Obnov stratenรบ peลaลพenku",
+ "welcomeScreen_offlineWarning": "Uisti sa, ลพe si online pre nastavenie novej peลaลพenky.",
+ "welcomeScreen_page1_bullet1": "Minibity sa riadia protokolom Cashu, kde mince vymieลajรบ e-hotovosลฅ za Bitcoin.",
+ "welcomeScreen_page1_bullet2": "Elektronickรฉ peniaze sa vydรกvajรบ alebo konvertujรบ spรคลฅ na Bitcoin okamลพite prostrednรญctvom platieb Lightning.",
+ "welcomeScreen_page1_bullet3": "Tokeny Ecash sรบ uloลพenรฉ v zariadenรญ; mincovne neuchovรกvajรบ รบฤtovnรฉ knihy ani zostatky v peลaลพenkรกch.",
+ "welcomeScreen_page1_final": "Nie, Watson, neexistuje ลพiadny blockchain.",
+ "welcomeScreen_page1_heading": "Vitajte",
+ "welcomeScreen_page1_intro": "Minibits je peลaลพenka pre elektronickรฉ peniaze a Lightning, ktorรก sa zameriava na jednoduchรฉ pouลพรญvanie a bezpeฤnosลฅ. Ecash je digitรกlne podpรญsanรฝ token vydanรฝ sprรกvcami znรกmymi ako mints.",
+ "welcomeScreen_page2_bullet1": "Minibits poskytuje bezplatnรบ Lightning adresu, ktorรก tieลพ umoลพลuje okamลพitรฉ prevody hotovosti cez Nostr.",
+ "welcomeScreen_page2_bullet2": "Prvotriedna podpora pre odosielanie a prijรญmanie zapov na Nostre, vrรกtane Nostr Wallet Connect.",
+ "welcomeScreen_page2_bullet3": "ล ifrovanรฉ push notifikรกcie v reรกlnom ฤase a podpora pre e-hotovosลฅ vydanรบ v inรฝch menรกch ako Bitcoin.",
+ "welcomeScreen_page2_final": "Minibits je bezplatnรฝ softvรฉr s otvorenรฝm zdrojovรฝm kรณdom. Nรกลก plรกn a prรญspevky nรกjdete na GitHub.",
+ "welcomeScreen_page2_heading": "Preฤo Minibity?",
+ "welcomeScreen_page2_intro": "Cieฤพom Minibits je preskรบmaลฅ, ako mรดลพu elektronickรฉ peniaze pomรดcลฅ ฤพuฤom pouลพรญvaลฅ Bitcoin tรฝm, ลพe ponรบkajรบ bezproblรฉmovรฝ onboarding, nรญzke poplatky, jednoduchรฉ pouลพรญvanie a silnรฉ sรบkromie.",
+ "welcomeScreen_page3_bullet1": "Mรคtovรฉ cukrรญky sรบ zรกmerne urฤenรฉ na uchovรกvanie. Vyrรกbajte si vlastnรฉ cukrรญky alebo ich pouลพรญvajte iba na vรฝskum a testovanie.",
+ "welcomeScreen_page3_bullet2": "Elektronickรฉ peniaze sรบ uloลพenรฉ vo vaลกom zariadenรญ. Ak sa stratia, elektronickรฉ peniaze sa stratia, pokiaฤพ si bezpeฤne nezรกlohujete svoju poฤiatoฤnรบ frรกzu.",
+ "welcomeScreen_page3_bullet3": "Minibits ponรบka vlastnรบ mincovลu na testovanie s malรฝmi sumami. Funguje na princรญpe โnajlepลกie moลพnรฉ รบsilieโ bez akรฝchkoฤพvek zรกruk.",
+ "welcomeScreen_page3_final": "Teraz, poฤme presunรบลฅ nejakรฉ peniaze v hotovosti!",
+ "welcomeScreen_page3_go": "Poฤme!",
+ "welcomeScreen_page3_heading": "Nezabudnite",
+ "welcomeScreen_page3_intro": "Protokol Cashu aj peลaลพenka Minibits sรบ experimentรกlne. Ich pouลพรญvanรญm akceptujete znรกme aj neznรกme rizikรก."
}
\ No newline at end of file
diff --git a/src/navigation/TabsNavigator.tsx b/src/navigation/TabsNavigator.tsx
index d69188b9..f9adc350 100644
--- a/src/navigation/TabsNavigator.tsx
+++ b/src/navigation/TabsNavigator.tsx
@@ -174,28 +174,28 @@ export const TabsNavigator = createBottomTabNavigator({
WalletNavigator: {
screen: WalletStack,
options: {
- tabBarLabel: translate("tabNavigator.walletLabel"),
+ tabBarLabel: translate("tabNavigator_walletLabel"),
tabBarIcon: ({ focused, color }) => ,
}
},
TransactionsNavigator: {
screen: TransactionsStack,
options: {
- tabBarLabel: translate("tabNavigator.transactionsLabel"),
+ tabBarLabel: translate("tabNavigator_transactionsLabel"),
tabBarIcon: ({ focused, color }) => ,
}
},
ContactsNavigator: {
screen: ContactsStack,
options: {
- tabBarLabel: translate("tabNavigator.contactsLabel"),
+ tabBarLabel: translate("tabNavigator_contactsLabel"),
tabBarIcon: ({ focused, color }) => ,
}
},
SettingsNavigator: {
screen: SettingsStack,
options: {
- tabBarLabel: translate("tabNavigator.settingsLabel"),
+ tabBarLabel: translate("tabNavigator_settingsLabel"),
tabBarIcon: ({ focused, color }) => ,
}
},
diff --git a/src/screens/BackupOptionsScreen.tsx b/src/screens/BackupOptionsScreen.tsx
index ae3af90d..fbb64572 100644
--- a/src/screens/BackupOptionsScreen.tsx
+++ b/src/screens/BackupOptionsScreen.tsx
@@ -49,7 +49,7 @@ export const BackupOptionsScreen = observer(function () {
onLeftPress={() => navigation.goBack()}
/>
-
+
{
const amountNum = round(toNumber(amountToRequest) * precision, 0)
if (!amountNum || amountNum <= 0) {
- infoMessage(translate("payCommon.amountZeroOrNegative"))
+ infoMessage(translate("payCommon_amountZeroOrNegative"))
return
}
const balances = proofsStore.getMintBalancesWithUnit(unit)
if (balances.length === 0) {
infoMessage(
- translate("topup.missingMintAddFirst"),
- translate("topup.missingMintAddFirstDesc"),
+ translate("topup_missingMintAddFirst"),
+ translate("topup_missingMintAddFirstDesc"),
)
return
}
@@ -390,7 +390,7 @@ return (
)}
@@ -434,8 +434,8 @@ return (
mintBalances={availableMintBalances}
selectedMintBalance={mintBalanceToReceiveTo}
unit={unit}
- title={'Mint to receive'}
- confirmTitle={translate("cashuPaymentRequest.create")}
+ title={translate('cashuPaymentRequestTitle')}
+ confirmTitle={translate("cashuPaymentRequest_create")}
onMintBalanceSelect={onMintBalanceSelect}
onCancel={onMintBalanceCancel}
onMintBalanceConfirm={onMintBalanceConfirm}
@@ -446,7 +446,7 @@ return (
<>
@@ -459,7 +459,7 @@ return (
ContentComponent={
<>
)}
>
@@ -489,7 +489,7 @@ return (
@@ -507,13 +507,13 @@ return (
@@ -525,13 +525,13 @@ return (
diff --git a/src/screens/ContactDetailScreen.tsx b/src/screens/ContactDetailScreen.tsx
index 65294018..b34a8267 100644
--- a/src/screens/ContactDetailScreen.tsx
+++ b/src/screens/ContactDetailScreen.tsx
@@ -100,7 +100,7 @@ export const ContactDetailScreen = observer(function ({ route }: Props) {
contactsStore.saveNote(contact.pubkey, note || '')
setIsNoteEditing(false)
} catch (e: any) {
- setInfo(translate('common.saveFailParam', { param: e.message }))
+ setInfo(translate('commonSaveFailParam', { param: e.message }))
}
}
@@ -119,7 +119,7 @@ export const ContactDetailScreen = observer(function ({ route }: Props) {
try {
Clipboard.setString(contact.npub)
} catch (e: any) {
- setInfo(translate('common.copyFailParam', { param: e.message }))
+ setInfo(translate('commonCopyFailParam', { param: e.message }))
}
}
@@ -245,7 +245,7 @@ export const ContactDetailScreen = observer(function ({ route }: Props) {
@@ -253,7 +253,7 @@ export const ContactDetailScreen = observer(function ({ route }: Props) {
@@ -278,7 +278,7 @@ export const ContactDetailScreen = observer(function ({ route }: Props) {
@@ -307,13 +307,13 @@ export const OwnName = observer(function (props: {pubkey: string}) {
}
- footerTx='contactsScreen.ownName.chooseOwnNameFooter'
+ footerTx='contactsScreen_ownName_chooseOwnNameFooter'
footerStyle={{color: hint, textAlign: 'center'}}
/>
) : (
@@ -323,7 +323,7 @@ export const OwnName = observer(function (props: {pubkey: string}) {
@@ -333,13 +333,13 @@ export const OwnName = observer(function (props: {pubkey: string}) {
{donationInvoice ? (
<>
@@ -351,7 +351,7 @@ export const OwnName = observer(function (props: {pubkey: string}) {
text='Minibits'
style={{fontFamily: 'Gluten-Regular', fontSize: 18}}
/>{' '}
-
+
-
+
>
)}
@@ -424,13 +424,13 @@ export const OwnName = observer(function (props: {pubkey: string}) {
diff --git a/src/screens/Contacts/PrivateContacts.tsx b/src/screens/Contacts/PrivateContacts.tsx
index d56baa4f..2886a139 100644
--- a/src/screens/Contacts/PrivateContacts.tsx
+++ b/src/screens/Contacts/PrivateContacts.tsx
@@ -83,7 +83,7 @@ export const PrivateContacts = observer(function (props: {
log.trace('Start', newContactName, 'saveNewContact')
if(!newContactName) {
- setInfo(translate("contactsScreen.privateContacts.saveNewFormat"))
+ setInfo(translate("contactsScreen_privateContacts_saveNewFormat"))
return
}
@@ -119,7 +119,7 @@ export const PrivateContacts = observer(function (props: {
const profileRecord = await MinibitsClient.getWalletProfileByNip05(newContactName + MINIBITS_NIP05_DOMAIN)
if(!profileRecord) {
- warningMessage(translate("contactsScreen.privateContacts.profileNotFound", {
+ warningMessage(translate("contactsScreen_privateContacts_profileNotFound", {
name: newContactName + MINIBITS_NIP05_DOMAIN
}))
setIsLoading(false)
@@ -289,16 +289,16 @@ export const PrivateContacts = observer(function (props: {
leftIcon="faComment"
leftIconInverse={true}
leftIconColor={colors.palette.iconGreen200}
- tx='contactsScreen.privateContacts.explainerText'
- subTx="contactsScreen.privateContacts.explainerSubText"
+ tx='contactsScreen_privateContacts_explainerText'
+ subTx="contactsScreen_privateContacts_explainerSubText"
onPress={gotoNew}
/>
@@ -322,7 +322,7 @@ export const PrivateContacts = observer(function (props: {
onPress={gotoNew}
style={[{backgroundColor: mainButtonColor, borderWidth: 1, borderColor: screenBg}, $buttonNew]}
preset='tertiary'
- text='Add'
+ tx='buttonAdd'
/>
@@ -330,11 +330,11 @@ export const PrivateContacts = observer(function (props: {
isVisible={isNewContactModalVisible ? true : false}
ContentComponent={
-
+
)}
}
@@ -530,22 +530,22 @@ export const PublicContacts = observer(function (props: {
<>
>
@@ -557,7 +557,7 @@ export const PublicContacts = observer(function (props: {
isVisible={isNpubModalVisible}
ContentComponent={
-
+
-
}
@@ -596,7 +596,7 @@ export const PublicContacts = observer(function (props: {
isVisible={isRelayModalVisible ? true : false}
ContentComponent={
-
+
{newPublicRelay && (
-
+
)}
-
+
}
diff --git a/src/screens/Contacts/RandomName.tsx b/src/screens/Contacts/RandomName.tsx
index 868082aa..0eede078 100644
--- a/src/screens/Contacts/RandomName.tsx
+++ b/src/screens/Contacts/RandomName.tsx
@@ -57,7 +57,7 @@ export const RandomName = observer(function (props: {pubkey: string}) {
const confirmSelectedName = async function () {
if (!selectedName) {
- setInfo(translate('contactsScreen.randomName.selectOneOfUsernames'))
+ setInfo(translate('contactsScreen_randomName_selectOneOfUsernames'))
return
}
@@ -108,7 +108,7 @@ export const RandomName = observer(function (props: {pubkey: string}) {
confirmSelectedName()}
- tx="common.confirm"
+ tx="commonConfirm"
style={{marginTop: spacing.medium, minWidth: 120}}
/>
diff --git a/src/screens/DeveloperScreen.tsx b/src/screens/DeveloperScreen.tsx
index aab4b797..49de1e57 100644
--- a/src/screens/DeveloperScreen.tsx
+++ b/src/screens/DeveloperScreen.tsx
@@ -106,16 +106,16 @@ export const DeveloperScreen = observer(function DeveloperScreen({ route }: Prop
const deletePending = async function () {
Alert.alert(
- translate("common.confirmAlertTitle"),
+ translate("commonConfirmAlertTitle"),
"This action can not be undone. Use only in development or testing.",
[
{
- text: translate('common.cancel'),
+ text: translate('commonCancel'),
style: 'cancel',
onPress: () => { /* Action canceled */ },
},
{
- text: translate('common.confirm'),
+ text: translate('commonConfirm'),
onPress: async () => {
try {
setIsLoading(true)
@@ -146,16 +146,16 @@ export const DeveloperScreen = observer(function DeveloperScreen({ route }: Prop
const movePendingToSpendable = async function () {
Alert.alert(
- translate("common.confirmAlertTitle"),
+ translate("commonConfirmAlertTitle"),
"This action may cause transactions failure. Use only as a recovery path agreed with support.",
[
{
- text: translate('common.cancel'),
+ text: translate('commonCancel'),
style: 'cancel',
onPress: () => { /* Action canceled */ },
},
{
- text: translate('common.confirm'),
+ text: translate('commonConfirm'),
onPress: async () => {
try {
setIsLoading(true)
@@ -199,16 +199,16 @@ export const DeveloperScreen = observer(function DeveloperScreen({ route }: Prop
const factoryReset = async function () {
Alert.alert(
- translate("common.confirmAlertTitle"),
+ translate("commonConfirmAlertTitle"),
translate("factoryResetUserConfirmDesc"),
[
{
- text: translate('common.cancel'),
+ text: translate('commonCancel'),
style: 'cancel',
onPress: () => { /* Action canceled */ },
},
{
- text: translate('common.confirm'),
+ text: translate('commonConfirm'),
onPress: async () => {
setIsLoading(true)
try {
@@ -250,7 +250,7 @@ export const DeveloperScreen = observer(function DeveloperScreen({ route }: Prop
@@ -259,7 +259,7 @@ export const DeveloperScreen = observer(function DeveloperScreen({ route }: Prop
style={[$card]}
HeadingComponent={
userSettingsStore.setIsOnboarded(false)}
/>
diff --git a/src/screens/ErrorScreen/ErrorDetails.tsx b/src/screens/ErrorScreen/ErrorDetails.tsx
index 3050e94f..81bd3161 100644
--- a/src/screens/ErrorScreen/ErrorDetails.tsx
+++ b/src/screens/ErrorScreen/ErrorDetails.tsx
@@ -20,8 +20,8 @@ export function ErrorDetails(props: ErrorDetailsProps) {
>
-
-
+
+
@@ -37,7 +37,7 @@ export function ErrorDetails(props: ErrorDetailsProps) {
preset="secondary"
style={$resetButton}
onPress={props.onReset}
- tx="errorScreen.reset"
+ tx="errorScreen_reset"
/>
)
diff --git a/src/screens/ExportBackupScreen.tsx b/src/screens/ExportBackupScreen.tsx
index 2dced78f..734c61e4 100644
--- a/src/screens/ExportBackupScreen.tsx
+++ b/src/screens/ExportBackupScreen.tsx
@@ -174,12 +174,12 @@ export const ExportBackupScreen = function ExportBackup({ route }: Props) {
'Do you want to swap your wallet ecash for proofs with optimal denominations? The size of your backup will decrease.',
[
{
- text: translate('common.cancel'),
+ text: translate('commonCancel'),
style: 'cancel',
onPress: () => { /* Action canceled */ },
},
{
- text: translate('common.confirm'),
+ text: translate('commonConfirm'),
onPress: async () => {
// Moves all wallet proofs to pending in transactions
// split by mints and by units and in offline mode.
@@ -404,7 +404,7 @@ export const ExportBackupScreen = function ExportBackup({ route }: Props) {
@@ -414,7 +414,7 @@ export const ExportBackupScreen = function ExportBackup({ route }: Props) {
<>
{totalProofsCount > 0 && (
@@ -437,7 +437,7 @@ export const ExportBackupScreen = function ExportBackup({ route }: Props) {
)}
{mintsStore.mintCount > 0 && (
@@ -452,7 +452,7 @@ export const ExportBackupScreen = function ExportBackup({ route }: Props) {
)}
{contactsStore.count > 0 && (
@@ -490,7 +490,7 @@ export const ExportBackupScreen = function ExportBackup({ route }: Props) {
)}
@@ -530,13 +530,13 @@ export const ExportBackupScreen = function ExportBackup({ route }: Props) {
@@ -548,13 +548,13 @@ export const ExportBackupScreen = function ExportBackup({ route }: Props) {
diff --git a/src/screens/ImportBackupScreen.tsx b/src/screens/ImportBackupScreen.tsx
index f4a0d379..c3ed3b71 100644
--- a/src/screens/ImportBackupScreen.tsx
+++ b/src/screens/ImportBackupScreen.tsx
@@ -103,7 +103,7 @@ export const ImportBackupScreen = observer(function ImportBackupScreen({ route }
const onConfirmMnemonic = async function () {
try {
if(!mnemonic) {
- throw new AppError(Err.VALIDATION_ERROR, translate('backupScreen.missingMnemonicError'))
+ throw new AppError(Err.VALIDATION_ERROR, translate('backupMissingMnemonicError'))
}
LayoutAnimation.easeInEaseOut()
@@ -130,7 +130,7 @@ export const ImportBackupScreen = observer(function ImportBackupScreen({ route }
if(profile.nip05.includes(MINIBITS_NIP05_DOMAIN)) {
setProfileToRecover(profile)
} else {
- setInfo(translate("recovery.ownKeysImportAgain", { addr: profile.nip05 }))
+ setInfo(translate("recovery_ownKeysImportAgain", { addr: profile.nip05 }))
setIsNewProfileNeeded(true)
}
} catch (e: any) {
@@ -216,7 +216,7 @@ export const ImportBackupScreen = observer(function ImportBackupScreen({ route }
throw new AppError(Err.VALIDATION_ERROR, 'Missing wallet spnapshot decoded from backup.')
}
- setStatusMessage(translate("recovery.starting"))
+ setStatusMessage(translate("recovery_starting"))
setIsLoading(true)
// import wallet snapshot into the state
@@ -270,12 +270,12 @@ export const ImportBackupScreen = observer(function ImportBackupScreen({ route }
const onCompleteAddress = async () => {
try {
if(!seedHashRef.current || !seedRef.current) {
- throw new AppError(Err.VALIDATION_ERROR, translate('backupScreen.missingMnemonicOrSeedError'))
+ throw new AppError(Err.VALIDATION_ERROR, translate('backupMissingMnemonicOrSeedError'))
}
// create a new walletId and Nostr key pair after a new install or factory reset
// and keep provided seed
setIsLoading(true)
- setStatusMessage(translate("recovery.recoveringAddress"))
+ setStatusMessage(translate("recovery_recoveringAddress"))
const keys = KeyChain.generateWalletKeys()
// Set seed to the provided one
@@ -315,7 +315,7 @@ export const ImportBackupScreen = observer(function ImportBackupScreen({ route }
await mintsStore.addMint(MINIBITS_MINT_URL)
}
- setStatusMessage(translate('recovery.completed'))
+ setStatusMessage(translate('recovery_completed'))
// go directly to the wallet (profile hase been rehydrated from the one with the seed)
// @ts-ignore
@@ -346,15 +346,15 @@ export const ImportBackupScreen = observer(function ImportBackupScreen({ route }
return (
-
+
@@ -398,7 +398,7 @@ export const ImportBackupScreen = observer(function ImportBackupScreen({ route }
style={$card}
ContentComponent={
}
style={$item}
@@ -423,12 +423,12 @@ export const ImportBackupScreen = observer(function ImportBackupScreen({ route }
{backup ? (
) : (
)
}
diff --git a/src/screens/LightningPayScreen.tsx b/src/screens/LightningPayScreen.tsx
index 5c95294d..51af01f8 100644
--- a/src/screens/LightningPayScreen.tsx
+++ b/src/screens/LightningPayScreen.tsx
@@ -66,7 +66,7 @@ export const LightningPayScreen = function LightningPayScreen({ route }: Props)
setMint(mint)
}
- if (!isInternetReachable) setInfo(translate('common.offlinePretty'))
+ if (!isInternetReachable) setInfo(translate('commonOfflinePretty'))
} catch (e: any) {
handleError(e)
}
@@ -88,7 +88,7 @@ export const LightningPayScreen = function LightningPayScreen({ route }: Props)
const onPaste = async function() {
const clipboard = await Clipboard.getString()
if (clipboard.length === 0) {
- infoMessage(translate('lightningPayScreen.onPasteEmptyClipboard'))
+ infoMessage(translate('lightningPayScreen_onPasteEmptyClipboard'))
return
}
setLightningData(clipboard)
@@ -178,7 +178,7 @@ export const LightningPayScreen = function LightningPayScreen({ route }: Props)
@@ -188,7 +188,7 @@ export const LightningPayScreen = function LightningPayScreen({ route }: Props)
}
@@ -236,13 +236,13 @@ export const LightningPayScreen = function LightningPayScreen({ route }: Props)
}
/>
{
@@ -263,7 +263,7 @@ export const LightningPayScreen = function LightningPayScreen({ route }: Props)
}
/>
(
}
{mintInfo && }
{mintInfo && }
@@ -247,7 +247,7 @@ export const MintInfoScreen = observer(function MintInfoScreen({ route }: Props)
@@ -274,8 +274,8 @@ export const MintInfoScreen = observer(function MintInfoScreen({ route }: Props)
)}
-
-
+
+
@@ -352,8 +352,8 @@ function MintLimitsCard(props: { info: GetInfoResponse, limitInfo: ReturnType
)
@@ -438,7 +438,7 @@ function NutsCard(props: {info: GetInfoResponse}) {
const smallNutCols = 4
return (
) : (
<>
@@ -501,7 +501,7 @@ function ContactCard(props: { info: GetInfoResponse, popupMessage: (msg: string)
topSeparator={index !== 0}
onLongPress={() => {
Clipboard.setString(info)
- props.popupMessage(translate('common.copySuccessParam', { param: info }))
+ props.popupMessage(translate('commonCopySuccessParam', { param: info }))
}}
/>
))}
@@ -526,7 +526,7 @@ function MintInfoDetails(props: { info: GetInfoResponse, popupMessage: (msg: str
style={{fontStyle: 'italic'}}
size="xs"
key={key}
- text={translate('mintInfo.emptyValueParam', { param: key })}
+ text={translate('mintInfo_emptyValueParam', { param: key })}
/>
let stringValue = isObj(value) ? JSON.stringify(value) : value.toString() ?? ''
@@ -537,7 +537,7 @@ function MintInfoDetails(props: { info: GetInfoResponse, popupMessage: (msg: str
const handleLongPress = () => {
if (stringValue.trim() === '') return;
Clipboard.setString(stringValue)
- props.popupMessage(translate('common.copySuccessParam', { param: stringValue }))
+ props.popupMessage(translate('commonCopySuccessParam', { param: stringValue }))
}
// @ts-ignore no-implicit-any
diff --git a/src/screens/Mints/MintBalanceSelector.tsx b/src/screens/Mints/MintBalanceSelector.tsx
index 822b34f7..78c736b5 100644
--- a/src/screens/Mints/MintBalanceSelector.tsx
+++ b/src/screens/Mints/MintBalanceSelector.tsx
@@ -109,7 +109,7 @@ export const MintBalanceSelector = observer(function (props: {
ListFooterComponent={props.mintBalances.length > 1 && collapsible ? (
))
}
- tx={'common.cancel'}
+ tx={'commonCancel'}
onPress={props.onCancel}
/>
diff --git a/src/screens/MintsScreen.tsx b/src/screens/MintsScreen.tsx
index cdc5e9fe..dc157fa5 100644
--- a/src/screens/MintsScreen.tsx
+++ b/src/screens/MintsScreen.tsx
@@ -79,7 +79,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
new URL(url)
setMintUrl(url)
} catch (e) {
- setInfo(translate('mintsScreen.invalidUrl'))
+ setInfo(translate('mintsScreen_invalidUrl'))
}
}
@@ -106,7 +106,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
setIsAddMintVisible(false)
if (mintsStore.alreadyExists(mintUrl)) {
- const msg = translate('mintsScreen.mintExists')
+ const msg = translate('mintsScreen_mintExists')
log.trace(msg)
setInfo(msg)
return
@@ -116,7 +116,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
toggleAddMintModal() // close
setIsLoading(true)
await mintsStore.addMint(mintUrl)
- setInfo(translate('mintsScreen.mintAdded'))
+ setInfo(translate('mintsScreen_mintAdded'))
} catch (e: any) {
setMintUrl('')
handleError(e)
@@ -191,7 +191,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
if (!selectedMint) {return}
if(mintsStore.allMints.length === 1) {
- setInfo('You need to keep at least 1 mint.')
+ setInfo(translate('mintsScreen_keepAtLeastOneMint'))
return
}
@@ -209,14 +209,14 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
message,
[
{
- text: translate('common.cancel'),
+ text: translate('commonCancel'),
style: 'cancel',
onPress: () => {
// Action canceled
},
},
{
- text: translate('common.confirm'),
+ text: translate('commonConfirm'),
onPress: () => {
try {
onMintUnselect()
@@ -228,7 +228,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
if (pendingProofsByMint && pendingProofsByMint.length > 0) {
proofsStore.removeProofs(pendingProofsByMint, true)
}
- setInfo(translate('mintsScreen.mintRemoved'))
+ setInfo(translate('mintsScreen_mintRemoved'))
} catch (e: any) {
handleError(e)
}
@@ -242,7 +242,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
if (!selectedMint) return
try {
mintsStore.blockMint(selectedMint as Mint)
- setInfo(translate('mintsScreen.mintBlocked'))
+ setInfo(translate('mintsScreen_mintBlocked'))
} catch (e: any) {
handleError(e)
} finally {
@@ -254,7 +254,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
if (!selectedMint) return
try {
mintsStore.unblockMint(selectedMint as Mint)
- setInfo(translate('mintsScreen.mintUnblocked'))
+ setInfo(translate('mintsScreen_mintUnblocked'))
} catch (e: any) {
handleError(e)
} finally {
@@ -308,7 +308,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
ContentComponent={
<>
{!mintsStore.alreadyExists(defaultMintUrl) && (
@@ -391,7 +391,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
@@ -399,7 +399,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
@@ -407,14 +407,14 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
@@ -429,7 +429,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
@@ -447,7 +447,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
/>
{selectedMint ? (
) : (
@@ -506,7 +506,7 @@ export const MintsScreen = observer(function MintsScreen({ route }: Props) {
{selectedMint && (
-
+
diff --git a/src/screens/NwcScreen.tsx b/src/screens/NwcScreen.tsx
index 2c305098..23e3f06f 100644
--- a/src/screens/NwcScreen.tsx
+++ b/src/screens/NwcScreen.tsx
@@ -8,6 +8,7 @@ import {useHeader} from '../utils/useHeader'
import {useStores} from '../models'
import AppError, { Err } from '../utils/AppError'
import { log } from '../services'
+import { translate } from '../i18n'
import { verticalScale } from '@gocodingnow/rn-size-matters'
import { NwcConnection } from '../models/NwcStore'
import { QRCodeBlock } from './Wallet/QRCode'
@@ -94,7 +95,7 @@ export const NwcScreen = observer(function NwcScreen(_props) {
if(!isRemoteDataPushEnabled) {
setSelectedConnection(undefined)
nwcStore.receiveNwcEventsQueue()
- setInfo(`Your device can not receive background push messages. This is essential to recieve NWC commands. As a fallback, Minibits subscribed to Nostr relays to receive the commands. However, this will stop working when app is in the background or off.`)
+ setInfo(translate('nwcScreen_pushNotificationWarning'))
}
}
@@ -111,17 +112,17 @@ export const NwcScreen = observer(function NwcScreen(_props) {
try {
if(!newConnectionName || !newConnectionDailyLimit) {
- setInfo('Insert name or daily limit')
+ setInfo(translate('nwcScreen_missingNameOrLimit'))
return
}
if(parseInt(newConnectionDailyLimit) === 0) {
- setInfo('Daily limit must be above zero')
+ setInfo(translate('nwcScreen_limitMustBePositive'))
return
}
if(nwcStore.alreadyExists(newConnectionName)) {
- setInfo('Connection with this name already exists.')
+ setInfo(translate('nwcScreen_connectionExists'))
return
}
@@ -173,8 +174,8 @@ export const NwcScreen = observer(function NwcScreen(_props) {
BottomComponent={
}
@@ -214,11 +215,11 @@ export const NwcScreen = observer(function NwcScreen(_props) {
BottomComponent={
}
@@ -248,7 +249,7 @@ export const NwcScreen = observer(function NwcScreen(_props) {
onPress={gotoAdd}
style={[{backgroundColor: mainButtonColor, borderWidth: 1, borderColor: screenBg}, $buttonNew]}
preset='tertiary'
- text='Add connection'
+ tx='nwcScreen_addConnection'
/>
@@ -261,7 +262,7 @@ export const NwcScreen = observer(function NwcScreen(_props) {
@@ -277,13 +278,13 @@ export const NwcScreen = observer(function NwcScreen(_props) {
>
@@ -295,12 +296,12 @@ export const NwcScreen = observer(function NwcScreen(_props) {
isVisible={isAddConnectionModalVisible ? true : false}
ContentComponent={
<>
-
+
-
+
>
diff --git a/src/screens/OwnKeysScreen.tsx b/src/screens/OwnKeysScreen.tsx
index 16e14cc5..d24bee35 100644
--- a/src/screens/OwnKeysScreen.tsx
+++ b/src/screens/OwnKeysScreen.tsx
@@ -62,7 +62,7 @@ export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) {
const onPasteOwnNip05 = async function () {
const nip = await Clipboard.getString()
if (!nip) {
- setInfo(translate("nostr.pasteError"))
+ setInfo(translate("nostr_pasteError"))
return
}
setOwnNip05(nip.trim())
@@ -75,11 +75,11 @@ export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) {
const nip05Domain = NostrClient.getDomainFromNip05(ownNip05)
if(!nip05Name || !nip05Domain) {
- setInfo(translate("nostr.invalidAddressFormat"))
+ setInfo(translate("nostr_invalidAddressFormat"))
}
if(MINIBITS_NIP05_DOMAIN.includes(nip05Domain as string)) {
- setInfo(translate("nostr.minibitsNameKeyReuseError", { domain: MINIBITS_NIP05_DOMAIN }))
+ setInfo(translate("nostr_minibitsNameKeyReuseError", { domain: MINIBITS_NIP05_DOMAIN }))
return
}
@@ -120,7 +120,7 @@ export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) {
} else {
throw new AppError(
Err.VALIDATION_ERROR,
- translate("nostr.profileRelayMismatchedIdentifierError"),
+ translate("nostr_profileRelayMismatchedIdentifierError"),
{ ownNip05, profile }
)
}
@@ -129,7 +129,7 @@ export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) {
if(profile.nip05 !== ownNip05) {
throw new AppError(
Err.VALIDATION_ERROR,
- translate("nostr.profileRelayMismatchedIdentifierError"),
+ translate("nostr_profileRelayMismatchedIdentifierError"),
{ ownNip05, profile }
)
}
@@ -252,8 +252,8 @@ export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) {
}
- tx="nostr.enterAddress"
- subTx="nostr.enterAddressDesc"
+ tx="nostr_enterAddress"
+ subTx="nostr_enterAddressDesc"
bottomSeparator={true}
style={{}}
/>
@@ -275,13 +275,13 @@ export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) {
style={[$nip05Input, {backgroundColor: inputBg, color: inputText}]}
/>
@@ -354,13 +354,13 @@ export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) {
style={[$nip05Input, {backgroundColor: inputBg, color: inputText}]}
/>
@@ -378,14 +378,14 @@ export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) {
<>
>
@@ -394,12 +394,12 @@ export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) {
@@ -415,12 +415,12 @@ export const OwnKeysScreen = observer(function OwnKeysScreen({ route }: Props) {
diff --git a/src/screens/PictureScreen.tsx b/src/screens/PictureScreen.tsx
index 84e45896..cc522f2b 100644
--- a/src/screens/PictureScreen.tsx
+++ b/src/screens/PictureScreen.tsx
@@ -100,12 +100,12 @@ export const PictureScreen = (function PictureScreen({ route }: Props) {
setSelectedPicture('')}
/>
diff --git a/src/screens/PrivacyScreen.tsx b/src/screens/PrivacyScreen.tsx
index aa7b6955..117d9963 100644
--- a/src/screens/PrivacyScreen.tsx
+++ b/src/screens/PrivacyScreen.tsx
@@ -110,7 +110,7 @@ export const PrivacyScreen = observer(function PrivacyScreen({ route }: Props) {
return (
-
+
{/*
{isTorDaemonOn && (
) : (
)}
@@ -231,8 +231,8 @@ export const PrivacyScreen = observer(function PrivacyScreen({ route }: Props) {
ContentComponent={
<>
{walletProfileStore.isOwnProfile ? (
) : (
}
bottomSeparator={true}
@@ -232,13 +232,13 @@ export const ProfileScreen = observer(function ProfileScreen({ route }: Props) {
}
onPress={toggleShareModal}
/>
}
onPress={toggleUpdateModal}
@@ -252,7 +252,7 @@ export const ProfileScreen = observer(function ProfileScreen({ route }: Props) {
ContentComponent={
<>
}
bottomSeparator={false}
@@ -362,15 +362,15 @@ const WalletProfileActionsBlock = function (props: {
return (
<>
0 ? "receiveScreen.received" : "receiveScreen.lockedToWalletPK"}
+ tx={toNumber(receivedAmount) > 0 ? "receiveScreen_received" : "receiveScreen_lockedToWalletPK"}
style={{color: amountInputColor, textAlign: 'center'}}
/>
) : (
0 ? "receiveScreen.received" : "receiveScreen.lockedToUnknownPK"}
+ tx={toNumber(receivedAmount) > 0 ? "receiveScreen_received" : "receiveScreen_lockedToUnknownPK"}
style={{color: amountInputColor, textAlign: 'center'}}
/>
)}
@@ -372,7 +372,7 @@ export const ReceiveScreen = observer(function ReceiveScreen({ route }: Props) {
) : (
0 ? "receiveScreen.received" : "receiveScreen.toReceive"}
+ tx={toNumber(receivedAmount) > 0 ? "receiveScreen_received" : "receiveScreen_toReceive"}
style={{
color: amountInputColor,
textAlign: 'center',
@@ -390,7 +390,7 @@ export const ReceiveScreen = observer(function ReceiveScreen({ route }: Props) {
style={$memoCard}
ContentComponent={
{transaction?.memo && (
)}
>
@@ -471,7 +471,7 @@ export const ReceiveScreen = observer(function ReceiveScreen({ route }: Props) {
@@ -481,7 +481,7 @@ export const ReceiveScreen = observer(function ReceiveScreen({ route }: Props) {
{isInternetReachable ? (
(
@@ -494,7 +494,7 @@ export const ReceiveScreen = observer(function ReceiveScreen({ route }: Props) {
/>
) : (
(
@@ -508,7 +508,7 @@ export const ReceiveScreen = observer(function ReceiveScreen({ route }: Props) {
)}
@@ -526,13 +526,13 @@ export const ReceiveScreen = observer(function ReceiveScreen({ route }: Props) {
@@ -549,7 +549,7 @@ export const ReceiveScreen = observer(function ReceiveScreen({ route }: Props) {
@@ -561,20 +561,20 @@ export const ReceiveScreen = observer(function ReceiveScreen({ route }: Props) {
{resultModalInfo.message.includes('outputs have already been signed before') ? (
) : (
)}
diff --git a/src/screens/RecoverWalletAddressScreen.tsx b/src/screens/RecoverWalletAddressScreen.tsx
index a25ab809..523ba440 100644
--- a/src/screens/RecoverWalletAddressScreen.tsx
+++ b/src/screens/RecoverWalletAddressScreen.tsx
@@ -45,7 +45,7 @@ export const RecoverWalletAddressScreen = observer(function RecoverWalletAddress
const onConfirmMnemonic = async function () {
try {
if (!mnemonic) {
- throw new AppError(Err.VALIDATION_ERROR, translate('backupScreen.missingMnemonicError'))
+ throw new AppError(Err.VALIDATION_ERROR, translate('backupMissingMnemonicError'))
}
LayoutAnimation.easeInEaseOut()
@@ -74,7 +74,7 @@ export const RecoverWalletAddressScreen = observer(function RecoverWalletAddress
throw new AppError(Err.VALIDATION_ERROR, 'Could not get seed')
}
- setStatusMessage(translate('recovery.recoveringAddress'))
+ setStatusMessage(translate('recovery_recoveringAddress'))
setIsLoading(true)
const seedHash = QuickCrypto.createHash('sha256')
@@ -88,7 +88,7 @@ export const RecoverWalletAddressScreen = observer(function RecoverWalletAddress
if (profile.nip05.includes(MINIBITS_NIP05_DOMAIN)) {
setProfileToRecover(profile)
} else {
- setStatusMessage(translate("recovery.ownKeysImportAgain", { addr: profile.nip05 }))
+ setStatusMessage(translate("recovery_ownKeysImportAgain", { addr: profile.nip05 }))
await delay(4000)
}
@@ -102,11 +102,11 @@ export const RecoverWalletAddressScreen = observer(function RecoverWalletAddress
const onCompleteAddress = async () => {
try {
if(!seedHashRef.current || !seedRef.current || !profileToRecover) {
- throw new AppError(Err.VALIDATION_ERROR, translate("recovery.missingMnemonicSeedProfileError"))
+ throw new AppError(Err.VALIDATION_ERROR, translate("recovery_missingMnemonicSeedProfileError"))
}
setIsLoading(true)
- setStatusMessage(translate("recovery.recoveringAddress"))
+ setStatusMessage(translate("recovery_recoveringAddress"))
const keys = await walletStore.getCachedWalletKeys()
@@ -120,7 +120,7 @@ export const RecoverWalletAddressScreen = observer(function RecoverWalletAddress
userSettingsStore.setIsOnboarded(true)
- setStatusMessage(translate('recovery.completed'))
+ setStatusMessage(translate('recovery_completed'))
await delay(1000)
setStatusMessage('')
setIsLoading(false)
@@ -148,7 +148,7 @@ export const RecoverWalletAddressScreen = observer(function RecoverWalletAddress
@@ -169,14 +169,14 @@ export const RecoverWalletAddressScreen = observer(function RecoverWalletAddress
<>
}
style={$item}
bottomSeparator
/>
}
style={$item}
/>
@@ -191,7 +191,7 @@ export const RecoverWalletAddressScreen = observer(function RecoverWalletAddress
{profileToRecover ? (
(
) : (
(
((props, m
const maybeMnemonic = await Clipboard.getString()
if(!maybeMnemonic) {
- throw new AppError(Err.VALIDATION_ERROR, translate('backupScreen.missingMnemonicError'))
+ throw new AppError(Err.VALIDATION_ERROR, translate('backupMissingMnemonicError'))
}
const cleaned = maybeMnemonic.replace(/\s+/g, ' ').trim()
@@ -54,7 +54,7 @@ export const MnemonicInput = forwardRef((props, m
style={$card}
ContentComponent={
}
@@ -93,12 +93,12 @@ export const MnemonicInput = forwardRef((props, m
{mnemonic ? (
) : (
)
}
diff --git a/src/screens/RecoveryOptionsScreen.tsx b/src/screens/RecoveryOptionsScreen.tsx
index 33061187..9b553120 100644
--- a/src/screens/RecoveryOptionsScreen.tsx
+++ b/src/screens/RecoveryOptionsScreen.tsx
@@ -203,7 +203,7 @@ export const RecoveryOptionsScreen = observer(function RecoveryOptionsScreen({ r
const onPasteMintQuote = async function () {
const quote = await Clipboard.getString()
if (!quote || quote.length !== 40) {
- setInfo('Invalid mint quote')
+ setInfo(translate('recoveryInvalidMintQuote'))
return
}
setMintQuote(quote)
@@ -212,7 +212,7 @@ export const RecoveryOptionsScreen = observer(function RecoveryOptionsScreen({ r
const onPasteMeltQuote = async function () {
const quote = await Clipboard.getString()
if (!quote || quote.length !== 40) {
- setInfo('Invalid melt quote')
+ setInfo(translate('recoveryInvalidMeltQuote'))
return
}
setMeltQuote(quote)
@@ -322,7 +322,7 @@ export const RecoveryOptionsScreen = observer(function RecoveryOptionsScreen({ r
@@ -333,8 +333,8 @@ export const RecoveryOptionsScreen = observer(function RecoveryOptionsScreen({ r
ContentComponent={
<>
@@ -405,7 +405,7 @@ export const RecoveryOptionsScreen = observer(function RecoveryOptionsScreen({ r
@@ -416,13 +416,13 @@ export const RecoveryOptionsScreen = observer(function RecoveryOptionsScreen({ r
}
/>
@@ -438,8 +438,8 @@ export const RecoveryOptionsScreen = observer(function RecoveryOptionsScreen({ r
style={$item}
/>
@@ -471,13 +471,13 @@ export const RecoveryOptionsScreen = observer(function RecoveryOptionsScreen({ r
@@ -494,8 +494,8 @@ export const RecoveryOptionsScreen = observer(function RecoveryOptionsScreen({ r
-
+
-
+
}
onBackButtonPress={toggleMintQuoteModal}
onBackdropPress={toggleMintQuoteModal}
/>
+ {/* it looks like this modal is a duplicate of the one above? for now not removing, but worth checking later */}
-
+
-
+
}
@@ -576,13 +577,13 @@ export const RecoveryOptionsScreen = observer(function RecoveryOptionsScreen({ r
@@ -595,7 +596,7 @@ export const RecoveryOptionsScreen = observer(function RecoveryOptionsScreen({ r
isVisible={isMeltQuoteModalVisible ? true : false}
ContentComponent={
-
+
-
+
}
@@ -629,13 +630,13 @@ export const RecoveryOptionsScreen = observer(function RecoveryOptionsScreen({ r
diff --git a/src/screens/RelaysScreen.tsx b/src/screens/RelaysScreen.tsx
index cb3aaf5b..021df6ab 100644
--- a/src/screens/RelaysScreen.tsx
+++ b/src/screens/RelaysScreen.tsx
@@ -231,7 +231,7 @@ export const RelaysScreen = observer(function RelaysScreen({ route }: Props) {
@@ -251,7 +251,7 @@ export const RelaysScreen = observer(function RelaysScreen({ route }: Props) {
isVisible={isAddRelayModalVisible ? true : false}
ContentComponent={
-
+
-
+
diff --git a/src/screens/ScanScreen.tsx b/src/screens/ScanScreen.tsx
index 93c2c6a3..659e1b91 100644
--- a/src/screens/ScanScreen.tsx
+++ b/src/screens/ScanScreen.tsx
@@ -260,7 +260,7 @@ export const ScanScreen = function ScanScreen({ route }: Props) {
const onPaste = async function() {
const clipboard = await Clipboard.getString()
if (clipboard.length === 0) {
- infoMessage(translate("scanScreen.onPasteEmptyClipboard"))
+ infoMessage(translate("scanScreen_onPasteEmptyClipboard"))
return
}
@@ -300,7 +300,7 @@ export const ScanScreen = function ScanScreen({ route }: Props) {
LeftAccessory={() => (
)}
- tx='common.paste'
+ tx='commonPaste'
preset='secondary'
style={{marginTop: spacing.medium, minWidth: 120}}
/>
diff --git a/src/screens/SecurityScreen.tsx b/src/screens/SecurityScreen.tsx
index bd8031f8..4e69990d 100644
--- a/src/screens/SecurityScreen.tsx
+++ b/src/screens/SecurityScreen.tsx
@@ -102,7 +102,7 @@ export const SecurityScreen = observer(function SecurityScreen({ route }: Props)
return (
-
+
{/*isBiometricAuthOn && (
doRecovery(), 100)
}
@@ -249,16 +249,16 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
}
if(!recoveredMint) {
- setInfo(translate("recovery.noMintSelected"))
+ setInfo(translate("recovery_noMintSelected"))
return
}
if(!selectedKeyset) {
- setInfo(translate("recovery.noKeysetSelected"))
+ setInfo(translate("recovery_noKeysetSelected"))
return
}
- setStatusMessage(translate("recovery.restoringFromParam", { hostname: recoveredMint.hostname }))
+ setStatusMessage(translate("recovery_restoringFromParam", { hostname: recoveredMint.hostname }))
log.info('[restore]', `Restoring from ${recoveredMint.hostname}...`)
const { proofs } = await walletStore.restore(
@@ -272,7 +272,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
)
//log.debug('[restore]', `Restored proofs`, proofs.length)
- setStatusMessage(translate("recovery.foundProofsAmount", { amount: proofs.length }))
+ setStatusMessage(translate("recovery_foundProofsAmount", { amount: proofs.length }))
if (proofs.length > 0) {
// need to move counter by whole interval to avoid duplicate _B!!!
@@ -287,14 +287,14 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
log.debug('[restore]', `Spent and pending proofs`, {spent: proofStates.SPENT.length, pending: proofStates.PENDING.length})
- setStatusMessage(translate("recovery.spentProofsAmount", { amount: proofStates.SPENT.length }))
+ setStatusMessage(translate("recovery_spentProofsAmount", { amount: proofStates.SPENT.length }))
const spentAmount = CashuUtils.getProofsAmount(proofStates.SPENT as Proof[])
alreadySpentAmount += spentAmount
if(proofStates.UNSPENT.length > 0) {
- setStatusMessage(translate("recovery.completing"))
+ setStatusMessage(translate("recovery_completing"))
const amount = CashuUtils.getProofsAmount(proofStates.UNSPENT)
recoveredAmount = amount
@@ -354,7 +354,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
const pendingAmount = CashuUtils.getProofsAmount(proofStates.PENDING as Proof[])
- setStatusMessage(translate("recovery.foundPendingProofsAmount", { pendingAmount }))
+ setStatusMessage(translate("recovery_foundPendingProofsAmount", { pendingAmount }))
log.debug(`Found pending ecash with ${recoveredMint.hostname}...`)
// Let's create new draft receive transaction in database
@@ -453,7 +453,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
const currency = getCurrency(selectedKeyset?.unit as MintUnit)
setResultModalInfo({
status: TransactionStatus.COMPLETED,
- message: translate("recovery.recoveredResult", {
+ message: translate("recovery_recoveredResult", {
formattedCurrency: formatCurrency(recoveredAmount, currency.code),
code: currency.code
})
@@ -462,19 +462,19 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
if(errors.length > 0) {
setResultModalInfo({
status: TransactionStatus.ERROR,
- message: translate("recovery.resultErrors")
+ message: translate("recovery_resultErrors")
})
setRecoveryErrors(errors)
} else {
if(alreadySpentAmount > 0) {
setResultModalInfo({
status: TransactionStatus.EXPIRED,
- message: translate("recovery.resultSpent")
+ message: translate("recovery_resultSpent")
})
} else {
setResultModalInfo({
status: TransactionStatus.EXPIRED,
- message: translate("recovery.resultExpired")
+ message: translate("recovery_resultExpired")
})
}
@@ -488,12 +488,12 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
const onCompleteAddress = async () => {
try {
if(!seedHashRef.current || !seedRef.current) {
- throw new AppError(Err.VALIDATION_ERROR, translate('backupScreen.missingMnemonicOrSeedError'))
+ throw new AppError(Err.VALIDATION_ERROR, translate('backupMissingMnemonicOrSeedError'))
}
// create a new walletId and Nostr key pair after a new install or factory reset
// and keep provided seed
setIsLoading(true)
- setStatusMessage(translate("recovery.recoveringAddress"))
+ setStatusMessage(translate("recovery_recoveringAddress"))
const keys = KeyChain.generateWalletKeys()
// Set seed to the provided one
@@ -533,7 +533,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
await mintsStore.addMint(MINIBITS_MINT_URL)
}
- setStatusMessage(translate('recovery.completed'))
+ setStatusMessage(translate('recovery_completed'))
// go directly to the wallet (profile hase been rehydrated from the one with the seed)
//@ts-ignore
@@ -567,15 +567,15 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
onLeftPress={() => navigation.goBack()}
/>
-
+
@@ -607,7 +607,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
/>
)}
-
+
0 ? undefined : "recoveryFromMintsDesc"}
- LeftComponent={}
+ LeftComponent={}
RightComponent={mintsStore.mintCount > 0 ? (
@@ -682,7 +682,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
{(startIndex > 0 || totalRecoveredAmount > 0) && (
)}
@@ -690,7 +690,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
@@ -707,7 +707,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
1 && (
@@ -728,7 +728,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
)}
{mintsStore.mintCount > 0 && !selectedMintUrl && (
@@ -756,12 +756,12 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
textAlign='right'
/>
@@ -773,7 +773,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
}
+ HeadingComponent={}
ContentComponent={
}
onBackButtonPress={toggleKeysetModal}
@@ -840,13 +840,13 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
@@ -858,7 +858,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
@@ -882,7 +882,7 @@ export const SeedRecoveryScreen = observer(function SeedRecoveryScreen({ route }
diff --git a/src/screens/SendScreen.tsx b/src/screens/SendScreen.tsx
index 24283ca8..f17c5ba3 100644
--- a/src/screens/SendScreen.tsx
+++ b/src/screens/SendScreen.tsx
@@ -574,14 +574,14 @@ export const SendScreen = observer(function SendScreen({ route }: Props) {
log.trace('[onAmountEndEditing]', amount)
if (!amount || amount === 0) {
- infoMessage(translate('payCommon.amountZeroOrNegative'))
+ infoMessage(translate('payCommon_amountZeroOrNegative'))
return
}
const availableBalances = proofsStore.getMintBalancesWithEnoughBalance(amount, unitRef.current)
if (availableBalances.length === 0) {
- infoMessage(translate('payCommon.insufficientFunds'))
+ infoMessage(translate('payCommon_insufficientFunds'))
return
}
@@ -1043,7 +1043,7 @@ export const SendScreen = observer(function SendScreen({ route }: Props) {
/>
@@ -1051,7 +1051,7 @@ export const SendScreen = observer(function SendScreen({ route }: Props) {
) : (
@@ -1117,13 +1117,13 @@ export const SendScreen = observer(function SendScreen({ route }: Props) {
/>
)}
>
@@ -1135,7 +1135,7 @@ export const SendScreen = observer(function SendScreen({ route }: Props) {
@@ -1164,11 +1164,11 @@ export const SendScreen = observer(function SendScreen({ route }: Props) {
isVisible={isPubkeySelectorModalVisible}
ContentComponent={
-
+
()}
onPress={onLockPubkeySelect}
style={{marginRight: spacing.medium}}
@@ -1311,7 +1311,7 @@ export const SendScreen = observer(function SendScreen({ route }: Props) {
@@ -1365,7 +1365,7 @@ export const SendScreen = observer(function SendScreen({ route }: Props) {
@@ -1396,7 +1396,7 @@ export const SendScreen = observer(function SendScreen({ route }: Props) {
) : (
)}
@@ -1464,9 +1464,9 @@ const SelectProofsBlock = observer(function (props: {
]}
/>
-
+
@@ -1506,13 +1506,13 @@ const SelectProofsBlock = observer(function (props: {
@@ -1552,7 +1552,7 @@ const SelectProofsBlock = observer(function (props: {
/>
) : (
(
@@ -1631,7 +1631,7 @@ const SendAsNostrDMBlock = observer(function (props: {
/>
@@ -1665,7 +1665,7 @@ const SendAsNostrDMBlock = observer(function (props: {
diff --git a/src/screens/SettingsScreen.tsx b/src/screens/SettingsScreen.tsx
index c62ac8e7..17f452ce 100644
--- a/src/screens/SettingsScreen.tsx
+++ b/src/screens/SettingsScreen.tsx
@@ -278,7 +278,7 @@ export const SettingsScreen = observer(function SettingsScreen({ route }: Props)
try {
userSettingsStore.setNextTheme(theme)
setCurrentTheme(theme)
- setInfo('Restart the wallet to apply the new theme.')
+ setInfo(translate('settingsScreen_restartTheme'))
} catch (e: any) {
log.warn('[onSelectTheme]', e.message)
}
@@ -316,7 +316,7 @@ export const SettingsScreen = observer(function SettingsScreen({ route }: Props)
@@ -336,7 +336,7 @@ export const SettingsScreen = observer(function SettingsScreen({ route }: Props)
}
@@ -345,7 +345,7 @@ export const SettingsScreen = observer(function SettingsScreen({ route }: Props)
onPress={gotoMints}
/>
@@ -362,7 +363,7 @@ export const SettingsScreen = observer(function SettingsScreen({ route }: Props)
onPress={toggleCurrencyModal}
/>
}
bottomSeparator={true}
onPress={openNotificationSettings}
- />
- 1 ? 's' : ''}`}
+ />
+
}
@@ -453,7 +454,7 @@ export const SettingsScreen = observer(function SettingsScreen({ route }: Props)
ContentComponent={
<>
}
@@ -512,7 +513,7 @@ export const SettingsScreen = observer(function SettingsScreen({ route }: Props)
onPress={gotoUpdate}
/>
diff --git a/src/screens/TokenReceiveScreen.tsx b/src/screens/TokenReceiveScreen.tsx
index dd36b1b0..12082310 100644
--- a/src/screens/TokenReceiveScreen.tsx
+++ b/src/screens/TokenReceiveScreen.tsx
@@ -89,7 +89,7 @@ export const TokenReceiveScreen = function TokenReceiveScreen({ route }: Props)
const onPaste = async function() {
const clipboard = await Clipboard.getString()
if (clipboard.length === 0) {
- infoMessage(translate('tokenReceiveScreen.onPasteEmptyClipboard'))
+ infoMessage(translate('tokenReceiveScreen_onPasteEmptyClipboard'))
return
}
@@ -161,7 +161,7 @@ export const TokenReceiveScreen = function TokenReceiveScreen({ route }: Props)
@@ -171,7 +171,7 @@ export const TokenReceiveScreen = function TokenReceiveScreen({ route }: Props)
<>
setShowTokenInput((v) => !v)}
/>
@@ -201,7 +201,7 @@ export const TokenReceiveScreen = function TokenReceiveScreen({ route }: Props)
}
@@ -211,7 +211,7 @@ export const TokenReceiveScreen = function TokenReceiveScreen({ route }: Props)
(
@@ -224,7 +224,7 @@ export const TokenReceiveScreen = function TokenReceiveScreen({ route }: Props)
{/* Create Payment Request */}
@@ -234,7 +234,7 @@ export const TokenReceiveScreen = function TokenReceiveScreen({ route }: Props)
//style={{marginBottom: spacing.medium}}
/>
(
diff --git a/src/screens/TopupScreen.tsx b/src/screens/TopupScreen.tsx
index 63f9fcdc..53fdb35c 100644
--- a/src/screens/TopupScreen.tsx
+++ b/src/screens/TopupScreen.tsx
@@ -206,7 +206,7 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
}
if (!relays) {
- throw new AppError(Err.VALIDATION_ERROR, translate("nostr.missingRelaysError"))
+ throw new AppError(Err.VALIDATION_ERROR, translate("nostr_missingRelaysError"))
}
const {pubkey, npub, name, picture} = walletProfileStore
@@ -288,7 +288,7 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
status: result.transaction?.status as TransactionStatus,
title: result.error.params?.message
? result.error.message
- : translate("topup.failed"),
+ : translate("topup_failed"),
message: result.error.params?.message || result.error.message,
})
setIsResultModalVisible(true)
@@ -389,11 +389,11 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
log.trace('[onAmountEndEditing]', {amount, unit: unitRef.current})
if (!isInternetReachable) {
- setInfo(translate('common.offlinePretty'))
+ setInfo(translate('commonOfflinePretty'))
}
if (!amount || amount === 0) {
- infoMessage(translate('payCommon.amountZeroOrNegative'))
+ infoMessage(translate('payCommon_amountZeroOrNegative'))
return
}
@@ -402,7 +402,7 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
amount < roundUp(lnurlWithdrawParams?.minWithdrawable / 1000, 0)
) {
infoMessage(
- translate('payCommon.minimumWithdraw', {
+ translate('payCommon_minimumWithdraw', {
amount: roundUp(lnurlWithdrawParams?.minWithdrawable / 1000, 0),
currency: CurrencyCode.SAT,
}),
@@ -414,8 +414,8 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
if (availableBalances.length === 0) {
infoMessage(
- translate("topup.missingMintAddFirst"),
- translate("topup.missingMintAddFirstDesc"),
+ translate("topup_missingMintAddFirst"),
+ translate("topup_missingMintAddFirstDesc"),
)
return
}
@@ -496,7 +496,7 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
const receiverPubkey = contactToSendTo?.pubkey
// redable message
- const message = translate('topup.nostrDMreceived', {
+ const message = translate('topup_nostrDMreceived', {
npub: walletProfileStore.npub,
amount: amountToTopup,
currency: getCurrency(unitRef.current).code
@@ -543,7 +543,7 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
})
}
} else {
- setInfo(translate('topup.relayMissingSentEvent'))
+ setInfo(translate('topup_relayMissingSentEvent'))
}
} catch (e: any) {
handleError(e)
@@ -647,11 +647,11 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
const getAmountTitle = function () {
switch (paymentOption) {
case ReceiveOption.SEND_PAYMENT_REQUEST:
- return translate("amount.requested")
+ return translate("amountRequested")
case ReceiveOption.LNURL_WITHDRAW:
- return translate("amount.withdraw")
+ return translate("amountWithdraw")
default:
- return translate("amount.topup")
+ return translate("amountTopup")
}
}
@@ -754,7 +754,7 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
@@ -804,7 +804,7 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
ContentComponent={
<>
)}
>
@@ -836,7 +836,7 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
@@ -908,13 +908,13 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
@@ -926,13 +926,13 @@ export const TopupScreen = observer(function TopupScreen({ route }: Props) {
@@ -964,7 +964,7 @@ const InvoiceOptionsBlock = observer(function (props: {
{props.contactToSendTo ? (
) : (
(
@@ -1069,7 +1069,7 @@ const SendAsNostrDMBlock = observer(function (props: {
/>
@@ -1095,13 +1095,13 @@ const NostrDMSuccessBlock = observer(function (props: {
@@ -1227,8 +1227,8 @@ const LnurlWithdrawBlock = observer(function (props: {
(
@@ -1267,7 +1267,7 @@ const LnurlWithdrawBlock = observer(function (props: {
/>
@@ -1288,13 +1288,13 @@ const LnurlWithdrawSuccessBlock = observer(function (props: {
diff --git a/src/screens/TranDetailScreen.tsx b/src/screens/TranDetailScreen.tsx
index daeba752..e6933c9e 100644
--- a/src/screens/TranDetailScreen.tsx
+++ b/src/screens/TranDetailScreen.tsx
@@ -156,7 +156,7 @@ export const TranDetailScreen = observer(function TranDetailScreen({ route }: Pr
try {
if(transaction) Clipboard.setString(JSON.stringify(getAuditTrail(transaction)))
} catch (e: any) {
- setInfo(translate("common.copyFailParam", { param: e.message }))
+ setInfo(translate("commonCopyFailParam", { param: e.message }))
}
}
@@ -164,7 +164,7 @@ export const TranDetailScreen = observer(function TranDetailScreen({ route }: Pr
try {
if(transaction && transaction.inputToken) Clipboard.setString(transaction.inputToken)
} catch (e: any) {
- setInfo(translate("common.copyFailParam", { param: e.message }))
+ setInfo(translate("commonCopyFailParam", { param: e.message }))
}
}
@@ -172,7 +172,7 @@ export const TranDetailScreen = observer(function TranDetailScreen({ route }: Pr
try {
if(transaction && transaction.outputToken) Clipboard.setString(transaction.outputToken)
} catch (e: any) {
- setInfo(translate("common.copyFailParam", { param: e.message }))
+ setInfo(translate("commonCopyFailParam", { param: e.message }))
}
}
@@ -306,7 +306,7 @@ export const TranDetailScreen = observer(function TranDetailScreen({ route }: Pr
@@ -314,7 +314,7 @@ export const TranDetailScreen = observer(function TranDetailScreen({ route }: Pr
@@ -368,17 +368,17 @@ export const TranDetailScreen = observer(function TranDetailScreen({ route }: Pr
)}
{isDataParsable && (
@@ -398,7 +398,7 @@ export const TranDetailScreen = observer(function TranDetailScreen({ route }: Pr
@@ -442,7 +442,7 @@ export const TranDetailScreen = observer(function TranDetailScreen({ route }: Pr
<>
{transaction.inputToken && (
@@ -459,7 +459,7 @@ export const TranDetailScreen = observer(function TranDetailScreen({ route }: Pr
)}
{transaction.outputToken && (
@@ -637,7 +637,7 @@ const ReceiveInfoBlock = function (props: {
const transactionDataUpdate = {
status: TransactionStatus.EXPIRED,
- message: translate("tranDetailScreen.successRetrieveEcashAfterRetry"),
+ message: translate("tranDetailScreen_successRetrieveEcashAfterRetry"),
createdAt: new Date(),
}
@@ -734,7 +734,7 @@ const ReceiveInfoBlock = function (props: {
ContentComponent={
<>
{transaction.memo && (
)}
@@ -753,7 +753,7 @@ const ReceiveInfoBlock = function (props: {
style={{flexDirection: 'row', justifyContent: 'space-between'}}
>
@@ -786,7 +786,7 @@ const ReceiveInfoBlock = function (props: {
) : (
@@ -796,17 +796,17 @@ const ReceiveInfoBlock = function (props: {
)}
{eventUrl && (
)}
) : (
)}
{transaction.status === TransactionStatus.COMPLETED && (
)}
{transaction.paymentId && (
)}
-
+
>
}
/>
@@ -895,13 +895,13 @@ const ReceiveInfoBlock = function (props: {
@@ -999,7 +999,7 @@ const ReceiveOfflineInfoBlock = function (props: {
) : (
)}
) : (
)}
{transaction.sentFrom && (
)}
{transaction.status === TransactionStatus.COMPLETED && (
)}
{transaction.paymentId && (
)}
-
+
>
}
/>
@@ -1116,13 +1116,13 @@ const ReceiveOfflineInfoBlock = function (props: {
@@ -1236,7 +1236,7 @@ const SendInfoBlock = function (props: {
ContentComponent={
<>
)}
) : (
)}
{transaction.status !== TransactionStatus.ERROR && (
)}
-
+
>
}
/>
@@ -1347,7 +1347,7 @@ const SendInfoBlock = function (props: {
@@ -1472,7 +1472,7 @@ const TopupInfoBlock = function (props: {
ContentComponent={
<>
)}
) : (
)}
{transaction.status === TransactionStatus.COMPLETED && (
)}
{transaction.expiresAt && transaction.status !== TransactionStatus.COMPLETED && (
)}
{transaction.paymentId && (
)}
-
+
>
}
/>
@@ -1552,14 +1552,14 @@ const TopupInfoBlock = function (props: {
)}
@@ -1599,13 +1599,13 @@ const TopupInfoBlock = function (props: {
@@ -1616,13 +1616,13 @@ const TopupInfoBlock = function (props: {
@@ -1633,13 +1633,13 @@ const TopupInfoBlock = function (props: {
@@ -1760,7 +1760,7 @@ const TransferInfoBlock = function (props: {
style={{flexDirection: 'row', justifyContent: 'space-between'}}
>
):(
)}
{transaction.sentTo && (
)}
{transaction.status === TransactionStatus.COMPLETED && (
):(
)}
{transaction.status === TransactionStatus.COMPLETED && (
)}
{transaction.expiresAt && transaction.status !== TransactionStatus.COMPLETED && (
)}
{transaction.paymentId && (
)}
-
+
>
}
/>
{transaction.proof && (
@@ -1905,7 +1905,7 @@ const TransferInfoBlock = function (props: {
@@ -1922,7 +1922,7 @@ const TransferInfoBlock = function (props: {
diff --git a/src/screens/TranHistoryScreen.tsx b/src/screens/TranHistoryScreen.tsx
index 52ff78e6..85f87a3e 100644
--- a/src/screens/TranHistoryScreen.tsx
+++ b/src/screens/TranHistoryScreen.tsx
@@ -245,7 +245,7 @@ export const TranHistoryScreen = observer(function TranHistoryScreen({ route }:
return (
-
+
@@ -255,11 +255,11 @@ export const TranHistoryScreen = observer(function TranHistoryScreen({ route }:
<>
false}
/>
0 && (
{!showPendingOnly && isAll || showPendingOnly && pendingIsAll ? (
-
+
) : (
@@ -346,7 +346,7 @@ export const TranHistoryScreen = observer(function TranHistoryScreen({ route }:
ContentComponent={
}
style={$card}
@@ -362,8 +362,8 @@ export const TranHistoryScreen = observer(function TranHistoryScreen({ route }:
ContentComponent={
<>
0) {
if(isTimeAgoVisible) {
- return timeAgo + 'Fee ' + tx.fee
+ return timeAgo + translate('transactionCommon_fee') + ' ' + tx.fee
} else {
- return 'Fee ' + tx.fee
+ return translate('transactionCommon_fee') + ' ' + tx.fee
}
} else {
if(isTimeAgoVisible) {
return distance
} else {
- return translate('transactionCommon.status.completed')
+ return translate('transactionCommon_status_completed')
}
}
case TransactionStatus.RECOVERED:
- return timeAgo + translate('transactionCommon.status.recovered')
+ return timeAgo + translate('transactionCommon_status_recovered')
case TransactionStatus.DRAFT:
- return timeAgo + translate('transactionCommon.status.draft')
+ return timeAgo + translate('transactionCommon_status_draft')
case TransactionStatus.ERROR:
- return timeAgo + translate('transactionCommon.status.error')
+ return timeAgo + translate('transactionCommon_status_error')
case TransactionStatus.PENDING:
- return timeAgo + translate('transactionCommon.status.pending')
+ return timeAgo + translate('transactionCommon_status_pending')
case TransactionStatus.PREPARED:
- return timeAgo + translate('transactionCommon.status.prepared')
+ return timeAgo + translate('transactionCommon_status_prepared')
case TransactionStatus.PREPARED_OFFLINE:
if (isInternetReachable) {
- return timeAgo + translate('transactionCommon.tapToRedeem')
+ return timeAgo + translate('transactionCommon_tapToRedeem')
} else {
- return timeAgo + translate('transactionCommon.redeemOnline')
+ return timeAgo + translate('transactionCommon_redeemOnline')
}
case TransactionStatus.REVERTED:
- return timeAgo + translate('transactionCommon.status.reverted')
+ return timeAgo + translate('transactionCommon_status_reverted')
case TransactionStatus.BLOCKED:
- return timeAgo + translate('transactionCommon.status.blocked')
+ return timeAgo + translate('transactionCommon_status_blocked')
case TransactionStatus.EXPIRED:
- return timeAgo + translate('transactionCommon.status.expired')
+ return timeAgo + translate('transactionCommon_status_expired')
default:
return timeAgo
}
diff --git a/src/screens/TransferScreen.tsx b/src/screens/TransferScreen.tsx
index 27d1885f..42e49db6 100644
--- a/src/screens/TransferScreen.tsx
+++ b/src/screens/TransferScreen.tsx
@@ -330,7 +330,7 @@ useEffect(() => {
let availableBalances = proofsStore.getMintBalancesWithEnoughBalance(totalAmount, unitRef.current)
if (availableBalances.length === 0) {
- setInfo(translate("transferScreen.insufficientFunds", {
+ setInfo(translate("transferScreen_insufficientFunds", {
currency: getCurrency(unitRef.current).code,
amount: amountToTransfer
}))
@@ -404,7 +404,7 @@ useEffect(() => {
} else {
setResultModalInfo({
status,
- title: error.params?.message ? error.message : translate('payCommon.failed'),
+ title: error.params?.message ? error.message : translate('payCommon_failed'),
message: error.params?.message || error.message,
})
}
@@ -416,7 +416,7 @@ useEffect(() => {
setResultModalInfo({
status,
- message: `Donation for ${donationForName} has been successfully paid and your wallet address has been updated. Thank you!`,
+ message: translate('transferScreen_donationSuccessMessage', {donationForName}),
})
} else {
@@ -507,7 +507,7 @@ const onRequestLnurlInvoice = async function () {
const amountUnit = round(toNumber(amountToTransfer) * precision, 0)
if (!amountUnit || amountUnit === 0) {
- setInfo(translate('payCommon.amountZeroOrNegative'))
+ setInfo(translate('payCommon_amountZeroOrNegative'))
return
}
@@ -527,7 +527,7 @@ const onRequestLnurlInvoice = async function () {
}
if (lnurlPayParams.minSendable && amountSats < lnurlPayParams.minSendable / 1000) {
- setInfo(translate('payCommon.minimumPay', {
+ setInfo(translate('payCommon_minimumPay', {
amount: roundUp(lnurlPayParams.minSendable / 1000, 0),
currency: CurrencyCode.SAT
}))
@@ -535,7 +535,7 @@ const onRequestLnurlInvoice = async function () {
}
if (lnurlPayParams.maxSendable && amountSats > lnurlPayParams.maxSendable / 1000) {
- setInfo(translate("payCommon.maximumPay", {
+ setInfo(translate("payCommon_maximumPay", {
amount: roundDown(lnurlPayParams.maxSendable / 1000, 0),
currency: CurrencyCode.SAT
}))
@@ -543,7 +543,7 @@ const onRequestLnurlInvoice = async function () {
}
if (lnurlPayParams.payerData) {
- setInfo(translate("transferScreen.LUD18unsupported"))
+ setInfo(translate("transferScreen_LUD18unsupported"))
}
setIsLoading(true)
@@ -594,11 +594,11 @@ const onEncodedInvoice = async function (encoded: string) {
const expiresAt = addSeconds(new Date(timestamp as number * 1000), expiry as number)
if (!amount || amount === 0) {
- setInfo(translate('payCommon.amountZeroOrNegative'))
+ setInfo(translate('payCommon_amountZeroOrNegative'))
return;
}
- if(!isInternetReachable) setInfo(translate('common.offlinePretty'));
+ if(!isInternetReachable) setInfo(translate('commonOfflinePretty'));
setIsAmountEditable(false)
setEncodedInvoice(encoded)
@@ -622,7 +622,7 @@ const onEncodedInvoice = async function (encoded: string) {
if (!balanceToTransferFrom) {
log.warn('Not enough balance')
- setInfo(translate("transferScreen.noMintWithBalance", { unit: unitRef.current }))
+ setInfo(translate("transferScreen_noMintWithBalance", { unit: unitRef.current }))
setIsNotEnoughFunds(true)
return
}
@@ -643,7 +643,7 @@ const transfer = async function () {
}
if (!mintBalanceToTransferFrom) {
- setInfo(translate("transferScreen.selectMintFrom"))
+ setInfo(translate("transferScreen_selectMintFrom"))
return;
}
@@ -778,7 +778,7 @@ const amountInputColor = useThemeColor('amountInput')
)}
@@ -856,7 +856,7 @@ const amountInputColor = useThemeColor('amountInput')
@@ -869,8 +869,8 @@ const amountInputColor = useThemeColor('amountInput')
mintBalances={availableMintBalances}
selectedMintBalance={mintBalanceToTransferFrom}
unit={unitRef.current}
- title={translate('payCommon.payFrom')}
- confirmTitle={translate('payCommon.payNow')}
+ title={translate('payCommon_payFrom')}
+ confirmTitle={translate('payCommon_payNow')}
onMintBalanceSelect={onMintBalanceSelect}
onCancel={gotoWallet}
onMintBalanceConfirm={transfer}
@@ -882,7 +882,7 @@ const amountInputColor = useThemeColor('amountInput')
ContentComponent={
<>
{transaction?.memo && (
)}
>
@@ -914,7 +914,7 @@ const amountInputColor = useThemeColor('amountInput')
@@ -931,13 +931,13 @@ const amountInputColor = useThemeColor('amountInput')
{
if (isInvoiceDonation) {
gotoContacts()
@@ -955,13 +955,13 @@ const amountInputColor = useThemeColor('amountInput')
@@ -974,7 +974,7 @@ const amountInputColor = useThemeColor('amountInput')
icon="faTriangleExclamation"
iconColor={colors.palette.angry500}
title={
- resultModalInfo?.title || translate('payCommon.failed')
+ resultModalInfo?.title || translate('payCommon_failed')
}
message={resultModalInfo?.message}
/>
@@ -994,7 +994,7 @@ const amountInputColor = useThemeColor('amountInput')
) : (
)}
@@ -1007,13 +1007,13 @@ const amountInputColor = useThemeColor('amountInput')
diff --git a/src/screens/UpdateScreen.tsx b/src/screens/UpdateScreen.tsx
index 11148ea2..5c5dc324 100644
--- a/src/screens/UpdateScreen.tsx
+++ b/src/screens/UpdateScreen.tsx
@@ -97,7 +97,7 @@ export const UpdateScreen = observer(function UpdateScreen({ route }: Props) {
})
if (!updateInfo) {
- throw new AppError(Err.NETWORK_ERROR, 'Could not retrieve update information')
+ throw new AppError(Err.NETWORK_ERROR, translate('updateScreen_couldNotRetrieveUpdate'))
}
await HotUpdater.updateBundle(updateInfo.id, updateInfo.fileUrl)
@@ -141,7 +141,7 @@ export const UpdateScreen = observer(function UpdateScreen({ route }: Props) {
return (
-
+
{/*)}
{(!isUpdateAvailable && !isNativeUpdateAvailable) && (
)}
@@ -209,12 +209,12 @@ export const UpdateScreen = observer(function UpdateScreen({ route }: Props) {
@@ -233,7 +233,7 @@ export const UpdateScreen = observer(function UpdateScreen({ route }: Props) {
icon='faDownload'
iconColor={colors.palette.accent400}
title={`${Math.round(progress * 100)}%`}
- message='Update is in progress...'
+ message={translate('updateScreen_updateInProgress')}
/>
}
onBackButtonPress={toggleUpdateModal}
diff --git a/src/screens/Wallet/FeeBadge.tsx b/src/screens/Wallet/FeeBadge.tsx
index 4d99df6d..743b9f83 100644
--- a/src/screens/Wallet/FeeBadge.tsx
+++ b/src/screens/Wallet/FeeBadge.tsx
@@ -32,8 +32,8 @@ export const FeeBadge = function (props: {
}
@@ -233,7 +233,7 @@ export const QRCodeBlock = function (props: {
/>
}
textStyle={{color: colors.light.text, fontSize: 14}}
@@ -246,7 +246,7 @@ export const QRCodeBlock = function (props: {
{type === 'EncodedV4Token' && keysetFormat === 'hex' && !isAnimating && (
}
textStyle={{color: colors.light.text, fontSize: 14}}
@@ -260,7 +260,7 @@ export const QRCodeBlock = function (props: {
{type === 'EncodedV4Token' && !isQRCodeError && (
}
textStyle={{color: colors.light.text, fontSize: 14}}
diff --git a/src/screens/WalletNameScreen.tsx b/src/screens/WalletNameScreen.tsx
index 23944cb0..00c88c04 100644
--- a/src/screens/WalletNameScreen.tsx
+++ b/src/screens/WalletNameScreen.tsx
@@ -9,6 +9,7 @@ import {OwnName} from './Contacts/OwnName'
import {useStores} from '../models'
import {useHeader} from '../utils/useHeader'
import { StaticScreenProps, useNavigation } from '@react-navigation/native'
+import {translate} from '../i18n'
type Props = StaticScreenProps
@@ -35,8 +36,8 @@ export const WalletNameScreen = observer(function WalletNameScreen({ route }: Pr
const [index, setIndex] = useState(0)
const [routes] = useState([
- { key: 'first', title: 'Own name' },
- { key: 'second', title: 'Random name' },
+ { key: 'first', title: translate('walletNameScreen_ownNameTab') },
+ { key: 'second', title: translate('walletNameScreen_randomNameTab') },
])
const headerBg = useThemeColor('header')
diff --git a/src/screens/WalletScreen.tsx b/src/screens/WalletScreen.tsx
index 86fc2191..448c6964 100644
--- a/src/screens/WalletScreen.tsx
+++ b/src/screens/WalletScreen.tsx
@@ -367,7 +367,7 @@ export const WalletScreen = observer(function WalletScreen({ route }: Props) {
log.trace('newMintUrl', newMintUrl)
if (mintsStore.alreadyExists(newMintUrl)) {
- const msg = translate('walletScreen.mintExists')
+ const msg = translate('walletScreen_mintExists')
log.info(msg)
setInfo(msg)
return
@@ -527,7 +527,7 @@ export const WalletScreen = observer(function WalletScreen({ route }: Props) {
@@ -583,7 +583,7 @@ export const WalletScreen = observer(function WalletScreen({ route }: Props) {
if (!isInternetReachable) {
return (
@@ -665,7 +665,7 @@ export const WalletScreen = observer(function WalletScreen({ route }: Props) {
HeadingComponent={}
ContentComponent={
<>
-
+
(
@@ -729,7 +729,7 @@ export const WalletScreen = observer(function WalletScreen({ route }: Props) {
/>
)}
onPress={toggleReceiveModal}
- tx='payCommon.receive'
+ tx='payCommon_receive'
style={[{backgroundColor: mainButtonColor, borderWidth: 1, borderColor: screenBg}, $buttonReceive]}
textStyle={{marginLeft: spacing.tiny}}
preset='secondary'
@@ -753,8 +753,8 @@ export const WalletScreen = observer(function WalletScreen({ route }: Props) {
/>
}
- tx="updateModal.title"
- subTx="updateModal.desc"
+ tx="updateModal_title"
+ subTx="updateModal_desc"
onPress={gotoUpdate}
/>
}
@@ -783,15 +783,15 @@ export const WalletScreen = observer(function WalletScreen({ route }: Props) {
<>
gotoLightningPay()}
/>
>
@@ -806,15 +806,15 @@ export const WalletScreen = observer(function WalletScreen({ route }: Props) {
<>
gotoTopup()}
/>
>
@@ -898,7 +898,7 @@ const MintsByUnitSummary = observer(function (props: {
}, [])
const {mintsByUnit} = props
- const mintsCountText = `and ${mintsByUnit.mints.length - 1} other${mintsByUnit.mints.length - 1 > 1 ? 's' : ''}`
+ const mintsCountText = translate('walletScreen_andOtherMints', {count: mintsByUnit.mints.length - 1})
return (
@@ -994,7 +994,7 @@ const MintsByUnitList = observer(function (props: {
{selectedMintUrl === mint.mintUrl && (
(
(
(
{return}}
style={{marginTop: spacing.medium}}
/>