diff --git a/apple/VniDrop/Resources/Localizable.xcstrings b/apple/VniDrop/Resources/Localizable.xcstrings index 8a0a4ba..b630d22 100644 --- a/apple/VniDrop/Resources/Localizable.xcstrings +++ b/apple/VniDrop/Resources/Localizable.xcstrings @@ -2,11 +2,11 @@ "sourceLanguage": "en", "strings": { "%@": { - "comment": "TODO: describe where this appears.", + "comment": "Apple format passthrough placeholder (single value). Legacy literal key — rename to a semantic key.", "extractionState": "manual" }, "%@ %@ · %@": { - "comment": "TODO: describe where this appears.", + "comment": "Apple format template composing three values with a middot separator (e.g. metadata rows). Legacy literal key — rename.", "extractionState": "manual", "localizations": { "en": { @@ -18,7 +18,7 @@ } }, "%@ · %@": { - "comment": "TODO: describe where this appears.", + "comment": "Apple format template composing two values with a middot separator. Legacy literal key — rename.", "extractionState": "manual", "localizations": { "en": { @@ -30,11 +30,11 @@ } }, "%@%%": { - "comment": "TODO: describe where this appears.", + "comment": "Apple format template appending a percent sign to a value (e.g. battery level). Legacy literal key — rename.", "extractionState": "manual" }, "about_bug_report": { - "comment": "TODO: describe where this appears.", + "comment": "About screen: button/link that opens the bug report form.", "extractionState": "manual", "localizations": { "en": { @@ -46,7 +46,7 @@ } }, "about_description": { - "comment": "TODO: describe where this appears.", + "comment": "About screen: intro paragraph describing what VniDrop does.", "extractionState": "manual", "localizations": { "en": { @@ -58,7 +58,7 @@ } }, "about_is_direct": { - "comment": "TODO: describe where this appears.", + "comment": "About screen, 'What VniDrop is' list: point about direct device-to-device transfer.", "extractionState": "manual", "localizations": { "en": { @@ -70,7 +70,7 @@ } }, "about_is_encrypted": { - "comment": "TODO: describe where this appears.", + "comment": "About screen, 'What VniDrop is' list: point about encrypted, verified connections.", "extractionState": "manual", "localizations": { "en": { @@ -82,7 +82,7 @@ } }, "about_is_in_control": { - "comment": "TODO: describe where this appears.", + "comment": "About screen, 'What VniDrop is' list: point about controlling who receives.", "extractionState": "manual", "localizations": { "en": { @@ -94,7 +94,7 @@ } }, "about_is_no_account": { - "comment": "TODO: describe where this appears.", + "comment": "About screen, 'What VniDrop is' list: point about being account-free.", "extractionState": "manual", "localizations": { "en": { @@ -106,7 +106,7 @@ } }, "about_is_open": { - "comment": "TODO: describe where this appears.", + "comment": "About screen, 'What VniDrop is' list: point about being open source.", "extractionState": "manual", "localizations": { "en": { @@ -118,7 +118,7 @@ } }, "about_is_title": { - "comment": "TODO: describe where this appears.", + "comment": "About screen: section heading for the 'What VniDrop is' list.", "extractionState": "manual", "localizations": { "en": { @@ -130,7 +130,7 @@ } }, "about_isnt_cloud": { - "comment": "TODO: describe where this appears.", + "comment": "About screen, 'What VniDrop isn't' list: point about not being cloud storage.", "extractionState": "manual", "localizations": { "en": { @@ -142,7 +142,7 @@ } }, "about_isnt_public": { - "comment": "TODO: describe where this appears.", + "comment": "About screen, 'What VniDrop isn't' list: point about invitations not being public broadcasts.", "extractionState": "manual", "localizations": { "en": { @@ -154,7 +154,7 @@ } }, "about_isnt_sync": { - "comment": "TODO: describe where this appears.", + "comment": "About screen, 'What VniDrop isn't' list: point about not being sync/backup.", "extractionState": "manual", "localizations": { "en": { @@ -166,7 +166,7 @@ } }, "about_isnt_title": { - "comment": "TODO: describe where this appears.", + "comment": "About screen: section heading for the 'What VniDrop isn't' list.", "extractionState": "manual", "localizations": { "en": { @@ -178,7 +178,7 @@ } }, "about_license_label": { - "comment": "TODO: describe where this appears.", + "comment": "About screen: label for the license row.", "extractionState": "manual", "localizations": { "en": { @@ -190,7 +190,7 @@ } }, "about_privacy": { - "comment": "TODO: describe where this appears.", + "comment": "About screen: link to the privacy policy.", "extractionState": "manual", "localizations": { "en": { @@ -202,7 +202,7 @@ } }, "about_privacy_capability": { - "comment": "TODO: describe where this appears.", + "comment": "About screen, Privacy & security list: point that invitations are capabilities to share carefully.", "extractionState": "manual", "localizations": { "en": { @@ -214,7 +214,7 @@ } }, "about_privacy_deny": { - "comment": "TODO: describe where this appears.", + "comment": "About screen, Privacy & security list: point about denying unknown requests by default.", "extractionState": "manual", "localizations": { "en": { @@ -226,7 +226,7 @@ } }, "about_privacy_local": { - "comment": "TODO: describe where this appears.", + "comment": "About screen, Privacy & security list: point about received files staying local and never overwriting.", "extractionState": "manual", "localizations": { "en": { @@ -238,7 +238,7 @@ } }, "about_privacy_policy_label": { - "comment": "TODO: describe where this appears.", + "comment": "About screen: label for the privacy policy row.", "extractionState": "manual", "localizations": { "en": { @@ -250,7 +250,7 @@ } }, "about_privacy_relay": { - "comment": "TODO: describe where this appears.", + "comment": "About screen, Privacy & security list: point explaining encrypted relays.", "extractionState": "manual", "localizations": { "en": { @@ -262,7 +262,7 @@ } }, "about_privacy_title": { - "comment": "TODO: describe where this appears.", + "comment": "About screen: section heading for the Privacy & security list.", "extractionState": "manual", "localizations": { "en": { @@ -274,7 +274,7 @@ } }, "about_tagline": { - "comment": "TODO: describe where this appears.", + "comment": "About screen: short tagline under the app name.", "extractionState": "manual", "localizations": { "en": { @@ -286,7 +286,7 @@ } }, "about_title": { - "comment": "TODO: describe where this appears.", + "comment": "About screen: navigation/screen title.", "extractionState": "manual", "localizations": { "en": { @@ -298,7 +298,7 @@ } }, "appearance_auto_description": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Appearance: description for the System/auto option.", "extractionState": "manual", "localizations": { "en": { @@ -310,7 +310,7 @@ } }, "appearance_dark_mode": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Appearance: label for the dark theme option.", "extractionState": "manual", "localizations": { "en": { @@ -322,7 +322,7 @@ } }, "appearance_light_mode": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Appearance: label for the light theme option.", "extractionState": "manual", "localizations": { "en": { @@ -334,7 +334,7 @@ } }, "appearance_system_mode": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Appearance: label for the follow-system option.", "extractionState": "manual", "localizations": { "en": { @@ -346,7 +346,7 @@ } }, "appearance_title": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Appearance: section title.", "extractionState": "manual", "localizations": { "en": { @@ -358,7 +358,7 @@ } }, "approval_connection_request": { - "comment": "TODO: describe where this appears.", + "comment": "Approval prompt: title when a receiver requests to download a transfer.", "extractionState": "manual", "localizations": { "en": { @@ -370,7 +370,7 @@ } }, "approval_endpoint_id": { - "comment": "TODO: describe where this appears.", + "comment": "Approval prompt: shows the requesting device's ID. {arg1} = device/endpoint identifier.", "extractionState": "manual", "localizations": { "en": { @@ -382,7 +382,7 @@ } }, "approval_nearby_device": { - "comment": "TODO: describe where this appears.", + "comment": "Approval prompt: fallback label for a requester with no display name.", "extractionState": "manual", "localizations": { "en": { @@ -394,7 +394,7 @@ } }, "approval_pending_count": { - "comment": "TODO: describe where this appears.", + "comment": "Send/transfer list: badge showing how many receive requests are awaiting approval. {count} = pending requests.", "extractionState": "manual", "localizations": { "en": { @@ -406,7 +406,7 @@ } }, "approval_request_body": { - "comment": "TODO: describe where this appears.", + "comment": "Approval prompt body: '{arg1} wants to receive \"{arg2}\".' {arg1} = requester name, {arg2} = transfer name.", "extractionState": "manual", "localizations": { "en": { @@ -418,7 +418,7 @@ } }, "battery_level_title": { - "comment": "TODO: describe where this appears.", + "comment": "Device information row: battery level label.", "extractionState": "manual", "localizations": { "en": { @@ -430,7 +430,7 @@ } }, "bug_report_contact_hint": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: placeholder text in the contact email field.", "extractionState": "manual", "localizations": { "en": { @@ -442,7 +442,7 @@ } }, "bug_report_contact_label": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: label for the optional contact email field.", "extractionState": "manual", "localizations": { "en": { @@ -454,7 +454,7 @@ } }, "bug_report_description": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: intro text explaining what gets attached.", "extractionState": "manual", "localizations": { "en": { @@ -466,7 +466,7 @@ } }, "bug_report_device_section": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: heading for the attached device information section.", "extractionState": "manual", "localizations": { "en": { @@ -478,7 +478,7 @@ } }, "bug_report_expected_hint": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: placeholder in the 'what did you expect' field.", "extractionState": "manual", "localizations": { "en": { @@ -490,7 +490,7 @@ } }, "bug_report_expected_label": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: label for the expected-behavior field.", "extractionState": "manual", "localizations": { "en": { @@ -502,7 +502,7 @@ } }, "bug_report_include_logs": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: toggle label to attach recent logs.", "extractionState": "manual", "localizations": { "en": { @@ -514,7 +514,7 @@ } }, "bug_report_include_logs_description": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: explanation under the include-logs toggle.", "extractionState": "manual", "localizations": { "en": { @@ -526,7 +526,7 @@ } }, "bug_report_logs_size": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: label showing the size of the log attachment.", "extractionState": "manual", "localizations": { "en": { @@ -538,7 +538,7 @@ } }, "bug_report_missing_expected": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: validation error when the expected-behavior field is empty.", "extractionState": "manual", "localizations": { "en": { @@ -550,7 +550,7 @@ } }, "bug_report_missing_what": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: validation error when the what-happened field is empty.", "extractionState": "manual", "localizations": { "en": { @@ -562,7 +562,7 @@ } }, "bug_report_steps_hint": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: placeholder in the steps-to-reproduce field.", "extractionState": "manual", "localizations": { "en": { @@ -574,7 +574,7 @@ } }, "bug_report_steps_label": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: label for the optional steps-to-reproduce field.", "extractionState": "manual", "localizations": { "en": { @@ -586,7 +586,7 @@ } }, "bug_report_submit": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: submit button.", "extractionState": "manual", "localizations": { "en": { @@ -598,7 +598,7 @@ } }, "bug_report_submit_failed": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: error message when submission fails.", "extractionState": "manual", "localizations": { "en": { @@ -610,7 +610,7 @@ } }, "bug_report_submitted": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: confirmation message after a successful submission.", "extractionState": "manual", "localizations": { "en": { @@ -622,7 +622,7 @@ } }, "bug_report_submitting": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: progress label while the report is being sent.", "extractionState": "manual", "localizations": { "en": { @@ -634,7 +634,7 @@ } }, "bug_report_what_hint": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: placeholder in the what-happened field.", "extractionState": "manual", "localizations": { "en": { @@ -646,7 +646,7 @@ } }, "bug_report_what_label": { - "comment": "TODO: describe where this appears.", + "comment": "Bug report form: label for the what-happened field.", "extractionState": "manual", "localizations": { "en": { @@ -658,7 +658,7 @@ } }, "button_approve": { - "comment": "TODO: describe where this appears.", + "comment": "Button: approve a receiver's request.", "extractionState": "manual", "localizations": { "en": { @@ -670,7 +670,7 @@ } }, "button_back": { - "comment": "TODO: describe where this appears.", + "comment": "Button: go back to the previous step/screen.", "extractionState": "manual", "localizations": { "en": { @@ -682,7 +682,7 @@ } }, "button_cancel": { - "comment": "TODO: describe where this appears.", + "comment": "Button: cancel the current action or dialog.", "extractionState": "manual", "localizations": { "en": { @@ -694,7 +694,7 @@ } }, "button_cancel_receive": { - "comment": "TODO: describe where this appears.", + "comment": "Button: cancel an in-progress receive.", "extractionState": "manual", "localizations": { "en": { @@ -706,7 +706,7 @@ } }, "button_change_files": { - "comment": "TODO: describe where this appears.", + "comment": "Button: change the selected files in the send flow.", "extractionState": "manual", "localizations": { "en": { @@ -718,7 +718,7 @@ } }, "button_choose_files": { - "comment": "TODO: describe where this appears.", + "comment": "Button: open the file picker to choose files to send.", "extractionState": "manual", "localizations": { "en": { @@ -730,7 +730,7 @@ } }, "button_choose_folder": { - "comment": "TODO: describe where this appears.", + "comment": "Button: open the folder picker (send selection or receive folder).", "extractionState": "manual", "localizations": { "en": { @@ -742,7 +742,7 @@ } }, "button_clear": { - "comment": "TODO: describe where this appears.", + "comment": "Button: clear the current input or selection.", "extractionState": "manual", "localizations": { "en": { @@ -754,7 +754,7 @@ } }, "button_close": { - "comment": "TODO: describe where this appears.", + "comment": "Button: close the current sheet/dialog.", "extractionState": "manual", "localizations": { "en": { @@ -766,7 +766,7 @@ } }, "button_create_new_transfer": { - "comment": "TODO: describe where this appears.", + "comment": "Button: start creating a new transfer (Send tab).", "extractionState": "manual", "localizations": { "en": { @@ -778,7 +778,7 @@ } }, "button_delete_transfer": { - "comment": "TODO: describe where this appears.", + "comment": "Button: delete a transfer.", "extractionState": "manual", "localizations": { "en": { @@ -790,7 +790,7 @@ } }, "button_download_invitation": { - "comment": "TODO: describe where this appears.", + "comment": "Button: save the invitation as a .vnd file.", "extractionState": "manual", "localizations": { "en": { @@ -802,7 +802,7 @@ } }, "button_native_share": { - "comment": "TODO: describe where this appears.", + "comment": "Button: open the OS share sheet to share the invitation.", "extractionState": "manual", "localizations": { "en": { @@ -814,7 +814,7 @@ } }, "button_open_settings": { - "comment": "TODO: describe where this appears.", + "comment": "Button: open the OS Settings app (e.g. for permissions).", "extractionState": "manual", "localizations": { "en": { @@ -826,7 +826,7 @@ } }, "button_receive": { - "comment": "TODO: describe where this appears.", + "comment": "Button: receive label (Receive action).", "extractionState": "manual", "localizations": { "en": { @@ -838,7 +838,7 @@ } }, "button_receive_files": { - "comment": "TODO: describe where this appears.", + "comment": "Button: start receiving a transfer.", "extractionState": "manual", "localizations": { "en": { @@ -850,7 +850,7 @@ } }, "button_refuse": { - "comment": "TODO: describe where this appears.", + "comment": "Button: refuse a receiver's request.", "extractionState": "manual", "localizations": { "en": { @@ -862,7 +862,7 @@ } }, "button_remove_file": { - "comment": "TODO: describe where this appears.", + "comment": "Button: remove a single file from the send selection.", "extractionState": "manual", "localizations": { "en": { @@ -874,7 +874,7 @@ } }, "button_reset_default": { - "comment": "TODO: describe where this appears.", + "comment": "Button: reset a setting to its default value.", "extractionState": "manual", "localizations": { "en": { @@ -886,7 +886,7 @@ } }, "button_retry": { - "comment": "TODO: describe where this appears.", + "comment": "Button: retry after a failed operation.", "extractionState": "manual", "localizations": { "en": { @@ -898,7 +898,7 @@ } }, "button_share_file": { - "comment": "TODO: describe where this appears.", + "comment": "Button: start sharing the transfer (make it available).", "extractionState": "manual", "localizations": { "en": { @@ -910,7 +910,7 @@ } }, "button_sharing_file": { - "comment": "TODO: describe where this appears.", + "comment": "Button: disabled/loading state while the transfer is being prepared.", "extractionState": "manual", "localizations": { "en": { @@ -922,7 +922,7 @@ } }, "button_show_in_files": { - "comment": "TODO: describe where this appears.", + "comment": "Button: reveal a received file in the Files app.", "extractionState": "manual", "localizations": { "en": { @@ -934,7 +934,7 @@ } }, "button_write_nfc": { - "comment": "TODO: describe where this appears.", + "comment": "Button: write the invitation to an NFC tag.", "extractionState": "manual", "localizations": { "en": { @@ -946,7 +946,7 @@ } }, "device_model_title": { - "comment": "TODO: describe where this appears.", + "comment": "Device information row: device model label.", "extractionState": "manual", "localizations": { "en": { @@ -958,7 +958,7 @@ } }, "device_name_title": { - "comment": "TODO: describe where this appears.", + "comment": "Device information row: device name label.", "extractionState": "manual", "localizations": { "en": { @@ -970,7 +970,7 @@ } }, "diagnostics_description": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Diagnostics: explanation of what anonymous diagnostics collect.", "extractionState": "manual", "localizations": { "en": { @@ -982,7 +982,7 @@ } }, "diagnostics_disabled_message": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Diagnostics: confirmation shown when diagnostics are turned off.", "extractionState": "manual", "localizations": { "en": { @@ -994,7 +994,7 @@ } }, "diagnostics_enabled_message": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Diagnostics: confirmation shown when diagnostics are turned on.", "extractionState": "manual", "localizations": { "en": { @@ -1006,7 +1006,7 @@ } }, "diagnostics_title": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Diagnostics: toggle title.", "extractionState": "manual", "localizations": { "en": { @@ -1018,7 +1018,7 @@ } }, "error_camera": { - "comment": "TODO: describe where this appears.", + "comment": "Error: camera permission is needed to scan a QR code.", "extractionState": "manual", "localizations": { "en": { @@ -1030,7 +1030,7 @@ } }, "error_device_info": { - "comment": "TODO: describe where this appears.", + "comment": "Error: device information could not be loaded.", "extractionState": "manual", "localizations": { "en": { @@ -1042,7 +1042,7 @@ } }, "error_filesystem": { - "comment": "TODO: describe where this appears.", + "comment": "Error: the selected files/folder could not be accessed.", "extractionState": "manual", "localizations": { "en": { @@ -1054,7 +1054,7 @@ } }, "error_generic": { - "comment": "TODO: describe where this appears.", + "comment": "Error: generic fallback message.", "extractionState": "manual", "localizations": { "en": { @@ -1066,7 +1066,7 @@ } }, "error_initialization": { - "comment": "TODO: describe where this appears.", + "comment": "Error: the app failed to finish starting up.", "extractionState": "manual", "localizations": { "en": { @@ -1078,7 +1078,7 @@ } }, "error_invalid_ticket": { - "comment": "TODO: describe where this appears.", + "comment": "Error: the invitation/ticket could not be parsed.", "extractionState": "manual", "localizations": { "en": { @@ -1090,7 +1090,7 @@ } }, "error_invitation_empty": { - "comment": "TODO: describe where this appears.", + "comment": "Error: the opened invitation contained no data.", "extractionState": "manual", "localizations": { "en": { @@ -1102,7 +1102,7 @@ } }, "error_missing_native_library": { - "comment": "TODO: describe where this appears.", + "comment": "Error: the native library is missing from the build.", "extractionState": "manual", "localizations": { "en": { @@ -1114,7 +1114,7 @@ } }, "error_nfc": { - "comment": "TODO: describe where this appears.", + "comment": "Error: the NFC tag could not be read/used.", "extractionState": "manual", "localizations": { "en": { @@ -1126,7 +1126,7 @@ } }, "error_permission": { - "comment": "TODO: describe where this appears.", + "comment": "Error: the transfer was not approved or was refused by the sender.", "extractionState": "manual", "localizations": { "en": { @@ -1138,7 +1138,7 @@ } }, "error_repository": { - "comment": "TODO: describe where this appears.", + "comment": "Error: transfer data could not be saved locally.", "extractionState": "manual", "localizations": { "en": { @@ -1150,7 +1150,7 @@ } }, "error_selection_failed": { - "comment": "TODO: describe where this appears.", + "comment": "Error: the selected item could not be opened.", "extractionState": "manual", "localizations": { "en": { @@ -1162,7 +1162,7 @@ } }, "error_share_empty": { - "comment": "TODO: describe where this appears.", + "comment": "Error: attempted to share with nothing selected.", "extractionState": "manual", "localizations": { "en": { @@ -1174,7 +1174,7 @@ } }, "error_socket_bind": { - "comment": "TODO: describe where this appears.", + "comment": "Error: the app could not open its network sockets.", "extractionState": "manual", "localizations": { "en": { @@ -1186,7 +1186,7 @@ } }, "error_starting_up": { - "comment": "TODO: describe where this appears.", + "comment": "Error: an invitation was opened before startup finished.", "extractionState": "manual", "localizations": { "en": { @@ -1198,7 +1198,7 @@ } }, "error_transfer": { - "comment": "TODO: describe where this appears.", + "comment": "Error: the transfer could not be completed.", "extractionState": "manual", "localizations": { "en": { @@ -1210,7 +1210,7 @@ } }, "field_receiver_name": { - "comment": "TODO: describe where this appears.", + "comment": "Text field label: the receiver's display name.", "extractionState": "manual", "localizations": { "en": { @@ -1222,7 +1222,7 @@ } }, "field_sender_name": { - "comment": "TODO: describe where this appears.", + "comment": "Text field label: the sender's display name.", "extractionState": "manual", "localizations": { "en": { @@ -1234,7 +1234,7 @@ } }, "field_transfer_name": { - "comment": "TODO: describe where this appears.", + "comment": "Text field label: the name given to a transfer.", "extractionState": "manual", "localizations": { "en": { @@ -1246,7 +1246,7 @@ } }, "field_username": { - "comment": "TODO: describe where this appears.", + "comment": "Settings text field label: this device's display name.", "extractionState": "manual", "localizations": { "en": { @@ -1258,7 +1258,7 @@ } }, "folder_status_permission_required": { - "comment": "TODO: describe where this appears.", + "comment": "Receive-folder status: permission is required to write to the chosen folder.", "extractionState": "manual", "localizations": { "en": { @@ -1270,7 +1270,7 @@ } }, "folder_status_unavailable": { - "comment": "TODO: describe where this appears.", + "comment": "Receive-folder status: the chosen folder is unavailable.", "extractionState": "manual", "localizations": { "en": { @@ -1282,7 +1282,7 @@ } }, "folder_status_validating": { - "comment": "TODO: describe where this appears.", + "comment": "Receive-folder status: the folder is being checked.", "extractionState": "manual", "localizations": { "en": { @@ -1294,7 +1294,7 @@ } }, "folder_status_writable": { - "comment": "TODO: describe where this appears.", + "comment": "Receive-folder status: the folder is valid and writable.", "extractionState": "manual", "localizations": { "en": { @@ -1306,7 +1306,7 @@ } }, "metadata_files": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer metadata label: number of files.", "extractionState": "manual", "localizations": { "en": { @@ -1318,7 +1318,7 @@ } }, "metadata_size": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer metadata label: total size.", "extractionState": "manual", "localizations": { "en": { @@ -1330,7 +1330,7 @@ } }, "metadata_status": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer metadata label: current status.", "extractionState": "manual", "localizations": { "en": { @@ -1342,7 +1342,7 @@ } }, "nav_receive": { - "comment": "TODO: describe where this appears.", + "comment": "Bottom navigation: Receive tab label.", "extractionState": "manual", "localizations": { "en": { @@ -1354,7 +1354,7 @@ } }, "nav_send": { - "comment": "TODO: describe where this appears.", + "comment": "Bottom navigation: Send tab label.", "extractionState": "manual", "localizations": { "en": { @@ -1366,7 +1366,7 @@ } }, "nav_settings": { - "comment": "TODO: describe where this appears.", + "comment": "Bottom navigation: Settings tab label.", "extractionState": "manual", "localizations": { "en": { @@ -1378,7 +1378,7 @@ } }, "network_title": { - "comment": "TODO: describe where this appears.", + "comment": "Device information row: network label.", "extractionState": "manual", "localizations": { "en": { @@ -1390,7 +1390,7 @@ } }, "notifications_description": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Notifications: explanation of what notifications are used for.", "extractionState": "manual", "localizations": { "en": { @@ -1402,7 +1402,7 @@ } }, "notifications_enabled_message": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Notifications: confirmation when notifications are enabled.", "extractionState": "manual", "localizations": { "en": { @@ -1414,7 +1414,7 @@ } }, "notifications_local_title": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Notifications: label for the allow-notifications action.", "extractionState": "manual", "localizations": { "en": { @@ -1426,7 +1426,7 @@ } }, "notifications_permission_denied": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Notifications: message when the OS permission is denied.", "extractionState": "manual", "localizations": { "en": { @@ -1438,7 +1438,7 @@ } }, "notifications_settings_open_failed": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Notifications: error when the OS notification settings can't be opened.", "extractionState": "manual", "localizations": { "en": { @@ -1450,7 +1450,7 @@ } }, "notifications_title": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Notifications: section title.", "extractionState": "manual", "localizations": { "en": { @@ -1462,7 +1462,7 @@ } }, "notifications_unsupported": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Notifications: message when notifications aren't supported on the device.", "extractionState": "manual", "localizations": { "en": { @@ -1474,7 +1474,7 @@ } }, "os_version_title": { - "comment": "TODO: describe where this appears.", + "comment": "Device information row: operating system version label.", "extractionState": "manual", "localizations": { "en": { @@ -1486,7 +1486,7 @@ } }, "preferences_receive_folder_title": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Preferences: label for the received-files destination folder.", "extractionState": "manual", "localizations": { "en": { @@ -1498,7 +1498,7 @@ } }, "preferences_title": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Preferences: section title.", "extractionState": "manual", "localizations": { "en": { @@ -1510,7 +1510,7 @@ } }, "progress_cancelled": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: cancelled.", "extractionState": "manual", "localizations": { "en": { @@ -1522,7 +1522,7 @@ } }, "progress_completed": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: completed.", "extractionState": "manual", "localizations": { "en": { @@ -1534,7 +1534,7 @@ } }, "progress_connected": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: connected.", "extractionState": "manual", "localizations": { "en": { @@ -1546,7 +1546,7 @@ } }, "progress_connecting": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: connecting.", "extractionState": "manual", "localizations": { "en": { @@ -1558,7 +1558,7 @@ } }, "progress_downloading": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: downloading.", "extractionState": "manual", "localizations": { "en": { @@ -1570,7 +1570,7 @@ } }, "progress_failed": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: failed.", "extractionState": "manual", "localizations": { "en": { @@ -1582,7 +1582,7 @@ } }, "progress_getting_ready": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: getting ready.", "extractionState": "manual", "localizations": { "en": { @@ -1594,7 +1594,7 @@ } }, "progress_interrupted": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: the transfer was interrupted.", "extractionState": "manual", "localizations": { "en": { @@ -1606,7 +1606,7 @@ } }, "progress_preparing": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: preparing.", "extractionState": "manual", "localizations": { "en": { @@ -1618,7 +1618,7 @@ } }, "progress_ready": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: ready.", "extractionState": "manual", "localizations": { "en": { @@ -1630,7 +1630,7 @@ } }, "progress_receiving": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: receiving.", "extractionState": "manual", "localizations": { "en": { @@ -1642,7 +1642,7 @@ } }, "progress_requesting_access": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: requesting access from the sender.", "extractionState": "manual", "localizations": { "en": { @@ -1654,7 +1654,7 @@ } }, "progress_saving": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: saving received files.", "extractionState": "manual", "localizations": { "en": { @@ -1666,7 +1666,7 @@ } }, "progress_sending": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: sending.", "extractionState": "manual", "localizations": { "en": { @@ -1678,7 +1678,7 @@ } }, "progress_sending_to_count": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: sending to N receivers. %lld = receiver count.", "extractionState": "manual", "localizations": { "en": { @@ -1690,7 +1690,7 @@ } }, "progress_share_ready": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: the share is ready.", "extractionState": "manual", "localizations": { "en": { @@ -1702,7 +1702,7 @@ } }, "progress_working": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer progress label: generic working/in-progress state.", "extractionState": "manual", "localizations": { "en": { @@ -1714,7 +1714,7 @@ } }, "receive_choose_method_body": { - "comment": "TODO: describe where this appears.", + "comment": "Receive flow: body text prompting the user to pick an invitation method.", "extractionState": "manual", "localizations": { "en": { @@ -1726,7 +1726,7 @@ } }, "receive_choose_method_title": { - "comment": "TODO: describe where this appears.", + "comment": "Receive flow: title of the connect-method chooser.", "extractionState": "manual", "localizations": { "en": { @@ -1738,7 +1738,7 @@ } }, "receive_clear_history": { - "comment": "TODO: describe where this appears.", + "comment": "Receive history: action to clear all history.", "extractionState": "manual", "localizations": { "en": { @@ -1750,7 +1750,7 @@ } }, "receive_clear_history_description": { - "comment": "TODO: describe where this appears.", + "comment": "Receive history: confirmation dialog body for clearing all history.", "extractionState": "manual", "localizations": { "en": { @@ -1762,7 +1762,7 @@ } }, "receive_clear_history_title": { - "comment": "TODO: describe where this appears.", + "comment": "Receive history: confirmation dialog title for clearing all history.", "extractionState": "manual", "localizations": { "en": { @@ -1774,7 +1774,7 @@ } }, "receive_completed": { - "comment": "TODO: describe where this appears.", + "comment": "Receive flow: toast/message when a transfer finishes downloading.", "extractionState": "manual", "localizations": { "en": { @@ -1786,7 +1786,7 @@ } }, "receive_delete_history_description": { - "comment": "TODO: describe where this appears.", + "comment": "Receive history: confirmation body for removing one item. {arg1} = transfer name.", "extractionState": "manual", "localizations": { "en": { @@ -1798,7 +1798,7 @@ } }, "receive_delete_history_item": { - "comment": "TODO: describe where this appears.", + "comment": "Receive history: swipe/menu action to delete a single history item.", "extractionState": "manual", "localizations": { "en": { @@ -1810,7 +1810,7 @@ } }, "receive_delete_history_title": { - "comment": "TODO: describe where this appears.", + "comment": "Receive history: confirmation title for removing one item.", "extractionState": "manual", "localizations": { "en": { @@ -1822,7 +1822,7 @@ } }, "receive_empty_body": { - "comment": "TODO: describe where this appears.", + "comment": "Receive tab empty state: instructions on how to receive.", "extractionState": "manual", "localizations": { "en": { @@ -1834,7 +1834,7 @@ } }, "receive_empty_title": { - "comment": "TODO: describe where this appears.", + "comment": "Receive tab empty state: title when nothing has been received.", "extractionState": "manual", "localizations": { "en": { @@ -1846,7 +1846,7 @@ } }, "receive_history_cleared": { - "comment": "TODO: describe where this appears.", + "comment": "Receive history: toast confirming history was cleared.", "extractionState": "manual", "localizations": { "en": { @@ -1858,7 +1858,7 @@ } }, "receive_history_title": { - "comment": "TODO: describe where this appears.", + "comment": "Receive tab: History section title.", "extractionState": "manual", "localizations": { "en": { @@ -1870,7 +1870,7 @@ } }, "receive_method_file": { - "comment": "TODO: describe where this appears.", + "comment": "Receive method: open a .vnd invitation file.", "extractionState": "manual", "localizations": { "en": { @@ -1882,7 +1882,7 @@ } }, "receive_method_file_description": { - "comment": "TODO: describe where this appears.", + "comment": "Receive method description: open a saved/shared invitation file.", "extractionState": "manual", "localizations": { "en": { @@ -1894,7 +1894,7 @@ } }, "receive_method_nfc": { - "comment": "TODO: describe where this appears.", + "comment": "Receive method: read an NFC tag.", "extractionState": "manual", "localizations": { "en": { @@ -1906,7 +1906,7 @@ } }, "receive_method_nfc_description": { - "comment": "TODO: describe where this appears.", + "comment": "Receive method description: hold near the sender's NFC tag.", "extractionState": "manual", "localizations": { "en": { @@ -1918,7 +1918,7 @@ } }, "receive_method_scan": { - "comment": "TODO: describe where this appears.", + "comment": "Receive method: scan a QR code.", "extractionState": "manual", "localizations": { "en": { @@ -1930,7 +1930,7 @@ } }, "receive_method_scan_description": { - "comment": "TODO: describe where this appears.", + "comment": "Receive method description: use the camera to scan the sender's code.", "extractionState": "manual", "localizations": { "en": { @@ -1942,7 +1942,7 @@ } }, "receive_new_subtitle": { - "comment": "TODO: describe where this appears.", + "comment": "Receive tab: subtitle under the title.", "extractionState": "manual", "localizations": { "en": { @@ -1954,7 +1954,7 @@ } }, "receive_nfc_waiting": { - "comment": "TODO: describe where this appears.", + "comment": "Receive flow: prompt while waiting to read an NFC tag.", "extractionState": "manual", "localizations": { "en": { @@ -1966,7 +1966,7 @@ } }, "receive_open_files_failed": { - "comment": "TODO: describe where this appears.", + "comment": "Receive flow: error when opening VniDrop's folder in Files fails.", "extractionState": "manual", "localizations": { "en": { @@ -1978,7 +1978,7 @@ } }, "receive_review_title": { - "comment": "TODO: describe where this appears.", + "comment": "Receive flow: title of the review screen before accepting a transfer.", "extractionState": "manual", "localizations": { "en": { @@ -1990,7 +1990,7 @@ } }, "receive_title": { - "comment": "TODO: describe where this appears.", + "comment": "Receive tab: screen title.", "extractionState": "manual", "localizations": { "en": { @@ -2002,7 +2002,7 @@ } }, "receive_unknown_transfer": { - "comment": "TODO: describe where this appears.", + "comment": "Receive flow: fallback name for a transfer with no title.", "extractionState": "manual", "localizations": { "en": { @@ -2014,7 +2014,7 @@ } }, "send_access_anyone": { - "comment": "TODO: describe where this appears.", + "comment": "Send access option: anyone with the invitation can receive.", "extractionState": "manual", "localizations": { "en": { @@ -2026,7 +2026,7 @@ } }, "send_access_anyone_description": { - "comment": "TODO: describe where this appears.", + "comment": "Send access option description: no approval required.", "extractionState": "manual", "localizations": { "en": { @@ -2038,7 +2038,7 @@ } }, "send_access_anyone_warning": { - "comment": "TODO: describe where this appears.", + "comment": "Send access option warning: caution about open access.", "extractionState": "manual", "localizations": { "en": { @@ -2050,7 +2050,7 @@ } }, "send_access_approval": { - "comment": "TODO: describe where this appears.", + "comment": "Send access option: approve each receiver.", "extractionState": "manual", "localizations": { "en": { @@ -2062,7 +2062,7 @@ } }, "send_access_approval_description": { - "comment": "TODO: describe where this appears.", + "comment": "Send access option description: you approve/refuse each receiver.", "extractionState": "manual", "localizations": { "en": { @@ -2074,7 +2074,7 @@ } }, "send_access_title": { - "comment": "TODO: describe where this appears.", + "comment": "Send flow: heading for the who-can-receive access chooser.", "extractionState": "manual", "localizations": { "en": { @@ -2086,7 +2086,7 @@ } }, "send_choose_file_body": { - "comment": "TODO: describe where this appears.", + "comment": "Send flow: body text for the choose-what-to-share step.", "extractionState": "manual", "localizations": { "en": { @@ -2098,7 +2098,7 @@ } }, "send_choose_file_title": { - "comment": "TODO: describe where this appears.", + "comment": "Send flow: title of the choose-what-to-share step.", "extractionState": "manual", "localizations": { "en": { @@ -2110,7 +2110,7 @@ } }, "send_empty_body": { - "comment": "TODO: describe where this appears.", + "comment": "Send tab empty state: instructions on how to create a transfer.", "extractionState": "manual", "localizations": { "en": { @@ -2122,7 +2122,7 @@ } }, "send_empty_title": { - "comment": "TODO: describe where this appears.", + "comment": "Send tab empty state: title when nothing has been shared.", "extractionState": "manual", "localizations": { "en": { @@ -2134,7 +2134,7 @@ } }, "send_file_size_unknown": { - "comment": "TODO: describe where this appears.", + "comment": "Send flow: shown when a selected file's size can't be determined.", "extractionState": "manual", "localizations": { "en": { @@ -2146,7 +2146,7 @@ } }, "send_folder_label": { - "comment": "TODO: describe where this appears.", + "comment": "Send flow: label indicating a selected item is a folder.", "extractionState": "manual", "localizations": { "en": { @@ -2158,7 +2158,7 @@ } }, "send_new_transfer_description": { - "comment": "TODO: describe where this appears.", + "comment": "Send flow: description for the create-new-transfer entry.", "extractionState": "manual", "localizations": { "en": { @@ -2170,7 +2170,7 @@ } }, "send_new_transfer_title": { - "comment": "TODO: describe where this appears.", + "comment": "Send flow: title for the new-transfer step.", "extractionState": "manual", "localizations": { "en": { @@ -2182,7 +2182,7 @@ } }, "send_review_title": { - "comment": "TODO: describe where this appears.", + "comment": "Send flow: title of the review-transfer step before creating it.", "extractionState": "manual", "localizations": { "en": { @@ -2194,7 +2194,7 @@ } }, "send_selected_files_count": { - "comment": "TODO: describe where this appears.", + "comment": "Send flow: count of files chosen. {count} = selected files. NOTE: singular case reads '1 files' — should become a plural.", "extractionState": "manual", "localizations": { "en": { @@ -2206,7 +2206,7 @@ } }, "send_stop_sharing": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: action to stop sharing a transfer.", "extractionState": "manual", "localizations": { "en": { @@ -2218,7 +2218,7 @@ } }, "send_stop_sharing_description": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: confirmation body for stopping sharing.", "extractionState": "manual", "localizations": { "en": { @@ -2230,7 +2230,7 @@ } }, "send_subtitle": { - "comment": "TODO: describe where this appears.", + "comment": "Send tab: subtitle under the title.", "extractionState": "manual", "localizations": { "en": { @@ -2242,7 +2242,7 @@ } }, "send_title": { - "comment": "TODO: describe where this appears.", + "comment": "Send tab: screen title.", "extractionState": "manual", "localizations": { "en": { @@ -2254,7 +2254,7 @@ } }, "send_transfer_created": { - "comment": "TODO: describe where this appears.", + "comment": "Send flow: toast confirming a transfer was created.", "extractionState": "manual", "localizations": { "en": { @@ -2266,7 +2266,7 @@ } }, "send_transfer_details_title": { - "comment": "TODO: describe where this appears.", + "comment": "Send flow: title of the transfer details screen.", "extractionState": "manual", "localizations": { "en": { @@ -2278,7 +2278,7 @@ } }, "send_transfers_title": { - "comment": "TODO: describe where this appears.", + "comment": "Send tab: 'Your transfers' list heading.", "extractionState": "manual", "localizations": { "en": { @@ -2290,7 +2290,7 @@ } }, "settings_subtitle": { - "comment": "TODO: describe where this appears.", + "comment": "Settings screen: subtitle summarizing what's configurable.", "extractionState": "manual", "localizations": { "en": { @@ -2302,7 +2302,7 @@ } }, "settings_title": { - "comment": "TODO: describe where this appears.", + "comment": "Settings screen: title.", "extractionState": "manual", "localizations": { "en": { @@ -2314,7 +2314,7 @@ } }, "snackbar_dismiss": { - "comment": "TODO: describe where this appears.", + "comment": "Snackbar: accessibility label / action to dismiss the snackbar.", "extractionState": "manual", "localizations": { "en": { @@ -2326,7 +2326,7 @@ } }, "status_available": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer status: available (actively shared).", "extractionState": "manual", "localizations": { "en": { @@ -2338,7 +2338,7 @@ } }, "status_cancelled": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer status: cancelled.", "extractionState": "manual", "localizations": { "en": { @@ -2350,7 +2350,7 @@ } }, "status_completed": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer status: completed.", "extractionState": "manual", "localizations": { "en": { @@ -2362,7 +2362,7 @@ } }, "status_failed": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer status: failed.", "extractionState": "manual", "localizations": { "en": { @@ -2374,7 +2374,7 @@ } }, "status_preparing": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer status: preparing.", "extractionState": "manual", "localizations": { "en": { @@ -2386,7 +2386,7 @@ } }, "status_receiving": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer status: receiving.", "extractionState": "manual", "localizations": { "en": { @@ -2398,7 +2398,7 @@ } }, "status_stopped": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer status: stopped.", "extractionState": "manual", "localizations": { "en": { @@ -2410,7 +2410,7 @@ } }, "storage_calculating": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Storage: placeholder while a size is being calculated.", "extractionState": "manual", "localizations": { "en": { @@ -2422,7 +2422,7 @@ } }, "storage_delete_transfers": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Storage: button to delete all transfer records.", "extractionState": "manual", "localizations": { "en": { @@ -2434,7 +2434,7 @@ } }, "storage_delete_transfers_description": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Storage: confirmation body for deleting all transfer records.", "extractionState": "manual", "localizations": { "en": { @@ -2446,7 +2446,7 @@ } }, "storage_deleting": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Storage: progress label while transfers are being deleted.", "extractionState": "manual", "localizations": { "en": { @@ -2458,7 +2458,7 @@ } }, "storage_footer": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Storage: footer explaining how storage is managed.", "extractionState": "manual", "localizations": { "en": { @@ -2470,7 +2470,7 @@ } }, "storage_received_files": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Storage: label for the received-files size row.", "extractionState": "manual", "localizations": { "en": { @@ -2482,7 +2482,7 @@ } }, "storage_temporary": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Storage: label for the temporary-files size row.", "extractionState": "manual", "localizations": { "en": { @@ -2494,7 +2494,7 @@ } }, "storage_title": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Storage: section title.", "extractionState": "manual", "localizations": { "en": { @@ -2506,7 +2506,7 @@ } }, "storage_total": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Storage: label for the total-size row.", "extractionState": "manual", "localizations": { "en": { @@ -2518,7 +2518,7 @@ } }, "storage_transfer_data": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Storage: label for the transfer-engine data size row.", "extractionState": "manual", "localizations": { "en": { @@ -2530,7 +2530,7 @@ } }, "storage_transfers_deleted": { - "comment": "TODO: describe where this appears.", + "comment": "Settings > Storage: toast confirming all transfers were deleted.", "extractionState": "manual", "localizations": { "en": { @@ -2542,7 +2542,7 @@ } }, "transfer_activity_description": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: description under the Activity section.", "extractionState": "manual", "localizations": { "en": { @@ -2554,7 +2554,7 @@ } }, "transfer_activity_title": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: Activity section title.", "extractionState": "manual", "localizations": { "en": { @@ -2566,7 +2566,7 @@ } }, "transfer_delete_description": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: confirmation body for deleting a transfer. {arg1} = transfer name.", "extractionState": "manual", "localizations": { "en": { @@ -2578,7 +2578,7 @@ } }, "transfer_delete_title": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: confirmation title for deleting a transfer.", "extractionState": "manual", "localizations": { "en": { @@ -2590,7 +2590,7 @@ } }, "transfer_deleted": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: toast confirming a transfer was deleted.", "extractionState": "manual", "localizations": { "en": { @@ -2602,7 +2602,7 @@ } }, "transfer_deleting": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: progress label while a transfer is being deleted.", "extractionState": "manual", "localizations": { "en": { @@ -2614,7 +2614,7 @@ } }, "transfer_details_title": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: screen title.", "extractionState": "manual", "localizations": { "en": { @@ -2626,7 +2626,7 @@ } }, "transfer_event_approved": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer activity event: a receiver's access was approved.", "extractionState": "manual", "localizations": { "en": { @@ -2638,7 +2638,7 @@ } }, "transfer_event_completed": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer activity event: a receiver completed the transfer.", "extractionState": "manual", "localizations": { "en": { @@ -2650,7 +2650,7 @@ } }, "transfer_event_connecting": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer activity event: connecting to the sender.", "extractionState": "manual", "localizations": { "en": { @@ -2662,7 +2662,7 @@ } }, "transfer_event_downloading": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer activity event: downloading.", "extractionState": "manual", "localizations": { "en": { @@ -2674,7 +2674,7 @@ } }, "transfer_event_failed": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer activity event: the transfer hit a problem.", "extractionState": "manual", "localizations": { "en": { @@ -2686,7 +2686,7 @@ } }, "transfer_event_preparing": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer activity event: preparing the transfer.", "extractionState": "manual", "localizations": { "en": { @@ -2698,7 +2698,7 @@ } }, "transfer_event_ready": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer activity event: ready to share.", "extractionState": "manual", "localizations": { "en": { @@ -2710,7 +2710,7 @@ } }, "transfer_event_refused": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer activity event: a receiver's access was refused.", "extractionState": "manual", "localizations": { "en": { @@ -2722,7 +2722,7 @@ } }, "transfer_event_requested": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer activity event: a receiver requested access.", "extractionState": "manual", "localizations": { "en": { @@ -2734,7 +2734,7 @@ } }, "transfer_event_saving": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer activity event: saving received files.", "extractionState": "manual", "localizations": { "en": { @@ -2746,7 +2746,7 @@ } }, "transfer_event_stopped": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer activity event: sharing was stopped.", "extractionState": "manual", "localizations": { "en": { @@ -2758,7 +2758,7 @@ } }, "transfer_event_updated": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer activity event: the transfer was updated.", "extractionState": "manual", "localizations": { "en": { @@ -2770,7 +2770,7 @@ } }, "transfer_file_count": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer subtitle: file count with pluralization. {count} = number of files.", "extractionState": "manual", "localizations": { "en": { @@ -2794,7 +2794,7 @@ } }, "transfer_invitation_saved": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer share: toast confirming the invitation file was saved.", "extractionState": "manual", "localizations": { "en": { @@ -2806,7 +2806,7 @@ } }, "transfer_nearby_device": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer share/receivers: label for a nearby device.", "extractionState": "manual", "localizations": { "en": { @@ -2818,7 +2818,7 @@ } }, "transfer_nfc_unavailable": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer share: message when NFC writing isn't available on the device.", "extractionState": "manual", "localizations": { "en": { @@ -2830,7 +2830,7 @@ } }, "transfer_nfc_waiting": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer share: prompt while waiting to write an NFC tag.", "extractionState": "manual", "localizations": { "en": { @@ -2842,7 +2842,7 @@ } }, "transfer_nfc_written": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer share: confirmation the invitation was written to the NFC tag.", "extractionState": "manual", "localizations": { "en": { @@ -2854,7 +2854,7 @@ } }, "transfer_no_activity": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: empty state for the Activity section.", "extractionState": "manual", "localizations": { "en": { @@ -2866,7 +2866,7 @@ } }, "transfer_no_receivers": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: empty state for the Receivers section.", "extractionState": "manual", "localizations": { "en": { @@ -2878,7 +2878,7 @@ } }, "transfer_receiver_accepted": { - "comment": "TODO: describe where this appears.", + "comment": "Receiver status: approved, waiting for the download to complete.", "extractionState": "manual", "localizations": { "en": { @@ -2890,7 +2890,7 @@ } }, "transfer_receiver_completed": { - "comment": "TODO: describe where this appears.", + "comment": "Receiver status: received successfully.", "extractionState": "manual", "localizations": { "en": { @@ -2902,7 +2902,7 @@ } }, "transfer_receiver_expired": { - "comment": "TODO: describe where this appears.", + "comment": "Receiver status: the request expired.", "extractionState": "manual", "localizations": { "en": { @@ -2914,7 +2914,7 @@ } }, "transfer_receiver_refused": { - "comment": "TODO: describe where this appears.", + "comment": "Receiver status: the request was refused.", "extractionState": "manual", "localizations": { "en": { @@ -2926,7 +2926,7 @@ } }, "transfer_receiver_requested": { - "comment": "TODO: describe where this appears.", + "comment": "Receiver status: waiting for the sender's approval.", "extractionState": "manual", "localizations": { "en": { @@ -2938,7 +2938,7 @@ } }, "transfer_receiver_unknown": { - "comment": "TODO: describe where this appears.", + "comment": "Receiver status: status unavailable/unknown.", "extractionState": "manual", "localizations": { "en": { @@ -2950,7 +2950,7 @@ } }, "transfer_receivers_completed_count": { - "comment": "TODO: describe where this appears.", + "comment": "Receivers summary: how many receivers completed. {count} = completed receivers.", "extractionState": "manual", "localizations": { "en": { @@ -2962,7 +2962,7 @@ } }, "transfer_receivers_description": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: description under the Receivers section.", "extractionState": "manual", "localizations": { "en": { @@ -2974,7 +2974,7 @@ } }, "transfer_receivers_pending": { - "comment": "TODO: describe where this appears.", + "comment": "Receivers summary: how many requests are waiting. {count} = pending receivers.", "extractionState": "manual", "localizations": { "en": { @@ -2986,7 +2986,7 @@ } }, "transfer_receivers_title": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: Receivers section title.", "extractionState": "manual", "localizations": { "en": { @@ -2998,7 +2998,7 @@ } }, "transfer_scan_qr": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer share: caption under the QR code.", "extractionState": "manual", "localizations": { "en": { @@ -3010,7 +3010,7 @@ } }, "transfer_share_description": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: description under the Share section.", "extractionState": "manual", "localizations": { "en": { @@ -3022,7 +3022,7 @@ } }, "transfer_share_title": { - "comment": "TODO: describe where this appears.", + "comment": "Transfer details: Share section title.", "extractionState": "manual", "localizations": { "en": { @@ -3034,7 +3034,7 @@ } }, "value_unavailable": { - "comment": "TODO: describe where this appears.", + "comment": "Placeholder shown when a device-info or metadata value can't be read.", "extractionState": "manual", "localizations": { "en": { @@ -3046,7 +3046,7 @@ } }, "version_title": { - "comment": "TODO: describe where this appears.", + "comment": "Device information / Settings row: app version label.", "extractionState": "manual", "localizations": { "en": { diff --git a/localization/strings.json b/localization/strings.json index f3d3a68..21c8a66 100644 --- a/localization/strings.json +++ b/localization/strings.json @@ -6,13 +6,13 @@ ], "strings": { "%@": { - "context": "TODO: describe where this appears.", + "context": "Apple format passthrough placeholder (single value). Legacy literal key — rename to a semantic key.", "targets": [ "apple" ] }, "%@ %@ · %@": { - "context": "TODO: describe where this appears.", + "context": "Apple format template composing three values with a middot separator (e.g. metadata rows). Legacy literal key — rename.", "targets": [ "apple" ], @@ -35,7 +35,7 @@ } }, "%@ · %@": { - "context": "TODO: describe where this appears.", + "context": "Apple format template composing two values with a middot separator. Legacy literal key — rename.", "targets": [ "apple" ], @@ -54,19 +54,19 @@ } }, "%@%%": { - "context": "TODO: describe where this appears.", + "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": "TODO: describe where this appears.", + "context": "About screen: button/link that opens the bug report form.", "translations": { "en": "Report a bug" } }, "about_description": { - "context": "TODO: describe where this appears.", + "context": "About screen: intro paragraph describing what VniDrop does.", "targets": [ "apple" ], @@ -75,7 +75,7 @@ } }, "about_is_direct": { - "context": "TODO: describe where this appears.", + "context": "About screen, 'What VniDrop is' list: point about direct device-to-device transfer.", "targets": [ "apple" ], @@ -84,7 +84,7 @@ } }, "about_is_encrypted": { - "context": "TODO: describe where this appears.", + "context": "About screen, 'What VniDrop is' list: point about encrypted, verified connections.", "targets": [ "apple" ], @@ -93,7 +93,7 @@ } }, "about_is_in_control": { - "context": "TODO: describe where this appears.", + "context": "About screen, 'What VniDrop is' list: point about controlling who receives.", "targets": [ "apple" ], @@ -102,7 +102,7 @@ } }, "about_is_no_account": { - "context": "TODO: describe where this appears.", + "context": "About screen, 'What VniDrop is' list: point about being account-free.", "targets": [ "apple" ], @@ -111,7 +111,7 @@ } }, "about_is_open": { - "context": "TODO: describe where this appears.", + "context": "About screen, 'What VniDrop is' list: point about being open source.", "targets": [ "apple" ], @@ -120,7 +120,7 @@ } }, "about_is_title": { - "context": "TODO: describe where this appears.", + "context": "About screen: section heading for the 'What VniDrop is' list.", "targets": [ "apple" ], @@ -129,7 +129,7 @@ } }, "about_isnt_cloud": { - "context": "TODO: describe where this appears.", + "context": "About screen, 'What VniDrop isn't' list: point about not being cloud storage.", "targets": [ "apple" ], @@ -138,7 +138,7 @@ } }, "about_isnt_public": { - "context": "TODO: describe where this appears.", + "context": "About screen, 'What VniDrop isn't' list: point about invitations not being public broadcasts.", "targets": [ "apple" ], @@ -147,7 +147,7 @@ } }, "about_isnt_sync": { - "context": "TODO: describe where this appears.", + "context": "About screen, 'What VniDrop isn't' list: point about not being sync/backup.", "targets": [ "apple" ], @@ -156,7 +156,7 @@ } }, "about_isnt_title": { - "context": "TODO: describe where this appears.", + "context": "About screen: section heading for the 'What VniDrop isn't' list.", "targets": [ "apple" ], @@ -165,7 +165,7 @@ } }, "about_license_label": { - "context": "TODO: describe where this appears.", + "context": "About screen: label for the license row.", "targets": [ "apple" ], @@ -174,13 +174,13 @@ } }, "about_privacy": { - "context": "TODO: describe where this appears.", + "context": "About screen: link to the privacy policy.", "translations": { "en": "Privacy policy" } }, "about_privacy_capability": { - "context": "TODO: describe where this appears.", + "context": "About screen, Privacy & security list: point that invitations are capabilities to share carefully.", "targets": [ "apple" ], @@ -189,7 +189,7 @@ } }, "about_privacy_deny": { - "context": "TODO: describe where this appears.", + "context": "About screen, Privacy & security list: point about denying unknown requests by default.", "targets": [ "apple" ], @@ -198,7 +198,7 @@ } }, "about_privacy_local": { - "context": "TODO: describe where this appears.", + "context": "About screen, Privacy & security list: point about received files staying local and never overwriting.", "targets": [ "apple" ], @@ -207,7 +207,7 @@ } }, "about_privacy_policy_label": { - "context": "TODO: describe where this appears.", + "context": "About screen: label for the privacy policy row.", "targets": [ "apple" ], @@ -216,7 +216,7 @@ } }, "about_privacy_relay": { - "context": "TODO: describe where this appears.", + "context": "About screen, Privacy & security list: point explaining encrypted relays.", "targets": [ "apple" ], @@ -225,7 +225,7 @@ } }, "about_privacy_title": { - "context": "TODO: describe where this appears.", + "context": "About screen: section heading for the Privacy & security list.", "targets": [ "apple" ], @@ -234,7 +234,7 @@ } }, "about_tagline": { - "context": "TODO: describe where this appears.", + "context": "About screen: short tagline under the app name.", "targets": [ "apple" ], @@ -243,49 +243,49 @@ } }, "about_title": { - "context": "TODO: describe where this appears.", + "context": "About screen: navigation/screen title.", "translations": { "en": "About" } }, "appearance_auto_description": { - "context": "TODO: describe where this appears.", + "context": "Settings > Appearance: description for the System/auto option.", "translations": { "en": "Match this device’s light or dark appearance." } }, "appearance_dark_mode": { - "context": "TODO: describe where this appears.", + "context": "Settings > Appearance: label for the dark theme option.", "translations": { "en": "Dark mode" } }, "appearance_light_mode": { - "context": "TODO: describe where this appears.", + "context": "Settings > Appearance: label for the light theme option.", "translations": { "en": "Light mode" } }, "appearance_system_mode": { - "context": "TODO: describe where this appears.", + "context": "Settings > Appearance: label for the follow-system option.", "translations": { "en": "System" } }, "appearance_title": { - "context": "TODO: describe where this appears.", + "context": "Settings > Appearance: section title.", "translations": { "en": "Appearance" } }, "approval_connection_request": { - "context": "TODO: describe where this appears.", + "context": "Approval prompt: title when a receiver requests to download a transfer.", "translations": { "en": "Receive request" } }, "approval_endpoint_id": { - "context": "TODO: describe where this appears.", + "context": "Approval prompt: shows the requesting device's ID. {arg1} = device/endpoint identifier.", "args": [ { "name": "arg1", @@ -297,13 +297,13 @@ } }, "approval_nearby_device": { - "context": "TODO: describe where this appears.", + "context": "Approval prompt: fallback label for a requester with no display name.", "translations": { "en": "A nearby device" } }, "approval_pending_count": { - "context": "TODO: describe where this appears.", + "context": "Send/transfer list: badge showing how many receive requests are awaiting approval. {count} = pending requests.", "args": [ { "name": "count", @@ -315,7 +315,7 @@ } }, "approval_request_body": { - "context": "TODO: describe where this appears.", + "context": "Approval prompt body: '{arg1} wants to receive \"{arg2}\".' {arg1} = requester name, {arg2} = transfer name.", "args": [ { "name": "arg1", @@ -331,13 +331,13 @@ } }, "battery_level_title": { - "context": "TODO: describe where this appears.", + "context": "Device information row: battery level label.", "translations": { "en": "Battery level" } }, "bug_report_contact_hint": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: placeholder text in the contact email field.", "targets": [ "apple" ], @@ -346,25 +346,25 @@ } }, "bug_report_contact_label": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: label for the optional contact email field.", "translations": { "en": "Contact email (optional)" } }, "bug_report_description": { - "context": "TODO: describe where this appears.", + "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)." } }, "bug_report_device_section": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: heading for the attached device information section.", "translations": { "en": "Device information" } }, "bug_report_expected_hint": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: placeholder in the 'what did you expect' field.", "targets": [ "apple" ], @@ -373,43 +373,43 @@ } }, "bug_report_expected_label": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: label for the expected-behavior field.", "translations": { "en": "What did you expect?" } }, "bug_report_include_logs": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: toggle label to attach recent logs.", "translations": { "en": "Include recent logs" } }, "bug_report_include_logs_description": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: explanation under the include-logs toggle.", "translations": { "en": "Helps us diagnose the issue. Sensitive values are redacted before sending." } }, "bug_report_logs_size": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: label showing the size of the log attachment.", "translations": { "en": "Log attachment size" } }, "bug_report_missing_expected": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: validation error when the expected-behavior field is empty.", "translations": { "en": "Please describe what you expected." } }, "bug_report_missing_what": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: validation error when the what-happened field is empty.", "translations": { "en": "Please describe what happened." } }, "bug_report_steps_hint": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: placeholder in the steps-to-reproduce field.", "targets": [ "apple" ], @@ -418,37 +418,37 @@ } }, "bug_report_steps_label": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: label for the optional steps-to-reproduce field.", "translations": { "en": "Steps to reproduce (optional)" } }, "bug_report_submit": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: submit button.", "translations": { "en": "Submit report" } }, "bug_report_submit_failed": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: error message when submission fails.", "translations": { "en": "Could not submit the bug report. Try again later." } }, "bug_report_submitted": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: confirmation message after a successful submission.", "translations": { "en": "Thanks — your bug report was recorded." } }, "bug_report_submitting": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: progress label while the report is being sent.", "translations": { "en": "Submitting…" } }, "bug_report_what_hint": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: placeholder in the what-happened field.", "targets": [ "apple" ], @@ -457,523 +457,523 @@ } }, "bug_report_what_label": { - "context": "TODO: describe where this appears.", + "context": "Bug report form: label for the what-happened field.", "translations": { "en": "What happened?" } }, "button_approve": { - "context": "TODO: describe where this appears.", + "context": "Button: approve a receiver's request.", "translations": { "en": "Approve" } }, "button_back": { - "context": "TODO: describe where this appears.", + "context": "Button: go back to the previous step/screen.", "translations": { "en": "Back" } }, "button_cancel": { - "context": "TODO: describe where this appears.", + "context": "Button: cancel the current action or dialog.", "translations": { "en": "Cancel" } }, "button_cancel_receive": { - "context": "TODO: describe where this appears.", + "context": "Button: cancel an in-progress receive.", "translations": { "en": "Cancel" } }, "button_change_files": { - "context": "TODO: describe where this appears.", + "context": "Button: change the selected files in the send flow.", "translations": { "en": "Change files" } }, "button_choose_files": { - "context": "TODO: describe where this appears.", + "context": "Button: open the file picker to choose files to send.", "translations": { "en": "Choose files" } }, "button_choose_folder": { - "context": "TODO: describe where this appears.", + "context": "Button: open the folder picker (send selection or receive folder).", "translations": { "en": "Choose folder" } }, "button_clear": { - "context": "TODO: describe where this appears.", + "context": "Button: clear the current input or selection.", "translations": { "en": "Clear" } }, "button_close": { - "context": "TODO: describe where this appears.", + "context": "Button: close the current sheet/dialog.", "translations": { "en": "Close" } }, "button_create_new_transfer": { - "context": "TODO: describe where this appears.", + "context": "Button: start creating a new transfer (Send tab).", "translations": { "en": "New transfer" } }, "button_delete_transfer": { - "context": "TODO: describe where this appears.", + "context": "Button: delete a transfer.", "translations": { "en": "Delete transfer" } }, "button_download_invitation": { - "context": "TODO: describe where this appears.", + "context": "Button: save the invitation as a .vnd file.", "translations": { "en": "Save .vnd file" } }, "button_native_share": { - "context": "TODO: describe where this appears.", + "context": "Button: open the OS share sheet to share the invitation.", "translations": { "en": "Share invitation" } }, "button_open_settings": { - "context": "TODO: describe where this appears.", + "context": "Button: open the OS Settings app (e.g. for permissions).", "translations": { "en": "Open Settings" } }, "button_receive": { - "context": "TODO: describe where this appears.", + "context": "Button: receive label (Receive action).", "translations": { "en": "Receive" } }, "button_receive_files": { - "context": "TODO: describe where this appears.", + "context": "Button: start receiving a transfer.", "translations": { "en": "Start receiving" } }, "button_refuse": { - "context": "TODO: describe where this appears.", + "context": "Button: refuse a receiver's request.", "translations": { "en": "Refuse" } }, "button_remove_file": { - "context": "TODO: describe where this appears.", + "context": "Button: remove a single file from the send selection.", "translations": { "en": "Remove file" } }, "button_reset_default": { - "context": "TODO: describe where this appears.", + "context": "Button: reset a setting to its default value.", "translations": { "en": "Use default" } }, "button_retry": { - "context": "TODO: describe where this appears.", + "context": "Button: retry after a failed operation.", "translations": { "en": "Retry" } }, "button_share_file": { - "context": "TODO: describe where this appears.", + "context": "Button: start sharing the transfer (make it available).", "translations": { "en": "Start sharing" } }, "button_sharing_file": { - "context": "TODO: describe where this appears.", + "context": "Button: disabled/loading state while the transfer is being prepared.", "translations": { "en": "Preparing transfer…" } }, "button_show_in_files": { - "context": "TODO: describe where this appears.", + "context": "Button: reveal a received file in the Files app.", "translations": { "en": "Show in Files" } }, "button_write_nfc": { - "context": "TODO: describe where this appears.", + "context": "Button: write the invitation to an NFC tag.", "translations": { "en": "Write to NFC tag" } }, "device_model_title": { - "context": "TODO: describe where this appears.", + "context": "Device information row: device model label.", "translations": { "en": "Device model" } }, "device_name_title": { - "context": "TODO: describe where this appears.", + "context": "Device information row: device name label.", "translations": { "en": "Device name" } }, "diagnostics_description": { - "context": "TODO: describe where this appears.", + "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." } }, "diagnostics_disabled_message": { - "context": "TODO: describe where this appears.", + "context": "Settings > Diagnostics: confirmation shown when diagnostics are turned off.", "translations": { "en": "Diagnostics sharing is off." } }, "diagnostics_enabled_message": { - "context": "TODO: describe where this appears.", + "context": "Settings > Diagnostics: confirmation shown when diagnostics are turned on.", "translations": { "en": "Diagnostics sharing is on." } }, "diagnostics_title": { - "context": "TODO: describe where this appears.", + "context": "Settings > Diagnostics: toggle title.", "translations": { "en": "Share diagnostics" } }, "error_camera": { - "context": "TODO: describe where this appears.", + "context": "Error: camera permission is needed to scan a QR code.", "translations": { "en": "Camera access is required to scan a QR code." } }, "error_device_info": { - "context": "TODO: describe where this appears.", + "context": "Error: device information could not be loaded.", "translations": { "en": "Could not load device information." } }, "error_filesystem": { - "context": "TODO: describe where this appears.", + "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." } }, "error_generic": { - "context": "TODO: describe where this appears.", + "context": "Error: generic fallback message.", "translations": { "en": "Something went wrong. Try again." } }, "error_initialization": { - "context": "TODO: describe where this appears.", + "context": "Error: the app failed to finish starting up.", "translations": { "en": "VniDrop could not finish starting up. Close the app and try again." } }, "error_invalid_ticket": { - "context": "TODO: describe where this appears.", + "context": "Error: the invitation/ticket could not be parsed.", "translations": { "en": "This invitation could not be read. Ask the sender for a new one." } }, "error_invitation_empty": { - "context": "TODO: describe where this appears.", + "context": "Error: the opened invitation contained no data.", "translations": { "en": "That invitation is empty. Try opening it again." } }, "error_missing_native_library": { - "context": "TODO: describe where this appears.", + "context": "Error: the native library is missing from the build.", "translations": { "en": "The native VniDrop library is missing from this build." } }, "error_nfc": { - "context": "TODO: describe where this appears.", + "context": "Error: the NFC tag could not be read/used.", "translations": { "en": "This NFC tag could not be used. Try another tag." } }, "error_permission": { - "context": "TODO: describe where this appears.", + "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." } }, "error_repository": { - "context": "TODO: describe where this appears.", + "context": "Error: transfer data could not be saved locally.", "translations": { "en": "VniDrop could not save transfer data on this device." } }, "error_selection_failed": { - "context": "TODO: describe where this appears.", + "context": "Error: the selected item could not be opened.", "translations": { "en": "Could not open the selected item. Try choosing it again." } }, "error_share_empty": { - "context": "TODO: describe where this appears.", + "context": "Error: attempted to share with nothing selected.", "translations": { "en": "Select at least one item to share." } }, "error_socket_bind": { - "context": "TODO: describe where this appears.", + "context": "Error: the app could not open its network sockets.", "translations": { "en": "VniDrop could not open its network sockets on this device." } }, "error_starting_up": { - "context": "TODO: describe where this appears.", + "context": "Error: an invitation was opened before startup finished.", "translations": { "en": "VniDrop is still starting. Open the invitation again in a moment." } }, "error_transfer": { - "context": "TODO: describe where this appears.", + "context": "Error: the transfer could not be completed.", "translations": { "en": "The transfer could not be completed. Check your connection and try again." } }, "field_receiver_name": { - "context": "TODO: describe where this appears.", + "context": "Text field label: the receiver's display name.", "translations": { "en": "Receiver name" } }, "field_sender_name": { - "context": "TODO: describe where this appears.", + "context": "Text field label: the sender's display name.", "translations": { "en": "Sender name" } }, "field_transfer_name": { - "context": "TODO: describe where this appears.", + "context": "Text field label: the name given to a transfer.", "translations": { "en": "Transfer name" } }, "field_username": { - "context": "TODO: describe where this appears.", + "context": "Settings text field label: this device's display name.", "translations": { "en": "Display name" } }, "folder_status_permission_required": { - "context": "TODO: describe where this appears.", + "context": "Receive-folder status: permission is required to write to the chosen folder.", "translations": { "en": "Permission needed" } }, "folder_status_unavailable": { - "context": "TODO: describe where this appears.", + "context": "Receive-folder status: the chosen folder is unavailable.", "translations": { "en": "Unavailable" } }, "folder_status_validating": { - "context": "TODO: describe where this appears.", + "context": "Receive-folder status: the folder is being checked.", "translations": { "en": "Checking folder…" } }, "folder_status_writable": { - "context": "TODO: describe where this appears.", + "context": "Receive-folder status: the folder is valid and writable.", "translations": { "en": "Ready" } }, "metadata_files": { - "context": "TODO: describe where this appears.", + "context": "Transfer metadata label: number of files.", "translations": { "en": "Files" } }, "metadata_size": { - "context": "TODO: describe where this appears.", + "context": "Transfer metadata label: total size.", "translations": { "en": "Size" } }, "metadata_status": { - "context": "TODO: describe where this appears.", + "context": "Transfer metadata label: current status.", "translations": { "en": "Status" } }, "nav_receive": { - "context": "TODO: describe where this appears.", + "context": "Bottom navigation: Receive tab label.", "translations": { "en": "Receive" } }, "nav_send": { - "context": "TODO: describe where this appears.", + "context": "Bottom navigation: Send tab label.", "translations": { "en": "Send" } }, "nav_settings": { - "context": "TODO: describe where this appears.", + "context": "Bottom navigation: Settings tab label.", "translations": { "en": "Settings" } }, "network_title": { - "context": "TODO: describe where this appears.", + "context": "Device information row: network label.", "translations": { "en": "Network" } }, "notifications_description": { - "context": "TODO: describe where this appears.", + "context": "Settings > Notifications: explanation of what notifications are used for.", "translations": { "en": "Get notified about new receive requests while VniDrop is in the background." } }, "notifications_enabled_message": { - "context": "TODO: describe where this appears.", + "context": "Settings > Notifications: confirmation when notifications are enabled.", "translations": { "en": "Notifications enabled." } }, "notifications_local_title": { - "context": "TODO: describe where this appears.", + "context": "Settings > Notifications: label for the allow-notifications action.", "translations": { "en": "Allow notifications" } }, "notifications_permission_denied": { - "context": "TODO: describe where this appears.", + "context": "Settings > Notifications: message when the OS permission is denied.", "translations": { "en": "Notifications are turned off for VniDrop. You can enable them in Settings." } }, "notifications_settings_open_failed": { - "context": "TODO: describe where this appears.", + "context": "Settings > Notifications: error when the OS notification settings can't be opened.", "translations": { "en": "Could not open notification settings." } }, "notifications_title": { - "context": "TODO: describe where this appears.", + "context": "Settings > Notifications: section title.", "translations": { "en": "Notifications" } }, "notifications_unsupported": { - "context": "TODO: describe where this appears.", + "context": "Settings > Notifications: message when notifications aren't supported on the device.", "translations": { "en": "Notifications are not available on this device." } }, "os_version_title": { - "context": "TODO: describe where this appears.", + "context": "Device information row: operating system version label.", "translations": { "en": "Operating system" } }, "preferences_receive_folder_title": { - "context": "TODO: describe where this appears.", + "context": "Settings > Preferences: label for the received-files destination folder.", "translations": { "en": "Save received transfers to" } }, "preferences_title": { - "context": "TODO: describe where this appears.", + "context": "Settings > Preferences: section title.", "translations": { "en": "Preferences" } }, "progress_cancelled": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: cancelled.", "translations": { "en": "Cancelled" } }, "progress_completed": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: completed.", "translations": { "en": "Completed" } }, "progress_connected": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: connected.", "translations": { "en": "Connected" } }, "progress_connecting": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: connecting.", "translations": { "en": "Connecting" } }, "progress_downloading": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: downloading.", "translations": { "en": "Downloading" } }, "progress_failed": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: failed.", "translations": { "en": "Failed" } }, "progress_getting_ready": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: getting ready.", "translations": { "en": "Getting ready" } }, "progress_interrupted": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: the transfer was interrupted.", "translations": { "en": "Transfer interrupted" } }, "progress_preparing": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: preparing.", "translations": { "en": "Preparing" } }, "progress_ready": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: ready.", "translations": { "en": "Ready" } }, "progress_receiving": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: receiving.", "translations": { "en": "Receiving" } }, "progress_requesting_access": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: requesting access from the sender.", "translations": { "en": "Requesting access" } }, "progress_saving": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: saving received files.", "translations": { "en": "Saving" } }, "progress_sending": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: sending.", "translations": { "en": "Sending" } }, "progress_sending_to_count": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: sending to N receivers. %lld = receiver count.", "targets": [ "apple" ], @@ -982,55 +982,55 @@ } }, "progress_share_ready": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: the share is ready.", "translations": { "en": "Ready to share" } }, "progress_working": { - "context": "TODO: describe where this appears.", + "context": "Transfer progress label: generic working/in-progress state.", "translations": { "en": "Working…" } }, "receive_choose_method_body": { - "context": "TODO: describe where this appears.", + "context": "Receive flow: body text prompting the user to pick an invitation method.", "translations": { "en": "Choose the invitation method available to you." } }, "receive_choose_method_title": { - "context": "TODO: describe where this appears.", + "context": "Receive flow: title of the connect-method chooser.", "translations": { "en": "How would you like to connect?" } }, "receive_clear_history": { - "context": "TODO: describe where this appears.", + "context": "Receive history: action to clear all history.", "translations": { "en": "Clear history" } }, "receive_clear_history_description": { - "context": "TODO: describe where this appears.", + "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." } }, "receive_clear_history_title": { - "context": "TODO: describe where this appears.", + "context": "Receive history: confirmation dialog title for clearing all history.", "translations": { "en": "Clear receive history?" } }, "receive_completed": { - "context": "TODO: describe where this appears.", + "context": "Receive flow: toast/message when a transfer finishes downloading.", "translations": { "en": "Transfer received." } }, "receive_delete_history_description": { - "context": "TODO: describe where this appears.", + "context": "Receive history: confirmation body for removing one item. {arg1} = transfer name.", "args": [ { "name": "arg1", @@ -1042,205 +1042,205 @@ } }, "receive_delete_history_item": { - "context": "TODO: describe where this appears.", + "context": "Receive history: swipe/menu action to delete a single history item.", "translations": { "en": "Delete from receive history" } }, "receive_delete_history_title": { - "context": "TODO: describe where this appears.", + "context": "Receive history: confirmation title for removing one item.", "translations": { "en": "Remove from history?" } }, "receive_empty_body": { - "context": "TODO: describe where this appears.", + "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." } }, "receive_empty_title": { - "context": "TODO: describe where this appears.", + "context": "Receive tab empty state: title when nothing has been received.", "translations": { "en": "Nothing received yet" } }, "receive_history_cleared": { - "context": "TODO: describe where this appears.", + "context": "Receive history: toast confirming history was cleared.", "translations": { "en": "Receive history cleared." } }, "receive_history_title": { - "context": "TODO: describe where this appears.", + "context": "Receive tab: History section title.", "translations": { "en": "History" } }, "receive_method_file": { - "context": "TODO: describe where this appears.", + "context": "Receive method: open a .vnd invitation file.", "translations": { "en": "Open a .vnd invitation" } }, "receive_method_file_description": { - "context": "TODO: describe where this appears.", + "context": "Receive method description: open a saved/shared invitation file.", "translations": { "en": "Choose an invitation saved or shared to this device." } }, "receive_method_nfc": { - "context": "TODO: describe where this appears.", + "context": "Receive method: read an NFC tag.", "translations": { "en": "Read NFC tag" } }, "receive_method_nfc_description": { - "context": "TODO: describe where this appears.", + "context": "Receive method description: hold near the sender's NFC tag.", "translations": { "en": "Hold this device near the sender’s invitation tag." } }, "receive_method_scan": { - "context": "TODO: describe where this appears.", + "context": "Receive method: scan a QR code.", "translations": { "en": "Scan QR code" } }, "receive_method_scan_description": { - "context": "TODO: describe where this appears.", + "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." } }, "receive_new_subtitle": { - "context": "TODO: describe where this appears.", + "context": "Receive tab: subtitle under the title.", "translations": { "en": "Transfers you’ve received on this device." } }, "receive_nfc_waiting": { - "context": "TODO: describe where this appears.", + "context": "Receive flow: prompt while waiting to read an NFC tag.", "translations": { "en": "Hold near the NFC tag…" } }, "receive_open_files_failed": { - "context": "TODO: describe where this appears.", + "context": "Receive flow: error when opening VniDrop's folder in Files fails.", "translations": { "en": "Couldn’t open VniDrop in Files." } }, "receive_review_title": { - "context": "TODO: describe where this appears.", + "context": "Receive flow: title of the review screen before accepting a transfer.", "translations": { "en": "Review transfer" } }, "receive_title": { - "context": "TODO: describe where this appears.", + "context": "Receive tab: screen title.", "translations": { "en": "Receive" } }, "receive_unknown_transfer": { - "context": "TODO: describe where this appears.", + "context": "Receive flow: fallback name for a transfer with no title.", "translations": { "en": "VniDrop transfer" } }, "send_access_anyone": { - "context": "TODO: describe where this appears.", + "context": "Send access option: anyone with the invitation can receive.", "translations": { "en": "Anyone with this transfer" } }, "send_access_anyone_description": { - "context": "TODO: describe where this appears.", + "context": "Send access option description: no approval required.", "translations": { "en": "No approval is required. Only use this for items you are comfortable sharing." } }, "send_access_anyone_warning": { - "context": "TODO: describe where this appears.", + "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." } }, "send_access_approval": { - "context": "TODO: describe where this appears.", + "context": "Send access option: approve each receiver.", "translations": { "en": "Ask before each download" } }, "send_access_approval_description": { - "context": "TODO: describe where this appears.", + "context": "Send access option description: you approve/refuse each receiver.", "translations": { "en": "You approve or refuse every new receiver." } }, "send_access_title": { - "context": "TODO: describe where this appears.", + "context": "Send flow: heading for the who-can-receive access chooser.", "translations": { "en": "Who can receive it?" } }, "send_choose_file_body": { - "context": "TODO: describe where this appears.", + "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." } }, "send_choose_file_title": { - "context": "TODO: describe where this appears.", + "context": "Send flow: title of the choose-what-to-share step.", "translations": { "en": "Choose what to share" } }, "send_empty_body": { - "context": "TODO: describe where this appears.", + "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." } }, "send_empty_title": { - "context": "TODO: describe where this appears.", + "context": "Send tab empty state: title when nothing has been shared.", "translations": { "en": "Nothing shared yet" } }, "send_file_size_unknown": { - "context": "TODO: describe where this appears.", + "context": "Send flow: shown when a selected file's size can't be determined.", "translations": { "en": "Size unavailable" } }, "send_folder_label": { - "context": "TODO: describe where this appears.", + "context": "Send flow: label indicating a selected item is a folder.", "translations": { "en": "Folder" } }, "send_new_transfer_description": { - "context": "TODO: describe where this appears.", + "context": "Send flow: description for the create-new-transfer entry.", "translations": { "en": "Create a new transfer" } }, "send_new_transfer_title": { - "context": "TODO: describe where this appears.", + "context": "Send flow: title for the new-transfer step.", "translations": { "en": "New transfer" } }, "send_review_title": { - "context": "TODO: describe where this appears.", + "context": "Send flow: title of the review-transfer step before creating it.", "translations": { "en": "Review transfer" } }, "send_selected_files_count": { - "context": "TODO: describe where this appears.", + "context": "Send flow: count of files chosen. {count} = selected files. NOTE: singular case reads '1 files' — should become a plural.", "args": [ { "name": "count", @@ -1252,7 +1252,7 @@ } }, "send_stop_sharing": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: action to stop sharing a transfer.", "targets": [ "apple" ], @@ -1261,7 +1261,7 @@ } }, "send_stop_sharing_description": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: confirmation body for stopping sharing.", "targets": [ "apple" ], @@ -1270,97 +1270,97 @@ } }, "send_subtitle": { - "context": "TODO: describe where this appears.", + "context": "Send tab: subtitle under the title.", "translations": { "en": "Transfers you’re sharing from this device." } }, "send_title": { - "context": "TODO: describe where this appears.", + "context": "Send tab: screen title.", "translations": { "en": "Send" } }, "send_transfer_created": { - "context": "TODO: describe where this appears.", + "context": "Send flow: toast confirming a transfer was created.", "translations": { "en": "Transfer created." } }, "send_transfer_details_title": { - "context": "TODO: describe where this appears.", + "context": "Send flow: title of the transfer details screen.", "translations": { "en": "Transfer details" } }, "send_transfers_title": { - "context": "TODO: describe where this appears.", + "context": "Send tab: 'Your transfers' list heading.", "translations": { "en": "Your transfers" } }, "settings_subtitle": { - "context": "TODO: describe where this appears.", + "context": "Settings screen: subtitle summarizing what's configurable.", "translations": { "en": "Your name, where transfers are saved, appearance, and notifications." } }, "settings_title": { - "context": "TODO: describe where this appears.", + "context": "Settings screen: title.", "translations": { "en": "Settings" } }, "snackbar_dismiss": { - "context": "TODO: describe where this appears.", + "context": "Snackbar: accessibility label / action to dismiss the snackbar.", "translations": { "en": "Dismiss" } }, "status_available": { - "context": "TODO: describe where this appears.", + "context": "Transfer status: available (actively shared).", "translations": { "en": "Available" } }, "status_cancelled": { - "context": "TODO: describe where this appears.", + "context": "Transfer status: cancelled.", "translations": { "en": "Cancelled" } }, "status_completed": { - "context": "TODO: describe where this appears.", + "context": "Transfer status: completed.", "translations": { "en": "Completed" } }, "status_failed": { - "context": "TODO: describe where this appears.", + "context": "Transfer status: failed.", "translations": { "en": "Failed" } }, "status_preparing": { - "context": "TODO: describe where this appears.", + "context": "Transfer status: preparing.", "translations": { "en": "Preparing" } }, "status_receiving": { - "context": "TODO: describe where this appears.", + "context": "Transfer status: receiving.", "translations": { "en": "Receiving" } }, "status_stopped": { - "context": "TODO: describe where this appears.", + "context": "Transfer status: stopped.", "translations": { "en": "Stopped" } }, "storage_calculating": { - "context": "TODO: describe where this appears.", + "context": "Settings > Storage: placeholder while a size is being calculated.", "targets": [ "apple" ], @@ -1369,7 +1369,7 @@ } }, "storage_delete_transfers": { - "context": "TODO: describe where this appears.", + "context": "Settings > Storage: button to delete all transfer records.", "targets": [ "apple" ], @@ -1378,7 +1378,7 @@ } }, "storage_delete_transfers_description": { - "context": "TODO: describe where this appears.", + "context": "Settings > Storage: confirmation body for deleting all transfer records.", "targets": [ "apple" ], @@ -1387,7 +1387,7 @@ } }, "storage_deleting": { - "context": "TODO: describe where this appears.", + "context": "Settings > Storage: progress label while transfers are being deleted.", "targets": [ "apple" ], @@ -1396,7 +1396,7 @@ } }, "storage_footer": { - "context": "TODO: describe where this appears.", + "context": "Settings > Storage: footer explaining how storage is managed.", "targets": [ "apple" ], @@ -1405,7 +1405,7 @@ } }, "storage_received_files": { - "context": "TODO: describe where this appears.", + "context": "Settings > Storage: label for the received-files size row.", "targets": [ "apple" ], @@ -1414,7 +1414,7 @@ } }, "storage_temporary": { - "context": "TODO: describe where this appears.", + "context": "Settings > Storage: label for the temporary-files size row.", "targets": [ "apple" ], @@ -1423,7 +1423,7 @@ } }, "storage_title": { - "context": "TODO: describe where this appears.", + "context": "Settings > Storage: section title.", "targets": [ "apple" ], @@ -1432,7 +1432,7 @@ } }, "storage_total": { - "context": "TODO: describe where this appears.", + "context": "Settings > Storage: label for the total-size row.", "targets": [ "apple" ], @@ -1441,7 +1441,7 @@ } }, "storage_transfer_data": { - "context": "TODO: describe where this appears.", + "context": "Settings > Storage: label for the transfer-engine data size row.", "targets": [ "apple" ], @@ -1450,7 +1450,7 @@ } }, "storage_transfers_deleted": { - "context": "TODO: describe where this appears.", + "context": "Settings > Storage: toast confirming all transfers were deleted.", "targets": [ "apple" ], @@ -1459,19 +1459,19 @@ } }, "transfer_activity_description": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: description under the Activity section.", "translations": { "en": "See important updates for this transfer" } }, "transfer_activity_title": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: Activity section title.", "translations": { "en": "Activity" } }, "transfer_delete_description": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: confirmation body for deleting a transfer. {arg1} = transfer name.", "args": [ { "name": "arg1", @@ -1483,103 +1483,103 @@ } }, "transfer_delete_title": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: confirmation title for deleting a transfer.", "translations": { "en": "Delete transfer?" } }, "transfer_deleted": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: toast confirming a transfer was deleted.", "translations": { "en": "Transfer deleted." } }, "transfer_deleting": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: progress label while a transfer is being deleted.", "translations": { "en": "Deleting…" } }, "transfer_details_title": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: screen title.", "translations": { "en": "Transfer details" } }, "transfer_event_approved": { - "context": "TODO: describe where this appears.", + "context": "Transfer activity event: a receiver's access was approved.", "translations": { "en": "Receiver access approved" } }, "transfer_event_completed": { - "context": "TODO: describe where this appears.", + "context": "Transfer activity event: a receiver completed the transfer.", "translations": { "en": "A receiver completed the transfer" } }, "transfer_event_connecting": { - "context": "TODO: describe where this appears.", + "context": "Transfer activity event: connecting to the sender.", "translations": { "en": "Connecting to sender" } }, "transfer_event_downloading": { - "context": "TODO: describe where this appears.", + "context": "Transfer activity event: downloading.", "translations": { "en": "Downloading" } }, "transfer_event_failed": { - "context": "TODO: describe where this appears.", + "context": "Transfer activity event: the transfer hit a problem.", "translations": { "en": "The transfer encountered a problem" } }, "transfer_event_preparing": { - "context": "TODO: describe where this appears.", + "context": "Transfer activity event: preparing the transfer.", "translations": { "en": "Preparing your transfer" } }, "transfer_event_ready": { - "context": "TODO: describe where this appears.", + "context": "Transfer activity event: ready to share.", "translations": { "en": "Ready to share" } }, "transfer_event_refused": { - "context": "TODO: describe where this appears.", + "context": "Transfer activity event: a receiver's access was refused.", "translations": { "en": "Receiver access refused" } }, "transfer_event_requested": { - "context": "TODO: describe where this appears.", + "context": "Transfer activity event: a receiver requested access.", "translations": { "en": "A receiver requested access" } }, "transfer_event_saving": { - "context": "TODO: describe where this appears.", + "context": "Transfer activity event: saving received files.", "translations": { "en": "Saving" } }, "transfer_event_stopped": { - "context": "TODO: describe where this appears.", + "context": "Transfer activity event: sharing was stopped.", "translations": { "en": "Sharing stopped" } }, "transfer_event_updated": { - "context": "TODO: describe where this appears.", + "context": "Transfer activity event: the transfer was updated.", "translations": { "en": "Transfer updated" } }, "transfer_file_count": { - "context": "TODO: describe where this appears.", + "context": "Transfer subtitle: file count with pluralization. {count} = number of files.", "args": [ { "name": "count", @@ -1594,85 +1594,85 @@ } }, "transfer_invitation_saved": { - "context": "TODO: describe where this appears.", + "context": "Transfer share: toast confirming the invitation file was saved.", "translations": { "en": "Invitation saved." } }, "transfer_nearby_device": { - "context": "TODO: describe where this appears.", + "context": "Transfer share/receivers: label for a nearby device.", "translations": { "en": "Nearby device" } }, "transfer_nfc_unavailable": { - "context": "TODO: describe where this appears.", + "context": "Transfer share: message when NFC writing isn't available on the device.", "translations": { "en": "NFC tag writing is not available on this device." } }, "transfer_nfc_waiting": { - "context": "TODO: describe where this appears.", + "context": "Transfer share: prompt while waiting to write an NFC tag.", "translations": { "en": "Hold your device near a writable NFC tag." } }, "transfer_nfc_written": { - "context": "TODO: describe where this appears.", + "context": "Transfer share: confirmation the invitation was written to the NFC tag.", "translations": { "en": "Invitation written to the NFC tag." } }, "transfer_no_activity": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: empty state for the Activity section.", "translations": { "en": "There is no activity to show yet." } }, "transfer_no_receivers": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: empty state for the Receivers section.", "translations": { "en": "Nobody has requested this transfer yet." } }, "transfer_receiver_accepted": { - "context": "TODO: describe where this appears.", + "context": "Receiver status: approved, waiting for the download to complete.", "translations": { "en": "Approved — waiting for completion" } }, "transfer_receiver_completed": { - "context": "TODO: describe where this appears.", + "context": "Receiver status: received successfully.", "translations": { "en": "Received successfully" } }, "transfer_receiver_expired": { - "context": "TODO: describe where this appears.", + "context": "Receiver status: the request expired.", "translations": { "en": "Request expired" } }, "transfer_receiver_refused": { - "context": "TODO: describe where this appears.", + "context": "Receiver status: the request was refused.", "translations": { "en": "Request refused" } }, "transfer_receiver_requested": { - "context": "TODO: describe where this appears.", + "context": "Receiver status: waiting for the sender's approval.", "translations": { "en": "Waiting for your approval" } }, "transfer_receiver_unknown": { - "context": "TODO: describe where this appears.", + "context": "Receiver status: status unavailable/unknown.", "translations": { "en": "Status unavailable" } }, "transfer_receivers_completed_count": { - "context": "TODO: describe where this appears.", + "context": "Receivers summary: how many receivers completed. {count} = completed receivers.", "args": [ { "name": "count", @@ -1684,13 +1684,13 @@ } }, "transfer_receivers_description": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: description under the Receivers section.", "translations": { "en": "Requests, approvals, and completed deliveries" } }, "transfer_receivers_pending": { - "context": "TODO: describe where this appears.", + "context": "Receivers summary: how many requests are waiting. {count} = pending receivers.", "args": [ { "name": "count", @@ -1702,37 +1702,37 @@ } }, "transfer_receivers_title": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: Receivers section title.", "translations": { "en": "Receivers" } }, "transfer_scan_qr": { - "context": "TODO: describe where this appears.", + "context": "Transfer share: caption under the QR code.", "translations": { "en": "Scan with VniDrop to receive this transfer" } }, "transfer_share_description": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: description under the Share section.", "translations": { "en": "QR code, invitation file, and nearby options" } }, "transfer_share_title": { - "context": "TODO: describe where this appears.", + "context": "Transfer details: Share section title.", "translations": { "en": "Share" } }, "value_unavailable": { - "context": "TODO: describe where this appears.", + "context": "Placeholder shown when a device-info or metadata value can't be read.", "translations": { "en": "Not available" } }, "version_title": { - "context": "TODO: describe where this appears.", + "context": "Device information / Settings row: app version label.", "translations": { "en": "App version" }