From a4790b580f4cacafc56e49895b02418a606838ab Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Wed, 10 May 2023 14:22:25 +0530 Subject: [PATCH 01/42] nmc 2023 - privacy policy localization changes added --- .../Supporting Files/en.lproj/Localizable.strings | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 46bf73d7a3..19c1304bd8 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -756,3 +756,16 @@ You can stop it at any time, adjust the settings, and enable it again."; "_scanning_files_" = "Scanning files …"; "_moving_items_to_domain_" = "Moving items to correct domain …"; "_finishing_up_" = "Finishing up …"; + +// MARK: Privacy Policy +"_privacy_settings_title_" = "Privacy Settings"; +"_privacy_help_text_after_login_" = "This app uses Cookies and similiar technolgies (tools). By clicking Accept, you accept the processing and also the Transfer of your data to third parties. The data will be used for Analysis, retargeting and to Display personalized Content and Advertising on sites and third-party sites. You can find further informatin, including Information on data processing by third-party Providers, in the settings and in our Privacy Policy.You can reject the use of the Tools or customize them at any time in the Settings."; +"_key_privacy_help_" = "Privacy Policy"; +"_key_reject_help_" = "reject"; +"_key_settings_help_" = "Settings"; +"_accept_button_title_" = "Accept"; +"_privacy_settings_help_text_" = "To optimize your app, we collect anonymous data. For this we use software solutions of different partners. We would like to give you full transparency and decision-making power over the processin and collection of your anonymized usage data. You can also change your settings at any time later in the app settings under data protection. Please note, however, that data collection makes a considerable contribution to the optimization of this app and you prevent this optimization by preventing data transmission."; +"_required_data_collection_" = "Required data collection"; +"_required_data_collection_help_text_" = "The collection of this data is necessary to be able to use essential functions of the app."; +"_analysis_data_acqusition_" = "Analysis-data acqusition for the design"; +"_analysis_data_acqusition_help_text_" = "This data helps us to optimize the app usage for you and to identify system crashes and errors more quickly."; From a42ac8f4748b157174e5dd3a4c77c5e5bb04e186 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Wed, 10 May 2023 14:25:01 +0530 Subject: [PATCH 02/42] NMC 2023 german translation update (+35 squashed commits) Squashed commits: [353bf009c] NMC 2023 - update missing localised strings for german languages [a754bbf24] NMC 2023 - Localisation change for empty filename alert [3170e8b5b] NMC 2023 - Localisation changes for auto upload description [ab885ab8e] NMC 2023 - NMC 2580 App Updater strings added [bfd0d6653] NMC 2023 - (nmc 2397) Strings update [872a80881] nmc 2023 - re sharing string update [9a3e27542] NMC 2023 - share strings update [b2d3c952f] NMC 2023 "Details" string changed [3450bb2ab] NMC 2023 Two localizable strings added for dashboard [c0f74faf0] nmc 2023 - image video upload localisation related changes [668332a07] nmc 2023 - more tab localisation changes [3489a28ab] nmc 2023 - localisation update for share text field [d7eb28e6b] nmc 2023 - sharing feature localisation strings update [1857be058] nmc 2023 - E2e and onboarding Internet not available strings update [6a6534546] nmc 2023 - scan cluster localisation changes [ed6b28265] NMC 1990 Settings cluster Localization strings added [d951a89ff] nmc 2023 - collabora localization changes added [f9656c196] nmc 2023 - privacy policy localization changes added [39fb24a46] NMC 2023 - update missing localised strings for german languages [3a190b508] NMC 2023 - Localisation change for empty filename alert [1ce0969b6] NMC 2023 - Localisation changes for auto upload description [bc178c063] NMC 2023 - NMC 2580 App Updater strings added [daee67130] NMC 2023 - (nmc 2397) Strings update [0e170564d] nmc 2023 - re sharing string update [fb10cb28b] NMC 2023 - share strings update [2b6a76baf] NMC 2023 "Details" string changed [05e6c22f9] NMC 2023 Two localizable strings added for dashboard [9713606b7] nmc 2023 - image video upload localisation related changes [18332eb52] nmc 2023 - more tab localisation changes [9aeba2a4f] nmc 2023 - localisation update for share text field [92836cf7b] nmc 2023 - sharing feature localisation strings update [0ff7d2b7f] nmc 2023 - E2e and onboarding Internet not available strings update [e2d677b4d] nmc 2023 - scan cluster localisation changes [5d59992d2] NMC 1990 Settings cluster Localization strings added [a3d0a2217] nmc 2023 - collabora localization changes added --- .../en.lproj/Localizable.strings | 187 ++++++++++++++++-- 1 file changed, 171 insertions(+), 16 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 19c1304bd8..e5eef5402c 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -65,6 +65,12 @@ "_audio_" = "Audio"; "_unknown_" = "Unknown"; "_success_" = "Success"; +"_initialization_" = "Initialization"; +"_experimental_" = "Experimental"; +"_select_dir_media_tab_" = "Select as folder \"Media\""; +"_error_creation_file_" = "Oops! Could not create the file"; +"_save_path_" = "Storage path"; +"_save_settings_" = "Save settings"; "_mode_filename_" = "Filename mode"; "_warning_owncloud_" = "You are connected to an ownCloud server. This is untested and unsupported, use at your own risk. To upgrade to Nextcloud, see https://nextcloud.com/migration."; "_warning_unsupported_" = "You are using an unsupported version of Nextcloud. For the safety of your data we strongly recommend updating to the latest stable Nextcloud."; @@ -78,11 +84,19 @@ "_the_account_" = "The account"; "_does_not_exist_" = "does not exist"; "_sharing_" = "Sharing"; -"_details_" = "Details"; -"_no_permission_add_file_" = "You don't have permission to add files."; -"_no_permission_delete_file_" = "You don't have permission to delete files."; -"_no_permission_modify_file_" = "You don't have permission to modify files."; -"_no_permission_favorite_file_" = "You don't have permission to add the file to your favorites."; +"_details_" = "Share"; +"_sub_details_" = "Subscription Details"; +"_subscriptions_" = "Subscriptions"; +"_dark_mode_" = "Dark mode"; +"_dark_mode_detect_" = "Detect iOS dark mode"; +"_screen_" = "Screen"; +"_wipe_account_" = "Account is wiped from server"; +"_appconfig_view_title_" = "Account configuration in progress …"; +"_no_permission_add_file_" = "You don't have permission to add files"; +"_no_permission_delete_file_" = "You don't have permission to delete files"; +"_no_permission_modify_file_" = "You don't have permission to modify files"; +"_no_permission_favorite_file_" = "You don't have permission to add the file to your favorites"; +"_request_upload_new_ver_" = "The file has been modified, do you want to upload the new version?"; "_add_folder_info_" = "Add folder info"; "_back_" = "Back"; "_search_" = "Search"; @@ -125,7 +139,6 @@ /* MARK: Files lock */ -"_lock_" = "Lock"; "_unlock_" = "Unlock"; "_lock_file_" = "Lock file"; "_unlock_file_" = "Unlock file"; @@ -149,6 +162,10 @@ "_source_code_" = "Get source code"; "_account_select_" = "Select the account"; "_account_select_to_add_" = "Select the account to add"; +"_host_insert_" = "Insert the host name, for example:"; +"_certificate_not_found_" = "File %@ in documents directory not found."; +"_copy_failed_" = "Copy failed"; +"_certificate_installed_" = "Certificate installed"; "_remove_local_account_" = "Remove local account"; "_want_delete_account_" = "Do you want to remove local account?"; "_prevent_http_redirection_"= "The redirection in HTTP is not permitted."; @@ -223,7 +240,9 @@ "_notifications_" = "Notifications"; "_quota_space_unlimited_" = "Unlimited"; "_quota_space_unknown_" = "Unknown"; -"_quota_using_" = "You are using %@ of %@"; +"_quota_using_" = "%@ "; +"_quota_using_of_" = "of %@"; +"_quota_using_percentage_" = "Memory to %@ occupied"; "_acknowledgements_" = "Acknowledgements"; "_settings_" = "Settings"; "_enter_password_" = "Enter password …"; @@ -232,17 +251,33 @@ "_lock_not_active_" = "Lock: Off"; "_lock_protection_no_screen_" = "Do not ask at startup"; "_enable_touch_face_id_" = "Enable Touch/Face ID"; +"_security_" = "Security"; +"_data_protection_" = "Data protection"; +"_privacy_settings_" = "Privacy Settings"; +"_used_opensource_software_" = "OpenSource software used"; +"_service_" = "Service"; +"_imprint_" = "Imprint"; +"_magentacloud_version_" = "MagentaCLOUD Version"; +"_url_" = "URL"; +"_username_" = "Username"; +"_change_credentials_" = "Change your credentials"; "_wifi_only_" = "Only use Wi-Fi connection"; "_settings_autoupload_" = "Auto upload photos"; "_clear_cache_" = "Clear cache"; "_clear_cache_footer_" = "Clear downloaded and offline files from the app"; -"_exit_" = "Reset application"; "_exit_footer_" = "Remove all accounts and local data from the app."; +"_exit_" = "Logout"; +"_funct_not_enabled_" = "Functionality not enabled"; +"_passcode_activate_" = "Password lock on"; +"_disabling_passcode_" = "Removing password lock"; "_want_exit_" = "Attention! Will be reset to initial state. Continue?"; "_want_delete_cache_" = "Do you want to delete the cache (this also removes the transfers in progress)?"; "_add_account_" = "Add account"; "_want_delete_" = "You will delete the following: "; "_want_leave_share_" = "You will leave the following shares: "; +"_delete_account_" = "Remove account"; +"_delete_active_account_" = "Remove active account"; +//"_want_delete_" = "Do you really want to delete?"; "_no_delete_" = "No, do not delete"; "_yes_delete_" = "Yes, delete"; "_information_" = "Information"; @@ -258,7 +293,17 @@ "_autoupload_photos_" = "Auto upload photos"; "_autoupload_videos_" = "Auto upload videos"; "_autoupload_favorites_" = "Auto upload favorites only"; -"_autoupload_description_" = "Choose whether new photos or videos will be automatically uploaded to your server."; +//"_autoupload_description_" = "Choose whether new photos or videos will be automatically uploaded to your server."; +"_autoupload_description_" = "New photos/videos will be automatically uploaded to your MagentaCLOUD"; +"_autoupload_description_background_" = "This option requires the use of GPS to trigger the detection of new photos/videos in the camera roll once the location changes significantly"; +"_autoupload_background_title_" = "Limitations"; +"_autoupload_background_msg_" = "Due to iOS restrictions, it is not yet possible to perform background processes, unless GPS services are activated. Once the cell in the cellular network is changed, the system wakes up for a short time and checks for new photos to upload to the cloud."; +"_autoupload_change_location_" = "Change folder"; +"_autoupload_location_now_" = "Folder"; +"_autoupload_location_default_" = "Restore default folder"; +"_autoupload_change_location_footer_" = "Change folder used for \"Automatic upload of camera photos\" (if the option is enabled)"; +"_autoupload_not_select_home_" = "Select a folder"; +"_autoupload_save_album_" = "Copy photo or video into the photo album"; "_autoupload_fullphotos_" = "Upload the whole camera roll"; "_start_autoupload_" = "Turn on auto upload"; "_stop_autoupload_" = "Turn off auto upload"; @@ -293,6 +338,9 @@ "_login_url_error_" = "URL error, please verify your server URL"; "_favorites_" = "Favorites"; "_favorite_short_" = "Favorite"; +"_favorite_" = "Favorite"; +"_unfavorite_" = "Unfavorite"; +"_no_files_uploaded_" = "No files uploaded"; "_tutorial_favorite_view_" = "Files and folders you mark as favorites will show up here"; "_tutorial_offline_view_" = "Files copied here will be available offline.\n\nThey will be synchronized with your cloud."; "_tutorial_groupfolders_view_" = "No Group folders yet"; @@ -352,7 +400,6 @@ "_files_no_files_" = "No files in here"; "_files_no_folders_" = "No folders in here"; "_request_in_progress_" = "Request to server in progress …"; -"_personal_files_only_" = "Personal files only"; "audio" = "AUDIO"; "directory" = "FOLDERS"; @@ -378,6 +425,12 @@ "_media_viewimage_show_" = "Show only images"; "_media_viewvideo_show_" = "Show only video"; "_media_show_all_" = "Show both"; +"_media_by_created_date_" = "Sort by created date"; +"_media_by_upload_date_" = "Sort by upload date"; +"_media_by_modified_date_" = "Sort by modified date"; +"_insert_password_pfd_" = "Secured PDF. Enter password"; +"_password_pdf_error_" = "Wrong password"; +"_error_download_photobrowser_" = "Error: Unable to download photo"; "_good_morning_" = "Good morning"; "_good_day_" = "Good day"; "_good_afternoon_" = "Good afternoon"; @@ -396,20 +449,57 @@ "_user_sharee_footer_" = "Tap to change permissions"; "_enforce_password_protection_" = "Enforce password protection"; "_shared_with_you_by_" = "Shared with you by"; -"_shareLinksearch_placeholder_" = "Name, email, or Federated Cloud ID …"; +//"_shareLinksearch_placeholder_" = "Name, email, or Federated Cloud ID …"; +//"_new_comment_" = "New comment …"; +//"_edit_comment_" = "Edit comment"; +//"_delete_comment_" = "Delete comment"; +//"_share_read_only_" = "View only"; +//"_share_editing_" = "Can edit"; +"_share_reshare_allowed_" = "Resharing is allowed."; +"_share_reshare_not_allowed_" = "Resharing is not allowed."; +"_sharing_message_" = "You can create links or send shares by mail. If you invite MagentaCLOUD users, you have more opportunities for collaboration."; +"_create_link_" = "Create Link"; +"personal_share_by_mail" = "Personal share by mail"; +"_your_shares_" = "Your Shares"; +"_share_linklabel_" = "Link '%@'"; +"_share_link_folder_" = "Link to folder"; +"_share_link_file_" = "Link to file"; +"no_shares_created" = "No shares created yet."; +"_advance_permissions_" = "Advanced permissions"; +"_send_new_email_" = "Send new email"; +"_apply_changes_" = "Apply changes"; +"_send_share_" = "Send share"; +"_PERMISSIONS_" = "PERMISSIONS"; +"share_editing_message" = "There are no editing functions for files unless you share them with MagentaCLOUD users."; +"_file_drop_message_" = "With File drop, only uploading is allowed. Only you can see files and folders that have been uploaded."; +"_custom_link_label" = "Your custom link label"; +"_set_password_" = "Set password"; +"_share_expiration_date_placeholder_"= "Expiration date for this share"; +"_share_download_limit_" = "Download Limit"; +"_share_download_limit_placeholder_" = "Enter download limit"; +"_share_download_limit_alert_empty_" = "Download limit cannot be empty."; +"_share_download_limit_alert_zero_" = "Download limit should be greater than 0."; +"_share_remaining_download_" = "Downloads:"; +"_share_read_only_" = "Read only"; +"_share_editing_" = "Can edit"; +"_share_file_drop_" = "Filedrop only"; +//"_share_file_drop_" = "File request"; +"_share_hide_download_" = "Prevent download"; +"_share_note_recipient_" = "YOUR MESSAGE"; +"_shareLinksearch_placeholder_" = "Contact name or email address"; +"_shareLinksearch_mail_placeholder_" = "Type a name or an email and press Enter"; "_new_comment_" = "New comment …"; "_edit_comment_" = "Edit comment"; "_delete_comment_" = "Delete comment"; -"_share_read_only_" = "View only"; -"_share_editing_" = "Can edit"; +"_share_allow_editing_" = "Allow editing"; "_share_allow_upload_" = "Allow upload and editing"; -"_share_file_drop_" = "File request"; "_share_secure_file_drop_" = "Secure file drop (upload only)"; "_share_hide_download_" = "Hide download"; "_share_allowed_downloads_" = "Allowed downloads"; "_share_limit_download_" = "Limit downloads"; "_remaining_" = "%d remaining"; "_share_password_protect_" = "Password protection"; +//"_share_password_protect_" = "Password protect"; "_share_expiration_date_" = "Set expiration date"; "_share_note_recipient_" = "Note to recipient"; "_share_add_sharelink_" = "Add another link"; @@ -427,6 +517,12 @@ "_remote_" = "Remote"; "_remote_group_" = "Remote group"; "_conversation_" = "Conversation"; +//"_share_can_reshare_" = "Allow resharing"; +//"_share_can_create_" = "Allow creating"; +//"_share_can_change_" = "Allow editing"; +//"_share_can_delete_" = "Allow deleting"; +//"_share_unshare_" = "Unshare"; +//"_share_can_download_" = "Allow download"; "_no_transfer_" = "No transfers yet"; "_no_transfer_sub_" = "Uploads and downloads from this device will show up here"; @@ -468,8 +564,34 @@ "_e2e_remove_folder_encrypted_" = "Decrypt"; "_e2e_file_encrypted_" = "File encrypted"; "_e2e_goto_settings_for_enable_" = "This is an encrypted directory, go to \"Settings\" and enable end-to-end encryption"; -"_e2e_error_" = "An internal end-to-end encryption error occurred."; -"_e2e_in_upload_" = "Upload in progress, please wait for all files to be transferred."; +"_e2e_error_" = "An internal end-to-end encryption error occurred"; +"_e2e_in_upload_" = "Upload in progress, please wait for all files to be transferred"; +"_e2e_delete_folder_not_permitted_" = "Deletion of the directory marked as \"encrypted\" is not allowed"; +"_e2e_error_encode_metadata_" = "Serious internal error in encoding metadata"; +"_e2e_error_decode_metadata_" = "Serious internal error in decoding metadata"; +"_e2e_error_create_encrypted_" = "Could not create encrypted file"; +"_e2e_error_update_metadata_" = "Update metadata error"; +"_e2e_error_store_metadata_" = "Could not save metadata"; +"_e2e_error_send_metadata_" = "Could not send metadata"; +"_e2e_error_delete_metadata_" = "Could not delete metadata"; +"_e2e_error_get_metadata_" = "Could not fetch metadata"; +"_e2e_error_not_enabled_" = "Serious internal error. End-to-end encryption not enabled"; +"_e2e_error_record_not_found_" = "Serious internal error. Records not found"; +"_e2e_error_unlock_" = "Could not unlock folder"; +"_e2e_error_lock_" = "Could not lock folder"; +"_e2e_error_delete_mark_folder_" = "Decrypt marked folder"; +"_e2e_error_mark_folder_" = "Encrypt folder"; +"_e2e_error_directory_not_empty_" = "The directory is not empty"; +"_e2e_error_not_move_" = "It is not possible move files to encrypted directory"; +"_e2e_error_not_versionwriteable_" = "The E2EE version of the server is not compatible with this client"; +"_start_e2e_encryption_1_" = "To set up end-to-end encryption, they must first set up the PIN lock to prevent unauthorised people from accessing your key."; +"_start_e2e_encryption_2_" = "After starting the encryption, a randomly generated word sequence (passphrase) of 12 words is displayed. This remains in this app and can be displayed again. Nevertheless, we recommend that you write down the passphrase."; +"_start_e2e_encryption_3_" = "The passphrase is your personal password with which you can access encrypted data in your MagentaCLOUD or enable access to these files on other devices such as your PC."; +"_read_passphrase_description_" = "Here you can display the passphrase again and also copy it. You need the passphrase if you want to decrypt the data on another device with access to MagentaCLOUD, for example your PC or another smartphone or tablet."; +"_remove_passphrase_desc_1_" = "You can remove the passphrase on this device. This will not affect the encrypted content, but this device will no longer be able to decrypt your data."; +"_remove_passphrase_desc_2_" = "You can re-enter the passphrase here at any time to ensure access to your encrypted content from this device."; +"_e2e_error_incorrect_passphrase_" = "Wrong password?"; +"_e2e_error_passphrase_title" = "Error while decrypting."; "_scans_document_" = "Scan document"; "_scanned_images_" = "Scanned images"; "_scan_document_pdf_page_" = "Page"; @@ -769,3 +891,36 @@ You can stop it at any time, adjust the settings, and enable it again."; "_required_data_collection_help_text_" = "The collection of this data is necessary to be able to use essential functions of the app."; "_analysis_data_acqusition_" = "Analysis-data acqusition for the design"; "_analysis_data_acqusition_help_text_" = "This data helps us to optimize the app usage for you and to identify system crashes and errors more quickly."; + +// MARK: Collabora +"_prefix_upload_path_" = "MagentaCLOUD/"; +"_please_enter_file_name_" = "Please enter the file name"; + +// MARK: Scan +"_location_" = "Location"; +"_save_with_text_recognition_" = "SAVE WITH TEXT RECOGNITION (OCR)"; +"_pdf_with_ocr_" = "PDF (OCR)"; +"_text_file_ocr_" = "Textfile (txt)"; +"_save_without_text_recognition_" = "SAVE WITHOUT TEXT RECOGNITION"; +"_pdf_" = "PDF"; +"_jpg_" = "JPG"; +"_png_" = "PNG"; +"_set_password_" = "Set password"; +"_no_password_warn_" = "Please enter a password for the PDF you want to create or disable the function."; +"_saved_info_alert_" = "Saving will take some time, especially if you have selected several pages and file formats."; +"_no_file_type_selection_error_" = "Please select at least one filetype"; +"_no_internet_alert_message_" = "A data connection is not currently allowed."; +"_no_internet_alert_title_" = "Connection error"; +"_auto_upload_help_text_" = "With this option, you upload your photos or videos to the same folder that you selected for \"Automatic upload.\""; + +// MARK: Dashboard +"_shared_" = "Shared"; +"_recieved_" = "Received"; + +// MARK: App Updater +"update_available" = "Update available"; +"update_description" = "MagentaCLOUD version %@ is now available"; +"update" = "Update"; +"not_now" = "Not Now"; + +"_prompt_insert_file_name" = "Please enter filename"; From 3a18ea657df565364f873820ad8c2b40f1e6580b Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Fri, 19 May 2023 18:08:17 +0530 Subject: [PATCH 03/42] nmc 2023 - scan cluster localisation changes --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 2 ++ 1 file changed, 2 insertions(+) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index e5eef5402c..81d77ff08d 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -898,6 +898,8 @@ You can stop it at any time, adjust the settings, and enable it again."; // MARK: Scan "_location_" = "Location"; +"_prefix_upload_path_" = "MagentaCLOUD/"; + "_save_with_text_recognition_" = "SAVE WITH TEXT RECOGNITION (OCR)"; "_pdf_with_ocr_" = "PDF (OCR)"; "_text_file_ocr_" = "Textfile (txt)"; From 1a1d810cf70b5b0bbf2552751465dfdcff5668e5 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Tue, 6 Jun 2023 22:57:35 +0530 Subject: [PATCH 04/42] nmc 2023 - sharing feature localisation strings update --- .../xcschemes/File Provider Extension UI.xcscheme | 1 - .../xcschemes/WidgetDashboardIntentHandler.xcscheme | 1 - iOSClient/Supporting Files/en.lproj/Localizable.strings | 5 +++++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme b/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme index fd16f58a63..6e1cc593fa 100644 --- a/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme +++ b/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme @@ -73,7 +73,6 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES" - askForAppToLaunch = "Yes" launchAutomaticallySubstyle = "2"> diff --git a/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme b/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme index 485c4c3f00..d912dd669b 100644 --- a/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme +++ b/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme @@ -73,7 +73,6 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES" - askForAppToLaunch = "Yes" launchAutomaticallySubstyle = "2"> diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 81d77ff08d..89cfa02206 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -83,6 +83,10 @@ "_account_not_available_" = "The account %@ of %@ does not exist, please add it to be able to read the file %@."; "_the_account_" = "The account"; "_does_not_exist_" = "does not exist"; +"_purchase_" = "Purchase"; +"_account_not_exists_" = "The account %@ of %@ does not exist"; +"_error_parameter_schema_" = "Wrong parameters, impossible to continue"; +"_comments_" = "Comments"; "_sharing_" = "Sharing"; "_details_" = "Share"; "_sub_details_" = "Subscription Details"; @@ -457,6 +461,7 @@ //"_share_editing_" = "Can edit"; "_share_reshare_allowed_" = "Resharing is allowed."; "_share_reshare_not_allowed_" = "Resharing is not allowed."; +"_shareLinksearch_placeholder_" = "Contact name or email address"; "_sharing_message_" = "You can create links or send shares by mail. If you invite MagentaCLOUD users, you have more opportunities for collaboration."; "_create_link_" = "Create Link"; "personal_share_by_mail" = "Personal share by mail"; From e3514b5bb1c2138c962fb6a361381d9f6cddcc7a Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Wed, 7 Jun 2023 15:20:10 +0530 Subject: [PATCH 05/42] nmc 2023 - localisation update for share text field --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 1 - 1 file changed, 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 89cfa02206..93bc8b3859 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -461,7 +461,6 @@ //"_share_editing_" = "Can edit"; "_share_reshare_allowed_" = "Resharing is allowed."; "_share_reshare_not_allowed_" = "Resharing is not allowed."; -"_shareLinksearch_placeholder_" = "Contact name or email address"; "_sharing_message_" = "You can create links or send shares by mail. If you invite MagentaCLOUD users, you have more opportunities for collaboration."; "_create_link_" = "Create Link"; "personal_share_by_mail" = "Personal share by mail"; From 0fae51cd3f4cd31e1eab218250e327350279ece0 Mon Sep 17 00:00:00 2001 From: TSI-amrutwaghmare <96108296+TSI-amrutwaghmare@users.noreply.github.com> Date: Tue, 27 Feb 2024 10:48:28 +0530 Subject: [PATCH 06/42] NMC 2023 - update missing localised strings for german languages --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 3 +++ 1 file changed, 3 insertions(+) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 93bc8b3859..9a29f68d2a 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -85,6 +85,9 @@ "_does_not_exist_" = "does not exist"; "_purchase_" = "Purchase"; "_account_not_exists_" = "The account %@ of %@ does not exist"; +"_account_not_available_" = "The account %@ of %@ does not exist, please add it to be able to read the file %@"; +"_the_account_" = "The account"; +"_does_not_exist_" = "does not exist"; "_error_parameter_schema_" = "Wrong parameters, impossible to continue"; "_comments_" = "Comments"; "_sharing_" = "Sharing"; From 0de80ca2bbd0f53cc3aeb3477d051f2639966a5a Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Wed, 10 May 2023 14:22:25 +0530 Subject: [PATCH 07/42] nmc 2023 - privacy policy localization changes added --- .../en.lproj/Localizable.strings | 49 ++++--------------- 1 file changed, 10 insertions(+), 39 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 9a29f68d2a..fa2bde991a 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -69,7 +69,7 @@ "_experimental_" = "Experimental"; "_select_dir_media_tab_" = "Select as folder \"Media\""; "_error_creation_file_" = "Oops! Could not create the file"; -"_save_path_" = "Storage path"; +"_save_path_" = "Save path"; "_save_settings_" = "Save settings"; "_mode_filename_" = "Filename mode"; "_warning_owncloud_" = "You are connected to an ownCloud server. This is untested and unsupported, use at your own risk. To upgrade to Nextcloud, see https://nextcloud.com/migration."; @@ -91,7 +91,7 @@ "_error_parameter_schema_" = "Wrong parameters, impossible to continue"; "_comments_" = "Comments"; "_sharing_" = "Sharing"; -"_details_" = "Share"; +"_details_" = "Details"; "_sub_details_" = "Subscription Details"; "_subscriptions_" = "Subscriptions"; "_dark_mode_" = "Dark mode"; @@ -146,6 +146,7 @@ /* MARK: Files lock */ +"_lock_" = "Lock"; "_unlock_" = "Unlock"; "_lock_file_" = "Lock file"; "_unlock_file_" = "Unlock file"; @@ -169,7 +170,7 @@ "_source_code_" = "Get source code"; "_account_select_" = "Select the account"; "_account_select_to_add_" = "Select the account to add"; -"_host_insert_" = "Insert the host name, for example:"; +"_host_insert_" = "Insert the hostname, for example:"; "_certificate_not_found_" = "File %@ in documents directory not found."; "_copy_failed_" = "Copy failed"; "_certificate_installed_" = "Certificate installed"; @@ -247,9 +248,7 @@ "_notifications_" = "Notifications"; "_quota_space_unlimited_" = "Unlimited"; "_quota_space_unknown_" = "Unknown"; -"_quota_using_" = "%@ "; -"_quota_using_of_" = "of %@"; -"_quota_using_percentage_" = "Memory to %@ occupied"; +"_quota_using_" = "You are using %@ of %@"; "_acknowledgements_" = "Acknowledgements"; "_settings_" = "Settings"; "_enter_password_" = "Enter password …"; @@ -258,13 +257,6 @@ "_lock_not_active_" = "Lock: Off"; "_lock_protection_no_screen_" = "Do not ask at startup"; "_enable_touch_face_id_" = "Enable Touch/Face ID"; -"_security_" = "Security"; -"_data_protection_" = "Data protection"; -"_privacy_settings_" = "Privacy Settings"; -"_used_opensource_software_" = "OpenSource software used"; -"_service_" = "Service"; -"_imprint_" = "Imprint"; -"_magentacloud_version_" = "MagentaCLOUD Version"; "_url_" = "URL"; "_username_" = "Username"; "_change_credentials_" = "Change your credentials"; @@ -432,6 +424,7 @@ "_media_viewimage_show_" = "Show only images"; "_media_viewvideo_show_" = "Show only video"; "_media_show_all_" = "Show both"; +"_media_view_options_" = "View options"; "_media_by_created_date_" = "Sort by created date"; "_media_by_upload_date_" = "Sort by upload date"; "_media_by_modified_date_" = "Sort by modified date"; @@ -494,12 +487,16 @@ "_share_hide_download_" = "Prevent download"; "_share_note_recipient_" = "YOUR MESSAGE"; "_shareLinksearch_placeholder_" = "Contact name or email address"; +"_shareLinksearch_placeholder_" = "Type a name and press Search"; "_shareLinksearch_mail_placeholder_" = "Type a name or an email and press Enter"; "_new_comment_" = "New comment …"; "_edit_comment_" = "Edit comment"; "_delete_comment_" = "Delete comment"; "_share_allow_editing_" = "Allow editing"; +"_share_read_only_" = "View only"; +"_share_editing_" = "Editing"; "_share_allow_upload_" = "Allow upload and editing"; +"_share_file_drop_" = "File drop (upload only)"; "_share_secure_file_drop_" = "Secure file drop (upload only)"; "_share_hide_download_" = "Hide download"; "_share_allowed_downloads_" = "Allowed downloads"; @@ -573,32 +570,6 @@ "_e2e_goto_settings_for_enable_" = "This is an encrypted directory, go to \"Settings\" and enable end-to-end encryption"; "_e2e_error_" = "An internal end-to-end encryption error occurred"; "_e2e_in_upload_" = "Upload in progress, please wait for all files to be transferred"; -"_e2e_delete_folder_not_permitted_" = "Deletion of the directory marked as \"encrypted\" is not allowed"; -"_e2e_error_encode_metadata_" = "Serious internal error in encoding metadata"; -"_e2e_error_decode_metadata_" = "Serious internal error in decoding metadata"; -"_e2e_error_create_encrypted_" = "Could not create encrypted file"; -"_e2e_error_update_metadata_" = "Update metadata error"; -"_e2e_error_store_metadata_" = "Could not save metadata"; -"_e2e_error_send_metadata_" = "Could not send metadata"; -"_e2e_error_delete_metadata_" = "Could not delete metadata"; -"_e2e_error_get_metadata_" = "Could not fetch metadata"; -"_e2e_error_not_enabled_" = "Serious internal error. End-to-end encryption not enabled"; -"_e2e_error_record_not_found_" = "Serious internal error. Records not found"; -"_e2e_error_unlock_" = "Could not unlock folder"; -"_e2e_error_lock_" = "Could not lock folder"; -"_e2e_error_delete_mark_folder_" = "Decrypt marked folder"; -"_e2e_error_mark_folder_" = "Encrypt folder"; -"_e2e_error_directory_not_empty_" = "The directory is not empty"; -"_e2e_error_not_move_" = "It is not possible move files to encrypted directory"; -"_e2e_error_not_versionwriteable_" = "The E2EE version of the server is not compatible with this client"; -"_start_e2e_encryption_1_" = "To set up end-to-end encryption, they must first set up the PIN lock to prevent unauthorised people from accessing your key."; -"_start_e2e_encryption_2_" = "After starting the encryption, a randomly generated word sequence (passphrase) of 12 words is displayed. This remains in this app and can be displayed again. Nevertheless, we recommend that you write down the passphrase."; -"_start_e2e_encryption_3_" = "The passphrase is your personal password with which you can access encrypted data in your MagentaCLOUD or enable access to these files on other devices such as your PC."; -"_read_passphrase_description_" = "Here you can display the passphrase again and also copy it. You need the passphrase if you want to decrypt the data on another device with access to MagentaCLOUD, for example your PC or another smartphone or tablet."; -"_remove_passphrase_desc_1_" = "You can remove the passphrase on this device. This will not affect the encrypted content, but this device will no longer be able to decrypt your data."; -"_remove_passphrase_desc_2_" = "You can re-enter the passphrase here at any time to ensure access to your encrypted content from this device."; -"_e2e_error_incorrect_passphrase_" = "Wrong password?"; -"_e2e_error_passphrase_title" = "Error while decrypting."; "_scans_document_" = "Scan document"; "_scanned_images_" = "Scanned images"; "_scan_document_pdf_page_" = "Page"; From 6b37df4f05c3fc3f4b2ad6fe3e6c99a1a40fb764 Mon Sep 17 00:00:00 2001 From: Shweta Waikar Date: Thu, 11 May 2023 16:15:49 +0530 Subject: [PATCH 08/42] NMC 1990 Settings cluster Localization strings added --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index fa2bde991a..1badcfb97a 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -257,6 +257,13 @@ "_lock_not_active_" = "Lock: Off"; "_lock_protection_no_screen_" = "Do not ask at startup"; "_enable_touch_face_id_" = "Enable Touch/Face ID"; +"_security_" = "Security"; +"_data_protection_" = "Data protection"; +"_privacy_settings_" = "Privacy Settings"; +"_used_opensource_software_" = "OpenSource software used"; +"_service_" = "Service"; +"_imprint_" = "Imprint"; +"_magentacloud_version_" = "MagentaCLOUD Version"; "_url_" = "URL"; "_username_" = "Username"; "_change_credentials_" = "Change your credentials"; From 294e459e7054800252dc222132361c77251903f2 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Wed, 24 May 2023 18:13:44 +0530 Subject: [PATCH 09/42] nmc 2023 - E2e and onboarding Internet not available strings update --- .../en.lproj/Localizable.strings | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 1badcfb97a..e7883b5c7c 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -577,6 +577,30 @@ "_e2e_goto_settings_for_enable_" = "This is an encrypted directory, go to \"Settings\" and enable end-to-end encryption"; "_e2e_error_" = "An internal end-to-end encryption error occurred"; "_e2e_in_upload_" = "Upload in progress, please wait for all files to be transferred"; +"_e2e_delete_folder_not_permitted_" = "Deletion of the directory marked as \"encrypted\" is not allowed"; +"_e2e_error_encode_metadata_" = "Serious internal error in encoding metadata"; +"_e2e_error_decode_metadata_" = "Serious internal error in decoding metadata"; +"_e2e_error_create_encrypted_" = "Could not create encrypted file"; +"_e2e_error_update_metadata_" = "Update metadata error"; +"_e2e_error_store_metadata_" = "Could not save metadata"; +"_e2e_error_send_metadata_" = "Could not send metadata"; +"_e2e_error_delete_metadata_" = "Could not delete metadata"; +"_e2e_error_get_metadata_" = "Could not fetch metadata"; +"_e2e_error_not_enabled_" = "Serious internal error. End-to-end encryption not enabled"; +"_e2e_error_record_not_found_" = "Serious internal error. Records not found"; +"_e2e_error_unlock_" = "Could not unlock folder"; +"_e2e_error_lock_" = "Could not lock folder"; +"_e2e_error_delete_mark_folder_" = "Decrypt marked folder"; +"_e2e_error_mark_folder_" = "Encrypt folder"; +"_e2e_error_directory_not_empty_" = "The directory is not empty"; +"_e2e_error_not_move_" = "It is not possible move files to encrypted directory"; +"_e2e_error_not_versionwriteable_" = "The E2EE version of the server is not compatible with this client"; +"_start_e2e_encryption_1_" = "To set up end-to-end encryption, they must first set up the PIN lock to prevent unauthorised people from accessing your key."; +"_start_e2e_encryption_2_" = "After starting the encryption, a randomly generated word sequence (passphrase) of 12 words is displayed. This remains in this app and can be displayed again. Nevertheless, we recommend that you write down the passphrase."; +"_start_e2e_encryption_3_" = "The passphrase is your personal password with which you can access encrypted data in your MagentaCLOUD or enable access to these files on other devices such as your PC."; +"_read_passphrase_description_" = "Here you can display the passphrase again and also copy it. You need the passphrase if you want to decrypt the data on another device with access to MagentaCLOUD, for example your PC or another smartphone or tablet."; +"_remove_passphrase_desc_1_" = "You can remove the passphrase on this device. This will not affect the encrypted content, but this device will no longer be able to decrypt your data."; +"_remove_passphrase_desc_2_" = "You can re-enter the passphrase here at any time to ensure access to your encrypted content from this device."; "_scans_document_" = "Scan document"; "_scanned_images_" = "Scanned images"; "_scan_document_pdf_page_" = "Page"; From 4b6b5232662168add8abfd122441c77d6e31e180 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Tue, 6 Jun 2023 22:57:35 +0530 Subject: [PATCH 10/42] nmc 2023 - sharing feature localisation strings update --- .../Supporting Files/en.lproj/Localizable.strings | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index e7883b5c7c..54a1823c6f 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -86,8 +86,7 @@ "_purchase_" = "Purchase"; "_account_not_exists_" = "The account %@ of %@ does not exist"; "_account_not_available_" = "The account %@ of %@ does not exist, please add it to be able to read the file %@"; -"_the_account_" = "The account"; -"_does_not_exist_" = "does not exist"; +"_account_not_exists_" = "The account %@ of %@ does not exist"; "_error_parameter_schema_" = "Wrong parameters, impossible to continue"; "_comments_" = "Comments"; "_sharing_" = "Sharing"; @@ -464,6 +463,7 @@ //"_share_editing_" = "Can edit"; "_share_reshare_allowed_" = "Resharing is allowed."; "_share_reshare_not_allowed_" = "Resharing is not allowed."; +"_shareLinksearch_placeholder_" = "Contact name or email address"; "_sharing_message_" = "You can create links or send shares by mail. If you invite MagentaCLOUD users, you have more opportunities for collaboration."; "_create_link_" = "Create Link"; "personal_share_by_mail" = "Personal share by mail"; @@ -495,6 +495,7 @@ "_share_note_recipient_" = "YOUR MESSAGE"; "_shareLinksearch_placeholder_" = "Contact name or email address"; "_shareLinksearch_placeholder_" = "Type a name and press Search"; +//"_shareLinksearch_placeholder_" = "Type a name and press Enter"; "_shareLinksearch_mail_placeholder_" = "Type a name or an email and press Enter"; "_new_comment_" = "New comment …"; "_edit_comment_" = "Edit comment"; @@ -521,6 +522,11 @@ "_share_can_delete_" = "Delete"; "_share_can_download_" = "Allow download and sync"; "_share_unshare_" = "Delete share"; +//"_share_can_reshare_" = "Allow resharing"; +//"_share_can_create_" = "Allow creating"; +//"_share_can_change_" = "Allow editing"; +//"_share_can_delete_" = "Allow deleting"; +//"_share_unshare_" = "Unshare"; "_share_internal_link_" = "Internal link"; "_share_internal_link_des_" = "Only works for users with access to this file/folder."; "_share_reshare_disabled_" = "You are not allowed to reshare this file/folder."; From c1f0efe8df0a5878b6ccc504aff16ef3c2c73bc3 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Wed, 7 Jun 2023 15:20:10 +0530 Subject: [PATCH 11/42] nmc 2023 - localisation update for share text field --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 1 - 1 file changed, 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 54a1823c6f..c10e9eecd9 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -463,7 +463,6 @@ //"_share_editing_" = "Can edit"; "_share_reshare_allowed_" = "Resharing is allowed."; "_share_reshare_not_allowed_" = "Resharing is not allowed."; -"_shareLinksearch_placeholder_" = "Contact name or email address"; "_sharing_message_" = "You can create links or send shares by mail. If you invite MagentaCLOUD users, you have more opportunities for collaboration."; "_create_link_" = "Create Link"; "personal_share_by_mail" = "Personal share by mail"; From 35b93c002ebe3310a51f96dc1e185a5643dc1120 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Fri, 9 Jun 2023 15:27:05 +0530 Subject: [PATCH 12/42] nmc 2023 - more tab localisation changes --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index c10e9eecd9..5a054c5545 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -247,7 +247,9 @@ "_notifications_" = "Notifications"; "_quota_space_unlimited_" = "Unlimited"; "_quota_space_unknown_" = "Unknown"; -"_quota_using_" = "You are using %@ of %@"; +"_quota_using_" = "%@ "; +"_quota_using_of_" = "of %@"; +"_quota_using_percentage_" = "Memory to %@ occupied"; "_acknowledgements_" = "Acknowledgements"; "_settings_" = "Settings"; "_enter_password_" = "Enter password …"; From 9f90b868008bb3722082a789649b60adf7c1c7c1 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Mon, 12 Jun 2023 12:49:53 +0530 Subject: [PATCH 13/42] nmc 2023 - image video upload localisation related changes --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 5a054c5545..8f4583ec7c 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -69,7 +69,7 @@ "_experimental_" = "Experimental"; "_select_dir_media_tab_" = "Select as folder \"Media\""; "_error_creation_file_" = "Oops! Could not create the file"; -"_save_path_" = "Save path"; +"_save_path_" = "Storage path"; "_save_settings_" = "Save settings"; "_mode_filename_" = "Filename mode"; "_warning_owncloud_" = "You are connected to an ownCloud server. This is untested and unsupported, use at your own risk. To upgrade to Nextcloud, see https://nextcloud.com/migration."; From ff443a54ef3b0b4eb806e4021fe7f49913e2aa0d Mon Sep 17 00:00:00 2001 From: Shweta Waikar Date: Fri, 23 Jun 2023 19:08:01 +0530 Subject: [PATCH 14/42] NMC 2023 "Details" string changed --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 8f4583ec7c..0ec31c68e5 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -90,7 +90,7 @@ "_error_parameter_schema_" = "Wrong parameters, impossible to continue"; "_comments_" = "Comments"; "_sharing_" = "Sharing"; -"_details_" = "Details"; +"_details_" = "Share"; "_sub_details_" = "Subscription Details"; "_subscriptions_" = "Subscriptions"; "_dark_mode_" = "Dark mode"; From e9d81d050a84e5968c597828701c9761ab6e17ae Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Sat, 24 Jun 2023 18:08:38 +0530 Subject: [PATCH 15/42] NMC 2023 - share strings update --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 0ec31c68e5..4ff8ad744d 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -502,12 +502,10 @@ "_edit_comment_" = "Edit comment"; "_delete_comment_" = "Delete comment"; "_share_allow_editing_" = "Allow editing"; -"_share_read_only_" = "View only"; "_share_editing_" = "Editing"; "_share_allow_upload_" = "Allow upload and editing"; -"_share_file_drop_" = "File drop (upload only)"; "_share_secure_file_drop_" = "Secure file drop (upload only)"; -"_share_hide_download_" = "Hide download"; +//"_share_hide_download_" = "Hide download"; "_share_allowed_downloads_" = "Allowed downloads"; "_share_limit_download_" = "Limit downloads"; "_remaining_" = "%d remaining"; From 4bbc820ae733530324b22cc8b2f198db62e3e7b1 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Tue, 11 Jul 2023 17:28:52 +0530 Subject: [PATCH 16/42] NMC 2023 - (nmc 2397) Strings update --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 2 ++ 1 file changed, 2 insertions(+) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 4ff8ad744d..d6295c4727 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -606,6 +606,8 @@ "_read_passphrase_description_" = "Here you can display the passphrase again and also copy it. You need the passphrase if you want to decrypt the data on another device with access to MagentaCLOUD, for example your PC or another smartphone or tablet."; "_remove_passphrase_desc_1_" = "You can remove the passphrase on this device. This will not affect the encrypted content, but this device will no longer be able to decrypt your data."; "_remove_passphrase_desc_2_" = "You can re-enter the passphrase here at any time to ensure access to your encrypted content from this device."; +"_e2e_error_incorrect_passphrase_" = "Wrong password?"; +"_e2e_error_passphrase_title" = "Error while decrypting."; "_scans_document_" = "Scan document"; "_scanned_images_" = "Scanned images"; "_scan_document_pdf_page_" = "Page"; From b642253076fea3ccbeb51a600a5da081addfb295 Mon Sep 17 00:00:00 2001 From: TSI-amrutwaghmare <96108296+TSI-amrutwaghmare@users.noreply.github.com> Date: Tue, 26 Dec 2023 13:57:32 +0530 Subject: [PATCH 17/42] NMC 2023 - Localisation changes for auto upload description --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 1 - 1 file changed, 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index d6295c4727..b583a98ae3 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -502,7 +502,6 @@ "_edit_comment_" = "Edit comment"; "_delete_comment_" = "Delete comment"; "_share_allow_editing_" = "Allow editing"; -"_share_editing_" = "Editing"; "_share_allow_upload_" = "Allow upload and editing"; "_share_secure_file_drop_" = "Secure file drop (upload only)"; //"_share_hide_download_" = "Hide download"; From 981ef9f036fdb2aa8aa1b762adbbcb3bf45d96a1 Mon Sep 17 00:00:00 2001 From: TSI-amrutwaghmare <96108296+TSI-amrutwaghmare@users.noreply.github.com> Date: Tue, 27 Feb 2024 10:48:28 +0530 Subject: [PATCH 18/42] NMC 2023 - update missing localised strings for german languages --- .../Supporting Files/en.lproj/Localizable.strings | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index b583a98ae3..18a1ddb369 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -86,7 +86,8 @@ "_purchase_" = "Purchase"; "_account_not_exists_" = "The account %@ of %@ does not exist"; "_account_not_available_" = "The account %@ of %@ does not exist, please add it to be able to read the file %@"; -"_account_not_exists_" = "The account %@ of %@ does not exist"; +"_the_account_" = "The account"; +"_does_not_exist_" = "does not exist"; "_error_parameter_schema_" = "Wrong parameters, impossible to continue"; "_comments_" = "Comments"; "_sharing_" = "Sharing"; @@ -145,7 +146,6 @@ /* MARK: Files lock */ -"_lock_" = "Lock"; "_unlock_" = "Unlock"; "_lock_file_" = "Lock file"; "_unlock_file_" = "Unlock file"; @@ -169,7 +169,7 @@ "_source_code_" = "Get source code"; "_account_select_" = "Select the account"; "_account_select_to_add_" = "Select the account to add"; -"_host_insert_" = "Insert the hostname, for example:"; +"_host_insert_" = "Insert the host name, for example:"; "_certificate_not_found_" = "File %@ in documents directory not found."; "_copy_failed_" = "Copy failed"; "_certificate_installed_" = "Certificate installed"; @@ -432,7 +432,6 @@ "_media_viewimage_show_" = "Show only images"; "_media_viewvideo_show_" = "Show only video"; "_media_show_all_" = "Show both"; -"_media_view_options_" = "View options"; "_media_by_created_date_" = "Sort by created date"; "_media_by_upload_date_" = "Sort by upload date"; "_media_by_modified_date_" = "Sort by modified date"; @@ -520,11 +519,6 @@ "_share_can_delete_" = "Delete"; "_share_can_download_" = "Allow download and sync"; "_share_unshare_" = "Delete share"; -//"_share_can_reshare_" = "Allow resharing"; -//"_share_can_create_" = "Allow creating"; -//"_share_can_change_" = "Allow editing"; -//"_share_can_delete_" = "Allow deleting"; -//"_share_unshare_" = "Unshare"; "_share_internal_link_" = "Internal link"; "_share_internal_link_des_" = "Only works for users with access to this file/folder."; "_share_reshare_disabled_" = "You are not allowed to reshare this file/folder."; From 64b75b77def251fb47a4b4724f870e4ac64d7912 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Mon, 26 Aug 2024 16:43:24 +0530 Subject: [PATCH 19/42] NMC 2023 german translation update --- .../xcshareddata/xcschemes/File Provider Extension UI.xcscheme | 1 + .../xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme | 1 + 2 files changed, 2 insertions(+) diff --git a/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme b/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme index 6e1cc593fa..fd16f58a63 100644 --- a/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme +++ b/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme @@ -73,6 +73,7 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES" + askForAppToLaunch = "Yes" launchAutomaticallySubstyle = "2"> diff --git a/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme b/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme index d912dd669b..485c4c3f00 100644 --- a/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme +++ b/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme @@ -73,6 +73,7 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES" + askForAppToLaunch = "Yes" launchAutomaticallySubstyle = "2"> From 096fc6f9f8269f4ad63e71e0a7945ba375bc20c9 Mon Sep 17 00:00:00 2001 From: harshada-15-tsys Date: Mon, 7 Apr 2025 15:08:51 +0530 Subject: [PATCH 20/42] NMC 2023 - update missing localised strings for english and german languages --- .../Supporting Files/en.lproj/Localizable.strings | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 18a1ddb369..5b1a459d5a 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -284,7 +284,8 @@ "_want_leave_share_" = "You will leave the following shares: "; "_delete_account_" = "Remove account"; "_delete_active_account_" = "Remove active account"; -//"_want_delete_" = "Do you really want to delete?"; +"_want_delete_" = "Do you really want to delete?"; +"_want_leave_share_" = "You will leave the following shares: "; "_no_delete_" = "No, do not delete"; "_yes_delete_" = "Yes, delete"; "_information_" = "Information"; @@ -320,6 +321,8 @@ "_autoupload_subfolder_granularity_" = "Subfolder Granularity"; "_filenamemask_" = "Change filename mask"; "_filenamemask_footer_" = "By default, when a file is uploaded, it automatically gets the following format: yy-mm-dd hh-mm-ss plus a 4-digit counter. If you do not like this format, you can change it here except for the final 4-digit counter, which cannot be omitted."; +"_autoupload_filenamemask_" = "Change filename mask"; +"_autoupload_filenamemask_footer_" = "Change the automatic filename mask"; "_autoupload_current_folder_" = "Currently selected folder"; "_show_hidden_files_" = "Show hidden files"; "_format_compatibility_" = "Most Compatible"; @@ -336,6 +339,7 @@ "_diagnostics_footer_" = "Changing log level requires a restart of the app to take effect"; "_view_log_" = "View log file"; "_clear_log_" = "Clear log file"; +"_level_log_" = "Set Log level (disabled, standard, maximum)"; "_set_log_level_" = "Set Log level"; "_log_file_clear_alert_" = "Log file cleared \n successfully!"; "_connect_server_anyway_" = "Do you want to connect to the server anyway?"; @@ -363,6 +367,7 @@ "_access_background_app_refresh_denied_" = "\"Background App Refresh\" is denied. Please enable it in \"Settings\" otherwise, new photos or videos will not be detected when the application is in the background"; "_new_photos_starting_" = "Only photos or videos starting %@ will be uploaded."; "_tutorial_photo_view_" = "No photos or videos uploaded yet"; +"_create_full_upload_" = "Creating archive … May take a long time. During this process, keep the application active during the transfer as well."; "_error_createsubfolders_upload_" = "Error creating subfolders"; "_remove_photo_CameraRoll_" = "Remove from camera roll"; "_remove_photo_CameraRoll_desc_" = "\"Remove from camera roll\" after uploads, a confirmation message will be displayed to delete the uploaded photos or videos from the camera roll. The deleted photos or videos will still be available in the iOS Photos Trash for 30 days."; @@ -407,6 +412,7 @@ "_files_no_files_" = "No files in here"; "_files_no_folders_" = "No folders in here"; "_request_in_progress_" = "Request to server in progress …"; +"_personal_files_only_" = "Personal files only"; "audio" = "AUDIO"; "directory" = "FOLDERS"; @@ -618,6 +624,9 @@ "_empty_trash_" = "Empty trash"; "_trash_no_trash_" = "No files deleted"; "_trash_no_trash_description_" = "You can restore deleted files from here"; +"_trash_restore_selected_" = "Restore selected files"; +"_trash_delete_selected_" = "Delete selected files"; +"_recover_" = "Recover"; "_confirm_delete_selected_" = "Are you sure you want to delete the selected items?"; "_manage_file_offline_" = "Manage offline files"; "_set_available_offline_" = "Set as available offline"; @@ -694,6 +703,8 @@ "_show_more_results_" = "Show more results"; "_waiting_for_" = "Waiting for:"; "_reachable_wifi_" = "network reachable via Wi-Fi or cable"; +"_ITMS-90076_" = "Due to a change in the Nextcloud application identifier, the settings and password for accessing your cloud are reset, so please re-enter your account data and check your Settings. We are sorry about that."; +"_password_not_present_" = "Please re-insert your credentials."; "_copy_passphrase_" = "Copy passphrase"; "_ok_copy_passphrase_" = "OK and copy passphrase"; "_select_color_" = "Select the color"; From dfb297a56b7522af6e720eff8388add6796da95a Mon Sep 17 00:00:00 2001 From: harshada-15-tsys Date: Wed, 16 Apr 2025 17:39:10 +0530 Subject: [PATCH 21/42] NMC 2023 - Updated missing localised strings for English and DE language --- .../en.lproj/Localizable.strings | 489 +++++++++++++++++- 1 file changed, 466 insertions(+), 23 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 5b1a459d5a..6bc5fb2ca9 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -20,6 +20,7 @@ // along with this program. If not, see . // +"_itunes_" = "iTunes"; "_cancel_" = "Cancel"; "_edit_" = "Edit"; "_tap_to_cancel_" = "Tap to cancel"; @@ -27,43 +28,73 @@ "_cancel_request_" = "Do you want to cancel?"; "_upload_file_" = "Upload file"; "_download_file_" = "Download file"; +"_loading_" = "Loading"; +"_loading_with_points_" = "Loading …"; +"_loading_num_" = "Loading file %i"; +"_loading_autoupload_" = "Auto uploading"; +"_uploading_" = "Uploading"; +"_synchronization_" = "Synchronization"; "_delete_" = "Delete"; +"_delete_file_n_" = "Delete file %i of %i"; "_rename_" = "Rename"; "_rename_file_" = "Rename file"; "_rename_folder_" = "Rename folder"; "_move_" = "Move"; +"_move_file_n_" = "Move file %i of %i"; +"_creating_sharing_" = "Creating share"; +"_updating_sharing_" = "Updating share"; +"_removing_sharing_" = "Removing share"; "_add_" = "Add"; +"_login_" = "Log in"; "_save_" = "Save"; "_warning_" = "Warning"; "_error_" = "Error"; "_no_" = "No"; "_yes_" = "Yes"; "_select_" = "Select"; +"_deselect_" = "Deselect"; "_select_all_" = "Select all"; "_upload_" = "Upload"; "_home_" = "Files"; "_files_" = "Files"; +"_home_dir_" = "Home"; +"_file_to_upload_" = "File to upload"; +"_destination_" = "Destination"; "_ok_" = "OK"; +"_beta_version_" = "Beta version"; +"_function_in_testing_" = "Function in testing, please send information about any problems you run into."; "_done_" = "Done"; "_clear_" = "Clear"; +"_passcode_too_short_" = "Passcode too short, at least 4 characters required"; "_selected_" = "Selected"; +"_scan_fingerprint_" = "Scan fingerprint to authenticate"; "_no_active_account_" = "No account found"; "_info_" = "Info"; "_warning_" = "Warning"; +"_email_" = "Email"; +"_save_exit_" = "Do you want to exit without saving?"; "_video_" = "Video"; "_overwrite_" = "Overwrite"; +"_transfers_in_queue_" = "Transfers in progress, please wait …"; +"_too_errors_upload_" = "Too many errors, please verify the problem"; "_create_" = "Create"; "_create_folder_" = "Create folder"; "_create_folder_e2ee_" = "Create encrypted folder"; +"_create_folder_on_" = "Create folder on"; "_close_" = "Close"; +"_postpone_" = "Postpone"; "_remove_" = "Remove"; "_file_not_found_" = "File not found"; "_continue_" = "Continue"; "_continue_editing_" = "Continue editing"; +"_continue_request_" = "Do you want to continue?"; "_auto_upload_folder_" = "Auto upload"; +"_gallery_" = "Gallery"; "_photo_" = "Photo"; "_audio_" = "Audio"; "_unknown_" = "Unknown"; +"_additional_view_options_" = "Additional view options"; +"_next_" = "Next"; "_success_" = "Success"; "_initialization_" = "Initialization"; "_experimental_" = "Experimental"; @@ -75,10 +106,12 @@ "_warning_owncloud_" = "You are connected to an ownCloud server. This is untested and unsupported, use at your own risk. To upgrade to Nextcloud, see https://nextcloud.com/migration."; "_warning_unsupported_" = "You are using an unsupported version of Nextcloud. For the safety of your data we strongly recommend updating to the latest stable Nextcloud."; "_restore_" = "Restore"; +"_camera_roll_" = "Camera roll"; "_tap_here_to_change_" = "Tap here to change"; "_no_albums_" = "No albums"; "_denied_album_" = "This app does not have access to \"Photos\". You can enable access in Privacy Settings."; -"_denied_camera_" = "This app does not have access to the \"Camera\". You can enable access in Privacy Settings."; +"_denied_camera_" = "This app does not have access to \"Camera\". You can enable access in Privacy Settings."; +"_start_" = "Start"; "_force_start_" = "Force the start"; "_account_not_available_" = "The account %@ of %@ does not exist, please add it to be able to read the file %@."; "_the_account_" = "The account"; @@ -108,6 +141,8 @@ "_back_" = "Back"; "_search_" = "Search"; "_of_" = "of"; +"_internal_modify_" = "Edit with internal editor"; +"_database_corrupt_" = "Oops something went wrong, please enter your credentials but don't worry, your files have remained secure"; "_livephoto_save_" = "Save Live Photo to Photo Album"; "_livephoto_save_error_" = "Error during save of Live Photo."; "_livephoto_no_" = "Disable Live Photo"; @@ -123,9 +158,14 @@ "_copy_" = "Copy"; "_now_" = "Now"; "_wait_" = "Please wait …"; +"_attention_" = "Attention"; "_recent_" = "Recent"; "_view_in_folder_" = "View in folder"; "_leave_share_" = "Leave this share"; +"_premium_" = "Premium"; +"_professional_" = "Professional"; +"_current_" = "Current"; +"_buy_" = "Buy"; "_disabled_" = "Disabled"; "_compact_" = "Compact"; "_normal_" = "Normal"; @@ -154,17 +194,39 @@ "_locked_by_" = "Locked by %@"; "_file_locked_no_override_" = "This file is locked. It cannot be overridden."; "_lock_no_permissions_selected_" = "Not allowed for some selected files or folders."; +/* Remove a file from a list, don't delete it entirely */ "_remove_file_" = "Remove file"; + +/* Delete file and put it into the trash */ "_delete_file_" = "Delete file"; "_delete_folder_" = "Delete folder"; +"_delete_photo_" = "Delete photo"; +"_delete_video_" = "Delete video"; +"_automatic_Download_Image_" = "Use images in full resolution"; +"_automatic_Download_Image_footer_" = "When viewing images always download, if not available locally, the images in full resolution"; "_size_" = "Size"; -"_set_user_status_" = "Online status"; +//"_set_user_status_" = "Online status"; "_set_user_status_message_" = "Status message"; +"_file_size_" = "Exported file size"; +"_dimension_" = "Dimension"; +"_duration_" = "Duration"; +"_model_" = "Model"; +"_set_user_status_" = "Set user status"; "_open_settings_" = "Open settings"; +"_rename_ext_title_" = "Change file type?"; +"_rename_ext_message_" = "This file may behave differently if you change it from .%@ to %@"; +"_use_" = "Use"; +"_keep_" = "Keep"; +"_account_request_" = "Request account"; "_settings_account_request_" = "Request account at startup"; +"_print_" = "Print"; "_alias_" = "Alias"; -"_alias_placeholder_" = "Write alias"; -"_alias_footer_" = "Give your accounts a descriptive name such as Home, Office, School…"; +//"_alias_placeholder_" = "Write alias"; +//"_alias_footer_" = "Give your accounts a descriptive name such as Home, Office, School…"; +"_alias_placeholder_" = "Write the alias"; +"_alias_footer_" = "Give your account names a descriptive name such as Home, Office, School …"; +"_chunk_size_mb_" = "Chunk size in MB"; +"_chunk_footer_title_" = "Chunked file upload (0 is disabled)\nImportant: the chunked upload works only when the app is \"active\"."; "_privacy_legal_" = "Privacy and Legal Policy"; "_source_code_" = "Get source code"; "_account_select_" = "Select the account"; @@ -176,6 +238,8 @@ "_remove_local_account_" = "Remove local account"; "_want_delete_account_" = "Do you want to remove local account?"; "_prevent_http_redirection_"= "The redirection in HTTP is not permitted."; +"_pdf_vertical_" = "PDF vertical display"; +"_pdf_horizontal_" = "PDF horizontal display"; "_single_file_conflict_title_" = "File conflict"; "_multi_file_conflict_title_" = "%@ File conflicts"; "_replace_action_title_" = "Replace"; @@ -193,6 +257,16 @@ "_change_lock_passcode_" = "Change passcode"; "_lock_cannot_disable_mdm_" = "Disabling the passcode lock is not permitted by your configuration profile."; +/* Background of the file listing view */ +"_use_as_background_" = "Use it as a background"; + +/* Background of the file listing view */ +"_background_" = "Background"; + +"_dark_mode_" = "Dark mode"; +"_default_color_" = "Use the default color"; +"_as_default_color_" = "Use as default color"; + // MARK: User Status /* User status */ @@ -239,12 +313,20 @@ "_hours_" = "Hours"; "_minutes_" = "Minutes"; - -"_network_not_available_" = "Network unavailable."; +"_network_available_" = "Network available"; +"_network_not_available_" = "Network unavailable"; +"_file_too_big_" = "File too large to be encrypted/decrypted"; +"_file_too_big_max_100_" = "File too large (max 100 kb.)"; +"_...loading..._" = "Loading …"; +"_download_plist_" = " "; +"_no_reuploadfile_" = "Could not find nor resend file. Delete the upload and reload the file to upload it."; "_file_already_exists_" = "Unable to complete the operation, a file with the same name exists."; +"_read_file_error_" = "Could not read the file"; +"_write_file_error_" = "Could not write the file"; "_files_lock_error_" = "There was an error changing the lock of this file."; "_more_" = "More"; "_notifications_" = "Notifications"; +"_logout_" = "Log out"; "_quota_space_unlimited_" = "Unlimited"; "_quota_space_unknown_" = "Unknown"; "_quota_using_" = "%@ "; @@ -252,11 +334,13 @@ "_quota_using_percentage_" = "Memory to %@ occupied"; "_acknowledgements_" = "Acknowledgements"; "_settings_" = "Settings"; +"_passcode_" = "Password"; "_enter_password_" = "Enter password …"; "_lock_" = "Lock"; "_lock_active_" = "Lock: On"; "_lock_not_active_" = "Lock: Off"; "_lock_protection_no_screen_" = "Do not ask at startup"; +"_lock_protection_no_screen_footer_" = "Use \"Do not ask at startup\" for the encryption option."; "_enable_touch_face_id_" = "Enable Touch/Face ID"; "_security_" = "Security"; "_data_protection_" = "Data protection"; @@ -269,16 +353,32 @@ "_username_" = "Username"; "_change_credentials_" = "Change your credentials"; "_wifi_only_" = "Only use Wi-Fi connection"; -"_settings_autoupload_" = "Auto upload photos"; +//"_settings_autoupload_" = "Auto upload photos"; +"_settings_autoupload_" = "Auto upload"; +"_app_version_" = "Application version"; +"_app_in_use_" = "Application in use"; +"_contact_by_email_" = "Contact us by email"; "_clear_cache_" = "Clear cache"; "_clear_cache_footer_" = "Clear downloaded and offline files from the app"; "_exit_footer_" = "Remove all accounts and local data from the app."; +"_exit_footer_" = "Remove all accounts and local data from the app."; "_exit_" = "Logout"; "_funct_not_enabled_" = "Functionality not enabled"; "_passcode_activate_" = "Password lock on"; "_disabling_passcode_" = "Removing password lock"; "_want_exit_" = "Attention! Will be reset to initial state. Continue?"; -"_want_delete_cache_" = "Do you want to delete the cache (this also removes the transfers in progress)?"; +"_proceed_" = "Proceed"; +"_delete_cache_" = "Delete cache"; +"_want_delete_cache_" = "Do you want to delete the cache (this also removes the transfers in progress)?";"_want_delete_thumbnails_" = "Do you want to delete all thumbnails too?"; +"_mail_deleted_" = "Email deleted"; +"_mail_saved_" = "Email saved"; +"_mail_sent_" = "Email sent"; +"_mail_failure_" = "Could not send email: %@"; +"_information_req_" = "Information request"; +"_write_in_english_" = "Kindly write to us in English"; +"_credentials_" = "Credentials"; +"_manage_account_" = "Manage account"; +"_change_password_" = "Change password"; "_add_account_" = "Add account"; "_want_delete_" = "You will delete the following: "; "_want_leave_share_" = "You will leave the following shares: "; @@ -288,16 +388,51 @@ "_want_leave_share_" = "You will leave the following shares: "; "_no_delete_" = "No, do not delete"; "_yes_delete_" = "Yes, delete"; +"_remove_cache_" = "Deleting cache, please wait …"; +"_optimizations_" = "Optimizations"; +"_synchronizations_" = "Synchronized folders"; +"_version_server_" = "Server version"; +"_help_" = "Help"; +"_change_simply_passcode_" = "Change password type"; +"_quota_" = "Quota"; +"_available_" = "Available"; +"_not_available_" = "Not available"; +"_accounts_" = "Accounts"; "_information_" = "Information"; +"_personal_information_" = "Personal info"; +"_user_full_name_" = "Full name"; +"_user_address_" = "Address"; +"_user_phone_" = "Phone number"; +"_user_email_" = "Email"; +"_user_web_" = "Website"; +"_user_twitter_" = "Twitter"; +"_user_job_" = "Job"; +"_user_businesssize_" = "Business size"; +"_user_businesstype_" = "Business type"; +"_user_city_" = "City"; +"_user_country_" = "Country"; +"_user_company_" = "Company"; +"_user_role_" = "Role"; +"_user_zip_" = "Zip"; +"_user_owner_" = "Owner"; +"_user_employee_" = "Employee"; +"_user_contractor_" = "Contractor"; +"_user_editprofile_" = "Edit profile"; "_select_offline_warning_" = "Making multiple files and folders available offline may take a while and use a lot of memory while doing so."; "_advanced_" = "Advanced"; "_permissions_" = "Permissions"; "_custom_permissions_" = "Custom permissions"; "_disable_files_app_" = "Disable Files App integration"; "_disable_files_app_footer_" = "Do not permit the access of files via the iOS Files application."; +"_trial_" = "Trial"; +"_trial_expired_day_" = "Days remaining"; "_time_remaining_" = "%@ remaining"; +"_disableLocalCacheAfterUpload_footer_" = "After uploading the file, do not keep it in the local cache"; +"_disableLocalCacheAfterUpload_" = "Disable local cache"; "_autoupload_" = "Auto upload photos/videos"; "_autoupload_select_folder_" = "Select the \"Auto upload\" folder"; +"_autoupload_error_select_folder_" = "Select a valid folder for the \"Auto upload\""; +"_autoupload_background_" = "Auto upload in the background"; "_autoupload_photos_" = "Auto upload photos"; "_autoupload_videos_" = "Auto upload videos"; "_autoupload_favorites_" = "Auto upload favorites only"; @@ -324,16 +459,25 @@ "_autoupload_filenamemask_" = "Change filename mask"; "_autoupload_filenamemask_footer_" = "Change the automatic filename mask"; "_autoupload_current_folder_" = "Currently selected folder"; +"_help_tutorial_" = "Tutorial"; +"_help_intro_" = "Introduction to Nextcloud"; +"_help_activity_verbose_" = "Detailed Activity feed"; +"_help_activity_mail_" = "Send activity via email"; +"_help_activity_clear_" = "Clear activity"; "_show_hidden_files_" = "Show hidden files"; "_format_compatibility_" = "Most Compatible"; "_format_compatibility_footer_" = "\"Most compatible\" will save photos as JPEG, if possible."; +"_terms_" = "Terms of Service"; "_privacy_" = "Privacy"; +"_privacy_policy_" = "Privacy Policy"; "_privacy_footer_" = "This app uses a service for the analysis of a crash. Your personal information is not sent with the report. If you want disable it, please change the setting \"Disable crash reporter\" to ON."; "_crashservice_title_" = "Disable crash reporter"; "_crashservice_alert_" = "This option requires a restart of the app to take effect."; "_upload_mov_livephoto_" = "Live Photo"; "_upload_mov_livephoto_footer_" = "\"Live Photo\" will save the selected photo in \"Live Photo\" format, if possible."; +"_view_capabilities_" = "View the capabilities"; "_capabilities_" = "Capabilities"; +"_no_capabilities_found_" = "Capabilities not found"; "_capabilities_footer_" = "Display the packages used by the app if they are installed and available on the server."; "_diagnostics_" = "Diagnostics"; "_diagnostics_footer_" = "Changing log level requires a restart of the app to take effect"; @@ -345,8 +489,16 @@ "_connect_server_anyway_" = "Do you want to connect to the server anyway?"; "_server_is_trusted_" = "Do you consider this server trusted?"; "_connection_error_" = "Connection error"; +"_serverstatus_error_" = "Connection to server failure, verify your server address or network status"; +"_add_your_nextcloud_" = "Add your account"; "_login_url_" = "Server address https:// …"; +"_login_bottom_label_" = "Don't have a server yet?\nChoose one of the providers."; +"_error_multidomain_" = "Address not allowed, only the following domains are valid:"; +"_account_already_exists_" = "The account %@ already exists"; +"_traditional_login_" = "Revert to old login method"; +"_web_login_" = "Revert to web login method"; "_login_url_error_" = "URL error, please verify your server URL"; +"_webflow_not_available_" = "Web login not available, use the old login method"; "_favorites_" = "Favorites"; "_favorite_short_" = "Favorite"; "_favorite_" = "Favorite"; @@ -355,20 +507,31 @@ "_tutorial_favorite_view_" = "Files and folders you mark as favorites will show up here"; "_tutorial_offline_view_" = "Files copied here will be available offline.\n\nThey will be synchronized with your cloud."; "_tutorial_groupfolders_view_" = "No Group folders yet"; +"_tutorial_local_view_" = "You'll find the unpacked files from your cloud.\n\nConnect to iTunes to share these files."; "_more_" = "More"; "_favorite_no_files_" = "No favorites yet"; +"_pull_down_" = "Pull down to refresh"; +"_no_photo_load_" = "No photo or video"; +"_tutorial_autoupload_view_" = "You can enable auto uploads from \"Settings\""; "_no_date_information_" = "No date information"; "_no_camera_information_" = "No camera information"; "_no_lens_information_" = "No lens information"; "_today_" = "Today"; "_yesterday_" = "Yesterday"; +"_time_" = "Time: %@\n\n%@"; +"_location_not_enabled_" = "Location Services not enabled"; +"_location_not_enabled_msg_" = "Please go to \"Settings\" and turn on \"Location Services\""; "_access_photo_not_enabled_" = "Access to Photos is not enabled"; -"_access_photo_not_enabled_msg_" = "Please go to Settings → Apps → Nextcloud → Photos and enable Photo Library Access"; +"_access_photo_not_enabled_msg_" = "Please go to \"Settings\" and turn on \"Photo Access\""; +//"_access_photo_not_enabled_msg_" = "Please go to Settings → Apps → Nextcloud → Photos and enable Photo Library Access"; "_access_background_app_refresh_denied_" = "\"Background App Refresh\" is denied. Please enable it in \"Settings\" otherwise, new photos or videos will not be detected when the application is in the background"; +"_access_photo_location_not_enabled_" = "Access to Photos and Location not enabled"; +"_access_photo_location_not_enabled_msg_" = "Please go to \"Settings\" and turn on \"Photo Access\" and \"Location Services\""; "_new_photos_starting_" = "Only photos or videos starting %@ will be uploaded."; "_tutorial_photo_view_" = "No photos or videos uploaded yet"; "_create_full_upload_" = "Creating archive … May take a long time. During this process, keep the application active during the transfer as well."; "_error_createsubfolders_upload_" = "Error creating subfolders"; +"_activate_autoupload_" = "Enable auto upload"; "_remove_photo_CameraRoll_" = "Remove from camera roll"; "_remove_photo_CameraRoll_desc_" = "\"Remove from camera roll\" after uploads, a confirmation message will be displayed to delete the uploaded photos or videos from the camera roll. The deleted photos or videos will still be available in the iOS Photos Trash for 30 days."; "_never_" = "never"; @@ -379,25 +542,88 @@ "_hours_ago_" = "%d hours ago"; "_a_day_ago_" = "a day ago"; "_days_ago_" = "%d days ago"; +"_over_30_days_" = "over 30 days"; +"_connection_internet_offline_" = "The internet connection appears to be offline or Wi-Fi is required"; +"_insert_password_" = "Enter password"; +"_update_in_progress_" = "Version upgrade, please wait …"; "_forbidden_characters_" = "Forbidden characters: %@"; -"_cannot_send_mail_error_" = "No account is set up, or wrong email address entered."; +"_cannot_send_mail_error_" = "No account set up, or wrong email address entered."; "_open_url_error_" = "Cannot open the URL for this action."; +"_photo_camera_" = "Photos"; "_media_" = "Media"; +"_unzip_in_progress_" = "Extraction in progress on local storage …"; +"_file_unpacked_" = "File unpacked on local storage"; +"_file_saved_local_" = "File saved on local storage."; +"_file_not_present_" = "Error: File not present, please reload."; "_order_by_" = "Sort by"; "_name_" = "Name"; "_date_" = "Date"; "_size_" = "Size"; +"_order_by_name_a_z_" = "Sort by name (from A to Z)"; +"_sorted_by_name_a_z_" = "Sorted by name (from A to Z)"; +"_order_by_name_z_a_" = "Sort by name (from Z to A)"; +"_sorted_by_name_z_a_" = "Sorted by name (from Z to A)"; +"_order_by_date_more_recent_" = "Sort by newest"; +"_sorted_by_date_more_recent_" = "Sorted by newest"; +"_order_by_date_less_recent_" = "Sort by oldest"; +"_sorted_by_date_less_recent_" = "Sorted by oldest"; +"_order_by_size_smallest_" = "Sort by smallest"; +"_sorted_by_size_smallest_" = "Sorted by smallest"; +"_order_by_size_largest_" = "Sort by largest"; +"_sorted_by_size_largest_" = "Sorted by largest"; "_delete_selected_files_" = "Delete files"; +"_move_selected_files_" = "Move files"; +"_move_or_copy_selected_files_" = "Move or copy files"; +"_download_selected_files_" = "Download files"; +"_download_selected_files_folders_" = "Download files and folders"; +"_error_operation_canc_" = "Error: Operation canceled."; +"_only_lock_passcode_" = "Available only with Lock password activated. Activate it in the \"Settings\"."; +"_go_to_app_settings_" = "Go to app settings"; +"_passcode_protection_" = "Password protection"; "_remove_favorites_" = "Remove from favorites"; +"_remove_offline_" = "Remove from offline"; "_add_favorites_" = "Add to favorites"; +"_add_offline_" = "Add to offline"; +"_remove_passcode_" = "Remove password protection"; +"_protect_passcode_" = "Protect with password"; "_share_" = "Share"; +"_reload_" = "Reload"; +"_open_in_" = "Open in …"; +"_open_" = "Open …"; "_remove_local_file_" = "Remove locally"; +"_add_local_" = "Add to local storage"; +"_comm_erro_pull_down_" = "Attention: Communication error with the server. Pull down to refresh."; +"_file_not_downloaded_" = "file not downloaded"; +"_file_not_uploaded_" = "file not uploaded"; "_folders_" = "folders"; "_folder_" = "folder"; "_files_" = "files"; "_file_" = "file"; +"_folder_blocked_" = "Folder blocked"; +"_downloading_progress_" = "Initiating download of files …"; "_no_file_pull_down_" = "Upload a file or pull down to refresh"; "_no_file_no_permission_to_create_" = "You don't have permission to create or upload files in this folder."; +"_browse_images_" = "Browse images"; +"_synchronized_folder_" = "Keep the folder synchronized"; +"_remove_synchronized_folder_" = "Turn off the synchronization"; +"_synchronized_confirm_" = "After enabling the synchronization, all files in the folder will be synchronized with the server, continue?"; +"_offline_folder_confirm_" = "After enabling the offline folder, all files in it will be synchronized with the server, continue?"; +"_file_not_found_reload_" = "File not found, pull down to refresh"; +"_title_section_download_" = "DOWNLOAD"; +"_download_" = "Download"; +"_title_section_upload_" = "UPLOAD"; +"_group_alphabetic_yes_" = "✓ Group alphabetically"; +"_group_alphabetic_no_" = "Group alphabetically"; +"_group_typefile_yes_" = "✓ Group by file type"; +"_group_typefile_no_" = "Group by file type"; +"_group_date_yes_" = "✓ Group by date"; +"_group_date_no_" = "Group by date"; +"_element_" = "element"; +"_elements_" = "elements"; +"_tite_footer_upload_wwan_" = " Wi-Fi network required, %lu %@ to upload"; +"_tite_footer_upload_" = "%lu %@ to upload"; +"_tite_footer_download_wwan_" = " Wi-Fi network required, %lu %@ to download"; +"_tite_footer_download_" = "%lu %@ to download"; "_limited_dimension_" = "Maximum size reached"; "_save_selected_files_" = "Save to photo gallery"; "_file_not_saved_cameraroll_" = "Error: File not saved in photo album"; @@ -406,6 +632,12 @@ "_directory_on_top_" = "Sort folders before files"; "_show_description_" = "Show folder description"; "_show_recommended_files_" = "Show recommendations"; +"_directory_on_top_yes_" = "✓ Folders on top"; +"_directory_on_top_no_" = "Folders on top"; +"_show_description_" = "Show description"; +//"_show_recommended_files_" = "Show recommended files"; +"_no_description_available_" = "No description available for this folder"; +"_folder_automatic_upload_" = "Folder for \"Auto upload\""; "_search_no_record_found_" = "No result"; "_search_in_progress_" = "Search in progress …"; "_search_instruction_" = "Search for file (minimum 2 characters)"; @@ -413,17 +645,27 @@ "_files_no_folders_" = "No folders in here"; "_request_in_progress_" = "Request to server in progress …"; "_personal_files_only_" = "Personal files only"; - "audio" = "AUDIO"; "directory" = "FOLDERS"; +"compress" = "COMPRESS"; +"directory" = "FOLDERS"; "document" = "DOCUMENTS"; "image" = "IMAGES"; "template" = "TEMPLATES"; +"unknow" = "UNKNOWN"; "video" = "VIDEO"; +"_file_del_only_local_" = "File not present on server"; +"_copy_file_" = "Copy"; "_paste_file_" = "Paste"; +"_open_quicklook_" = "Open with Quick Look"; +"_search_this_folder_" = "Search in this folder"; +"_search_all_folders_" = "Search in all folders"; +"_search_sub_folder_" = "Search here and in subfolders"; +"_theming_is_light_" = "Server theming too brightly coloured, not applicable"; "_cancel_all_task_" = "Cancel all transfers"; "_status_wait_download_" = "Waiting for download"; +"_status_in_download_" = "In download"; "_status_downloading_" = "Downloading"; "_status_wait_upload_" = "Waiting to upload"; "_status_wait_create_folder_" = "Waiting to create the folder"; @@ -432,6 +674,7 @@ "_status_wait_favorite_" = "Waiting to change favorite"; "_status_wait_copy_" = "Waiting to copy"; "_status_wait_move_" = "Waiting to move"; +"_status_in_upload_" = "In upload"; "_status_uploading_" = "Uploading"; "_status_upload_error_" = "Error, waiting to upload"; "_select_media_folder_" = "Set Media folder"; @@ -455,19 +698,35 @@ // MARK: Share "_share_link_" = "Share link"; +"_share_link_button_" = "Send link to …"; "_share_link_name_" = "Link name"; "_password_" = "Password"; "_share_password_" = "Password protected link"; +"_share_expirationdate_" = "Set expiration date for link"; "_date_" = "Date"; +"_share_title_" = "Share"; +"_add_sharee_" = "Add users or groups"; +"_add_sharee_footer_" = "You can share this resource by adding users or groups. To remove a share, remove all users and groups"; +"_find_sharee_title_" = "Search"; +"_find_sharee_" = "Search for user or group …"; +"_find_sharee_footer_" = "Enter part of the name of the user or group to search for (at least 2 characters) followed by \"Return\", select the users that should be allowed to access the share followed by \"Done\" to confirm"; +"_user_is_group_" = "(Group)"; +"_direct_sharee_title_" = "Share"; +"_direct_sharee_footer_" = "If you already know the name, enter it, then select the share type and press \"Done\" to confirm"; +"_direct_sharee_" = "Enter the username …"; "_user_sharee_footer_" = "Tap to change permissions"; +"_share_type_title_" = "Type of share"; +"_share_type_user_" = "User"; +"_share_type_group_" = "Group"; +"_share_type_remote_" = "Remote"; "_enforce_password_protection_" = "Enforce password protection"; +"_password_obligatory_" = "Enforce password protection enabled, password obligatory"; "_shared_with_you_by_" = "Shared with you by"; -//"_shareLinksearch_placeholder_" = "Name, email, or Federated Cloud ID …"; -//"_new_comment_" = "New comment …"; -//"_edit_comment_" = "Edit comment"; -//"_delete_comment_" = "Delete comment"; -//"_share_read_only_" = "View only"; -//"_share_editing_" = "Can edit"; +"_shareLinksearch_placeholder_" = "Name, email, or Federated Cloud ID …"; +"_new_comment_" = "New comment …"; +"_edit_comment_" = "Edit comment"; +"_delete_comment_" = "Delete comment"; +"_share_read_only_" = "View only"; "_share_reshare_allowed_" = "Resharing is allowed."; "_share_reshare_not_allowed_" = "Resharing is not allowed."; "_sharing_message_" = "You can create links or send shares by mail. If you invite MagentaCLOUD users, you have more opportunities for collaboration."; @@ -517,6 +776,7 @@ //"_share_password_protect_" = "Password protect"; "_share_expiration_date_" = "Set expiration date"; "_share_note_recipient_" = "Note to recipient"; +"_share_delete_sharelink_" = "Delete link"; "_share_add_sharelink_" = "Add another link"; "_share_can_read_" = "Read"; "_share_can_reshare_" = "Share"; @@ -541,35 +801,49 @@ "_no_transfer_" = "No transfers yet"; "_no_transfer_sub_" = "Uploads and downloads from this device will show up here"; +"_no_activity_" = "No activity yet"; "_no_activity_footer_" = "No more activities to load"; "_transfers_" = "Transfers"; "_activity_" = "Activity"; +"_activity_file_not_present_" = "File no longer present"; "_trash_file_not_found_" = "It seems that the file is not in the Trash. Go to the Trash to update it and try again."; "_list_shares_" = "Shares"; "_list_shares_no_files_" = "No shares yet"; "_tutorial_list_shares_view_" = "Files and folders you share will show up here"; +"_create_synchronization_" = "Create synchronization"; "_offline_" = "Offline"; +"_local_storage_" = "Local storage"; +"_local_storage_no_record_" = "No files yet"; "_upload_photos_videos_" = "Upload photos or videos"; "_upload_file_" = "Upload file"; +"_upload_file_text_" = "Create text file"; "_create_nextcloudtext_document_" = "Create text document"; +"_save_document_picker_" = "Save here"; +"_destination_folder_" = "Destination folder"; "_use_folder_auto_upload_" = "Use the \"Auto upload\" folder as destination"; +"_rename_filename_" = "Rename"; "_filename_" = "Filename"; "_enter_filename_" = "Enter filename …"; "_default_preview_filename_footer_" = "Example preview of filename: IMG_0001.JPG"; "_filename_header_" = "Enter filename"; -"_preview_filename_" = "Example preview of filename. You can use the mask %@ for date/time."; -"_add_filenametype_" = "Specify type in filename"; +"_preview_filename_" = "Example preview of filename. You can use the mask %@ for date/time.";"_add_filenametype_" = "Specify type in filename"; +"_filenametype_photo_video_" = "Photo/Video"; "_maintain_original_filename_" = "Maintain original filename"; +"_modify_photo_" = "Modify photo"; "_notifications_" = "Notifications"; +"_no_notification_" = "No notifications yet"; +"_autoupload_filename_title_" = "Auto upload filename"; "_untitled_" = "Untitled"; +"_text_upload_title_" = "Upload text file"; "_e2e_settings_title_" = "Encryption"; "_e2e_settings_" = "End-to-end encryption"; "_e2e_settings_start_" = "Start end-to-end encryption"; +"_e2e_settings_not_available_" = "End-to-end encryption not available"; "_e2e_settings_activated_" = "End-to-end encryption activated"; "_e2e_server_disabled_" = "End-to-end encryption app disabled on server"; "_e2e_settings_view_passphrase_" = "All 12 words together make a very strong password, letting only you view and make use of your encrypted files. Please write it down and keep it somewhere safe."; "_e2e_settings_read_passphrase_" = "Read passphrase"; -"_e2e_settings_lock_not_active_" = "Lock not active. Go to \"Settings\" and activate it."; +"_e2e_settings_lock_not_active_" = "Lock not active, go back to \"Settings\" and activate it"; "_e2e_settings_the_passphrase_is_" = "The passphrase is:"; "_e2e_passphrase_request_title_" = "Request passphrase"; "_e2e_passphrase_request_message_" = "Insert the 12 words"; @@ -613,15 +887,37 @@ "_scan_label_document_zone_" = "Tap or drag images down for document creation"; "_filter_document_" = "Document"; "_filter_original_" = "Original"; +"_filter_bn_" = "Black & White"; +"_filter_grayscale_" = "Grayscale"; "_quality_image_title_" = "Preview image quality"; +"_quality_high_" = "Large file size of high quality"; +"_quality_medium_" = "Average file size of medium quality"; +"_quality_low_" = "Small file size of low quality"; +"_file_type_" = "File type"; +"_pdf_password_" = "PDF Password"; "_file_creation_" = "File creation"; "_delete_all_scanned_images_" = "Delete all scanned images"; "_text_recognition_" = "Text recognition"; "_all_files_" = "All files"; "_personal_files_" = "Personal Files"; +/* The title on the navigation bar of the Scanning screen. */ +"wescan.scanning.title" = "Scanning"; +/* The "Next" button on the right side of the navigation bar on the Edit screen. */ +"wescan.edit.button.next" = "Next"; +/* The title on the navigation bar of the Edit screen. */ +"wescan.edit.title" = "Edit Scan"; +/* The "Done" button on the right side of the navigation bar on the Review screen. */ +"wescan.review.button.done" = "Done"; +/* The title on the navigation bar of the Review screen. */ +"wescan.review.title" = "Review"; + "_trash_view_" = "Deleted files"; "_empty_trash_" = "Empty trash"; +"_trash_restore_all_" = "Restore all files"; +"_trash_delete_all_" = "Empty trash"; +"_trash_delete_permanently_" = "Delete permanently"; +"_trash_delete_all_description_" = "Do you want to empty the trash bin?"; "_trash_no_trash_" = "No files deleted"; "_trash_no_trash_description_" = "You can restore deleted files from here"; "_trash_restore_selected_" = "Restore selected files"; @@ -642,7 +938,62 @@ "_log_in_" = "Log in"; "_sign_up_" = "Sign up with provider"; "_host_your_own_server" = "Host your own server"; +"_unauthorized_" = "Unauthorized"; +"_bad_username_password_" = "Wrong username or password"; +"_cancelled_by_user" = "Transfer canceled"; +"_error_folder_destiny_is_the_same_" = "It is not possible to move the folder into itself"; +"_error_not_permission_" = "You don't have permission to complete the operation"; +"_error_path_" = "Unable to open this file or folder. Please make sure it exists"; +"_file_upload_not_exitst_" = "The file that you want to upload does not exist"; +"_forbidden_characters_from_server_" = "The name contains at least one invalid character"; +"_error_not_modified_" = "Resource not modified"; +"_not_connected_internet_" = "Server connection error"; +"_not_possible_connect_to_server_" = "It is not possible to connect to the server at this time"; +"_not_possible_create_folder_" = "Folder could not be created"; +"_server_down_" = "Could not establish contact with server"; +"_time_out_" = "Timeout, try again"; +"_unknow_response_server_" = "Unexpected response from server"; +"_user_authentication_required_" = "User authentication required"; +"_file_directory_locked_" = "File or directory locked"; +"_ssl_certificate_untrusted_" = "The certificate for this server is invalid"; +"_ssl_certificate_changed_" = "The certificate for this server seems to have changed"; +"_internal_server_" = "Internal server error"; +"_file_already_exists_" = "Could not complete the operation, a file with the same name exists"; +"_file_folder_not_exists_" = "The source file wasn't found at the specified path"; +"_folder_contents_nochanged_" = "The folder contents have not changed"; +"_images_invalid_converted_" = "The image is invalid and cannot be converted to a thumbnail"; +"_method_not_expected_" = "Unexpected request method"; +"_reauthenticate_user_" = "Access expired, log in again"; +"_server_error_retry_" = "The server is temporarily unavailable"; +"_too_many_files_" = "Too many files would be involved in this operation"; +"_too_many_request_" = "Sending too many requests caused the rate limit to be reached"; +"_user_over_quota_" = "Storage quota is reached"; +"_ssl_connection_error_" = "Connection SSL error, try again"; +"_bad_request_" = "Bad request"; +"_webdav_locked_" = "WebDAV Locked: Trying to access locked resource"; +"_error_user_not_available_" = "The user is no longer available"; +"_server_response_error_" = "Server response content error"; +"_no_nextcloud_found_" = "Server not found"; +"_error_decompressing_" = "Error during decompressing. Unknown compression method or the file is corrupt"; +"_error_json_decoding_" = "Serious internal error in decoding metadata (The data couldn't be read because it isn't in the correct format.)"; +"_error_check_remote_user_" = "Server responded with an error. Please log in again"; +"_request_entity_too_large_" = "The file is too large"; +"_not_possible_download_" = "It is not possible to download the file"; +"_not_possible_upload_" = "It is not possible to upload the file"; +"_error_files_upload_" = "Error uploading files"; +"_method_not_allowed_" = "The requested method is not supported"; "_invalid_url_" = "Invalid server URL"; +"_invalid_literal_" = "Invalid search string"; +"_invalid_date_format_" = "Invalid date format"; +"_invalid_data_format_" = "Invalid data format"; +"_error_decode_xml_" = "Invalid response, error decode XML"; +"_internal_generic_error_" = "internal error"; +"_editor_unknown_" = "Failed to open file: Editor is unknown"; +"_err_file_not_found_" = "File not found, removed"; +"_err_e2ee_app_version_" = "The app version of end-to-end encryption is not compatible with the server, please update your server"; +"_err_permission_microphone_" = "Please allow Microphone usage from Settings"; +"_err_permission_photolibrary_" = "Please allow Photos from Settings"; +"_err_permission_locationmanager_" = "Please allow Location - Always from Settings"; "_ssl_certificate_untrusted_" = "The certificate for this server is invalid."; "_ssl_certificate_changed_" = "The certificate for this server seems to have changed."; "_file_already_exists_" = "Could not complete the operation, a file with the same name exists."; @@ -655,6 +1006,8 @@ "_create_voice_memo_" = "Create voice memo"; "_voice_memo_start_" = "Tap to start"; "_voice_memo_stop_" = "Tap to stop"; +"_voice_memo_filename_" = "Voice memo"; +"_voice_memo_title_" = "Upload voice memo"; "Enter Passcode" = "Enter Passcode"; "Enter a new passcode" = "Enter a new passcode"; "Confirm new passcode" = "Confirm new passcode"; @@ -682,10 +1035,15 @@ "_3_months_" = "3 months"; "_1_month_" = "1 month"; "_1_week_" = "1 week"; +"_1_day_" = "1 day"; "_monthly_" = "Monthly"; "_yearly_" = "Yearly"; +"_weekly_" = "Weekly"; "_daily_" = "Daily"; -"_used_space_" = "Used space:"; +"_day_" = "Day"; +"_used_space_" = "Used space"; +"_open_in_onlyoffice_" = "Open in ONLYOFFICE"; +"_open_in_collabora_" = "Open with Collabora Online"; "_login_address_detail_" = "The link to your %@ web interface when you open it in the browser."; "_go_to_page_" = "Go to page"; "_page_" = "Page"; @@ -693,15 +1051,23 @@ "_invalid_page_" = "Invalid Page"; "_the_entered_page_number_does_not_exist_" = "The entered page number does not exist."; "_error_something_wrong_" = "Something went wrong"; +"_resolution_" = "Resolution"; "_try_download_full_resolution_" = "Download full resolution image"; "_full_resolution_image_info_" = "This may reveal more information about the photo."; "_download_audio_" = "Download the audio locally"; "_copied_path_" = "Copied path"; +"_copy_path_" = "Copy path"; +"_certificates_" = "Certificates"; "_privacy_screen_" = "Splash screen when app inactive"; +"_saving_" = "Saving …"; +"_video_not_streamed_" = "The server does not allow video streaming, do you want to download it?"; +"_video_not_streamed_e2ee_" = "The server does not allow video streaming because it is encrypted, do you want to download it?"; +"_scan_" = "Scan"; "_in_" = "in"; "_enter_passphrase_" = "Enter passphrase (12 words)"; "_show_more_results_" = "Show more results"; "_waiting_for_" = "Waiting for:"; +"_waiting_" = "Waiting …"; "_reachable_wifi_" = "network reachable via Wi-Fi or cable"; "_ITMS-90076_" = "Due to a change in the Nextcloud application identifier, the settings and password for accessing your cloud are reset, so please re-enter your account data and check your Settings. We are sorry about that."; "_password_not_present_" = "Please re-insert your credentials."; @@ -712,9 +1078,15 @@ "_description_dashboardwidget_" = "Having the Dashboard always at your fingertips has never been easier."; "_description_fileswidget_" = "View your recent files and use the toolbar to speed up your operations."; "_description_toolbarwidget_" = "A toolbar to speed up your operations."; +"_no_data_available_" = "No data available"; +"_widget_available_nc25_" = "Widget only available starting with server version 25"; +"_keep_running_" = "Keep the app running for a better user experience"; +"_recent_activity_" = "Recent activity"; "_title_lockscreenwidget_" = "Status"; "_description_lockscreenwidget_" = "Keep an eye on available space and recent activity"; - +"_no_items_" = "No items"; +"_check_back_later_" = "Check back later"; +"_exporting_video_" = "Exporting video … Tap to cancel."; "_keep_running_" = "Keep the app running for a better user experience."; "_apps_nextcloud_detect_" = "Detected %@ apps"; "_add_existing_account_" = "Other %@ Apps has been detected, do you want to add an existing account?"; @@ -730,16 +1102,35 @@ "_mobile_config_" = "Download the configuration profile"; "_calendar_contacts_footer_warning_" = "Configuration profile can only be downloaded if Safari is set as default browser."; "_calendar_contacts_footer_" = "After downloading the profile you can install it from Settings."; +"_preview_" = "Preview"; +"_crop_" = "Crop"; "_modify_image_desc_" = "Tap on a file to modify or rename."; "_message_disable_livephoto_" = "This image is a Live Photo, changing it will lose the Live Photo effect."; +//"_modify_image_desc_" = "Tap the image for modify"; +//"_message_disable_livephoto_" = "This image is a Live Photo, changing it will lose the Live effect"; "_enable_livephoto_" = "Enable Live Photo"; "_disable_livephoto_" = "Disable Live Photo"; "_undo_modify_" = "Undo modifying"; +"_unauthorizedFilesPasscode_" = "Files app cannot be used with an activated passcode"; +"_disableFilesApp_" = "Files app cannot be used because it is disabled"; +"_reset_application_done_" = "Reset application, done."; "_rename_already_exists_" = "A file with this name already exists."; +"_created_" = "Created"; +"_recipients_" = "Recipients"; +"_are_sure_" = "Are you sure?"; +"_creation_" = "Creation"; +"_modified_" = "Modified"; "_group_folders_" = "Group folders"; "_play_from_files_" = "Play movie from a file"; "_play_from_url_" = "Play movie from URL"; "_valid_video_url_" = "Insert a valid URL"; +"_deletion_progess_" = "Deletion in progress"; +"_copying_progess_" = "Copying in progress"; +"_moving_progess_" = "Moving in progress"; +"_chunk_enough_memory_" = "It seems there is not enough space to send the file"; +"_chunk_create_folder_" = "The file could not be sent, please check the server log"; +"_chunk_files_null_" = "The file for sending could not be created"; +"_chunk_file_null_" = "The file could not be sent"; "_chunk_move_" = "The sent file could not be reassembled, please check the server log."; "_download_image_" = "Download image"; "_download_video_" = "Download video"; @@ -748,6 +1139,9 @@ "_reset_wrong_passcode_desc_" = "Use \"Reset application\" to remove all accounts and local data after %d failed code entry attempts."; "_deviceOwnerAuthentication_" = "The biometric sensor has been temporarily disabled due to multiple failed attempts. Enter the device passcode to re-enable the sensor."; "_virus_detect_" = "Virus detected. Upload cannot be completed!"; +"_zoom_" = "Zoom"; +"_zoom_in_" = "Zoom in"; +"_zoom_out_" = "Zoom out"; "_select_photos_" = "Select photos"; "_selected_photo_" = "selected photo"; "_selected_photos_" = "selected photos"; @@ -763,12 +1157,14 @@ "_account_settings_" = "Account settings"; "_users_" = "Users"; "_users_footer_" = "Every time the app is reactivated, the account will be requested."; +"_additional_view_options_" = "Additional view options"; "_while_charging_" = "While charging"; +"_additional_options_" = "Additional options"; "_keep_screen_awake_" = "Keep screen awake\nwhile transferring files"; "_error_not_found_" = "The requested resource could not be found"; "_error_conflict_" = "The request could not be completed due to a conflict with the current state of the resource"; "_error_precondition_" = "The server does not meet one of the preconditions of the requester"; -"_downloading_" = "Downloading"; + "_additional_options_" = "Additional options"; "_unauthorizedFilesPasscode_" = "Files app cannot be used with an activated passcode"; "_disableFilesApp_" = "Files app cannot be used because it is disabled"; @@ -779,12 +1175,32 @@ "_recent_activity_" = "Recent activity"; "_maintenance_mode_" = "The server is currently in maintenance mode, which may take a while."; "_account_disabled_" = "Account disabled"; + +//Video +"_select_trace_" = "Select the trace"; +"_video_processing_" = "Video processing"; +"_video_being_processed_" = "Video being processed …"; +"_downloading_" = "Downloading"; +"_download_error_" = "Download error"; +"_subtitle_" = "Subtitle"; +"_dts_to_ac3_" = "The DTS is not supported, it requires a conversion to Dolby Digital"; +"_reuired_conversion_" = "This video takes a long time to convert."; +"_stay_app_foreground_" = "Keep the app in the foreground …"; +"_conversion_available_" = "The conversion is always available on menu"; +"_video_format_not_recognized_" = "This video needs to be processed to be played, do you want to do it now?"; +"_video_must_download_" = "This video needs to be downloaded and processed to be played, do you want to do it now?"; +"_conversion_max_compatibility_" = "Max compatibility, the conversion can take much longer"; +"_video_tap_for_close_" = "A slight pressure to close the processing"; +"_subtitle_not_found_" = "Subtitle not found"; +"_disable_" = "Disable"; +"_subtitle_not_dowloaded_" = "There are subtitles not downloaded locally"; "_user_" = "User"; "_add_subtitle_" = "Add an external subtitle"; "_add_audio_" = "Add an external audio"; "_upload_foreground_msg_" = "Do not close %@ to complete the transfer …"; "_upload_background_msg_" = "Files upload in progress …"; "_create_folder_error_" = "An error has occurred while creating the folder:\n%@.\n\nPlease resolve the issue as soon as possible.\n\nAll uploads are suspended until the problem is resolved.\n"; +"_rename_file_error_" = "An error has occurred while renaming the file:\n%@."; "_creating_dir_progress_" = "Creating directories in progress … keep the application active."; "_creating_db_photo_progress_" = "Creating photo archive in progress … keep the application active."; "_account_unauthorized_" = "Warning, %@, you are not authorized, your account has been deleted, if you have changed your password, re-authenticate."; @@ -837,15 +1253,42 @@ You can stop it at any time, adjust the settings, and enable it again."; "_on_" = "On"; // a11y: On/Off "_off_" = "Off"; +"_grid_view_" = "Show grid view"; +"_list_view_" = "Show list view"; "_list_" = "List"; "_icons_" = "Icons"; +// MARK: Plan customer +"_leave_plan_title" = "We're sorry to see you go"; +"_leave_plan_description" = "You'll no longer have access to:"; +"_current_plan_" = "Current Plan"; +"_billing_plan_" = "Billing Plan"; +"_keep_plan_" = "Keep Plan"; +"_leave_plan_" = "Leave Plan"; +"_change_plan_" = "Change Plan"; +"_manage_plan_" = "Manage Plan"; +"_purchase_plan_" = "Purchase Plan"; +"_restore_plan_" = "Restore Purchased Plan"; +"_purchase_plan_description_" = "Purchases have been restored"; +"_choose_plan_" = "You should choose a plan in order to purchase it."; +"_already_plan_" = "The selected plan has already been bought."; +"_change_billing_" = "Change Billing"; +"_payment_method_" = "Payment Method"; + +// MARK: Mantis library +"Mantis.Done" = "Done"; +"Mantis.Cancel" = "Cancel"; +"Mantis.Reset" = "Reset"; +"Mantis.Original" = "Original"; +"Mantis.Square" = "Square"; + // MARK: Assistant "_assistant_task_unknown_" = "Unknown"; "_assistant_task_scheduled_" = "Scheduled"; "_assistant_task_in_progress_" = "In Progress"; "_assistant_task_completed_" = "Completed"; "_assistant_task_failed_" = "Failed"; +"_all_" = "All"; "_input_" = "Input"; "_output_" = "Output"; "_task_details_" = "Task details"; From 29d908927203dbcdbda087a1764483e936e8aa86 Mon Sep 17 00:00:00 2001 From: harshada-15-tsys Date: Tue, 30 Sep 2025 16:44:20 +0530 Subject: [PATCH 22/42] NMC-2023 - Localizations for EN and DE updated for New sharing design and as per 9.6.6 version --- .../en.lproj/Localizable.strings | 87 ++++++++++++------- 1 file changed, 58 insertions(+), 29 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 6bc5fb2ca9..59fad19b62 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -56,7 +56,7 @@ "_select_all_" = "Select all"; "_upload_" = "Upload"; "_home_" = "Files"; -"_files_" = "Files"; +//"_files_" = "Files"; "_home_dir_" = "Home"; "_file_to_upload_" = "File to upload"; "_destination_" = "Destination"; @@ -320,7 +320,7 @@ "_...loading..._" = "Loading …"; "_download_plist_" = " "; "_no_reuploadfile_" = "Could not find nor resend file. Delete the upload and reload the file to upload it."; -"_file_already_exists_" = "Unable to complete the operation, a file with the same name exists."; +//"_file_already_exists_" = "Unable to complete the operation, a file with the same name exists."; "_read_file_error_" = "Could not read the file"; "_write_file_error_" = "Could not write the file"; "_files_lock_error_" = "There was an error changing the lock of this file."; @@ -342,6 +342,8 @@ "_lock_protection_no_screen_" = "Do not ask at startup"; "_lock_protection_no_screen_footer_" = "Use \"Do not ask at startup\" for the encryption option."; "_enable_touch_face_id_" = "Enable Touch/Face ID"; +"_face_id_" = "Face ID"; +"_touch_id_" = "Touch ID"; "_security_" = "Security"; "_data_protection_" = "Data protection"; "_privacy_settings_" = "Privacy Settings"; @@ -349,6 +351,7 @@ "_service_" = "Service"; "_imprint_" = "Imprint"; "_magentacloud_version_" = "MagentaCLOUD Version"; +"_your_secure_cloud_storage_" = "Your secure cloud storage"; "_url_" = "URL"; "_username_" = "Username"; "_change_credentials_" = "Change your credentials"; @@ -361,7 +364,6 @@ "_clear_cache_" = "Clear cache"; "_clear_cache_footer_" = "Clear downloaded and offline files from the app"; "_exit_footer_" = "Remove all accounts and local data from the app."; -"_exit_footer_" = "Remove all accounts and local data from the app."; "_exit_" = "Logout"; "_funct_not_enabled_" = "Functionality not enabled"; "_passcode_activate_" = "Password lock on"; @@ -380,8 +382,8 @@ "_manage_account_" = "Manage account"; "_change_password_" = "Change password"; "_add_account_" = "Add account"; -"_want_delete_" = "You will delete the following: "; -"_want_leave_share_" = "You will leave the following shares: "; +//"_want_delete_" = "You will delete the following: "; +//"_want_leave_share_" = "You will leave the following shares: "; "_delete_account_" = "Remove account"; "_delete_active_account_" = "Remove active account"; "_want_delete_" = "Do you really want to delete?"; @@ -646,7 +648,7 @@ "_request_in_progress_" = "Request to server in progress …"; "_personal_files_only_" = "Personal files only"; "audio" = "AUDIO"; -"directory" = "FOLDERS"; +//"directory" = "FOLDERS"; "compress" = "COMPRESS"; "directory" = "FOLDERS"; "document" = "DOCUMENTS"; @@ -697,7 +699,8 @@ // MARK: Share -"_share_link_" = "Share link"; +//"_share_link_" = "Share link"; +"_share_link_" = "Link"; "_share_link_button_" = "Send link to …"; "_share_link_name_" = "Link name"; "_password_" = "Password"; @@ -722,10 +725,10 @@ "_enforce_password_protection_" = "Enforce password protection"; "_password_obligatory_" = "Enforce password protection enabled, password obligatory"; "_shared_with_you_by_" = "Shared with you by"; -"_shareLinksearch_placeholder_" = "Name, email, or Federated Cloud ID …"; -"_new_comment_" = "New comment …"; -"_edit_comment_" = "Edit comment"; -"_delete_comment_" = "Delete comment"; +//"_shareLinksearch_placeholder_" = "Name, email";//, or Federated Cloud ID …"; +//"_new_comment_" = "New comment …"; +//"_edit_comment_" = "Edit comment"; +//"_delete_comment_" = "Delete comment"; "_share_read_only_" = "View only"; "_share_reshare_allowed_" = "Resharing is allowed."; "_share_reshare_not_allowed_" = "Resharing is not allowed."; @@ -751,17 +754,19 @@ "_share_download_limit_placeholder_" = "Enter download limit"; "_share_download_limit_alert_empty_" = "Download limit cannot be empty."; "_share_download_limit_alert_zero_" = "Download limit should be greater than 0."; +"_share_download_limit_alert_invalid_" = "Please enter a valid number for the download limit."; "_share_remaining_download_" = "Downloads:"; -"_share_read_only_" = "Read only"; +//"_share_read_only_" = "Read only"; +"_share_read_only_" = "View only"; "_share_editing_" = "Can edit"; "_share_file_drop_" = "Filedrop only"; //"_share_file_drop_" = "File request"; "_share_hide_download_" = "Prevent download"; "_share_note_recipient_" = "YOUR MESSAGE"; -"_shareLinksearch_placeholder_" = "Contact name or email address"; -"_shareLinksearch_placeholder_" = "Type a name and press Search"; +//"_shareLinksearch_placeholder_" = "Contact name or email address"; +//"_shareLinksearch_placeholder_" = "Type a name and press Search"; //"_shareLinksearch_placeholder_" = "Type a name and press Enter"; -"_shareLinksearch_mail_placeholder_" = "Type a name or an email and press Enter"; +//"_shareLinksearch_mail_placeholder_" = "Type a name or an email and press Enter"; "_new_comment_" = "New comment …"; "_edit_comment_" = "Edit comment"; "_delete_comment_" = "Delete comment"; @@ -769,6 +774,7 @@ "_share_allow_upload_" = "Allow upload and editing"; "_share_secure_file_drop_" = "Secure file drop (upload only)"; //"_share_hide_download_" = "Hide download"; +"_share_hide_download_" = "Prevent download"; "_share_allowed_downloads_" = "Allowed downloads"; "_share_limit_download_" = "Limit downloads"; "_remaining_" = "%d remaining"; @@ -779,16 +785,37 @@ "_share_delete_sharelink_" = "Delete link"; "_share_add_sharelink_" = "Add another link"; "_share_can_read_" = "Read"; -"_share_can_reshare_" = "Share"; -"_share_can_create_" = "Create"; -"_share_can_change_" = "Edit"; -"_share_can_delete_" = "Delete"; -"_share_can_download_" = "Allow download and sync"; -"_share_unshare_" = "Delete share"; +"_share_can_reshare_" = "Allow resharing"; +"_share_can_create_" = "Allow creating"; +"_share_can_change_" = "Allow editing"; +"_share_can_delete_" = "Allow deleting"; +"_share_can_download_" = "Allow download"; +"_share_unshare_" = "Unshare"; "_share_internal_link_" = "Internal link"; "_share_internal_link_des_" = "Only works for users with access to this file/folder."; "_share_reshare_disabled_" = "You are not allowed to reshare this file/folder."; "_share_reshare_restricted_" = "Note: You only have limited permission to reshare this file/folder."; +"_create_new_link_" = "Create new link"; +"_share_send_link_by_mail_" = "Send link by mail"; +"_share_or_" = "or"; +"_share_copy_link_" = "Copy link"; +"_share_shared_with_" = "Shared with"; +"_share_quick_permission_everyone_can_just_upload_" = "Everyone can just upload"; +"_share_quick_permission_everyone_can_edit_" = "Everyone can edit"; +"_share_quick_permission_everyone_can_only_view_" = "Everyone can only view"; +"_share_quick_permission_everyone_can_just_upload_short_" = "Just upload"; +"_share_quick_permission_everyone_can_edit_short_" = "Can edit"; +"_share_quick_permission_everyone_can_only_view_short_" = "Only view"; +"_share_received_shares_text_" = "This file / folder was shared with you by"; +"_share_no_shares_text_" = "You have not yet shared your file/folder. Share to give others access"; +"_share_size_" = "Size: "; +"_share_modified_" = "Modified: "; +"_share_created_" = "Created: "; +"_share_uploaded_" = "Uploaded: "; +"_share_details_" = "Details"; +"_share_via_link_menu_password_label_" = "Password protect (%1$s)"; +"_share_link_empty_exp_date_" = "You must select expiration date."; +"_share_link_empty_note_message_" = "Please enter note."; "_remote_" = "Remote"; "_remote_group_" = "Remote group"; "_conversation_" = "Conversation"; @@ -834,6 +861,7 @@ "_no_notification_" = "No notifications yet"; "_autoupload_filename_title_" = "Auto upload filename"; "_untitled_" = "Untitled"; +"_untitled_txt_" = "Untitled.txt"; "_text_upload_title_" = "Upload text file"; "_e2e_settings_title_" = "Encryption"; "_e2e_settings_" = "End-to-end encryption"; @@ -994,13 +1022,13 @@ "_err_permission_microphone_" = "Please allow Microphone usage from Settings"; "_err_permission_photolibrary_" = "Please allow Photos from Settings"; "_err_permission_locationmanager_" = "Please allow Location - Always from Settings"; -"_ssl_certificate_untrusted_" = "The certificate for this server is invalid."; -"_ssl_certificate_changed_" = "The certificate for this server seems to have changed."; -"_file_already_exists_" = "Could not complete the operation, a file with the same name exists."; -"_error_files_upload_" = "Error uploading files."; -"_internal_generic_error_" = "internal error."; -"_err_permission_microphone_" = "Please allow Microphone usage from Settings."; -"_err_permission_photolibrary_" = "Please allow Photos from Settings."; +//"_ssl_certificate_untrusted_" = "The certificate for this server is invalid."; +//"_ssl_certificate_changed_" = "The certificate for this server seems to have changed."; +//"_file_already_exists_" = "Could not complete the operation, a file with the same name exists."; +//"_error_files_upload_" = "Error uploading files."; +//"_internal_generic_error_" = "internal error."; +//"_err_permission_microphone_" = "Please allow Microphone usage from Settings."; +//"_err_permission_photolibrary_" = "Please allow Photos from Settings."; "_qrcode_not_authorized_" = "This app is not authorized to use the Back Camera."; "_qrcode_not_supported_" = "QR code not supported by the current device."; "_create_voice_memo_" = "Create voice memo"; @@ -1087,7 +1115,7 @@ "_no_items_" = "No items"; "_check_back_later_" = "Check back later"; "_exporting_video_" = "Exporting video … Tap to cancel."; -"_keep_running_" = "Keep the app running for a better user experience."; +//"_keep_running_" = "Keep the app running for a better user experience."; "_apps_nextcloud_detect_" = "Detected %@ apps"; "_add_existing_account_" = "Other %@ Apps has been detected, do you want to add an existing account?"; "_status_in_progress_" = "Status reading in progress …"; @@ -1241,6 +1269,7 @@ "_tip_open_mediadetail_" = "Swipe up to show the details"; "_tip_autoupload_button_" = "Configure the options as you prefer (folder, Wi-Fi, new content, subfolders) and tap ‘Turn on auto uploading’. You can stop it at any time, adjust the settings, and enable it again."; +"_tip_autoupload_" = "You can now Auto Upload specific Albums from your Photos. You can enable Auto Upload here"; // MARK: Accessibility From a71200538999a2cddc557e6fb3ba0d29652b3c2d Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Wed, 10 May 2023 14:25:01 +0530 Subject: [PATCH 23/42] NMC 2023 german translation update (+35 squashed commits) Squashed commits: [353bf009c] NMC 2023 - update missing localised strings for german languages [a754bbf24] NMC 2023 - Localisation change for empty filename alert [3170e8b5b] NMC 2023 - Localisation changes for auto upload description [ab885ab8e] NMC 2023 - NMC 2580 App Updater strings added [bfd0d6653] NMC 2023 - (nmc 2397) Strings update [872a80881] nmc 2023 - re sharing string update [9a3e27542] NMC 2023 - share strings update [b2d3c952f] NMC 2023 "Details" string changed [3450bb2ab] NMC 2023 Two localizable strings added for dashboard [c0f74faf0] nmc 2023 - image video upload localisation related changes [668332a07] nmc 2023 - more tab localisation changes [3489a28ab] nmc 2023 - localisation update for share text field [d7eb28e6b] nmc 2023 - sharing feature localisation strings update [1857be058] nmc 2023 - E2e and onboarding Internet not available strings update [6a6534546] nmc 2023 - scan cluster localisation changes [ed6b28265] NMC 1990 Settings cluster Localization strings added [d951a89ff] nmc 2023 - collabora localization changes added [f9656c196] nmc 2023 - privacy policy localization changes added [39fb24a46] NMC 2023 - update missing localised strings for german languages [3a190b508] NMC 2023 - Localisation change for empty filename alert [1ce0969b6] NMC 2023 - Localisation changes for auto upload description [bc178c063] NMC 2023 - NMC 2580 App Updater strings added [daee67130] NMC 2023 - (nmc 2397) Strings update [0e170564d] nmc 2023 - re sharing string update [fb10cb28b] NMC 2023 - share strings update [2b6a76baf] NMC 2023 "Details" string changed [05e6c22f9] NMC 2023 Two localizable strings added for dashboard [9713606b7] nmc 2023 - image video upload localisation related changes [18332eb52] nmc 2023 - more tab localisation changes [9aeba2a4f] nmc 2023 - localisation update for share text field [92836cf7b] nmc 2023 - sharing feature localisation strings update [0ff7d2b7f] nmc 2023 - E2e and onboarding Internet not available strings update [e2d677b4d] nmc 2023 - scan cluster localisation changes [5d59992d2] NMC 1990 Settings cluster Localization strings added [a3d0a2217] nmc 2023 - collabora localization changes added --- .../Supporting Files/en.lproj/Localizable.strings | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 59fad19b62..5ffb5f750b 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -371,7 +371,8 @@ "_want_exit_" = "Attention! Will be reset to initial state. Continue?"; "_proceed_" = "Proceed"; "_delete_cache_" = "Delete cache"; -"_want_delete_cache_" = "Do you want to delete the cache (this also removes the transfers in progress)?";"_want_delete_thumbnails_" = "Do you want to delete all thumbnails too?"; +"_want_delete_cache_" = "Do you want to delete the cache (this also removes the transfers in progress)?"; +"_want_delete_thumbnails_" = "Do you want to delete all thumbnails too?"; "_mail_deleted_" = "Email deleted"; "_mail_saved_" = "Email saved"; "_mail_sent_" = "Email sent"; @@ -388,6 +389,9 @@ "_delete_active_account_" = "Remove active account"; "_want_delete_" = "Do you really want to delete?"; "_want_leave_share_" = "You will leave the following shares: "; +"_delete_account_" = "Remove account"; +"_delete_active_account_" = "Remove active account"; +//"_want_delete_" = "Do you really want to delete?"; "_no_delete_" = "No, do not delete"; "_yes_delete_" = "Yes, delete"; "_remove_cache_" = "Deleting cache, please wait …"; @@ -758,15 +762,15 @@ "_share_remaining_download_" = "Downloads:"; //"_share_read_only_" = "Read only"; "_share_read_only_" = "View only"; +"_share_remaining_download_" = "Downloads:"; +//"_share_read_only_" = "Read only"; "_share_editing_" = "Can edit"; "_share_file_drop_" = "Filedrop only"; //"_share_file_drop_" = "File request"; "_share_hide_download_" = "Prevent download"; "_share_note_recipient_" = "YOUR MESSAGE"; -//"_shareLinksearch_placeholder_" = "Contact name or email address"; -//"_shareLinksearch_placeholder_" = "Type a name and press Search"; -//"_shareLinksearch_placeholder_" = "Type a name and press Enter"; -//"_shareLinksearch_mail_placeholder_" = "Type a name or an email and press Enter"; +"_shareLinksearch_placeholder_" = "Contact name or email address"; +"_shareLinksearch_mail_placeholder_" = "Type a name or an email and press Enter"; "_new_comment_" = "New comment …"; "_edit_comment_" = "Edit comment"; "_delete_comment_" = "Delete comment"; From b0f341ea124432c0c169ac14c720b5e241c0d59b Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Tue, 6 Jun 2023 22:57:35 +0530 Subject: [PATCH 24/42] nmc 2023 - sharing feature localisation strings update --- .../xcshareddata/xcschemes/File Provider Extension UI.xcscheme | 1 - .../xcschemes/WidgetDashboardIntentHandler.xcscheme | 1 - iOSClient/Supporting Files/en.lproj/Localizable.strings | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme b/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme index fd16f58a63..6e1cc593fa 100644 --- a/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme +++ b/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme @@ -73,7 +73,6 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES" - askForAppToLaunch = "Yes" launchAutomaticallySubstyle = "2"> diff --git a/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme b/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme index 485c4c3f00..d912dd669b 100644 --- a/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme +++ b/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme @@ -73,7 +73,6 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES" - askForAppToLaunch = "Yes" launchAutomaticallySubstyle = "2"> diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 5ffb5f750b..057d1e6e95 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -118,7 +118,6 @@ "_does_not_exist_" = "does not exist"; "_purchase_" = "Purchase"; "_account_not_exists_" = "The account %@ of %@ does not exist"; -"_account_not_available_" = "The account %@ of %@ does not exist, please add it to be able to read the file %@"; "_the_account_" = "The account"; "_does_not_exist_" = "does not exist"; "_error_parameter_schema_" = "Wrong parameters, impossible to continue"; @@ -736,6 +735,7 @@ "_share_read_only_" = "View only"; "_share_reshare_allowed_" = "Resharing is allowed."; "_share_reshare_not_allowed_" = "Resharing is not allowed."; +"_shareLinksearch_placeholder_" = "Contact name or email address"; "_sharing_message_" = "You can create links or send shares by mail. If you invite MagentaCLOUD users, you have more opportunities for collaboration."; "_create_link_" = "Create Link"; "personal_share_by_mail" = "Personal share by mail"; From aecf7be390d4c1da10935453fb2341cc4a67fc4c Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Wed, 7 Jun 2023 15:20:10 +0530 Subject: [PATCH 25/42] nmc 2023 - localisation update for share text field --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 1 - 1 file changed, 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 057d1e6e95..422c8cc55b 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -735,7 +735,6 @@ "_share_read_only_" = "View only"; "_share_reshare_allowed_" = "Resharing is allowed."; "_share_reshare_not_allowed_" = "Resharing is not allowed."; -"_shareLinksearch_placeholder_" = "Contact name or email address"; "_sharing_message_" = "You can create links or send shares by mail. If you invite MagentaCLOUD users, you have more opportunities for collaboration."; "_create_link_" = "Create Link"; "personal_share_by_mail" = "Personal share by mail"; From 4f98deac16cbb4c1e91fee63a381e54606c24e1f Mon Sep 17 00:00:00 2001 From: TSI-amrutwaghmare <96108296+TSI-amrutwaghmare@users.noreply.github.com> Date: Tue, 27 Feb 2024 10:48:28 +0530 Subject: [PATCH 26/42] NMC 2023 - update missing localised strings for german languages --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 1 + 1 file changed, 1 insertion(+) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 422c8cc55b..5ffb5f750b 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -118,6 +118,7 @@ "_does_not_exist_" = "does not exist"; "_purchase_" = "Purchase"; "_account_not_exists_" = "The account %@ of %@ does not exist"; +"_account_not_available_" = "The account %@ of %@ does not exist, please add it to be able to read the file %@"; "_the_account_" = "The account"; "_does_not_exist_" = "does not exist"; "_error_parameter_schema_" = "Wrong parameters, impossible to continue"; From 67a70cae33cade63e17a811f55392aa1720acecc Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Wed, 10 May 2023 14:22:25 +0530 Subject: [PATCH 27/42] nmc 2023 - privacy policy localization changes added --- .../en.lproj/Localizable.strings | 42 +++++-------------- 1 file changed, 10 insertions(+), 32 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 5ffb5f750b..a1fa22815e 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -100,7 +100,7 @@ "_experimental_" = "Experimental"; "_select_dir_media_tab_" = "Select as folder \"Media\""; "_error_creation_file_" = "Oops! Could not create the file"; -"_save_path_" = "Storage path"; +"_save_path_" = "Save path"; "_save_settings_" = "Save settings"; "_mode_filename_" = "Filename mode"; "_warning_owncloud_" = "You are connected to an ownCloud server. This is untested and unsupported, use at your own risk. To upgrade to Nextcloud, see https://nextcloud.com/migration."; @@ -124,7 +124,7 @@ "_error_parameter_schema_" = "Wrong parameters, impossible to continue"; "_comments_" = "Comments"; "_sharing_" = "Sharing"; -"_details_" = "Share"; +"_details_" = "Details"; "_sub_details_" = "Subscription Details"; "_subscriptions_" = "Subscriptions"; "_dark_mode_" = "Dark mode"; @@ -186,6 +186,7 @@ /* MARK: Files lock */ +"_lock_" = "Lock"; "_unlock_" = "Unlock"; "_lock_file_" = "Lock file"; "_unlock_file_" = "Unlock file"; @@ -231,7 +232,7 @@ "_source_code_" = "Get source code"; "_account_select_" = "Select the account"; "_account_select_to_add_" = "Select the account to add"; -"_host_insert_" = "Insert the host name, for example:"; +"_host_insert_" = "Insert the hostname, for example:"; "_certificate_not_found_" = "File %@ in documents directory not found."; "_copy_failed_" = "Copy failed"; "_certificate_installed_" = "Certificate installed"; @@ -329,9 +330,7 @@ "_logout_" = "Log out"; "_quota_space_unlimited_" = "Unlimited"; "_quota_space_unknown_" = "Unknown"; -"_quota_using_" = "%@ "; -"_quota_using_of_" = "of %@"; -"_quota_using_percentage_" = "Memory to %@ occupied"; +"_quota_using_" = "You are using %@ of %@"; "_acknowledgements_" = "Acknowledgements"; "_settings_" = "Settings"; "_passcode_" = "Password"; @@ -687,6 +686,7 @@ "_media_viewimage_show_" = "Show only images"; "_media_viewvideo_show_" = "Show only video"; "_media_show_all_" = "Show both"; +"_media_view_options_" = "View options"; "_media_by_created_date_" = "Sort by created date"; "_media_by_upload_date_" = "Sort by upload date"; "_media_by_modified_date_" = "Sort by modified date"; @@ -770,12 +770,16 @@ "_share_hide_download_" = "Prevent download"; "_share_note_recipient_" = "YOUR MESSAGE"; "_shareLinksearch_placeholder_" = "Contact name or email address"; +"_shareLinksearch_placeholder_" = "Type a name and press Search"; "_shareLinksearch_mail_placeholder_" = "Type a name or an email and press Enter"; "_new_comment_" = "New comment …"; "_edit_comment_" = "Edit comment"; "_delete_comment_" = "Delete comment"; "_share_allow_editing_" = "Allow editing"; +"_share_read_only_" = "View only"; +"_share_editing_" = "Editing"; "_share_allow_upload_" = "Allow upload and editing"; +"_share_file_drop_" = "File drop (upload only)"; "_share_secure_file_drop_" = "Secure file drop (upload only)"; //"_share_hide_download_" = "Hide download"; "_share_hide_download_" = "Prevent download"; @@ -887,32 +891,6 @@ "_e2e_goto_settings_for_enable_" = "This is an encrypted directory, go to \"Settings\" and enable end-to-end encryption"; "_e2e_error_" = "An internal end-to-end encryption error occurred"; "_e2e_in_upload_" = "Upload in progress, please wait for all files to be transferred"; -"_e2e_delete_folder_not_permitted_" = "Deletion of the directory marked as \"encrypted\" is not allowed"; -"_e2e_error_encode_metadata_" = "Serious internal error in encoding metadata"; -"_e2e_error_decode_metadata_" = "Serious internal error in decoding metadata"; -"_e2e_error_create_encrypted_" = "Could not create encrypted file"; -"_e2e_error_update_metadata_" = "Update metadata error"; -"_e2e_error_store_metadata_" = "Could not save metadata"; -"_e2e_error_send_metadata_" = "Could not send metadata"; -"_e2e_error_delete_metadata_" = "Could not delete metadata"; -"_e2e_error_get_metadata_" = "Could not fetch metadata"; -"_e2e_error_not_enabled_" = "Serious internal error. End-to-end encryption not enabled"; -"_e2e_error_record_not_found_" = "Serious internal error. Records not found"; -"_e2e_error_unlock_" = "Could not unlock folder"; -"_e2e_error_lock_" = "Could not lock folder"; -"_e2e_error_delete_mark_folder_" = "Decrypt marked folder"; -"_e2e_error_mark_folder_" = "Encrypt folder"; -"_e2e_error_directory_not_empty_" = "The directory is not empty"; -"_e2e_error_not_move_" = "It is not possible move files to encrypted directory"; -"_e2e_error_not_versionwriteable_" = "The E2EE version of the server is not compatible with this client"; -"_start_e2e_encryption_1_" = "To set up end-to-end encryption, they must first set up the PIN lock to prevent unauthorised people from accessing your key."; -"_start_e2e_encryption_2_" = "After starting the encryption, a randomly generated word sequence (passphrase) of 12 words is displayed. This remains in this app and can be displayed again. Nevertheless, we recommend that you write down the passphrase."; -"_start_e2e_encryption_3_" = "The passphrase is your personal password with which you can access encrypted data in your MagentaCLOUD or enable access to these files on other devices such as your PC."; -"_read_passphrase_description_" = "Here you can display the passphrase again and also copy it. You need the passphrase if you want to decrypt the data on another device with access to MagentaCLOUD, for example your PC or another smartphone or tablet."; -"_remove_passphrase_desc_1_" = "You can remove the passphrase on this device. This will not affect the encrypted content, but this device will no longer be able to decrypt your data."; -"_remove_passphrase_desc_2_" = "You can re-enter the passphrase here at any time to ensure access to your encrypted content from this device."; -"_e2e_error_incorrect_passphrase_" = "Wrong password?"; -"_e2e_error_passphrase_title" = "Error while decrypting."; "_scans_document_" = "Scan document"; "_scanned_images_" = "Scanned images"; "_scan_document_pdf_page_" = "Page"; From 96b55cc07219fb713544ca0f1fe881f823b85b7f Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Wed, 24 May 2023 18:13:44 +0530 Subject: [PATCH 28/42] nmc 2023 - E2e and onboarding Internet not available strings update --- .../en.lproj/Localizable.strings | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index a1fa22815e..e0a9dbde0a 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -891,6 +891,30 @@ "_e2e_goto_settings_for_enable_" = "This is an encrypted directory, go to \"Settings\" and enable end-to-end encryption"; "_e2e_error_" = "An internal end-to-end encryption error occurred"; "_e2e_in_upload_" = "Upload in progress, please wait for all files to be transferred"; +"_e2e_delete_folder_not_permitted_" = "Deletion of the directory marked as \"encrypted\" is not allowed"; +"_e2e_error_encode_metadata_" = "Serious internal error in encoding metadata"; +"_e2e_error_decode_metadata_" = "Serious internal error in decoding metadata"; +"_e2e_error_create_encrypted_" = "Could not create encrypted file"; +"_e2e_error_update_metadata_" = "Update metadata error"; +"_e2e_error_store_metadata_" = "Could not save metadata"; +"_e2e_error_send_metadata_" = "Could not send metadata"; +"_e2e_error_delete_metadata_" = "Could not delete metadata"; +"_e2e_error_get_metadata_" = "Could not fetch metadata"; +"_e2e_error_not_enabled_" = "Serious internal error. End-to-end encryption not enabled"; +"_e2e_error_record_not_found_" = "Serious internal error. Records not found"; +"_e2e_error_unlock_" = "Could not unlock folder"; +"_e2e_error_lock_" = "Could not lock folder"; +"_e2e_error_delete_mark_folder_" = "Decrypt marked folder"; +"_e2e_error_mark_folder_" = "Encrypt folder"; +"_e2e_error_directory_not_empty_" = "The directory is not empty"; +"_e2e_error_not_move_" = "It is not possible move files to encrypted directory"; +"_e2e_error_not_versionwriteable_" = "The E2EE version of the server is not compatible with this client"; +"_start_e2e_encryption_1_" = "To set up end-to-end encryption, they must first set up the PIN lock to prevent unauthorised people from accessing your key."; +"_start_e2e_encryption_2_" = "After starting the encryption, a randomly generated word sequence (passphrase) of 12 words is displayed. This remains in this app and can be displayed again. Nevertheless, we recommend that you write down the passphrase."; +"_start_e2e_encryption_3_" = "The passphrase is your personal password with which you can access encrypted data in your MagentaCLOUD or enable access to these files on other devices such as your PC."; +"_read_passphrase_description_" = "Here you can display the passphrase again and also copy it. You need the passphrase if you want to decrypt the data on another device with access to MagentaCLOUD, for example your PC or another smartphone or tablet."; +"_remove_passphrase_desc_1_" = "You can remove the passphrase on this device. This will not affect the encrypted content, but this device will no longer be able to decrypt your data."; +"_remove_passphrase_desc_2_" = "You can re-enter the passphrase here at any time to ensure access to your encrypted content from this device."; "_scans_document_" = "Scan document"; "_scanned_images_" = "Scanned images"; "_scan_document_pdf_page_" = "Page"; From d97fdeb900e4f6360884c44ff7bb7b83d0adc182 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Tue, 6 Jun 2023 22:57:35 +0530 Subject: [PATCH 29/42] nmc 2023 - sharing feature localisation strings update --- .../en.lproj/Localizable.strings | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index e0a9dbde0a..d534c8b04d 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -119,8 +119,7 @@ "_purchase_" = "Purchase"; "_account_not_exists_" = "The account %@ of %@ does not exist"; "_account_not_available_" = "The account %@ of %@ does not exist, please add it to be able to read the file %@"; -"_the_account_" = "The account"; -"_does_not_exist_" = "does not exist"; +"_account_not_exists_" = "The account %@ of %@ does not exist"; "_error_parameter_schema_" = "Wrong parameters, impossible to continue"; "_comments_" = "Comments"; "_sharing_" = "Sharing"; @@ -736,6 +735,7 @@ "_share_read_only_" = "View only"; "_share_reshare_allowed_" = "Resharing is allowed."; "_share_reshare_not_allowed_" = "Resharing is not allowed."; +"_shareLinksearch_placeholder_" = "Contact name or email address"; "_sharing_message_" = "You can create links or send shares by mail. If you invite MagentaCLOUD users, you have more opportunities for collaboration."; "_create_link_" = "Create Link"; "personal_share_by_mail" = "Personal share by mail"; @@ -771,6 +771,7 @@ "_share_note_recipient_" = "YOUR MESSAGE"; "_shareLinksearch_placeholder_" = "Contact name or email address"; "_shareLinksearch_placeholder_" = "Type a name and press Search"; +//"_shareLinksearch_placeholder_" = "Type a name and press Enter"; "_shareLinksearch_mail_placeholder_" = "Type a name or an email and press Enter"; "_new_comment_" = "New comment …"; "_edit_comment_" = "Edit comment"; @@ -793,12 +794,17 @@ "_share_delete_sharelink_" = "Delete link"; "_share_add_sharelink_" = "Add another link"; "_share_can_read_" = "Read"; -"_share_can_reshare_" = "Allow resharing"; -"_share_can_create_" = "Allow creating"; -"_share_can_change_" = "Allow editing"; -"_share_can_delete_" = "Allow deleting"; -"_share_can_download_" = "Allow download"; -"_share_unshare_" = "Unshare"; +"_share_can_reshare_" = "Share"; +"_share_can_create_" = "Create"; +"_share_can_change_" = "Edit"; +"_share_can_delete_" = "Delete"; +"_share_can_download_" = "Allow download and sync"; +"_share_unshare_" = "Delete share"; +//"_share_can_reshare_" = "Allow resharing"; +//"_share_can_create_" = "Allow creating"; +//"_share_can_change_" = "Allow editing"; +//"_share_can_delete_" = "Allow deleting"; +//"_share_unshare_" = "Unshare"; "_share_internal_link_" = "Internal link"; "_share_internal_link_des_" = "Only works for users with access to this file/folder."; "_share_reshare_disabled_" = "You are not allowed to reshare this file/folder."; From 07870fbe40bea0e2566d9d5bf4047993cb175b9c Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Wed, 7 Jun 2023 15:20:10 +0530 Subject: [PATCH 30/42] nmc 2023 - localisation update for share text field --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 1 - 1 file changed, 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index d534c8b04d..9343643ed9 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -735,7 +735,6 @@ "_share_read_only_" = "View only"; "_share_reshare_allowed_" = "Resharing is allowed."; "_share_reshare_not_allowed_" = "Resharing is not allowed."; -"_shareLinksearch_placeholder_" = "Contact name or email address"; "_sharing_message_" = "You can create links or send shares by mail. If you invite MagentaCLOUD users, you have more opportunities for collaboration."; "_create_link_" = "Create Link"; "personal_share_by_mail" = "Personal share by mail"; From 5909edda5c5280c4dc7d642fa995307473f2e676 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Fri, 9 Jun 2023 15:27:05 +0530 Subject: [PATCH 31/42] nmc 2023 - more tab localisation changes --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 9343643ed9..4db63febd5 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -329,7 +329,9 @@ "_logout_" = "Log out"; "_quota_space_unlimited_" = "Unlimited"; "_quota_space_unknown_" = "Unknown"; -"_quota_using_" = "You are using %@ of %@"; +"_quota_using_" = "%@ "; +"_quota_using_of_" = "of %@"; +"_quota_using_percentage_" = "Memory to %@ occupied"; "_acknowledgements_" = "Acknowledgements"; "_settings_" = "Settings"; "_passcode_" = "Password"; From c2f2b62e7c40c48fb7e7d376f726e89dc9ea5974 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Mon, 12 Jun 2023 12:49:53 +0530 Subject: [PATCH 32/42] nmc 2023 - image video upload localisation related changes --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 4db63febd5..2959d93b4a 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -100,7 +100,7 @@ "_experimental_" = "Experimental"; "_select_dir_media_tab_" = "Select as folder \"Media\""; "_error_creation_file_" = "Oops! Could not create the file"; -"_save_path_" = "Save path"; +"_save_path_" = "Storage path"; "_save_settings_" = "Save settings"; "_mode_filename_" = "Filename mode"; "_warning_owncloud_" = "You are connected to an ownCloud server. This is untested and unsupported, use at your own risk. To upgrade to Nextcloud, see https://nextcloud.com/migration."; From 5e2e6d5db02d205868edac727ae2e136d613eab7 Mon Sep 17 00:00:00 2001 From: Shweta Waikar Date: Fri, 23 Jun 2023 19:08:01 +0530 Subject: [PATCH 33/42] NMC 2023 "Details" string changed --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 2959d93b4a..23f1700fb0 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -123,7 +123,7 @@ "_error_parameter_schema_" = "Wrong parameters, impossible to continue"; "_comments_" = "Comments"; "_sharing_" = "Sharing"; -"_details_" = "Details"; +"_details_" = "Share"; "_sub_details_" = "Subscription Details"; "_subscriptions_" = "Subscriptions"; "_dark_mode_" = "Dark mode"; From eee08b894cea1c242106a5ec34c770df85dd3b21 Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Sat, 24 Jun 2023 18:08:38 +0530 Subject: [PATCH 34/42] NMC 2023 - share strings update --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 2 -- 1 file changed, 2 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 23f1700fb0..ec20aa34a2 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -778,10 +778,8 @@ "_edit_comment_" = "Edit comment"; "_delete_comment_" = "Delete comment"; "_share_allow_editing_" = "Allow editing"; -"_share_read_only_" = "View only"; "_share_editing_" = "Editing"; "_share_allow_upload_" = "Allow upload and editing"; -"_share_file_drop_" = "File drop (upload only)"; "_share_secure_file_drop_" = "Secure file drop (upload only)"; //"_share_hide_download_" = "Hide download"; "_share_hide_download_" = "Prevent download"; From 147356d9ee3725cb095c9800608f421c1241826e Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Tue, 11 Jul 2023 17:28:52 +0530 Subject: [PATCH 35/42] NMC 2023 - (nmc 2397) Strings update --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 2 ++ 1 file changed, 2 insertions(+) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index ec20aa34a2..b67d309879 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -920,6 +920,8 @@ "_read_passphrase_description_" = "Here you can display the passphrase again and also copy it. You need the passphrase if you want to decrypt the data on another device with access to MagentaCLOUD, for example your PC or another smartphone or tablet."; "_remove_passphrase_desc_1_" = "You can remove the passphrase on this device. This will not affect the encrypted content, but this device will no longer be able to decrypt your data."; "_remove_passphrase_desc_2_" = "You can re-enter the passphrase here at any time to ensure access to your encrypted content from this device."; +"_e2e_error_incorrect_passphrase_" = "Wrong password?"; +"_e2e_error_passphrase_title" = "Error while decrypting."; "_scans_document_" = "Scan document"; "_scanned_images_" = "Scanned images"; "_scan_document_pdf_page_" = "Page"; From b879d4e217bd92106a8796f5692d6f5a08aa31f5 Mon Sep 17 00:00:00 2001 From: TSI-amrutwaghmare <96108296+TSI-amrutwaghmare@users.noreply.github.com> Date: Tue, 26 Dec 2023 13:57:32 +0530 Subject: [PATCH 36/42] NMC 2023 - Localisation changes for auto upload description --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 1 - 1 file changed, 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index b67d309879..beda0ed616 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -778,7 +778,6 @@ "_edit_comment_" = "Edit comment"; "_delete_comment_" = "Delete comment"; "_share_allow_editing_" = "Allow editing"; -"_share_editing_" = "Editing"; "_share_allow_upload_" = "Allow upload and editing"; "_share_secure_file_drop_" = "Secure file drop (upload only)"; //"_share_hide_download_" = "Hide download"; From e72f4bd57aa3fa096a30244ca28e83ba5007f139 Mon Sep 17 00:00:00 2001 From: TSI-amrutwaghmare <96108296+TSI-amrutwaghmare@users.noreply.github.com> Date: Tue, 27 Feb 2024 10:48:28 +0530 Subject: [PATCH 37/42] NMC 2023 - update missing localised strings for german languages --- .../Supporting Files/en.lproj/Localizable.strings | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index beda0ed616..2e275de4ea 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -119,7 +119,8 @@ "_purchase_" = "Purchase"; "_account_not_exists_" = "The account %@ of %@ does not exist"; "_account_not_available_" = "The account %@ of %@ does not exist, please add it to be able to read the file %@"; -"_account_not_exists_" = "The account %@ of %@ does not exist"; +"_the_account_" = "The account"; +"_does_not_exist_" = "does not exist"; "_error_parameter_schema_" = "Wrong parameters, impossible to continue"; "_comments_" = "Comments"; "_sharing_" = "Sharing"; @@ -185,7 +186,6 @@ /* MARK: Files lock */ -"_lock_" = "Lock"; "_unlock_" = "Unlock"; "_lock_file_" = "Lock file"; "_unlock_file_" = "Unlock file"; @@ -231,7 +231,7 @@ "_source_code_" = "Get source code"; "_account_select_" = "Select the account"; "_account_select_to_add_" = "Select the account to add"; -"_host_insert_" = "Insert the hostname, for example:"; +"_host_insert_" = "Insert the host name, for example:"; "_certificate_not_found_" = "File %@ in documents directory not found."; "_copy_failed_" = "Copy failed"; "_certificate_installed_" = "Certificate installed"; @@ -687,7 +687,6 @@ "_media_viewimage_show_" = "Show only images"; "_media_viewvideo_show_" = "Show only video"; "_media_show_all_" = "Show both"; -"_media_view_options_" = "View options"; "_media_by_created_date_" = "Sort by created date"; "_media_by_upload_date_" = "Sort by upload date"; "_media_by_modified_date_" = "Sort by modified date"; @@ -798,11 +797,6 @@ "_share_can_delete_" = "Delete"; "_share_can_download_" = "Allow download and sync"; "_share_unshare_" = "Delete share"; -//"_share_can_reshare_" = "Allow resharing"; -//"_share_can_create_" = "Allow creating"; -//"_share_can_change_" = "Allow editing"; -//"_share_can_delete_" = "Allow deleting"; -//"_share_unshare_" = "Unshare"; "_share_internal_link_" = "Internal link"; "_share_internal_link_des_" = "Only works for users with access to this file/folder."; "_share_reshare_disabled_" = "You are not allowed to reshare this file/folder."; From d9232228cb0e1412d873469cdf00afabd539402a Mon Sep 17 00:00:00 2001 From: Amrut Waghmare Date: Mon, 26 Aug 2024 16:43:24 +0530 Subject: [PATCH 38/42] NMC 2023 german translation update --- .../xcshareddata/xcschemes/File Provider Extension UI.xcscheme | 1 + .../xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme | 1 + 2 files changed, 2 insertions(+) diff --git a/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme b/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme index 6e1cc593fa..fd16f58a63 100644 --- a/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme +++ b/Nextcloud.xcodeproj/xcshareddata/xcschemes/File Provider Extension UI.xcscheme @@ -73,6 +73,7 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES" + askForAppToLaunch = "Yes" launchAutomaticallySubstyle = "2"> diff --git a/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme b/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme index d912dd669b..485c4c3f00 100644 --- a/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme +++ b/Nextcloud.xcodeproj/xcshareddata/xcschemes/WidgetDashboardIntentHandler.xcscheme @@ -73,6 +73,7 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES" + askForAppToLaunch = "Yes" launchAutomaticallySubstyle = "2"> From 108fb96097fd8112fa718872dcdbcd03bf29903d Mon Sep 17 00:00:00 2001 From: harshada-15-tsys Date: Mon, 7 Apr 2025 15:08:51 +0530 Subject: [PATCH 39/42] NMC 2023 - update missing localised strings for english and german languages --- iOSClient/Supporting Files/en.lproj/Localizable.strings | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 2e275de4ea..9f8cb1884c 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -391,7 +391,8 @@ "_want_leave_share_" = "You will leave the following shares: "; "_delete_account_" = "Remove account"; "_delete_active_account_" = "Remove active account"; -//"_want_delete_" = "Do you really want to delete?"; +"_want_delete_" = "Do you really want to delete?"; +"_want_leave_share_" = "You will leave the following shares: "; "_no_delete_" = "No, do not delete"; "_yes_delete_" = "Yes, delete"; "_remove_cache_" = "Deleting cache, please wait …"; From d2bbdb7643b523a475a72091034ef9ca91e07a63 Mon Sep 17 00:00:00 2001 From: harshada-15-tsys Date: Wed, 16 Apr 2025 17:39:10 +0530 Subject: [PATCH 40/42] NMC 2023 - Updated missing localised strings for English and DE language --- .../en.lproj/Localizable.strings | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index 9f8cb1884c..c1864bc467 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -56,7 +56,7 @@ "_select_all_" = "Select all"; "_upload_" = "Upload"; "_home_" = "Files"; -//"_files_" = "Files"; +"_files_" = "Files"; "_home_dir_" = "Home"; "_file_to_upload_" = "File to upload"; "_destination_" = "Destination"; @@ -205,7 +205,6 @@ "_automatic_Download_Image_" = "Use images in full resolution"; "_automatic_Download_Image_footer_" = "When viewing images always download, if not available locally, the images in full resolution"; "_size_" = "Size"; -//"_set_user_status_" = "Online status"; "_set_user_status_message_" = "Status message"; "_file_size_" = "Exported file size"; "_dimension_" = "Dimension"; @@ -320,7 +319,7 @@ "_...loading..._" = "Loading …"; "_download_plist_" = " "; "_no_reuploadfile_" = "Could not find nor resend file. Delete the upload and reload the file to upload it."; -//"_file_already_exists_" = "Unable to complete the operation, a file with the same name exists."; +"_file_already_exists_" = "Unable to complete the operation, a file with the same name exists."; "_read_file_error_" = "Could not read the file"; "_write_file_error_" = "Could not write the file"; "_files_lock_error_" = "There was an error changing the lock of this file."; @@ -364,6 +363,7 @@ "_clear_cache_" = "Clear cache"; "_clear_cache_footer_" = "Clear downloaded and offline files from the app"; "_exit_footer_" = "Remove all accounts and local data from the app."; +"_exit_footer_" = "Remove all accounts and local data from the app."; "_exit_" = "Logout"; "_funct_not_enabled_" = "Functionality not enabled"; "_passcode_activate_" = "Password lock on"; @@ -656,6 +656,8 @@ //"directory" = "FOLDERS"; "compress" = "COMPRESS"; "directory" = "FOLDERS"; +"compress" = "COMPRESS"; +"directory" = "FOLDERS"; "document" = "DOCUMENTS"; "image" = "IMAGES"; "template" = "TEMPLATES"; @@ -704,8 +706,8 @@ // MARK: Share -//"_share_link_" = "Share link"; "_share_link_" = "Link"; +//"_share_link_" = "Share link"; "_share_link_button_" = "Send link to …"; "_share_link_name_" = "Link name"; "_password_" = "Password"; @@ -730,10 +732,9 @@ "_enforce_password_protection_" = "Enforce password protection"; "_password_obligatory_" = "Enforce password protection enabled, password obligatory"; "_shared_with_you_by_" = "Shared with you by"; -//"_shareLinksearch_placeholder_" = "Name, email";//, or Federated Cloud ID …"; -//"_new_comment_" = "New comment …"; -//"_edit_comment_" = "Edit comment"; -//"_delete_comment_" = "Delete comment"; +"_new_comment_" = "New comment …"; +"_edit_comment_" = "Edit comment"; +"_delete_comment_" = "Delete comment"; "_share_read_only_" = "View only"; "_share_reshare_allowed_" = "Resharing is allowed."; "_share_reshare_not_allowed_" = "Resharing is not allowed."; @@ -1029,13 +1030,13 @@ "_err_permission_microphone_" = "Please allow Microphone usage from Settings"; "_err_permission_photolibrary_" = "Please allow Photos from Settings"; "_err_permission_locationmanager_" = "Please allow Location - Always from Settings"; -//"_ssl_certificate_untrusted_" = "The certificate for this server is invalid."; -//"_ssl_certificate_changed_" = "The certificate for this server seems to have changed."; -//"_file_already_exists_" = "Could not complete the operation, a file with the same name exists."; -//"_error_files_upload_" = "Error uploading files."; -//"_internal_generic_error_" = "internal error."; -//"_err_permission_microphone_" = "Please allow Microphone usage from Settings."; -//"_err_permission_photolibrary_" = "Please allow Photos from Settings."; +"_ssl_certificate_untrusted_" = "The certificate for this server is invalid."; +"_ssl_certificate_changed_" = "The certificate for this server seems to have changed."; +"_file_already_exists_" = "Could not complete the operation, a file with the same name exists."; +"_error_files_upload_" = "Error uploading files."; +"_internal_generic_error_" = "internal error."; +"_err_permission_microphone_" = "Please allow Microphone usage from Settings."; +"_err_permission_photolibrary_" = "Please allow Photos from Settings."; "_qrcode_not_authorized_" = "This app is not authorized to use the Back Camera."; "_qrcode_not_supported_" = "QR code not supported by the current device."; "_create_voice_memo_" = "Create voice memo"; @@ -1122,7 +1123,7 @@ "_no_items_" = "No items"; "_check_back_later_" = "Check back later"; "_exporting_video_" = "Exporting video … Tap to cancel."; -//"_keep_running_" = "Keep the app running for a better user experience."; +"_keep_running_" = "Keep the app running for a better user experience."; "_apps_nextcloud_detect_" = "Detected %@ apps"; "_add_existing_account_" = "Other %@ Apps has been detected, do you want to add an existing account?"; "_status_in_progress_" = "Status reading in progress …"; From 9e004324654e8e0c7a29674049441f5177ba0436 Mon Sep 17 00:00:00 2001 From: harshada-15-tsys Date: Tue, 30 Sep 2025 16:44:20 +0530 Subject: [PATCH 41/42] NMC-2023 - Localizations for EN and DE updated for New sharing design and as per 9.6.6 version --- .../en.lproj/Localizable.strings | 46 +++++++------------ 1 file changed, 16 insertions(+), 30 deletions(-) diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index c1864bc467..e2ab7f05d2 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -56,7 +56,7 @@ "_select_all_" = "Select all"; "_upload_" = "Upload"; "_home_" = "Files"; -"_files_" = "Files"; +//"_files_" = "Files"; "_home_dir_" = "Home"; "_file_to_upload_" = "File to upload"; "_destination_" = "Destination"; @@ -319,7 +319,7 @@ "_...loading..._" = "Loading …"; "_download_plist_" = " "; "_no_reuploadfile_" = "Could not find nor resend file. Delete the upload and reload the file to upload it."; -"_file_already_exists_" = "Unable to complete the operation, a file with the same name exists."; +//"_file_already_exists_" = "Unable to complete the operation, a file with the same name exists."; "_read_file_error_" = "Could not read the file"; "_write_file_error_" = "Could not write the file"; "_files_lock_error_" = "There was an error changing the lock of this file."; @@ -363,7 +363,6 @@ "_clear_cache_" = "Clear cache"; "_clear_cache_footer_" = "Clear downloaded and offline files from the app"; "_exit_footer_" = "Remove all accounts and local data from the app."; -"_exit_footer_" = "Remove all accounts and local data from the app."; "_exit_" = "Logout"; "_funct_not_enabled_" = "Functionality not enabled"; "_passcode_activate_" = "Password lock on"; @@ -383,12 +382,6 @@ "_manage_account_" = "Manage account"; "_change_password_" = "Change password"; "_add_account_" = "Add account"; -//"_want_delete_" = "You will delete the following: "; -//"_want_leave_share_" = "You will leave the following shares: "; -"_delete_account_" = "Remove account"; -"_delete_active_account_" = "Remove active account"; -"_want_delete_" = "Do you really want to delete?"; -"_want_leave_share_" = "You will leave the following shares: "; "_delete_account_" = "Remove account"; "_delete_active_account_" = "Remove active account"; "_want_delete_" = "Do you really want to delete?"; @@ -656,8 +649,6 @@ //"directory" = "FOLDERS"; "compress" = "COMPRESS"; "directory" = "FOLDERS"; -"compress" = "COMPRESS"; -"directory" = "FOLDERS"; "document" = "DOCUMENTS"; "image" = "IMAGES"; "template" = "TEMPLATES"; @@ -765,16 +756,11 @@ //"_share_read_only_" = "Read only"; "_share_read_only_" = "View only"; "_share_remaining_download_" = "Downloads:"; -//"_share_read_only_" = "Read only"; "_share_editing_" = "Can edit"; "_share_file_drop_" = "Filedrop only"; //"_share_file_drop_" = "File request"; "_share_hide_download_" = "Prevent download"; "_share_note_recipient_" = "YOUR MESSAGE"; -"_shareLinksearch_placeholder_" = "Contact name or email address"; -"_shareLinksearch_placeholder_" = "Type a name and press Search"; -//"_shareLinksearch_placeholder_" = "Type a name and press Enter"; -"_shareLinksearch_mail_placeholder_" = "Type a name or an email and press Enter"; "_new_comment_" = "New comment …"; "_edit_comment_" = "Edit comment"; "_delete_comment_" = "Delete comment"; @@ -793,12 +779,12 @@ "_share_delete_sharelink_" = "Delete link"; "_share_add_sharelink_" = "Add another link"; "_share_can_read_" = "Read"; -"_share_can_reshare_" = "Share"; -"_share_can_create_" = "Create"; -"_share_can_change_" = "Edit"; -"_share_can_delete_" = "Delete"; -"_share_can_download_" = "Allow download and sync"; -"_share_unshare_" = "Delete share"; +"_share_can_reshare_" = "Allow resharing"; +"_share_can_create_" = "Allow creating"; +"_share_can_change_" = "Allow editing"; +"_share_can_delete_" = "Allow deleting"; +"_share_can_download_" = "Allow download"; +"_share_unshare_" = "Unshare"; "_share_internal_link_" = "Internal link"; "_share_internal_link_des_" = "Only works for users with access to this file/folder."; "_share_reshare_disabled_" = "You are not allowed to reshare this file/folder."; @@ -1030,13 +1016,13 @@ "_err_permission_microphone_" = "Please allow Microphone usage from Settings"; "_err_permission_photolibrary_" = "Please allow Photos from Settings"; "_err_permission_locationmanager_" = "Please allow Location - Always from Settings"; -"_ssl_certificate_untrusted_" = "The certificate for this server is invalid."; -"_ssl_certificate_changed_" = "The certificate for this server seems to have changed."; -"_file_already_exists_" = "Could not complete the operation, a file with the same name exists."; -"_error_files_upload_" = "Error uploading files."; -"_internal_generic_error_" = "internal error."; -"_err_permission_microphone_" = "Please allow Microphone usage from Settings."; -"_err_permission_photolibrary_" = "Please allow Photos from Settings."; +//"_ssl_certificate_untrusted_" = "The certificate for this server is invalid."; +//"_ssl_certificate_changed_" = "The certificate for this server seems to have changed."; +//"_file_already_exists_" = "Could not complete the operation, a file with the same name exists."; +//"_error_files_upload_" = "Error uploading files."; +//"_internal_generic_error_" = "internal error."; +//"_err_permission_microphone_" = "Please allow Microphone usage from Settings."; +//"_err_permission_photolibrary_" = "Please allow Photos from Settings."; "_qrcode_not_authorized_" = "This app is not authorized to use the Back Camera."; "_qrcode_not_supported_" = "QR code not supported by the current device."; "_create_voice_memo_" = "Create voice memo"; @@ -1123,7 +1109,7 @@ "_no_items_" = "No items"; "_check_back_later_" = "Check back later"; "_exporting_video_" = "Exporting video … Tap to cancel."; -"_keep_running_" = "Keep the app running for a better user experience."; +//"_keep_running_" = "Keep the app running for a better user experience."; "_apps_nextcloud_detect_" = "Detected %@ apps"; "_add_existing_account_" = "Other %@ Apps has been detected, do you want to add an existing account?"; "_status_in_progress_" = "Status reading in progress …"; From d4d5b2f842829c497491d19274b836adae82df41 Mon Sep 17 00:00:00 2001 From: harshada-15-tsys Date: Wed, 17 Dec 2025 18:18:18 +0530 Subject: [PATCH 42/42] NMC 2023 - Localisation changes --- .../FileProviderData.swift | 4 +- .../Data/NCManageDatabase+LocalFile.swift | 61 +- .../Data/NCManageDatabase+Metadata.swift | 66 ++ .../NCBackgroundLocationUploadManager.swift | 32 +- iOSClient/NCGlobal.swift | 59 +- .../E2EE/NCNetworkingE2EEUpload.swift | 2 +- iOSClient/Networking/NCConfigServer.swift | 25 +- iOSClient/Networking/NCDownloadAction.swift | 740 ++++++++++++++++++ .../Networking/NCNetworking+Download.swift | 158 +++- .../Networking/NCNetworking+LivePhoto.swift | 25 +- .../NCNetworking+Synchronization.swift | 93 +++ iOSClient/Networking/NCNetworking+Task.swift | 26 +- .../Networking/NCNetworking+Upload.swift | 21 +- .../Networking/NCNetworking+WebDAV.swift | 69 +- iOSClient/Networking/NCNetworking.swift | 34 +- .../Networking/NCNetworkingProcess.swift | 1 - iOSClient/Networking/NCService.swift | 25 +- .../de.lproj/InfoPlist.strings | Bin 2446 -> 3166 bytes .../en.lproj/InfoPlist.strings | 3 +- .../en.lproj/Localizable.strings | 148 +++- 20 files changed, 1444 insertions(+), 148 deletions(-) create mode 100644 iOSClient/Networking/NCDownloadAction.swift create mode 100644 iOSClient/Networking/NCNetworking+Synchronization.swift diff --git a/File Provider Extension/FileProviderData.swift b/File Provider Extension/FileProviderData.swift index 9c36bb5bf0..145b97da22 100644 --- a/File Provider Extension/FileProviderData.swift +++ b/File Provider Extension/FileProviderData.swift @@ -32,7 +32,7 @@ class FileProviderData: NSObject { case workingSet } - // MARK: - + // MARK: - @discardableResult func setupAccount(domain: NSFileProviderDomain? = nil, @@ -175,7 +175,7 @@ class FileProviderData: NSObject { if error == .success { if let metadata = await NCManageDatabase.shared.getMetadataFromOcIdAsync(ocId) { - await NCManageDatabase.shared.addLocalFilesAsync(metadatas: [metadata]) + await NCManageDatabase.shared.addLocalFileAsync(metadata: metadata) } } diff --git a/iOSClient/Data/NCManageDatabase+LocalFile.swift b/iOSClient/Data/NCManageDatabase+LocalFile.swift index a4308b0ec3..5d1a5e2188 100644 --- a/iOSClient/Data/NCManageDatabase+LocalFile.swift +++ b/iOSClient/Data/NCManageDatabase+LocalFile.swift @@ -29,50 +29,35 @@ extension NCManageDatabase { // MARK: - Realm Write - /// Adds or updates multiple local file entries corresponding to the given metadata array. - /// Uses async Realm read + single write transaction. Assumes `tableLocalFile` has a primary key. /// - Parameters: - /// - metadatas: Array of `tableMetadata` to map into `tableLocalFile`. - /// - offline: Optional override for the `offline` flag applied to all items. - func addLocalFilesAsync(metadatas: [tableMetadata], offline: Bool? = nil) async { - guard !metadatas.isEmpty else { - return - } - - // Extract ocIds for efficient lookup - let ocIds = metadatas.compactMap { $0.ocId } - guard !ocIds.isEmpty else { - return + /// - metadata: The `tableMetadata` containing file details. + /// - offline: Optional flag to mark the file as available offline. + /// - Returns: Nothing. Realm write is performed asynchronously. + func addLocalFileAsync(metadata: tableMetadata, offline: Bool? = nil) async { + // Read (non-blocking): safely detach from Realm thread + let existing: tableLocalFile? = performRealmRead { realm in + realm.objects(tableLocalFile.self) + .filter(NSPredicate(format: "ocId == %@", metadata.ocId)) + .first + .map { tableLocalFile(value: $0) } } - // Preload existing entries to avoid creating duplicates - let existingMap: [String: tableLocalFile] = await core.performRealmReadAsync { realm in - let existing = realm.objects(tableLocalFile.self) - .filter(NSPredicate(format: "ocId IN %@", ocIds)) - return Dictionary(uniqueKeysWithValues: - existing.map { ($0.ocId, tableLocalFile(value: $0)) } // detached copy via value init - ) - } ?? [:] + await performRealmWriteAsync { realm in + let addObject = existing ?? tableLocalFile() - await core.performRealmWriteAsync { realm in - for metadata in metadatas { - // Reuse existing object or create a new one - let local = existingMap[metadata.ocId] ?? tableLocalFile() - - local.account = metadata.account - local.etag = metadata.etag - local.exifDate = NSDate() - local.exifLatitude = "-1" - local.exifLongitude = "-1" - local.ocId = metadata.ocId - local.fileName = metadata.fileName - - if let offline { - local.offline = offline - } + addObject.account = metadata.account + addObject.etag = metadata.etag + addObject.exifDate = NSDate() + addObject.exifLatitude = "-1" + addObject.exifLongitude = "-1" + addObject.ocId = metadata.ocId + addObject.fileName = metadata.fileName - realm.add(local, update: .all) + if let offline { + addObject.offline = offline } + + realm.add(addObject, update: .all) } } diff --git a/iOSClient/Data/NCManageDatabase+Metadata.swift b/iOSClient/Data/NCManageDatabase+Metadata.swift index f03ef6cf8d..448c2a8143 100644 --- a/iOSClient/Data/NCManageDatabase+Metadata.swift +++ b/iOSClient/Data/NCManageDatabase+Metadata.swift @@ -139,10 +139,37 @@ extension tableMetadata { (fileNameView as NSString).deletingPathExtension } + var isRenameable: Bool { + if !NCMetadataPermissions.canRename(self) { + return false + } + if lock { + return false + } + if !isDirectoryE2EE && e2eEncrypted { + return false + } + return true + } + + var isPrintable: Bool { + if isDocumentViewableOnly { + return false + } + if ["application/pdf", "com.adobe.pdf"].contains(contentType) || contentType.hasPrefix("text/") || classFile == NKTypeClassFile.image.rawValue { + return true + } + return false + } + var isSavebleInCameraRoll: Bool { return (classFile == NKTypeClassFile.image.rawValue && contentType != "image/svg+xml") || classFile == NKTypeClassFile.video.rawValue } + var isDocumentViewableOnly: Bool { + sharePermissionsCollaborationServices == NCPermissions().permissionReadShare && classFile == NKTypeClassFile.document.rawValue + } + var isAudioOrVideo: Bool { return classFile == NKTypeClassFile.audio.rawValue || classFile == NKTypeClassFile.video.rawValue } @@ -333,6 +360,17 @@ extension tableMetadata { return !lock || (lockOwner == user && lockOwnerType == 0) } + // Return if is sharable + func isSharable() -> Bool { + guard let capabilities = NCNetworking.shared.capabilities[account] else { + return false + } + if !capabilities.fileSharingApiEnabled || (capabilities.e2EEEnabled && isDirectoryE2EE), !e2eEncrypted { + return false + } + return !e2eEncrypted + } + /// Returns a detached (unmanaged) deep copy of the current `tableMetadata` object. /// /// - Note: The Realm `List` properties containing primitive types (e.g., `tags`, `shareType`) are copied automatically @@ -875,6 +913,34 @@ extension NCManageDatabase { .map { $0.detachedCopy() } } ?? [] } + + func getMediaMetadatas(predicate: NSPredicate, sorted: String? = nil, ascending: Bool = false) -> ThreadSafeArray? { + + do { + let realm = try Realm() + if let sorted { + var results: [tableMetadata] = [] + switch sorted {//NCPreferences().mediaSortDate { + case "date": + results = realm.objects(tableMetadata.self).filter(predicate).sorted { ($0.date as Date) > ($1.date as Date) } + case "creationDate": + results = realm.objects(tableMetadata.self).filter(predicate).sorted { ($0.creationDate as Date) > ($1.creationDate as Date) } + case "uploadDate": + results = realm.objects(tableMetadata.self).filter(predicate).sorted { ($0.uploadDate as Date) > ($1.uploadDate as Date) } + default: + let results = realm.objects(tableMetadata.self).filter(predicate) + return ThreadSafeArray(results.map { tableMetadata.init(value: $0) }) + } + return ThreadSafeArray(results.map { tableMetadata.init(value: $0) }) + } else { + let results = realm.objects(tableMetadata.self).filter(predicate) + return ThreadSafeArray(results.map { tableMetadata.init(value: $0) }) + } + } catch let error as NSError { +// NextcloudKit.shared.nkCommonInstance.writeLog("Could not access database: \(error)") + } + return nil + } func getMetadatas(predicate: NSPredicate, sortedByKeyPath: String, diff --git a/iOSClient/NCBackgroundLocationUploadManager.swift b/iOSClient/NCBackgroundLocationUploadManager.swift index 3bea5f4204..5fd5caf392 100644 --- a/iOSClient/NCBackgroundLocationUploadManager.swift +++ b/iOSClient/NCBackgroundLocationUploadManager.swift @@ -1,6 +1,10 @@ -// SPDX-FileCopyrightText: Nextcloud GmbH -// SPDX-FileCopyrightText: 2025 Marino Faggiana -// SPDX-License-Identifier: GPL-3.0-or-later +// +// NCBackgroundLocationUploadManager.swift +// Nextcloud +// +// Created by Marino Faggiana on 06/06/25. +// Copyright © 2025 Marino Faggiana. All rights reserved. +// import CoreLocation import NextcloudKit @@ -102,23 +106,21 @@ class NCBackgroundLocationUploadManager: NSObject, CLLocationManagerDelegate { } func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { - // Must work only in background guard isAppInBackground else { return } // Open Realm - guard NCManageDatabase.shared.openRealmBackground() else { - nkLog(tag: self.global.logTagLocation, emoji: .error, message: "Failed to open Realm in Location Manager") - return - } - - let appDelegate = (UIApplication.shared.delegate as? AppDelegate)! - let location = locations.last - nkLog(tag: self.global.logTagLocation, emoji: .start, message: "Triggered by location change: \(location?.coordinate.latitude ?? 0), \(location?.coordinate.longitude ?? 0)") - - Task.detached { - await appDelegate.backgroundSync() + if database.openRealmBackground() { + let appDelegate = (UIApplication.shared.delegate as? AppDelegate)! + let location = locations.last + nkLog(tag: self.global.logTagLocation, emoji: .start, message: "Triggered by location change: \(location?.coordinate.latitude ?? 0), \(location?.coordinate.longitude ?? 0)") + + Task.detached { + if let tblAccount = await self.database.getActiveTableAccountAsync() { + await appDelegate.backgroundSync(tblAccount: tblAccount) + } + } } } diff --git a/iOSClient/NCGlobal.swift b/iOSClient/NCGlobal.swift index 51df24b68c..b445f506ab 100644 --- a/iOSClient/NCGlobal.swift +++ b/iOSClient/NCGlobal.swift @@ -60,13 +60,14 @@ final class NCGlobal: Sendable { // Intro selector // let introLogin: Int = 0 + let introSignup: Int = 1 let introSignUpWithProvider: Int = 1 // Avatar // let avatarSize: Int = 128 * Int(UIScreen.main.scale) let avatarSizeRounded: Int = 128 - + // Preview size // let size1024: CGSize = CGSize(width: 1024, height: 1024) @@ -134,7 +135,35 @@ final class NCGlobal: Sendable { // let buttonMoreMore = "more" let buttonMoreLock = "moreLock" - + let buttonMoreStop = "stop" + + // Standard height sections header/footer + // + let heightButtonsView: CGFloat = 50 + let heightHeaderTransfer: CGFloat = 50 + let heightSection: CGFloat = 30 + let heightFooter: CGFloat = 1 + let heightFooterButton: CGFloat = 30 + let endHeightFooter: CGFloat = 85 + + + // Text - OnlyOffice - Collabora - QuickLook + // + let editorText = "text" + let editorOnlyoffice = "onlyoffice" + let editorCollabora = "collabora" + let editorQuickLook = "quicklook" + + let onlyofficeDocx = "onlyoffice_docx" + let onlyofficeXlsx = "onlyoffice_xlsx" + let onlyofficePptx = "onlyoffice_pptx" + + // Template + // + let templateDocument = "document" + let templateSpreadsheet = "spreadsheet" + let templatePresentation = "presentation" + // Rich Workspace // let fileNameRichWorkspace = "Readme.md" @@ -217,6 +246,8 @@ final class NCGlobal: Sendable { let selectorSaveAsScan = "saveAsScan" let selectorOpenDetail = "openDetail" let selectorSynchronizationOffline = "synchronizationOffline" + let selectorPrint = "print" + let selectorDeleteFile = "deleteFile" // Metadata : Status // @@ -247,7 +278,6 @@ final class NCGlobal: Sendable { let metadataStatusForScreenAwake = [-1, -2, 1, 2] let metadataStatusHideInView = [1, 2, 3, 11] let metadataStatusWaitWebDav = [10, 11, 12, 13, 14, 15] - let metadataStatusTransfers = [-2, -3, 2, 3, 10, 11, 12, 13, 14, 15] let metadatasStatusInWaiting = [-1, 1, 10, 11, 12, 13, 14, 15] let metadatasStatusInProgress = [-2, 2] @@ -264,6 +294,8 @@ final class NCGlobal: Sendable { let notificationCenterChangeTheming = "changeTheming" // userInfo: account let notificationCenterRichdocumentGrabFocus = "richdocumentGrabFocus" let notificationCenterReloadDataNCShare = "reloadDataNCShare" + let notificationCenterDidCreateShareLink = "didCreateShareLink" + let notificationCenterCloseRichWorkspaceWebView = "closeRichWorkspaceWebView" let notificationCenterReloadAvatar = "reloadAvatar" let notificationCenterClearCache = "clearCache" @@ -271,6 +303,8 @@ final class NCGlobal: Sendable { let notificationCenterServerDidUpdate = "serverDidUpdate" // userInfo: account let notificationCenterNetworkReachability = "networkReachability" + let notificationCenterRenameFile = "renameFile" // userInfo: serverUrl, account, error + let notificationCenterMenuSearchTextPDF = "menuSearchTextPDF" let notificationCenterMenuGotToPageInPDF = "menuGotToPageInPDF" @@ -285,6 +319,8 @@ final class NCGlobal: Sendable { let notificationCenterPlayerIsPlaying = "playerIsPlaying" let notificationCenterPlayerStoppedPlaying = "playerStoppedPlaying" + let notificationCenterFavoriteStatusChanged = "favoriteStatusChanged" + // Networking Status let networkingStatusCreateFolder = "statusCreateFolder" let networkingStatusDelete = "statusDelete" @@ -299,8 +335,9 @@ final class NCGlobal: Sendable { let networkingStatusUploading = "statusUploading" let networkingStatusUploaded = "statusUploaded" - let networkingStatusReloadAvatar = "statusReloadAvatar" + let networkingStatusReloadAvatar = "statusReloadAvatar" + let notificationCenterUpdateIcons = "updateIcons" // TIP // @@ -383,6 +420,20 @@ final class NCGlobal: Sendable { // let taskDescriptionRetrievesProperties = "retrievesProperties" let taskDescriptionSynchronization = "synchronization" + let taskDescriptionDeleteFileOrFolder = "deleteFileOrFolder" + + // MoEngage App Version + // + let moEngageAppVersion = 854 + + // Filename Mask and Type + // + let keyFileNameMask = "fileNameMask" + let keyFileNameType = "fileNameType" + let keyFileNameAutoUploadMask = "fileNameAutoUploadMask" + let keyFileNameAutoUploadType = "fileNameAutoUploadType" + let keyFileNameOriginal = "fileNameOriginal" + let keyFileNameOriginalAutoUpload = "fileNameOriginalAutoUpload" // LOG TAG // diff --git a/iOSClient/Networking/E2EE/NCNetworkingE2EEUpload.swift b/iOSClient/Networking/E2EE/NCNetworkingE2EEUpload.swift index fc10b27b2a..d16f3e9f16 100644 --- a/iOSClient/Networking/E2EE/NCNetworkingE2EEUpload.swift +++ b/iOSClient/Networking/E2EE/NCNetworkingE2EEUpload.swift @@ -196,7 +196,7 @@ class NCNetworkingE2EEUpload: NSObject { metadata.status = NCGlobal.shared.metadataStatusNormal await self.database.addMetadataAsync(metadata) - await self.database.addLocalFilesAsync(metadatas: [metadata]) + await self.database.addLocalFileAsync(metadata: metadata) utility.createImageFileFrom(metadata: metadata) await NCNetworking.shared.transferDispatcher.notifyAllDelegates { delegate in diff --git a/iOSClient/Networking/NCConfigServer.swift b/iOSClient/Networking/NCConfigServer.swift index 2214a85b0a..0d466c370c 100644 --- a/iOSClient/Networking/NCConfigServer.swift +++ b/iOSClient/Networking/NCConfigServer.swift @@ -1,6 +1,25 @@ -// SPDX-FileCopyrightText: Nextcloud GmbH -// SPDX-FileCopyrightText: 2022 Marino Faggiana -// SPDX-License-Identifier: GPL-3.0-or-later +// +// NCConfigServer.swift +// Nextcloud +// +// Created by Marino Faggiana on 05/12/22. +// Copyright © 2022 Marino Faggiana. All rights reserved. +// +// Author Marino Faggiana +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// import Foundation import UIKit diff --git a/iOSClient/Networking/NCDownloadAction.swift b/iOSClient/Networking/NCDownloadAction.swift new file mode 100644 index 0000000000..982aca2a66 --- /dev/null +++ b/iOSClient/Networking/NCDownloadAction.swift @@ -0,0 +1,740 @@ +// SPDX-FileCopyrightText: Nextcloud GmbH +// SPDX-FileCopyrightText: 2020 Marino Faggiana +// SPDX-License-Identifier: GPL-3.0-or-later + +import UIKit +import NextcloudKit +import Queuer +import SVGKit +import Photos +import Alamofire + +class NCDownloadAction: NSObject, UIDocumentInteractionControllerDelegate, NCSelectDelegate, NCTransferDelegate { + static let shared = NCDownloadAction() + + var viewerQuickLook: NCViewerQuickLook? + var documentController: UIDocumentInteractionController? + let utilityFileSystem = NCUtilityFileSystem() + let utility = NCUtility() + let global = NCGlobal.shared + var sceneIdentifier: String = "" + + override private init() { } + + func setup(sceneIdentifier: String) { + self.sceneIdentifier = sceneIdentifier + + Task { + await NCNetworking.shared.transferDispatcher.addDelegate(self) + } + } + + // MARK: - Download + + func transferChange(status: String, metadata: tableMetadata, error: NKError) { + DispatchQueue.main.async { + switch status { + /// DOWNLOADED + case self.global.networkingStatusDownloaded: + self.downloadedFile(metadata: metadata, error: error) + default: + break + } + } + } + + func downloadedFile(metadata: tableMetadata, error: NKError) { + guard error == .success else { + return + } + /// Select UIWindowScene active in serverUrl + var controller: NCMainTabBarController? + let windowScenes = UIApplication.shared.connectedScenes.compactMap { $0 as? UIWindowScene } + if windowScenes.count == 1 { + controller = UIApplication.shared.firstWindow?.rootViewController as? NCMainTabBarController + } else if let sceneIdentifier = metadata.sceneIdentifier, + let tabBarController = SceneManager.shared.getController(sceneIdentifier: sceneIdentifier) { + controller = tabBarController + } else { + for windowScene in windowScenes { + if let rootViewController = windowScene.keyWindow?.rootViewController as? NCMainTabBarController, + rootViewController.currentServerUrl() == metadata.serverUrl { + controller = rootViewController + break + } + } + } + guard let controller else { return } + + switch metadata.sessionSelector { + case NCGlobal.shared.selectorLoadFileQuickLook: + + let fileNamePath = self.utilityFileSystem.getDirectoryProviderStorageOcId(metadata.ocId, + fileName: metadata.fileNameView, + userId: metadata.userId, + urlBase: metadata.urlBase) + let fileNameTemp = NSTemporaryDirectory() + metadata.fileNameView + let viewerQuickLook = NCViewerQuickLook(with: URL(fileURLWithPath: fileNameTemp), isEditingEnabled: true, metadata: metadata) + if let image = UIImage(contentsOfFile: fileNamePath) { + if let data = image.jpegData(compressionQuality: 1) { + do { + try data.write(to: URL(fileURLWithPath: fileNameTemp)) + } catch { + return + } + } + let navigationController = UINavigationController(rootViewController: viewerQuickLook) + navigationController.modalPresentationStyle = .fullScreen + controller.present(navigationController, animated: true) + } else { + self.utilityFileSystem.copyFile(atPath: fileNamePath, toPath: fileNameTemp) + controller.present(viewerQuickLook, animated: true) + } + + case NCGlobal.shared.selectorLoadFileView: + guard !isAppInBackground + else { + return + } + + if metadata.contentType.contains("opendocument") && !self.utility.isTypeFileRichDocument(metadata) { + self.openActivityViewController(selectedMetadata: [metadata], controller: controller, sender: nil) + } else if metadata.classFile == NKTypeClassFile.compress.rawValue || metadata.classFile == NKTypeClassFile.unknow.rawValue { + self.openActivityViewController(selectedMetadata: [metadata], controller: controller, sender: nil) + } else { + if let viewController = controller.currentViewController() { + let image = self.utility.getImage(ocId: metadata.ocId, etag: metadata.etag, ext: NCGlobal.shared.previewExt1024, userId: metadata.userId, urlBase: metadata.urlBase) + Task { + if let vc = await NCViewer().getViewerController(metadata: metadata, image: image, delegate: viewController) { + await viewController.navigationController?.pushViewController(vc, animated: true) + } + } + } + } + + case NCGlobal.shared.selectorOpenIn: + guard !isAppInBackground + else { + return + } + + self.openActivityViewController(selectedMetadata: [metadata], controller: controller, sender: nil) + + case NCGlobal.shared.selectorPrint: + // waiting close menu + // https://github.com/nextcloud/ios/issues/2278 +// DispatchQueue.main.async { + DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { + self.printDocument(metadata: metadata) + } + + case NCGlobal.shared.selectorSaveAlbum: + + self.saveAlbum(metadata: metadata, controller: controller) + + case NCGlobal.shared.selectorSaveAsScan: + + self.saveAsScan(metadata: metadata, controller: controller) + + case NCGlobal.shared.selectorOpenDetail: + NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterOpenMediaDetail, userInfo: ["ocId": metadata.ocId]) + + default: + let applicationHandle = NCApplicationHandle() + applicationHandle.downloadedFile(selector: metadata.sessionSelector, metadata: metadata) + } + } + + // MARK: - + + func setMetadataAvalableOffline(_ metadata: tableMetadata, isOffline: Bool) async { + if isOffline { + if metadata.directory { + await NCManageDatabase.shared.setDirectoryAsync(serverUrl: metadata.serverUrlFileName, offline: false, metadata: metadata) + let predicate = NSPredicate(format: "account == %@ AND serverUrl BEGINSWITH %@ AND sessionSelector == %@ AND status == %d", metadata.account, metadata.serverUrlFileName, NCGlobal.shared.selectorSynchronizationOffline, NCGlobal.shared.metadataStatusWaitDownload) + if let metadatas = await NCManageDatabase.shared.getMetadatasAsync(predicate: predicate) { + await NCManageDatabase.shared.clearMetadatasSessionAsync(metadatas: metadatas) + } + } else { + await NCManageDatabase.shared.setOffLocalFileAsync(ocId: metadata.ocId) + } + } else if metadata.directory { + await NCManageDatabase.shared.cleanTablesOcIds(account: metadata.account, userId: metadata.userId, urlBase: metadata.urlBase) + await NCManageDatabase.shared.setDirectoryAsync(serverUrl: metadata.serverUrlFileName, offline: true, metadata: metadata) + await NCNetworking.shared.synchronization(account: metadata.account, serverUrl: metadata.serverUrlFileName, userId: metadata.userId, urlBase: metadata.urlBase, metadatasInDownload: nil) + } else { + var metadatasSynchronizationOffline: [tableMetadata] = [] + metadatasSynchronizationOffline.append(metadata) + if let metadata = await NCManageDatabase.shared.getMetadataLivePhotoAsync(metadata: metadata) { + metadatasSynchronizationOffline.append(metadata) + } + await NCManageDatabase.shared.addLocalFileAsync(metadata: metadata, offline: true) + for metadata in metadatasSynchronizationOffline { + await NCManageDatabase.shared.setMetadataSessionInWaitDownloadAsync(ocId: metadata.ocId, + session: NCNetworking.shared.sessionDownloadBackground, + selector: NCGlobal.shared.selectorSynchronizationOffline) + } + } + } + + // MARK: - + + @MainActor + func viewerFile(account: String, fileId: String, viewController: UIViewController) async { + var downloadRequest: DownloadRequest? + let hud = NCHud(viewController.tabBarController?.view) + + if let metadata = await NCManageDatabase.shared.getMetadataFromFileIdAsync(fileId) { + do { + let attr = try FileManager.default.attributesOfItem(atPath: utilityFileSystem.getDirectoryProviderStorageOcId(metadata.ocId, + fileName: metadata.fileNameView, + userId: metadata.userId, + urlBase: metadata.urlBase)) + let fileSize = attr[FileAttributeKey.size] as? UInt64 ?? 0 + if fileSize > 0 { + if let vc = await NCViewer().getViewerController(metadata: metadata, delegate: viewController) { + viewController.navigationController?.pushViewController(vc, animated: true) + } + return + } + } catch { + print("Error: \(error)") + } + } + + hud.ringProgress(tapToCancelDetailText: true) { + if let request = downloadRequest { + request.cancel() + } + } + + let resultsFile = await NextcloudKit.shared.getFileFromFileIdAsync(fileId: fileId, account: account) { task in + Task { + let identifier = await NCNetworking.shared.networkingTasks.createIdentifier(account: account, + path: fileId, + name: "getFileFromFileId") + await NCNetworking.shared.networkingTasks.track(identifier: identifier, task: task) + } + } + hud.dismiss() + guard resultsFile.error == .success, let file = resultsFile.file else { + NCContentPresenter().showError(error: resultsFile.error) + return + } + + let metadata = await NCManageDatabase.shared.convertFileToMetadataAsync(file) + await NCManageDatabase.shared.addMetadataAsync(metadata) + + let fileNameLocalPath = self.utilityFileSystem.getDirectoryProviderStorageOcId(metadata.ocId, + fileName: metadata.fileNameView, + userId: metadata.userId, + urlBase: metadata.urlBase) + + if metadata.isAudioOrVideo { + if let vc = await NCViewer().getViewerController(metadata: metadata, delegate: viewController) { + viewController.navigationController?.pushViewController(vc, animated: true) + } + return + } + + hud.show() + let download = await NextcloudKit.shared.downloadAsync(serverUrlFileName: metadata.serverUrlFileName, fileNameLocalPath: fileNameLocalPath, account: account) { request in + downloadRequest = request + } taskHandler: { task in + Task { + let identifier = await NCNetworking.shared.networkingTasks.createIdentifier(account: metadata.account, + path: metadata.serverUrlFileName, + name: "download") + await NCNetworking.shared.networkingTasks.track(identifier: identifier, task: task) + + let ocId = metadata.ocId + await NCManageDatabase.shared.setMetadataSessionAsync(ocId: ocId, + sessionTaskIdentifier: task.taskIdentifier, + status: self.global.metadataStatusDownloading) + } + } progressHandler: { progress in + hud.progress(progress.fractionCompleted) + } + + hud.dismiss() + await NCManageDatabase.shared.setMetadataSessionAsync(ocId: metadata.ocId, + session: "", + sessionTaskIdentifier: 0, + sessionError: "", + status: self.global.metadataStatusNormal, + etag: download.etag) + + if download.nkError == .success { + await NCManageDatabase.shared.addLocalFileAsync(metadata: metadata) + if let vc = await NCViewer().getViewerController(metadata: metadata, delegate: viewController) { + viewController.navigationController?.pushViewController(vc, animated: true) + } + } + } + + // MARK: - + + func openShare(viewController: UIViewController, metadata: tableMetadata, page: NCBrandOptions.NCInfoPagingTab) { + var page = page + let capabilities = NCNetworking.shared.capabilities[metadata.account] ?? NKCapabilities.Capabilities() + + NCActivityIndicator.shared.start(backgroundView: viewController.view) + NCNetworking.shared.readFile(serverUrlFileName: metadata.serverUrlFileName, account: metadata.account) { _, metadata, file, error in + Task { @MainActor in + NCActivityIndicator.shared.stop() + + if let metadata = metadata, error == .success { + let shareNavigationController = UIStoryboard(name: "NCShare", bundle: nil).instantiateInitialViewController() as? UINavigationController + let shareViewController = shareNavigationController?.topViewController as? NCShare + shareViewController?.metadata = metadata + shareNavigationController?.modalPresentationStyle = .formSheet + if let shareNavigationController = shareNavigationController { + viewController.present(shareNavigationController, animated: true, completion: nil) + } + } + } + } + } + + // MARK: - Open Activity [Share] ... + + func openActivityViewController(selectedMetadata: [tableMetadata], controller: NCMainTabBarController?, sender: Any?) { + guard let controller else { return } + let metadatas = selectedMetadata.filter({ !$0.directory }) + var urls: [URL] = [] + var downloadMetadata: [(tableMetadata, URL)] = [] + + for metadata in metadatas { + let fileURL = URL(fileURLWithPath: utilityFileSystem.getDirectoryProviderStorageOcId(metadata.ocId, + fileName: metadata.fileNameView, + userId: metadata.userId, + urlBase: metadata.urlBase)) + if utilityFileSystem.fileProviderStorageExists(metadata) { + urls.append(fileURL) + } else { + downloadMetadata.append((metadata, fileURL)) + } + } + + let processor = ParallelWorker(n: 5, titleKey: "_downloading_", totalTasks: downloadMetadata.count, controller: controller) + for (metadata, url) in downloadMetadata { + processor.execute { completion in + Task { + guard let metadata = await NCManageDatabase.shared.setMetadataSessionInWaitDownloadAsync(ocId: metadata.ocId, + session: NCNetworking.shared.sessionDownload, + selector: "", + sceneIdentifier: controller.sceneIdentifier) else { + return completion() + } + + await NCNetworking.shared.downloadFile(metadata: metadata) { _ in + } progressHandler: { progress in + processor.hud.progress(progress.fractionCompleted) + } + + if self.utilityFileSystem.fileProviderStorageExists(metadata) { + urls.append(url) + } + completion() + } + } + } + + processor.completeWork { + guard !urls.isEmpty else { return } + let activityViewController = UIActivityViewController(activityItems: urls, applicationActivities: nil) + + // iPad + if let popover = activityViewController.popoverPresentationController { + if let view = sender as? UIView { + popover.sourceView = view + popover.sourceRect = view.bounds + } else { + popover.sourceView = controller.view + popover.sourceRect = CGRect(x: controller.view.bounds.midX, + y: controller.view.bounds.midY, + width: 0, + height: 0) + popover.permittedArrowDirections = [] + } + } + + controller.present(activityViewController, animated: true) + } + } + + // MARK: - Save as scan + + func saveAsScan(metadata: tableMetadata, controller: NCMainTabBarController?) { + let fileNamePath = utilityFileSystem.getDirectoryProviderStorageOcId(metadata.ocId, + fileName: metadata.fileNameView, + userId: metadata.userId, + urlBase: metadata.urlBase) + let fileNameDestination = utilityFileSystem.createFileName("scan.png", fileDate: Date(), fileType: PHAssetMediaType.image, notUseMask: true) + let fileNamePathDestination = utilityFileSystem.createServerUrl(serverUrl: utilityFileSystem.directoryScan, fileName: fileNameDestination) + + utilityFileSystem.copyFile(atPath: fileNamePath, toPath: fileNamePathDestination) + + if let navigationController = UIStoryboard(name: "NCScan", bundle: nil).instantiateInitialViewController() { + navigationController.modalPresentationStyle = UIModalPresentationStyle.pageSheet + let viewController = navigationController.presentedViewController as? NCScan + viewController?.serverUrl = controller?.currentServerUrl() + viewController?.controller = controller + controller?.present(navigationController, animated: true, completion: nil) + } + } + + // MARK: - Save photo + + func saveAlbum(metadata: tableMetadata, controller: NCMainTabBarController?) { + let fileNamePath = utilityFileSystem.getDirectoryProviderStorageOcId(metadata.ocId, + fileName: metadata.fileNameView, + userId: metadata.userId, + urlBase: metadata.urlBase) + + NCAskAuthorization().askAuthorizationPhotoLibrary(controller: controller) { hasPermission in + guard hasPermission else { + let error = NKError(errorCode: NCGlobal.shared.errorFileNotSaved, errorDescription: "_access_photo_not_enabled_msg_") + return NCContentPresenter().messageNotification("_access_photo_not_enabled_", error: error, delay: NCGlobal.shared.dismissAfterSecond, type: NCContentPresenter.messageType.error) + } + + let errorSave = NKError(errorCode: NCGlobal.shared.errorFileNotSaved, errorDescription: "_file_not_saved_cameraroll_") + + do { + if metadata.isImage { + let data = try Data(contentsOf: URL(fileURLWithPath: fileNamePath)) + PHPhotoLibrary.shared().performChanges({ + let assetRequest = PHAssetCreationRequest.forAsset() + assetRequest.addResource(with: .photo, data: data, options: nil) + }) { success, _ in + if !success { + NCContentPresenter().messageNotification("_save_selected_files_", error: errorSave, delay: NCGlobal.shared.dismissAfterSecond, type: NCContentPresenter.messageType.error) + } + } + } else if metadata.isVideo { + PHPhotoLibrary.shared().performChanges({ + PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: URL(fileURLWithPath: fileNamePath)) + }) { success, _ in + if !success { + NCContentPresenter().messageNotification("_save_selected_files_", error: errorSave, delay: NCGlobal.shared.dismissAfterSecond, type: NCContentPresenter.messageType.error) + } + } + } else { + NCContentPresenter().messageNotification("_save_selected_files_", error: errorSave, delay: NCGlobal.shared.dismissAfterSecond, type: NCContentPresenter.messageType.error) + return + } + } catch { + NCContentPresenter().messageNotification("_save_selected_files_", error: errorSave, delay: NCGlobal.shared.dismissAfterSecond, type: NCContentPresenter.messageType.error) + } + } + } + + // MARK: - Copy & Paste + + func copyPasteboard(pasteboardOcIds: [String], controller: NCMainTabBarController?) { + var items = [[String: Any]]() + let hudView = controller + + // getting file data can take some time and block the main queue + DispatchQueue.global(qos: .userInitiated).async { + var downloadMetadatas: [tableMetadata] = [] + for ocid in pasteboardOcIds { + guard let metadata = NCManageDatabase.shared.getMetadataFromOcId(ocid) else { continue } + if let pasteboardItem = metadata.toPasteBoardItem() { + items.append(pasteboardItem) + } else { + downloadMetadatas.append(metadata) + } + } + + let processor = ParallelWorker(n: 5, titleKey: "_downloading_", totalTasks: downloadMetadatas.count, controller: controller) + for metadata in downloadMetadatas { + processor.execute { completion in + Task { + guard let metadata = await NCManageDatabase.shared.setMetadataSessionInWaitDownloadAsync(ocId: metadata.ocId, + session: NCNetworking.shared.sessionDownload, + selector: "", + sceneIdentifier: controller?.sceneIdentifier) else { + return completion() + } + + await NCNetworking.shared.downloadFile(metadata: metadata) { _ in + } progressHandler: { progress in + processor.hud.progress(progress.fractionCompleted) + } + + completion() + } + } + } + + processor.completeWork { + items.append(contentsOf: downloadMetadatas.compactMap({ $0.toPasteBoardItem() })) + UIPasteboard.general.setItems(items, options: [:]) + } + } + } + + func pastePasteboard(serverUrl: String, account: String, controller: NCMainTabBarController?) async { + var fractionCompleted: Float = 0 + let processor = ParallelWorker(n: 5, titleKey: "_status_uploading_", totalTasks: nil, controller: controller) + guard let tblAccount = await NCManageDatabase.shared.getTableAccountAsync(account: account) else { + return + } + + func uploadPastePasteboard(fileName: String, serverUrlFileName: String, fileNameLocalPath: String, serverUrl: String, completion: @escaping () -> Void) { + NextcloudKit.shared.upload(serverUrlFileName: serverUrlFileName, fileNameLocalPath: fileNameLocalPath, account: account) { _ in + } taskHandler: { task in + Task { + let identifier = await NCNetworking.shared.networkingTasks.createIdentifier(account: account, + path: serverUrlFileName, + name: "upload") + await NCNetworking.shared.networkingTasks.track(identifier: identifier, task: task) + } + } progressHandler: { progress in + if Float(progress.fractionCompleted) > fractionCompleted || fractionCompleted == 0 { + processor.hud.progress(progress.fractionCompleted) + fractionCompleted = Float(progress.fractionCompleted) + } + } completionHandler: { account, ocId, etag, _, _, _, error in + if error == .success && etag != nil && ocId != nil { + let toPath = self.utilityFileSystem.getDirectoryProviderStorageOcId(ocId!, + fileName: fileName, + userId: tblAccount.userId, + urlBase: tblAccount.urlBase) + self.utilityFileSystem.moveFile(atPath: fileNameLocalPath, toPath: toPath) + NCManageDatabase.shared.addLocalFile(account: account, etag: etag!, ocId: ocId!, fileName: fileName) + Task { + await NCNetworking.shared.transferDispatcher.notifyAllDelegates { delegate in + delegate.transferRequestData(serverUrl: serverUrl) + } + } + } else { + NCContentPresenter().showError(error: error) + } + fractionCompleted = 0 + completion() + } + } + + for (index, items) in UIPasteboard.general.items.enumerated() { + for item in items { + let capabilities = await NKCapabilities.shared.getCapabilities(for: account) + let results = NKFilePropertyResolver().resolve(inUTI: item.key, capabilities: capabilities) + guard let data = UIPasteboard.general.data(forPasteboardType: item.key, inItemSet: IndexSet([index]))?.first else { + continue + } + let fileName = results.name + "_" + NCPreferences().incrementalNumber + "." + results.ext + let serverUrlFileName = utilityFileSystem.createServerUrl(serverUrl: serverUrl, fileName: fileName) + let ocIdUpload = UUID().uuidString + let fileNameLocalPath = utilityFileSystem.getDirectoryProviderStorageOcId(ocIdUpload, + fileName: fileName, + userId: tblAccount.userId, + urlBase: tblAccount.urlBase) + do { try data.write(to: URL(fileURLWithPath: fileNameLocalPath)) } catch { continue } + processor.execute { completion in + uploadPastePasteboard(fileName: fileName, serverUrlFileName: serverUrlFileName, fileNameLocalPath: fileNameLocalPath, serverUrl: serverUrl, completion: completion) + } + } + } + processor.completeWork() + } + + // MARK: - + + func openFileViewInFolder(serverUrl: String, fileNameBlink: String?, fileNameOpen: String?, sceneIdentifier: String) { + guard let controller = SceneManager.shared.getController(sceneIdentifier: sceneIdentifier), + let navigationController = controller.viewControllers?.first as? UINavigationController + else { return } + let session = NCSession.shared.getSession(controller: controller) + var serverUrlPush = self.utilityFileSystem.getHomeServer(session: session) + + DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { + navigationController.popToRootViewController(animated: false) + controller.selectedIndex = 0 + if serverUrlPush == serverUrl, + let viewController = navigationController.topViewController as? NCFiles { + viewController.blinkCell(fileName: fileNameBlink) + viewController.openFile(fileName: fileNameOpen) + return + } + + let diffDirectory = serverUrl.replacingOccurrences(of: serverUrlPush, with: "") + var subDirs = diffDirectory.split(separator: "/") + + while serverUrlPush != serverUrl, !subDirs.isEmpty { + + guard let dir = subDirs.first else { + return + } + serverUrlPush = self.utilityFileSystem.createServerUrl(serverUrl: serverUrlPush, fileName: String(dir)) + + if let viewController = controller.navigationCollectionViewCommon.first(where: { $0.navigationController == navigationController && $0.serverUrl == serverUrlPush})?.viewController as? NCFiles, viewController.isViewLoaded { + viewController.fileNameBlink = fileNameBlink + viewController.fileNameOpen = fileNameOpen + navigationController.pushViewController(viewController, animated: false) + } else { + if let viewController: NCFiles = UIStoryboard(name: "NCFiles", bundle: nil).instantiateInitialViewController() as? NCFiles { + viewController.serverUrl = serverUrlPush + viewController.titleCurrentFolder = String(dir) + viewController.navigationItem.backButtonTitle = viewController.titleCurrentFolder + + controller.navigationCollectionViewCommon.append(NavigationCollectionViewCommon(serverUrl: serverUrlPush, navigationController: navigationController, viewController: viewController)) + + if serverUrlPush == serverUrl { + viewController.fileNameBlink = fileNameBlink + viewController.fileNameOpen = fileNameOpen + } + navigationController.pushViewController(viewController, animated: false) + } + } + subDirs.remove(at: 0) + } + } + } + + // MARK: - NCSelect + Delegate + + func dismissSelect(serverUrl: String?, metadata: tableMetadata?, type: String, items: [Any], overwrite: Bool, copy: Bool, move: Bool) {//, session: NCSession.Session) { + if let destination = serverUrl, !items.isEmpty { + if copy { + for case let metadata as tableMetadata in items { + if metadata.status != NCGlobal.shared.metadataStatusNormal, metadata.status != NCGlobal.shared.metadataStatusWaitCopy { + continue + } + + NCNetworking.shared.copyMetadata(metadata, destination: destination, overwrite: overwrite) + } + + } else if move { + for case let metadata as tableMetadata in items { + if metadata.status != NCGlobal.shared.metadataStatusNormal, metadata.status != NCGlobal.shared.metadataStatusWaitMove { + continue + } + + NCNetworking.shared.moveMetadata(metadata, destination: destination, overwrite: overwrite) + } + } + } + } + + func openSelectView(items: [tableMetadata], controller: NCMainTabBarController?) { + let session = NCSession.shared.getSession(controller: controller) + let navigationController = UIStoryboard(name: "NCSelect", bundle: nil).instantiateInitialViewController() as? UINavigationController + let topViewController = navigationController?.topViewController as? NCSelect + var listViewController = [NCSelect]() + var copyItems: [tableMetadata] = [] + let capabilities = NCNetworking.shared.capabilities[controller?.account ?? ""] ?? NKCapabilities.Capabilities() + + for item in items { + if let fileNameError = FileNameValidator.checkFileName(item.fileNameView, account: controller?.account, capabilities: capabilities) { + controller?.present(UIAlertController.warning(message: "\(fileNameError.errorDescription) \(NSLocalizedString("_please_rename_file_", comment: ""))"), animated: true) + return + } + copyItems.append(item) + } + + let home = utilityFileSystem.getHomeServer(session: session) + var serverUrl = copyItems[0].serverUrl + + // Setup view controllers such that the current view is of the same directory the items to be copied are in + while true { + // If not in the topmost directory, create a new view controller and set correct title. + // If in the topmost directory, use the default view controller as the base. + var viewController: NCSelect? + if serverUrl != home { + viewController = UIStoryboard(name: "NCSelect", bundle: nil).instantiateViewController(withIdentifier: "NCSelect.storyboard") as? NCSelect + if viewController == nil { + return + } + viewController!.titleCurrentFolder = (serverUrl as NSString).lastPathComponent + } else { + viewController = topViewController + } + guard let vc = viewController else { return } + + vc.delegate = self + vc.typeOfCommandView = .copyMove + vc.items = copyItems + vc.serverUrl = serverUrl + vc.session = session + + vc.navigationItem.backButtonTitle = vc.titleCurrentFolder + listViewController.insert(vc, at: 0) + + if serverUrl != home { + if let serverDirectoryUp = utilityFileSystem.serverDirectoryUp(serverUrl: serverUrl, home: home) { + serverUrl = serverDirectoryUp + } + } else { + break + } + } + + navigationController?.setViewControllers(listViewController, animated: false) + navigationController?.modalPresentationStyle = .formSheet + + if let navigationController = navigationController { + controller?.present(navigationController, animated: true, completion: nil) + } + } + + // MARK: - Print + + func printDocument(metadata: tableMetadata) { + + let fileNameURL = URL(fileURLWithPath: utilityFileSystem.getDirectoryProviderStorageOcId(metadata.ocId, + fileName: metadata.fileNameView, + userId: metadata.userId, + urlBase: metadata.urlBase)) + let printController = UIPrintInteractionController.shared + let printInfo = UIPrintInfo(dictionary: nil) + + printInfo.jobName = fileNameURL.lastPathComponent + printInfo.outputType = metadata.isImage ? .photo : .general + printController.printInfo = printInfo + printController.showsNumberOfCopies = true + + guard !UIPrintInteractionController.canPrint(fileNameURL) else { + printController.printingItem = fileNameURL + printController.present(animated: true) + return + } + + // can't print without data + guard let data = try? Data(contentsOf: fileNameURL) else { return } + + if let svg = SVGKImage(data: data) { + printController.printingItem = svg.uiImage + printController.present(animated: true) + return + } + + guard let text = String(data: data, encoding: .utf8) else { return } + let formatter = UISimpleTextPrintFormatter(text: text) + formatter.perPageContentInsets.top = 72 + formatter.perPageContentInsets.bottom = 72 + formatter.perPageContentInsets.left = 72 + formatter.perPageContentInsets.right = 72 + printController.printFormatter = formatter + printController.present(animated: true) + } +} + +fileprivate extension tableMetadata { + func toPasteBoardItem() -> [String: Any]? { + // Get Data + let fileUrl = URL(fileURLWithPath: NCUtilityFileSystem().getDirectoryProviderStorageOcId(ocId, + fileName: fileNameView, + userId: userId, + urlBase: urlBase)) + guard NCUtilityFileSystem().fileProviderStorageExists(self), + let data = try? Data(contentsOf: fileUrl) else { return nil } + + // Determine the UTI for the file + guard let fileUTI = UTType(filenameExtension: fileExtension)?.identifier else { return nil } + + // Pasteboard item + return [fileUTI: data] + } +} diff --git a/iOSClient/Networking/NCNetworking+Download.swift b/iOSClient/Networking/NCNetworking+Download.swift index 9f459e484c..3a7e604d0a 100644 --- a/iOSClient/Networking/NCNetworking+Download.swift +++ b/iOSClient/Networking/NCNetworking+Download.swift @@ -1,6 +1,25 @@ -// SPDX-FileCopyrightText: Nextcloud GmbH -// SPDX-FileCopyrightText: 2024 Marino Faggiana -// SPDX-License-Identifier: GPL-3.0-or-later +// +// NCNetworking+Download.swift +// Nextcloud +// +// Created by Marino Faggiana on 07/02/24. +// Copyright © 2024 Marino Faggiana. All rights reserved. +// +// Author Marino Faggiana +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// import UIKit import NextcloudKit @@ -308,24 +327,127 @@ extension NCNetworking { await NCManageDatabase.shared.clearMetadatasSessionAsync(metadatas: metadatas) } } else { - await NCManageDatabase.shared.setOffLocalFileAsync(ocId: metadata.ocId) + nkLog(error: "Downloaded file: " + metadata.serverUrlFileName + ", result: error \(error.errorCode)") + + if error.errorCode == NCGlobal.shared.errorResourceNotFound { + self.utilityFileSystem.removeFile(atPath: self.utilityFileSystem.getDirectoryProviderStorageOcId(metadata.ocId, userId: metadata.userId, urlBase: metadata.urlBase)) + + await NCManageDatabase.shared.deleteLocalFileAsync(id: metadata.ocId) + await NCManageDatabase.shared.deleteMetadataAsync(id: metadata.ocId) + } else if error.errorCode == NSURLErrorCancelled || error.errorCode == self.global.errorRequestExplicityCancelled { + if let metadata = await NCManageDatabase.shared.setMetadataSessionAsync(ocId: metadata.ocId, + session: "", + sessionTaskIdentifier: 0, + sessionError: "", + selector: "", + status: self.global.metadataStatusNormal) { + await self.transferDispatcher.notifyAllDelegates { delegate in + delegate.transferChange(status: self.global.networkingStatusDownloadCancel, + metadata: metadata, + error: .success) + } + } + } else { + if let metadata = await NCManageDatabase.shared.setMetadataSessionAsync(ocId: metadata.ocId, + session: "", + sessionTaskIdentifier: 0, + sessionError: "", + selector: "", + status: self.global.metadataStatusNormal) { + + await self.transferDispatcher.notifyAllDelegates { delegate in + delegate.transferChange(status: NCGlobal.shared.networkingStatusDownloaded, + metadata: metadata, + error: error) + } + } + } + await NCManageDatabase.shared.updateBadge() } - } else if metadata.directory { - await NCManageDatabase.shared.cleanTablesOcIds(account: metadata.account, userId: metadata.userId, urlBase: metadata.urlBase) - await NCManageDatabase.shared.setDirectoryAsync(serverUrl: metadata.serverUrlFileName, offline: true, metadata: metadata) - await NCNetworking.shared.synchronizationDownload(account: metadata.account, serverUrl: metadata.serverUrlFileName, userId: metadata.userId, urlBase: metadata.urlBase, metadatasInDownload: nil) - } else { - var metadatasSynchronizationOffline: [tableMetadata] = [] - metadatasSynchronizationOffline.append(metadata) - if let metadata = await NCManageDatabase.shared.getMetadataLivePhotoAsync(metadata: metadata) { - metadatasSynchronizationOffline.append(metadata) + } + } + + // MARK: - Download NextcloudKitDelegate + + func downloadingFinish(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) { + if let httpResponse = (downloadTask.response as? HTTPURLResponse) { + if httpResponse.statusCode >= 200 && httpResponse.statusCode < 300, + let url = downloadTask.currentRequest?.url, + var serverUrl = url.deletingLastPathComponent().absoluteString.removingPercentEncoding { + let fileName = url.lastPathComponent + if serverUrl.hasSuffix("/") { serverUrl = String(serverUrl.dropLast()) } + if let metadata = NCManageDatabase.shared.getMetadata(predicate: NSPredicate(format: "serverUrl == %@ AND fileName == %@", serverUrl, fileName)) { + let destinationFilePath = utilityFileSystem.getDirectoryProviderStorageOcId(metadata.ocId, fileName: metadata.fileName, userId: metadata.userId, urlBase: metadata.urlBase) + do { + if FileManager.default.fileExists(atPath: destinationFilePath) { + try FileManager.default.removeItem(atPath: destinationFilePath) + } + try FileManager.default.copyItem(at: location, to: NSURL.fileURL(withPath: destinationFilePath)) + } catch { + print(error) + } + } + } + } + } + + func downloadProgress(_ progress: Float, + totalBytes: Int64, + totalBytesExpected: Int64, + fileName: String, + serverUrl: String, + session: URLSession, + task: URLSessionTask) { + + Task { + guard await progressQuantizer.shouldEmit(serverUrlFileName: serverUrl + "/" + fileName, fraction: Double(progress)) else { + return } - await NCManageDatabase.shared.addLocalFilesAsync(metadatas: [metadata], offline: true) - for metadata in metadatasSynchronizationOffline { - await NCManageDatabase.shared.setMetadataSessionInWaitDownloadAsync(ocId: metadata.ocId, - session: NCNetworking.shared.sessionDownloadBackground, - selector: NCGlobal.shared.selectorSynchronizationOffline) + await NCManageDatabase.shared.setMetadataProgress(fileName: fileName, serverUrl: serverUrl, taskIdentifier: task.taskIdentifier, progress: Double(progress)) + await self.transferDispatcher.notifyAllDelegates { delegate in + delegate.transferProgressDidUpdate(progress: progress, + totalBytes: totalBytes, + totalBytesExpected: totalBytesExpected, + fileName: fileName, + serverUrl: serverUrl) } } } } + +class NCOperationDownload: ConcurrentOperation, @unchecked Sendable { + var metadata: tableMetadata + var selector: String + + init(metadata: tableMetadata, selector: String) { + self.metadata = tableMetadata.init(value: metadata) + self.selector = selector + } + + override func start() { + guard !isCancelled else { return self.finish() } + + metadata.session = NCNetworking.shared.sessionDownload + metadata.sessionError = "" + metadata.sessionSelector = selector + metadata.sessionTaskIdentifier = 0 + metadata.status = NCGlobal.shared.metadataStatusWaitDownload + +// let metadata = NCManageDatabase.shared.addMetadata(metadata) + +// NCNetworking.shared.download(metadata: metadata, withNotificationProgressTask: true) { +// } completion: { _, _ in +// self.finish() +// } + Task { + await download(withSelector: self.selector) + } + } + + private func download(withSelector selector: String = "") async { + await NCNetworking.shared.downloadFile(metadata: metadata) { _ in + self.finish() + } taskHandler: { _ in } + + } +} diff --git a/iOSClient/Networking/NCNetworking+LivePhoto.swift b/iOSClient/Networking/NCNetworking+LivePhoto.swift index e861b76b81..072b3b087f 100644 --- a/iOSClient/Networking/NCNetworking+LivePhoto.swift +++ b/iOSClient/Networking/NCNetworking+LivePhoto.swift @@ -1,6 +1,25 @@ -// SPDX-FileCopyrightText: Nextcloud GmbH -// SPDX-FileCopyrightText: 2024 Marino Faggiana -// SPDX-License-Identifier: GPL-3.0-or-later +// +// NCNetworking+LivePhoto.swift +// Nextcloud +// +// Created by Marino Faggiana on 07/02/24. +// Copyright © 2024 Marino Faggiana. All rights reserved. +// +// Author Marino Faggiana +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// import UIKit import NextcloudKit diff --git a/iOSClient/Networking/NCNetworking+Synchronization.swift b/iOSClient/Networking/NCNetworking+Synchronization.swift new file mode 100644 index 0000000000..270c19864b --- /dev/null +++ b/iOSClient/Networking/NCNetworking+Synchronization.swift @@ -0,0 +1,93 @@ +// +// NCNetworking+Synchronization.swift +// Nextcloud +// +// Created by Marino Faggiana on 07/02/24. +// Copyright © 2024 Marino Faggiana. All rights reserved. +// +// Author Marino Faggiana +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// + +import UIKit +import NextcloudKit + +extension NCNetworking { + internal func synchronization(account: String, serverUrl: String, userId: String, urlBase: String, metadatasInDownload: [tableMetadata]?) async { + let showHiddenFiles = NCPreferences().getShowHiddenFiles(account: account) + let options = NKRequestOptions(timeout: 300, taskDescription: NCGlobal.shared.taskDescriptionSynchronization, queue: NextcloudKit.shared.nkCommonInstance.backgroundQueue) + + nkLog(tag: self.global.logTagSync, emoji: .start, message: "Start read infinite folder: \(serverUrl)") + + let results = await NextcloudKit.shared.readFileOrFolderAsync(serverUrlFileName: serverUrl, depth: "infinity", showHiddenFiles: showHiddenFiles, account: account, options: options) { task in + Task { + let identifier = await NCNetworking.shared.networkingTasks.createIdentifier(account: account, + path: serverUrl, + name: "readFileOrFolder") + await NCNetworking.shared.networkingTasks.track(identifier: identifier, task: task) + } + } + + if results.error == .success, let files = results.files { + nkLog(tag: self.global.logTagSync, emoji: .success, message: "Read infinite folder: \(serverUrl)") + + for file in files { + if file.directory { + let metadata = await NCManageDatabase.shared.convertFileToMetadataAsync(file) + await NCManageDatabase.shared.createDirectory(metadata: metadata) + } else { + if await isFileDifferent(ocId: file.ocId, fileName: file.fileName, etag: file.etag, metadatasInDownload: metadatasInDownload, userId: userId, urlBase: urlBase) { + let metadata = await NCManageDatabase.shared.convertFileToMetadataAsync(file) + metadata.session = self.sessionDownloadBackground + metadata.sessionSelector = NCGlobal.shared.selectorSynchronizationOffline + metadata.sessionTaskIdentifier = 0 + metadata.sessionError = "" + metadata.status = NCGlobal.shared.metadataStatusWaitDownload + metadata.sessionDate = Date() + + await NCManageDatabase.shared.addMetadataAsync(metadata) + + nkLog(tag: self.global.logTagSync, emoji: .start, message: "File download: \(file.serverUrl)/\(file.fileName)") + } + } + } + } else { + nkLog(tag: self.global.logTagSync, emoji: .error, message: "Read infinite folder: \(serverUrl), error: \(results.error.errorCode)") + } + + nkLog(tag: self.global.logTagSync, emoji: .stop, message: "Stop read infinite folder: \(serverUrl)") + } + + internal func isFileDifferent(ocId: String, + fileName: String, + etag: String, + metadatasInDownload: [tableMetadata]?, + userId: String, + urlBase: String) async -> Bool { + let match = metadatasInDownload?.contains { $0.ocId == ocId } ?? false + if match { + return false + } + + guard let localFile = await NCManageDatabase.shared.getTableLocalFileAsync(predicate: NSPredicate(format: "ocId == %@", ocId)) else { + return true + } + let fileNamePath = self.utilityFileSystem.getDirectoryProviderStorageOcId(ocId, fileName: fileName, userId: userId, urlBase: urlBase) + let size = await self.utilityFileSystem.fileSizeAsync(atPath: fileNamePath) + let isDifferent = (localFile.etag != etag) || size == 0 + + return isDifferent + } +} diff --git a/iOSClient/Networking/NCNetworking+Task.swift b/iOSClient/Networking/NCNetworking+Task.swift index 2887838214..e6d5f605fc 100644 --- a/iOSClient/Networking/NCNetworking+Task.swift +++ b/iOSClient/Networking/NCNetworking+Task.swift @@ -1,6 +1,25 @@ -// SPDX-FileCopyrightText: Nextcloud GmbH -// SPDX-FileCopyrightText: 2024 Marino Faggiana -// SPDX-License-Identifier: GPL-3.0-or-later +// +// NCNetworking+Task.swift +// Nextcloud +// +// Created by Marino Faggiana on 24/08/24. +// Copyright © 2024 Marino Faggiana. All rights reserved. +// +// Author Marino Faggiana +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// import Foundation import UIKit @@ -333,6 +352,7 @@ extension NCNetworking { sessionUploadBackground, sessionUploadBackgroundWWan, self.global.metadataStatusUploading)) { + for metadata in metadatas { guard var nkSession = NextcloudKit.shared.nkCommonInstance.nksessions.session(forAccount: metadata.account) else { await NCManageDatabase.shared.deleteMetadataAsync(id: metadata.ocId) diff --git a/iOSClient/Networking/NCNetworking+Upload.swift b/iOSClient/Networking/NCNetworking+Upload.swift index 93ea6b9597..f7cb42f268 100644 --- a/iOSClient/Networking/NCNetworking+Upload.swift +++ b/iOSClient/Networking/NCNetworking+Upload.swift @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: Nextcloud GmbH -// SPDX-FileCopyrightText: 2024 Marino Faggiana -// SPDX-License-Identifier: GPL-3.0-or-later - import UIKit import NextcloudKit import Alamofire @@ -39,6 +35,22 @@ extension NCNetworking { } taskHandler(task) } progressHandler: { progress in + Task { + guard await self.progressQuantizer.shouldEmit(serverUrlFileName: serverUrlFileName, fraction: progress.fractionCompleted) else { + return + } + + if let metadata { + await NCManageDatabase.shared.setMetadataProgress(ocId: metadata.ocId, progress: progress.fractionCompleted) + await self.transferDispatcher.notifyAllDelegates { delegate in + delegate.transferProgressDidUpdate(progress: Float(progress.fractionCompleted), + totalBytes: progress.totalUnitCount, + totalBytesExpected: progress.completedUnitCount, + fileName: metadata.fileName, + serverUrl: metadata.serverUrl) + } + } + } progressHandler(progress.completedUnitCount, progress.totalUnitCount, progress.fractionCompleted) } @@ -332,6 +344,7 @@ extension NCNetworking { error: self.global.diagnosticProblemsUploadServerError) } } + await NCManageDatabase.shared.updateBadge() } // MARK: - diff --git a/iOSClient/Networking/NCNetworking+WebDAV.swift b/iOSClient/Networking/NCNetworking+WebDAV.swift index 2d3d19b5e7..ba4b604f31 100644 --- a/iOSClient/Networking/NCNetworking+WebDAV.swift +++ b/iOSClient/Networking/NCNetworking+WebDAV.swift @@ -1,6 +1,25 @@ -// SPDX-FileCopyrightText: Nextcloud GmbH -// SPDX-FileCopyrightText: 2024 Marino Faggiana -// SPDX-License-Identifier: GPL-3.0-or-later +// +// NCNetworking+WebDAV.swift +// Nextcloud +// +// Created by Marino Faggiana on 07/02/24. +// Copyright © 2024 Marino Faggiana. All rights reserved. +// +// Author Marino Faggiana +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// import UIKit import NextcloudKit @@ -538,6 +557,50 @@ extension NCNetworking { } } } + + func renameMetadata(_ metadata: tableMetadata, + fileNameNew: String, + indexPath: IndexPath, + viewController: UIViewController?, + completion: @escaping (_ error: NKError) -> Void) { + + let permission = NCMetadataPermissions.permissionsContainsString(metadata.permissions, permissions: NCMetadataPermissions.permissionCanRename) + if (!metadata.permissions.isEmpty && permission == false) || + (metadata.status != global.metadataStatusNormal && metadata.status != global.metadataStatusWaitRename) { +// return NCContentPresenter().showInfo(error: NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_no_permission_modify_file_")) +// let error = await NCNetworkingE2EERename().rename(metadata: metadata, fileNameNew: fileNameNew) +// DispatchQueue.main.async { completion(error) } + completion(NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_no_permission_modify_file_")) + } + + if metadata.isDirectoryE2EE { +#if !EXTENSION + if isOffline { +// return NCContentPresenter().showInfo(error: NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_offline_not_allowed_")) + completion(NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_offline_not_allowed_")) + } + Task { + let error = await NCNetworkingE2EERename().rename(metadata: metadata, fileNameNew: fileNameNew) + if error != .success { +// NCContentPresenter().showError(error: error) + completion(error) + } + } +#endif + } else { + Task { + await self.transferDispatcher.notifyAllDelegatesAsync { delegate in + let status = self.global.metadataStatusWaitRename + await NCManageDatabase.shared.renameMetadata(fileNameNew: fileNameNew, ocId: metadata.ocId, status: status) + delegate.transferReloadData(serverUrl: metadata.serverUrl, status: status) + } + NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterRenameFile, userInfo: ["serverUrl": metadata.serverUrl, "account": metadata.account, "error": NKError(errorCode: 0, errorDescription: ""), "ocId": metadata.ocId, "indexPath": indexPath]) + + } + + completion(NKError(errorCode: 0, errorDescription: "")) + } + } func renameFileOrFolder(metadata: tableMetadata) async -> NKError { let serverUrlFileNameSource = metadata.serverUrlFileName diff --git a/iOSClient/Networking/NCNetworking.swift b/iOSClient/Networking/NCNetworking.swift index 3f6cffe649..55268f9665 100644 --- a/iOSClient/Networking/NCNetworking.swift +++ b/iOSClient/Networking/NCNetworking.swift @@ -1,6 +1,25 @@ -// SPDX-FileCopyrightText: Nextcloud GmbH -// SPDX-FileCopyrightText: 2019 Marino Faggiana -// SPDX-License-Identifier: GPL-3.0-or-later +// +// NCNetworking.swift +// Nextcloud +// +// Created by Marino Faggiana on 23/10/19. +// Copyright © 2019 Marino Faggiana. All rights reserved. +// +// Author Marino Faggiana +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// #if !EXTENSION_FILE_PROVIDER_EXTENSION import OpenSSL @@ -151,11 +170,11 @@ actor NetworkingTasks { $0.identifier == identifier && $0.task.state == .running } active.append((identifier, task)) - nkLog(tag: NCGlobal.shared.logTagNetworkingTasks, emoji: .start, message: "Start task for identifier: \(identifier)", consoleOnly: true) + nkLog(tag: NCGlobal.shared.logNetworkingTasks, emoji: .start, message: "Start task for identifier: \(identifier)", consoleOnly: true) } /// create a Identifier - /// + /// func createIdentifier(account: String? = nil, path: String? = nil, name: String) -> String { if let account, let path { @@ -176,7 +195,7 @@ actor NetworkingTasks { for element in active where element.identifier == identifier { element.task.cancel() - nkLog(tag: NCGlobal.shared.logTagNetworkingTasks, emoji: .cancel, message: "Cancel task for identifier: \(identifier)", consoleOnly: true) + nkLog(tag: NCGlobal.shared.logNetworkingTasks, emoji: .cancel, message: "Cancel task for identifier: \(identifier)", consoleOnly: true) } active.removeAll { $0.identifier == identifier @@ -189,7 +208,7 @@ actor NetworkingTasks { func cancelAll() { active.forEach { $0.task.cancel() - nkLog(tag: NCGlobal.shared.logTagNetworkingTasks, emoji: .cancel, message: "Cancel task with identifier: \($0.identifier)", consoleOnly: true) + nkLog(tag: NCGlobal.shared.logNetworkingTasks, emoji: .cancel, message: "Cancel task with identifier: \($0.identifier)", consoleOnly: true) } active.removeAll() } @@ -289,6 +308,7 @@ class NCNetworking: @unchecked Sendable, NextcloudKitDelegate { let saveLivePhotoQueue = Queuer(name: "saveLivePhotoQueue", maxConcurrentOperationCount: 1, qualityOfService: .default) let downloadAvatarQueue = Queuer(name: "downloadAvatarQueue", maxConcurrentOperationCount: 10, qualityOfService: .default) #endif + let downloadQueue = Queuer(name: "downloadQueue", maxConcurrentOperationCount: NCBrandOptions.shared.httpMaximumConnectionsPerHostInDownload, qualityOfService: .default) // MARK: - init diff --git a/iOSClient/Networking/NCNetworkingProcess.swift b/iOSClient/Networking/NCNetworkingProcess.swift index aa94633a71..ff91b2b1b8 100644 --- a/iOSClient/Networking/NCNetworkingProcess.swift +++ b/iOSClient/Networking/NCNetworkingProcess.swift @@ -245,7 +245,6 @@ actor NCNetworkingProcess { await startTimer(interval: minInterval) } } else { - // Remove upload asset await removeUploadedAssetsIfNeeded() // Set Live Photo diff --git a/iOSClient/Networking/NCService.swift b/iOSClient/Networking/NCService.swift index ebc3aa58ff..ac657cf195 100644 --- a/iOSClient/Networking/NCService.swift +++ b/iOSClient/Networking/NCService.swift @@ -1,6 +1,25 @@ -// SPDX-FileCopyrightText: Nextcloud GmbH -// SPDX-FileCopyrightText: 2018 Marino Faggiana -// SPDX-License-Identifier: GPL-3.0-or-later +// +// NCService.swift +// Nextcloud +// +// Created by Marino Faggiana on 14/03/18. +// Copyright © 2018 Marino Faggiana. All rights reserved. +// +// Author Marino Faggiana +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// import UIKit @preconcurrency import NextcloudKit diff --git a/iOSClient/Supporting Files/de.lproj/InfoPlist.strings b/iOSClient/Supporting Files/de.lproj/InfoPlist.strings index 5bd6c55098479980c1cfb9622a0024d65fd93e07..77331077c8baa07aa4d02ed5b0100332e17fc8e3 100644 GIT binary patch delta 694 zcmZ8ey-EW?7@QahC|HOJ0h`4_M58ZYrNn?unnbKGxyz49F7fVEOmlA_NM1z9+gSJj zK7f^lGvDS?$gz97JM+!Ve*3ofRsHxZElxM9%aihcdHG#BE-h=7PWiBj7VeNDLV`9& zfG$QDB1Zpx_iW)dDm!h0V~!D~m@FQ*4swT(ln4%2nDG;O&UJ`qt`cNKQ!m2vThvh_ z_X!iuMP-Bgn402Fxk~ZETGdH6G@U}1mu4*g}4 z(p*yF`ySj9k5{OV9a!wtR28mEhT=Hfb55wGsD1AFG&z6&8&upRAhAch&Y~eDGV6j? zK8*0xf~M?p&7UN_cHi6A-tZIy#Z!zjHZ?<6zVg>+ug9qdQ diff --git a/iOSClient/Supporting Files/en.lproj/InfoPlist.strings b/iOSClient/Supporting Files/en.lproj/InfoPlist.strings index a89b02ffae..4b23af29f9 100644 --- a/iOSClient/Supporting Files/en.lproj/InfoPlist.strings +++ b/iOSClient/Supporting Files/en.lproj/InfoPlist.strings @@ -1,8 +1,9 @@ NSCameraUsageDescription = "Camera access is required to scan documents and make photo and video."; NSFaceIDUsageDescription = "Face ID is required to authenticate using face recognition."; -NSLocationAlwaysUsageDescription = "The app uses your location to automatically trigger file uploads when you move between areas."; NSPhotoLibraryUsageDescription = "Photo library access is required to upload your photos and videos to your cloud."; NSPhotoLibraryAddUsageDescription = "Photo library access is required to upload your photos and videos to your cloud."; NSMicrophoneUsageDescription = "Microphone access is required to create voice notes."; +NSLocationAlwaysUsageDescription = "The app uses your location to automatically trigger file uploads when you move between areas."; NSLocationWhenInUseUsageDescription = "This app uses your location to detect movement and automatically upload files. It does not use GPS and does not store your location."; NSLocationAlwaysAndWhenInUseUsageDescription = "This app needs access to your location even in the background to automatically start uploading files when significant movement is detected. GPS is not used."; +NSUserTrackingUsageDescription = "Telekom uses the Apple Advertising ID to optimize and further develop the functionality of the app based on user needs, to correct any errors and to show you targeted advertising in the app and on third-party sites. You can revoke your consent at any time in the operating system."; diff --git a/iOSClient/Supporting Files/en.lproj/Localizable.strings b/iOSClient/Supporting Files/en.lproj/Localizable.strings index e2ab7f05d2..ea107e21ec 100644 --- a/iOSClient/Supporting Files/en.lproj/Localizable.strings +++ b/iOSClient/Supporting Files/en.lproj/Localizable.strings @@ -56,6 +56,7 @@ "_select_all_" = "Select all"; "_upload_" = "Upload"; "_home_" = "Files"; +"_files_" = "Files"; //"_files_" = "Files"; "_home_dir_" = "Home"; "_file_to_upload_" = "File to upload"; @@ -110,7 +111,7 @@ "_tap_here_to_change_" = "Tap here to change"; "_no_albums_" = "No albums"; "_denied_album_" = "This app does not have access to \"Photos\". You can enable access in Privacy Settings."; -"_denied_camera_" = "This app does not have access to \"Camera\". You can enable access in Privacy Settings."; +"_denied_camera_" = "This app does not have access to the \"Camera\". You can enable access in Privacy Settings."; "_start_" = "Start"; "_force_start_" = "Force the start"; "_account_not_available_" = "The account %@ of %@ does not exist, please add it to be able to read the file %@."; @@ -124,7 +125,8 @@ "_error_parameter_schema_" = "Wrong parameters, impossible to continue"; "_comments_" = "Comments"; "_sharing_" = "Sharing"; -"_details_" = "Share"; +//"_details_" = "Share"; +"_details_" = "Details"; "_sub_details_" = "Subscription Details"; "_subscriptions_" = "Subscriptions"; "_dark_mode_" = "Dark mode"; @@ -132,10 +134,10 @@ "_screen_" = "Screen"; "_wipe_account_" = "Account is wiped from server"; "_appconfig_view_title_" = "Account configuration in progress …"; -"_no_permission_add_file_" = "You don't have permission to add files"; -"_no_permission_delete_file_" = "You don't have permission to delete files"; -"_no_permission_modify_file_" = "You don't have permission to modify files"; -"_no_permission_favorite_file_" = "You don't have permission to add the file to your favorites"; +"_no_permission_add_file_" = "You don't have permission to add files."; +"_no_permission_delete_file_" = "You don't have permission to delete files."; +"_no_permission_modify_file_" = "You don't have permission to modify files."; +"_no_permission_favorite_file_" = "You don't have permission to add the file to your favorites."; "_request_upload_new_ver_" = "The file has been modified, do you want to upload the new version?"; "_add_folder_info_" = "Add folder info"; "_back_" = "Back"; @@ -186,6 +188,7 @@ /* MARK: Files lock */ +"_lock_" = "Lock"; "_unlock_" = "Unlock"; "_lock_file_" = "Lock file"; "_unlock_file_" = "Unlock file"; @@ -256,6 +259,23 @@ "_change_lock_passcode_" = "Change passcode"; "_lock_cannot_disable_mdm_" = "Disabling the passcode lock is not permitted by your configuration profile."; +//TOPasscodeSettingsViewController.m +"_enter_passcode_" = "Enter Passcode"; +"_passcodes_didnt_match_try_again_" = "Passcodes didn't match. Try again."; +"_passcode_options_" = "Passcode Options"; +//"_next_" = "Next"; +"_enter_your_passcode_" = "Enter your passcode"; +"_enter_a_new_passcode_" = "Enter a new passcode"; +"_confirm_new_passcode_" = "Confirm new passcode"; +"_4_digit_numeric_code_" = "4-Digit Numeric Code"; +"_6_digit_numeric_code_" = "6-Digit Numeric Code"; +"_custom_numeric_code_" = "Custom Numeric Code"; +"_custom_alphanumeric_code_" = "Custom Alphanumeric Code"; + +//TOPasscodeSettingsWarningLabel.m +"_1_failed_passcode_attempt" = "1 Failed Passcode Attempt"; +"_failed_passcode_attempts" = "%d Failed Passcode Attempts"; + /* Background of the file listing view */ "_use_as_background_" = "Use it as a background"; @@ -312,13 +332,14 @@ "_hours_" = "Hours"; "_minutes_" = "Minutes"; -"_network_available_" = "Network available"; -"_network_not_available_" = "Network unavailable"; +"_network_available_" = "Network available."; +"_network_not_available_" = "Network unavailable."; "_file_too_big_" = "File too large to be encrypted/decrypted"; "_file_too_big_max_100_" = "File too large (max 100 kb.)"; "_...loading..._" = "Loading …"; "_download_plist_" = " "; "_no_reuploadfile_" = "Could not find nor resend file. Delete the upload and reload the file to upload it."; +"_file_already_exists_" = "Unable to complete the operation, a file with the same name exists."; //"_file_already_exists_" = "Unable to complete the operation, a file with the same name exists."; "_read_file_error_" = "Could not read the file"; "_write_file_error_" = "Could not write the file"; @@ -328,7 +349,8 @@ "_logout_" = "Log out"; "_quota_space_unlimited_" = "Unlimited"; "_quota_space_unknown_" = "Unknown"; -"_quota_using_" = "%@ "; +"_quota_using_" = "You are using %@ of %@"; +//"_quota_using_" = "%@ "; "_quota_using_of_" = "of %@"; "_quota_using_percentage_" = "Memory to %@ occupied"; "_acknowledgements_" = "Acknowledgements"; @@ -362,8 +384,8 @@ "_contact_by_email_" = "Contact us by email"; "_clear_cache_" = "Clear cache"; "_clear_cache_footer_" = "Clear downloaded and offline files from the app"; -"_exit_footer_" = "Remove all accounts and local data from the app."; "_exit_" = "Logout"; +"_exit_footer_" = "Remove all accounts and local data from the app."; "_funct_not_enabled_" = "Functionality not enabled"; "_passcode_activate_" = "Password lock on"; "_disabling_passcode_" = "Removing password lock"; @@ -386,6 +408,10 @@ "_delete_active_account_" = "Remove active account"; "_want_delete_" = "Do you really want to delete?"; "_want_leave_share_" = "You will leave the following shares: "; +"_delete_account_" = "Remove account"; +"_delete_active_account_" = "Remove active account"; +"_want_delete_" = "Do you really want to delete?"; +"_want_leave_share_" = "You will leave the following shares: "; "_no_delete_" = "No, do not delete"; "_yes_delete_" = "Yes, delete"; "_remove_cache_" = "Deleting cache, please wait …"; @@ -436,8 +462,8 @@ "_autoupload_photos_" = "Auto upload photos"; "_autoupload_videos_" = "Auto upload videos"; "_autoupload_favorites_" = "Auto upload favorites only"; -//"_autoupload_description_" = "Choose whether new photos or videos will be automatically uploaded to your server."; -"_autoupload_description_" = "New photos/videos will be automatically uploaded to your MagentaCLOUD"; +//"_autoupload_description_" = "New photos/videos will be automatically uploaded to your MagentaCLOUD"; +"_autoupload_description_" = "Choose whether new photos or videos will be automatically uploaded to your MagentaCLOUD."; "_autoupload_description_background_" = "This option requires the use of GPS to trigger the detection of new photos/videos in the camera roll once the location changes significantly"; "_autoupload_background_title_" = "Limitations"; "_autoupload_background_msg_" = "Due to iOS restrictions, it is not yet possible to perform background processes, unless GPS services are activated. Once the cell in the cellular network is changed, the system wakes up for a short time and checks for new photos to upload to the cloud."; @@ -522,8 +548,8 @@ "_location_not_enabled_" = "Location Services not enabled"; "_location_not_enabled_msg_" = "Please go to \"Settings\" and turn on \"Location Services\""; "_access_photo_not_enabled_" = "Access to Photos is not enabled"; -"_access_photo_not_enabled_msg_" = "Please go to \"Settings\" and turn on \"Photo Access\""; -//"_access_photo_not_enabled_msg_" = "Please go to Settings → Apps → Nextcloud → Photos and enable Photo Library Access"; +//"_access_photo_not_enabled_msg_" = "Please go to \"Settings\" and turn on \"Photo Access\""; +"_access_photo_not_enabled_msg_" = "Please go to Settings → Apps → MagentaCLOUD → Photos and enable Photo Library Access"; "_access_background_app_refresh_denied_" = "\"Background App Refresh\" is denied. Please enable it in \"Settings\" otherwise, new photos or videos will not be detected when the application is in the background"; "_access_photo_location_not_enabled_" = "Access to Photos and Location not enabled"; "_access_photo_location_not_enabled_msg_" = "Please go to \"Settings\" and turn on \"Photo Access\" and \"Location Services\""; @@ -545,9 +571,9 @@ "_over_30_days_" = "over 30 days"; "_connection_internet_offline_" = "The internet connection appears to be offline or Wi-Fi is required"; "_insert_password_" = "Enter password"; -"_update_in_progress_" = "Version upgrade, please wait …"; +//"_update_in_progress_" = "Version upgrade, please wait …"; "_forbidden_characters_" = "Forbidden characters: %@"; -"_cannot_send_mail_error_" = "No account set up, or wrong email address entered."; +"_cannot_send_mail_error_" = "No account is set up, or wrong email address entered."; "_open_url_error_" = "Cannot open the URL for this action."; "_photo_camera_" = "Photos"; "_media_" = "Media"; @@ -632,10 +658,6 @@ "_directory_on_top_" = "Sort folders before files"; "_show_description_" = "Show folder description"; "_show_recommended_files_" = "Show recommendations"; -"_directory_on_top_yes_" = "✓ Folders on top"; -"_directory_on_top_no_" = "Folders on top"; -"_show_description_" = "Show description"; -//"_show_recommended_files_" = "Show recommended files"; "_no_description_available_" = "No description available for this folder"; "_folder_automatic_upload_" = "Folder for \"Auto upload\""; "_search_no_record_found_" = "No result"; @@ -644,9 +666,9 @@ "_files_no_files_" = "No files in here"; "_files_no_folders_" = "No folders in here"; "_request_in_progress_" = "Request to server in progress …"; + "_personal_files_only_" = "Personal files only"; "audio" = "AUDIO"; -//"directory" = "FOLDERS"; "compress" = "COMPRESS"; "directory" = "FOLDERS"; "document" = "DOCUMENTS"; @@ -697,6 +719,8 @@ // MARK: Share +"_share_link_" = "Share link"; +//"_share_link_" = "Share link"; "_share_link_" = "Link"; //"_share_link_" = "Share link"; "_share_link_button_" = "Send link to …"; @@ -753,29 +777,49 @@ "_share_download_limit_alert_zero_" = "Download limit should be greater than 0."; "_share_download_limit_alert_invalid_" = "Please enter a valid number for the download limit."; "_share_remaining_download_" = "Downloads:"; -//"_share_read_only_" = "Read only"; "_share_read_only_" = "View only"; "_share_remaining_download_" = "Downloads:"; "_share_editing_" = "Can edit"; "_share_file_drop_" = "Filedrop only"; -//"_share_file_drop_" = "File request"; "_share_hide_download_" = "Prevent download"; -"_share_note_recipient_" = "YOUR MESSAGE"; +//"_share_note_recipient_" = "YOUR MESSAGE"; +"_share_note_recipient_" = "Note to recipient"; +"_shareLinksearch_placeholder_" = "Contact name or email address"; +"_shareLinksearch_mail_placeholder_" = "Type a name or an email and press Enter"; "_new_comment_" = "New comment …"; "_edit_comment_" = "Edit comment"; "_delete_comment_" = "Delete comment"; +"_share_reshare_allowed_" = "Resharing is allowed."; +"_share_reshare_not_allowed_" = "Resharing is not allowed."; +"_sharing_message_" = "You can create links or send shares by mail. If you invite MagentaCLOUD users, you have more opportunities for collaboration."; +"_create_link_" = "Create Link"; +"personal_share_by_mail" = "Personal share by mail"; +"_your_shares_" = "Your Shares"; +"_share_linklabel_" = "Link '%@'"; +"_share_link_folder_" = "Link to folder"; +"_share_link_file_" = "Link to file"; +"no_shares_created" = "No shares created yet."; +"_advance_permissions_" = "Advanced permissions"; +"_send_new_email_" = "Send new email"; +"_apply_changes_" = "Apply changes"; +"_send_share_" = "Send share"; +"_PERMISSIONS_" = "PERMISSIONS"; +"share_editing_message" = "There are no editing functions for files unless you share them with MagentaCLOUD users."; +"_file_drop_message_" = "With File drop, only uploading is allowed. Only you can see files and folders that have been uploaded."; +"_custom_link_label" = "Your custom link label"; +"_set_password_" = "Set password"; +"_share_download_limit_" = "Download Limit"; +"_share_download_limit_placeholder_" = "Enter download limit"; +"_share_download_limit_alert_empty_" = "Download limit cannot be empty."; +"_share_download_limit_alert_zero_" = "Download limit should be greater than 0."; "_share_allow_editing_" = "Allow editing"; "_share_allow_upload_" = "Allow upload and editing"; "_share_secure_file_drop_" = "Secure file drop (upload only)"; -//"_share_hide_download_" = "Hide download"; -"_share_hide_download_" = "Prevent download"; "_share_allowed_downloads_" = "Allowed downloads"; "_share_limit_download_" = "Limit downloads"; "_remaining_" = "%d remaining"; "_share_password_protect_" = "Password protection"; -//"_share_password_protect_" = "Password protect"; "_share_expiration_date_" = "Set expiration date"; -"_share_note_recipient_" = "Note to recipient"; "_share_delete_sharelink_" = "Delete link"; "_share_add_sharelink_" = "Add another link"; "_share_can_read_" = "Read"; @@ -786,6 +830,10 @@ "_share_can_download_" = "Allow download"; "_share_unshare_" = "Unshare"; "_share_internal_link_" = "Internal link"; +"_share_internal_link_des_" = "Only works for users with access to this file/folder"; +"_share_reshare_disabled_" = "You are not allowed to reshare this file/folder"; +"_share_reshare_restricted_" = "Note: You only have limited permission to reshare this file/folder"; +"_share_can_download_" = "Allow download"; "_share_internal_link_des_" = "Only works for users with access to this file/folder."; "_share_reshare_disabled_" = "You are not allowed to reshare this file/folder."; "_share_reshare_restricted_" = "Note: You only have limited permission to reshare this file/folder."; @@ -847,7 +895,8 @@ "_enter_filename_" = "Enter filename …"; "_default_preview_filename_footer_" = "Example preview of filename: IMG_0001.JPG"; "_filename_header_" = "Enter filename"; -"_preview_filename_" = "Example preview of filename. You can use the mask %@ for date/time.";"_add_filenametype_" = "Specify type in filename"; +"_preview_filename_" = "Example preview of filename. You can use the mask %@ for date/time."; +"_add_filenametype_" = "Specify type in filename"; "_filenametype_photo_video_" = "Photo/Video"; "_maintain_original_filename_" = "Maintain original filename"; "_modify_photo_" = "Modify photo"; @@ -865,9 +914,9 @@ "_e2e_server_disabled_" = "End-to-end encryption app disabled on server"; "_e2e_settings_view_passphrase_" = "All 12 words together make a very strong password, letting only you view and make use of your encrypted files. Please write it down and keep it somewhere safe."; "_e2e_settings_read_passphrase_" = "Read passphrase"; -"_e2e_settings_lock_not_active_" = "Lock not active, go back to \"Settings\" and activate it"; +"_e2e_settings_lock_not_active_" = "Lock not active. Go to \"Settings\" and activate it."; "_e2e_settings_the_passphrase_is_" = "The passphrase is:"; -"_e2e_passphrase_request_title_" = "Request passphrase"; +"_e2e_passphrase_request_title_" = "Enter passphrase"; //"Request passphrase"; "_e2e_passphrase_request_message_" = "Insert the 12 words"; "_e2e_settings_remove_" = "Remove the encryption locally"; "_e2e_settings_remove_message_" = "Confirm removal of encryption along with the passphrase."; @@ -875,8 +924,8 @@ "_e2e_remove_folder_encrypted_" = "Decrypt"; "_e2e_file_encrypted_" = "File encrypted"; "_e2e_goto_settings_for_enable_" = "This is an encrypted directory, go to \"Settings\" and enable end-to-end encryption"; -"_e2e_error_" = "An internal end-to-end encryption error occurred"; -"_e2e_in_upload_" = "Upload in progress, please wait for all files to be transferred"; +"_e2e_error_" = "An internal end-to-end encryption error occurred."; +"_e2e_in_upload_" = "Upload in progress, please wait for all files to be transferred."; "_e2e_delete_folder_not_permitted_" = "Deletion of the directory marked as \"encrypted\" is not allowed"; "_e2e_error_encode_metadata_" = "Serious internal error in encoding metadata"; "_e2e_error_decode_metadata_" = "Serious internal error in decoding metadata"; @@ -904,7 +953,8 @@ "_e2e_error_incorrect_passphrase_" = "Wrong password?"; "_e2e_error_passphrase_title" = "Error while decrypting."; "_scans_document_" = "Scan document"; -"_scanned_images_" = "Scanned images"; +//"_scanned_images_" = "Scanned images"; +"_scanned_images_" = "Scanned documents"; "_scan_document_pdf_page_" = "Page"; "_scan_label_document_zone_" = "Tap or drag images down for document creation"; "_filter_document_" = "Document"; @@ -935,6 +985,10 @@ "wescan.review.title" = "Review"; "_trash_view_" = "Deleted files"; +"_trash_restore_all_" = "Restore all files"; +"_trash_delete_all_" = "Empty trash"; +"_trash_delete_permanently_" = "Delete permanently"; +"_trash_delete_all_description_" = "Do you want to empty the trash bin?";"_trash_no_trash_" = "No files deleted"; "_empty_trash_" = "Empty trash"; "_trash_restore_all_" = "Restore all files"; "_trash_delete_all_" = "Empty trash"; @@ -1016,6 +1070,13 @@ "_err_permission_microphone_" = "Please allow Microphone usage from Settings"; "_err_permission_photolibrary_" = "Please allow Photos from Settings"; "_err_permission_locationmanager_" = "Please allow Location - Always from Settings"; +"_ssl_certificate_untrusted_" = "The certificate for this server is invalid."; +"_ssl_certificate_changed_" = "The certificate for this server seems to have changed."; +"_file_already_exists_" = "Could not complete the operation, a file with the same name exists."; +"_error_files_upload_" = "Error uploading files."; +"_internal_generic_error_" = "internal error."; +"_err_permission_microphone_" = "Please allow Microphone usage from Settings."; +"_err_permission_photolibrary_" = "Please allow Photos from Settings."; //"_ssl_certificate_untrusted_" = "The certificate for this server is invalid."; //"_ssl_certificate_changed_" = "The certificate for this server seems to have changed."; //"_file_already_exists_" = "Could not complete the operation, a file with the same name exists."; @@ -1109,6 +1170,7 @@ "_no_items_" = "No items"; "_check_back_later_" = "Check back later"; "_exporting_video_" = "Exporting video … Tap to cancel."; +"_keep_running_" = "Keep the app running for a better user experience."; //"_keep_running_" = "Keep the app running for a better user experience."; "_apps_nextcloud_detect_" = "Detected %@ apps"; "_add_existing_account_" = "Other %@ Apps has been detected, do you want to add an existing account?"; @@ -1181,6 +1243,7 @@ "_users_footer_" = "Every time the app is reactivated, the account will be requested."; "_additional_view_options_" = "Additional view options"; "_while_charging_" = "While charging"; +"_downloading_" = "Downloading"; "_additional_options_" = "Additional options"; "_keep_screen_awake_" = "Keep screen awake\nwhile transferring files"; "_error_not_found_" = "The requested resource could not be found"; @@ -1236,7 +1299,7 @@ "_recommended_files_" = "Recommended Files"; "_propagate_layout_" = "Apply the following change to all subfolders"; "_version_mismatch_error_" = "Version change: please open the main app to update the data."; -"_check_auto_upload_" = "Automatic photo upload is currently disabled.\nWith Nextcloud iOS you can automatically back up your photos and keep them safe on your server.\nJust open Settings → Auto Upload, choose the options you prefer, and turn it on with the \"%@\" button."; +"_check_auto_upload_" = "Automatic photo upload is currently disabled.\nWith MagentaCLOUD iOS you can automatically back up your photos and keep them safe on your server.\nJust open Settings → Auto Upload, choose the options you prefer, and turn it on with the \"%@\" button."; "_cancel_all_request_" = "Are you sure you want to cancel all transfers?"; "_cancel_all_" = "Cancel All"; "_dismiss_" = "Dismiss"; @@ -1358,13 +1421,6 @@ You can stop it at any time, adjust the settings, and enable it again."; "_auto_upload_all_photos_warning_message_" = "This can take some time to process depending on the amount of photos."; "_item_with_same_name_already_exists_" = "An item with the same name already exists."; -// MARK: Migration Multi Domains - -"_preparing_migration_" = "Preparing migration …"; -"_scanning_files_" = "Scanning files …"; -"_moving_items_to_domain_" = "Moving items to correct domain …"; -"_finishing_up_" = "Finishing up …"; - // MARK: Privacy Policy "_privacy_settings_title_" = "Privacy Settings"; "_privacy_help_text_after_login_" = "This app uses Cookies and similiar technolgies (tools). By clicking Accept, you accept the processing and also the Transfer of your data to third parties. The data will be used for Analysis, retargeting and to Display personalized Content and Advertising on sites and third-party sites. You can find further informatin, including Information on data processing by third-party Providers, in the settings and in our Privacy Policy.You can reject the use of the Tools or customize them at any time in the Settings."; @@ -1400,6 +1456,7 @@ You can stop it at any time, adjust the settings, and enable it again."; "_no_internet_alert_message_" = "A data connection is not currently allowed."; "_no_internet_alert_title_" = "Connection error"; "_auto_upload_help_text_" = "With this option, you upload your photos or videos to the same folder that you selected for \"Automatic upload.\""; +"_item_with_same_name_already_exists_" = "An item with the same name already exists."; // MARK: Dashboard "_shared_" = "Shared"; @@ -1412,3 +1469,10 @@ You can stop it at any time, adjust the settings, and enable it again."; "not_now" = "Not Now"; "_prompt_insert_file_name" = "Please enter filename"; + +// MARK: Migration Multi Domains + +"_preparing_migration_" = "Preparing migration …"; +"_scanning_files_" = "Scanning files …"; +"_moving_items_to_domain_" = "Moving items to correct domain …"; +"_finishing_up_" = "Finishing up …";