Compare commits

...
Author SHA1 Message Date
Forte11Cuba 3e86de397d feat(i18n): add Russian translation 2026-02-11 02:55:27 -06:00
Forte11andGitHub 8bd95dd9a4 Merge pull request #30 from Forte11Cuba/feature/i18n-french
feat(i18n): add French translation
2026-02-11 02:51:04 -06:00
Forte11Cuba 20c513b5fc feat(i18n): add French translation 2026-02-11 02:49:09 -06:00
Forte11andGitHub aeb26158ef Merge pull request #29 from Forte11Cuba/feature/i18n-portuguese
feat(i18n): add Portuguese translation
2026-02-11 02:42:25 -06:00
Forte11Cuba 796f488c15 fix(i18n): register Portuguese locale in supportedLocales 2026-02-11 02:40:54 -06:00
Forte11Cuba a64a09adeb feat(i18n): add Portuguese translation 2026-02-11 02:35:41 -06:00
Forte11andGitHub 905981c3c3 Merge pull request #28 from Forte11Cuba/improve/ux-copy-and-loading-messages
Improve UX copy and add dynamic loading messages
2026-02-11 01:11:12 -06:00
Forte11Cuba a4a1b929a0 Improve UX copy and add dynamic loading messages 2026-02-11 01:05:47 -06:00
Forte11andGitHub c6209b9c9f Merge pull request #27 from Forte11Cuba/fix/show-full-lightning-address
Fix: show full lightning address instead of username only
2026-02-11 00:33:19 -06:00
8 changed files with 1544 additions and 11 deletions
+15 -4
View File
@@ -3,9 +3,17 @@
"appName": "ElCaju",
"appTagline": "Your private ecash wallet",
"loadingMessage1": "Encrypting your coins...",
"loadingMessage2": "Preparing your e-tokens...",
"loadingMessage3": "Connecting to the Mint...",
"loadingMessage4": "Privacy by default.",
"loadingMessage5": "Blind signing tokens...",
"loadingMessage6": "Go full Calle...",
"loadingMessage7": "Cashu + Bitchat = Privacy + Freedom",
"aboutTagline": "Privacy without borders.",
"welcomeTitle": "Welcome to ElCaju",
"welcomeSubtitle": "Your private ecash wallet.\nSimple, secure and non-custodial.",
"welcomeSubtitle": "Cashu for the world. Made in Cuba.",
"createWallet": "Create new wallet",
"restoreWallet": "Restore wallet",
@@ -85,7 +93,7 @@
"available": "Available:",
"max": "(Max)",
"memoOptional": "Memo (optional):",
"memoPlaceholder": "E.g.: For coffee",
"memoPlaceholder": "What is this payment for?",
"creatingToken": "Creating token...",
"createToken": "Create token",
"noActiveMint": "No active mint",
@@ -106,7 +114,7 @@
"amountToDeposit": "Amount to deposit:",
"descriptionOptional": "Description (optional):",
"depositPlaceholder": "E.g.: El Caju deposit",
"depositPlaceholder": "What is this deposit for?",
"generating": "Generating...",
"generateInvoice": "Generate invoice",
"depositLightning": "Deposit Lightning",
@@ -201,6 +209,9 @@
"deleteWallet": "Delete wallet",
"spanish": "Español",
"english": "English",
"portuguese": "Português",
"french": "Français",
"russian": "Русский",
"mnemonicNotFound": "Mnemonic not found",
"createPin": "Create PIN",
@@ -216,7 +227,7 @@
"selectLanguage": "Select language",
"languageChanged": "Language changed to {language}",
"close": "Close",
"aboutDescription": "Cashu wallet with Cuban identity, sister of La Chispa.",
"aboutDescription": "A Cashu wallet with Cuban DNA for the entire world. Brother of La Chispa.",
"couldNotOpenLink": "Could not open link",
"deleteWalletQuestion": "Delete wallet?",
+15 -4
View File
@@ -3,9 +3,17 @@
"appName": "ElCaju",
"appTagline": "Tu wallet de ecash privado",
"loadingMessage1": "Cifrando tus monedas...",
"loadingMessage2": "Preparando tus e-tokens...",
"loadingMessage3": "Conectando con el Mint...",
"loadingMessage4": "Privacidad por defecto.",
"loadingMessage5": "Firmando tokens ciegamente...",
"loadingMessage6": "Go full Calle...",
"loadingMessage7": "Cashu + Bitchat = Privacidad + Libertad",
"aboutTagline": "Privacidad sin fronteras.",
"welcomeTitle": "Bienvenido a ElCaju",
"welcomeSubtitle": "Tu wallet de ecash privado.\nSimple, seguro y sin custodia.",
"welcomeSubtitle": "Cashu para el mundo. Hecho en Cuba.",
"createWallet": "Crear nueva wallet",
"restoreWallet": "Restaurar wallet",
@@ -100,7 +108,7 @@
"available": "Disponible:",
"max": "(Max)",
"memoOptional": "Memo (opcional):",
"memoPlaceholder": "Ej: Para el café",
"memoPlaceholder": "¿Para qué es este pago?",
"creatingToken": "Creando token...",
"createToken": "Crear token",
"noActiveMint": "No hay mint activo",
@@ -131,7 +139,7 @@
"amountToDeposit": "Monto a depositar:",
"descriptionOptional": "Descripción (opcional):",
"depositPlaceholder": "Ej: Deposito El Caju",
"depositPlaceholder": "¿Para qué es esta recarga?",
"generating": "Generando...",
"generateInvoice": "Generar invoice",
"depositLightning": "Depositar Lightning",
@@ -258,6 +266,9 @@
"deleteWallet": "Borrar wallet",
"spanish": "Español",
"english": "English",
"portuguese": "Português",
"french": "Français",
"russian": "Русский",
"mnemonicNotFound": "No se encontró el mnemonic",
"createPin": "Crear PIN",
@@ -278,7 +289,7 @@
}
},
"close": "Cerrar",
"aboutDescription": "Cashu wallet con identidad cubana, hermana de La Chispa.",
"aboutDescription": "Un wallet de Cashu con ADN cubano para el mundo entero. Hermano de La Chispa.",
"couldNotOpenLink": "No se pudo abrir el enlace",
"deleteWalletQuestion": "¿Borrar wallet?",
+483
View File
@@ -0,0 +1,483 @@
{
"@@locale": "fr",
"appName": "ElCaju",
"appTagline": "Votre portefeuille ecash privé",
"loadingMessage1": "Chiffrement de vos pièces...",
"loadingMessage2": "Préparation de vos e-tokens...",
"loadingMessage3": "Connexion au Mint...",
"loadingMessage4": "Confidentialité par défaut.",
"loadingMessage5": "Signature aveugle des tokens...",
"loadingMessage6": "Go full Calle...",
"loadingMessage7": "Cashu + Bitchat = Confidentialité + Liberté",
"aboutTagline": "Confidentialité sans frontières.",
"welcomeTitle": "Bienvenue sur ElCaju",
"welcomeSubtitle": "Cashu pour le monde. Fait à Cuba.",
"createWallet": "Créer un nouveau portefeuille",
"restoreWallet": "Restaurer le portefeuille",
"createWalletTitle": "Créer un portefeuille",
"creatingWallet": "Création de votre portefeuille...",
"generatingSeed": "Génération sécurisée de votre phrase de récupération",
"createWalletDescription": "Une phrase de récupération de 12 mots sera générée.\nConservez-la dans un endroit sûr.",
"generateWallet": "Générer le portefeuille",
"walletCreated": "Portefeuille créé !",
"walletCreatedDescription": "Votre portefeuille est prêt. Nous vous recommandons de sauvegarder votre phrase de récupération maintenant.",
"backupWarning": "Sans sauvegarde, vous perdrez l'accès à vos fonds si vous perdez l'appareil.",
"backupNow": "Sauvegarder maintenant",
"backupLater": "Plus tard",
"backupTitle": "Sauvegarde",
"seedPhraseTitle": "Votre phrase de récupération",
"seedPhraseDescription": "Conservez ces 12 mots dans l'ordre. C'est le seul moyen de récupérer votre portefeuille.",
"revealSeedPhrase": "Révéler la phrase de récupération",
"tapToReveal": "Appuyez sur le bouton pour révéler\nvotre phrase de récupération",
"copyToClipboard": "Copier dans le presse-papiers",
"seedCopied": "Phrase copiée dans le presse-papiers",
"neverShareSeed": "Ne partagez jamais votre phrase de récupération avec personne.",
"confirmBackup": "J'ai sauvegardé ma phrase de récupération dans un endroit sûr",
"continue_": "Continuer",
"restoreTitle": "Restaurer le portefeuille",
"enterSeedPhrase": "Entrez votre phrase de récupération",
"enterSeedDescription": "Tapez les 12 ou 24 mots séparés par des espaces.",
"seedPlaceholder": "mot1 mot2 mot3 ...",
"wordCount": "{count} mots",
"@wordCount": {
"placeholders": {
"count": { "type": "int" }
}
},
"needWords": "(vous avez besoin de 12 ou 24)",
"restoreError": "Erreur de restauration : {error}",
"@restoreError": {
"placeholders": {
"error": { "type": "String" }
}
},
"homeTitle": "Accueil",
"receive": "Recevoir",
"send": "Envoyer",
"sendAction": "Envoyer ↗",
"receiveAction": "↘ Recevoir",
"deposit": "Déposer",
"withdraw": "Retirer",
"lightning": "Lightning",
"cashu": "Cashu",
"ecash": "Ecash",
"history": "Historique",
"noTransactions": "Aucune transaction",
"depositOrReceive": "Déposez ou recevez des sats pour commencer",
"noMint": "Aucun mint",
"balance": "Solde",
"sats": "sats",
"pasteEcashToken": "Coller le token ecash",
"generateInvoiceToDeposit": "Générer une facture pour déposer",
"createEcashToken": "Créer un token ecash",
"payLightningInvoice": "Payer une facture Lightning",
"receiveCashu": "Recevoir Cashu",
"pasteTheCashuToken": "Collez le token Cashu :",
"pasteFromClipboard": "Coller depuis le presse-papiers",
"validToken": "Token valide",
"invalidToken": "Token invalide ou malformé",
"amount": "Montant :",
"mint": "Mint :",
"claiming": "Réclamation...",
"claimTokens": "Réclamer les tokens",
"tokensReceived": "Tokens reçus",
"backToHome": "Retour à l'accueil",
"tokenAlreadyClaimed": "Ce token a déjà été réclamé",
"unknownMint": "Token d'un mint inconnu",
"claimError": "Erreur de réclamation : {error}",
"@claimError": {
"placeholders": {
"error": { "type": "String" }
}
},
"sendCashu": "Envoyer Cashu",
"selectNotesManually": "Sélectionner les notes manuellement",
"amountToSend": "Montant à envoyer :",
"available": "Disponible :",
"max": "(Max)",
"memoOptional": "Mémo (optionnel) :",
"memoPlaceholder": "À quoi sert ce paiement ?",
"creatingToken": "Création du token...",
"createToken": "Créer le token",
"noActiveMint": "Aucun mint actif",
"offlineModeMessage": "Pas de connexion. Mode hors ligne...",
"confirmSend": "Confirmer l'envoi",
"confirm": "Confirmer",
"cancel": "Annuler",
"insufficientBalance": "Solde insuffisant",
"tokenCreationError": "Erreur de création du token : {error}",
"@tokenCreationError": {
"placeholders": {
"error": { "type": "String" }
}
},
"tokenCreated": "Token créé",
"copy": "Copier",
"share": "Partager",
"tokenCashu": "Token Cashu",
"tokenCashuAnimatedQr": "Token Cashu (QR animé - {fragments} fragments UR)",
"@tokenCashuAnimatedQr": {
"placeholders": {
"fragments": { "type": "int" }
}
},
"keepTokenWarning": "Conservez ce token jusqu'à ce que le destinataire le réclame. Si vous le perdez, vous perdrez les fonds.",
"tokenCopiedToClipboard": "Token copié dans le presse-papiers",
"amountToDeposit": "Montant à déposer :",
"descriptionOptional": "Description (optionnelle) :",
"depositPlaceholder": "À quoi sert ce dépôt ?",
"generating": "Génération...",
"generateInvoice": "Générer la facture",
"depositLightning": "Déposer Lightning",
"payInvoiceTitle": "Payer la facture",
"generatingInvoice": "Génération de la facture...",
"waitingForPayment": "En attente du paiement...",
"paymentReceived": "Paiement reçu",
"tokensIssued": "Tokens émis !",
"error": "Erreur",
"unknownError": "Erreur inconnue",
"back": "Retour",
"copyInvoice": "Copier la facture",
"description": "Description :",
"invoiceCopiedToClipboard": "Facture copiée dans le presse-papiers",
"deposited": "{amount} {unit} déposés",
"@deposited": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"pasteLightningInvoice": "Collez la facture Lightning :",
"gettingQuote": "Obtention du devis...",
"validInvoice": "Facture valide",
"invalidInvoice": "Facture invalide",
"invalidInvoiceMalformed": "Facture invalide ou malformée",
"feeReserved": "Frais réservés :",
"total": "Total :",
"paying": "Paiement...",
"payInvoice": "Payer la facture",
"confirmPayment": "Confirmer le paiement",
"pay": "Payer",
"fee": "frais",
"invoiceExpired": "Facture expirée",
"amountOutOfRange": "Montant hors de la plage autorisée",
"resolvingType": "Résolution de {type}...",
"@resolvingType": {
"placeholders": {
"type": { "type": "String" }
}
},
"invoiceAlreadyPaid": "Facture déjà payée",
"paymentError": "Erreur de paiement : {error}",
"@paymentError": {
"placeholders": {
"error": { "type": "String" }
}
},
"sent": "{amount} {unit} envoyés",
"@sent": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"filterAll": "Tous",
"filterPending": "En attente",
"filterEcash": "Ecash",
"filterLightning": "Lightning",
"receiveTokensToStart": "Recevez des tokens Cashu pour commencer",
"noPendingTransactions": "Aucune transaction en attente",
"allTransactionsCompleted": "Toutes vos transactions sont terminées",
"noEcashTransactions": "Aucune transaction Ecash",
"sendOrReceiveTokens": "Envoyez ou recevez des tokens Cashu",
"noLightningTransactions": "Aucune transaction Lightning",
"depositOrWithdrawLightning": "Déposez ou retirez via Lightning",
"pendingStatus": "En attente",
"receivedStatus": "Reçu",
"sentStatus": "Envoyé",
"now": "Maintenant",
"agoMinutes": "Il y a {minutes} min",
"@agoMinutes": {
"placeholders": {
"minutes": { "type": "int" }
}
},
"agoHours": "Il y a {hours} h",
"@agoHours": {
"placeholders": {
"hours": { "type": "int" }
}
},
"agoDays": "Il y a {days} jours",
"@agoDays": {
"placeholders": {
"days": { "type": "int" }
}
},
"lightningInvoice": "Facture Lightning",
"receivedEcash": "Ecash reçu",
"sentEcash": "Ecash envoyé",
"outgoingLightningPayment": "Paiement Lightning sortant",
"invoiceNotAvailable": "Facture non disponible",
"tokenNotAvailable": "Token non disponible",
"unit": "Unité",
"status": "Statut",
"pending": "En attente",
"memo": "Mémo",
"copyInvoiceButton": "COPIER LA FACTURE",
"copyButton": "COPIER",
"invoiceCopied": "Facture copiée",
"tokenCopied": "Token copié",
"speed": "VITESSE :",
"settings": "Paramètres",
"walletSection": "PORTEFEUILLE",
"backupSeedPhrase": "Sauvegarder la phrase de récupération",
"viewRecoveryWords": "Voir vos mots de récupération",
"connectedMints": "Mints connectés",
"manageCashuMints": "Gérer vos mints Cashu",
"pinAccess": "Code PIN",
"pinEnabled": "Activé",
"protectWithPin": "Protéger l'app avec un PIN",
"recoverTokens": "Récupérer les tokens",
"scanMintsWithSeed": "Scanner les mints avec la phrase de récupération",
"appearanceSection": "LANGUE",
"language": "Langue",
"informationSection": "INFORMATIONS",
"version": "Version",
"about": "À propos",
"deleteWallet": "Supprimer le portefeuille",
"spanish": "Español",
"english": "English",
"portuguese": "Português",
"french": "Français",
"russian": "Русский",
"mnemonicNotFound": "Mnémonique non trouvé",
"createPin": "Créer un PIN",
"enterPinDigits": "Entrez un PIN à 4 chiffres",
"confirmPin": "Confirmer le PIN",
"enterPinAgain": "Entrez le PIN à nouveau",
"pinMismatch": "Les PIN ne correspondent pas",
"pinActivated": "PIN activé",
"pinDeactivated": "PIN désactivé",
"verifyPin": "Vérifier le PIN",
"enterCurrentPin": "Entrez votre PIN actuel",
"incorrectPin": "PIN incorrect",
"selectLanguage": "Sélectionner la langue",
"languageChanged": "Langue changée en {language}",
"@languageChanged": {
"placeholders": {
"language": { "type": "String" }
}
},
"close": "Fermer",
"aboutDescription": "Un portefeuille Cashu avec ADN cubain pour le monde entier. Frère de La Chispa.",
"couldNotOpenLink": "Impossible d'ouvrir le lien",
"deleteWalletQuestion": "Supprimer le portefeuille ?",
"actionIrreversible": "Cette action est irréversible",
"deleteWalletWarning": "Toutes les données seront supprimées, y compris votre phrase de récupération et vos tokens. Assurez-vous d'avoir une sauvegarde.",
"typeDeleteToConfirm": "Tapez \"SUPPRIMER\" pour confirmer :",
"deleteConfirmWord": "SUPPRIMER",
"deleteError": "Erreur de suppression : {error}",
"@deleteError": {
"placeholders": {
"error": { "type": "String" }
}
},
"recoverTokensTitle": "Récupérer les tokens",
"recoverTokensDescription": "Scanner les mints pour récupérer les tokens associés à votre phrase de récupération (NUT-13)",
"useCurrentSeedPhrase": "Utiliser ma phrase de récupération actuelle",
"scanWithSavedWords": "Scanner les mints avec les 12 mots sauvegardés",
"useOtherSeedPhrase": "Utiliser une autre phrase de récupération",
"recoverFromOtherWords": "Récupérer les tokens d'autres 12 mots",
"mintsToScan": "Mints à scanner :",
"allMints": "Tous les mints ({count})",
"@allMints": {
"placeholders": {
"count": { "type": "int" }
}
},
"specificMint": "Un mint spécifique",
"enterMnemonicWords": "Entrez les 12 mots séparés par des espaces...",
"scanMints": "Scanner les mints",
"selectMintToScan": "Sélectionnez un mint à scanner",
"mnemonicMustHaveWords": "Le mnémonique doit avoir 12 ou 24 mots",
"noConnectedMintsToScan": "Aucun mint connecté à scanner",
"recoveredTokens": "Récupéré {tokens} de {mints} mint(s) !",
"@recoveredTokens": {
"placeholders": {
"tokens": { "type": "String" },
"mints": { "type": "int" }
}
},
"scanCompleteNoTokens": "Scan terminé. Aucun nouveau token trouvé.",
"mintsWithError": "({count} mint(s) avec erreur)",
"@mintsWithError": {
"placeholders": {
"count": { "type": "int" }
}
},
"recoveredFromMint": "Récupéré {tokens} de {mint} !",
"@recoveredFromMint": {
"placeholders": {
"tokens": { "type": "String" },
"mint": { "type": "String" }
}
},
"noTokensFoundInMint": "Aucun token trouvé dans {mint}.",
"@noTokensFoundInMint": {
"placeholders": {
"mint": { "type": "String" }
}
},
"recoveredAndTransferred": "Récupéré et transféré {amount} {unit} vers votre portefeuille !",
"@recoveredAndTransferred": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"noTokensForMnemonic": "Aucun token trouvé associé à ce mnémonique.",
"noConnectedMints": "Aucun mint connecté",
"addMintToStart": "Ajoutez un mint pour commencer",
"addMint": "Ajouter un mint",
"mintDeleted": "Mint supprimé",
"activeMintUpdated": "Mint actif mis à jour",
"mintUrl": "URL du mint :",
"mintUrlPlaceholder": "https://mint.example.com",
"urlMustStartWithHttps": "L'URL doit commencer par https://",
"connectingToMint": "Connexion au mint...",
"mintAddedSuccessfully": "Mint ajouté avec succès",
"couldNotConnectToMint": "Impossible de se connecter au mint",
"add": "Ajouter",
"success": "Succès",
"loading": "Chargement...",
"retry": "Réessayer",
"activeMint": "Mint actif",
"mintMessage": "Message du Mint",
"url": "URL",
"currency": "Devise",
"unknown": "Inconnu",
"useThisMint": "Utiliser ce mint",
"copyMintUrl": "Copier l'URL du mint",
"deleteMint": "Supprimer le mint",
"copied": "{label} copié",
"@copied": {
"placeholders": {
"label": { "type": "String" }
}
},
"deleteMintConfirmTitle": "Supprimer le mint",
"deleteMintConfirmMessage": "Si vous avez un solde sur ce mint, il sera perdu. Êtes-vous sûr ?",
"delete": "Supprimer",
"offlineSend": "Envoi hors ligne",
"selectNotesToSend": "Sélectionnez les notes à envoyer :",
"totalToSend": "Total à envoyer",
"notesSelected": "{count} notes sélectionnées",
"@notesSelected": {
"placeholders": {
"count": { "type": "int" }
}
},
"loadingProofsError": "Erreur de chargement des preuves : {error}",
"@loadingProofsError": {
"placeholders": {
"error": { "type": "String" }
}
},
"creatingTokenError": "Erreur de création du token : {error}",
"@creatingTokenError": {
"placeholders": {
"error": { "type": "String" }
}
},
"unknownState": "État inconnu",
"depositAmountTitle": "Déposer {amount} {unit}",
"@depositAmountTitle": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"receiveNow": "Recevoir maintenant",
"receiveLater": "Recevoir plus tard",
"tokenSavedForLater": "Token sauvegardé pour réclamer plus tard",
"noConnectionTokenSaved": "Pas de connexion. Token sauvegardé pour réclamer plus tard.",
"unknownMintOffline": "Ce token provient d'un mint inconnu. Connectez-vous à Internet pour l'ajouter et réclamer le token.",
"noConnectionTryLater": "Pas de connexion au mint. Réessayez plus tard.",
"saveTokenError": "Erreur lors de la sauvegarde du token. Veuillez réessayer.",
"pendingTokenLimitReached": "Limite de tokens en attente atteinte (max 50)",
"filterToReceive": "À recevoir",
"noPendingTokens": "Aucun token en attente",
"noPendingTokensHint": "Sauvegardez des tokens pour les réclamer plus tard",
"pendingBadge": "EN ATTENTE",
"expiresInDays": "{days, plural, =1{Expire dans 1 jour} other{Expire dans {days} jours}}",
"@expiresInDays": {
"placeholders": {
"days": { "type": "int" }
}
},
"retryCount": "{count} tentatives",
"@retryCount": {
"placeholders": {
"count": { "type": "int" }
}
},
"claimNow": "Réclamer maintenant",
"pendingTokenClaimedSuccess": "Réclamé {amount} {unit}",
"@pendingTokenClaimedSuccess": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"pendingTokensClaimed": "{count, plural, =1{Réclamé 1 token ({amount} {unit})} other{Réclamé {count} tokens ({amount} {unit})}}",
"@pendingTokensClaimed": {
"placeholders": {
"count": { "type": "int" },
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"scan": "Scanner",
"scanQrCode": "Scanner le QR",
"scanCashuToken": "Scanner un token Cashu",
"scanLightningInvoice": "Scanner une facture",
"scanningAnimatedQr": "Scan du QR animé...",
"pointCameraAtQr": "Pointez la caméra vers le code QR",
"pointCameraAtCashuQr": "Pointez la caméra vers le QR du token Cashu",
"pointCameraAtInvoiceQr": "Pointez la caméra vers le QR de la facture",
"unrecognizedQrCode": "Code QR non reconnu",
"scanCashuTokenHint": "Scannez un token Cashu (cashuA... ou cashuB...)",
"scanLightningInvoiceHint": "Scannez une facture Lightning (lnbc...)",
"addMintQuestion": "Ajouter ce mint ?",
"cameraPermissionDenied": "Permission de la caméra refusée",
"paymentRequestNotSupported": "Les demandes de paiement ne sont pas encore prises en charge"
}
+483
View File
@@ -0,0 +1,483 @@
{
"@@locale": "pt",
"appName": "ElCaju",
"appTagline": "Sua wallet de ecash privada",
"loadingMessage1": "Criptografando suas moedas...",
"loadingMessage2": "Preparando seus e-tokens...",
"loadingMessage3": "Conectando ao Mint...",
"loadingMessage4": "Privacidade por padrão.",
"loadingMessage5": "Assinando tokens cegamente...",
"loadingMessage6": "Go full Calle...",
"loadingMessage7": "Cashu + Bitchat = Privacidade + Liberdade",
"aboutTagline": "Privacidade sem fronteiras.",
"welcomeTitle": "Bem-vindo ao ElCaju",
"welcomeSubtitle": "Cashu para o mundo. Feito em Cuba.",
"createWallet": "Criar nova wallet",
"restoreWallet": "Restaurar wallet",
"createWalletTitle": "Criar wallet",
"creatingWallet": "Criando sua wallet...",
"generatingSeed": "Gerando sua frase semente de forma segura",
"createWalletDescription": "Uma frase semente de 12 palavras será gerada.\nGuarde-a em um lugar seguro.",
"generateWallet": "Gerar wallet",
"walletCreated": "Wallet criada!",
"walletCreatedDescription": "Sua wallet está pronta. Recomendamos fazer backup da sua frase semente agora.",
"backupWarning": "Sem backup, você perderá acesso aos seus fundos se perder o dispositivo.",
"backupNow": "Fazer backup agora",
"backupLater": "Fazer depois",
"backupTitle": "Backup",
"seedPhraseTitle": "Sua frase semente",
"seedPhraseDescription": "Guarde estas 12 palavras em ordem. Elas são a única forma de recuperar sua wallet.",
"revealSeedPhrase": "Revelar frase semente",
"tapToReveal": "Toque no botão para revelar\nsua frase semente",
"copyToClipboard": "Copiar para área de transferência",
"seedCopied": "Frase copiada para área de transferência",
"neverShareSeed": "Nunca compartilhe sua frase semente com ninguém.",
"confirmBackup": "Guardei minha frase semente em um lugar seguro",
"continue_": "Continuar",
"restoreTitle": "Restaurar wallet",
"enterSeedPhrase": "Digite sua frase semente",
"enterSeedDescription": "Digite as 12 ou 24 palavras separadas por espaços.",
"seedPlaceholder": "palavra1 palavra2 palavra3 ...",
"wordCount": "{count} palavras",
"@wordCount": {
"placeholders": {
"count": { "type": "int" }
}
},
"needWords": "(você precisa de 12 ou 24)",
"restoreError": "Erro ao restaurar: {error}",
"@restoreError": {
"placeholders": {
"error": { "type": "String" }
}
},
"homeTitle": "Início",
"receive": "Receber",
"send": "Enviar",
"sendAction": "Enviar ↗",
"receiveAction": "↘ Receber",
"deposit": "Depositar",
"withdraw": "Sacar",
"lightning": "Lightning",
"cashu": "Cashu",
"ecash": "Ecash",
"history": "Histórico",
"noTransactions": "Sem transações ainda",
"depositOrReceive": "Deposite ou receba sats para começar",
"noMint": "Sem mint",
"balance": "Saldo",
"sats": "sats",
"pasteEcashToken": "Colar token ecash",
"generateInvoiceToDeposit": "Gerar invoice para depositar",
"createEcashToken": "Criar token ecash",
"payLightningInvoice": "Pagar invoice Lightning",
"receiveCashu": "Receber Cashu",
"pasteTheCashuToken": "Cole o token Cashu:",
"pasteFromClipboard": "Colar da área de transferência",
"validToken": "Token válido",
"invalidToken": "Token inválido ou malformado",
"amount": "Valor:",
"mint": "Mint:",
"claiming": "Resgatando...",
"claimTokens": "Resgatar tokens",
"tokensReceived": "Tokens recebidos",
"backToHome": "Voltar ao início",
"tokenAlreadyClaimed": "Este token já foi resgatado",
"unknownMint": "Token de um mint desconhecido",
"claimError": "Erro ao resgatar: {error}",
"@claimError": {
"placeholders": {
"error": { "type": "String" }
}
},
"sendCashu": "Enviar Cashu",
"selectNotesManually": "Selecionar notas manualmente",
"amountToSend": "Valor a enviar:",
"available": "Disponível:",
"max": "(Máx)",
"memoOptional": "Memo (opcional):",
"memoPlaceholder": "Para que é este pagamento?",
"creatingToken": "Criando token...",
"createToken": "Criar token",
"noActiveMint": "Nenhum mint ativo",
"offlineModeMessage": "Sem conexão. Usando modo offline...",
"confirmSend": "Confirmar envio",
"confirm": "Confirmar",
"cancel": "Cancelar",
"insufficientBalance": "Saldo insuficiente",
"tokenCreationError": "Erro ao criar token: {error}",
"@tokenCreationError": {
"placeholders": {
"error": { "type": "String" }
}
},
"tokenCreated": "Token criado",
"copy": "Copiar",
"share": "Compartilhar",
"tokenCashu": "Token Cashu",
"tokenCashuAnimatedQr": "Token Cashu (QR animado - {fragments} fragmentos UR)",
"@tokenCashuAnimatedQr": {
"placeholders": {
"fragments": { "type": "int" }
}
},
"keepTokenWarning": "Guarde este token até que o destinatário o resgate. Se você perdê-lo, perderá os fundos.",
"tokenCopiedToClipboard": "Token copiado para área de transferência",
"amountToDeposit": "Valor a depositar:",
"descriptionOptional": "Descrição (opcional):",
"depositPlaceholder": "Para que é este depósito?",
"generating": "Gerando...",
"generateInvoice": "Gerar invoice",
"depositLightning": "Depositar Lightning",
"payInvoiceTitle": "Pagar invoice",
"generatingInvoice": "Gerando invoice...",
"waitingForPayment": "Aguardando pagamento...",
"paymentReceived": "Pagamento recebido",
"tokensIssued": "Tokens emitidos!",
"error": "Erro",
"unknownError": "Erro desconhecido",
"back": "Voltar",
"copyInvoice": "Copiar invoice",
"description": "Descrição:",
"invoiceCopiedToClipboard": "Invoice copiado para área de transferência",
"deposited": "{amount} {unit} depositados",
"@deposited": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"pasteLightningInvoice": "Cole o invoice Lightning:",
"gettingQuote": "Obtendo cotação...",
"validInvoice": "Invoice válido",
"invalidInvoice": "Invoice inválido",
"invalidInvoiceMalformed": "Invoice inválido ou malformado",
"feeReserved": "Taxa reservada:",
"total": "Total:",
"paying": "Pagando...",
"payInvoice": "Pagar invoice",
"confirmPayment": "Confirmar pagamento",
"pay": "Pagar",
"fee": "taxa",
"invoiceExpired": "Invoice expirado",
"amountOutOfRange": "Valor fora do intervalo permitido",
"resolvingType": "Resolvendo {type}...",
"@resolvingType": {
"placeholders": {
"type": { "type": "String" }
}
},
"invoiceAlreadyPaid": "Invoice já foi pago",
"paymentError": "Erro ao pagar: {error}",
"@paymentError": {
"placeholders": {
"error": { "type": "String" }
}
},
"sent": "{amount} {unit} enviados",
"@sent": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"filterAll": "Todos",
"filterPending": "Pendentes",
"filterEcash": "Ecash",
"filterLightning": "Lightning",
"receiveTokensToStart": "Receba tokens Cashu para começar",
"noPendingTransactions": "Sem transações pendentes",
"allTransactionsCompleted": "Todas as suas transações estão completas",
"noEcashTransactions": "Sem transações Ecash",
"sendOrReceiveTokens": "Envie ou receba tokens Cashu",
"noLightningTransactions": "Sem transações Lightning",
"depositOrWithdrawLightning": "Deposite ou saque via Lightning",
"pendingStatus": "Pendente",
"receivedStatus": "Recebido",
"sentStatus": "Enviado",
"now": "Agora",
"agoMinutes": "Há {minutes} min",
"@agoMinutes": {
"placeholders": {
"minutes": { "type": "int" }
}
},
"agoHours": "Há {hours} h",
"@agoHours": {
"placeholders": {
"hours": { "type": "int" }
}
},
"agoDays": "Há {days} dias",
"@agoDays": {
"placeholders": {
"days": { "type": "int" }
}
},
"lightningInvoice": "Invoice Lightning",
"receivedEcash": "Ecash Recebido",
"sentEcash": "Ecash Enviado",
"outgoingLightningPayment": "Pagamento Lightning Enviado",
"invoiceNotAvailable": "Invoice não disponível",
"tokenNotAvailable": "Token não disponível",
"unit": "Unidade",
"status": "Status",
"pending": "Pendente",
"memo": "Memo",
"copyInvoiceButton": "COPIAR INVOICE",
"copyButton": "COPIAR",
"invoiceCopied": "Invoice copiado",
"tokenCopied": "Token copiado",
"speed": "VELOCIDADE:",
"settings": "Configurações",
"walletSection": "WALLET",
"backupSeedPhrase": "Backup da frase semente",
"viewRecoveryWords": "Ver suas palavras de recuperação",
"connectedMints": "Mints conectados",
"manageCashuMints": "Gerenciar seus mints Cashu",
"pinAccess": "PIN de acesso",
"pinEnabled": "Ativado",
"protectWithPin": "Proteger o app com PIN",
"recoverTokens": "Recuperar tokens",
"scanMintsWithSeed": "Escanear mints com frase semente",
"appearanceSection": "IDIOMA",
"language": "Idioma",
"informationSection": "INFORMAÇÃO",
"version": "Versão",
"about": "Sobre",
"deleteWallet": "Apagar wallet",
"spanish": "Español",
"english": "English",
"portuguese": "Português",
"french": "Français",
"russian": "Русский",
"mnemonicNotFound": "Mnemônico não encontrado",
"createPin": "Criar PIN",
"enterPinDigits": "Digite um PIN de 4 dígitos",
"confirmPin": "Confirmar PIN",
"enterPinAgain": "Digite o PIN novamente",
"pinMismatch": "Os PINs não coincidem",
"pinActivated": "PIN ativado",
"pinDeactivated": "PIN desativado",
"verifyPin": "Verificar PIN",
"enterCurrentPin": "Digite seu PIN atual",
"incorrectPin": "PIN incorreto",
"selectLanguage": "Selecionar idioma",
"languageChanged": "Idioma alterado para {language}",
"@languageChanged": {
"placeholders": {
"language": { "type": "String" }
}
},
"close": "Fechar",
"aboutDescription": "Uma wallet Cashu com DNA cubano para o mundo inteiro. Irmã de La Chispa.",
"couldNotOpenLink": "Não foi possível abrir o link",
"deleteWalletQuestion": "Apagar wallet?",
"actionIrreversible": "Esta ação é irreversível",
"deleteWalletWarning": "Todos os dados serão excluídos, incluindo sua frase semente e tokens. Certifique-se de ter um backup.",
"typeDeleteToConfirm": "Digite \"APAGAR\" para confirmar:",
"deleteConfirmWord": "APAGAR",
"deleteError": "Erro ao apagar: {error}",
"@deleteError": {
"placeholders": {
"error": { "type": "String" }
}
},
"recoverTokensTitle": "Recuperar tokens",
"recoverTokensDescription": "Escanear mints para recuperar tokens associados à sua frase semente (NUT-13)",
"useCurrentSeedPhrase": "Usar minha frase semente atual",
"scanWithSavedWords": "Escanear mints com as 12 palavras salvas",
"useOtherSeedPhrase": "Usar outra frase semente",
"recoverFromOtherWords": "Recuperar tokens de outras 12 palavras",
"mintsToScan": "Mints para escanear:",
"allMints": "Todos os mints ({count})",
"@allMints": {
"placeholders": {
"count": { "type": "int" }
}
},
"specificMint": "Um mint específico",
"enterMnemonicWords": "Digite as 12 palavras separadas por espaços...",
"scanMints": "Escanear mints",
"selectMintToScan": "Selecione um mint para escanear",
"mnemonicMustHaveWords": "O mnemônico deve ter 12 ou 24 palavras",
"noConnectedMintsToScan": "Nenhum mint conectado para escanear",
"recoveredTokens": "Recuperados {tokens} de {mints} mint(s)!",
"@recoveredTokens": {
"placeholders": {
"tokens": { "type": "String" },
"mints": { "type": "int" }
}
},
"scanCompleteNoTokens": "Escaneamento completo. Nenhum token novo encontrado.",
"mintsWithError": "({count} mint(s) com erro)",
"@mintsWithError": {
"placeholders": {
"count": { "type": "int" }
}
},
"recoveredFromMint": "Recuperados {tokens} de {mint}!",
"@recoveredFromMint": {
"placeholders": {
"tokens": { "type": "String" },
"mint": { "type": "String" }
}
},
"noTokensFoundInMint": "Nenhum token encontrado em {mint}.",
"@noTokensFoundInMint": {
"placeholders": {
"mint": { "type": "String" }
}
},
"recoveredAndTransferred": "Recuperados e transferidos {amount} {unit} para sua wallet!",
"@recoveredAndTransferred": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"noTokensForMnemonic": "Nenhum token encontrado associado a esse mnemônico.",
"noConnectedMints": "Nenhum mint conectado",
"addMintToStart": "Adicione um mint para começar",
"addMint": "Adicionar mint",
"mintDeleted": "Mint excluído",
"activeMintUpdated": "Mint ativo atualizado",
"mintUrl": "URL do mint:",
"mintUrlPlaceholder": "https://mint.example.com",
"urlMustStartWithHttps": "A URL deve começar com https://",
"connectingToMint": "Conectando ao mint...",
"mintAddedSuccessfully": "Mint adicionado com sucesso",
"couldNotConnectToMint": "Não foi possível conectar ao mint",
"add": "Adicionar",
"success": "Sucesso",
"loading": "Carregando...",
"retry": "Tentar novamente",
"activeMint": "Mint ativo",
"mintMessage": "Mensagem do Mint",
"url": "URL",
"currency": "Moeda",
"unknown": "Desconhecido",
"useThisMint": "Usar este mint",
"copyMintUrl": "Copiar URL do mint",
"deleteMint": "Excluir mint",
"copied": "{label} copiado",
"@copied": {
"placeholders": {
"label": { "type": "String" }
}
},
"deleteMintConfirmTitle": "Excluir mint",
"deleteMintConfirmMessage": "Se você tiver saldo neste mint, ele será perdido. Tem certeza?",
"delete": "Excluir",
"offlineSend": "Envio Offline",
"selectNotesToSend": "Selecione as notas que deseja enviar:",
"totalToSend": "Total a enviar",
"notesSelected": "{count} notas selecionadas",
"@notesSelected": {
"placeholders": {
"count": { "type": "int" }
}
},
"loadingProofsError": "Erro ao carregar provas: {error}",
"@loadingProofsError": {
"placeholders": {
"error": { "type": "String" }
}
},
"creatingTokenError": "Erro ao criar token: {error}",
"@creatingTokenError": {
"placeholders": {
"error": { "type": "String" }
}
},
"unknownState": "Estado desconhecido",
"depositAmountTitle": "Depositar {amount} {unit}",
"@depositAmountTitle": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"receiveNow": "Receber agora",
"receiveLater": "Receber depois",
"tokenSavedForLater": "Token salvo para resgatar depois",
"noConnectionTokenSaved": "Sem conexão. Token salvo para resgatar depois.",
"unknownMintOffline": "Este token é de um mint desconhecido. Conecte-se à internet para adicioná-lo e resgatar o token.",
"noConnectionTryLater": "Sem conexão ao mint. Tente mais tarde.",
"saveTokenError": "Erro ao salvar o token. Tente novamente.",
"pendingTokenLimitReached": "Limite de tokens pendentes atingido (máx 50)",
"filterToReceive": "Para receber",
"noPendingTokens": "Sem tokens pendentes",
"noPendingTokensHint": "Salve tokens para resgatar depois",
"pendingBadge": "PENDENTE",
"expiresInDays": "{days, plural, =1{Expira em 1 dia} other{Expira em {days} dias}}",
"@expiresInDays": {
"placeholders": {
"days": { "type": "int" }
}
},
"retryCount": "{count} tentativas",
"@retryCount": {
"placeholders": {
"count": { "type": "int" }
}
},
"claimNow": "Resgatar agora",
"pendingTokenClaimedSuccess": "Resgatados {amount} {unit}",
"@pendingTokenClaimedSuccess": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"pendingTokensClaimed": "{count, plural, =1{Resgatado 1 token ({amount} {unit})} other{Resgatados {count} tokens ({amount} {unit})}}",
"@pendingTokensClaimed": {
"placeholders": {
"count": { "type": "int" },
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"scan": "Escanear",
"scanQrCode": "Escanear QR",
"scanCashuToken": "Escanear token Cashu",
"scanLightningInvoice": "Escanear invoice",
"scanningAnimatedQr": "Escaneando QR animado...",
"pointCameraAtQr": "Aponte a câmera para o código QR",
"pointCameraAtCashuQr": "Aponte a câmera para o QR do token Cashu",
"pointCameraAtInvoiceQr": "Aponte a câmera para o QR do invoice",
"unrecognizedQrCode": "Código QR não reconhecido",
"scanCashuTokenHint": "Escaneie um token Cashu (cashuA... ou cashuB...)",
"scanLightningInvoiceHint": "Escaneie um invoice Lightning (lnbc...)",
"addMintQuestion": "Adicionar este mint?",
"cameraPermissionDenied": "Permissão de câmera negada",
"paymentRequestNotSupported": "Solicitações de pagamento ainda não são suportadas"
}
+483
View File
@@ -0,0 +1,483 @@
{
"@@locale": "ru",
"appName": "ElCaju",
"appTagline": "Ваш приватный ecash кошелёк",
"loadingMessage1": "Шифрование ваших монет...",
"loadingMessage2": "Подготовка ваших e-токенов...",
"loadingMessage3": "Подключение к Mint...",
"loadingMessage4": "Конфиденциальность по умолчанию.",
"loadingMessage5": "Слепая подпись токенов...",
"loadingMessage6": "Go full Calle...",
"loadingMessage7": "Cashu + Bitchat = Конфиденциальность + Свобода",
"aboutTagline": "Конфиденциальность без границ.",
"welcomeTitle": "Добро пожаловать в ElCaju",
"welcomeSubtitle": "Cashu для мира. Сделано на Кубе.",
"createWallet": "Создать новый кошелёк",
"restoreWallet": "Восстановить кошелёк",
"createWalletTitle": "Создать кошелёк",
"creatingWallet": "Создание вашего кошелька...",
"generatingSeed": "Безопасная генерация вашей сид-фразы",
"createWalletDescription": "Будет сгенерирована сид-фраза из 12 слов.\nСохраните её в безопасном месте.",
"generateWallet": "Создать кошелёк",
"walletCreated": "Кошелёк создан!",
"walletCreatedDescription": "Ваш кошелёк готов. Рекомендуем сделать резервную копию сид-фразы сейчас.",
"backupWarning": "Без резервной копии вы потеряете доступ к средствам при потере устройства.",
"backupNow": "Сделать резервную копию",
"backupLater": "Сделать позже",
"backupTitle": "Резервная копия",
"seedPhraseTitle": "Ваша сид-фраза",
"seedPhraseDescription": "Сохраните эти 12 слов по порядку. Это единственный способ восстановить кошелёк.",
"revealSeedPhrase": "Показать сид-фразу",
"tapToReveal": "Нажмите кнопку, чтобы показать\nвашу сид-фразу",
"copyToClipboard": "Копировать в буфер обмена",
"seedCopied": "Фраза скопирована в буфер обмена",
"neverShareSeed": "Никогда не делитесь сид-фразой ни с кем.",
"confirmBackup": "Я сохранил сид-фразу в безопасном месте",
"continue_": "Продолжить",
"restoreTitle": "Восстановить кошелёк",
"enterSeedPhrase": "Введите вашу сид-фразу",
"enterSeedDescription": "Введите 12 или 24 слова через пробел.",
"seedPlaceholder": "слово1 слово2 слово3 ...",
"wordCount": "{count} слов",
"@wordCount": {
"placeholders": {
"count": { "type": "int" }
}
},
"needWords": "(нужно 12 или 24)",
"restoreError": "Ошибка восстановления: {error}",
"@restoreError": {
"placeholders": {
"error": { "type": "String" }
}
},
"homeTitle": "Главная",
"receive": "Получить",
"send": "Отправить",
"sendAction": "Отправить ↗",
"receiveAction": "↘ Получить",
"deposit": "Пополнить",
"withdraw": "Вывести",
"lightning": "Lightning",
"cashu": "Cashu",
"ecash": "Ecash",
"history": "История",
"noTransactions": "Нет транзакций",
"depositOrReceive": "Пополните или получите sats для начала",
"noMint": "Нет mint",
"balance": "Баланс",
"sats": "sats",
"pasteEcashToken": "Вставить ecash токен",
"generateInvoiceToDeposit": "Создать счёт для пополнения",
"createEcashToken": "Создать ecash токен",
"payLightningInvoice": "Оплатить Lightning счёт",
"receiveCashu": "Получить Cashu",
"pasteTheCashuToken": "Вставьте Cashu токен:",
"pasteFromClipboard": "Вставить из буфера обмена",
"validToken": "Токен действителен",
"invalidToken": "Недействительный или повреждённый токен",
"amount": "Сумма:",
"mint": "Mint:",
"claiming": "Получение...",
"claimTokens": "Получить токены",
"tokensReceived": "Токены получены",
"backToHome": "Вернуться на главную",
"tokenAlreadyClaimed": "Этот токен уже был получен",
"unknownMint": "Токен от неизвестного mint",
"claimError": "Ошибка получения: {error}",
"@claimError": {
"placeholders": {
"error": { "type": "String" }
}
},
"sendCashu": "Отправить Cashu",
"selectNotesManually": "Выбрать заметки вручную",
"amountToSend": "Сумма для отправки:",
"available": "Доступно:",
"max": "(Макс)",
"memoOptional": "Заметка (необязательно):",
"memoPlaceholder": "Для чего этот платёж?",
"creatingToken": "Создание токена...",
"createToken": "Создать токен",
"noActiveMint": "Нет активного mint",
"offlineModeMessage": "Нет соединения. Офлайн режим...",
"confirmSend": "Подтвердить отправку",
"confirm": "Подтвердить",
"cancel": "Отмена",
"insufficientBalance": "Недостаточный баланс",
"tokenCreationError": "Ошибка создания токена: {error}",
"@tokenCreationError": {
"placeholders": {
"error": { "type": "String" }
}
},
"tokenCreated": "Токен создан",
"copy": "Копировать",
"share": "Поделиться",
"tokenCashu": "Cashu токен",
"tokenCashuAnimatedQr": "Cashu токен (анимированный QR - {fragments} UR фрагментов)",
"@tokenCashuAnimatedQr": {
"placeholders": {
"fragments": { "type": "int" }
}
},
"keepTokenWarning": "Сохраните этот токен, пока получатель не заберёт его. Если потеряете — потеряете средства.",
"tokenCopiedToClipboard": "Токен скопирован в буфер обмена",
"amountToDeposit": "Сумма для пополнения:",
"descriptionOptional": "Описание (необязательно):",
"depositPlaceholder": "Для чего это пополнение?",
"generating": "Генерация...",
"generateInvoice": "Создать счёт",
"depositLightning": "Пополнить Lightning",
"payInvoiceTitle": "Оплатить счёт",
"generatingInvoice": "Создание счёта...",
"waitingForPayment": "Ожидание оплаты...",
"paymentReceived": "Платёж получен",
"tokensIssued": "Токены выпущены!",
"error": "Ошибка",
"unknownError": "Неизвестная ошибка",
"back": "Назад",
"copyInvoice": "Копировать счёт",
"description": "Описание:",
"invoiceCopiedToClipboard": "Счёт скопирован в буфер обмена",
"deposited": "{amount} {unit} пополнено",
"@deposited": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"pasteLightningInvoice": "Вставьте Lightning счёт:",
"gettingQuote": "Получение котировки...",
"validInvoice": "Счёт действителен",
"invalidInvoice": "Недействительный счёт",
"invalidInvoiceMalformed": "Недействительный или повреждённый счёт",
"feeReserved": "Зарезервированная комиссия:",
"total": "Итого:",
"paying": "Оплата...",
"payInvoice": "Оплатить счёт",
"confirmPayment": "Подтвердить оплату",
"pay": "Оплатить",
"fee": "комиссия",
"invoiceExpired": "Счёт истёк",
"amountOutOfRange": "Сумма вне допустимого диапазона",
"resolvingType": "Разрешение {type}...",
"@resolvingType": {
"placeholders": {
"type": { "type": "String" }
}
},
"invoiceAlreadyPaid": "Счёт уже оплачен",
"paymentError": "Ошибка оплаты: {error}",
"@paymentError": {
"placeholders": {
"error": { "type": "String" }
}
},
"sent": "{amount} {unit} отправлено",
"@sent": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"filterAll": "Все",
"filterPending": "Ожидающие",
"filterEcash": "Ecash",
"filterLightning": "Lightning",
"receiveTokensToStart": "Получите Cashu токены для начала",
"noPendingTransactions": "Нет ожидающих транзакций",
"allTransactionsCompleted": "Все ваши транзакции завершены",
"noEcashTransactions": "Нет Ecash транзакций",
"sendOrReceiveTokens": "Отправьте или получите Cashu токены",
"noLightningTransactions": "Нет Lightning транзакций",
"depositOrWithdrawLightning": "Пополните или выведите через Lightning",
"pendingStatus": "Ожидание",
"receivedStatus": "Получено",
"sentStatus": "Отправлено",
"now": "Сейчас",
"agoMinutes": "{minutes} мин назад",
"@agoMinutes": {
"placeholders": {
"minutes": { "type": "int" }
}
},
"agoHours": "{hours} ч назад",
"@agoHours": {
"placeholders": {
"hours": { "type": "int" }
}
},
"agoDays": "{days} дней назад",
"@agoDays": {
"placeholders": {
"days": { "type": "int" }
}
},
"lightningInvoice": "Lightning счёт",
"receivedEcash": "Ecash получен",
"sentEcash": "Ecash отправлен",
"outgoingLightningPayment": "Исходящий Lightning платёж",
"invoiceNotAvailable": "Счёт недоступен",
"tokenNotAvailable": "Токен недоступен",
"unit": "Единица",
"status": "Статус",
"pending": "Ожидание",
"memo": "Заметка",
"copyInvoiceButton": "КОПИРОВАТЬ СЧЁТ",
"copyButton": "КОПИРОВАТЬ",
"invoiceCopied": "Счёт скопирован",
"tokenCopied": "Токен скопирован",
"speed": "СКОРОСТЬ:",
"settings": "Настройки",
"walletSection": "КОШЕЛЁК",
"backupSeedPhrase": "Резервная копия сид-фразы",
"viewRecoveryWords": "Посмотреть слова восстановления",
"connectedMints": "Подключённые mint",
"manageCashuMints": "Управление вашими Cashu mint",
"pinAccess": "PIN-код",
"pinEnabled": "Включён",
"protectWithPin": "Защитить приложение PIN-кодом",
"recoverTokens": "Восстановить токены",
"scanMintsWithSeed": "Сканировать mint с сид-фразой",
"appearanceSection": "ЯЗЫК",
"language": "Язык",
"informationSection": "ИНФОРМАЦИЯ",
"version": "Версия",
"about": "О приложении",
"deleteWallet": "Удалить кошелёк",
"spanish": "Español",
"english": "English",
"portuguese": "Português",
"french": "Français",
"russian": "Русский",
"mnemonicNotFound": "Мнемоника не найдена",
"createPin": "Создать PIN",
"enterPinDigits": "Введите 4-значный PIN",
"confirmPin": "Подтвердить PIN",
"enterPinAgain": "Введите PIN ещё раз",
"pinMismatch": "PIN-коды не совпадают",
"pinActivated": "PIN активирован",
"pinDeactivated": "PIN деактивирован",
"verifyPin": "Проверить PIN",
"enterCurrentPin": "Введите текущий PIN",
"incorrectPin": "Неверный PIN",
"selectLanguage": "Выбрать язык",
"languageChanged": "Язык изменён на {language}",
"@languageChanged": {
"placeholders": {
"language": { "type": "String" }
}
},
"close": "Закрыть",
"aboutDescription": "Cashu кошелёк с кубинской ДНК для всего мира. Брат La Chispa.",
"couldNotOpenLink": "Не удалось открыть ссылку",
"deleteWalletQuestion": "Удалить кошелёк?",
"actionIrreversible": "Это действие необратимо",
"deleteWalletWarning": "Все данные будут удалены, включая сид-фразу и токены. Убедитесь, что у вас есть резервная копия.",
"typeDeleteToConfirm": "Введите \"УДАЛИТЬ\" для подтверждения:",
"deleteConfirmWord": "УДАЛИТЬ",
"deleteError": "Ошибка удаления: {error}",
"@deleteError": {
"placeholders": {
"error": { "type": "String" }
}
},
"recoverTokensTitle": "Восстановить токены",
"recoverTokensDescription": "Сканировать mint для восстановления токенов, связанных с вашей сид-фразой (NUT-13)",
"useCurrentSeedPhrase": "Использовать текущую сид-фразу",
"scanWithSavedWords": "Сканировать mint с сохранёнными 12 словами",
"useOtherSeedPhrase": "Использовать другую сид-фразу",
"recoverFromOtherWords": "Восстановить токены из других 12 слов",
"mintsToScan": "Mint для сканирования:",
"allMints": "Все mint ({count})",
"@allMints": {
"placeholders": {
"count": { "type": "int" }
}
},
"specificMint": "Конкретный mint",
"enterMnemonicWords": "Введите 12 слов через пробел...",
"scanMints": "Сканировать mint",
"selectMintToScan": "Выберите mint для сканирования",
"mnemonicMustHaveWords": "Мнемоника должна содержать 12 или 24 слова",
"noConnectedMintsToScan": "Нет подключённых mint для сканирования",
"recoveredTokens": "Восстановлено {tokens} из {mints} mint!",
"@recoveredTokens": {
"placeholders": {
"tokens": { "type": "String" },
"mints": { "type": "int" }
}
},
"scanCompleteNoTokens": "Сканирование завершено. Новых токенов не найдено.",
"mintsWithError": "({count} mint с ошибкой)",
"@mintsWithError": {
"placeholders": {
"count": { "type": "int" }
}
},
"recoveredFromMint": "Восстановлено {tokens} из {mint}!",
"@recoveredFromMint": {
"placeholders": {
"tokens": { "type": "String" },
"mint": { "type": "String" }
}
},
"noTokensFoundInMint": "Токены не найдены в {mint}.",
"@noTokensFoundInMint": {
"placeholders": {
"mint": { "type": "String" }
}
},
"recoveredAndTransferred": "Восстановлено и переведено {amount} {unit} в ваш кошелёк!",
"@recoveredAndTransferred": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"noTokensForMnemonic": "Токены, связанные с этой мнемоникой, не найдены.",
"noConnectedMints": "Нет подключённых mint",
"addMintToStart": "Добавьте mint для начала",
"addMint": "Добавить mint",
"mintDeleted": "Mint удалён",
"activeMintUpdated": "Активный mint обновлён",
"mintUrl": "URL mint:",
"mintUrlPlaceholder": "https://mint.example.com",
"urlMustStartWithHttps": "URL должен начинаться с https://",
"connectingToMint": "Подключение к mint...",
"mintAddedSuccessfully": "Mint успешно добавлен",
"couldNotConnectToMint": "Не удалось подключиться к mint",
"add": "Добавить",
"success": "Успех",
"loading": "Загрузка...",
"retry": "Повторить",
"activeMint": "Активный mint",
"mintMessage": "Сообщение Mint",
"url": "URL",
"currency": "Валюта",
"unknown": "Неизвестно",
"useThisMint": "Использовать этот mint",
"copyMintUrl": "Копировать URL mint",
"deleteMint": "Удалить mint",
"copied": "{label} скопировано",
"@copied": {
"placeholders": {
"label": { "type": "String" }
}
},
"deleteMintConfirmTitle": "Удалить mint",
"deleteMintConfirmMessage": "Если у вас есть баланс на этом mint, он будет потерян. Вы уверены?",
"delete": "Удалить",
"offlineSend": "Офлайн отправка",
"selectNotesToSend": "Выберите заметки для отправки:",
"totalToSend": "Итого к отправке",
"notesSelected": "{count} заметок выбрано",
"@notesSelected": {
"placeholders": {
"count": { "type": "int" }
}
},
"loadingProofsError": "Ошибка загрузки доказательств: {error}",
"@loadingProofsError": {
"placeholders": {
"error": { "type": "String" }
}
},
"creatingTokenError": "Ошибка создания токена: {error}",
"@creatingTokenError": {
"placeholders": {
"error": { "type": "String" }
}
},
"unknownState": "Неизвестное состояние",
"depositAmountTitle": "Пополнить {amount} {unit}",
"@depositAmountTitle": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"receiveNow": "Получить сейчас",
"receiveLater": "Получить позже",
"tokenSavedForLater": "Токен сохранён для получения позже",
"noConnectionTokenSaved": "Нет соединения. Токен сохранён для получения позже.",
"unknownMintOffline": "Этот токен от неизвестного mint. Подключитесь к интернету, чтобы добавить его и получить токен.",
"noConnectionTryLater": "Нет соединения с mint. Попробуйте позже.",
"saveTokenError": "Ошибка сохранения токена. Попробуйте снова.",
"pendingTokenLimitReached": "Достигнут лимит ожидающих токенов (макс 50)",
"filterToReceive": "К получению",
"noPendingTokens": "Нет ожидающих токенов",
"noPendingTokensHint": "Сохраните токены для получения позже",
"pendingBadge": "ОЖИДАНИЕ",
"expiresInDays": "{days, plural, =1{Истекает через 1 день} other{Истекает через {days} дней}}",
"@expiresInDays": {
"placeholders": {
"days": { "type": "int" }
}
},
"retryCount": "{count} попыток",
"@retryCount": {
"placeholders": {
"count": { "type": "int" }
}
},
"claimNow": "Получить сейчас",
"pendingTokenClaimedSuccess": "Получено {amount} {unit}",
"@pendingTokenClaimedSuccess": {
"placeholders": {
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"pendingTokensClaimed": "{count, plural, =1{Получен 1 токен ({amount} {unit})} other{Получено {count} токенов ({amount} {unit})}}",
"@pendingTokensClaimed": {
"placeholders": {
"count": { "type": "int" },
"amount": { "type": "String" },
"unit": { "type": "String" }
}
},
"scan": "Сканировать",
"scanQrCode": "Сканировать QR",
"scanCashuToken": "Сканировать Cashu токен",
"scanLightningInvoice": "Сканировать счёт",
"scanningAnimatedQr": "Сканирование анимированного QR...",
"pointCameraAtQr": "Наведите камеру на QR-код",
"pointCameraAtCashuQr": "Наведите камеру на QR Cashu токена",
"pointCameraAtInvoiceQr": "Наведите камеру на QR счёта",
"unrecognizedQrCode": "Нераспознанный QR-код",
"scanCashuTokenHint": "Сканируйте Cashu токен (cashuA... или cashuB...)",
"scanLightningInvoiceHint": "Сканируйте Lightning счёт (lnbc...)",
"addMintQuestion": "Добавить этот mint?",
"cameraPermissionDenied": "Доступ к камере запрещён",
"paymentRequestNotSupported": "Запросы на оплату пока не поддерживаются"
}
+3
View File
@@ -69,6 +69,9 @@ class ElCajuApp extends StatelessWidget {
supportedLocales: const [
Locale('es'), // Español (por defecto)
Locale('en'), // English
Locale('pt'), // Português
Locale('fr'), // Français
Locale('ru'), // Русский
],
locale: Locale(settingsProvider.locale),
+34 -2
View File
@@ -1,4 +1,5 @@
import 'dart:async';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@@ -25,6 +26,11 @@ class _SplashScreenState extends State<SplashScreen>
late Animation<double> _fadeAnimation;
String? _errorMessage;
// Mensajes de carga aleatorios
int _currentMessageIndex = 0;
Timer? _messageTimer;
final _random = Random();
@override
void initState() {
super.initState();
@@ -39,10 +45,35 @@ class _SplashScreenState extends State<SplashScreen>
_controller.forward();
// Iniciar rotación de mensajes de carga
_currentMessageIndex = _random.nextInt(7);
_messageTimer = Timer.periodic(const Duration(milliseconds: 800), (_) {
if (mounted) {
setState(() {
_currentMessageIndex = _random.nextInt(7);
});
}
});
// Inicializar la app
_initializeApp();
}
/// Obtiene el mensaje de carga actual basado en el índice
String _getLoadingMessage(L10n? l10n) {
if (l10n == null) return 'Cargando...';
switch (_currentMessageIndex) {
case 0: return l10n.loadingMessage1;
case 1: return l10n.loadingMessage2;
case 2: return l10n.loadingMessage3;
case 3: return l10n.loadingMessage4;
case 4: return l10n.loadingMessage5;
case 5: return l10n.loadingMessage6;
case 6: return l10n.loadingMessage7;
default: return l10n.loadingMessage1;
}
}
Future<void> _initializeApp() async {
try {
final settingsProvider = context.read<SettingsProvider>();
@@ -148,6 +179,7 @@ class _SplashScreenState extends State<SplashScreen>
@override
void dispose() {
_messageTimer?.cancel();
_controller.dispose();
super.dispose();
}
@@ -188,9 +220,9 @@ class _SplashScreenState extends State<SplashScreen>
),
const SizedBox(height: AppDimensions.paddingSmall),
// Subtítulo
// Mensaje de carga aleatorio
Text(
l10n?.appTagline ?? 'Tu wallet de ecash privado',
_getLoadingMessage(l10n),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 16,
+28 -1
View File
@@ -313,6 +313,12 @@ class _SettingsScreenState extends State<SettingsScreen> {
return l10n.spanish;
case 'en':
return l10n.english;
case 'pt':
return l10n.portuguese;
case 'fr':
return l10n.french;
case 'ru':
return l10n.russian;
default:
return l10n.spanish;
}
@@ -515,6 +521,27 @@ class _SettingsScreenState extends State<SettingsScreen> {
l10n.english,
'🇬🇧',
),
_buildLanguageOption(
context,
settingsProvider,
'pt',
l10n.portuguese,
'🇵🇹',
),
_buildLanguageOption(
context,
settingsProvider,
'fr',
l10n.french,
'🇫🇷',
),
_buildLanguageOption(
context,
settingsProvider,
'ru',
l10n.russian,
'🇷🇺',
),
const SizedBox(height: AppDimensions.paddingSmall),
],
),
@@ -632,7 +659,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
const SizedBox(height: 16),
Text(
L10n.of(context)!.appTagline,
L10n.of(context)!.aboutTagline,
style: TextStyle(
fontFamily: 'Inter',
fontSize: 16,