diff options
| author | Adam Soltys <[email protected]> | 2026-06-24 08:59:31 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-06-24 08:59:31 -0700 |
| commit | 17acf5ec80a0c0b0acc44a6a8373e154c68d4748 (patch) | |
| tree | a3fb56b85cc9cd21962ed64b084294096948d75b /src/locales/es.json | |
| parent | f59cca61111f38963099190bdbbce9a76bc3fafe (diff) | |
| download | coinosv3-17acf5ec80a0c0b0acc44a6a8373e154c68d4748.tar.gz coinosv3-17acf5ec80a0c0b0acc44a6a8373e154c68d4748.zip | |
Split translations into per-language files, lazy-loaded
Only English is bundled in index.html now; the other 19 languages are
emitted as dist/locales/<code>.json and fetched on demand when a visitor
actually uses one (via auto-detect, the picker, or ?lang=xx). This drops
index.html from ~511KB to ~318KB; a non-English visitor fetches just
their one ~8-10KB locale, which the service worker then caches for
offline use. t() falls back to English until a locale resolves.
- i18n.js keeps only en + a loadLocale() fetcher; locale data moved to
src/locales/*.json.
- build.js emits dist/locales/; dev.js serves /locales/<code>.json.
- Deploy hook publishes the locales/ subdir.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Diffstat (limited to 'src/locales/es.json')
| -rw-r--r-- | src/locales/es.json | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/src/locales/es.json b/src/locales/es.json new file mode 100644 index 0000000..fbdf21d --- /dev/null +++ b/src/locales/es.json @@ -0,0 +1,145 @@ +{ + "passphrase": "Frase de contraseña", + "howItWorks": "Cómo funciona", + "installApp": "Instalar app", + "hiwBasicsTitle": "Lo básico", + "hiwBasics1": "Cuando creas una billetera, la página genera doce palabras al azar. Esas palabras son la clave de tu billetera. Cualquiera que las tenga puede gastar las monedas, así que anótalas en papel y guárdalas en un lugar al que solo tú puedas acceder.", + "hiwBasics2": "Si pierdes las doce palabras y no tienes una copia de seguridad, las monedas se pierden para siempre. No hay enlace para restablecer ni nadie a quien llamar, así que respáldalas antes de poner dinero.", + "hiwBasics3": "No hay servidor ni cuenta. Toda la app es una única página que se ejecuta en tu navegador, así que nadie custodia tus monedas y ningún servidor ve jamás tus claves. Para mostrar tu saldo e historial, lee desde un explorador de bloques público (mempool.space por defecto, o tu propio nodo si configuras uno en Ajustes).", + "hiwBasics4": "Incluso puedes guardar esta página y abrirla directamente desde tu computadora sin conexión a internet. Sigue funcionando sin conexión.", + "hiwBasics5": "Sigue los estándares habituales de Bitcoin (una frase BIP39 de 12 palabras y claves SegWit nativas BIP84), así que si este sitio desapareciera algún día, puedes restaurar la misma frase en Sparrow, Electrum o cualquier otra billetera estándar y tus monedas estarán justo ahí.", + "hiwTribute": "El nombre Hal Wallet es un homenaje al legendario cypherpunk y pionero de Bitcoin, Hal Finney (1956–2014).", + "signExport": "Firmar y (transmitir en otro lugar)", + "scanQr": "Escanear QR", + "scanHint": "Apunta la cámara a un código QR", + "scanNoCamera": "No se pudo acceder a la cámara.", + "scanNoDecoder": "El escaneo de QR necesita conexión la primera vez que se usa.", + "scanUnrecognized": "No se pudo leer una dirección de Bitcoin de ese QR.", + "broadcastScanned": "¿Transmitir la transacción?", + "broadcastNow": "Transmitir", + "scanOffline": "Estás sin conexión — vuelve a conectarte para transmitir esta transacción.", + "loadingHistory": "Cargando transacciones…", + "explorer": "Explorador de bloques", + "explorerDesc": "El servidor que esta billetera consulta para saldos e historial. Apúntalo a tu propio nodo para máxima privacidad.", + "explorerUrl": "URL del servidor", + "explorerUrlHint": "Base REST de Esplora / electrs, p. ej. https://mempool.space/api", + "deviceSync": "Sincronización de dispositivos", + "deviceSyncDesc": "Mantén esta billetera sincronizada entre tus dispositivos guardando una copia cifrada en un relay de Nostr — solo un dispositivo con tu semilla puede leerla. Desactívala para mantener todo en este dispositivo.", + "syncAcross": "Sincronizar entre dispositivos", + "syncOn": "Activado", + "syncOff": "Desactivado", + "relaysLabel": "Relays", + "relaysHint": "Una URL wss:// por línea.", + "home": "Inicio", + "logout": "Cerrar sesión", + "createNew": "Crear nuevo", + "importExisting": "Importar existente", + "genIntro": "Genera una nueva frase semilla de 12 palabras. Anótala. Es la única forma de recuperar este monedero.", + "generateSeed": "Generar frase semilla", + "writeDownWarn": "⚠ Anota estas 12 palabras en papel, en orden. Cualquiera que las tenga puede gastar tus fondos.", + "copyPhrase": "Copiar frase", + "regenerate": "Regenerar", + "verifyBackup": "Verificar copia", + "skipVerification": "Omitir verificación", + "confirmBackupIntro": "Confirma tu copia introduciendo las palabras solicitadas.", + "wordN": "Palabra n.º {n}", + "reenterPassphrase": "Reintroduce la contraseña", + "back": "← Atrás", + "openWallet": "Abrir monedero", + "wordsMismatch": "Esas palabras no coinciden con tu frase. Revisa tu copia.", + "passphraseMismatch": "Esa contraseña no coincide con la que introdujiste.", + "seedPhrase": "Frase semilla", + "seedPlaceholder": "escribe tus palabras separadas por espacios", + "optionalPassphrase": "Contraseña opcional", + "leaveBlank": "déjalo en blanco si no se usa", + "show": "Mostrar", + "hide": "Ocultar", + "invalidSeed": "Frase semilla no válida — revisa la ortografía y el orden.", + "keysNote": "Las claves nunca salen de tu navegador. Funciona sin conexión. Guarda esta página y ábrela desde tu equipo.", + "balance": "Saldo", + "pending": "Pendiente", + "tabReceive": "Recibir", + "tabSend": "Enviar", + "tabHistory": "Historial", + "tabSettings": "Ajustes", + "copyAddress": "Copiar dirección", + "paymentReceived": "¡Pago recibido!", + "tapToProceed": "Toca en cualquier lugar para continuar", + "recipient": "Destinatario", + "recipients": "Destinatarios", + "max": "Máx", + "feeRate": "Tarifa", + "feeEconomy": "Económica", + "feeNormal": "Normal", + "feePriority": "Prioritaria", + "feeCustom": "Personalizada", + "selectedRate": "Tarifa elegida: {n} sat/vB", + "coinSelection": "Selección de monedas", + "automatic": "Automática", + "manual": "Manual", + "noCoins": "No hay monedas disponibles.", + "nSelected": "{n} seleccionadas", + "addRecipient": "+ Añadir destinatario", + "reviewTx": "Revisar transacción", + "remove": "Quitar", + "enterRecipientAddr": "Introduce una dirección de destino.", + "enterAddrForN": "Introduce una dirección para el destinatario {n}.", + "enterValidAmtForN": "Introduce un importe válido para el destinatario {n}.", + "selectCoin": "Selecciona al menos una moneda para gastar.", + "networkFee": "Comisión de red", + "offlineSignNote": "Sin conexión: firma ahora y difunde la transacción desde un dispositivo conectado.", + "signBroadcast": "Firmar y difundir", + "signTx": "Firmar transacción", + "broadcastFailed": "Falló la difusión: {msg}", + "signingFailed": "Falló la firma: {msg}", + "done": "Listo", + "txSignedNote": "✓ Transacción firmada. Difunde el código de abajo desde un dispositivo conectado (p. ej. mempool.space → Broadcast).", + "transactionId": "ID de transacción", + "signedTxRaw": "Transacción firmada (código)", + "copyHex": "Copiar código", + "downloadLabel": "Descargar", + "showQrAirgap": "Mostrar QR (para transferencia sin conexión)", + "txBroadcast": "✓ ¡Transacción difundida!", + "copyTxid": "Copiar ID de transacción", + "viewOnMempool": "Ver en mempool.space ↗", + "noTxYet": "Aún no hay transacciones.", + "received": "Recibido", + "sent": "Enviado", + "pendingTag": "⏳ pendiente", + "awaitingConfirmation": "esperando confirmación", + "feeShort": "comisión {x}", + "historyOffline": "El historial no está disponible sin conexión.", + "status": "Estado", + "confirmed": "Confirmada", + "confirmedTag": "confirmada", + "pendingInMempool": "Pendiente (en mempool)", + "block": "Bloque", + "date": "Fecha", + "copyId": "Copiar ID", + "backToHistory": "← Volver al historial", + "recoveryPhrase": "Frase de recuperación", + "recoveryWarn": "⚠ Cualquiera que vea estas palabras puede robar tus fondos. Asegúrate de que nadie mire antes de mostrarlas.", + "bip39Passphrase": "Contraseña", + "copyPassphrase": "Copiar contraseña", + "revealRecovery": "Mostrar frase de recuperación", + "offlineTransfer": "Transferencia sin conexión", + "offlineTransferDesc": "Exporta tus monedas en un dispositivo conectado, luego importa el archivo en uno sin conexión (con este monedero + semilla) para firmar sin internet.", + "exportSnapshot": "⤓ Exportar copia", + "importSnapshot": "Importar copia…", + "rescan": "Reescanear", + "rescanDesc": "Tu dirección actual se actualiza automáticamente. Reescanea solo si enviaste un pago a una dirección antigua (reutilizada) y no aparece.", + "rescanWallet": "Reescanear monedero", + "scanning": "Escaneando…", + "language": "Idioma", + "offlineBanner": "Sin conexión a la red — trabajando sin conexión. Importa una copia en Ajustes para cargar monedas.", + "retry": "Reintentar", + "copied": "Copiado al portapapeles", + "snapshotExported": "Copia exportada", + "importedNCoins": "{n} moneda(s) importada(s)", + "unmatchedSuffix": " · {n} dirección(es) no pertenecen a este monedero", + "importFailed": "Falló la importación: {msg}", + "copy": "Copiar", + "switchUnit": "Cambiar BTC / sats", + "footerMadeBy": "hecho por", + "footerSourceOn": "código disponible en" +}
\ No newline at end of file |
