From 141be2e55acec078bea985d1605cf093ab5cf067 Mon Sep 17 00:00:00 2001
From: cdricms <36056008+cdricms@users.noreply.github.com>
Date: Mon, 20 Jul 2026 11:11:12 +0200
Subject: [PATCH] feat(l10n): add Spanish translations
Translate all 253 user-facing strings to Spanish (formal "usted"), including
the transfer_file_count plural. Generates values-es/strings.xml for KMP, es
localizations in the Apple catalog, and adds es to CFBundleLocalizations.
---
apple/VniDrop/Resources/Info.plist | 1 +
apple/VniDrop/Resources/Localizable.xcstrings | 1530 +++++++++++++++++
localization/strings.json | 763 +++++---
.../composeResources/values-es/strings.xml | 257 +++
4 files changed, 2298 insertions(+), 253 deletions(-)
create mode 100644 shared/src/commonMain/composeResources/values-es/strings.xml
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
+
+