A Metamask fork with Infura removed and default networks editable
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ciphermask/app/_locales/es/messages.json

2030 lines
64 KiB

{
"about": {
"message": "Acerca de"
},
"aboutSettingsDescription": {
"message": "Versión, centro de soporte e información de contacto"
},
"acceleratingATransaction": {
"message": "* Agilizar a una transacción al usar un precio de gas más alto aumenta las probabilidades que que la red lo procese más rápidamente, pero eso no siempre está garantizado."
},
"acceptTermsOfUse": {
"message": "Leí y acepto $1",
"description": "$1 is the `terms` message"
},
"accessAndSpendNotice": {
"message": "$1 puede acceder y gastar hasta este monto máximo",
"description": "$1 is the url of the site requesting ability to spend"
},
"accessingYourCamera": {
"message": "Accediendo a tu cámara..."
},
"account": {
"message": "Cuenta"
},
"accountDetails": {
"message": "Detalles de la cuenta"
},
"accountName": {
"message": "Nombre de la cuenta"
},
"accountOptions": {
"message": "Opciones de la cuenta"
},
"accountSelectionRequired": {
"message": "¡Necesitas elegir una cuenta!"
},
"active": {
"message": "Activo"
},
"activity": {
"message": "Actividad"
},
"activityLog": {
"message": "registro de actividades"
},
"addAcquiredTokens": {
"message": "Agregar los tokens que has adquirido usando MetaMask"
},
"addAlias": {
"message": "Añadir alias"
},
"addNetwork": {
"message": "Añadir Red"
},
"addRecipient": {
"message": "Añadir destinatario"
},
"addSuggestedTokens": {
"message": "Añadir tokens sugeridos"
},
"addToAddressBook": {
"message": "Añadir a la libreta de direcciones"
},
"addToAddressBookModalPlaceholder": {
"message": "ej: Juan García"
},
"addToken": {
"message": "Añadir token"
},
"addTokens": {
"message": "Añadir tokens"
},
"advanced": {
"message": "Avanzado"
},
"advancedOptions": {
"message": "Opciones Avanzadas"
},
"advancedSettingsDescription": {
"message": "Acceder a funcionalidades para desarrolladores, descargar Logs de Estado, Resetear Cuenta, configurar redes de prueba y RPC personalizado"
},
"affirmAgree": {
"message": "Estoy de acuerdo"
},
"aggregatorFeeCost": {
"message": "Tarifa de red del agregador"
},
"alertDisableTooltip": {
"message": "Esto se puede cambiar en \"Configuración > Alertas\""
},
"alertSettingsUnconnectedAccount": {
"message": "Navegando un sitio web con una cuenta desconectada seleccionada"
},
"alertSettingsUnconnectedAccountDescription": {
"message": "Esta alerta se muestra en un popup cuando está navegando un sitio Web3, pero la cuenta seleccionada actualmente no está conectada."
},
"alertSettingsWeb3ShimUsage": {
"message": "Cuando un sitio intenta usar la window.web3 API eliminada"
},
"alertSettingsWeb3ShimUsageDescription": {
"message": "Esta alerta se muestra en un popup cuando está navegando un sitio que intenta usar la window.web3 API eliminada y puede estar roto como resultado"
},
"alerts": {
"message": "Alertas"
},
"alertsSettingsDescription": {
"message": "Habilitar o deshabilitar cada alerta"
},
"allowExternalExtensionTo": {
"message": "Habilitar esta extensión externa a:"
},
"allowOriginSpendToken": {
"message": "¿Habilitar a $1 gastar sus $2?",
"description": "$1 is the url of the site and $2 is the symbol of the token they are requesting to spend"
},
"allowThisSiteTo": {
"message": "Habilitar a este sitio a:"
},
"allowWithdrawAndSpend": {
"message": "Habilitar a $1 retirar y gastar hasta el siguiente monto:",
"description": "The url of the site that requested permission to 'withdraw and spend'"
},
"amount": {
"message": "Cantidad"
},
"amountWithColon": {
"message": "Cantidad:"
},
"appDescription": {
"message": "Un Monedero de Ethereum para su Navegador",
"description": "The description of the application"
},
"appName": {
"message": "MetaMask",
"description": "The name of the application"
},
"approvalAndAggregatorTxFeeCost": {
"message": "Tarifa de la red de aprobación y agregación"
},
"approvalTxGasCost": {
"message": "Aprobación del Costo del Gas para la Tx"
},
"approve": {
"message": "Aprobar"
},
"approveSpendLimit": {
"message": "Aprobar $1",
"description": "The token symbol that is being approved"
},
"approved": {
"message": "Aprobado"
},
"asset": {
"message": "Activo"
},
"assets": {
"message": "Activos"
},
"attemptToCancel": {
"message": "¿Intenta cancelar?"
},
"attemptToCancelDescription": {
"message": "El intentar cancelar la transacción no garantiza la cancelación de la misma. Si el intento de cancelación tiene éxito, se le cobrará la comisión de transacción indicada arriba."
},
"attemptingConnect": {
"message": "Intentando conectar a la Blockchain"
},
"attributions": {
"message": "Atribuciones"
},
"authorizedPermissions": {
"message": "Has autorizado los siguientes permisos"
},
"autoLockTimeLimit": {
"message": "Temporizador de cierre de sesión automático (minutos)"
},
"autoLockTimeLimitDescription": {
"message": "Establece el tiempo de inactividad en minutos antes de que MetaMask cierre la sesión automáticamente."
},
"average": {
"message": "Promedio"
},
"back": {
"message": "Atrás"
},
"backToAll": {
"message": "Volver a Todo"
},
"backupApprovalInfo": {
"message": "Este código secreto es requerido para recuperar tu monedero en caso de que pierdas tu dispositivo, olvides tu contraseña, tengas que re-instalar MetaMask, o quieras acceder a tu monedero en otro dispositivo."
},
"backupApprovalNotice": {
"message": "Haz un respaldo de tu código de Recuperación Secreto para mantener tu monedero y tus fondos seguros."
},
"backupNow": {
"message": "Haz un respaldo ahora"
},
"balance": {
"message": "Saldo"
},
"balanceOutdated": {
"message": "El saldo puede estar desactualizado"
},
"basic": {
"message": "Básico"
},
"blockExplorerUrl": {
"message": "Explorador de Bloques"
},
"blockExplorerView": {
"message": "Ver la cuenta en $1",
"description": "$1 replaced by URL for custom block explorer"
},
"blockiesIdenticon": {
"message": "Usar Blockies Identicon (Iconos)"
},
"browserNotSupported": {
"message": "Tu navegador no está admitido..."
},
"builtInCalifornia": {
"message": "MetaMask fue diseñado y construido en California"
},
"buy": {
"message": "Comprar"
},
"buyWithWyre": {
"message": "Comprar ETH con Wyre"
},
"buyWithWyreDescription": {
"message": "Wyre permite usar una tarjeta de débito para depositar ETH directo en su cuenta MetaMask."
},
"bytes": {
"message": "Bytes"
},
"canToggleInSettings": {
"message": "Puede volver a habilitar esta notificación en Configuración -> Alertas."
},
"cancel": {
"message": "Cancelar"
},
"cancellationGasFee": {
"message": "Comisión de Gas por cancelación"
},
"cancelled": {
"message": "Cancelado"
},
"chainId": {
"message": "ID de Cadena"
},
"chromeRequiredForHardwareWallets": {
"message": "Hay que usar MetaMask en Google Chrome para poder conectarse con tu Monedero Físico."
},
"clickToRevealSeed": {
"message": "Haga clic aquí para revelar palabras secretas"
},
"close": {
"message": "Cerrar"
},
"confirm": {
"message": "Confirmar"
},
"confirmPassword": {
"message": "Confirmar contraseña"
},
"confirmSecretBackupPhrase": {
"message": "Confime su Frase de Respaldo Secreta"
},
"confirmed": {
"message": "Confirmado"
},
"congratulations": {
"message": "Enhorabuena"
},
"connect": {
"message": "Conectar"
},
"connectAccountOrCreate": {
"message": "Conectar una cuenta o crear una nueva"
},
"connectHardwareWallet": {
"message": "Conectar Monedero Físico"
},
"connectManually": {
"message": "Conectar manualmente al sitio actual"
},
"connectTo": {
"message": "Conectar a $1",
"description": "$1 is the name/origin of a web3 site/application that the user can connect to metamask"
},
"connectToAll": {
"message": "Conectar a todos sus $1",
"description": "$1 will be replaced by the translation of connectToAllAccounts"
},
"connectToAllAccounts": {
"message": "cuentas",
"description": "will replace $1 in connectToAll, completing the sentence 'connect to all of your accounts', will be text that shows list of accounts on hover"
},
"connectToMultiple": {
"message": "Conectar a $1",
"description": "$1 will be replaced by the translation of connectToMultipleNumberOfAccounts"
},
"connectToMultipleNumberOfAccounts": {
"message": "$1 cuentas",
"description": "$1 is the number of accounts to which the web3 site/application is asking to connect; this will substitute $1 in connectToMultiple"
},
"connectWithMetaMask": {
"message": "Conectar Con MetaMask"
},
"connectedAccountsDescriptionPlural": {
"message": "Tiene $1 cuentas conectadas con este sitio.",
"description": "$1 is the number of accounts"
},
"connectedAccountsDescriptionSingular": {
"message": "Tiene 1 cuenta conectada con este sitio."
},
"connectedAccountsEmptyDescription": {
"message": "MetaMask no está conectado a este sitio. Para conectarse a un sitio web3, busque el botón de conexión en su sitio."
},
"connectedSites": {
"message": "Sitios conectados"
},
"connectedSitesDescription": {
"message": "$1 está conectado a estos sitios. Ellos pueden ver la dirección de tu cuenta.",
"description": "$1 is the account name"
},
"connectedSitesEmptyDescription": {
"message": "$1 no está conetado a ningún sitio.",
"description": "$1 is the account name"
},
"connecting": {
"message": "Conectándose..."
},
"connectingTo": {
"message": "Conectándose a $1"
},
"connectingToGoerli": {
"message": "Conectando a la red de pruebas Goerli"
},
"connectingToKovan": {
"message": "Conectando a la red de pruebas Kovan"
},
"connectingToMainnet": {
"message": "Conectando a la red principal de Ethereum (Main Net)"
},
"connectingToRinkeby": {
"message": "Conectando a la red de pruebas Rinkeby"
},
"connectingToRopsten": {
"message": "Conectando a la red de pruebas Ropsten"
},
"contactUs": {
"message": "Contacta con nosotros"
},
"contacts": {
"message": "Contactos"
},
"contactsSettingsDescription": {
"message": "Agregar, editar, eliminar y administrar contactos"
},
"continueToWyre": {
"message": "Continuar a Wyre"
},
"contractDeployment": {
"message": "Despliegue de contratos"
},
"contractInteraction": {
"message": "Interacción con contrato"
},
"copiedExclamation": {
"message": "¡Copiado!"
},
"copiedTransactionId": {
"message": "ID de la Transacción copiado"
},
"copyAddress": {
"message": "Copiar la dirección al portapapeles"
},
"copyPrivateKey": {
"message": "Ésta es tu clave privada (haz clic para copiar)"
},
"copyToClipboard": {
"message": "Copiar al portapapeles"
},
"copyTransactionId": {
"message": "Copiar ID de la Transacción"
},
"create": {
"message": "Crear"
},
"createAWallet": {
"message": "Crear Monedero"
},
"createAccount": {
"message": "Crear cuenta"
},
"createPassword": {
"message": "Crear Contraseña"
},
"currencyConversion": {
"message": "Cambio de Monedas"
},
"currentAccountNotConnected": {
"message": "Tu cuenta actual no está conectada"
},
"currentExtension": {
"message": "Página de la extensión actual"
},
"currentLanguage": {
"message": "Idioma Actual"
},
"customGas": {
"message": "Personalizar gas"
},
"customGasSubTitle": {
"message": "Aumentar la comisión puede hacer que el tiempo de procesamiento se disminuya, pero no lo garantiza."
},
"customRPC": {
"message": "RPC personalizado"
},
"customSpendLimit": {
"message": "Límite de Gasto Personalizado"
},
"customToken": {
"message": "Token Personalizado"
},
"dataBackupFoundInfo": {
"message": "Se hizo una copia de seguridad de algunos de los datos de su cuenta durante una instalación anterior de MetaMask. Esto podría incluir su configuración, contactos y tokens. ¿Le gustaría restaurar estos datos ahora?"
},
"decimal": {
"message": "Decimales de precisión"
},
"decimalsMustZerotoTen": {
"message": "Los decimales deben ser al menos 0 y no más de 36"
},
"decrypt": {
"message": "Descifrar"
},
"decryptCopy": {
"message": "Copiar mensaje cifrado"
},
"decryptInlineError": {
"message": "Este mensaje no puede ser descifrado debido al error: $1",
"description": "$1 is error message"
},
"decryptMessageNotice": {
"message": "$1 quiere leer este mensaje para completar su acción",
"description": "$1 is the web3 site name"
},
"decryptMetamask": {
"message": "Descifrar mensaje"
},
"decryptRequest": {
"message": "Descifrar petición"
},
"defaultNetwork": {
"message": "La red por defecto para las transacciones de Ether es la red principal de Ethereum (Main Net)"
},
"delete": {
"message": "Eliminar"
},
"deleteAccount": {
"message": "Eliminar Cuenta"
},
"deleteNetwork": {
"message": "¿Eliminar Red?"
},
"deleteNetworkDescription": {
"message": "¿Está seguro de querer eliminar esta red?"
},
"depositEther": {
"message": "Depositar Ether"
},
"details": {
"message": "Detalles"
},
"directDepositEther": {
"message": "Depositar Ether directamente"
},
"directDepositEtherExplainer": {
"message": "Si posees Ether, la forma más rápida de transferirlos a tu nuevo monedero es depositándolos directamente"
},
"disconnect": {
"message": "Desconectar"
},
"disconnectAllAccounts": {
"message": "Desconectar todas las cuentas"
},
"disconnectAllAccountsConfirmationDescription": {
"message": "¿Seguro que quieres desconectarte? Puede perder la funcionalidad del sitio."
},
"disconnectPrompt": {
"message": "Desconectar $1"
},
"disconnectThisAccount": {
"message": "Desconectar esta cuenta"
},
"dismiss": {
"message": "Descartar"
},
"dismissReminderDescriptionField": {
"message": "Active esta opción para ignorar el recordatorio de respaldo de la frase de recuperación. Le recomendamos que respalde la frase secreta de recuperación para evitar la pérdida de fondos."
},
"done": {
"message": "Completo"
},
"dontShowThisAgain": {
"message": "No mostrar esto de nuevo"
},
"downloadGoogleChrome": {
"message": "Descargar Google Chrome"
},
"downloadSecretBackup": {
"message": "Descargue esta Frase de Respaldo Secreta y guárdela almacenada de manera segura en un disco duro o medio de almacenamiento externo cifrado."
},
"downloadStateLogs": {
"message": "Descargar logs de estado"
},
"dropped": {
"message": "Caído"
},
"edit": {
"message": "Editar"
},
"editContact": {
"message": "Editar Contacto"
},
"editPermission": {
"message": "Editar Permiso"
},
"encryptionPublicKeyNotice": {
"message": "$1 desea su clave de cifrado pública. Al dar su consentimiento, este sitio podrá redactar mensajes cifrados para usted.",
"description": "$1 is the web3 site name"
},
"encryptionPublicKeyRequest": {
"message": "Solicitar clave pública de cifrado"
},
"endOfFlowMessage1": {
"message": "Pasó la prueba. Es importante que guarde la frase secreta de recuperación en un lugar seguro."
},
"endOfFlowMessage10": {
"message": "Todo Listo"
},
"endOfFlowMessage2": {
"message": "Consejos para almacenarlo de forma segura"
},
"endOfFlowMessage3": {
"message": "Guarde una copia de seguridad en varios lugares."
},
"endOfFlowMessage4": {
"message": "Nunca comparta la frase con nadie."
},
"endOfFlowMessage5": {
"message": "Tenga cuidado con el phishing. MetaMask nunca le pedirá la frase secreta de recuperación sin anticipárselo."
},
"endOfFlowMessage6": {
"message": "Si necesita volver a crear una copia de seguridad de la frase secreta de recuperación, puede encontrarla en Configuración -> Seguridad."
},
"endOfFlowMessage8": {
"message": "MetaMask no puede recuperar la frase secreta de recuperación."
},
"endOfFlowMessage9": {
"message": "Saber más."
},
"endpointReturnedDifferentChainId": {
"message": "El endpoint devolvió un ID de cadena diferente: $1",
"description": "$1 is the return value of eth_chainId from an RPC endpoint"
},
"ensNotFoundOnCurrentNetwork": {
"message": "El nombre de ENS no se encuentra en la red actual. Intente cambiar a la red principal de Ethereum (Main Net)."
},
"ensRegistrationError": {
"message": "Error en el registro de nombres de ENS"
},
"enterAnAlias": {
"message": "Ingrese un alias"
},
"enterMaxSpendLimit": {
"message": "Ingrese el Límite de Gasto Máximo"
},
"enterPassword": {
"message": "Ingresa contraseña"
},
"enterPasswordContinue": {
"message": "Introducir contraseña para seguir"
},
"errorCode": {
"message": "Código: $1",
"description": "Displayed error code for debugging purposes. $1 is the error code"
},
"errorDetails": {
"message": "Detalles del Error",
"description": "Title for collapsible section that displays error details for debugging purposes"
},
"errorMessage": {
"message": "Mensaje: $1",
"description": "Displayed error message for debugging purposes. $1 is the error message"
},
"errorName": {
"message": "Código: $1",
"description": "Displayed error name for debugging purposes. $1 is the error name"
},
"errorPageTitle": {
"message": "MetaMask encontró un error",
"description": "Title of generic error page"
},
"errorStack": {
"message": "Pila:",
"description": "Title for error stack, which is displayed for debugging purposes"
},
"estimatedProcessingTimes": {
"message": "Tiempo Previsto de Procesamiento"
},
"eth_accounts": {
"message": "Ver las direcciones de sus cuentas permitidas (obligatorio)",
"description": "The description for the `eth_accounts` permission"
},
"ethereumPublicAddress": {
"message": "Dirección Pública de Ethereum"
},
"etherscan": {
"message": "Etherscan"
},
"etherscanView": {
"message": "Ver la cuenta en Etherscan"
},
"expandView": {
"message": "Ampliar Vista"
},
"exportPrivateKey": {
"message": "Exportar Clave Privada"
},
"externalExtension": {
"message": "Extensión Externa"
},
"extraApprovalGas": {
"message": "+$1 gas de aprobación",
"description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas"
},
"failed": {
"message": "Fallo"
},
"failedToFetchChainId": {
"message": "No se pudo obtener el ID de la cadena. ¿Es correcta su URL de RPC?"
},
"failureMessage": {
"message": "Algo salió mal y no pudimos completar la acción"
},
"fast": {
"message": "Rápido"
},
"fastest": {
"message": "Más rápido"
},
"feeAssociatedRequest": {
"message": "Hay una tarifa asociada con esta solicitud."
},
"fiat": {
"message": "FIAT",
"description": "Exchange type"
},
"fileImportFail": {
"message": "¿La importación no funcionó? ¡Haz clic aquí!",
"description": "Helps user import their account from a JSON file"
},
"forbiddenIpfsGateway": {
"message": "Puerta de enlace IPFS prohibida: Por favor, especifique una puerta de enlace CID"
},
"forgetDevice": {
"message": "Olvidar a este dispositivo"
},
"from": {
"message": "De:"
},
"fromAddress": {
"message": "Desde: $1",
"description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress"
},
"functionApprove": {
"message": "Función: Aprobar"
},
"functionType": {
"message": "Tipo de función"
},
"gasLimit": {
"message": "Límite de gas"
},
"gasLimitInfoTooltipContent": {
"message": "El límite de gas es la cantidad máxima de unidades de gas que está dispuesto a gastar."
},
"gasLimitTooLow": {
"message": "El límite de gas debe ser de al menos 21000"
},
"gasLimitTooLowWithDynamicFee": {
"message": "El límite de gas debe ser de al menos $1",
"description": "$1 is the custom gas limit, in decimal."
},
"gasPrice": {
"message": "Precio del Gas (GWEI)"
},
"gasPriceExtremelyLow": {
"message": "Precio de Gas excesivamente bajo"
},
"gasPriceInfoTooltipContent": {
"message": "El precio del gas especifica la cantidad de Ether que está dispuesto a pagar por cada unidad de gas."
},
"gasUsed": {
"message": "Gas usado"
},
"gdprMessage": {
"message": "Estos datos son agregados y, por lo tanto, son anónimos a los efectos del Reglamento General de Protección de Datos (EU) 2016/679. Para obtener más información sobre nuestras prácticas de privacidad, consulte nuestro $1.",
"description": "$1 refers to the gdprMessagePrivacyPolicy message, the translation of which is meant to be used exclusively in the context of gdprMessage"
},
"gdprMessagePrivacyPolicy": {
"message": "Política de privacidad aquí",
"description": "this translation is intended to be exclusively used as the replacement for the $1 in the gdprMessage translation"
},
"general": {
"message": "General"
},
"generalSettingsDescription": {
"message": "Conversión de divisas, divisa principal, idioma, blockies identicon"
},
"getEther": {
"message": "Conseguir Ether"
},
"getEtherFromFaucet": {
"message": "Obtenga Ether de un faucet (grifo) por $1",
"description": "Displays network name for Ether faucet"
},
"getStarted": {
"message": "Empezar"
},
"goerli": {
"message": "Red de pruebas Goerli"
},
"happyToSeeYou": {
"message": "Estamos felices de verte."
},
"hardware": {
"message": "Físico"
},
"hardwareWalletConnected": {
"message": "Se ha conectado el monedero físico"
},
"hardwareWallets": {
"message": "Conectarle un monedero físico"
},
"hardwareWalletsMsg": {
"message": "Seleccionar un monedero físico que quieres usar con MetaMask"
},
"here": {
"message": "Aquí",
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
},
"hexData": {
"message": "Datos hexadecimales"
},
"hide": {
"message": "Ocultar"
},
"hideTokenPrompt": {
"message": "¿Ocultar token?"
},
"hideTokenSymbol": {
"message": "Ocultar $1",
"description": "$1 is the symbol for a token (e.g. 'DAI')"
},
"history": {
"message": "Historial"
},
"import": {
"message": "Importar",
"description": "Button to import an account from a selected file"
},
"importAccount": {
"message": "Importar cuenta"
},
"importAccountLinkText": {
"message": "importar con la frase secreta de recuperación"
},
"importAccountMsg": {
"message": " Las cuentas importadas no se asociarán con la frase secreta de recuperación de la cuenta original de MetaMask. Más información sobre las cuentas importadas "
},
"importAccountSeedPhrase": {
"message": "Importar una cuenta con la frase secreta de recuperación"
},
"importWallet": {
"message": "Importar Monedero"
},
"importYourExisting": {
"message": "Importar la cartera existente con una frase secreta de recuperación"
},
"imported": {
"message": "Importado",
"description": "status showing that an account has been fully loaded into the keyring"
},
"initialTransactionConfirmed": {
"message": "La red confirmó tu transacción inicial. Hazle clic en Ok para volver."
},
"insufficientBalance": {
"message": "Saldo insuficiente."
},
"insufficientFunds": {
"message": "Fondos insuficientes"
},
"insufficientTokens": {
"message": "Tokens insuficientes"
},
"invalidAddress": {
"message": "Dirección inválida"
},
"invalidAddressRecipient": {
"message": "Dirección del destinatario inválida"
},
"invalidAddressRecipientNotEthNetwork": {
"message": "No es una red ETH, convertirlo a minúscula"
},
"invalidBlockExplorerURL": {
"message": "URL Inválida del Explorador de Bloques"
},
"invalidCustomNetworkAlertContent1": {
"message": "El ID de la cadena para la red personalizada '$1' tiene que ser re-ingresada.",
"description": "$1 is the name/identifier of the network."
},
"invalidCustomNetworkAlertContent2": {
"message": "Para protegerlo de proveedores de red maliciosos o con fallas, los IDs de cadenas son ahora requeridos para todas las redes personalizadas."
},
"invalidCustomNetworkAlertContent3": {
"message": "Vaya a Configuración > Redes e ingrese el ID de la cadena. Puede obtener los IDs de las cadens más populares en $1.",
"description": "$1 is a link to https://chainid.network"
},
"invalidCustomNetworkAlertTitle": {
"message": "Red Personalizada Inválida"
},
"invalidHexNumber": {
"message": "Número hexadecimal inválido."
},
"invalidHexNumberLeadingZeros": {
"message": "Número hexadecimal inválido. Elimine los ceros iniciales."
},
"invalidIpfsGateway": {
"message": "Puerta de enlace IPFS inválida: El valor debe ser una URL válida"
},
"invalidNumber": {
"message": "Número inválido. Ingrese un número decimal o un hexadecimal con prefijo '0x'."
},
"invalidNumberLeadingZeros": {
"message": "Número inválido. Elimine los ceros iniciales."
},
"invalidRPC": {
"message": "URL del RPC inválida "
},
"invalidSeedPhrase": {
"message": "Frase secreta de recuperación no válida"
},
"ipfsGateway": {
"message": "Puerta de enlace IPFS"
},
"ipfsGatewayDescription": {
"message": "Ingrese la URL de la puerta de enlace IPFS CID para usar resolución de contenido ENS."
},
"jsonFile": {
"message": "Archivo JSON",
"description": "format for importing an account"
},
"knownAddressRecipient": {
"message": "Dirección de contrato conocida."
},
"knownTokenWarning": {
"message": "Esta acción editará los tokens que ya están listados en su monedero, que se pueden usar para suplantarlo. Apruebe solo si está seguro de que quiere cambiar lo que representan estos tokens."
},
"kovan": {
"message": "Red de pruebas Kovan"
},
"lastConnected": {
"message": "Última vez Conectado"
},
"learnMore": {
"message": "Más información"
},
"ledgerAccountRestriction": {
"message": "Hay que hacer uso de tu última cuenta antes de agregarle una nueva."
},
"letsGoSetUp": {
"message": "Sí, ¡preparémonos!"
},
"likeToAddTokens": {
"message": "¿Te gustaría agregar estos tokens?"
},
"links": {
"message": "Enlaces"
},
"loadMore": {
"message": "Cargar Más"
},
"loading": {
"message": "Cargando..."
},
"loadingTokens": {
"message": "Cargando tokens..."
},
"localhost": {
"message": "Localhost 8545"
},
"lock": {
"message": "Cerrar sesión"
},
"lockTimeTooGreat": {
"message": "El tiempo para cerrar sesión es demasiado grande"
},
"mainnet": {
"message": "Red principal de Ethereum (Main Net)"
},
"max": {
"message": "Máximo"
},
"memo": {
"message": "memo"
},
"memorizePhrase": {
"message": "Memoriza esta frase."
},
"message": {
"message": "Mensaje"
},
"metaMaskConnectStatusParagraphOne": {
"message": "Ahora tienes más control sobre tus conexiones a la cuenta en MetaMask."
},
"metaMaskConnectStatusParagraphThree": {
"message": "Clic para administrar tus cuentas conectadas."
},
"metaMaskConnectStatusParagraphTwo": {
"message": "El botón de estado de conexión muestra si el sitio que está visitando se encuentra conectado a tu cuenta actualmente seleccionada."
},
"metamaskDescription": {
"message": "Conectándote a Ethereum y la Web Descentralizada."
},
"metamaskSwapsOfflineDescription": {
"message": "Intercambios MetaMask está en mantenimiento. Por favor intente más tarde."
},
"metamaskVersion": {
"message": "Versión de MetaMask"
},
"metametricsCommitmentsAllowOptOut": {
"message": "Siempre permitir optar por no participar a través de Configuración"
},
"metametricsCommitmentsBoldNever": {
"message": "Nunca",
"description": "This string is localized separately from some of the commitments so that we can bold it"
},
"metametricsCommitmentsIntro": {
"message": "MetaMask va a.."
},
"metametricsCommitmentsNeverCollectIP": {
"message": "$1 recolecta tu dirección IP completa",
"description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'"
},
"metametricsCommitmentsNeverCollectKeysEtc": {
"message": "$1 recolecta llaves, direcciones, transaccinoes, balances, hashes, o cualquier información personal",
"description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'"
},
"metametricsCommitmentsNeverSellDataForProfit": {
"message": "$1 vende datos para lucrar. ¡Nunca!",
"description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'"
},
"metametricsCommitmentsSendAnonymizedEvents": {
"message": "Enviar eventos de vista de página y clics anónimos"
},
"metametricsHelpImproveMetaMask": {
"message": "Ayúdanos a mejorar MetaMask"
},
"metametricsOptInDescription": {
"message": "A MetaMask le gustaría recopilar datos de uso para entender mejor cómo interactúan nuestros usuarios con la extensión. Estos datos van a ser usados, de forma continua, para mejorar la usabilidad y experiencia de uso de nuestro producto y el ecosistema Ethereum."
},
"mobileSyncText": {
"message": "Por favor, ingrese su contraseña ¡para confirmar que es usted!"
},
"mustSelectOne": {
"message": "Debe seleccionar al menos un (1) token"
},
"myAccounts": {
"message": "Mis cuentas"
},
"needEtherInWallet": {
"message": "Para interactuar con una aplicación descentralizada usando MetaMask, necesitas tener Ether en tu monedero"
},
"needImportFile": {
"message": "Debes seleccionar un archivo para importar",
"description": "User is important an account and needs to add a file to continue"
},
"negativeETH": {
"message": "No se pueden mandar cantidades negativas de ETH"
},
"networkName": {
"message": "Nombre de la Red"
},
"networkSettingsChainIdDescription": {
"message": "El ID de la cadena es utilizado para firmar transacciones. Debe coincidir con el ID de la cadena devuelto por la red. Puede ingresar un número decimal o hexadecimal con prefijo '0x', pero se mostrará el número en decimal."
},
"networkSettingsDescription": {
"message": "Agregue y edite redes RPC personalizadas"
},
"networks": {
"message": "Redes"
},
"nevermind": {
"message": "Olvídatelo"
},
"newAccount": {
"message": "Nueva cuenta"
},
"newAccountDetectedDialogMessage": {
"message": "¡Nueva dirección detectada! Clic aquí para agregar a su libreta de direcciones."
},
"newAccountNumberName": {
"message": "Cuenta $1",
"description": "Default name of next account to be created on create account screen"
},
"newContact": {
"message": "Nuevo Contacto"
},
"newContract": {
"message": "Nuevo contrato"
},
"newNetwork": {
"message": "Red Nueva"
},
"newPassword": {
"message": "Nueva contraseña (mínimo [8] caracteres)"
},
"newToMetaMask": {
"message": "¿Es nuevo en MetaMask?"
},
"newTotal": {
"message": "Nuevo total"
},
"newTransactionFee": {
"message": "Nueva Comisión por transacción"
},
"next": {
"message": "Siguiente"
},
"nextNonceWarning": {
"message": "El nonce es más alto que el sugerido de $1",
"description": "The next nonce according to MetaMask's internal logic"
},
"noAccountsFound": {
"message": "No se encontraron cuentas para su búsqueda"
},
"noAddressForName": {
"message": "No se ha establecido ninguna dirección para este nombre."
},
"noAlreadyHaveSeed": {
"message": "No, ya tengo una frase secreta de recuperación"
},
"noConversionRateAvailable": {
"message": "No hay ninguna Tasa de Conversión Disponible"
},
"noThanks": {
"message": "No Gracias"
},
"noTransactions": {
"message": "Sin transacciones"
},
"noWebcamFound": {
"message": "No se encontró a la webcam de tu ordenador. Favor de volver a intentar."
},
"noWebcamFoundTitle": {
"message": "No se encontró a la webcam"
},
"nonceField": {
"message": "Personalizar el nonce de la transacción"
},
"nonceFieldDescription": {
"message": "Habilite esto para cambiar el nonce (número de transacción) en las pantallas de confirmación. Esto es una funcionalidad avanzada, úsela con precaución."
},
"nonceFieldHeading": {
"message": "Nonce Personalizado"
},
"notCurrentAccount": {
"message": "¿Es esta la cuenta correcta? Es diferente de la cuenta actualmente seleccionada en su monedero"
},
"notEnoughGas": {
"message": "No hay suficiente gas"
},
"ofTextNofM": {
"message": "de"
},
"off": {
"message": "Apagado"
},
"offlineForMaintenance": {
"message": "Fuera de línea por mantenimiento"
},
"ok": {
"message": "Ok"
},
"on": {
"message": "Encendido"
},
"onboardingReturnNotice": {
"message": "\"$1\" cerrará esta pestaña y volverá directamente a $2",
"description": "Return the user to the site that initiated onboarding"
},
"onlyAddTrustedNetworks": {
"message": "Un proveedor de red de malintencionado puede mentir sobre el estado de la cadena de bloques y registrar la actividad de su red. Solo agregue redes personalizadas en las que confíe."
},
"onlyAvailableOnMainnet": {
"message": "Solo disponible en la red principal de Ethereum (Main Net)"
},
"onlyConnectTrust": {
"message": "Conéctese solo con sitios en los que confíe."
},
"optionalBlockExplorerUrl": {
"message": "URL del Explorador de bloques (opcional)"
},
"optionalCurrencySymbol": {
"message": "Símbolo (opcional)"
},
"origin": {
"message": "Origen"
},
"parameters": {
"message": "Parámetros"
},
"participateInMetaMetrics": {
"message": "Participa en MetaMetrics"
},
"participateInMetaMetricsDescription": {
"message": "Participa en MetaMetrics para ayudarnos a mejorar MetaMask"
},
"password": {
"message": "Contraseña"
},
"passwordNotLongEnough": {
"message": "La contraseña no es lo suficientemente larga"
},
"passwordsDontMatch": {
"message": "Las contraseñas no coinciden"
},
"pastePrivateKey": {
"message": "Pega tu clave privada aqui",
"description": "For importing an account from a private key"
},
"pending": {
"message": "pendiente"
},
"permissionCheckedIconDescription": {
"message": "Has aprobado este permiso"
},
"permissionUncheckedIconDescription": {
"message": "No has aprobado este permiso"
},
"permissions": {
"message": "Permisos"
},
"personalAddressDetected": {
"message": "Dirección personal detectada. Ingresa la dirección del contrato del token"
},
"plusXMore": {
"message": "+ $1 más",
"description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items"
},
"prev": {
"message": "Prev"
},
"primaryCurrencySetting": {
"message": "Moneda principal"
},
"primaryCurrencySettingDescription": {
"message": "Seleccionar nativa para priorizar el que se muestren los valores en la moneda nativa de la cadena (p.ej. ETH). Seleccionar Fíat para priorizar el que se muestren los valores en la moneda fíat seleccionada."
},
"privacyMsg": {
"message": "Política de privacidad"
},
"privateKey": {
"message": "Clave privada",
"description": "select this type of file to use to import an account"
},
"privateKeyWarning": {
"message": "Advertencia: Nunca reveles esta clave. Cualquier persona con tus claves privadas puede robar los activos retenidos en tu cuenta"
},
"privateNetwork": {
"message": "Red privada"
},
"proposedApprovalLimit": {
"message": "Límite de aprobación propuesto"
},
"provide": {
"message": "Proveer"
},
"queue": {
"message": "Cola"
},
"queued": {
"message": "Encolado"
},
"readdToken": {
"message": "Puedes volver a agregar este token en el futuro pinchando sobre 'Agregar token' en el menú de opciones de tu cuenta"
},
"receive": {
"message": "Recibir"
},
"recents": {
"message": "Recientes"
},
"recipientAddress": {
"message": "Dirección del destinatario"
},
"recipientAddressPlaceholder": {
"message": "Buscar, dirección pública (0x) o ENS"
},
"reject": {
"message": "Rechazar"
},
"rejectAll": {
"message": "Rechazar todo"
},
"rejectTxsDescription": {
"message": "Está a punto de rechazar transacciones de $1 en lote."
},
"rejectTxsN": {
"message": "Rechazar transacciones de $1"
},
"rejected": {
"message": "Rechazada"
},
"remindMeLater": {
"message": "Recordarme más tarde"
},
"remove": {
"message": "Borrar"
},
"removeAccount": {
"message": "Borrar cuenta"
},
"removeAccountDescription": {
"message": "Esta cuenta se quitará de la cartera. Antes de continuar, asegúrese de tener la frase secreta de recuperación original o la clave privada de esta cuenta importada. Puede importar o crear cuentas nuevamente desde el menú desplegable de la cuenta."
},
"requestsAwaitingAcknowledgement": {
"message": "peticiones pendientes de reconocimiento"
},
"required": {
"message": "Requerido"
},
"reset": {
"message": "Reiniciar"
},
"resetAccount": {
"message": "Reiniciar cuenta"
},
"resetAccountDescription": {
"message": "Restablecer la cuenta borrará el historial de transacciones. Esto no cambiará los saldos de las cuentas ni se le pedirá que vuelva a escribir la frase secreta de recuperación."
},
"restore": {
"message": "Restaurar"
},
"restoreAccountWithSeed": {
"message": "Restaurar la cuenta con la frase secreta de recuperación"
},
"restoreWalletPreferences": {
"message": "Se ha encontrado una copia de seguridad de sus datos de $1. ¿Le gustaría restaurar sus preferencias de monedero?",
"description": "$1 is the date at which the data was backed up"
},
"retryTransaction": {
"message": "Reintentar Transacción"
},
"reusedTokenNameWarning": {
"message": "Un token aquí reutiliza un símbolo de otro token que está observando, esto puede ser confuso o engañoso."
},
"revealSeedWords": {
"message": "Revelar frase secreta de recuperación"
},
"revealSeedWordsDescription": {
"message": "Si alguna vez cambia de explorador o de equipo, necesitará esta frase secreta de recuperación para acceder a sus cuentas. Guárdela en un lugar seguro y secreto."
},
"revealSeedWordsTitle": {
"message": "Frase secreta de recuperación"
},
"revealSeedWordsWarning": {
"message": "¡No recuperes tu semilla en un lugar público! Esas palabras pueden ser usadas para robarte todas tus cuentas"
},
"revealSeedWordsWarningTitle": {
"message": "¡NO compartas esta frase con nadie!"
},
"rinkeby": {
"message": "Red de prueba Rinkeby"
},
"ropsten": {
"message": "Red de prueba Ropsten"
},
"rpcUrl": {
"message": "Nueva URL RPC"
},
"save": {
"message": "Guardar"
},
"saveAsCsvFile": {
"message": "Guardar como archivo CSV"
},
"scanInstructions": {
"message": "Coloque el código QR delante de tu cámara"
},
"scanQrCode": {
"message": "Escanear código QR"
},
"scrollDown": {
"message": "Desplazarse hacia abajo"
},
"search": {
"message": "Buscar"
},
"searchAccounts": {
"message": "Buscar Cuentas"
},
"searchResults": {
"message": "Resultados de la Búsqueda"
},
"searchTokens": {
"message": "Buscar Tokens"
},
"secretBackupPhrase": {
"message": "Frase de Respaldo Secreta"
},
"secretBackupPhraseDescription": {
"message": "Su frase de respaldo secreta facilita la realización de copias de seguridad y la restauración de su cuenta."
},
"secretBackupPhraseWarning": {
"message": "ADVERTENCIA: Nunca revele su frase de respaldo. Cualquiera con esta frase puede tomar su Ether para siempre."
},
"securityAndPrivacy": {
"message": "Seguridad y Privacidad"
},
"securitySettingsDescription": {
"message": "Configuración de privacidad y frase secreta de recuperación de la cartera"
},
"seedPhrasePlaceholder": {
"message": "Separar a cada palabra con un sólo espacio"
},
"seedPhrasePlaceholderPaste": {
"message": "Pegar la frase secreta de recuperación desde el Portapapeles"
},
"seedPhraseReq": {
"message": "Las frases secretas de recuperación contienen 12, 15, 18, 21 o 24 palabras"
},
"selectAHigherGasFee": {
"message": "Seleccione una comisión de gas más elevada para agilizar el procesamiento de tu transacción.*"
},
"selectAccounts": {
"message": "Selecciona cuenta(s)"
},
"selectAll": {
"message": "Seleccionar todo"
},
"selectAnAccount": {
"message": "Selecciona una Cuenta"
},
"selectAnAccountHelp": {
"message": "Selecciona la cuenta que quiere ver en MetaMask"
},
"selectEachPhrase": {
"message": "Selecciona cada frase para asegurarse de que sea correcta."
},
"selectHdPath": {
"message": "Selecciona la ruta HD (jerárquica determinista)"
},
"selectPathHelp": {
"message": "Si no ves tus cuentas actuales de Ledger abajo, prueba cambiando la ruta a \"Legacy (MEW / MyCrypto)\""
},
"selectType": {
"message": "Selecciona tipo"
},
"selectingAllWillAllow": {
"message": "Seleccionar todo permitirá que este sitio vea todas sus cuentas actuales. Asegúrate de confiar en este sitio."
},
"send": {
"message": "Enviar"
},
"sendAmount": {
"message": "Enviar cantidad"
},
"sendSpecifiedTokens": {
"message": "Enviar $1",
"description": "Symbol of the specified token"
},
"sendTokens": {
"message": "Enviar tokens"
},
"sentEther": {
"message": "Ether enviado"
},
"separateEachWord": {
"message": "Separar a cada palabra con un sólo espacio"
},
"settings": {
"message": "Configuración"
},
"showAdvancedGasInline": {
"message": "Controles de gas avanzados"
},
"showAdvancedGasInlineDescription": {
"message": "Seleccione esto para mostrar el precio del gas y los controles de límite directamente en las pantallas de envío y confirmación."
},
"showFiatConversionInTestnets": {
"message": "Mostrar Conversión en redes de prueba"
},
"showFiatConversionInTestnetsDescription": {
"message": "Seleccione esto para mostrar la conversión fiat en redes de prueba"
},
"showHexData": {
"message": "Mostrar Datos en formato Hex"
},
"showHexDataDescription": {
"message": "Seleccionar esto para mostrar el campo de los datos en formato hex en la pantalla de mandar"
},
"showIncomingTransactions": {
"message": "Mostrar transacciones entrantes"
},
"showIncomingTransactionsDescription": {
"message": "Seleccione esto para usar Etherscan para mostrar las transacciones entrantes en la lista de transacciones"
},
"showPermissions": {
"message": "Mostrar permisos"
},
"showPrivateKeys": {
"message": "Mostrar claves privadas"
},
"showSeedPhrase": {
"message": "Mostrar frase secreta de recuperación"
},
"sigRequest": {
"message": "Solicitud de firma"
},
"sign": {
"message": "Firmar"
},
"signNotice": {
"message": "Firmar este mensaje puede tener\n efectos secundarios peligrosos. Firma sólo\nmensajes desde sitios a los que estés plenamente dispuesto a confiar tu cuenta.\nEste método peligroso va a ser \neliminado en una version futura."
},
"signatureRequest": {
"message": "Petición de Firma"
},
"signatureRequest1": {
"message": "Mensaje"
},
"signed": {
"message": "Firmado"
},
"slow": {
"message": "Lento"
},
"somethingWentWrong": {
"message": "¡Ups! Algo funcionó mal."
},
"speedUp": {
"message": "Agilizar"
},
"speedUpCancellation": {
"message": "Agilizar esta cancelación"
},
"speedUpTransaction": {
"message": "Agilizar esta transacción"
},
"spendLimitAmount": {
"message": "Monto límite de gasto"
},
"spendLimitInsufficient": {
"message": "Límite de gasto insuficiente"
},
"spendLimitInvalid": {
"message": "Límite de gasto inválido, debe ser un número positivo"
},
"spendLimitPermission": {
"message": "Permiso de límite de gasto"
},
"spendLimitRequestedBy": {
"message": "Límite de gasto solicitado por $1",
"description": "Origin of the site requesting the spend limit"
},
"spendLimitTooLarge": {
"message": "Límite de gasto demasiado grande"
},
"stateLogError": {
"message": "Error al recuperar los logs de estado"
},
"stateLogFileName": {
"message": "Logs de Estado MetaMask"
},
"stateLogs": {
"message": "Logs de Estado"
},
"stateLogsDescription": {
"message": "Los logs de estado contienen sus direcciones de cuentas públicas y transacciones enviadas"
},
"statusConnected": {
"message": "Conectado"
},
"statusNotConnected": {
"message": "No conectado"
},
"storePhrase": {
"message": "Guarde esta frase en un administrador de contraseñas como 1Password."
},
"submit": {
"message": "Enviar"
},
"submitted": {
"message": "Enviado"
},
"supportCenter": {
"message": "Visita nuestro centro de atención"
},
"swap": {
"message": "Intercambiar"
},
"swapAdvancedSlippageInfo": {
"message": "Si el precio cambia entre el momento en que se realiza el pedido y el momento en que se confirma, se denomina \"deslizamiento\". Su intercambio se cancelará automáticamente si el deslizamiento excede su configuración de \"deslizamiento máximo\"."
},
"swapAggregator": {
"message": "Agregador"
},
"swapAmountReceived": {
"message": "Cantidad garantizada"
},
"swapAmountReceivedInfo": {
"message": "Esta es la cantidad mínima que recibirá. Puede recibir más dependiendo del deslizamiento."
},
"swapApproval": {
"message": "Aprobar $1 para intercambios",
"description": "Used in the transaction display list to describe a transaction that is an approve call on a token that is to be swapped.. $1 is the symbol of a token that has been approved."
},
"swapApproveNeedMoreTokens": {
"message": "Necesita $1 más de $2 para completar este intercambio",
"description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol."
},
"swapBetterQuoteAvailable": {
"message": "Hay una mejor cotización disponible"
},
"swapBuildQuotePlaceHolderText": {
"message": "No hay tokens disponibles que coincidan con $1",
"description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text"
},
"swapCheckingQuote": {
"message": "Comprobando $1",
"description": "Shown to the user during quote loading. $1 is the name of an aggregator. The message indicates that metamask is currently checking if that aggregator has a trade/quote for their requested swap."
},
"swapCustom": {
"message": "personalizado"
},
"swapDecentralizedExchange": {
"message": "Exchange descentralizado"
},
"swapEditLimit": {
"message": "Editar límite"
},
"swapEnableDescription": {
"message": "Esto es obligatorio y le da permiso a MetaMask para intercambiar su $1.",
"description": "Gives the user info about the required approval transaction for swaps. $1 will be the symbol of a token being approved for swaps."
},
"swapEstimatedNetworkFee": {
"message": "Tarifa de red estimada"
},
"swapEstimatedNetworkFeeSummary": {
"message": "La “$1“ es lo que esperamos que sea la tarifa real. La cantidad exacta depende de las condiciones de la red.",
"description": "$1 will be the translation of swapEstimatedNetworkFee, with the font bolded"
},
"swapEstimatedNetworkFees": {
"message": "Tarifas de red estimadas"
},
"swapEstimatedNetworkFeesInfo": {
"message": "Esta es una estimación de la tarifa de red que se utilizará para completar su intercambio. La cantidad real puede cambiar según las condiciones de la red."
},
"swapFailedErrorTitle": {
"message": "Intercambio fallido"
},
"swapFetchingQuotesErrorDescription": {
"message": "Hmmm... algo salió mal. Vuelva a intentarlo o, si los errores persisten, póngase en contacto con el servicio de atención al cliente."
},
"swapFetchingQuotesErrorTitle": {
"message": "Error al obtener cotizaciones"
},
"swapFetchingTokens": {
"message": "Obteniendo tokens..."
},
"swapFinalizing": {
"message": "Finalizando..."
},
"swapLowSlippageError": {
"message": "La transacción puede fallar, el deslizamiento máximo es demasiado bajo."
},
"swapMaxNetworkFeeInfo": {
"message": "“$1” es lo máximo que gastará. Cuando la red es volátil, esto puede ser una gran cantidad.",
"description": "$1 will be the translation of swapMaxNetworkFees, with the font bolded"
},
"swapMaxNetworkFees": {
"message": "Tarifa de red máxima"
},
"swapMaxSlippage": {
"message": "Deslizamiento máximo"
},
"swapMetaMaskFee": {
"message": "Tarifa de MetaMask"
},
"swapMetaMaskFeeDescription": {
"message": "Siempre encontramos el mejor precio de las principales fuentes de liquidez. Una tarifa de $1% se incluye automáticamente en cada cotización, lo que respalda el desarrollo continuo para hacer que MetaMask sea aún mejor.",
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
},
"swapNQuotes": {
"message": "$1 cotizaciones",
"description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen"
},
"swapNetworkFeeSummary": {
Version v9.5.0 RC (#10944) * add trezor HD path for ledger wallets (#10616) Co-authored-by: Barry Gitarts <bgitarts@gmail.com> * Replace logic for eth swap token in fetchQuotesAndSetQuoteState with getSwapsEthToken call (#10624) * Ensure permission log will only store JSON-able data (#10524) * remove transactionCategory in favor of more types (#10615) * remove transactionCategory in favor of more types * remove reference to STANDARD in stubs * Removing double click bug from delete custom network modal (#10628) Fixes MetaMask/metamask-extension#10626 * Hide zero balance tokens at useTokenTracker layer (#10630) * Setting balance to 0x0 when the original value is undefined (#10634) * fix: speedup cancellation (#10579) fixes #7305 * no more node:console (#10640) * prefer chainId over networkId in most cases (#10594) * Move swaps constants to the shared constants directory (#10614) * Position the 3dot menu in the same spot on asset screen and home screen (#10642) * Ensure swaps detail height doesn't create jump in vertical height (#10644) * Fix: ETH 'token' now only appears once in the swaps to and from dropdowns. (#10650) * Prevent network menu highlighting (#10643) * Allow TextField to receive min and max attributes (#10656) * colocate tests in flat structure (#10655) * Fixing migration script generation paths (#10664) * Improve specificity of `test:unit:lax` npm script (#10661) The unit test npm script `test:unit:lax` is now more specific about which tests files to exclude. An `--ignore` CLI option is used to specify the files to ignore, rather than using the braces glob syntax to ignore them from the target glob itself. This makes the option easier to update going forward as we move more tests into the "strict" group, because the options are exactly the same between the two scripts. It also ensures we don't accidentally exclude other subdirectories that happen to also be named `permissions`. In trying to implement this, I stumbled at first because mocha expects the ignore pattern to be a relative path if the target is a relative path (i.e. they need to both start with `./` or neither). The script `test:unit:strict` has been updated to use a relative target pattern for consistency. * Swaps support for local testnet (#10658) * Swaps support for local testnet * Create util method for comparison of token addresses/symbols to default swaps token * Get chainId from txMeta in _trackSwapsMetrics of transaction controller * Add comment to document purpose of getTransactionGroupRecipientAddressFilter * Use isSwapsDefaultTokenSymbol in place of repeated defaultTokenSymbol comparisons in build-quote.js * fix: replace dnode background with JSON-RPC (#10627) fixes #10090 * Don't render faucet row in deposit modal for custom chains (#10674) Fixes MetaMask/metamask-extension#10038 * Change 'Send ETH' title to 'Send' (#10651) * Fixing incorrectly typed token decimal attribute (#10666) * refactor incoming tx controller (#10639) * make migration more safe (#10689) * Adding default properties to NetworkForm (#10682) Fixes MetaMask/metamask-extension#10681 * deps - remove "remotedev-server" (#10687) * deps - remove remotedev-server * Remove stale references from allow-scripts config Any packages that are no longer in the dependency tree have been removed from the `allow-scripts` config. Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Excluding sourcemaps comment in production builds (#10695) * Excluding sourcemaps comment in production builds Fixes MetaMask/metamask-extension#7077 * Fix source map explorer script The source map explorer script now re-adds the source map comment to each file to ensure the source map visualization still works. Each module with a sourcemap is copied to a temporary directory along with the module it corresponds to, and from there it's passed into `source-map-explorer`. This should ensure the resulting visualization matches what it was before. Everything has been moved inside of functions to generally improve readability, and to allow the use of local variables. Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Delete setupFetchDebugging.js (#10636) * Delete setupFetchDebugging.js * remove fetch-debugging (now handled corrently by sentry) * resolve issue with missing template error (#10692) * resolve issue with missing template error * also apply filtering to confirmation page * rename variable * Add MetaMask to list of BIP44 HD path examples (#10703) The "BIP44 Standard" HD path option in the Ledger connect flow listed only Trezor as an example. It seemed appropriate to include MetaMask as well, since we use the same path. This helps users who have imported their MetaMask seed phrase onto a Ledger device to discover this option. * Removing hard references to 12 word seed phrases in copy (#10704) Adding translation entry for "Wallet Seed" Fixed label padding issue by adding missing CSS rule * rule out empty string for symbol (#10712) * fix: remove unused `metamask.rpcUrl` from redux state + fix tests to reflect that (#10714) * Fix 10706 - Prevent autocomplete from add token input (#10700) * Fix mismatchedChain typo in custom network approval screen (#10723) * Fix 10562 - Hide the suggested token pane when not on Mainnet or test network (#10702) * Update @metamask/controllers to v6.2.1 (#10701) * Additional swaps network support (#10721) * Add swaps support for bnc chain * Use single default token address in shared/constants/swaps * ci - cache deps before patch-package (#10735) * ci - cache deps before patch-package * ci - bump dep cache number (cache break) * build - refactor build system for easier configuration (#10718) * build - refactor build system for easier configuration of before and after bundle * build - fix dependenciesToBundle option * build - fix bify external options and other config * build - refactor for cleanliness * build - fix minify argument * build - fix sourcemaps setup * scripts - refactor setupBundlerDefaults in anticipation of factor bundles * build - scripts - remove unused pipeline label * build - scripts - make filepath entry optional * build - scripts - rename filepath and filename options to entryFilepath and destFilepath * Update development/build/scripts.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> Co-authored-by: Mark Stacey <markjstacey@gmail.com> * security - update SES lockdown (#10663) * update ses * build - reference ses directly * deps - unify regenerator-runtime versions on 0.13.7 * patches - apply regenerator-runtime ses compat patch\nhttps://github.com/facebook/regenerator/pull/411 * patches - patch regenerator-runtime for latest ses fix * reduc patch, new lockdown severe override taming * updated redux patch * update redux patch for production * ignore lockdown in lint * deps - bump patch-package just in case * trailing comma * remove ses as dep * fix path for frozen promise * remove js extension in lockdown require * Revert "ignore lockdown in lint" This reverts commit 8cefdc94dd25d7781bb09eed8af36441397676da. * Revert "build - reference ses directly" This reverts commit 30371a377dcdd781c1bf9abe55e9c8ae34da26b5. * deps - update ses * Revert "fix path for frozen promise" This reverts commit 966e4c60921a25befe8ca8dea58313cc25852f72. Co-authored-by: kumavis <aaron@kumavis.me> * Allow 11 characters in symbol for RPC (#10670) * Add error in RPC for zero length symbols * Increase RPC symbol length allowed to 11 * Add RPC tests for new symbol length checks * eth-block-tracker@5.0.1 (#10737) * Ensure swaps gas prices are fetched from the correct chain specific endpoint (#10744) * Ensure swaps gas prices are fetched from the correct chain specific endpoint * Just rely on fetchWithCache to cache swaps gas prices, instead of directly using storage in getSwapsPriceEstimatesLastRetrieved * Empty commit * update @metamask/etherscan-link to v2.0.0 (#10747) * Use correct block explorer name and link in swaps when on custom network (#10743) * Use correct block explorer name and link in swaps when on custom network. * Fix up custom etherscan link code in build-quote.js * Use blockExplorerUrl hostname instead of 'blockExplorerBaseUrl' * Use correct etherscan-link method for token links in build-quote * Create correct token link in build-quote for mainnet AND custom networks * Block explorer url improvements in awaiting-swap.js and build-quote.js * Use swapVerifyTokenExplanation message with substitutable block explorer for all applicable locales * Ensure that block explorer links are not shown in awaiting-swap if no url is available * Add New Zealand Dollar to currency options (#10746) * Ensure that the correct default currency symbols are used for fees on the view quote screen (#10753) * Fix 10517 - Prevent tokens without addresses from being added to token list (#10593) * Updating y18n and netmask to resolve dependency issues (#10765) netmask@1.0.6 -> 2.0.1, y18n@3.2.1 -> 3.2.2, y18n@4.0.0 -> 4.0.1 * Refactor Tx State Manager (#10672) Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Ensure that the approval fee in the swaps custom gas modal is in network specific currency (#10763) * Ensure that priceSlippage fiat amounts are always shown in view-quote.js (#10762) * Use network specific swaps contract address when checking swap contract token approval (#10774) * Build - refactor background process to use html (#10769) * build - declare background as html * build - fill in empty file when a missing file is expected * lint - fix * Update development/build/manifest.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Update development/build/manifest.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> Co-authored-by: Mark Stacey <markjstacey@gmail.com> * build - fix use of empty file to replace unused js files (#10780) * cache lint results for faster repeat execution (#10773) * eslint perf improvement (#10775) * Improve detection of task process exit (#10776) Our build script waits for the `close` event to determine whether the task has exited. The `exit` event is a better representation of this, because if a stream is shared between multiple processes, the process may exit without the `close` event being emitted. We aren't sharing streams between processes, so this edge case doesn't apply to us. This just seemed like a more suitable event to listen to, since we care about the process exiting not the stream ending. See this description of the `close` event from the Node.js documentation [1]: >The `'close'` event is emitted when the stdio streams of a child >process have been closed. This is distinct from the `'exit'` event, >since multiple processes might share the same stdio streams. And see this description of the `exit` event: >The `'exit'` event is emitted after the child process ends. [1]: https://nodejs.org/docs/latest-v14.x/api/child_process.html#child_process_event_exit * Rewrite changelog script from Bash to JavaScript (#10782) The `auto-changelog` script has been rewritten from Bash to JavaScript. Functionally it should behave identically. * Refactoring ethereum-on.spec.js to use fixtures (#10778) * Remove useless negation (#10787) !contentComponent always evaluates to true * Remove date from changelog release header (#10790) New changelog release headers now omit the date. These headers are added automatically when a new release branch is created, and that rarely ends up being the actual date of the release, so these dates have all been inaccurate anyway. The date will be re-added to the changelog later as part of a new script, after a release has been published. * Remove script for creating master sync PR (#10791) The script responsible for creating the "Sync `master` with `develop`" PR has been removed. We will soon be eliminating the need for a `master` branch altogether, so we don't need this anymore. Also, this script hasn't been running correctly in a long time. We've been creating this PR manually. * Add changelog entries under release candidate header (#10784) Instead of always placing new changelog entries under the "Current Develop Branch" header, the changelog script now places them under the header for the current release if that release has not yet been tagged. This eliminates one manual step from the release process. Relates to #10752 * Prevent duplicate changelog entries (#10786) The changelog update script now prevents duplicate entries from being added. Specifically, it will ensure that if a PR has been referenced already in an entry, it will not add it again. This should prevent it from adding duplicate entries for changes that were cherry-picked into hotfix releases. Note that this duplication prevention only works for entries containing a PR number. We don't have any way to prevent duplicate entries yet in cases where we don't know the associated PR. We will be preventing this possibility entirely pretty soon in some upcoming release automation changes though, so I'm not concerned about this omission. * Set the BSC_CONTRACT_ADDRESS to lowercase (#10800) * only applies rules to the appropriate files (#10788) * upgrade eslint deps (#10789) * Ensure correct primary currency image is displayed on home screen and token list (#10777) * Add release header when updating changelog (#10794) The changelog update script now adds a release header if it doesn't find one already that matches the current release candidate version. * remove node-sass dependency (#10797) * Add support for locators into driver abstraction (#10802) * Update changelog headers and fix dates (#10805) The changelog release header format has been updated to match the "keep a changelog" [1] format. Each header is now the bracketed version number followed by a dash, then the release date in ISO-8601 format. The release dates in each header were also updated to match the date of the corresponding GitHub Release [2]. Many of these dates were incorrect because they were set on the day we created the release candidate, rather than on the day of release. Any changelog release entries without a corresponding GitHub release was left with the date already specified. The three oldest release headers were missing dates. For the first two, I used the date of the version bump commit. For the third, I removed it since no changes were listed anyway, and it represented a range of releases rather than a single one. The `auto-changelog.js` script has been updated to account for this new format as well. [1]: https://keepachangelog.com/en/1.0.0/ [2]: https://github.com/MetaMask/metamask-extension/releases * Update the changelog when creating an RC (#10795) The changelog will now be automatically updated when a release branch is created. A new release header along with changelog entries for any new commits will be added. Note that this changelog will still need to be manually cleaned up, but it's one less manual step at least. The old Bash script for adding a new release header to the changelog has been removed, as that functionality is now built into the changelog update script. A new script has been added to commit any changes made to the manifest and changelog. This step used to happen at the end of the bump manifest version script, but now the changelog update relies upon the manifest version bump happening first, so it needed to be re-ordered. The changes should only be committed on the first run of the branch, as it's contingent upon the manifest changing (due to the version bump). Further changelog updates won't trigger new automatic commits. * Refactoring address-book.spec.js to use fixtures (#10804) * Refactoring send-edit.spec.js to use fixtures (#10792) * Fix _getPermittedAccounts type safety (#10819) * Removing unnecessary params from withFixtures function call. (#10831) * Add links to release headers (#10808) Each release header now includes a link to the range of commits included with that release. These links are at the end of the document, in accordance with the "keep a changelog" [1] format. For the purpose of this changelog, the "previous release" is the most recent release mentioned in the changelogs. The diffs ignore any releases that were omitted from the changelog. This is mainly an issue with older releases, so it seemed acceptable. All releases have been documented for a couple of years now, and will be going forward as well. The name of the "Current Develop Branch" section was changed to "Unreleased" to confirm with "keep a changelog". The `auto-changelog.js` script has been updated to update/add these links whenever adding a new release header as well. [1]: https://keepachangelog.com/en/1.0.0/ * Refactoring permissions.spec.js to use fixtures (#10829) * Add validation for the `fee` property from the `/trades` API response (#10836) * Refactoring signature-request.spec.js to use fixtures (#10820) * use locator abstraction in tests folder (#10833) * Move BSC chain ID, rename some BSC-related vars (#10807) * Add categories to each changelog release (#10837) Each changelog release now has category headers. The standard "keep a changelog" [1] categories are used, along with the addition of "Uncategorized" for any changes that have not yet been categorized. The changelog script has been updated to add this "Uncategorized" header if it isn't already present, and to place any new commits under this header. The changelog has been updated to property categorize each change in recent releases, and to place changes in older releases under the header "Uncategorized". [1]: https://keepachangelog.com/en/1.0.0/ * Remove unused CI script (#10840) This script has not been used since #10795. It is now gone. * Add `--rc` flag to changelog script (#10839) The changelog script now accepts an `--rc` flag to tell it whether to add new changes to `Unreleased` or to the header for the current version. Previously this was inferred from whether the current version matched the most recent tag. However this method only works for the first update. Using a flag simplifies this logic, and makes it possible to manually re-run this for further updates to a release candidate. * Add `--help` flag to changelog script (#10846) The changelog script now accepts a `--help` flag, which prints a help text explaining how the script works and what each flag does. * add abstraction for waitForSelector (#10844) * Adds jest dependency (#10845) * Add Jest * Refactor changelog parsing and generation (#10847) The `auto-changelog.js` script has been refactoring into various different modules. This was done in preparation for migrating this to a separate repository, where it can be used in our libraries as well. Functionally this should act _mostly_ the same way, but there have been some changes. It was difficult to make this a pure refactor because of the strategy used to validate the changelog and ensure each addition remained valid. Instead of being updated in-place, the changelog is now parsed upfront and stored as a "Changelog" instance, which is a new class that was written to allow only valid changes. The new changelog is then stringified and completely overwrites the old one. The parsing had to be much more strict, as any unanticipated content would otherwise be erased unintentionally. This script now also normalizes the formatting of the changelog (though the individual change descriptions are still unformatted). The changelog stringification now accommodates non-linear releases as well. For example, you can now release v1.0.1 *after* v2.0.0, and it will be listed in chronological order while also correctly constructing the `compare` URLs for each release. * Increase default slippage from 2% to 3%, show Advanced Options by default (#10842) * Increase default slippage from 2% to 3%, show Advanced Options by default * Disable opening / closing of Advanced Options on the Swap page * Pre-select previously used slippage value when going back to the Swap page * Fix lint issues * Use a callback for setting up an initial customValue * Migrate unreleased changes in changelog (#10853) When updating the changelog for a release candidate, any unreleased changes are now migrated to the release header. Generally we don't make a habit of adding changes to the changelog prior to creating a release candidate, but if any are there we certainly don't want them duplicated. * @metamask/eslint-config*@6.0.0 (#10858) * @metamask/eslint-config*@6.0.0 * Minor eslintrc reorg * Refactoring threebox.spec.js to use fixtures (#10849) * Adjust renderWithProvider to accommodate redux-less components (#10857) * Jest config (#10855) * Setup jest config * Adjust test for jest. * Adjust lint config * Omit swaps ui folder for unit testing * Omit swaps from test:unit:lax * Add jest.config.js to script files * Restore mocks rather than clearing them. * Update jest config and adjust lint to include subdirs * Convert view-quote-price-difference test to jest * Add jest ci and ci coverage scripts. Add jest unit test to general test command * Add test coverage to ci * Use --ignore flag * Fixup * Add @metamask/eslint-config-jest * Update .eslintrc.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Adds jest-coverage/ Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Add jest-coverage/ to prettierignore (#10865) * Add jest coverage (#10868) * Add jest coverage This will add coverage for any tests ran in jest under the `test:coverage:jest` command, which is currently being used in CI. I set the values to the current test coverage in `ui/app/pages/swaps`. * Lint * Fix crash when adding new changelog release header (#10870) The `auto-changelog.js` script crashes when trying to add a new release header. This bug was introduced in #10847. The cause was a simple misnamed parameter. * Change caching for Swaps APIs from 1 hour to 5 minutes (#10871) * Change caching for the /tokens API from 1 hour to 5 minutes * Use 5 minutes caching for /topAssets and /aggregatorMetadata APIs as well * add key literals to driver (#10854) * Quote globs in prettier scripts (#10867) * use waitForSelector instead of until (#10852) * complete abstraction of until method * response to feedback * Adding recovery phrase video to onboarding process (#10717) * Adding recovery phrase video to onboarding process Adding english subtitles * Support textAlign in Box, converting sidebar to Box * Reduce calls of the `/featureFlag` API (#10859) * Remove periodic calls to the /featureFlag API * Always show the Swap button on the main page * Check if the Swaps feature is enabled, show loading animation while waiting * Reuse an existing useEffect call * Use ‘isFeatureFlagLoaded’ in React’s state, resolve lint issues * Add a watch mode for Jest testing * Add unit tests for Swaps: fetchSwapsLiveness, add /ducks/swaps into Jest testing * Remove Swaps Jest tests from Mocha’s ESLint rules * Ignore Swaps Jest tests while running Mocha, update paths * Increase test coverage to the current max * Fix ESLint issues for Swaps * Enable the Swaps feature by default and after state reset, remove loading screen before seeing Swaps * Update Jest config, fix tests * Update Jest coverage threshold to the current maximum * Update ESLint rule in jest.config.js * Disable the “Review Swap” button if the feature flag hasn’t loaded yet * Update jest threshold * Fix 10036 - Prevent odd localStorage migration error in Firefox (#10884) * Add jest watch mode script (#10869) * Refactoring metamask-responsive-ui.spec.js to use fixtures (#10866) * Handling infura blockage (#10883) * Handling infura blockage * Adding blockage home notification * Updating copy, adding temporary notification dismissal * Addressing review feedback * Using eth_blockNumber method to check Infura availability * Handling network changes in availability check * Use jest to run ui/**/*.test.js (#10885) * upgrade ethereumjs util (#10886) * Swaps: Show a network name dynamically in a tooltip (#10882) * Swaps: Show a network name dynamically in a tooltip * Replace “Ethereum” with “$1”, change “Test” to “Testnet” * Replace 이더리움 with $1 * Translate network names, use ‘Ethereum’ by default if a translation is not available yet * Reorder messages to resolve ESLint issues * Add a snapshot test for the FeeCard component, increase Jest threshold * Enable snapshot testing into external .snap files in ESLint * Add the “networkNameEthereum” key in ko/messages.json, remove default “Ethereum” value * Throw an error if chain ID is not supported by the Swaps feature * Use string literals when calling the `t` fn, * Adding option to set Custom Nonce to Confirm Approve Page (#10595) * Dep Upgrades for Lavamoat Patches (#10902) * dep upgrades * apply more patches * Dep upgrades and patches (#10903) * apply patches * lavamoat dep upgrades * remove lavamoat browserify * Increase Jest unit test coverage for the Swaps feature to ~25% (#10900) * Swaps: Show a network name dynamically in a tooltip * Replace “Ethereum” with “$1”, change “Test” to “Testnet” * Replace 이더리움 with $1 * Translate network names, use ‘Ethereum’ by default if a translation is not available yet * Reorder messages to resolve ESLint issues * Add a snapshot test for the FeeCard component, increase Jest threshold * Enable snapshot testing into external .snap files in ESLint * Add the “networkNameEthereum” key in ko/messages.json, remove default “Ethereum” value * Throw an error if chain ID is not supported by the Swaps feature * Use string literals when calling the `t` fn, * Watch Jest tests silently (no React warnings in terminal, only errors) * Add @testing-library/jest-dom, import it before running Jest tests * Add snapshot testing of Swaps’ React components for happy paths, increase minimum threshold for Jest * Add the test/jest folder for Jest setup and shared functions, use it in Swaps Jest tests * Fix ESLint issues, update linting config * Enable ESLint for .snap files (Jest snapshots), throw an error if a snapshot is bigger than 50 lines * Don’t run lint:fix for .snap files * Move `createProps` outside of `describe` blocks, move store creation inside tests * Use translations instead of keys, update a rendering function to load translations * Make sure all Jest snapshots are shorter than 50 lines (default limit) * Add / update props for Swaps tests * Fix React warnings when running tests for Swaps * Bump @metamask/contract-metadata from 1.23.0 to 1.25.0 (#10899) Bumps [@metamask/contract-metadata](https://github.com/MetaMask/contract-metadata) from 1.23.0 to 1.25.0. - [Release notes](https://github.com/MetaMask/contract-metadata/releases) - [Commits](https://github.com/MetaMask/contract-metadata/compare/v1.23.0...v1.25.0) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Refactoring from-import-ui.spec.js to use fixtures (#10907) * Fix 10458 - Understand where to get support (#10895) * Add contract address validation for token swaps (#10912) * Fixing ENS input entry in send flow (#10923) * Fixing ENS input entry in send flow Fixes MetaMask/metamask-extension#10691 * removed unnecessary apostrophe * Refactoring incremental-security.spec.js to use fixtures (#10917) * use one segment instance (#10915) * Implement Ledger Live bridge (#10293) * add view account-details menu item to token-options menu (#10932) * add view account-details menu item to token-options menu * add onViewAccountDetails propType * Fix 10609 - Prevent overflow of confirmation page hostname (#10935) * upgrade eth-keyring-controller (#10933) * [Fix] 10365 My Accounts Removal (#10680) * pushing my-accounts removal * removed CONTACT_MY_ACCOUNTS_ROUTE * removed CONTACT_MY_ACCOUNTS_VIEW_ROUTE * removing CONTACT_MY_ACCOUNTS_EDIT_ROUTE * removing CONTACT_MY_ACCOUNTS_EDIT_ROUTE * removed showingMyAccounts dead code * removed more dead code related to isMyAccountsPage * removing more dead code * fixed linting error(s) * removing my-accounts component/folder * added empty contact screen ui * styled empty contact page ui * fixed linting, removed add contacts button, and fixed errors * localized text and centered No Contacts * pushing localized verification and fixed e2e test * added listRoute redirect * added listroute and fixed linting error * Increase Jest unit test coverage for the Swaps feature to ~43% (#10934) * add hamburger menu to eth page (#10938) * add hamburger menu to eth page * change token-options to asset-options, use more direct selector for user address fetch * use token custom icons where possible (#10939) * Whats new popup (#10583) * Add 'What's New' notification popup * Move selectors from shared/notifications into ui/ directory * Use keys for localized message in whats new notifications objects, to ensure notifications will be translated. * Remove unused swaps intro popup locale messages * Fix keys of whats new notification locales * Remove notifications messages and descriptions from comment in shared/notifications * Move notifcationActionFunctions to shared/notifications and make it stateless * Get notification data from constants instead of state in whats-new-popup * Code cleanup * Fix build quote reference to swapsEthToken, broken during rebase * Rename notificationFilters to notificationToExclude to clarify its purpose * Documentation for getSortedNotificationsToShow * Move notification action functions from shared/ to whats-new-popup.js * Stop setting swapsWelcomeMessageHasBeenShown to state in app-state controller * Update e2e tests for whats new popup changes * Updating migration files * Addressing feedback part 1 * Addressing feedback part 2 * Remove unnecessary div in whats-new-popup * Change getNotificationsToExclude to getNotificationsToInclude for use in the getSortedNotificationsToShow selector * Delete intro-popup directory and test files * Lint fix * Add notifiction state to address-entry fixture * Use two separate functions for rendering first and subsequent notifications in the whats-new-popup * Ensure that string literals are passed to t for whats new popup text * Update import-ui fixtures to include notificaiton controller state * Remove unnecessary, accidental change confirm-approve * Remove swaps notification in favour of mobile swaps as first notifcation and TBD 3rd notification * Update whats-new-popup to use intersection observer api to detect if notification has been seen * Add notifications to send-edit and threebox e2e test fixtures * Update ui/app/selectors/selectors.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Update ui/app/selectors/selectors.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Clean up locale code for whats-new-popup notifications * Disconnect observers in whats-new-popup when their callback is first called * Add test case for migration 58 for when the AppStateController does not exist * Rename popover components containerRef to popoverWrapRef * Fix messages.json * Update notification messages and images * Rename popoverWrapRef -> popoverRef in whats-new-popup and popover.component * Only create one observer, and only after images have loaded, in whats-new-popup * Set width and height on whats-new-popup image, instead of setting state on img load * Update ui/app/components/app/whats-new-popup/whats-new-popup.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Code clean up in whats new popup re: notification rendering and action functions * Code cleanup in render notification functions of whats-new-popup * Update ui/app/components/app/whats-new-popup/whats-new-popup.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> * lint fix * Update and localize notification dates * Clean up date code in shred/notifications/index.js Co-authored-by: ryanml <ryanlanese@gmail.com> Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Revert "Implement Ledger Live bridge (#10293)" This reverts commit 15b596ad15f2d569255c39e5e7babc8b7ab700ca. * Version v9.5.0 * Update changelog for v9.5.0 * yarn allow-scripts and yarn lavamoat:auto for Version-v9.5.0 branch * Anchor the Need Help text to the bottom of the expanded page (#10955) * fix transaction sync logic (#10954) * Add backwards compatibility for ETH <-> WETH contract address validation (#10962) * Whats new popup design fixes (#10964) * Remove padding on QR code image * Allow the qr code to be below the description in the whats new popup * Fix size and position of QR code in whats new notification * Add right caret to action links in whats new popup * Clean up placeImageBelowDescription logic * Fix display of whats-new-popup image * Improve spacing and sizing of whats new popup in both full screen and popup view * refactor * Ensure method of adding contact when contacts exist (#10963) * Fixing alignment issue with bottom notification (#10979) * Revert "Adding recovery phrase video to onboarding process (#10717)" This reverts commit 9e918b602655e0e4620ab19a3959a8fc08ec0f47. * Removing recovery video entry from changelog * Remove tests that are only needed for the commit reverted in 68c5defc * Fix dependency vulnerability by upgrading xmlhttprequest-ssl via yarn.lock (#10990) Co-authored-by: Mark Stacey <markjstacey@gmail.com> Co-authored-by: Barry Gitarts <bgitarts@gmail.com> Co-authored-by: Dan J Miller <danjm.com@gmail.com> Co-authored-by: Erik Marks <25517051+rekmarks@users.noreply.github.com> Co-authored-by: Brad Decker <git@braddecker.dev> Co-authored-by: ryanml <ryanlanese@gmail.com> Co-authored-by: David Walsh <davidwalsh83@gmail.com> Co-authored-by: Niranjana Binoy <43930900+NiranjanaBinoy@users.noreply.github.com> Co-authored-by: Shane <jonas.shane@gmail.com> Co-authored-by: gitpurva <47534619+gitpurva@users.noreply.github.com> Co-authored-by: kumavis <kumavis@users.noreply.github.com> Co-authored-by: Etienne Dusseault <etienne.dusseault@gmail.com> Co-authored-by: kumavis <aaron@kumavis.me> Co-authored-by: Grant Bakker <grant@bakker.pw> Co-authored-by: Michael Standen <screaminghawk@gmail.com> Co-authored-by: Muhammet Kara <mrkara@users.noreply.github.com> Co-authored-by: Daniel <80175477+dan437@users.noreply.github.com> Co-authored-by: Thomas Huang <tmashuang@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas <thomas.b.huang@gmail.com> Co-authored-by: Alex Donesky <alex.donesky@consensys.net> Co-authored-by: Austin Akers <austin.akers5@gmail.com> Co-authored-by: MetaMask Bot <metamaskbot@users.noreply.github.com>
4 years ago
"message": "La tarifa de la red cubre el costo de procesar su intercambio y almacenarlo en la red $1. MetaMask no se beneficia de esta tarifa."
},
"swapNewQuoteIn": {
"message": "Nuevas cotizaciones en $1",
"description": "Tells the user the amount of time until the currently displayed quotes are update. $1 is a time that is counting down from 1:00 to 0:00"
},
"swapOnceTransactionHasProcess": {
"message": "Su $1 se agregará a su cuenta una vez que se haya procesado esta transacción.",
"description": "This message communicates the token that is being transferred. It is shown on the awaiting swap screen. The $1 will be a token symbol."
},
"swapPriceDifference": {
"message": "Está poor interccambiar $1 $2 (~$3) por $4 $5 (~$6).",
"description": "This message represents the price slippage for the swap. $1 and $4 are a number (ex: 2.89), $2 and $5 are symbols (ex: ETH), and $3 and $6 are fiat currency amounts."
},
"swapPriceDifferenceTitle": {
"message": "Diferencia de precio de ~$1%",
"description": "$1 is a number (ex: 1.23) that represents the price difference."
},
"swapPriceDifferenceTooltip": {
"message": "La diferencia en los precios de mercado puede verse afectada por las tarifas cobradas por los intermediarios, el tamaño del mercado, el tamaño del comercio o las ineficiencias del mercado."
},
"swapPriceDifferenceUnavailable": {
"message": "El precio de mercado no está disponible. Asegúrese de sentirse cómodo con el monto devuelto antes de continuar."
},
"swapProcessing": {
"message": "Procesando"
},
"swapQuoteDetails": {
"message": "Detalles de cotización"
},
"swapQuoteDetailsSlippageInfo": {
"message": "Si el precio cambia entre el momento en que se realiza el pedido y se confirma, se denomina \"deslizamiento\". Su intercambio se cancelará automáticamente si el deslizamiento excede su configuración de \"tolerancia de deslizamiento\"."
},
"swapQuoteIncludesRate": {
"message": "La cotización incluye una tarifa de MetaMask de $1%",
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
},
"swapQuoteNofN": {
"message": "Cotización $1 de $2",
"description": "A count of loaded quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of quotes to load."
},
"swapQuoteSource": {
"message": "Fuente de cotización"
},
"swapQuotesAreRefreshed": {
"message": "Las cotizaciones se actualizan a menudo para reflejar las condiciones actuales del mercado."
},
"swapQuotesExpiredErrorDescription": {
"message": "Solicite nuevas cotizaciones para obtener las últimas tarifas."
},
"swapQuotesExpiredErrorTitle": {
"message": "El tiempo de espera caducó obteniendo cotizaciones"
},
"swapQuotesNotAvailableErrorDescription": {
"message": "Intente ajustar la configuración de cantidad o deslizamiento y vuelva a intentarlo."
},
"swapQuotesNotAvailableErrorTitle": {
"message": "No hay cotizaciones disponibles"
},
"swapRate": {
"message": "Tasa de intercambio"
},
"swapReceiving": {
"message": "Recibiendo"
},
"swapReceivingInfoTooltip": {
"message": "Esta es una estimación. La cantidad exacta depende del deslizamiento."
},
"swapRequestForQuotation": {
"message": "Solicitud de presupuesto"
},
"swapSearchForAToken": {
"message": "Buscar un token"
},
"swapSelect": {
"message": "Seleccionar"
},
"swapSelectAQuote": {
"message": "Seleccionar una cotización"
},
"swapSelectAToken": {
"message": "Seleccionar un token"
},
"swapSelectQuotePopoverDescription": {
"message": "A continuación se muestran todas las cotizaciones recopiladas de múltiples fuentes de liquidez."
},
"swapSource": {
"message": "Fuente de liquidez"
},
"swapSourceInfo": {
"message": "Buscamos múltiples fuentes de liquidez (exchanges, agregadores y creadores de mercado profesionales) para encontrar las mejores tarifas y las tarifas de red más bajas."
},
"swapSwapFrom": {
"message": "Intercambiar desde"
},
"swapSwapSwitch": {
"message": "Intercambiar de y a tokens"
},
"swapSwapTo": {
"message": "Intercambiar a"
},
"swapThisWillAllowApprove": {
"message": "Esto permitirá que se intercambie $1."
},
"swapTokenAvailable": {
"message": "Su $1 se ha agregado a su cuenta.",
"description": "This message is shown after a swap is successful and communicates the exact amount of tokens the user has received for a swap. The $1 is a decimal number of tokens followed by the token symbol."
},
"swapTokenToToken": {
"message": "Intercambiar $1 a $2",
"description": "Used in the transaction display list to describe a swap. $1 and $2 are the symbols of tokens in involved in a swap."
},
"swapTransactionComplete": {
"message": "Transacción completada"
},
"swapUnknown": {
"message": "Desconocido"
},
"swapUsingBestQuote": {
"message": "Utilizando la mejor cotización"
},
"swapVerifyTokenExplanation": {
Version v9.3.0 RC (#10739) * Replace logic for eth swap token in fetchQuotesAndSetQuoteState with getSwapsEthToken call (#10624) * Move swaps constants to the shared constants directory (#10614) * Fix: ETH 'token' now only appears once in the swaps to and from dropdowns. (#10650) * Swaps support for local testnet (#10658) * Swaps support for local testnet * Create util method for comparison of token addresses/symbols to default swaps token * Get chainId from txMeta in _trackSwapsMetrics of transaction controller * Add comment to document purpose of getTransactionGroupRecipientAddressFilter * Use isSwapsDefaultTokenSymbol in place of repeated defaultTokenSymbol comparisons in build-quote.js * Additional swaps network support (#10721) * Add swaps support for bnc chain * Use single default token address in shared/constants/swaps * Ensure swaps gas prices are fetched from the correct chain specific endpoint (#10744) * Ensure swaps gas prices are fetched from the correct chain specific endpoint * Just rely on fetchWithCache to cache swaps gas prices, instead of directly using storage in getSwapsPriceEstimatesLastRetrieved * Empty commit * update @metamask/etherscan-link to v2.0.0 (#10747) * Use correct block explorer name and link in swaps when on custom network (#10743) * Use correct block explorer name and link in swaps when on custom network. * Fix up custom etherscan link code in build-quote.js * Use blockExplorerUrl hostname instead of 'blockExplorerBaseUrl' * Use correct etherscan-link method for token links in build-quote * Create correct token link in build-quote for mainnet AND custom networks * Block explorer url improvements in awaiting-swap.js and build-quote.js * Use swapVerifyTokenExplanation message with substitutable block explorer for all applicable locales * Ensure that block explorer links are not shown in awaiting-swap if no url is available * Ensure that the correct default currency symbols are used for fees on the view quote screen (#10753) * Updating y18n and netmask to resolve dependency issues (#10765) netmask@1.0.6 -> 2.0.1, y18n@3.2.1 -> 3.2.2, y18n@4.0.0 -> 4.0.1 * Ensure that priceSlippage fiat amounts are always shown in view-quote.js (#10762) * Ensure that the approval fee in the swaps custom gas modal is in network specific currency (#10763) * Use network specific swaps contract address when checking swap contract token approval (#10774) * Set the BSC_CONTRACT_ADDRESS to lowercase (#10800) * Ensure correct primary currency image is displayed on home screen and token list (#10777) * [skip e2e] Update changelog for v9.3.0 (#10740) * Version v9.3.0 * [skip e2e] Update changelog for v9.3.0 (#10803) Co-authored-by: Dan J Miller <danjm.com@gmail.com> Co-authored-by: ryanml <ryanlanese@gmail.com> Co-authored-by: David Walsh <davidwalsh83@gmail.com> Co-authored-by: MetaMask Bot <metamaskbot@users.noreply.github.com>
4 years ago
"message": "Varios tokens pueden usar el mismo nombre y símbolo. Verifique $1 para verificar que este es el token que está buscando.",
"description": "This appears in a tooltip next to the verifyThisTokenOn message. It gives the user more information about why they should check the token on a block explorer. $1 will be the name or url of the block explorer, which will be the translation of 'etherscan' or a block explorer url specified for a custom network."
},
"swapViewToken": {
"message": "Ver $1"
},
"swapYourTokenBalance": {
"message": "$1 $2 están disponibles para intercambiar",
"description": "Tells the user how much of a token they have in their balance. $1 is a decimal number amount of tokens, and $2 is a token symbol"
},
"swapZeroSlippage": {
"message": "Deslizamiento 0%"
},
"swapsAdvancedOptions": {
"message": "Opciones Avanzadas"
},
"swapsExcessiveSlippageWarning": {
"message": "La cantidad de deslizamiento es demasiado alta y resultará en una mala tasa. Reduzca su tolerancia al deslizamiento a un valor inferior al 15%."
},
"swapsMaxSlippage": {
"message": "Tolerancia al Deslizamiento"
},
"swapsNotEnoughForTx": {
"message": "No hay suficiente $1 para completar esta transacción",
"description": "Tells the user that they don't have enough of a token for a proposed swap. $1 is a token symbol"
},
"swapsViewInActivity": {
"message": "Ver en actividad"
},
"switchNetworks": {
"message": "Cambiar de Red"
},
"switchToThisAccount": {
"message": "Cambiar a esta cuenta"
},
"symbol": {
"message": "Símbolo"
},
"symbolBetweenZeroTwelve": {
"message": "El símbolo debe tener 11 caracteres o menos."
},
"syncWithMobile": {
"message": "Sincronizar con el móvil"
},
"syncWithMobileBeCareful": {
"message": "Asegúrese de que nadie más esté mirando su pantalla cuando escanee este código"
},
"syncWithMobileComplete": {
"message": "Tus datos se han sincronizado correctamente. ¡Disfruta de la aplicación móvil MetaMask!"
},
"syncWithMobileDesc": {
"message": "Puede sincronizar sus cuentas e información con su dispositivo móvil. Abra la aplicación móvil MetaMask, vaya a \"Configuración\" y toque \"Sincronizar desde la extensión del navegador\""
},
"syncWithMobileDescNewUsers": {
"message": "Si acaba de abrir la aplicación móvil MetaMask por primera vez, simplemente siga los pasos en su teléfono."
},
"syncWithMobileScanThisCode": {
"message": "Escanee este código con su aplicación móvil MetaMask"
},
"syncWithMobileTitle": {
"message": "Sincronizar con el móvil"
},
"syncWithThreeBox": {
"message": "Sincronizar datos con 3Box (experimental)"
},
"syncWithThreeBoxDescription": {
"message": "Actívelo para hacer una copia de seguridad de su configuración con 3Box. Esta característica es actualmente experimental, úselo bajo su propio riesgo."
},
"syncWithThreeBoxDisabled": {
"message": "3Box se ha desactivado debido a un error durante la sincronización inicial"
},
"terms": {
"message": "Términos de Uso"
},
"termsOfService": {
"message": "Términos del Servicio"
},
"testFaucet": {
"message": "Grifo de prueba"
},
"thisWillCreate": {
"message": "Esto creará una cartera y una frase secreta de recuperación nuevas"
},
"tips": {
"message": "Consejos"
},
"to": {
"message": "Para"
},
"toAddress": {
"message": "Para: $1",
"description": "$1 is the address to include in the To label. It is typically shortened first using shortenAddress"
},
"toWithColon": {
"message": "Para:"
},
"token": {
"message": "Token"
},
"tokenAlreadyAdded": {
"message": "El token está actualmente agregado"
},
"tokenContractAddress": {
"message": "Dirección del contrato de token"
},
"tokenSymbol": {
"message": "Símbolo del token"
},
"total": {
"message": "Total"
},
"transaction": {
"message": "transacción"
},
"transactionCancelAttempted": {
"message": "Se intentó cancelar la transacción con una comisión de gas de $1, en $2"
},
"transactionCancelSuccess": {
"message": "La transacción se canceló con éxito en $2"
},
"transactionConfirmed": {
"message": "Se confirmó la transacción en $2."
},
"transactionCreated": {
"message": "Se creó una transacción con un valor de $1 en $2."
},
"transactionDropped": {
"message": "Transacción se redujo en $2."
},
"transactionError": {
"message": "Error en transacción. Se produjo una excepción en el código del contrato."
},
"transactionErrorNoContract": {
"message": "Intentando llamar una función en una dirección que no es del contrato."
},
"transactionErrored": {
"message": "La transacción tuvo un error."
},
"transactionFee": {
"message": "Comisión de la transacción"
},
"transactionResubmitted": {
"message": "Se volvió a proponer la transacción, aumentando la comisión de gas a $1, en $2"
},
"transactionSubmitted": {
"message": "Se propuso la transacción con una comisión de gas de $1, en $2."
},
"transactionUpdated": {
"message": "Se actualizó la transacción en $2."
},
"transfer": {
"message": "Transferir"
},
"transferBetweenAccounts": {
"message": "Transferir entre mis cuentas"
},
"transferFrom": {
"message": "Transferir Desde"
},
"troubleConnectingToWallet": {
"message": "Tuvimos problemas para conectarnos con su $1, intente revisar $2 y vuelva a intentarlo.",
"description": "$1 is the wallet device name; $2 is a link to wallet connection guide"
},
"troubleTokenBalances": {
"message": "Tuvimos problemas para cargar tus saldos de tokens. Puedes verlos ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "¿Confías en este sitio? Al otorgar este permiso, permite que $1 retire sus $2 y automatice las transacciones por usted.",
"description": "$1 is the url requesting permission and $2 is the symbol of the currency that the request is for"
},
"tryAgain": {
"message": "Vuelve a intentar"
},
"typePassword": {
"message": "Escribe tu contraseña"
},
"unapproved": {
"message": "No aprobado"
},
"units": {
"message": "unidades"
},
"unknown": {
"message": "Desconocido/a"
},
"unknownCameraError": {
"message": "Hubo un error al intentar acceder a la cámara. Por favor, vuelve a intentar..."
},
"unknownCameraErrorTitle": {
"message": "Uuups! Algo se estropeó..."
},
"unknownNetwork": {
"message": "Red privada desconocida"
},
"unknownQrCode": {
"message": "Error: No pudimos identificar ese código QR"
},
"unlimited": {
"message": "Ilimitado"
},
"unlock": {
"message": "Desbloquear"
},
"unlockMessage": {
"message": "Te espera toda la red descentralizada"
},
"updatedWithDate": {
"message": "Actualizado $1"
},
"urlErrorMsg": {
"message": "URI necesita el prefijo HTTP/HTTPS apropiado"
},
"urlExistsErrorMsg": {
"message": "La URL ya está presente en la lista existente de redes"
},
"usePhishingDetection": {
"message": "Usar la detección de phishing"
},
"usePhishingDetectionDescription": {
"message": "Mostrar una advertencia para los dominios de phishing dirigidos a los usuarios de Ethereum"
},
"usedByClients": {
"message": "Utilizado por una variedad de clientes diferentes"
},
"userName": {
"message": "Nombre de usuario"
},
"verifyThisTokenOn": {
"message": "Verifica este token en $1",
"description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\""
},
"viewAccount": {
"message": "Ver cuenta"
},
"viewContact": {
"message": "Ver Contacto"
},
"viewOnCustomBlockExplorer": {
"message": "Ver en $1"
},
"viewOnEtherscan": {
"message": "Ver en Etherscan"
},
"viewinExplorer": {
"message": "Ver en el Explorador"
},
"visitWebSite": {
"message": "Visita nuestro sitio web"
},
"walletConnectionGuide": {
"message": "nuestra guía de monedero físico"
},
"walletSeed": {
"message": "Frase secreta de recuperación"
},
"walletSeedRestore": {
"message": "Frase secreta de recuperación de la cartera"
},
"web3ShimUsageNotification": {
"message": "Notamos que el sitio web actual intentó utilizar la API window.web3 eliminada. Si el sitio parece estar roto, haga clic en $1 para obtener más información.",
"description": "$1 is a clickable link."
},
"welcome": {
"message": "Bienvenido a MetaMask"
},
"welcomeBack": {
"message": "¡Bienvenido de nuevo!"
},
"whatsThis": {
"message": "¿Qué es esto?"
},
"writePhrase": {
"message": "Escriba esta frase en una hoja de papel y guárdela en un lugar seguro. Si desea aún más seguridad, anótelo en varias hojas de papel y guárdelas en 2 o 3 ubicaciones diferentes."
},
"xOfY": {
"message": "$1 de $2",
"description": "$1 and $2 are intended to be two numbers, where $2 is a total, and $1 is a count towards that total"
},
"yesLetsTry": {
"message": "Sí, probemos"
},
"youNeedToAllowCameraAccess": {
"message": "Tienes que permitir acceso a la cámara para usar esta función."
},
"youSign": {
"message": "Usted está firmando"
},
"yourPrivateSeedPhrase": {
"message": "Su frase secreta de recuperación privada"
},
"zeroGasPriceOnSpeedUpError": {
"message": "No hubo precio de gas al agilizar"
}
}