diff --git a/apple/VniDrop/Resources/Info.plist b/apple/VniDrop/Resources/Info.plist index a3c74ad..aeec316 100644 --- a/apple/VniDrop/Resources/Info.plist +++ b/apple/VniDrop/Resources/Info.plist @@ -6,6 +6,7 @@ en fr + es CADisableMinimumFrameDurationOnPhone diff --git a/apple/VniDrop/Resources/Localizable.xcstrings b/apple/VniDrop/Resources/Localizable.xcstrings index 8f943bb..d020405 100644 --- a/apple/VniDrop/Resources/Localizable.xcstrings +++ b/apple/VniDrop/Resources/Localizable.xcstrings @@ -15,6 +15,12 @@ "value": "%1$@ %2$@ · %3$@" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "%1$@ %2$@ · %3$@" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -33,6 +39,12 @@ "value": "%1$@ · %2$@" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "%1$@ · %2$@" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -55,6 +67,12 @@ "value": "Report a bug" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Informar de un error" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -73,6 +91,12 @@ "value": "VniDrop moves files and folders straight from one device to another over the network, without uploading them to any file-hosting service. There’s no account to create, and no copy of your transfer is left in the cloud once you’re done." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "VniDrop transfiere archivos y carpetas directamente de un dispositivo a otro a través de la red, sin subirlos a ningún servicio de alojamiento. No hay que crear ninguna cuenta y no queda ninguna copia de su transferencia en la nube una vez que termina." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -91,6 +115,12 @@ "value": "A direct device-to-device transfer — your files go straight to the receiver." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Una transferencia directa entre dispositivos: sus archivos van directamente al destinatario." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -109,6 +139,12 @@ "value": "Connections are authenticated and end-to-end encrypted (via Iroh), and incoming files are verified by their content hash." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Las conexiones están autenticadas y cifradas de extremo a extremo (mediante Iroh), y los archivos entrantes se verifican por su huella de contenido." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -127,6 +163,12 @@ "value": "You decide who receives: approve each request, or open a transfer to anyone holding the invitation." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Usted decide quién recibe: apruebe cada solicitud o abra una transferencia a cualquiera que tenga la invitación." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -145,6 +187,12 @@ "value": "Account-free — there’s nothing to sign up for." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Sin cuenta: no hay nada que registrar." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -163,6 +211,12 @@ "value": "Open source, released under the Apache 2.0 license." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Código abierto, publicado bajo la licencia Apache 2.0." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -181,6 +235,12 @@ "value": "What VniDrop is" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Qué es VniDrop" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -199,6 +259,12 @@ "value": "Not cloud storage — no server holds your files, and nothing waits in the cloud after a transfer." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No es almacenamiento en la nube: ningún servidor guarda sus archivos y nada queda en la nube después de una transferencia." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -217,6 +283,12 @@ "value": "Not public broadcasting — an invitation is a private access link, not an announcement to everyone nearby." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No es difusión pública: una invitación es un enlace de acceso privado, no un anuncio para todos los que estén cerca." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -235,6 +307,12 @@ "value": "Not a sync or backup service." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No es un servicio de sincronización ni de copia de seguridad." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -253,6 +331,12 @@ "value": "What VniDrop isn’t" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Qué no es VniDrop" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -271,6 +355,12 @@ "value": "License" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Licencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -289,6 +379,12 @@ "value": "Privacy policy" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Política de privacidad" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -307,6 +403,12 @@ "value": "Invitations are capabilities. Treat a QR code, NFC tag, or .vnd file like a private access link and share it only with the people you intend — especially with “Anyone with this transfer.”" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Las invitaciones son claves de acceso. Trate un código QR, una etiqueta NFC o un archivo .vnd como un enlace de acceso privado y compártalo solo con las personas previstas, especialmente con «Cualquiera que tenga esta transferencia»." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -325,6 +427,12 @@ "value": "Deny by default — VniDrop serves only the content of an active share and rejects unknown requests." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Denegación por defecto: VniDrop solo sirve el contenido de un recurso compartido activo y rechaza las solicitudes desconocidas." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -343,6 +451,12 @@ "value": "Received files are saved on your device and never silently overwrite an existing file." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Los archivos recibidos se guardan en su dispositivo y nunca sobrescriben un archivo existente." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -361,6 +475,12 @@ "value": "Privacy policy" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Política de privacidad" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -379,6 +499,12 @@ "value": "If two devices can’t connect directly, the encrypted connection may be relayed. Relays forward encrypted packets only; they never store your files." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Si dos dispositivos no pueden conectarse directamente, la conexión cifrada puede retransmitirse. Los relés solo reenvían paquetes cifrados; nunca almacenan sus archivos." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -397,6 +523,12 @@ "value": "Privacy & security" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Privacidad y seguridad" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -415,6 +547,12 @@ "value": "Send files directly. Stay in control of who receives them." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Envíe archivos directamente. Mantenga el control de quién los recibe." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -433,6 +571,12 @@ "value": "About" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Acerca de" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -451,6 +595,12 @@ "value": "Match this device’s light or dark appearance." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Seguir la apariencia clara u oscura de este dispositivo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -469,6 +619,12 @@ "value": "Dark mode" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Modo oscuro" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -487,6 +643,12 @@ "value": "Light mode" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Modo claro" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -505,6 +667,12 @@ "value": "System" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Sistema" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -523,6 +691,12 @@ "value": "Appearance" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Apariencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -541,6 +715,12 @@ "value": "Receive request" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Solicitud de recepción" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -559,6 +739,12 @@ "value": "Device ID: %1$@" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "ID del dispositivo: %1$@" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -577,6 +763,12 @@ "value": "A nearby device" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Un dispositivo cercano" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -595,6 +787,12 @@ "value": "%1$d requests waiting" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "%1$d solicitudes en espera" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -613,6 +811,12 @@ "value": "%1$@ wants to receive “%2$@”." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "%1$@ quiere recibir «%2$@»." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -631,6 +835,12 @@ "value": "Battery level" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Nivel de batería" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -649,6 +859,12 @@ "value": "name@example.com" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "nombre@ejemplo.com" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -667,6 +883,12 @@ "value": "Contact email (optional)" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Correo de contacto (opcional)" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -685,6 +907,12 @@ "value": "Tell us what went wrong. We attach device info and optional recent logs (with sensitive values redacted)." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Cuéntenos qué salió mal. Adjuntamos información del dispositivo y, opcionalmente, registros recientes (con los valores sensibles ocultos)." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -703,6 +931,12 @@ "value": "Device information" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Información del dispositivo" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -721,6 +955,12 @@ "value": "Describe what you expected to happen" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Describa lo que esperaba que ocurriera" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -739,6 +979,12 @@ "value": "What did you expect?" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "¿Qué esperaba?" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -757,6 +1003,12 @@ "value": "Include recent logs" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Incluir registros recientes" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -775,6 +1027,12 @@ "value": "Helps us diagnose the issue. Sensitive values are redacted before sending." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Nos ayuda a diagnosticar el problema. Los valores sensibles se ocultan antes de enviarlos." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -793,6 +1051,12 @@ "value": "Log attachment size" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Tamaño del archivo de registros" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -811,6 +1075,12 @@ "value": "Please describe what you expected." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Describa lo que esperaba." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -829,6 +1099,12 @@ "value": "Please describe what happened." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Describa lo que ocurrió." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -847,6 +1123,12 @@ "value": "List the steps to reproduce the issue" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Enumere los pasos para reproducir el problema" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -865,6 +1147,12 @@ "value": "Steps to reproduce (optional)" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Pasos para reproducir (opcional)" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -883,6 +1171,12 @@ "value": "Submit report" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Enviar informe" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -901,6 +1195,12 @@ "value": "Could not submit the bug report. Try again later." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No se pudo enviar el informe de error. Inténtelo de nuevo más tarde." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -919,6 +1219,12 @@ "value": "Thanks — your bug report was recorded." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Gracias: su informe de error se ha registrado." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -937,6 +1243,12 @@ "value": "Submitting…" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Enviando…" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -955,6 +1267,12 @@ "value": "Describe what happened" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Describa lo que ocurrió" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -973,6 +1291,12 @@ "value": "What happened?" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "¿Qué ocurrió?" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -991,6 +1315,12 @@ "value": "Approve" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Aprobar" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1009,6 +1339,12 @@ "value": "Back" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Atrás" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1027,6 +1363,12 @@ "value": "Cancel" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Cancelar" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1045,6 +1387,12 @@ "value": "Cancel" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Cancelar" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1063,6 +1411,12 @@ "value": "Change files" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Cambiar archivos" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1081,6 +1435,12 @@ "value": "Choose files" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Elegir archivos" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1099,6 +1459,12 @@ "value": "Choose folder" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Elegir carpeta" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1117,6 +1483,12 @@ "value": "Clear" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Borrar" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1135,6 +1507,12 @@ "value": "Close" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Cerrar" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1153,6 +1531,12 @@ "value": "New transfer" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Nueva transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1171,6 +1555,12 @@ "value": "Delete transfer" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Eliminar transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1189,6 +1579,12 @@ "value": "Save .vnd file" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Guardar archivo .vnd" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1207,6 +1603,12 @@ "value": "Share invitation" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Compartir invitación" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1225,6 +1627,12 @@ "value": "Open Settings" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Abrir Ajustes" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1243,6 +1651,12 @@ "value": "Receive" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Recibir" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1261,6 +1675,12 @@ "value": "Start receiving" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Empezar a recibir" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1279,6 +1699,12 @@ "value": "Refuse" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Rechazar" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1297,6 +1723,12 @@ "value": "Remove file" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Quitar archivo" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1315,6 +1747,12 @@ "value": "Use default" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Usar predeterminado" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1333,6 +1771,12 @@ "value": "Retry" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Reintentar" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1351,6 +1795,12 @@ "value": "Start sharing" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Empezar a compartir" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1369,6 +1819,12 @@ "value": "Preparing transfer…" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Preparando la transferencia…" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1387,6 +1843,12 @@ "value": "Show in Files" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Mostrar en Archivos" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1405,6 +1867,12 @@ "value": "Write to NFC tag" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Escribir en etiqueta NFC" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1423,6 +1891,12 @@ "value": "Device model" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Modelo del dispositivo" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1441,6 +1915,12 @@ "value": "Device name" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Nombre del dispositivo" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1459,6 +1939,12 @@ "value": "Send anonymous crash reports and usage events so we can improve VniDrop. You can turn this off anytime. Invitations, file paths, and transfer contents are never included." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Enviar informes de fallos y eventos de uso anónimos para ayudarnos a mejorar VniDrop. Puede desactivarlo en cualquier momento. Las invitaciones, las rutas de archivos y el contenido de las transferencias nunca se incluyen." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1477,6 +1963,12 @@ "value": "Diagnostics sharing is off." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "El uso compartido de diagnósticos está desactivado." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1495,6 +1987,12 @@ "value": "Diagnostics sharing is on." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "El uso compartido de diagnósticos está activado." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1513,6 +2011,12 @@ "value": "Share diagnostics" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Compartir diagnósticos" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1531,6 +2035,12 @@ "value": "Camera access is required to scan a QR code." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Se necesita acceso a la cámara para escanear un código QR." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1549,6 +2059,12 @@ "value": "Could not load device information." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No se pudo cargar la información del dispositivo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1567,6 +2083,12 @@ "value": "VniDrop could not access the selected files or folder. Check permissions and try again." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "VniDrop no pudo acceder a los archivos o la carpeta seleccionados. Compruebe los permisos e inténtelo de nuevo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1585,6 +2107,12 @@ "value": "Something went wrong. Try again." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Algo salió mal. Inténtelo de nuevo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1603,6 +2131,12 @@ "value": "VniDrop could not finish starting up. Close the app and try again." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "VniDrop no pudo terminar de iniciarse. Cierre la app e inténtelo de nuevo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1621,6 +2155,12 @@ "value": "This invitation could not be read. Ask the sender for a new one." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No se pudo leer esta invitación. Pida al remitente una nueva." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1639,6 +2179,12 @@ "value": "That invitation is empty. Try opening it again." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Esa invitación está vacía. Intente abrirla de nuevo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1657,6 +2203,12 @@ "value": "The native VniDrop library is missing from this build." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Falta la biblioteca nativa de VniDrop en esta versión." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1675,6 +2227,12 @@ "value": "This NFC tag could not be used. Try another tag." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No se pudo usar esta etiqueta NFC. Pruebe con otra." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1693,6 +2251,12 @@ "value": "The sender has not approved this transfer, or it was refused." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "El remitente no ha aprobado esta transferencia, o fue rechazada." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1711,6 +2275,12 @@ "value": "VniDrop could not save transfer data on this device." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "VniDrop no pudo guardar los datos de la transferencia en este dispositivo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1729,6 +2299,12 @@ "value": "Could not open the selected item. Try choosing it again." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No se pudo abrir el elemento seleccionado. Intente elegirlo de nuevo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1747,6 +2323,12 @@ "value": "Select at least one item to share." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Seleccione al menos un elemento para compartir." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1765,6 +2347,12 @@ "value": "VniDrop could not open its network sockets on this device." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "VniDrop no pudo abrir sus sockets de red en este dispositivo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1783,6 +2371,12 @@ "value": "VniDrop is still starting. Open the invitation again in a moment." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "VniDrop todavía se está iniciando. Vuelva a abrir la invitación en un momento." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1801,6 +2395,12 @@ "value": "The transfer could not be completed. Check your connection and try again." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No se pudo completar la transferencia. Compruebe su conexión e inténtelo de nuevo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1819,6 +2419,12 @@ "value": "Receiver name" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Nombre del destinatario" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1837,6 +2443,12 @@ "value": "Sender name" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Nombre del remitente" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1855,6 +2467,12 @@ "value": "Transfer name" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Nombre de la transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1873,6 +2491,12 @@ "value": "Display name" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Nombre visible" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1891,6 +2515,12 @@ "value": "Permission needed" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Permiso necesario" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1909,6 +2539,12 @@ "value": "Unavailable" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No disponible" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1927,6 +2563,12 @@ "value": "Checking folder…" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Comprobando carpeta…" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1945,6 +2587,12 @@ "value": "Ready" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Listo" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1963,6 +2611,12 @@ "value": "Files" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Archivos" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1981,6 +2635,12 @@ "value": "Size" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Tamaño" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -1999,6 +2659,12 @@ "value": "Status" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Estado" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2017,6 +2683,12 @@ "value": "Receive" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Recibir" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2035,6 +2707,12 @@ "value": "Send" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Enviar" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2053,6 +2731,12 @@ "value": "Settings" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Ajustes" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2071,6 +2755,12 @@ "value": "Network" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Red" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2089,6 +2779,12 @@ "value": "Get notified about new receive requests while VniDrop is in the background." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Reciba avisos sobre nuevas solicitudes de recepción cuando VniDrop está en segundo plano." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2107,6 +2803,12 @@ "value": "Notifications enabled." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Notificaciones activadas." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2125,6 +2827,12 @@ "value": "Allow notifications" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Permitir notificaciones" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2143,6 +2851,12 @@ "value": "Notifications are turned off for VniDrop. You can enable them in Settings." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Las notificaciones están desactivadas para VniDrop. Puede activarlas en Ajustes." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2161,6 +2875,12 @@ "value": "Could not open notification settings." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No se pudieron abrir los ajustes de notificaciones." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2179,6 +2899,12 @@ "value": "Notifications" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Notificaciones" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2197,6 +2923,12 @@ "value": "Notifications are not available on this device." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Las notificaciones no están disponibles en este dispositivo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2215,6 +2947,12 @@ "value": "Operating system" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Sistema operativo" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2233,6 +2971,12 @@ "value": "Save received transfers to" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Guardar las transferencias recibidas en" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2251,6 +2995,12 @@ "value": "Preferences" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Preferencias" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2269,6 +3019,12 @@ "value": "Cancelled" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Cancelado" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2287,6 +3043,12 @@ "value": "Completed" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Completado" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2305,6 +3067,12 @@ "value": "Connected" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Conectado" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2323,6 +3091,12 @@ "value": "Connecting" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Conectando" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2341,6 +3115,12 @@ "value": "Downloading" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Descargando" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2359,6 +3139,12 @@ "value": "Failed" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Fallido" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2377,6 +3163,12 @@ "value": "Getting ready" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Preparándose" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2395,6 +3187,12 @@ "value": "Transfer interrupted" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Transferencia interrumpida" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2413,6 +3211,12 @@ "value": "Preparing" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Preparando" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2431,6 +3235,12 @@ "value": "Ready" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Listo" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2449,6 +3259,12 @@ "value": "Receiving" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Recibiendo" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2467,6 +3283,12 @@ "value": "Requesting access" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Solicitando acceso" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2485,6 +3307,12 @@ "value": "Saving" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Guardando" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2503,6 +3331,12 @@ "value": "Sending" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Enviando" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2521,6 +3355,12 @@ "value": "Sending to %1$d" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Enviando a %1$d" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2539,6 +3379,12 @@ "value": "Ready to share" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Listo para compartir" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2557,6 +3403,12 @@ "value": "Working…" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Trabajando…" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2575,6 +3427,12 @@ "value": "Choose the invitation method available to you." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Elija el método de invitación de que disponga." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2593,6 +3451,12 @@ "value": "How would you like to connect?" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "¿Cómo quiere conectarse?" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2611,6 +3475,12 @@ "value": "Clear history" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Borrar historial" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2629,6 +3499,12 @@ "value": "All completed, failed, and cancelled receives will be removed from VniDrop’s history. Downloaded files will remain on this device." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Todas las recepciones completadas, fallidas y canceladas se eliminarán del historial de VniDrop. Los archivos descargados permanecerán en este dispositivo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2647,6 +3523,12 @@ "value": "Clear receive history?" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "¿Borrar el historial de recepción?" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2665,6 +3547,12 @@ "value": "Transfer received." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Transferencia recibida." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2683,6 +3571,12 @@ "value": "“%1$@” will be removed from VniDrop’s history. The downloaded file will remain on this device." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "«%1$@» se eliminará del historial de VniDrop. El archivo descargado permanecerá en este dispositivo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2701,6 +3595,12 @@ "value": "Delete from receive history" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Eliminar del historial de recepción" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2719,6 +3619,12 @@ "value": "Remove from history?" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "¿Quitar del historial?" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2737,6 +3643,12 @@ "value": "Open a VniDrop invitation, scan a QR code, or hold near an NFC tag." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Abra una invitación de VniDrop, escanee un código QR o acerque una etiqueta NFC." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2755,6 +3667,12 @@ "value": "Nothing received yet" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Aún no se ha recibido nada" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2773,6 +3691,12 @@ "value": "Receive history cleared." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Historial de recepción borrado." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2791,6 +3715,12 @@ "value": "History" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Historial" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2809,6 +3739,12 @@ "value": "Open a .vnd invitation" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Abrir una invitación .vnd" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2827,6 +3763,12 @@ "value": "Choose an invitation saved or shared to this device." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Elija una invitación guardada o compartida en este dispositivo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2845,6 +3787,12 @@ "value": "Read NFC tag" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Leer etiqueta NFC" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2863,6 +3811,12 @@ "value": "Hold this device near the sender’s invitation tag." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Acerque este dispositivo a la etiqueta de invitación del remitente." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2881,6 +3835,12 @@ "value": "Scan QR code" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Escanear código QR" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2899,6 +3859,12 @@ "value": "Use the camera to scan the sender’s VniDrop code." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Use la cámara para escanear el código de VniDrop del remitente." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2917,6 +3883,12 @@ "value": "Transfers you’ve received on this device." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Transferencias que ha recibido en este dispositivo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2935,6 +3907,12 @@ "value": "Hold near the NFC tag…" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Acerque a la etiqueta NFC…" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2953,6 +3931,12 @@ "value": "Couldn’t open VniDrop in Files." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No se pudo abrir VniDrop en Archivos." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2971,6 +3955,12 @@ "value": "Review transfer" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Revisar transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -2989,6 +3979,12 @@ "value": "Receive" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Recibir" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3007,6 +4003,12 @@ "value": "VniDrop transfer" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Transferencia de VniDrop" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3025,6 +4027,12 @@ "value": "Anyone with this transfer" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Cualquiera que tenga esta transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3043,6 +4051,12 @@ "value": "No approval is required. Only use this for items you are comfortable sharing." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No se requiere aprobación. Úselo solo para elementos que no le importe compartir." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3061,6 +4075,12 @@ "value": "Anyone with the invitation can download until you stop sharing. Do not use this for private or sensitive items." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Cualquiera que tenga la invitación puede descargar hasta que deje de compartir. No lo use para elementos privados o sensibles." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3079,6 +4099,12 @@ "value": "Ask before each download" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Preguntar antes de cada descarga" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3097,6 +4123,12 @@ "value": "You approve or refuse every new receiver." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Usted aprueba o rechaza a cada nuevo destinatario." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3115,6 +4147,12 @@ "value": "Who can receive it?" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "¿Quién puede recibirla?" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3133,6 +4171,12 @@ "value": "Select files or a folder from this device. You can review the selection before creating the transfer." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Seleccione archivos o una carpeta de este dispositivo. Podrá revisar la selección antes de crear la transferencia." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3151,6 +4195,12 @@ "value": "Choose what to share" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Elija qué compartir" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3169,6 +4219,12 @@ "value": "Create a transfer, decide who can receive it, then invite them with a QR code, NFC tag, or invitation file." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Cree una transferencia, decida quién puede recibirla y luego invite a esas personas con un código QR, una etiqueta NFC o un archivo de invitación." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3187,6 +4243,12 @@ "value": "Nothing shared yet" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Aún no se ha compartido nada" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3205,6 +4267,12 @@ "value": "Size unavailable" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Tamaño no disponible" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3223,6 +4291,12 @@ "value": "Folder" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Carpeta" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3241,6 +4315,12 @@ "value": "Create a new transfer" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Crear una nueva transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3259,6 +4339,12 @@ "value": "New transfer" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Nueva transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3277,6 +4363,12 @@ "value": "Review transfer" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Revisar transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3295,6 +4387,12 @@ "value": "%1$d files selected" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "%1$d archivos seleccionados" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3313,6 +4411,12 @@ "value": "Stop sharing" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Dejar de compartir" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3331,6 +4435,12 @@ "value": "This stops the transfer and interrupts anyone currently downloading it. It stays in your history as Stopped." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Esto detiene la transferencia e interrumpe a quien esté descargándola. Permanece en su historial como Detenida." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3349,6 +4459,12 @@ "value": "Transfers you’re sharing from this device." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Transferencias que está compartiendo desde este dispositivo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3367,6 +4483,12 @@ "value": "Send" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Enviar" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3385,6 +4507,12 @@ "value": "Transfer created." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Transferencia creada." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3403,6 +4531,12 @@ "value": "Transfer details" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Detalles de la transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3421,6 +4555,12 @@ "value": "Your transfers" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Sus transferencias" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3439,6 +4579,12 @@ "value": "Your name, where transfers are saved, appearance, and notifications." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Su nombre, dónde se guardan las transferencias, la apariencia y las notificaciones." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3457,6 +4603,12 @@ "value": "Settings" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Ajustes" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3475,6 +4627,12 @@ "value": "Dismiss" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Descartar" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3493,6 +4651,12 @@ "value": "Available" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Disponible" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3511,6 +4675,12 @@ "value": "Cancelled" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Cancelado" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3529,6 +4699,12 @@ "value": "Completed" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Completado" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3547,6 +4723,12 @@ "value": "Failed" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Fallido" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3565,6 +4747,12 @@ "value": "Preparing" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Preparando" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3583,6 +4771,12 @@ "value": "Receiving" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Recibiendo" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3601,6 +4795,12 @@ "value": "Stopped" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Detenido" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3619,6 +4819,12 @@ "value": "Calculating…" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Calculando…" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3637,6 +4843,12 @@ "value": "Delete all transfers" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Eliminar todas las transferencias" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3655,6 +4867,12 @@ "value": "This clears all sent and received transfer records from your history. Your received files are not deleted. Note: the transfer engine keeps its stored content, so Transfer data may not decrease. This can’t be undone." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Esto borra todos los registros de transferencias enviadas y recibidas de su historial. Sus archivos recibidos no se eliminan. Nota: el motor de transferencia conserva su contenido almacenado, por lo que los datos de transferencia pueden no disminuir. Esto no se puede deshacer." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3673,6 +4891,12 @@ "value": "Deleting…" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Eliminando…" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3691,6 +4915,12 @@ "value": "Transfer data is managed by the transfer engine — your history plus the content of files you’ve shared. The button below clears your transfer records; the engine keeps its stored content, so this value may not drop. Received files are your downloaded files and are never deleted here." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Los datos de transferencia los gestiona el motor de transferencia: su historial más el contenido de los archivos que ha compartido. El botón de abajo borra sus registros de transferencias; el motor conserva su contenido almacenado, por lo que este valor puede no bajar. Los archivos recibidos son los archivos que ha descargado y nunca se eliminan aquí." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3709,6 +4939,12 @@ "value": "Received files" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Archivos recibidos" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3727,6 +4963,12 @@ "value": "Temporary files" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Archivos temporales" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3745,6 +4987,12 @@ "value": "Storage" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Almacenamiento" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3763,6 +5011,12 @@ "value": "Total" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Total" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3781,6 +5035,12 @@ "value": "Transfer data" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Datos de transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3799,6 +5059,12 @@ "value": "All transfers deleted" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Todas las transferencias eliminadas" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3817,6 +5083,12 @@ "value": "See important updates for this transfer" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Vea las actualizaciones importantes de esta transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3835,6 +5107,12 @@ "value": "Activity" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Actividad" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3853,6 +5131,12 @@ "value": "“%1$@” will stop being shared and its transfer history will be removed from this device." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "«%1$@» dejará de compartirse y su historial de transferencia se eliminará de este dispositivo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3871,6 +5155,12 @@ "value": "Delete transfer?" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "¿Eliminar la transferencia?" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3889,6 +5179,12 @@ "value": "Transfer deleted." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Transferencia eliminada." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3907,6 +5203,12 @@ "value": "Deleting…" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Eliminando…" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3925,6 +5227,12 @@ "value": "Transfer details" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Detalles de la transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3943,6 +5251,12 @@ "value": "Receiver access approved" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Acceso del destinatario aprobado" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3961,6 +5275,12 @@ "value": "A receiver completed the transfer" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Un destinatario completó la transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3979,6 +5299,12 @@ "value": "Connecting to sender" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Conectando con el remitente" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -3997,6 +5323,12 @@ "value": "Downloading" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Descargando" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4015,6 +5347,12 @@ "value": "The transfer encountered a problem" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "La transferencia tuvo un problema" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4033,6 +5371,12 @@ "value": "Preparing your transfer" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Preparando su transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4051,6 +5395,12 @@ "value": "Ready to share" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Listo para compartir" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4069,6 +5419,12 @@ "value": "Receiver access refused" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Acceso del destinatario rechazado" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4087,6 +5443,12 @@ "value": "A receiver requested access" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Un destinatario solicitó acceso" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4105,6 +5467,12 @@ "value": "Saving" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Guardando" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4123,6 +5491,12 @@ "value": "Sharing stopped" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Se dejó de compartir" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4141,6 +5515,12 @@ "value": "Transfer updated" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Transferencia actualizada" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4171,6 +5551,24 @@ } } }, + "es": { + "variations": { + "plural": { + "one": { + "stringUnit": { + "state": "needs_review", + "value": "%1$d archivo" + } + }, + "other": { + "stringUnit": { + "state": "needs_review", + "value": "%1$d archivos" + } + } + } + } + }, "fr": { "variations": { "plural": { @@ -4201,6 +5599,12 @@ "value": "Invitation saved." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Invitación guardada." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4219,6 +5623,12 @@ "value": "Nearby device" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Dispositivo cercano" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4237,6 +5647,12 @@ "value": "NFC tag writing is not available on this device." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "La escritura de etiquetas NFC no está disponible en este dispositivo." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4255,6 +5671,12 @@ "value": "Hold your device near a writable NFC tag." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Acerque su dispositivo a una etiqueta NFC grabable." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4273,6 +5695,12 @@ "value": "Invitation written to the NFC tag." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Invitación escrita en la etiqueta NFC." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4291,6 +5719,12 @@ "value": "There is no activity to show yet." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Todavía no hay actividad que mostrar." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4309,6 +5743,12 @@ "value": "Nobody has requested this transfer yet." } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Nadie ha solicitado aún esta transferencia." + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4327,6 +5767,12 @@ "value": "Approved — waiting for completion" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Aprobado: esperando a que se complete" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4345,6 +5791,12 @@ "value": "Received successfully" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Recibido correctamente" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4363,6 +5815,12 @@ "value": "Request expired" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Solicitud caducada" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4381,6 +5839,12 @@ "value": "Request refused" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Solicitud rechazada" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4399,6 +5863,12 @@ "value": "Waiting for your approval" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Esperando su aprobación" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4417,6 +5887,12 @@ "value": "Status unavailable" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Estado no disponible" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4435,6 +5911,12 @@ "value": "%1$d completed" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "%1$d completados" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4453,6 +5935,12 @@ "value": "Requests, approvals, and completed deliveries" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Solicitudes, aprobaciones y entregas completadas" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4471,6 +5959,12 @@ "value": "%1$d waiting" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "%1$d en espera" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4489,6 +5983,12 @@ "value": "Receivers" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Destinatarios" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4507,6 +6007,12 @@ "value": "Scan with VniDrop to receive this transfer" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Escanee con VniDrop para recibir esta transferencia" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4525,6 +6031,12 @@ "value": "QR code, invitation file, and nearby options" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Código QR, archivo de invitación y opciones cercanas" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4543,6 +6055,12 @@ "value": "Share" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Compartir" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4561,6 +6079,12 @@ "value": "Not available" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "No disponible" + } + }, "fr": { "stringUnit": { "state": "needs_review", @@ -4579,6 +6103,12 @@ "value": "App version" } }, + "es": { + "stringUnit": { + "state": "needs_review", + "value": "Versión de la app" + } + }, "fr": { "stringUnit": { "state": "needs_review", diff --git a/localization/strings.json b/localization/strings.json index a375f30..2ca208c 100644 --- a/localization/strings.json +++ b/localization/strings.json @@ -3,7 +3,8 @@ "sourceLanguage": "en", "supportedLanguages": [ "en", - "fr" + "fr", + "es" ], "strings": { "%@": { @@ -33,7 +34,8 @@ ], "translations": { "en": "{arg1} {arg2} · {arg3}", - "fr": "{arg1} {arg2} · {arg3}" + "fr": "{arg1} {arg2} · {arg3}", + "es": "{arg1} {arg2} · {arg3}" } }, "%@ · %@": { @@ -53,7 +55,8 @@ ], "translations": { "en": "{arg1} · {arg2}", - "fr": "{arg1} · {arg2}" + "fr": "{arg1} · {arg2}", + "es": "{arg1} · {arg2}" } }, "%@%%": { @@ -66,196 +69,224 @@ "context": "About screen: button/link that opens the bug report form.", "translations": { "en": "Report a bug", - "fr": "Signaler un bug" + "fr": "Signaler un bug", + "es": "Informar de un error" } }, "about_description": { "context": "About screen: intro paragraph describing what VniDrop does.", "translations": { "en": "VniDrop moves files and folders straight from one device to another over the network, without uploading them to any file-hosting service. There’s no account to create, and no copy of your transfer is left in the cloud once you’re done.", - "fr": "VniDrop transfère fichiers et dossiers directement d’un appareil à un autre sur le réseau, sans les téléverser vers un service d’hébergement. Aucun compte à créer, et aucune copie de votre transfert ne reste dans le cloud une fois terminé." + "fr": "VniDrop transfère fichiers et dossiers directement d’un appareil à un autre sur le réseau, sans les téléverser vers un service d’hébergement. Aucun compte à créer, et aucune copie de votre transfert ne reste dans le cloud une fois terminé.", + "es": "VniDrop transfiere archivos y carpetas directamente de un dispositivo a otro a través de la red, sin subirlos a ningún servicio de alojamiento. No hay que crear ninguna cuenta y no queda ninguna copia de su transferencia en la nube una vez que termina." } }, "about_is_direct": { "context": "About screen, 'What VniDrop is' list: point about direct device-to-device transfer.", "translations": { "en": "A direct device-to-device transfer — your files go straight to the receiver.", - "fr": "Un transfert direct d’appareil à appareil — vos fichiers vont droit au destinataire." + "fr": "Un transfert direct d’appareil à appareil — vos fichiers vont droit au destinataire.", + "es": "Una transferencia directa entre dispositivos: sus archivos van directamente al destinatario." } }, "about_is_encrypted": { "context": "About screen, 'What VniDrop is' list: point about encrypted, verified connections.", "translations": { "en": "Connections are authenticated and end-to-end encrypted (via Iroh), and incoming files are verified by their content hash.", - "fr": "Les connexions sont authentifiées et chiffrées de bout en bout (via Iroh), et les fichiers entrants sont vérifiés par leur empreinte de contenu." + "fr": "Les connexions sont authentifiées et chiffrées de bout en bout (via Iroh), et les fichiers entrants sont vérifiés par leur empreinte de contenu.", + "es": "Las conexiones están autenticadas y cifradas de extremo a extremo (mediante Iroh), y los archivos entrantes se verifican por su huella de contenido." } }, "about_is_in_control": { "context": "About screen, 'What VniDrop is' list: point about controlling who receives.", "translations": { "en": "You decide who receives: approve each request, or open a transfer to anyone holding the invitation.", - "fr": "Vous décidez qui reçoit : approuvez chaque demande, ou ouvrez un transfert à toute personne disposant de l’invitation." + "fr": "Vous décidez qui reçoit : approuvez chaque demande, ou ouvrez un transfert à toute personne disposant de l’invitation.", + "es": "Usted decide quién recibe: apruebe cada solicitud o abra una transferencia a cualquiera que tenga la invitación." } }, "about_is_no_account": { "context": "About screen, 'What VniDrop is' list: point about being account-free.", "translations": { "en": "Account-free — there’s nothing to sign up for.", - "fr": "Sans compte — il n’y a rien à créer." + "fr": "Sans compte — il n’y a rien à créer.", + "es": "Sin cuenta: no hay nada que registrar." } }, "about_is_open": { "context": "About screen, 'What VniDrop is' list: point about being open source.", "translations": { "en": "Open source, released under the Apache 2.0 license.", - "fr": "Open source, publié sous licence Apache 2.0." + "fr": "Open source, publié sous licence Apache 2.0.", + "es": "Código abierto, publicado bajo la licencia Apache 2.0." } }, "about_is_title": { "context": "About screen: section heading for the 'What VniDrop is' list.", "translations": { "en": "What VniDrop is", - "fr": "Ce qu’est VniDrop" + "fr": "Ce qu’est VniDrop", + "es": "Qué es VniDrop" } }, "about_isnt_cloud": { "context": "About screen, 'What VniDrop isn't' list: point about not being cloud storage.", "translations": { "en": "Not cloud storage — no server holds your files, and nothing waits in the cloud after a transfer.", - "fr": "Pas un stockage cloud — aucun serveur ne détient vos fichiers, et rien n’attend dans le cloud après un transfert." + "fr": "Pas un stockage cloud — aucun serveur ne détient vos fichiers, et rien n’attend dans le cloud après un transfert.", + "es": "No es almacenamiento en la nube: ningún servidor guarda sus archivos y nada queda en la nube después de una transferencia." } }, "about_isnt_public": { "context": "About screen, 'What VniDrop isn't' list: point about invitations not being public broadcasts.", "translations": { "en": "Not public broadcasting — an invitation is a private access link, not an announcement to everyone nearby.", - "fr": "Pas une diffusion publique — une invitation est un lien d’accès privé, pas une annonce à tout le voisinage." + "fr": "Pas une diffusion publique — une invitation est un lien d’accès privé, pas une annonce à tout le voisinage.", + "es": "No es difusión pública: una invitación es un enlace de acceso privado, no un anuncio para todos los que estén cerca." } }, "about_isnt_sync": { "context": "About screen, 'What VniDrop isn't' list: point about not being sync/backup.", "translations": { "en": "Not a sync or backup service.", - "fr": "Pas un service de synchronisation ou de sauvegarde." + "fr": "Pas un service de synchronisation ou de sauvegarde.", + "es": "No es un servicio de sincronización ni de copia de seguridad." } }, "about_isnt_title": { "context": "About screen: section heading for the 'What VniDrop isn't' list.", "translations": { "en": "What VniDrop isn’t", - "fr": "Ce que VniDrop n’est pas" + "fr": "Ce que VniDrop n’est pas", + "es": "Qué no es VniDrop" } }, "about_license_label": { "context": "About screen: label for the license row.", "translations": { "en": "License", - "fr": "Licence" + "fr": "Licence", + "es": "Licencia" } }, "about_privacy": { "context": "About screen: link to the privacy policy.", "translations": { "en": "Privacy policy", - "fr": "Politique de confidentialité" + "fr": "Politique de confidentialité", + "es": "Política de privacidad" } }, "about_privacy_capability": { "context": "About screen, Privacy & security list: point that invitations are capabilities to share carefully.", "translations": { "en": "Invitations are capabilities. Treat a QR code, NFC tag, or .vnd file like a private access link and share it only with the people you intend — especially with “Anyone with this transfer.”", - "fr": "Les invitations sont des clés d’accès. Traitez un QR code, un tag NFC ou un fichier .vnd comme un lien d’accès privé et ne le partagez qu’avec les personnes visées — en particulier avec « Toute personne disposant de ce transfert »." + "fr": "Les invitations sont des clés d’accès. Traitez un QR code, un tag NFC ou un fichier .vnd comme un lien d’accès privé et ne le partagez qu’avec les personnes visées — en particulier avec « Toute personne disposant de ce transfert ».", + "es": "Las invitaciones son claves de acceso. Trate un código QR, una etiqueta NFC o un archivo .vnd como un enlace de acceso privado y compártalo solo con las personas previstas, especialmente con «Cualquiera que tenga esta transferencia»." } }, "about_privacy_deny": { "context": "About screen, Privacy & security list: point about denying unknown requests by default.", "translations": { "en": "Deny by default — VniDrop serves only the content of an active share and rejects unknown requests.", - "fr": "Refus par défaut — VniDrop ne sert que le contenu d’un partage actif et rejette les demandes inconnues." + "fr": "Refus par défaut — VniDrop ne sert que le contenu d’un partage actif et rejette les demandes inconnues.", + "es": "Denegación por defecto: VniDrop solo sirve el contenido de un recurso compartido activo y rechaza las solicitudes desconocidas." } }, "about_privacy_local": { "context": "About screen, Privacy & security list: point about received files staying local and never overwriting.", "translations": { "en": "Received files are saved on your device and never silently overwrite an existing file.", - "fr": "Les fichiers reçus sont enregistrés sur votre appareil et n’écrasent jamais un fichier existant." + "fr": "Les fichiers reçus sont enregistrés sur votre appareil et n’écrasent jamais un fichier existant.", + "es": "Los archivos recibidos se guardan en su dispositivo y nunca sobrescriben un archivo existente." } }, "about_privacy_policy_label": { "context": "About screen: label for the privacy policy row.", "translations": { "en": "Privacy policy", - "fr": "Politique de confidentialité" + "fr": "Politique de confidentialité", + "es": "Política de privacidad" } }, "about_privacy_relay": { "context": "About screen, Privacy & security list: point explaining encrypted relays.", "translations": { "en": "If two devices can’t connect directly, the encrypted connection may be relayed. Relays forward encrypted packets only; they never store your files.", - "fr": "Si deux appareils ne peuvent pas se connecter directement, la connexion chiffrée peut être relayée. Les relais ne transmettent que des paquets chiffrés ; ils ne stockent jamais vos fichiers." + "fr": "Si deux appareils ne peuvent pas se connecter directement, la connexion chiffrée peut être relayée. Les relais ne transmettent que des paquets chiffrés ; ils ne stockent jamais vos fichiers.", + "es": "Si dos dispositivos no pueden conectarse directamente, la conexión cifrada puede retransmitirse. Los relés solo reenvían paquetes cifrados; nunca almacenan sus archivos." } }, "about_privacy_title": { "context": "About screen: section heading for the Privacy & security list.", "translations": { "en": "Privacy & security", - "fr": "Confidentialité et sécurité" + "fr": "Confidentialité et sécurité", + "es": "Privacidad y seguridad" } }, "about_tagline": { "context": "About screen: short tagline under the app name.", "translations": { "en": "Send files directly. Stay in control of who receives them.", - "fr": "Envoyez des fichiers directement. Gardez le contrôle de qui les reçoit." + "fr": "Envoyez des fichiers directement. Gardez le contrôle de qui les reçoit.", + "es": "Envíe archivos directamente. Mantenga el control de quién los recibe." } }, "about_title": { "context": "About screen: navigation/screen title.", "translations": { "en": "About", - "fr": "À propos" + "fr": "À propos", + "es": "Acerca de" } }, "appearance_auto_description": { "context": "Settings > Appearance: description for the System/auto option.", "translations": { "en": "Match this device’s light or dark appearance.", - "fr": "Suivre l’apparence claire ou sombre de cet appareil." + "fr": "Suivre l’apparence claire ou sombre de cet appareil.", + "es": "Seguir la apariencia clara u oscura de este dispositivo." } }, "appearance_dark_mode": { "context": "Settings > Appearance: label for the dark theme option.", "translations": { "en": "Dark mode", - "fr": "Mode sombre" + "fr": "Mode sombre", + "es": "Modo oscuro" } }, "appearance_light_mode": { "context": "Settings > Appearance: label for the light theme option.", "translations": { "en": "Light mode", - "fr": "Mode clair" + "fr": "Mode clair", + "es": "Modo claro" } }, "appearance_system_mode": { "context": "Settings > Appearance: label for the follow-system option.", "translations": { "en": "System", - "fr": "Système" + "fr": "Système", + "es": "Sistema" } }, "appearance_title": { "context": "Settings > Appearance: section title.", "translations": { "en": "Appearance", - "fr": "Apparence" + "fr": "Apparence", + "es": "Apariencia" } }, "approval_connection_request": { "context": "Approval prompt: title when a receiver requests to download a transfer.", "translations": { "en": "Receive request", - "fr": "Demande de réception" + "fr": "Demande de réception", + "es": "Solicitud de recepción" } }, "approval_endpoint_id": { @@ -268,14 +299,16 @@ ], "translations": { "en": "Device ID: {arg1}", - "fr": "Identifiant de l’appareil : {arg1}" + "fr": "Identifiant de l’appareil : {arg1}", + "es": "ID del dispositivo: {arg1}" } }, "approval_nearby_device": { "context": "Approval prompt: fallback label for a requester with no display name.", "translations": { "en": "A nearby device", - "fr": "Un appareil à proximité" + "fr": "Un appareil à proximité", + "es": "Un dispositivo cercano" } }, "approval_pending_count": { @@ -288,7 +321,8 @@ ], "translations": { "en": "{count} requests waiting", - "fr": "{count} demandes en attente" + "fr": "{count} demandes en attente", + "es": "{count} solicitudes en espera" } }, "approval_request_body": { @@ -305,749 +339,856 @@ ], "translations": { "en": "{arg1} wants to receive “{arg2}”.", - "fr": "{arg1} souhaite recevoir « {arg2} »." + "fr": "{arg1} souhaite recevoir « {arg2} ».", + "es": "{arg1} quiere recibir «{arg2}»." } }, "battery_level_title": { "context": "Device information row: battery level label.", "translations": { "en": "Battery level", - "fr": "Niveau de batterie" + "fr": "Niveau de batterie", + "es": "Nivel de batería" } }, "bug_report_contact_hint": { "context": "Bug report form: placeholder text in the contact email field.", "translations": { "en": "name@example.com", - "fr": "nom@exemple.com" + "fr": "nom@exemple.com", + "es": "nombre@ejemplo.com" } }, "bug_report_contact_label": { "context": "Bug report form: label for the optional contact email field.", "translations": { "en": "Contact email (optional)", - "fr": "E-mail de contact (facultatif)" + "fr": "E-mail de contact (facultatif)", + "es": "Correo de contacto (opcional)" } }, "bug_report_description": { "context": "Bug report form: intro text explaining what gets attached.", "translations": { "en": "Tell us what went wrong. We attach device info and optional recent logs (with sensitive values redacted).", - "fr": "Dites-nous ce qui s’est passé. Nous joignons les infos de l’appareil et, en option, les journaux récents (valeurs sensibles masquées)." + "fr": "Dites-nous ce qui s’est passé. Nous joignons les infos de l’appareil et, en option, les journaux récents (valeurs sensibles masquées).", + "es": "Cuéntenos qué salió mal. Adjuntamos información del dispositivo y, opcionalmente, registros recientes (con los valores sensibles ocultos)." } }, "bug_report_device_section": { "context": "Bug report form: heading for the attached device information section.", "translations": { "en": "Device information", - "fr": "Informations sur l’appareil" + "fr": "Informations sur l’appareil", + "es": "Información del dispositivo" } }, "bug_report_expected_hint": { "context": "Bug report form: placeholder in the 'what did you expect' field.", "translations": { "en": "Describe what you expected to happen", - "fr": "Décrivez ce à quoi vous vous attendiez" + "fr": "Décrivez ce à quoi vous vous attendiez", + "es": "Describa lo que esperaba que ocurriera" } }, "bug_report_expected_label": { "context": "Bug report form: label for the expected-behavior field.", "translations": { "en": "What did you expect?", - "fr": "À quoi vous attendiez-vous ?" + "fr": "À quoi vous attendiez-vous ?", + "es": "¿Qué esperaba?" } }, "bug_report_include_logs": { "context": "Bug report form: toggle label to attach recent logs.", "translations": { "en": "Include recent logs", - "fr": "Inclure les journaux récents" + "fr": "Inclure les journaux récents", + "es": "Incluir registros recientes" } }, "bug_report_include_logs_description": { "context": "Bug report form: explanation under the include-logs toggle.", "translations": { "en": "Helps us diagnose the issue. Sensitive values are redacted before sending.", - "fr": "Nous aide à diagnostiquer le problème. Les valeurs sensibles sont masquées avant l’envoi." + "fr": "Nous aide à diagnostiquer le problème. Les valeurs sensibles sont masquées avant l’envoi.", + "es": "Nos ayuda a diagnosticar el problema. Los valores sensibles se ocultan antes de enviarlos." } }, "bug_report_logs_size": { "context": "Bug report form: label showing the size of the log attachment.", "translations": { "en": "Log attachment size", - "fr": "Taille de la pièce jointe des journaux" + "fr": "Taille de la pièce jointe des journaux", + "es": "Tamaño del archivo de registros" } }, "bug_report_missing_expected": { "context": "Bug report form: validation error when the expected-behavior field is empty.", "translations": { "en": "Please describe what you expected.", - "fr": "Veuillez décrire ce à quoi vous vous attendiez." + "fr": "Veuillez décrire ce à quoi vous vous attendiez.", + "es": "Describa lo que esperaba." } }, "bug_report_missing_what": { "context": "Bug report form: validation error when the what-happened field is empty.", "translations": { "en": "Please describe what happened.", - "fr": "Veuillez décrire ce qui s’est passé." + "fr": "Veuillez décrire ce qui s’est passé.", + "es": "Describa lo que ocurrió." } }, "bug_report_steps_hint": { "context": "Bug report form: placeholder in the steps-to-reproduce field.", "translations": { "en": "List the steps to reproduce the issue", - "fr": "Listez les étapes pour reproduire le problème" + "fr": "Listez les étapes pour reproduire le problème", + "es": "Enumere los pasos para reproducir el problema" } }, "bug_report_steps_label": { "context": "Bug report form: label for the optional steps-to-reproduce field.", "translations": { "en": "Steps to reproduce (optional)", - "fr": "Étapes pour reproduire (facultatif)" + "fr": "Étapes pour reproduire (facultatif)", + "es": "Pasos para reproducir (opcional)" } }, "bug_report_submit": { "context": "Bug report form: submit button.", "translations": { "en": "Submit report", - "fr": "Envoyer le rapport" + "fr": "Envoyer le rapport", + "es": "Enviar informe" } }, "bug_report_submit_failed": { "context": "Bug report form: error message when submission fails.", "translations": { "en": "Could not submit the bug report. Try again later.", - "fr": "Impossible d’envoyer le rapport de bug. Réessayez plus tard." + "fr": "Impossible d’envoyer le rapport de bug. Réessayez plus tard.", + "es": "No se pudo enviar el informe de error. Inténtelo de nuevo más tarde." } }, "bug_report_submitted": { "context": "Bug report form: confirmation message after a successful submission.", "translations": { "en": "Thanks — your bug report was recorded.", - "fr": "Merci — votre rapport de bug a été enregistré." + "fr": "Merci — votre rapport de bug a été enregistré.", + "es": "Gracias: su informe de error se ha registrado." } }, "bug_report_submitting": { "context": "Bug report form: progress label while the report is being sent.", "translations": { "en": "Submitting…", - "fr": "Envoi…" + "fr": "Envoi…", + "es": "Enviando…" } }, "bug_report_what_hint": { "context": "Bug report form: placeholder in the what-happened field.", "translations": { "en": "Describe what happened", - "fr": "Décrivez ce qui s’est passé" + "fr": "Décrivez ce qui s’est passé", + "es": "Describa lo que ocurrió" } }, "bug_report_what_label": { "context": "Bug report form: label for the what-happened field.", "translations": { "en": "What happened?", - "fr": "Que s’est-il passé ?" + "fr": "Que s’est-il passé ?", + "es": "¿Qué ocurrió?" } }, "button_approve": { "context": "Button: approve a receiver's request.", "translations": { "en": "Approve", - "fr": "Approuver" + "fr": "Approuver", + "es": "Aprobar" } }, "button_back": { "context": "Button: go back to the previous step/screen.", "translations": { "en": "Back", - "fr": "Retour" + "fr": "Retour", + "es": "Atrás" } }, "button_cancel": { "context": "Button: cancel the current action or dialog.", "translations": { "en": "Cancel", - "fr": "Annuler" + "fr": "Annuler", + "es": "Cancelar" } }, "button_cancel_receive": { "context": "Button: cancel an in-progress receive.", "translations": { "en": "Cancel", - "fr": "Annuler" + "fr": "Annuler", + "es": "Cancelar" } }, "button_change_files": { "context": "Button: change the selected files in the send flow.", "translations": { "en": "Change files", - "fr": "Modifier les fichiers" + "fr": "Modifier les fichiers", + "es": "Cambiar archivos" } }, "button_choose_files": { "context": "Button: open the file picker to choose files to send.", "translations": { "en": "Choose files", - "fr": "Choisir des fichiers" + "fr": "Choisir des fichiers", + "es": "Elegir archivos" } }, "button_choose_folder": { "context": "Button: open the folder picker (send selection or receive folder).", "translations": { "en": "Choose folder", - "fr": "Choisir un dossier" + "fr": "Choisir un dossier", + "es": "Elegir carpeta" } }, "button_clear": { "context": "Button: clear the current input or selection.", "translations": { "en": "Clear", - "fr": "Effacer" + "fr": "Effacer", + "es": "Borrar" } }, "button_close": { "context": "Button: close the current sheet/dialog.", "translations": { "en": "Close", - "fr": "Fermer" + "fr": "Fermer", + "es": "Cerrar" } }, "button_create_new_transfer": { "context": "Button: start creating a new transfer (Send tab).", "translations": { "en": "New transfer", - "fr": "Nouveau transfert" + "fr": "Nouveau transfert", + "es": "Nueva transferencia" } }, "button_delete_transfer": { "context": "Button: delete a transfer.", "translations": { "en": "Delete transfer", - "fr": "Supprimer le transfert" + "fr": "Supprimer le transfert", + "es": "Eliminar transferencia" } }, "button_download_invitation": { "context": "Button: save the invitation as a .vnd file.", "translations": { "en": "Save .vnd file", - "fr": "Enregistrer le fichier .vnd" + "fr": "Enregistrer le fichier .vnd", + "es": "Guardar archivo .vnd" } }, "button_native_share": { "context": "Button: open the OS share sheet to share the invitation.", "translations": { "en": "Share invitation", - "fr": "Partager l’invitation" + "fr": "Partager l’invitation", + "es": "Compartir invitación" } }, "button_open_settings": { "context": "Button: open the OS Settings app (e.g. for permissions).", "translations": { "en": "Open Settings", - "fr": "Ouvrir les Réglages" + "fr": "Ouvrir les Réglages", + "es": "Abrir Ajustes" } }, "button_receive": { "context": "Button: receive label (Receive action).", "translations": { "en": "Receive", - "fr": "Recevoir" + "fr": "Recevoir", + "es": "Recibir" } }, "button_receive_files": { "context": "Button: start receiving a transfer.", "translations": { "en": "Start receiving", - "fr": "Commencer à recevoir" + "fr": "Commencer à recevoir", + "es": "Empezar a recibir" } }, "button_refuse": { "context": "Button: refuse a receiver's request.", "translations": { "en": "Refuse", - "fr": "Refuser" + "fr": "Refuser", + "es": "Rechazar" } }, "button_remove_file": { "context": "Button: remove a single file from the send selection.", "translations": { "en": "Remove file", - "fr": "Retirer le fichier" + "fr": "Retirer le fichier", + "es": "Quitar archivo" } }, "button_reset_default": { "context": "Button: reset a setting to its default value.", "translations": { "en": "Use default", - "fr": "Valeur par défaut" + "fr": "Valeur par défaut", + "es": "Usar predeterminado" } }, "button_retry": { "context": "Button: retry after a failed operation.", "translations": { "en": "Retry", - "fr": "Réessayer" + "fr": "Réessayer", + "es": "Reintentar" } }, "button_share_file": { "context": "Button: start sharing the transfer (make it available).", "translations": { "en": "Start sharing", - "fr": "Commencer le partage" + "fr": "Commencer le partage", + "es": "Empezar a compartir" } }, "button_sharing_file": { "context": "Button: disabled/loading state while the transfer is being prepared.", "translations": { "en": "Preparing transfer…", - "fr": "Préparation du transfert…" + "fr": "Préparation du transfert…", + "es": "Preparando la transferencia…" } }, "button_show_in_files": { "context": "Button: reveal a received file in the Files app.", "translations": { "en": "Show in Files", - "fr": "Afficher dans Fichiers" + "fr": "Afficher dans Fichiers", + "es": "Mostrar en Archivos" } }, "button_write_nfc": { "context": "Button: write the invitation to an NFC tag.", "translations": { "en": "Write to NFC tag", - "fr": "Écrire sur un tag NFC" + "fr": "Écrire sur un tag NFC", + "es": "Escribir en etiqueta NFC" } }, "device_model_title": { "context": "Device information row: device model label.", "translations": { "en": "Device model", - "fr": "Modèle de l’appareil" + "fr": "Modèle de l’appareil", + "es": "Modelo del dispositivo" } }, "device_name_title": { "context": "Device information row: device name label.", "translations": { "en": "Device name", - "fr": "Nom de l’appareil" + "fr": "Nom de l’appareil", + "es": "Nombre del dispositivo" } }, "diagnostics_description": { "context": "Settings > Diagnostics: explanation of what anonymous diagnostics collect.", "translations": { "en": "Send anonymous crash reports and usage events so we can improve VniDrop. You can turn this off anytime. Invitations, file paths, and transfer contents are never included.", - "fr": "Envoyer des rapports de plantage et des événements d’utilisation anonymes pour nous aider à améliorer VniDrop. Vous pouvez désactiver cela à tout moment. Les invitations, chemins de fichiers et contenus de transfert ne sont jamais inclus." + "fr": "Envoyer des rapports de plantage et des événements d’utilisation anonymes pour nous aider à améliorer VniDrop. Vous pouvez désactiver cela à tout moment. Les invitations, chemins de fichiers et contenus de transfert ne sont jamais inclus.", + "es": "Enviar informes de fallos y eventos de uso anónimos para ayudarnos a mejorar VniDrop. Puede desactivarlo en cualquier momento. Las invitaciones, las rutas de archivos y el contenido de las transferencias nunca se incluyen." } }, "diagnostics_disabled_message": { "context": "Settings > Diagnostics: confirmation shown when diagnostics are turned off.", "translations": { "en": "Diagnostics sharing is off.", - "fr": "Le partage des diagnostics est désactivé." + "fr": "Le partage des diagnostics est désactivé.", + "es": "El uso compartido de diagnósticos está desactivado." } }, "diagnostics_enabled_message": { "context": "Settings > Diagnostics: confirmation shown when diagnostics are turned on.", "translations": { "en": "Diagnostics sharing is on.", - "fr": "Le partage des diagnostics est activé." + "fr": "Le partage des diagnostics est activé.", + "es": "El uso compartido de diagnósticos está activado." } }, "diagnostics_title": { "context": "Settings > Diagnostics: toggle title.", "translations": { "en": "Share diagnostics", - "fr": "Partager les diagnostics" + "fr": "Partager les diagnostics", + "es": "Compartir diagnósticos" } }, "error_camera": { "context": "Error: camera permission is needed to scan a QR code.", "translations": { "en": "Camera access is required to scan a QR code.", - "fr": "L’accès à la caméra est nécessaire pour scanner un QR code." + "fr": "L’accès à la caméra est nécessaire pour scanner un QR code.", + "es": "Se necesita acceso a la cámara para escanear un código QR." } }, "error_device_info": { "context": "Error: device information could not be loaded.", "translations": { "en": "Could not load device information.", - "fr": "Impossible de charger les informations de l’appareil." + "fr": "Impossible de charger les informations de l’appareil.", + "es": "No se pudo cargar la información del dispositivo." } }, "error_filesystem": { "context": "Error: the selected files/folder could not be accessed.", "translations": { "en": "VniDrop could not access the selected files or folder. Check permissions and try again.", - "fr": "VniDrop n’a pas pu accéder aux fichiers ou au dossier sélectionnés. Vérifiez les autorisations et réessayez." + "fr": "VniDrop n’a pas pu accéder aux fichiers ou au dossier sélectionnés. Vérifiez les autorisations et réessayez.", + "es": "VniDrop no pudo acceder a los archivos o la carpeta seleccionados. Compruebe los permisos e inténtelo de nuevo." } }, "error_generic": { "context": "Error: generic fallback message.", "translations": { "en": "Something went wrong. Try again.", - "fr": "Une erreur est survenue. Réessayez." + "fr": "Une erreur est survenue. Réessayez.", + "es": "Algo salió mal. Inténtelo de nuevo." } }, "error_initialization": { "context": "Error: the app failed to finish starting up.", "translations": { "en": "VniDrop could not finish starting up. Close the app and try again.", - "fr": "VniDrop n’a pas pu terminer son démarrage. Fermez l’app et réessayez." + "fr": "VniDrop n’a pas pu terminer son démarrage. Fermez l’app et réessayez.", + "es": "VniDrop no pudo terminar de iniciarse. Cierre la app e inténtelo de nuevo." } }, "error_invalid_ticket": { "context": "Error: the invitation/ticket could not be parsed.", "translations": { "en": "This invitation could not be read. Ask the sender for a new one.", - "fr": "Cette invitation n’a pas pu être lue. Demandez-en une nouvelle à l’expéditeur." + "fr": "Cette invitation n’a pas pu être lue. Demandez-en une nouvelle à l’expéditeur.", + "es": "No se pudo leer esta invitación. Pida al remitente una nueva." } }, "error_invitation_empty": { "context": "Error: the opened invitation contained no data.", "translations": { "en": "That invitation is empty. Try opening it again.", - "fr": "Cette invitation est vide. Essayez de l’ouvrir à nouveau." + "fr": "Cette invitation est vide. Essayez de l’ouvrir à nouveau.", + "es": "Esa invitación está vacía. Intente abrirla de nuevo." } }, "error_missing_native_library": { "context": "Error: the native library is missing from the build.", "translations": { "en": "The native VniDrop library is missing from this build.", - "fr": "La bibliothèque native de VniDrop est absente de cette version." + "fr": "La bibliothèque native de VniDrop est absente de cette version.", + "es": "Falta la biblioteca nativa de VniDrop en esta versión." } }, "error_nfc": { "context": "Error: the NFC tag could not be read/used.", "translations": { "en": "This NFC tag could not be used. Try another tag.", - "fr": "Ce tag NFC n’a pas pu être utilisé. Essayez-en un autre." + "fr": "Ce tag NFC n’a pas pu être utilisé. Essayez-en un autre.", + "es": "No se pudo usar esta etiqueta NFC. Pruebe con otra." } }, "error_permission": { "context": "Error: the transfer was not approved or was refused by the sender.", "translations": { "en": "The sender has not approved this transfer, or it was refused.", - "fr": "L’expéditeur n’a pas approuvé ce transfert, ou il a été refusé." + "fr": "L’expéditeur n’a pas approuvé ce transfert, ou il a été refusé.", + "es": "El remitente no ha aprobado esta transferencia, o fue rechazada." } }, "error_repository": { "context": "Error: transfer data could not be saved locally.", "translations": { "en": "VniDrop could not save transfer data on this device.", - "fr": "VniDrop n’a pas pu enregistrer les données de transfert sur cet appareil." + "fr": "VniDrop n’a pas pu enregistrer les données de transfert sur cet appareil.", + "es": "VniDrop no pudo guardar los datos de la transferencia en este dispositivo." } }, "error_selection_failed": { "context": "Error: the selected item could not be opened.", "translations": { "en": "Could not open the selected item. Try choosing it again.", - "fr": "Impossible d’ouvrir l’élément sélectionné. Essayez de le choisir à nouveau." + "fr": "Impossible d’ouvrir l’élément sélectionné. Essayez de le choisir à nouveau.", + "es": "No se pudo abrir el elemento seleccionado. Intente elegirlo de nuevo." } }, "error_share_empty": { "context": "Error: attempted to share with nothing selected.", "translations": { "en": "Select at least one item to share.", - "fr": "Sélectionnez au moins un élément à partager." + "fr": "Sélectionnez au moins un élément à partager.", + "es": "Seleccione al menos un elemento para compartir." } }, "error_socket_bind": { "context": "Error: the app could not open its network sockets.", "translations": { "en": "VniDrop could not open its network sockets on this device.", - "fr": "VniDrop n’a pas pu ouvrir ses sockets réseau sur cet appareil." + "fr": "VniDrop n’a pas pu ouvrir ses sockets réseau sur cet appareil.", + "es": "VniDrop no pudo abrir sus sockets de red en este dispositivo." } }, "error_starting_up": { "context": "Error: an invitation was opened before startup finished.", "translations": { "en": "VniDrop is still starting. Open the invitation again in a moment.", - "fr": "VniDrop démarre encore. Rouvrez l’invitation dans un instant." + "fr": "VniDrop démarre encore. Rouvrez l’invitation dans un instant.", + "es": "VniDrop todavía se está iniciando. Vuelva a abrir la invitación en un momento." } }, "error_transfer": { "context": "Error: the transfer could not be completed.", "translations": { "en": "The transfer could not be completed. Check your connection and try again.", - "fr": "Le transfert n’a pas pu être terminé. Vérifiez votre connexion et réessayez." + "fr": "Le transfert n’a pas pu être terminé. Vérifiez votre connexion et réessayez.", + "es": "No se pudo completar la transferencia. Compruebe su conexión e inténtelo de nuevo." } }, "field_receiver_name": { "context": "Text field label: the receiver's display name.", "translations": { "en": "Receiver name", - "fr": "Nom du destinataire" + "fr": "Nom du destinataire", + "es": "Nombre del destinatario" } }, "field_sender_name": { "context": "Text field label: the sender's display name.", "translations": { "en": "Sender name", - "fr": "Nom de l’expéditeur" + "fr": "Nom de l’expéditeur", + "es": "Nombre del remitente" } }, "field_transfer_name": { "context": "Text field label: the name given to a transfer.", "translations": { "en": "Transfer name", - "fr": "Nom du transfert" + "fr": "Nom du transfert", + "es": "Nombre de la transferencia" } }, "field_username": { "context": "Settings text field label: this device's display name.", "translations": { "en": "Display name", - "fr": "Nom d’affichage" + "fr": "Nom d’affichage", + "es": "Nombre visible" } }, "folder_status_permission_required": { "context": "Receive-folder status: permission is required to write to the chosen folder.", "translations": { "en": "Permission needed", - "fr": "Autorisation requise" + "fr": "Autorisation requise", + "es": "Permiso necesario" } }, "folder_status_unavailable": { "context": "Receive-folder status: the chosen folder is unavailable.", "translations": { "en": "Unavailable", - "fr": "Indisponible" + "fr": "Indisponible", + "es": "No disponible" } }, "folder_status_validating": { "context": "Receive-folder status: the folder is being checked.", "translations": { "en": "Checking folder…", - "fr": "Vérification du dossier…" + "fr": "Vérification du dossier…", + "es": "Comprobando carpeta…" } }, "folder_status_writable": { "context": "Receive-folder status: the folder is valid and writable.", "translations": { "en": "Ready", - "fr": "Prêt" + "fr": "Prêt", + "es": "Listo" } }, "metadata_files": { "context": "Transfer metadata label: number of files.", "translations": { "en": "Files", - "fr": "Fichiers" + "fr": "Fichiers", + "es": "Archivos" } }, "metadata_size": { "context": "Transfer metadata label: total size.", "translations": { "en": "Size", - "fr": "Taille" + "fr": "Taille", + "es": "Tamaño" } }, "metadata_status": { "context": "Transfer metadata label: current status.", "translations": { "en": "Status", - "fr": "Statut" + "fr": "Statut", + "es": "Estado" } }, "nav_receive": { "context": "Bottom navigation: Receive tab label.", "translations": { "en": "Receive", - "fr": "Recevoir" + "fr": "Recevoir", + "es": "Recibir" } }, "nav_send": { "context": "Bottom navigation: Send tab label.", "translations": { "en": "Send", - "fr": "Envoyer" + "fr": "Envoyer", + "es": "Enviar" } }, "nav_settings": { "context": "Bottom navigation: Settings tab label.", "translations": { "en": "Settings", - "fr": "Réglages" + "fr": "Réglages", + "es": "Ajustes" } }, "network_title": { "context": "Device information row: network label.", "translations": { "en": "Network", - "fr": "Réseau" + "fr": "Réseau", + "es": "Red" } }, "notifications_description": { "context": "Settings > Notifications: explanation of what notifications are used for.", "translations": { "en": "Get notified about new receive requests while VniDrop is in the background.", - "fr": "Soyez averti des nouvelles demandes de réception lorsque VniDrop est en arrière-plan." + "fr": "Soyez averti des nouvelles demandes de réception lorsque VniDrop est en arrière-plan.", + "es": "Reciba avisos sobre nuevas solicitudes de recepción cuando VniDrop está en segundo plano." } }, "notifications_enabled_message": { "context": "Settings > Notifications: confirmation when notifications are enabled.", "translations": { "en": "Notifications enabled.", - "fr": "Notifications activées." + "fr": "Notifications activées.", + "es": "Notificaciones activadas." } }, "notifications_local_title": { "context": "Settings > Notifications: label for the allow-notifications action.", "translations": { "en": "Allow notifications", - "fr": "Autoriser les notifications" + "fr": "Autoriser les notifications", + "es": "Permitir notificaciones" } }, "notifications_permission_denied": { "context": "Settings > Notifications: message when the OS permission is denied.", "translations": { "en": "Notifications are turned off for VniDrop. You can enable them in Settings.", - "fr": "Les notifications sont désactivées pour VniDrop. Vous pouvez les activer dans les Réglages." + "fr": "Les notifications sont désactivées pour VniDrop. Vous pouvez les activer dans les Réglages.", + "es": "Las notificaciones están desactivadas para VniDrop. Puede activarlas en Ajustes." } }, "notifications_settings_open_failed": { "context": "Settings > Notifications: error when the OS notification settings can't be opened.", "translations": { "en": "Could not open notification settings.", - "fr": "Impossible d’ouvrir les réglages de notifications." + "fr": "Impossible d’ouvrir les réglages de notifications.", + "es": "No se pudieron abrir los ajustes de notificaciones." } }, "notifications_title": { "context": "Settings > Notifications: section title.", "translations": { "en": "Notifications", - "fr": "Notifications" + "fr": "Notifications", + "es": "Notificaciones" } }, "notifications_unsupported": { "context": "Settings > Notifications: message when notifications aren't supported on the device.", "translations": { "en": "Notifications are not available on this device.", - "fr": "Les notifications ne sont pas disponibles sur cet appareil." + "fr": "Les notifications ne sont pas disponibles sur cet appareil.", + "es": "Las notificaciones no están disponibles en este dispositivo." } }, "os_version_title": { "context": "Device information row: operating system version label.", "translations": { "en": "Operating system", - "fr": "Système d’exploitation" + "fr": "Système d’exploitation", + "es": "Sistema operativo" } }, "preferences_receive_folder_title": { "context": "Settings > Preferences: label for the received-files destination folder.", "translations": { "en": "Save received transfers to", - "fr": "Enregistrer les transferts reçus dans" + "fr": "Enregistrer les transferts reçus dans", + "es": "Guardar las transferencias recibidas en" } }, "preferences_title": { "context": "Settings > Preferences: section title.", "translations": { "en": "Preferences", - "fr": "Préférences" + "fr": "Préférences", + "es": "Preferencias" } }, "progress_cancelled": { "context": "Transfer progress label: cancelled.", "translations": { "en": "Cancelled", - "fr": "Annulé" + "fr": "Annulé", + "es": "Cancelado" } }, "progress_completed": { "context": "Transfer progress label: completed.", "translations": { "en": "Completed", - "fr": "Terminé" + "fr": "Terminé", + "es": "Completado" } }, "progress_connected": { "context": "Transfer progress label: connected.", "translations": { "en": "Connected", - "fr": "Connecté" + "fr": "Connecté", + "es": "Conectado" } }, "progress_connecting": { "context": "Transfer progress label: connecting.", "translations": { "en": "Connecting", - "fr": "Connexion" + "fr": "Connexion", + "es": "Conectando" } }, "progress_downloading": { "context": "Transfer progress label: downloading.", "translations": { "en": "Downloading", - "fr": "Téléchargement" + "fr": "Téléchargement", + "es": "Descargando" } }, "progress_failed": { "context": "Transfer progress label: failed.", "translations": { "en": "Failed", - "fr": "Échec" + "fr": "Échec", + "es": "Fallido" } }, "progress_getting_ready": { "context": "Transfer progress label: getting ready.", "translations": { "en": "Getting ready", - "fr": "Préparation" + "fr": "Préparation", + "es": "Preparándose" } }, "progress_interrupted": { "context": "Transfer progress label: the transfer was interrupted.", "translations": { "en": "Transfer interrupted", - "fr": "Transfert interrompu" + "fr": "Transfert interrompu", + "es": "Transferencia interrumpida" } }, "progress_preparing": { "context": "Transfer progress label: preparing.", "translations": { "en": "Preparing", - "fr": "Préparation" + "fr": "Préparation", + "es": "Preparando" } }, "progress_ready": { "context": "Transfer progress label: ready.", "translations": { "en": "Ready", - "fr": "Prêt" + "fr": "Prêt", + "es": "Listo" } }, "progress_receiving": { "context": "Transfer progress label: receiving.", "translations": { "en": "Receiving", - "fr": "Réception" + "fr": "Réception", + "es": "Recibiendo" } }, "progress_requesting_access": { "context": "Transfer progress label: requesting access from the sender.", "translations": { "en": "Requesting access", - "fr": "Demande d’accès" + "fr": "Demande d’accès", + "es": "Solicitando acceso" } }, "progress_saving": { "context": "Transfer progress label: saving received files.", "translations": { "en": "Saving", - "fr": "Enregistrement" + "fr": "Enregistrement", + "es": "Guardando" } }, "progress_sending": { "context": "Transfer progress label: sending.", "translations": { "en": "Sending", - "fr": "Envoi" + "fr": "Envoi", + "es": "Enviando" } }, "progress_sending_to_count": { "context": "Transfer progress label: sending to N receivers. %lld = receiver count.", "translations": { "en": "Sending to {count}", - "fr": "Envoi à {count}" + "fr": "Envoi à {count}", + "es": "Enviando a {count}" }, "args": [ { @@ -1060,56 +1201,64 @@ "context": "Transfer progress label: the share is ready.", "translations": { "en": "Ready to share", - "fr": "Prêt à partager" + "fr": "Prêt à partager", + "es": "Listo para compartir" } }, "progress_working": { "context": "Transfer progress label: generic working/in-progress state.", "translations": { "en": "Working…", - "fr": "En cours…" + "fr": "En cours…", + "es": "Trabajando…" } }, "receive_choose_method_body": { "context": "Receive flow: body text prompting the user to pick an invitation method.", "translations": { "en": "Choose the invitation method available to you.", - "fr": "Choisissez la méthode d’invitation à votre disposition." + "fr": "Choisissez la méthode d’invitation à votre disposition.", + "es": "Elija el método de invitación de que disponga." } }, "receive_choose_method_title": { "context": "Receive flow: title of the connect-method chooser.", "translations": { "en": "How would you like to connect?", - "fr": "Comment souhaitez-vous vous connecter ?" + "fr": "Comment souhaitez-vous vous connecter ?", + "es": "¿Cómo quiere conectarse?" } }, "receive_clear_history": { "context": "Receive history: action to clear all history.", "translations": { "en": "Clear history", - "fr": "Effacer l’historique" + "fr": "Effacer l’historique", + "es": "Borrar historial" } }, "receive_clear_history_description": { "context": "Receive history: confirmation dialog body for clearing all history.", "translations": { "en": "All completed, failed, and cancelled receives will be removed from VniDrop’s history. Downloaded files will remain on this device.", - "fr": "Toutes les réceptions terminées, échouées et annulées seront retirées de l’historique de VniDrop. Les fichiers téléchargés resteront sur cet appareil." + "fr": "Toutes les réceptions terminées, échouées et annulées seront retirées de l’historique de VniDrop. Les fichiers téléchargés resteront sur cet appareil.", + "es": "Todas las recepciones completadas, fallidas y canceladas se eliminarán del historial de VniDrop. Los archivos descargados permanecerán en este dispositivo." } }, "receive_clear_history_title": { "context": "Receive history: confirmation dialog title for clearing all history.", "translations": { "en": "Clear receive history?", - "fr": "Effacer l’historique de réception ?" + "fr": "Effacer l’historique de réception ?", + "es": "¿Borrar el historial de recepción?" } }, "receive_completed": { "context": "Receive flow: toast/message when a transfer finishes downloading.", "translations": { "en": "Transfer received.", - "fr": "Transfert reçu." + "fr": "Transfert reçu.", + "es": "Transferencia recibida." } }, "receive_delete_history_description": { @@ -1122,238 +1271,272 @@ ], "translations": { "en": "“{arg1}” will be removed from VniDrop’s history. The downloaded file will remain on this device.", - "fr": "« {arg1} » sera retiré de l’historique de VniDrop. Le fichier téléchargé restera sur cet appareil." + "fr": "« {arg1} » sera retiré de l’historique de VniDrop. Le fichier téléchargé restera sur cet appareil.", + "es": "«{arg1}» se eliminará del historial de VniDrop. El archivo descargado permanecerá en este dispositivo." } }, "receive_delete_history_item": { "context": "Receive history: swipe/menu action to delete a single history item.", "translations": { "en": "Delete from receive history", - "fr": "Supprimer de l’historique de réception" + "fr": "Supprimer de l’historique de réception", + "es": "Eliminar del historial de recepción" } }, "receive_delete_history_title": { "context": "Receive history: confirmation title for removing one item.", "translations": { "en": "Remove from history?", - "fr": "Retirer de l’historique ?" + "fr": "Retirer de l’historique ?", + "es": "¿Quitar del historial?" } }, "receive_empty_body": { "context": "Receive tab empty state: instructions on how to receive.", "translations": { "en": "Open a VniDrop invitation, scan a QR code, or hold near an NFC tag.", - "fr": "Ouvrez une invitation VniDrop, scannez un QR code ou approchez un tag NFC." + "fr": "Ouvrez une invitation VniDrop, scannez un QR code ou approchez un tag NFC.", + "es": "Abra una invitación de VniDrop, escanee un código QR o acerque una etiqueta NFC." } }, "receive_empty_title": { "context": "Receive tab empty state: title when nothing has been received.", "translations": { "en": "Nothing received yet", - "fr": "Rien reçu pour l’instant" + "fr": "Rien reçu pour l’instant", + "es": "Aún no se ha recibido nada" } }, "receive_history_cleared": { "context": "Receive history: toast confirming history was cleared.", "translations": { "en": "Receive history cleared.", - "fr": "Historique de réception effacé." + "fr": "Historique de réception effacé.", + "es": "Historial de recepción borrado." } }, "receive_history_title": { "context": "Receive tab: History section title.", "translations": { "en": "History", - "fr": "Historique" + "fr": "Historique", + "es": "Historial" } }, "receive_method_file": { "context": "Receive method: open a .vnd invitation file.", "translations": { "en": "Open a .vnd invitation", - "fr": "Ouvrir une invitation .vnd" + "fr": "Ouvrir une invitation .vnd", + "es": "Abrir una invitación .vnd" } }, "receive_method_file_description": { "context": "Receive method description: open a saved/shared invitation file.", "translations": { "en": "Choose an invitation saved or shared to this device.", - "fr": "Choisissez une invitation enregistrée ou partagée sur cet appareil." + "fr": "Choisissez une invitation enregistrée ou partagée sur cet appareil.", + "es": "Elija una invitación guardada o compartida en este dispositivo." } }, "receive_method_nfc": { "context": "Receive method: read an NFC tag.", "translations": { "en": "Read NFC tag", - "fr": "Lire un tag NFC" + "fr": "Lire un tag NFC", + "es": "Leer etiqueta NFC" } }, "receive_method_nfc_description": { "context": "Receive method description: hold near the sender's NFC tag.", "translations": { "en": "Hold this device near the sender’s invitation tag.", - "fr": "Approchez cet appareil du tag d’invitation de l’expéditeur." + "fr": "Approchez cet appareil du tag d’invitation de l’expéditeur.", + "es": "Acerque este dispositivo a la etiqueta de invitación del remitente." } }, "receive_method_scan": { "context": "Receive method: scan a QR code.", "translations": { "en": "Scan QR code", - "fr": "Scanner un QR code" + "fr": "Scanner un QR code", + "es": "Escanear código QR" } }, "receive_method_scan_description": { "context": "Receive method description: use the camera to scan the sender's code.", "translations": { "en": "Use the camera to scan the sender’s VniDrop code.", - "fr": "Utilisez la caméra pour scanner le code VniDrop de l’expéditeur." + "fr": "Utilisez la caméra pour scanner le code VniDrop de l’expéditeur.", + "es": "Use la cámara para escanear el código de VniDrop del remitente." } }, "receive_new_subtitle": { "context": "Receive tab: subtitle under the title.", "translations": { "en": "Transfers you’ve received on this device.", - "fr": "Transferts que vous avez reçus sur cet appareil." + "fr": "Transferts que vous avez reçus sur cet appareil.", + "es": "Transferencias que ha recibido en este dispositivo." } }, "receive_nfc_waiting": { "context": "Receive flow: prompt while waiting to read an NFC tag.", "translations": { "en": "Hold near the NFC tag…", - "fr": "Approchez du tag NFC…" + "fr": "Approchez du tag NFC…", + "es": "Acerque a la etiqueta NFC…" } }, "receive_open_files_failed": { "context": "Receive flow: error when opening VniDrop's folder in Files fails.", "translations": { "en": "Couldn’t open VniDrop in Files.", - "fr": "Impossible d’ouvrir VniDrop dans Fichiers." + "fr": "Impossible d’ouvrir VniDrop dans Fichiers.", + "es": "No se pudo abrir VniDrop en Archivos." } }, "receive_review_title": { "context": "Receive flow: title of the review screen before accepting a transfer.", "translations": { "en": "Review transfer", - "fr": "Vérifier le transfert" + "fr": "Vérifier le transfert", + "es": "Revisar transferencia" } }, "receive_title": { "context": "Receive tab: screen title.", "translations": { "en": "Receive", - "fr": "Recevoir" + "fr": "Recevoir", + "es": "Recibir" } }, "receive_unknown_transfer": { "context": "Receive flow: fallback name for a transfer with no title.", "translations": { "en": "VniDrop transfer", - "fr": "Transfert VniDrop" + "fr": "Transfert VniDrop", + "es": "Transferencia de VniDrop" } }, "send_access_anyone": { "context": "Send access option: anyone with the invitation can receive.", "translations": { "en": "Anyone with this transfer", - "fr": "Toute personne disposant de ce transfert" + "fr": "Toute personne disposant de ce transfert", + "es": "Cualquiera que tenga esta transferencia" } }, "send_access_anyone_description": { "context": "Send access option description: no approval required.", "translations": { "en": "No approval is required. Only use this for items you are comfortable sharing.", - "fr": "Aucune approbation requise. À n’utiliser que pour des éléments que vous êtes à l’aise de partager." + "fr": "Aucune approbation requise. À n’utiliser que pour des éléments que vous êtes à l’aise de partager.", + "es": "No se requiere aprobación. Úselo solo para elementos que no le importe compartir." } }, "send_access_anyone_warning": { "context": "Send access option warning: caution about open access.", "translations": { "en": "Anyone with the invitation can download until you stop sharing. Do not use this for private or sensitive items.", - "fr": "Toute personne disposant de l’invitation peut télécharger jusqu’à ce que vous arrêtiez le partage. Ne l’utilisez pas pour des éléments privés ou sensibles." + "fr": "Toute personne disposant de l’invitation peut télécharger jusqu’à ce que vous arrêtiez le partage. Ne l’utilisez pas pour des éléments privés ou sensibles.", + "es": "Cualquiera que tenga la invitación puede descargar hasta que deje de compartir. No lo use para elementos privados o sensibles." } }, "send_access_approval": { "context": "Send access option: approve each receiver.", "translations": { "en": "Ask before each download", - "fr": "Demander avant chaque téléchargement" + "fr": "Demander avant chaque téléchargement", + "es": "Preguntar antes de cada descarga" } }, "send_access_approval_description": { "context": "Send access option description: you approve/refuse each receiver.", "translations": { "en": "You approve or refuse every new receiver.", - "fr": "Vous approuvez ou refusez chaque nouveau destinataire." + "fr": "Vous approuvez ou refusez chaque nouveau destinataire.", + "es": "Usted aprueba o rechaza a cada nuevo destinatario." } }, "send_access_title": { "context": "Send flow: heading for the who-can-receive access chooser.", "translations": { "en": "Who can receive it?", - "fr": "Qui peut le recevoir ?" + "fr": "Qui peut le recevoir ?", + "es": "¿Quién puede recibirla?" } }, "send_choose_file_body": { "context": "Send flow: body text for the choose-what-to-share step.", "translations": { "en": "Select files or a folder from this device. You can review the selection before creating the transfer.", - "fr": "Sélectionnez des fichiers ou un dossier sur cet appareil. Vous pourrez vérifier la sélection avant de créer le transfert." + "fr": "Sélectionnez des fichiers ou un dossier sur cet appareil. Vous pourrez vérifier la sélection avant de créer le transfert.", + "es": "Seleccione archivos o una carpeta de este dispositivo. Podrá revisar la selección antes de crear la transferencia." } }, "send_choose_file_title": { "context": "Send flow: title of the choose-what-to-share step.", "translations": { "en": "Choose what to share", - "fr": "Choisissez quoi partager" + "fr": "Choisissez quoi partager", + "es": "Elija qué compartir" } }, "send_empty_body": { "context": "Send tab empty state: instructions on how to create a transfer.", "translations": { "en": "Create a transfer, decide who can receive it, then invite them with a QR code, NFC tag, or invitation file.", - "fr": "Créez un transfert, décidez qui peut le recevoir, puis invitez-les avec un QR code, un tag NFC ou un fichier d’invitation." + "fr": "Créez un transfert, décidez qui peut le recevoir, puis invitez-les avec un QR code, un tag NFC ou un fichier d’invitation.", + "es": "Cree una transferencia, decida quién puede recibirla y luego invite a esas personas con un código QR, una etiqueta NFC o un archivo de invitación." } }, "send_empty_title": { "context": "Send tab empty state: title when nothing has been shared.", "translations": { "en": "Nothing shared yet", - "fr": "Rien partagé pour l’instant" + "fr": "Rien partagé pour l’instant", + "es": "Aún no se ha compartido nada" } }, "send_file_size_unknown": { "context": "Send flow: shown when a selected file's size can't be determined.", "translations": { "en": "Size unavailable", - "fr": "Taille indisponible" + "fr": "Taille indisponible", + "es": "Tamaño no disponible" } }, "send_folder_label": { "context": "Send flow: label indicating a selected item is a folder.", "translations": { "en": "Folder", - "fr": "Dossier" + "fr": "Dossier", + "es": "Carpeta" } }, "send_new_transfer_description": { "context": "Send flow: description for the create-new-transfer entry.", "translations": { "en": "Create a new transfer", - "fr": "Créer un nouveau transfert" + "fr": "Créer un nouveau transfert", + "es": "Crear una nueva transferencia" } }, "send_new_transfer_title": { "context": "Send flow: title for the new-transfer step.", "translations": { "en": "New transfer", - "fr": "Nouveau transfert" + "fr": "Nouveau transfert", + "es": "Nueva transferencia" } }, "send_review_title": { "context": "Send flow: title of the review-transfer step before creating it.", "translations": { "en": "Review transfer", - "fr": "Vérifier le transfert" + "fr": "Vérifier le transfert", + "es": "Revisar transferencia" } }, "send_selected_files_count": { @@ -1366,217 +1549,248 @@ ], "translations": { "en": "{count} files selected", - "fr": "{count} fichiers sélectionnés" + "fr": "{count} fichiers sélectionnés", + "es": "{count} archivos seleccionados" } }, "send_stop_sharing": { "context": "Transfer details: action to stop sharing a transfer.", "translations": { "en": "Stop sharing", - "fr": "Arrêter le partage" + "fr": "Arrêter le partage", + "es": "Dejar de compartir" } }, "send_stop_sharing_description": { "context": "Transfer details: confirmation body for stopping sharing.", "translations": { "en": "This stops the transfer and interrupts anyone currently downloading it. It stays in your history as Stopped.", - "fr": "Cela arrête le transfert et interrompt toute personne en train de le télécharger. Il reste dans votre historique en tant qu’Arrêté." + "fr": "Cela arrête le transfert et interrompt toute personne en train de le télécharger. Il reste dans votre historique en tant qu’Arrêté.", + "es": "Esto detiene la transferencia e interrumpe a quien esté descargándola. Permanece en su historial como Detenida." } }, "send_subtitle": { "context": "Send tab: subtitle under the title.", "translations": { "en": "Transfers you’re sharing from this device.", - "fr": "Transferts que vous partagez depuis cet appareil." + "fr": "Transferts que vous partagez depuis cet appareil.", + "es": "Transferencias que está compartiendo desde este dispositivo." } }, "send_title": { "context": "Send tab: screen title.", "translations": { "en": "Send", - "fr": "Envoyer" + "fr": "Envoyer", + "es": "Enviar" } }, "send_transfer_created": { "context": "Send flow: toast confirming a transfer was created.", "translations": { "en": "Transfer created.", - "fr": "Transfert créé." + "fr": "Transfert créé.", + "es": "Transferencia creada." } }, "send_transfer_details_title": { "context": "Send flow: title of the transfer details screen.", "translations": { "en": "Transfer details", - "fr": "Détails du transfert" + "fr": "Détails du transfert", + "es": "Detalles de la transferencia" } }, "send_transfers_title": { "context": "Send tab: 'Your transfers' list heading.", "translations": { "en": "Your transfers", - "fr": "Vos transferts" + "fr": "Vos transferts", + "es": "Sus transferencias" } }, "settings_subtitle": { "context": "Settings screen: subtitle summarizing what's configurable.", "translations": { "en": "Your name, where transfers are saved, appearance, and notifications.", - "fr": "Votre nom, l’emplacement d’enregistrement des transferts, l’apparence et les notifications." + "fr": "Votre nom, l’emplacement d’enregistrement des transferts, l’apparence et les notifications.", + "es": "Su nombre, dónde se guardan las transferencias, la apariencia y las notificaciones." } }, "settings_title": { "context": "Settings screen: title.", "translations": { "en": "Settings", - "fr": "Réglages" + "fr": "Réglages", + "es": "Ajustes" } }, "snackbar_dismiss": { "context": "Snackbar: accessibility label / action to dismiss the snackbar.", "translations": { "en": "Dismiss", - "fr": "Ignorer" + "fr": "Ignorer", + "es": "Descartar" } }, "status_available": { "context": "Transfer status: available (actively shared).", "translations": { "en": "Available", - "fr": "Disponible" + "fr": "Disponible", + "es": "Disponible" } }, "status_cancelled": { "context": "Transfer status: cancelled.", "translations": { "en": "Cancelled", - "fr": "Annulé" + "fr": "Annulé", + "es": "Cancelado" } }, "status_completed": { "context": "Transfer status: completed.", "translations": { "en": "Completed", - "fr": "Terminé" + "fr": "Terminé", + "es": "Completado" } }, "status_failed": { "context": "Transfer status: failed.", "translations": { "en": "Failed", - "fr": "Échec" + "fr": "Échec", + "es": "Fallido" } }, "status_preparing": { "context": "Transfer status: preparing.", "translations": { "en": "Preparing", - "fr": "Préparation" + "fr": "Préparation", + "es": "Preparando" } }, "status_receiving": { "context": "Transfer status: receiving.", "translations": { "en": "Receiving", - "fr": "Réception" + "fr": "Réception", + "es": "Recibiendo" } }, "status_stopped": { "context": "Transfer status: stopped.", "translations": { "en": "Stopped", - "fr": "Arrêté" + "fr": "Arrêté", + "es": "Detenido" } }, "storage_calculating": { "context": "Settings > Storage: placeholder while a size is being calculated.", "translations": { "en": "Calculating…", - "fr": "Calcul…" + "fr": "Calcul…", + "es": "Calculando…" } }, "storage_delete_transfers": { "context": "Settings > Storage: button to delete all transfer records.", "translations": { "en": "Delete all transfers", - "fr": "Supprimer tous les transferts" + "fr": "Supprimer tous les transferts", + "es": "Eliminar todas las transferencias" } }, "storage_delete_transfers_description": { "context": "Settings > Storage: confirmation body for deleting all transfer records.", "translations": { "en": "This clears all sent and received transfer records from your history. Your received files are not deleted. Note: the transfer engine keeps its stored content, so Transfer data may not decrease. This can’t be undone.", - "fr": "Cela efface tous les enregistrements de transferts envoyés et reçus de votre historique. Vos fichiers reçus ne sont pas supprimés. Remarque : le moteur de transfert conserve son contenu stocké, donc les données de transfert peuvent ne pas diminuer. Cette action est irréversible." + "fr": "Cela efface tous les enregistrements de transferts envoyés et reçus de votre historique. Vos fichiers reçus ne sont pas supprimés. Remarque : le moteur de transfert conserve son contenu stocké, donc les données de transfert peuvent ne pas diminuer. Cette action est irréversible.", + "es": "Esto borra todos los registros de transferencias enviadas y recibidas de su historial. Sus archivos recibidos no se eliminan. Nota: el motor de transferencia conserva su contenido almacenado, por lo que los datos de transferencia pueden no disminuir. Esto no se puede deshacer." } }, "storage_deleting": { "context": "Settings > Storage: progress label while transfers are being deleted.", "translations": { "en": "Deleting…", - "fr": "Suppression…" + "fr": "Suppression…", + "es": "Eliminando…" } }, "storage_footer": { "context": "Settings > Storage: footer explaining how storage is managed.", "translations": { "en": "Transfer data is managed by the transfer engine — your history plus the content of files you’ve shared. The button below clears your transfer records; the engine keeps its stored content, so this value may not drop. Received files are your downloaded files and are never deleted here.", - "fr": "Les données de transfert sont gérées par le moteur de transfert — votre historique ainsi que le contenu des fichiers que vous avez partagés. Le bouton ci-dessous efface vos enregistrements de transferts ; le moteur conserve son contenu stocké, donc cette valeur peut ne pas baisser. Les fichiers reçus sont vos fichiers téléchargés et ne sont jamais supprimés ici." + "fr": "Les données de transfert sont gérées par le moteur de transfert — votre historique ainsi que le contenu des fichiers que vous avez partagés. Le bouton ci-dessous efface vos enregistrements de transferts ; le moteur conserve son contenu stocké, donc cette valeur peut ne pas baisser. Les fichiers reçus sont vos fichiers téléchargés et ne sont jamais supprimés ici.", + "es": "Los datos de transferencia los gestiona el motor de transferencia: su historial más el contenido de los archivos que ha compartido. El botón de abajo borra sus registros de transferencias; el motor conserva su contenido almacenado, por lo que este valor puede no bajar. Los archivos recibidos son los archivos que ha descargado y nunca se eliminan aquí." } }, "storage_received_files": { "context": "Settings > Storage: label for the received-files size row.", "translations": { "en": "Received files", - "fr": "Fichiers reçus" + "fr": "Fichiers reçus", + "es": "Archivos recibidos" } }, "storage_temporary": { "context": "Settings > Storage: label for the temporary-files size row.", "translations": { "en": "Temporary files", - "fr": "Fichiers temporaires" + "fr": "Fichiers temporaires", + "es": "Archivos temporales" } }, "storage_title": { "context": "Settings > Storage: section title.", "translations": { "en": "Storage", - "fr": "Stockage" + "fr": "Stockage", + "es": "Almacenamiento" } }, "storage_total": { "context": "Settings > Storage: label for the total-size row.", "translations": { "en": "Total", - "fr": "Total" + "fr": "Total", + "es": "Total" } }, "storage_transfer_data": { "context": "Settings > Storage: label for the transfer-engine data size row.", "translations": { "en": "Transfer data", - "fr": "Données de transfert" + "fr": "Données de transfert", + "es": "Datos de transferencia" } }, "storage_transfers_deleted": { "context": "Settings > Storage: toast confirming all transfers were deleted.", "translations": { "en": "All transfers deleted", - "fr": "Tous les transferts supprimés" + "fr": "Tous les transferts supprimés", + "es": "Todas las transferencias eliminadas" } }, "transfer_activity_description": { "context": "Transfer details: description under the Activity section.", "translations": { "en": "See important updates for this transfer", - "fr": "Consultez les mises à jour importantes de ce transfert" + "fr": "Consultez les mises à jour importantes de ce transfert", + "es": "Vea las actualizaciones importantes de esta transferencia" } }, "transfer_activity_title": { "context": "Transfer details: Activity section title.", "translations": { "en": "Activity", - "fr": "Activité" + "fr": "Activité", + "es": "Actividad" } }, "transfer_delete_description": { @@ -1589,119 +1803,136 @@ ], "translations": { "en": "“{arg1}” will stop being shared and its transfer history will be removed from this device.", - "fr": "« {arg1} » cessera d’être partagé et son historique de transfert sera retiré de cet appareil." + "fr": "« {arg1} » cessera d’être partagé et son historique de transfert sera retiré de cet appareil.", + "es": "«{arg1}» dejará de compartirse y su historial de transferencia se eliminará de este dispositivo." } }, "transfer_delete_title": { "context": "Transfer details: confirmation title for deleting a transfer.", "translations": { "en": "Delete transfer?", - "fr": "Supprimer le transfert ?" + "fr": "Supprimer le transfert ?", + "es": "¿Eliminar la transferencia?" } }, "transfer_deleted": { "context": "Transfer details: toast confirming a transfer was deleted.", "translations": { "en": "Transfer deleted.", - "fr": "Transfert supprimé." + "fr": "Transfert supprimé.", + "es": "Transferencia eliminada." } }, "transfer_deleting": { "context": "Transfer details: progress label while a transfer is being deleted.", "translations": { "en": "Deleting…", - "fr": "Suppression…" + "fr": "Suppression…", + "es": "Eliminando…" } }, "transfer_details_title": { "context": "Transfer details: screen title.", "translations": { "en": "Transfer details", - "fr": "Détails du transfert" + "fr": "Détails du transfert", + "es": "Detalles de la transferencia" } }, "transfer_event_approved": { "context": "Transfer activity event: a receiver's access was approved.", "translations": { "en": "Receiver access approved", - "fr": "Accès du destinataire approuvé" + "fr": "Accès du destinataire approuvé", + "es": "Acceso del destinatario aprobado" } }, "transfer_event_completed": { "context": "Transfer activity event: a receiver completed the transfer.", "translations": { "en": "A receiver completed the transfer", - "fr": "Un destinataire a terminé le transfert" + "fr": "Un destinataire a terminé le transfert", + "es": "Un destinatario completó la transferencia" } }, "transfer_event_connecting": { "context": "Transfer activity event: connecting to the sender.", "translations": { "en": "Connecting to sender", - "fr": "Connexion à l’expéditeur" + "fr": "Connexion à l’expéditeur", + "es": "Conectando con el remitente" } }, "transfer_event_downloading": { "context": "Transfer activity event: downloading.", "translations": { "en": "Downloading", - "fr": "Téléchargement" + "fr": "Téléchargement", + "es": "Descargando" } }, "transfer_event_failed": { "context": "Transfer activity event: the transfer hit a problem.", "translations": { "en": "The transfer encountered a problem", - "fr": "Le transfert a rencontré un problème" + "fr": "Le transfert a rencontré un problème", + "es": "La transferencia tuvo un problema" } }, "transfer_event_preparing": { "context": "Transfer activity event: preparing the transfer.", "translations": { "en": "Preparing your transfer", - "fr": "Préparation de votre transfert" + "fr": "Préparation de votre transfert", + "es": "Preparando su transferencia" } }, "transfer_event_ready": { "context": "Transfer activity event: ready to share.", "translations": { "en": "Ready to share", - "fr": "Prêt à partager" + "fr": "Prêt à partager", + "es": "Listo para compartir" } }, "transfer_event_refused": { "context": "Transfer activity event: a receiver's access was refused.", "translations": { "en": "Receiver access refused", - "fr": "Accès du destinataire refusé" + "fr": "Accès du destinataire refusé", + "es": "Acceso del destinatario rechazado" } }, "transfer_event_requested": { "context": "Transfer activity event: a receiver requested access.", "translations": { "en": "A receiver requested access", - "fr": "Un destinataire a demandé l’accès" + "fr": "Un destinataire a demandé l’accès", + "es": "Un destinatario solicitó acceso" } }, "transfer_event_saving": { "context": "Transfer activity event: saving received files.", "translations": { "en": "Saving", - "fr": "Enregistrement" + "fr": "Enregistrement", + "es": "Guardando" } }, "transfer_event_stopped": { "context": "Transfer activity event: sharing was stopped.", "translations": { "en": "Sharing stopped", - "fr": "Partage arrêté" + "fr": "Partage arrêté", + "es": "Se dejó de compartir" } }, "transfer_event_updated": { "context": "Transfer activity event: the transfer was updated.", "translations": { "en": "Transfer updated", - "fr": "Transfert mis à jour" + "fr": "Transfert mis à jour", + "es": "Transferencia actualizada" } }, "transfer_file_count": { @@ -1720,6 +1951,10 @@ "fr": { "one": "{count} fichier", "other": "{count} fichiers" + }, + "es": { + "one": "{count} archivo", + "other": "{count} archivos" } } }, @@ -1727,91 +1962,104 @@ "context": "Transfer share: toast confirming the invitation file was saved.", "translations": { "en": "Invitation saved.", - "fr": "Invitation enregistrée." + "fr": "Invitation enregistrée.", + "es": "Invitación guardada." } }, "transfer_nearby_device": { "context": "Transfer share/receivers: label for a nearby device.", "translations": { "en": "Nearby device", - "fr": "Appareil à proximité" + "fr": "Appareil à proximité", + "es": "Dispositivo cercano" } }, "transfer_nfc_unavailable": { "context": "Transfer share: message when NFC writing isn't available on the device.", "translations": { "en": "NFC tag writing is not available on this device.", - "fr": "L’écriture de tag NFC n’est pas disponible sur cet appareil." + "fr": "L’écriture de tag NFC n’est pas disponible sur cet appareil.", + "es": "La escritura de etiquetas NFC no está disponible en este dispositivo." } }, "transfer_nfc_waiting": { "context": "Transfer share: prompt while waiting to write an NFC tag.", "translations": { "en": "Hold your device near a writable NFC tag.", - "fr": "Approchez votre appareil d’un tag NFC inscriptible." + "fr": "Approchez votre appareil d’un tag NFC inscriptible.", + "es": "Acerque su dispositivo a una etiqueta NFC grabable." } }, "transfer_nfc_written": { "context": "Transfer share: confirmation the invitation was written to the NFC tag.", "translations": { "en": "Invitation written to the NFC tag.", - "fr": "Invitation écrite sur le tag NFC." + "fr": "Invitation écrite sur le tag NFC.", + "es": "Invitación escrita en la etiqueta NFC." } }, "transfer_no_activity": { "context": "Transfer details: empty state for the Activity section.", "translations": { "en": "There is no activity to show yet.", - "fr": "Aucune activité à afficher pour l’instant." + "fr": "Aucune activité à afficher pour l’instant.", + "es": "Todavía no hay actividad que mostrar." } }, "transfer_no_receivers": { "context": "Transfer details: empty state for the Receivers section.", "translations": { "en": "Nobody has requested this transfer yet.", - "fr": "Personne n’a encore demandé ce transfert." + "fr": "Personne n’a encore demandé ce transfert.", + "es": "Nadie ha solicitado aún esta transferencia." } }, "transfer_receiver_accepted": { "context": "Receiver status: approved, waiting for the download to complete.", "translations": { "en": "Approved — waiting for completion", - "fr": "Approuvé — en attente de la fin" + "fr": "Approuvé — en attente de la fin", + "es": "Aprobado: esperando a que se complete" } }, "transfer_receiver_completed": { "context": "Receiver status: received successfully.", "translations": { "en": "Received successfully", - "fr": "Reçu avec succès" + "fr": "Reçu avec succès", + "es": "Recibido correctamente" } }, "transfer_receiver_expired": { "context": "Receiver status: the request expired.", "translations": { "en": "Request expired", - "fr": "Demande expirée" + "fr": "Demande expirée", + "es": "Solicitud caducada" } }, "transfer_receiver_refused": { "context": "Receiver status: the request was refused.", "translations": { "en": "Request refused", - "fr": "Demande refusée" + "fr": "Demande refusée", + "es": "Solicitud rechazada" } }, "transfer_receiver_requested": { "context": "Receiver status: waiting for the sender's approval.", "translations": { "en": "Waiting for your approval", - "fr": "En attente de votre approbation" + "fr": "En attente de votre approbation", + "es": "Esperando su aprobación" } }, "transfer_receiver_unknown": { "context": "Receiver status: status unavailable/unknown.", "translations": { "en": "Status unavailable", - "fr": "Statut indisponible" + "fr": "Statut indisponible", + "es": "Estado no disponible" } }, "transfer_receivers_completed_count": { @@ -1824,14 +2072,16 @@ ], "translations": { "en": "{count} completed", - "fr": "{count} terminés" + "fr": "{count} terminés", + "es": "{count} completados" } }, "transfer_receivers_description": { "context": "Transfer details: description under the Receivers section.", "translations": { "en": "Requests, approvals, and completed deliveries", - "fr": "Demandes, approbations et livraisons terminées" + "fr": "Demandes, approbations et livraisons terminées", + "es": "Solicitudes, aprobaciones y entregas completadas" } }, "transfer_receivers_pending": { @@ -1844,49 +2094,56 @@ ], "translations": { "en": "{count} waiting", - "fr": "{count} en attente" + "fr": "{count} en attente", + "es": "{count} en espera" } }, "transfer_receivers_title": { "context": "Transfer details: Receivers section title.", "translations": { "en": "Receivers", - "fr": "Destinataires" + "fr": "Destinataires", + "es": "Destinatarios" } }, "transfer_scan_qr": { "context": "Transfer share: caption under the QR code.", "translations": { "en": "Scan with VniDrop to receive this transfer", - "fr": "Scannez avec VniDrop pour recevoir ce transfert" + "fr": "Scannez avec VniDrop pour recevoir ce transfert", + "es": "Escanee con VniDrop para recibir esta transferencia" } }, "transfer_share_description": { "context": "Transfer details: description under the Share section.", "translations": { "en": "QR code, invitation file, and nearby options", - "fr": "QR code, fichier d’invitation et options à proximité" + "fr": "QR code, fichier d’invitation et options à proximité", + "es": "Código QR, archivo de invitación y opciones cercanas" } }, "transfer_share_title": { "context": "Transfer details: Share section title.", "translations": { "en": "Share", - "fr": "Partager" + "fr": "Partager", + "es": "Compartir" } }, "value_unavailable": { "context": "Placeholder shown when a device-info or metadata value can't be read.", "translations": { "en": "Not available", - "fr": "Non disponible" + "fr": "Non disponible", + "es": "No disponible" } }, "version_title": { "context": "Device information / Settings row: app version label.", "translations": { "en": "App version", - "fr": "Version de l’app" + "fr": "Version de l’app", + "es": "Versión de la app" } } } diff --git a/shared/src/commonMain/composeResources/values-es/strings.xml b/shared/src/commonMain/composeResources/values-es/strings.xml new file mode 100644 index 0000000..6000692 --- /dev/null +++ b/shared/src/commonMain/composeResources/values-es/strings.xml @@ -0,0 +1,257 @@ + + + Informar de un error + VniDrop transfiere archivos y carpetas directamente de un dispositivo a otro a través de la red, sin subirlos a ningún servicio de alojamiento. No hay que crear ninguna cuenta y no queda ninguna copia de su transferencia en la nube una vez que termina. + Una transferencia directa entre dispositivos: sus archivos van directamente al destinatario. + Las conexiones están autenticadas y cifradas de extremo a extremo (mediante Iroh), y los archivos entrantes se verifican por su huella de contenido. + Usted decide quién recibe: apruebe cada solicitud o abra una transferencia a cualquiera que tenga la invitación. + Sin cuenta: no hay nada que registrar. + Código abierto, publicado bajo la licencia Apache 2.0. + Qué es VniDrop + No es almacenamiento en la nube: ningún servidor guarda sus archivos y nada queda en la nube después de una transferencia. + No es difusión pública: una invitación es un enlace de acceso privado, no un anuncio para todos los que estén cerca. + No es un servicio de sincronización ni de copia de seguridad. + Qué no es VniDrop + Licencia + Política de privacidad + Las invitaciones son claves de acceso. Trate un código QR, una etiqueta NFC o un archivo .vnd como un enlace de acceso privado y compártalo solo con las personas previstas, especialmente con «Cualquiera que tenga esta transferencia». + Denegación por defecto: VniDrop solo sirve el contenido de un recurso compartido activo y rechaza las solicitudes desconocidas. + Los archivos recibidos se guardan en su dispositivo y nunca sobrescriben un archivo existente. + Política de privacidad + Si dos dispositivos no pueden conectarse directamente, la conexión cifrada puede retransmitirse. Los relés solo reenvían paquetes cifrados; nunca almacenan sus archivos. + Privacidad y seguridad + Envíe archivos directamente. Mantenga el control de quién los recibe. + Acerca de + Seguir la apariencia clara u oscura de este dispositivo. + Modo oscuro + Modo claro + Sistema + Apariencia + Solicitud de recepción + ID del dispositivo: %1$s + Un dispositivo cercano + %1$d solicitudes en espera + %1$s quiere recibir «%2$s». + Nivel de batería + nombre@ejemplo.com + Correo de contacto (opcional) + Cuéntenos qué salió mal. Adjuntamos información del dispositivo y, opcionalmente, registros recientes (con los valores sensibles ocultos). + Información del dispositivo + Describa lo que esperaba que ocurriera + ¿Qué esperaba? + Incluir registros recientes + Nos ayuda a diagnosticar el problema. Los valores sensibles se ocultan antes de enviarlos. + Tamaño del archivo de registros + Describa lo que esperaba. + Describa lo que ocurrió. + Enumere los pasos para reproducir el problema + Pasos para reproducir (opcional) + Enviar informe + No se pudo enviar el informe de error. Inténtelo de nuevo más tarde. + Gracias: su informe de error se ha registrado. + Enviando… + Describa lo que ocurrió + ¿Qué ocurrió? + Aprobar + Atrás + Cancelar + Cancelar + Cambiar archivos + Elegir archivos + Elegir carpeta + Borrar + Cerrar + Nueva transferencia + Eliminar transferencia + Guardar archivo .vnd + Compartir invitación + Abrir Ajustes + Recibir + Empezar a recibir + Rechazar + Quitar archivo + Usar predeterminado + Reintentar + Empezar a compartir + Preparando la transferencia… + Mostrar en Archivos + Escribir en etiqueta NFC + Modelo del dispositivo + Nombre del dispositivo + Enviar informes de fallos y eventos de uso anónimos para ayudarnos a mejorar VniDrop. Puede desactivarlo en cualquier momento. Las invitaciones, las rutas de archivos y el contenido de las transferencias nunca se incluyen. + El uso compartido de diagnósticos está desactivado. + El uso compartido de diagnósticos está activado. + Compartir diagnósticos + Se necesita acceso a la cámara para escanear un código QR. + No se pudo cargar la información del dispositivo. + VniDrop no pudo acceder a los archivos o la carpeta seleccionados. Compruebe los permisos e inténtelo de nuevo. + Algo salió mal. Inténtelo de nuevo. + VniDrop no pudo terminar de iniciarse. Cierre la app e inténtelo de nuevo. + No se pudo leer esta invitación. Pida al remitente una nueva. + Esa invitación está vacía. Intente abrirla de nuevo. + Falta la biblioteca nativa de VniDrop en esta versión. + No se pudo usar esta etiqueta NFC. Pruebe con otra. + El remitente no ha aprobado esta transferencia, o fue rechazada. + VniDrop no pudo guardar los datos de la transferencia en este dispositivo. + No se pudo abrir el elemento seleccionado. Intente elegirlo de nuevo. + Seleccione al menos un elemento para compartir. + VniDrop no pudo abrir sus sockets de red en este dispositivo. + VniDrop todavía se está iniciando. Vuelva a abrir la invitación en un momento. + No se pudo completar la transferencia. Compruebe su conexión e inténtelo de nuevo. + Nombre del destinatario + Nombre del remitente + Nombre de la transferencia + Nombre visible + Permiso necesario + No disponible + Comprobando carpeta… + Listo + Archivos + Tamaño + Estado + Recibir + Enviar + Ajustes + Red + Reciba avisos sobre nuevas solicitudes de recepción cuando VniDrop está en segundo plano. + Notificaciones activadas. + Permitir notificaciones + Las notificaciones están desactivadas para VniDrop. Puede activarlas en Ajustes. + No se pudieron abrir los ajustes de notificaciones. + Notificaciones + Las notificaciones no están disponibles en este dispositivo. + Sistema operativo + Guardar las transferencias recibidas en + Preferencias + Cancelado + Completado + Conectado + Conectando + Descargando + Fallido + Preparándose + Transferencia interrumpida + Preparando + Listo + Recibiendo + Solicitando acceso + Guardando + Enviando + Enviando a %1$d + Listo para compartir + Trabajando… + Elija el método de invitación de que disponga. + ¿Cómo quiere conectarse? + Borrar historial + Todas las recepciones completadas, fallidas y canceladas se eliminarán del historial de VniDrop. Los archivos descargados permanecerán en este dispositivo. + ¿Borrar el historial de recepción? + Transferencia recibida. + «%1$s» se eliminará del historial de VniDrop. El archivo descargado permanecerá en este dispositivo. + Eliminar del historial de recepción + ¿Quitar del historial? + Abra una invitación de VniDrop, escanee un código QR o acerque una etiqueta NFC. + Aún no se ha recibido nada + Historial de recepción borrado. + Historial + Abrir una invitación .vnd + Elija una invitación guardada o compartida en este dispositivo. + Leer etiqueta NFC + Acerque este dispositivo a la etiqueta de invitación del remitente. + Escanear código QR + Use la cámara para escanear el código de VniDrop del remitente. + Transferencias que ha recibido en este dispositivo. + Acerque a la etiqueta NFC… + No se pudo abrir VniDrop en Archivos. + Revisar transferencia + Recibir + Transferencia de VniDrop + Cualquiera que tenga esta transferencia + No se requiere aprobación. Úselo solo para elementos que no le importe compartir. + Cualquiera que tenga la invitación puede descargar hasta que deje de compartir. No lo use para elementos privados o sensibles. + Preguntar antes de cada descarga + Usted aprueba o rechaza a cada nuevo destinatario. + ¿Quién puede recibirla? + Seleccione archivos o una carpeta de este dispositivo. Podrá revisar la selección antes de crear la transferencia. + Elija qué compartir + Cree una transferencia, decida quién puede recibirla y luego invite a esas personas con un código QR, una etiqueta NFC o un archivo de invitación. + Aún no se ha compartido nada + Tamaño no disponible + Carpeta + Crear una nueva transferencia + Nueva transferencia + Revisar transferencia + %1$d archivos seleccionados + Dejar de compartir + Esto detiene la transferencia e interrumpe a quien esté descargándola. Permanece en su historial como Detenida. + Transferencias que está compartiendo desde este dispositivo. + Enviar + Transferencia creada. + Detalles de la transferencia + Sus transferencias + Su nombre, dónde se guardan las transferencias, la apariencia y las notificaciones. + Ajustes + Descartar + Disponible + Cancelado + Completado + Fallido + Preparando + Recibiendo + Detenido + Calculando… + Eliminar todas las transferencias + Esto borra todos los registros de transferencias enviadas y recibidas de su historial. Sus archivos recibidos no se eliminan. Nota: el motor de transferencia conserva su contenido almacenado, por lo que los datos de transferencia pueden no disminuir. Esto no se puede deshacer. + Eliminando… + Los datos de transferencia los gestiona el motor de transferencia: su historial más el contenido de los archivos que ha compartido. El botón de abajo borra sus registros de transferencias; el motor conserva su contenido almacenado, por lo que este valor puede no bajar. Los archivos recibidos son los archivos que ha descargado y nunca se eliminan aquí. + Archivos recibidos + Archivos temporales + Almacenamiento + Total + Datos de transferencia + Todas las transferencias eliminadas + Vea las actualizaciones importantes de esta transferencia + Actividad + «%1$s» dejará de compartirse y su historial de transferencia se eliminará de este dispositivo. + ¿Eliminar la transferencia? + Transferencia eliminada. + Eliminando… + Detalles de la transferencia + Acceso del destinatario aprobado + Un destinatario completó la transferencia + Conectando con el remitente + Descargando + La transferencia tuvo un problema + Preparando su transferencia + Listo para compartir + Acceso del destinatario rechazado + Un destinatario solicitó acceso + Guardando + Se dejó de compartir + Transferencia actualizada + Invitación guardada. + Dispositivo cercano + La escritura de etiquetas NFC no está disponible en este dispositivo. + Acerque su dispositivo a una etiqueta NFC grabable. + Invitación escrita en la etiqueta NFC. + Todavía no hay actividad que mostrar. + Nadie ha solicitado aún esta transferencia. + Aprobado: esperando a que se complete + Recibido correctamente + Solicitud caducada + Solicitud rechazada + Esperando su aprobación + Estado no disponible + %1$d completados + Solicitudes, aprobaciones y entregas completadas + %1$d en espera + Destinatarios + Escanee con VniDrop para recibir esta transferencia + Código QR, archivo de invitación y opciones cercanas + Compartir + No disponible + Versión de la app + + %1$d archivo + %1$d archivos + +