Files
vnidrop/localization/strings.json
cdricms 91573f381a feat(l10n): add French translations
Translate all 253 user-facing strings to French (formal register), including
the transfer_file_count plural. Generates values-fr/strings.xml for KMP and
fr localizations in the Apple catalog (marked needs_review).
2026-07-20 10:34:52 +02:00

1894 lines
64 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "./schema.json",
"sourceLanguage": "en",
"supportedLanguages": [
"en",
"fr"
],
"strings": {
"%@": {
"context": "Apple format passthrough placeholder (single value). Legacy literal key — rename to a semantic key.",
"targets": [
"apple"
]
},
"%@ %@ · %@": {
"context": "Apple format template composing three values with a middot separator (e.g. metadata rows). Legacy literal key — rename.",
"targets": [
"apple"
],
"args": [
{
"name": "arg1",
"type": "string"
},
{
"name": "arg2",
"type": "string"
},
{
"name": "arg3",
"type": "string"
}
],
"translations": {
"en": "{arg1} {arg2} · {arg3}",
"fr": "{arg1} {arg2} · {arg3}"
}
},
"%@ · %@": {
"context": "Apple format template composing two values with a middot separator. Legacy literal key — rename.",
"targets": [
"apple"
],
"args": [
{
"name": "arg1",
"type": "string"
},
{
"name": "arg2",
"type": "string"
}
],
"translations": {
"en": "{arg1} · {arg2}",
"fr": "{arg1} · {arg2}"
}
},
"%@%%": {
"context": "Apple format template appending a percent sign to a value (e.g. battery level). Legacy literal key — rename.",
"targets": [
"apple"
]
},
"about_bug_report": {
"context": "About screen: button/link that opens the bug report form.",
"translations": {
"en": "Report a bug",
"fr": "Signaler un bug"
}
},
"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. Theres no account to create, and no copy of your transfer is left in the cloud once youre done.",
"fr": "VniDrop transfère fichiers et dossiers directement dun appareil à un autre sur le réseau, sans les téléverser vers un service dhébergement. Aucun compte à créer, et aucune copie de votre transfert ne reste dans le cloud une fois terminé."
}
},
"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 dappareil à appareil — vos fichiers vont droit au destinataire."
}
},
"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."
}
},
"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 linvitation."
}
},
"about_is_no_account": {
"context": "About screen, 'What VniDrop is' list: point about being account-free.",
"translations": {
"en": "Account-free — theres nothing to sign up for.",
"fr": "Sans compte — il ny a rien à créer."
}
},
"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."
}
},
"about_is_title": {
"context": "About screen: section heading for the 'What VniDrop is' list.",
"translations": {
"en": "What VniDrop is",
"fr": "Ce quest 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 nattend dans le cloud après un transfert."
}
},
"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 daccès privé, pas une annonce à tout le voisinage."
}
},
"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."
}
},
"about_isnt_title": {
"context": "About screen: section heading for the 'What VniDrop isn't' list.",
"translations": {
"en": "What VniDrop isnt",
"fr": "Ce que VniDrop nest pas"
}
},
"about_license_label": {
"context": "About screen: label for the license row.",
"translations": {
"en": "License",
"fr": "Licence"
}
},
"about_privacy": {
"context": "About screen: link to the privacy policy.",
"translations": {
"en": "Privacy policy",
"fr": "Politique de confidentialité"
}
},
"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 daccès. Traitez un QR code, un tag NFC ou un fichier .vnd comme un lien daccès privé et ne le partagez quavec les personnes visées — en particulier avec « Toute personne disposant de ce transfert »."
}
},
"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 dun partage actif et rejette les demandes inconnues."
}
},
"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."
}
},
"about_privacy_policy_label": {
"context": "About screen: label for the privacy policy row.",
"translations": {
"en": "Privacy policy",
"fr": "Politique de confidentialité"
}
},
"about_privacy_relay": {
"context": "About screen, Privacy & security list: point explaining encrypted relays.",
"translations": {
"en": "If two devices cant 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."
}
},
"about_privacy_title": {
"context": "About screen: section heading for the Privacy & security list.",
"translations": {
"en": "Privacy & security",
"fr": "Confidentialité et sécurité"
}
},
"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."
}
},
"about_title": {
"context": "About screen: navigation/screen title.",
"translations": {
"en": "About",
"fr": "À propos"
}
},
"appearance_auto_description": {
"context": "Settings > Appearance: description for the System/auto option.",
"translations": {
"en": "Match this devices light or dark appearance.",
"fr": "Suivre lapparence claire ou sombre de cet appareil."
}
},
"appearance_dark_mode": {
"context": "Settings > Appearance: label for the dark theme option.",
"translations": {
"en": "Dark mode",
"fr": "Mode sombre"
}
},
"appearance_light_mode": {
"context": "Settings > Appearance: label for the light theme option.",
"translations": {
"en": "Light mode",
"fr": "Mode clair"
}
},
"appearance_system_mode": {
"context": "Settings > Appearance: label for the follow-system option.",
"translations": {
"en": "System",
"fr": "Système"
}
},
"appearance_title": {
"context": "Settings > Appearance: section title.",
"translations": {
"en": "Appearance",
"fr": "Apparence"
}
},
"approval_connection_request": {
"context": "Approval prompt: title when a receiver requests to download a transfer.",
"translations": {
"en": "Receive request",
"fr": "Demande de réception"
}
},
"approval_endpoint_id": {
"context": "Approval prompt: shows the requesting device's ID. {arg1} = device/endpoint identifier.",
"args": [
{
"name": "arg1",
"type": "string"
}
],
"translations": {
"en": "Device ID: {arg1}",
"fr": "Identifiant de lappareil : {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é"
}
},
"approval_pending_count": {
"context": "Send/transfer list: badge showing how many receive requests are awaiting approval. {count} = pending requests.",
"args": [
{
"name": "count",
"type": "int"
}
],
"translations": {
"en": "{count} requests waiting",
"fr": "{count} demandes en attente"
}
},
"approval_request_body": {
"context": "Approval prompt body: '{arg1} wants to receive \"{arg2}\".' {arg1} = requester name, {arg2} = transfer name.",
"args": [
{
"name": "arg1",
"type": "string"
},
{
"name": "arg2",
"type": "string"
}
],
"translations": {
"en": "{arg1} wants to receive “{arg2}”.",
"fr": "{arg1} souhaite recevoir « {arg2} »."
}
},
"battery_level_title": {
"context": "Device information row: battery level label.",
"translations": {
"en": "Battery level",
"fr": "Niveau de batterie"
}
},
"bug_report_contact_hint": {
"context": "Bug report form: placeholder text in the contact email field.",
"translations": {
"en": "name@example.com",
"fr": "nom@exemple.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)"
}
},
"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 sest passé. Nous joignons les infos de lappareil et, en option, les journaux récents (valeurs sensibles masquées)."
}
},
"bug_report_device_section": {
"context": "Bug report form: heading for the attached device information section.",
"translations": {
"en": "Device information",
"fr": "Informations sur lappareil"
}
},
"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"
}
},
"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 ?"
}
},
"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"
}
},
"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 lenvoi."
}
},
"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"
}
},
"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."
}
},
"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 sest passé."
}
},
"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"
}
},
"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)"
}
},
"bug_report_submit": {
"context": "Bug report form: submit button.",
"translations": {
"en": "Submit report",
"fr": "Envoyer le rapport"
}
},
"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 denvoyer le rapport de bug. Réessayez plus tard."
}
},
"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é."
}
},
"bug_report_submitting": {
"context": "Bug report form: progress label while the report is being sent.",
"translations": {
"en": "Submitting…",
"fr": "Envoi…"
}
},
"bug_report_what_hint": {
"context": "Bug report form: placeholder in the what-happened field.",
"translations": {
"en": "Describe what happened",
"fr": "Décrivez ce qui sest passé"
}
},
"bug_report_what_label": {
"context": "Bug report form: label for the what-happened field.",
"translations": {
"en": "What happened?",
"fr": "Que sest-il passé ?"
}
},
"button_approve": {
"context": "Button: approve a receiver's request.",
"translations": {
"en": "Approve",
"fr": "Approuver"
}
},
"button_back": {
"context": "Button: go back to the previous step/screen.",
"translations": {
"en": "Back",
"fr": "Retour"
}
},
"button_cancel": {
"context": "Button: cancel the current action or dialog.",
"translations": {
"en": "Cancel",
"fr": "Annuler"
}
},
"button_cancel_receive": {
"context": "Button: cancel an in-progress receive.",
"translations": {
"en": "Cancel",
"fr": "Annuler"
}
},
"button_change_files": {
"context": "Button: change the selected files in the send flow.",
"translations": {
"en": "Change files",
"fr": "Modifier les fichiers"
}
},
"button_choose_files": {
"context": "Button: open the file picker to choose files to send.",
"translations": {
"en": "Choose files",
"fr": "Choisir des fichiers"
}
},
"button_choose_folder": {
"context": "Button: open the folder picker (send selection or receive folder).",
"translations": {
"en": "Choose folder",
"fr": "Choisir un dossier"
}
},
"button_clear": {
"context": "Button: clear the current input or selection.",
"translations": {
"en": "Clear",
"fr": "Effacer"
}
},
"button_close": {
"context": "Button: close the current sheet/dialog.",
"translations": {
"en": "Close",
"fr": "Fermer"
}
},
"button_create_new_transfer": {
"context": "Button: start creating a new transfer (Send tab).",
"translations": {
"en": "New transfer",
"fr": "Nouveau transfert"
}
},
"button_delete_transfer": {
"context": "Button: delete a transfer.",
"translations": {
"en": "Delete transfer",
"fr": "Supprimer le transfert"
}
},
"button_download_invitation": {
"context": "Button: save the invitation as a .vnd file.",
"translations": {
"en": "Save .vnd file",
"fr": "Enregistrer le fichier .vnd"
}
},
"button_native_share": {
"context": "Button: open the OS share sheet to share the invitation.",
"translations": {
"en": "Share invitation",
"fr": "Partager linvitation"
}
},
"button_open_settings": {
"context": "Button: open the OS Settings app (e.g. for permissions).",
"translations": {
"en": "Open Settings",
"fr": "Ouvrir les Réglages"
}
},
"button_receive": {
"context": "Button: receive label (Receive action).",
"translations": {
"en": "Receive",
"fr": "Recevoir"
}
},
"button_receive_files": {
"context": "Button: start receiving a transfer.",
"translations": {
"en": "Start receiving",
"fr": "Commencer à recevoir"
}
},
"button_refuse": {
"context": "Button: refuse a receiver's request.",
"translations": {
"en": "Refuse",
"fr": "Refuser"
}
},
"button_remove_file": {
"context": "Button: remove a single file from the send selection.",
"translations": {
"en": "Remove file",
"fr": "Retirer le fichier"
}
},
"button_reset_default": {
"context": "Button: reset a setting to its default value.",
"translations": {
"en": "Use default",
"fr": "Valeur par défaut"
}
},
"button_retry": {
"context": "Button: retry after a failed operation.",
"translations": {
"en": "Retry",
"fr": "Réessayer"
}
},
"button_share_file": {
"context": "Button: start sharing the transfer (make it available).",
"translations": {
"en": "Start sharing",
"fr": "Commencer le partage"
}
},
"button_sharing_file": {
"context": "Button: disabled/loading state while the transfer is being prepared.",
"translations": {
"en": "Preparing transfer…",
"fr": "Préparation du transfert…"
}
},
"button_show_in_files": {
"context": "Button: reveal a received file in the Files app.",
"translations": {
"en": "Show in Files",
"fr": "Afficher dans Fichiers"
}
},
"button_write_nfc": {
"context": "Button: write the invitation to an NFC tag.",
"translations": {
"en": "Write to NFC tag",
"fr": "Écrire sur un tag NFC"
}
},
"device_model_title": {
"context": "Device information row: device model label.",
"translations": {
"en": "Device model",
"fr": "Modèle de lappareil"
}
},
"device_name_title": {
"context": "Device information row: device name label.",
"translations": {
"en": "Device name",
"fr": "Nom de lappareil"
}
},
"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 dutilisation 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."
}
},
"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é."
}
},
"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é."
}
},
"diagnostics_title": {
"context": "Settings > Diagnostics: toggle title.",
"translations": {
"en": "Share diagnostics",
"fr": "Partager les diagnostics"
}
},
"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": "Laccès à la caméra est nécessaire pour scanner un QR code."
}
},
"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 lappareil."
}
},
"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 na pas pu accéder aux fichiers ou au dossier sélectionnés. Vérifiez les autorisations et réessayez."
}
},
"error_generic": {
"context": "Error: generic fallback message.",
"translations": {
"en": "Something went wrong. Try again.",
"fr": "Une erreur est survenue. Réessayez."
}
},
"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 na pas pu terminer son démarrage. Fermez lapp et réessayez."
}
},
"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 na pas pu être lue. Demandez-en une nouvelle à lexpéditeur."
}
},
"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 louvrir à nouveau."
}
},
"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."
}
},
"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 na pas pu être utilisé. Essayez-en un autre."
}
},
"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": "Lexpéditeur na pas approuvé ce transfert, ou il a été refusé."
}
},
"error_repository": {
"context": "Error: transfer data could not be saved locally.",
"translations": {
"en": "VniDrop could not save transfer data on this device.",
"fr": "VniDrop na pas pu enregistrer les données de transfert sur cet appareil."
}
},
"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 douvrir lélément sélectionné. Essayez de le choisir à nouveau."
}
},
"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."
}
},
"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 na pas pu ouvrir ses sockets réseau sur cet appareil."
}
},
"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 linvitation dans un instant."
}
},
"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 na pas pu être terminé. Vérifiez votre connexion et réessayez."
}
},
"field_receiver_name": {
"context": "Text field label: the receiver's display name.",
"translations": {
"en": "Receiver name",
"fr": "Nom du destinataire"
}
},
"field_sender_name": {
"context": "Text field label: the sender's display name.",
"translations": {
"en": "Sender name",
"fr": "Nom de lexpéditeur"
}
},
"field_transfer_name": {
"context": "Text field label: the name given to a transfer.",
"translations": {
"en": "Transfer name",
"fr": "Nom du transfert"
}
},
"field_username": {
"context": "Settings text field label: this device's display name.",
"translations": {
"en": "Display name",
"fr": "Nom daffichage"
}
},
"folder_status_permission_required": {
"context": "Receive-folder status: permission is required to write to the chosen folder.",
"translations": {
"en": "Permission needed",
"fr": "Autorisation requise"
}
},
"folder_status_unavailable": {
"context": "Receive-folder status: the chosen folder is unavailable.",
"translations": {
"en": "Unavailable",
"fr": "Indisponible"
}
},
"folder_status_validating": {
"context": "Receive-folder status: the folder is being checked.",
"translations": {
"en": "Checking folder…",
"fr": "Vérification du dossier…"
}
},
"folder_status_writable": {
"context": "Receive-folder status: the folder is valid and writable.",
"translations": {
"en": "Ready",
"fr": "Prêt"
}
},
"metadata_files": {
"context": "Transfer metadata label: number of files.",
"translations": {
"en": "Files",
"fr": "Fichiers"
}
},
"metadata_size": {
"context": "Transfer metadata label: total size.",
"translations": {
"en": "Size",
"fr": "Taille"
}
},
"metadata_status": {
"context": "Transfer metadata label: current status.",
"translations": {
"en": "Status",
"fr": "Statut"
}
},
"nav_receive": {
"context": "Bottom navigation: Receive tab label.",
"translations": {
"en": "Receive",
"fr": "Recevoir"
}
},
"nav_send": {
"context": "Bottom navigation: Send tab label.",
"translations": {
"en": "Send",
"fr": "Envoyer"
}
},
"nav_settings": {
"context": "Bottom navigation: Settings tab label.",
"translations": {
"en": "Settings",
"fr": "Réglages"
}
},
"network_title": {
"context": "Device information row: network label.",
"translations": {
"en": "Network",
"fr": "Réseau"
}
},
"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."
}
},
"notifications_enabled_message": {
"context": "Settings > Notifications: confirmation when notifications are enabled.",
"translations": {
"en": "Notifications enabled.",
"fr": "Notifications activées."
}
},
"notifications_local_title": {
"context": "Settings > Notifications: label for the allow-notifications action.",
"translations": {
"en": "Allow notifications",
"fr": "Autoriser les notifications"
}
},
"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."
}
},
"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 douvrir les réglages de notifications."
}
},
"notifications_title": {
"context": "Settings > Notifications: section title.",
"translations": {
"en": "Notifications",
"fr": "Notifications"
}
},
"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."
}
},
"os_version_title": {
"context": "Device information row: operating system version label.",
"translations": {
"en": "Operating system",
"fr": "Système dexploitation"
}
},
"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"
}
},
"preferences_title": {
"context": "Settings > Preferences: section title.",
"translations": {
"en": "Preferences",
"fr": "Préférences"
}
},
"progress_cancelled": {
"context": "Transfer progress label: cancelled.",
"translations": {
"en": "Cancelled",
"fr": "Annulé"
}
},
"progress_completed": {
"context": "Transfer progress label: completed.",
"translations": {
"en": "Completed",
"fr": "Terminé"
}
},
"progress_connected": {
"context": "Transfer progress label: connected.",
"translations": {
"en": "Connected",
"fr": "Connecté"
}
},
"progress_connecting": {
"context": "Transfer progress label: connecting.",
"translations": {
"en": "Connecting",
"fr": "Connexion"
}
},
"progress_downloading": {
"context": "Transfer progress label: downloading.",
"translations": {
"en": "Downloading",
"fr": "Téléchargement"
}
},
"progress_failed": {
"context": "Transfer progress label: failed.",
"translations": {
"en": "Failed",
"fr": "Échec"
}
},
"progress_getting_ready": {
"context": "Transfer progress label: getting ready.",
"translations": {
"en": "Getting ready",
"fr": "Préparation"
}
},
"progress_interrupted": {
"context": "Transfer progress label: the transfer was interrupted.",
"translations": {
"en": "Transfer interrupted",
"fr": "Transfert interrompu"
}
},
"progress_preparing": {
"context": "Transfer progress label: preparing.",
"translations": {
"en": "Preparing",
"fr": "Préparation"
}
},
"progress_ready": {
"context": "Transfer progress label: ready.",
"translations": {
"en": "Ready",
"fr": "Prêt"
}
},
"progress_receiving": {
"context": "Transfer progress label: receiving.",
"translations": {
"en": "Receiving",
"fr": "Réception"
}
},
"progress_requesting_access": {
"context": "Transfer progress label: requesting access from the sender.",
"translations": {
"en": "Requesting access",
"fr": "Demande daccès"
}
},
"progress_saving": {
"context": "Transfer progress label: saving received files.",
"translations": {
"en": "Saving",
"fr": "Enregistrement"
}
},
"progress_sending": {
"context": "Transfer progress label: sending.",
"translations": {
"en": "Sending",
"fr": "Envoi"
}
},
"progress_sending_to_count": {
"context": "Transfer progress label: sending to N receivers. %lld = receiver count.",
"translations": {
"en": "Sending to {count}",
"fr": "Envoi à {count}"
},
"args": [
{
"name": "count",
"type": "int"
}
]
},
"progress_share_ready": {
"context": "Transfer progress label: the share is ready.",
"translations": {
"en": "Ready to share",
"fr": "Prêt à partager"
}
},
"progress_working": {
"context": "Transfer progress label: generic working/in-progress state.",
"translations": {
"en": "Working…",
"fr": "En cours…"
}
},
"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 dinvitation à votre disposition."
}
},
"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 ?"
}
},
"receive_clear_history": {
"context": "Receive history: action to clear all history.",
"translations": {
"en": "Clear history",
"fr": "Effacer lhistorique"
}
},
"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 VniDrops history. Downloaded files will remain on this device.",
"fr": "Toutes les réceptions terminées, échouées et annulées seront retirées de lhistorique de VniDrop. Les fichiers téléchargés resteront sur cet appareil."
}
},
"receive_clear_history_title": {
"context": "Receive history: confirmation dialog title for clearing all history.",
"translations": {
"en": "Clear receive history?",
"fr": "Effacer lhistorique de réception ?"
}
},
"receive_completed": {
"context": "Receive flow: toast/message when a transfer finishes downloading.",
"translations": {
"en": "Transfer received.",
"fr": "Transfert reçu."
}
},
"receive_delete_history_description": {
"context": "Receive history: confirmation body for removing one item. {arg1} = transfer name.",
"args": [
{
"name": "arg1",
"type": "string"
}
],
"translations": {
"en": "“{arg1}” will be removed from VniDrops history. The downloaded file will remain on this device.",
"fr": "« {arg1} » sera retiré de lhistorique de VniDrop. Le fichier téléchargé restera sur cet appareil."
}
},
"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 lhistorique de réception"
}
},
"receive_delete_history_title": {
"context": "Receive history: confirmation title for removing one item.",
"translations": {
"en": "Remove from history?",
"fr": "Retirer de lhistorique ?"
}
},
"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."
}
},
"receive_empty_title": {
"context": "Receive tab empty state: title when nothing has been received.",
"translations": {
"en": "Nothing received yet",
"fr": "Rien reçu pour linstant"
}
},
"receive_history_cleared": {
"context": "Receive history: toast confirming history was cleared.",
"translations": {
"en": "Receive history cleared.",
"fr": "Historique de réception effacé."
}
},
"receive_history_title": {
"context": "Receive tab: History section title.",
"translations": {
"en": "History",
"fr": "Historique"
}
},
"receive_method_file": {
"context": "Receive method: open a .vnd invitation file.",
"translations": {
"en": "Open a .vnd invitation",
"fr": "Ouvrir une invitation .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."
}
},
"receive_method_nfc": {
"context": "Receive method: read an NFC tag.",
"translations": {
"en": "Read NFC tag",
"fr": "Lire un tag NFC"
}
},
"receive_method_nfc_description": {
"context": "Receive method description: hold near the sender's NFC tag.",
"translations": {
"en": "Hold this device near the senders invitation tag.",
"fr": "Approchez cet appareil du tag dinvitation de lexpéditeur."
}
},
"receive_method_scan": {
"context": "Receive method: scan a QR code.",
"translations": {
"en": "Scan QR code",
"fr": "Scanner un QR code"
}
},
"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 senders VniDrop code.",
"fr": "Utilisez la caméra pour scanner le code VniDrop de lexpéditeur."
}
},
"receive_new_subtitle": {
"context": "Receive tab: subtitle under the title.",
"translations": {
"en": "Transfers youve received on this device.",
"fr": "Transferts que vous avez reçus sur cet appareil."
}
},
"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…"
}
},
"receive_open_files_failed": {
"context": "Receive flow: error when opening VniDrop's folder in Files fails.",
"translations": {
"en": "Couldnt open VniDrop in Files.",
"fr": "Impossible douvrir VniDrop dans Fichiers."
}
},
"receive_review_title": {
"context": "Receive flow: title of the review screen before accepting a transfer.",
"translations": {
"en": "Review transfer",
"fr": "Vérifier le transfert"
}
},
"receive_title": {
"context": "Receive tab: screen title.",
"translations": {
"en": "Receive",
"fr": "Recevoir"
}
},
"receive_unknown_transfer": {
"context": "Receive flow: fallback name for a transfer with no title.",
"translations": {
"en": "VniDrop transfer",
"fr": "Transfert 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"
}
},
"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. À nutiliser que pour des éléments que vous êtes à laise de partager."
}
},
"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 linvitation peut télécharger jusquà ce que vous arrêtiez le partage. Ne lutilisez pas pour des éléments privés ou sensibles."
}
},
"send_access_approval": {
"context": "Send access option: approve each receiver.",
"translations": {
"en": "Ask before each download",
"fr": "Demander avant chaque téléchargement"
}
},
"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."
}
},
"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 ?"
}
},
"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."
}
},
"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"
}
},
"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 dinvitation."
}
},
"send_empty_title": {
"context": "Send tab empty state: title when nothing has been shared.",
"translations": {
"en": "Nothing shared yet",
"fr": "Rien partagé pour linstant"
}
},
"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"
}
},
"send_folder_label": {
"context": "Send flow: label indicating a selected item is a folder.",
"translations": {
"en": "Folder",
"fr": "Dossier"
}
},
"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"
}
},
"send_new_transfer_title": {
"context": "Send flow: title for the new-transfer step.",
"translations": {
"en": "New transfer",
"fr": "Nouveau transfert"
}
},
"send_review_title": {
"context": "Send flow: title of the review-transfer step before creating it.",
"translations": {
"en": "Review transfer",
"fr": "Vérifier le transfert"
}
},
"send_selected_files_count": {
"context": "Send flow: count of files chosen. {count} = selected files. NOTE: singular case reads '1 files' — should become a plural.",
"args": [
{
"name": "count",
"type": "int"
}
],
"translations": {
"en": "{count} files selected",
"fr": "{count} fichiers sélectionnés"
}
},
"send_stop_sharing": {
"context": "Transfer details: action to stop sharing a transfer.",
"translations": {
"en": "Stop sharing",
"fr": "Arrêter le partage"
}
},
"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 quArrêté."
}
},
"send_subtitle": {
"context": "Send tab: subtitle under the title.",
"translations": {
"en": "Transfers youre sharing from this device.",
"fr": "Transferts que vous partagez depuis cet appareil."
}
},
"send_title": {
"context": "Send tab: screen title.",
"translations": {
"en": "Send",
"fr": "Envoyer"
}
},
"send_transfer_created": {
"context": "Send flow: toast confirming a transfer was created.",
"translations": {
"en": "Transfer created.",
"fr": "Transfert créé."
}
},
"send_transfer_details_title": {
"context": "Send flow: title of the transfer details screen.",
"translations": {
"en": "Transfer details",
"fr": "Détails du transfert"
}
},
"send_transfers_title": {
"context": "Send tab: 'Your transfers' list heading.",
"translations": {
"en": "Your transfers",
"fr": "Vos transferts"
}
},
"settings_subtitle": {
"context": "Settings screen: subtitle summarizing what's configurable.",
"translations": {
"en": "Your name, where transfers are saved, appearance, and notifications.",
"fr": "Votre nom, lemplacement denregistrement des transferts, lapparence et les notifications."
}
},
"settings_title": {
"context": "Settings screen: title.",
"translations": {
"en": "Settings",
"fr": "Réglages"
}
},
"snackbar_dismiss": {
"context": "Snackbar: accessibility label / action to dismiss the snackbar.",
"translations": {
"en": "Dismiss",
"fr": "Ignorer"
}
},
"status_available": {
"context": "Transfer status: available (actively shared).",
"translations": {
"en": "Available",
"fr": "Disponible"
}
},
"status_cancelled": {
"context": "Transfer status: cancelled.",
"translations": {
"en": "Cancelled",
"fr": "Annulé"
}
},
"status_completed": {
"context": "Transfer status: completed.",
"translations": {
"en": "Completed",
"fr": "Terminé"
}
},
"status_failed": {
"context": "Transfer status: failed.",
"translations": {
"en": "Failed",
"fr": "Échec"
}
},
"status_preparing": {
"context": "Transfer status: preparing.",
"translations": {
"en": "Preparing",
"fr": "Préparation"
}
},
"status_receiving": {
"context": "Transfer status: receiving.",
"translations": {
"en": "Receiving",
"fr": "Réception"
}
},
"status_stopped": {
"context": "Transfer status: stopped.",
"translations": {
"en": "Stopped",
"fr": "Arrêté"
}
},
"storage_calculating": {
"context": "Settings > Storage: placeholder while a size is being calculated.",
"translations": {
"en": "Calculating…",
"fr": "Calcul…"
}
},
"storage_delete_transfers": {
"context": "Settings > Storage: button to delete all transfer records.",
"translations": {
"en": "Delete all transfers",
"fr": "Supprimer tous les transferts"
}
},
"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 cant 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."
}
},
"storage_deleting": {
"context": "Settings > Storage: progress label while transfers are being deleted.",
"translations": {
"en": "Deleting…",
"fr": "Suppression…"
}
},
"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 youve 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."
}
},
"storage_received_files": {
"context": "Settings > Storage: label for the received-files size row.",
"translations": {
"en": "Received files",
"fr": "Fichiers reçus"
}
},
"storage_temporary": {
"context": "Settings > Storage: label for the temporary-files size row.",
"translations": {
"en": "Temporary files",
"fr": "Fichiers temporaires"
}
},
"storage_title": {
"context": "Settings > Storage: section title.",
"translations": {
"en": "Storage",
"fr": "Stockage"
}
},
"storage_total": {
"context": "Settings > Storage: label for the total-size row.",
"translations": {
"en": "Total",
"fr": "Total"
}
},
"storage_transfer_data": {
"context": "Settings > Storage: label for the transfer-engine data size row.",
"translations": {
"en": "Transfer data",
"fr": "Données de transfert"
}
},
"storage_transfers_deleted": {
"context": "Settings > Storage: toast confirming all transfers were deleted.",
"translations": {
"en": "All transfers deleted",
"fr": "Tous les transferts supprimés"
}
},
"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"
}
},
"transfer_activity_title": {
"context": "Transfer details: Activity section title.",
"translations": {
"en": "Activity",
"fr": "Activité"
}
},
"transfer_delete_description": {
"context": "Transfer details: confirmation body for deleting a transfer. {arg1} = transfer name.",
"args": [
{
"name": "arg1",
"type": "string"
}
],
"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."
}
},
"transfer_delete_title": {
"context": "Transfer details: confirmation title for deleting a transfer.",
"translations": {
"en": "Delete transfer?",
"fr": "Supprimer le transfert ?"
}
},
"transfer_deleted": {
"context": "Transfer details: toast confirming a transfer was deleted.",
"translations": {
"en": "Transfer deleted.",
"fr": "Transfert supprimé."
}
},
"transfer_deleting": {
"context": "Transfer details: progress label while a transfer is being deleted.",
"translations": {
"en": "Deleting…",
"fr": "Suppression…"
}
},
"transfer_details_title": {
"context": "Transfer details: screen title.",
"translations": {
"en": "Transfer details",
"fr": "Détails du transfert"
}
},
"transfer_event_approved": {
"context": "Transfer activity event: a receiver's access was approved.",
"translations": {
"en": "Receiver access approved",
"fr": "Accès du destinataire approuvé"
}
},
"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"
}
},
"transfer_event_connecting": {
"context": "Transfer activity event: connecting to the sender.",
"translations": {
"en": "Connecting to sender",
"fr": "Connexion à lexpéditeur"
}
},
"transfer_event_downloading": {
"context": "Transfer activity event: downloading.",
"translations": {
"en": "Downloading",
"fr": "Téléchargement"
}
},
"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"
}
},
"transfer_event_preparing": {
"context": "Transfer activity event: preparing the transfer.",
"translations": {
"en": "Preparing your transfer",
"fr": "Préparation de votre transfert"
}
},
"transfer_event_ready": {
"context": "Transfer activity event: ready to share.",
"translations": {
"en": "Ready to share",
"fr": "Prêt à partager"
}
},
"transfer_event_refused": {
"context": "Transfer activity event: a receiver's access was refused.",
"translations": {
"en": "Receiver access refused",
"fr": "Accès du destinataire refusé"
}
},
"transfer_event_requested": {
"context": "Transfer activity event: a receiver requested access.",
"translations": {
"en": "A receiver requested access",
"fr": "Un destinataire a demandé laccès"
}
},
"transfer_event_saving": {
"context": "Transfer activity event: saving received files.",
"translations": {
"en": "Saving",
"fr": "Enregistrement"
}
},
"transfer_event_stopped": {
"context": "Transfer activity event: sharing was stopped.",
"translations": {
"en": "Sharing stopped",
"fr": "Partage arrêté"
}
},
"transfer_event_updated": {
"context": "Transfer activity event: the transfer was updated.",
"translations": {
"en": "Transfer updated",
"fr": "Transfert mis à jour"
}
},
"transfer_file_count": {
"context": "Transfer subtitle: file count with pluralization. {count} = number of files.",
"args": [
{
"name": "count",
"type": "int"
}
],
"plural": {
"en": {
"other": "{count} files",
"one": "{count} file"
},
"fr": {
"one": "{count} fichier",
"other": "{count} fichiers"
}
}
},
"transfer_invitation_saved": {
"context": "Transfer share: toast confirming the invitation file was saved.",
"translations": {
"en": "Invitation saved.",
"fr": "Invitation enregistrée."
}
},
"transfer_nearby_device": {
"context": "Transfer share/receivers: label for a nearby device.",
"translations": {
"en": "Nearby device",
"fr": "Appareil à proximité"
}
},
"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 nest pas disponible sur cet appareil."
}
},
"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 dun tag NFC inscriptible."
}
},
"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."
}
},
"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 linstant."
}
},
"transfer_no_receivers": {
"context": "Transfer details: empty state for the Receivers section.",
"translations": {
"en": "Nobody has requested this transfer yet.",
"fr": "Personne na encore demandé ce transfert."
}
},
"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"
}
},
"transfer_receiver_completed": {
"context": "Receiver status: received successfully.",
"translations": {
"en": "Received successfully",
"fr": "Reçu avec succès"
}
},
"transfer_receiver_expired": {
"context": "Receiver status: the request expired.",
"translations": {
"en": "Request expired",
"fr": "Demande expirée"
}
},
"transfer_receiver_refused": {
"context": "Receiver status: the request was refused.",
"translations": {
"en": "Request refused",
"fr": "Demande refusée"
}
},
"transfer_receiver_requested": {
"context": "Receiver status: waiting for the sender's approval.",
"translations": {
"en": "Waiting for your approval",
"fr": "En attente de votre approbation"
}
},
"transfer_receiver_unknown": {
"context": "Receiver status: status unavailable/unknown.",
"translations": {
"en": "Status unavailable",
"fr": "Statut indisponible"
}
},
"transfer_receivers_completed_count": {
"context": "Receivers summary: how many receivers completed. {count} = completed receivers.",
"args": [
{
"name": "count",
"type": "int"
}
],
"translations": {
"en": "{count} completed",
"fr": "{count} terminés"
}
},
"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"
}
},
"transfer_receivers_pending": {
"context": "Receivers summary: how many requests are waiting. {count} = pending receivers.",
"args": [
{
"name": "count",
"type": "int"
}
],
"translations": {
"en": "{count} waiting",
"fr": "{count} en attente"
}
},
"transfer_receivers_title": {
"context": "Transfer details: Receivers section title.",
"translations": {
"en": "Receivers",
"fr": "Destinataires"
}
},
"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"
}
},
"transfer_share_description": {
"context": "Transfer details: description under the Share section.",
"translations": {
"en": "QR code, invitation file, and nearby options",
"fr": "QR code, fichier dinvitation et options à proximité"
}
},
"transfer_share_title": {
"context": "Transfer details: Share section title.",
"translations": {
"en": "Share",
"fr": "Partager"
}
},
"value_unavailable": {
"context": "Placeholder shown when a device-info or metadata value can't be read.",
"translations": {
"en": "Not available",
"fr": "Non disponible"
}
},
"version_title": {
"context": "Device information / Settings row: app version label.",
"translations": {
"en": "App version",
"fr": "Version de lapp"
}
}
}
}