From 92ff8414315ad10496f78b28d3def855a99b6a61 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 14:13:25 +0100 Subject: [PATCH 001/104] use IONOS cmake instead of nextcloud --- CMakeLists.txt | 6 +--- CPackOptions.cmake.in | 2 +- IONOS.cmake | 82 +++++++++++++++++++++++++++++++++++++++++++ NEXTCLOUD~~.cmake | 82 +++++++++++++++++++++++++++++++++++++++++++ NextcloudCPack.cmake | 4 +-- 5 files changed, 168 insertions(+), 8 deletions(-) create mode 100644 IONOS.cmake create mode 100644 NEXTCLOUD~~.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 17738c161729e..2c3514557386b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ set(CMAKE_XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME YES) set(BIN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") -include(${CMAKE_SOURCE_DIR}/NEXTCLOUD.cmake) +include(${CMAKE_SOURCE_DIR}/IONOS.cmake) # CfAPI Shell Extensions set( CFAPI_SHELL_EXTENSIONS_LIB_NAME CfApiShellExtensions ) @@ -57,10 +57,6 @@ string(REPLACE "&" "&" APPLICATION_NAME_XML_ESCAPED "${APPLICATION_NAME}") string(REPLACE "<" "<" APPLICATION_NAME_XML_ESCAPED "${APPLICATION_NAME_XML_ESCAPED}") string(REPLACE ">" ">" APPLICATION_NAME_XML_ESCAPED "${APPLICATION_NAME_XML_ESCAPED}") -string(REPLACE "&" "&" APPLICATION_VENDOR_XML_ESCAPED "${APPLICATION_VENDOR}") -string(REPLACE "<" "<" APPLICATION_VENDOR_XML_ESCAPED "${APPLICATION_VENDOR_XML_ESCAPED}") -string(REPLACE ">" ">" APPLICATION_VENDOR_XML_ESCAPED "${APPLICATION_VENDOR_XML_ESCAPED}") - if (NOT DEFINED LINUX_PACKAGE_SHORTNAME) set(LINUX_PACKAGE_SHORTNAME "${APPLICATION_SHORTNAME}") endif() diff --git a/CPackOptions.cmake.in b/CPackOptions.cmake.in index 109af43d21514..ac7e214aec20b 100644 --- a/CPackOptions.cmake.in +++ b/CPackOptions.cmake.in @@ -10,7 +10,7 @@ endif(CPACK_GENERATOR MATCHES "NSIS") set( CMAKE_SOURCE_DIR @CMAKE_SOURCE_DIR@ ) set( CMAKE_BINARY_DIR @CMAKE_BINARY_DIR@ ) -include("${CMAKE_SOURCE_DIR}/NEXTCLOUD.cmake") +include("${CMAKE_SOURCE_DIR}/IONOS.cmake") set( CRASHREPORTER_EXECUTABLE @CRASHREPORTER_EXECUTABLE@) diff --git a/IONOS.cmake b/IONOS.cmake new file mode 100644 index 0000000000000..c6f81f9a00d80 --- /dev/null +++ b/IONOS.cmake @@ -0,0 +1,82 @@ +set( APPLICATION_NAME "HiDrive Next" ) +set( APPLICATION_SHORTNAME "HiDriveNext" ) +set( APPLICATION_EXECUTABLE "HiDriveNext" ) +set( APPLICATION_CONFIG_NAME "${APPLICATION_EXECUTABLE}" ) +set( APPLICATION_DOMAIN "ionos.com" ) +set( APPLICATION_VENDOR "IONOS SE" ) +set( APPLICATION_UPDATE_URL "https://updates.nextcloud.org/client/" CACHE STRING "URL for updater" ) +set( APPLICATION_HELP_URL "" CACHE STRING "URL for the help menu" ) + +if(APPLE AND APPLICATION_NAME STREQUAL "Nextcloud" AND EXISTS "${CMAKE_SOURCE_DIR}/theme/colored/Nextcloud-macOS-icon.svg") + set( APPLICATION_ICON_NAME "Nextcloud-macOS" ) + message("Using macOS-specific application icon: ${APPLICATION_ICON_NAME}") +else() + set( APPLICATION_ICON_NAME "${APPLICATION_SHORTNAME}" ) +endif() + +set( APPLICATION_ICON_SET "SVG" ) +set( APPLICATION_SERVER_URL "https://easy-qa-1.nextcloud-ionos.com" CACHE STRING "URL for the server to use. If entered, the UI field will be pre-filled with it" ) +set( APPLICATION_SERVER_URL_ENFORCE ON ) # If set and APPLICATION_SERVER_URL is defined, the server can only connect to the pre-defined URL +set( APPLICATION_REV_DOMAIN "com.ionos.hidrivenext.desktopclient" ) +# set( APPLICATION_VIRTUALFILE_SUFFIX "nextcloud" CACHE STRING "Virtual file suffix (not including the .)") +set( APPLICATION_OCSP_STAPLING_ENABLED OFF ) +set( APPLICATION_FORBID_BAD_SSL OFF ) + +set( LINUX_PACKAGE_SHORTNAME "hidrivenext" ) +set( LINUX_APPLICATION_ID "${APPLICATION_REV_DOMAIN}.${LINUX_PACKAGE_SHORTNAME}") + +set( THEME_CLASS "NextcloudTheme" ) +set( WIN_SETUP_BITMAP_PATH "${CMAKE_SOURCE_DIR}/admin/win/nsi" ) + +set( MAC_INSTALLER_BACKGROUND_FILE "${CMAKE_SOURCE_DIR}/admin/osx/installer-background.png" CACHE STRING "The MacOSX installer background image") + +# set( THEME_INCLUDE "${OEM_THEME_DIR}/mytheme.h" ) +# set( APPLICATION_LICENSE "${OEM_THEME_DIR}/license.txt ) + +option( WITH_CRASHREPORTER "Build crashreporter" OFF ) +#set( CRASHREPORTER_SUBMIT_URL "https://crash-reports.owncloud.com/submit" CACHE STRING "URL for crash reporter" ) +#set( CRASHREPORTER_ICON ":/owncloud-icon.png" ) + +## Updater options +option( BUILD_UPDATER "Build updater" ON ) + +option( WITH_PROVIDERS "Build with providers list" ON ) + +option( ENFORCE_VIRTUAL_FILES_SYNC_FOLDER "Enforce use of virtual files sync folder when available" OFF ) + +option(ENFORCE_SINGLE_ACCOUNT "Enforce use of a single account in desktop client" OFF) + +option( DO_NOT_USE_PROXY "Do not use system wide proxy, instead always do a direct connection to server" OFF ) + +## Theming options +set(NEXTCLOUD_BACKGROUND_COLOR "#0082c9" CACHE STRING "Default Nextcloud background color") +set( APPLICATION_WIZARD_HEADER_BACKGROUND_COLOR ${NEXTCLOUD_BACKGROUND_COLOR} CACHE STRING "Hex color of the wizard header background") +set( APPLICATION_WIZARD_HEADER_TITLE_COLOR "#000000" CACHE STRING "Hex color of the text in the wizard header") +option( APPLICATION_WIZARD_USE_CUSTOM_LOGO "Use the logo from ':/client/theme/colored/wizard_logo.(png|svg)' else the default application icon is used" ON ) + + +# +## Windows Shell Extensions & MSI - IMPORTANT: Generate new GUIDs for custom builds with "guidgen" or "uuidgen" +# +if(WIN32) + # Context Menu + set( WIN_SHELLEXT_CONTEXT_MENU_GUID "{28F7B423-F04D-4035-9163-742ABAB2C09D}" ) + + # Overlays + set( WIN_SHELLEXT_OVERLAY_GUID_ERROR "{69E48F56-3877-4D15-BE6C-148D20D9AD39}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_OK "{66163328-2F7D-4727-8557-07AA1A4951D4}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_OK_SHARED "{FE8E7808-F772-402A-96C5-5998ADAE34B7}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_SYNC "{BE95EBD1-B334-4D70-8797-F3827DBA7884}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_WARNING "{F5D52817-2813-4CF7-94E6-4D58D96E5EB3}" ) + + # MSI Upgrade Code (without brackets) + set( WIN_MSI_UPGRADE_CODE "DB5332BA-8B5B-43A9-8594-48263DE4E7EA" ) + + # Windows build options + option( BUILD_WIN_MSI "Build MSI scripts and helper DLL" OFF ) + option( BUILD_WIN_TOOLS "Build Win32 migration tools" OFF ) +endif() + +if (APPLE AND CMAKE_OSX_DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 11.0) + option( BUILD_FILE_PROVIDER_MODULE "Build the macOS virtual files File Provider module" OFF ) +endif() diff --git a/NEXTCLOUD~~.cmake b/NEXTCLOUD~~.cmake new file mode 100644 index 0000000000000..ab93325d011ba --- /dev/null +++ b/NEXTCLOUD~~.cmake @@ -0,0 +1,82 @@ +set( APPLICATION_NAME "HiDrvie Next" ) +set( APPLICATION_SHORTNAME "Easystorage" ) +set( APPLICATION_EXECUTABLE "hidrivenext" ) +set( APPLICATION_CONFIG_NAME "${APPLICATION_EXECUTABLE}" ) +set( APPLICATION_DOMAIN "nextcloud.com" ) +set( APPLICATION_VENDOR "IONOS Group SE" ) +set( APPLICATION_UPDATE_URL "https://updates.nextcloud.org/client/" CACHE STRING "URL for updater" ) +set( APPLICATION_HELP_URL "" CACHE STRING "URL for the help menu" ) + +if(APPLE AND APPLICATION_NAME STREQUAL "Nextcloud" AND EXISTS "${CMAKE_SOURCE_DIR}/theme/colored/Nextcloud-macOS-icon.svg") + set( APPLICATION_ICON_NAME "Nextcloud-macOS" ) + message("Using macOS-specific application icon: ${APPLICATION_ICON_NAME}") +else() + set( APPLICATION_ICON_NAME "${APPLICATION_SHORTNAME}" ) +endif() + +set( APPLICATION_ICON_SET "SVG" ) +set( APPLICATION_SERVER_URL "https://easy-qa-1.nextcloud-ionos.com" CACHE STRING "URL for the server to use. If entered, the UI field will be pre-filled with it" ) +set( APPLICATION_SERVER_URL_ENFORCE ON ) # If set and APPLICATION_SERVER_URL is defined, the server can only connect to the pre-defined URL +set( APPLICATION_REV_DOMAIN "com.nextcloud.desktopclient" ) +# set( APPLICATION_VIRTUALFILE_SUFFIX "nextcloud" CACHE STRING "Virtual file suffix (not including the .)") +set( APPLICATION_OCSP_STAPLING_ENABLED OFF ) +set( APPLICATION_FORBID_BAD_SSL OFF ) + +set( LINUX_PACKAGE_SHORTNAME "easystorage" ) +set( LINUX_APPLICATION_ID "${APPLICATION_REV_DOMAIN}.${LINUX_PACKAGE_SHORTNAME}") + +set( THEME_CLASS "NextcloudTheme" ) +set( WIN_SETUP_BITMAP_PATH "${CMAKE_SOURCE_DIR}/admin/win/nsi" ) + +set( MAC_INSTALLER_BACKGROUND_FILE "${CMAKE_SOURCE_DIR}/admin/osx/installer-background.png" CACHE STRING "The MacOSX installer background image") + +# set( THEME_INCLUDE "${OEM_THEME_DIR}/mytheme.h" ) +# set( APPLICATION_LICENSE "${OEM_THEME_DIR}/license.txt ) + +option( WITH_CRASHREPORTER "Build crashreporter" OFF ) +#set( CRASHREPORTER_SUBMIT_URL "https://crash-reports.owncloud.com/submit" CACHE STRING "URL for crash reporter" ) +#set( CRASHREPORTER_ICON ":/owncloud-icon.png" ) + +## Updater options +option( BUILD_UPDATER "Build updater" ON ) + +option( WITH_PROVIDERS "Build with providers list" ON ) + +option( ENFORCE_VIRTUAL_FILES_SYNC_FOLDER "Enforce use of virtual files sync folder when available" OFF ) + +option(ENFORCE_SINGLE_ACCOUNT "Enforce use of a single account in desktop client" OFF) + +option( DO_NOT_USE_PROXY "Do not use system wide proxy, instead always do a direct connection to server" OFF ) + +## Theming options +set(NEXTCLOUD_BACKGROUND_COLOR "#0082c9" CACHE STRING "Default Nextcloud background color") +set( APPLICATION_WIZARD_HEADER_BACKGROUND_COLOR ${NEXTCLOUD_BACKGROUND_COLOR} CACHE STRING "Hex color of the wizard header background") +set( APPLICATION_WIZARD_HEADER_TITLE_COLOR "#000000" CACHE STRING "Hex color of the text in the wizard header") +option( APPLICATION_WIZARD_USE_CUSTOM_LOGO "Use the logo from ':/client/theme/colored/wizard_logo.(png|svg)' else the default application icon is used" ON ) + + +# +## Windows Shell Extensions & MSI - IMPORTANT: Generate new GUIDs for custom builds with "guidgen" or "uuidgen" +# +if(WIN32) + # Context Menu + set( WIN_SHELLEXT_CONTEXT_MENU_GUID "{BC6988AB-ACE2-4B81-84DC-DC34F9B24401}" ) + + # Overlays + set( WIN_SHELLEXT_OVERLAY_GUID_ERROR "{E0342B74-7593-4C70-9D61-22F294AAFE05}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_OK "{E1094E94-BE93-4EA2-9639-8475C68F3886}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_OK_SHARED "{E243AD85-F71B-496B-B17E-B8091CBE93D2}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_SYNC "{E3D6DB20-1D83-4829-B5C9-941B31C0C35A}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_WARNING "{E4977F33-F93A-4A0A-9D3C-83DEA0EE8483}" ) + + # MSI Upgrade Code (without brackets) + set( WIN_MSI_UPGRADE_CODE "FD2FCCA9-BB8F-4485-8F70-A0621B84A7F4" ) + + # Windows build options + option( BUILD_WIN_MSI "Build MSI scripts and helper DLL" OFF ) + option( BUILD_WIN_TOOLS "Build Win32 migration tools" OFF ) +endif() + +if (APPLE AND CMAKE_OSX_DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 11.0) + option( BUILD_FILE_PROVIDER_MODULE "Build the macOS virtual files File Provider module" OFF ) +endif() diff --git a/NextcloudCPack.cmake b/NextcloudCPack.cmake index 0682090c06d4c..96bc665a274f3 100644 --- a/NextcloudCPack.cmake +++ b/NextcloudCPack.cmake @@ -1,8 +1,8 @@ include( InstallRequiredSystemLibraries ) -set( CPACK_PACKAGE_CONTACT "Dominik Schmidt " ) +# set( CPACK_PACKAGE_CONTACT "Dominik Schmidt " ) -include("${CMAKE_SOURCE_DIR}/NEXTCLOUD.cmake") +include("${CMAKE_SOURCE_DIR}/IONOS.cmake") include( VERSION.cmake ) set( CPACK_PACKAGE_VERSION_MAJOR ${MIRALL_VERSION_MAJOR} ) From a38451385ffeee7c82dd57a2c2c0075cd752f08e Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 14:14:11 +0100 Subject: [PATCH 002/104] add vscode configuration --- .gitignore | 6 ++- .vscode/launch.json | 54 +++++++++++++++++++++++ .vscode/nc-desktop-snippets.code-snippets | 30 +++++++++++++ .vscode/settings.json | 8 ++++ .vscode/tasks.json | 37 ++++++++++++++++ 5 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/nc-desktop-snippets.code-snippets create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json diff --git a/.gitignore b/.gitignore index 85a87ed91464e..8b46ffc793a25 100644 --- a/.gitignore +++ b/.gitignore @@ -18,7 +18,7 @@ t1.cfg ## Ignore Visual Studio Code config & environment files .vs/ -.vscode/ +# .vscode/ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. @@ -190,3 +190,7 @@ convert.exe *-w10startmenu.png *state-*.png theme.qrc + +.idea/ + +shell_integration/MacOSX/NextcloudIntegration/NextcloudIntegration.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/ diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000000000..3fe60132e26b1 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,54 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + + { + "name": "(RelWithDebInfo) Launch HiDriveNext", + "type": "cppvsdbg", + "request": "launch", + "program": "${workspaceFolder}/build/win32-MSVC-x64/RelWithDebInfo/bin/HiDriveNext.exe", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [ + { + "name": "PATH", + "value": "C:/Craft64/bin;%PATH%" + }, + ], + }, + { + "name": "(RelWithDebInfo) Launch NextCloud", + "type": "cppvsdbg", + "request": "launch", + "program": "${workspaceFolder}/build/win32-MSVC-x64/RelWithDebInfo/bin/nextcloud.exe", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [ + { + "name": "PATH", + "value": "C:/Craft64/bin;%PATH%" + }, + ], + }, + { + "name": "(Release) Launch NextCloud", + "type": "cppvsdbg", + "request": "launch", + "program": "${workspaceFolder}/build/win32-MSVC-x64/Release/bin/nextcloud.exe", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [ + { + "name": "PATH", + "value": "C:/Craft64/bin;%PATH%" + }, + ], + }, + ] +} \ No newline at end of file diff --git a/.vscode/nc-desktop-snippets.code-snippets b/.vscode/nc-desktop-snippets.code-snippets new file mode 100644 index 0000000000000..920dea7cb70f6 --- /dev/null +++ b/.vscode/nc-desktop-snippets.code-snippets @@ -0,0 +1,30 @@ +{ + // Place your nc-desktop workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and + // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope + // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is + // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. + // Placeholders with the same ids are connected. + // Example: + // "Print to console": { + // "scope": "javascript,typescript", + // "prefix": "log", + // "body": [ + // "console.log('$1');", + // "$2" + // ], + // "description": "Log output to console" + // } + + "DebugLog": { + "scope": "cpp", + "prefix": "dlog", + "body": [ + "char buffer$1[256];", + "sprintf(buffer$1, \"$2\\n\", $3);", + "OutputDebugStringA(buffer$1);" + ], + "description": "Debug log output" + } + +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000000..0d75aa43d4575 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "cmake.generator": "Ninja", + "cmake.configureSettings": { + "CMAKE_PREFIX_PATH": "C:/Craft64", + "BUILD_TESTING":"OFF", + }, + "cmake.buildDirectory": "${workspaceFolder}/build/${buildKitTargetOs}-${buildKitVendor}-${buildKitTargetArch}/${buildType}", +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000000000..988cc883ce738 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,37 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "clean RelWithDebInfo", + "type": "shell", + "command": "powershell", + "args": [ + "-NoProfile", + "-Command", + "Remove-Item -Recurse -Force .\\build\\win32-MSVC-x64\\RelWithDebInfo" + ], + "problemMatcher": [], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "A task to clean the build directory using PowerShell" + }, + { + "label": "clean Release", + "type": "shell", + "command": "powershell", + "args": [ + "-NoProfile", + "-Command", + "Remove-Item -Recurse -Force .\\build\\win32-MSVC-x64\\Release" + ], + "problemMatcher": [], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "A task to clean the build directory using PowerShell" + }, + ] +} \ No newline at end of file From 88277edfa75e9e564b6f848b803c9034512a0ae0 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 14:15:05 +0100 Subject: [PATCH 003/104] add licence and notice --- LICENSE | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ NOTICE | 18 ++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 LICENSE create mode 100644 NOTICE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000..eda7bae4c9726 --- /dev/null +++ b/LICENSE @@ -0,0 +1,73 @@ +Apache License, Version 2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and You must cause any modified files to carry prominent notices stating that You changed the files; and You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + +Copyright 2022-2024 chinchilla + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. \ No newline at end of file diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000000000..59ff260650176 --- /dev/null +++ b/NOTICE @@ -0,0 +1,18 @@ +Nextcloud Desktop - Ionos HiDrive Next + +This project includes software developed by chinchilla, available at: +[https://github.com/564398053/Qt-GoogleAnalytics4]. + +Bundled Components: + Qt-GoogleAnalytics4 + ga4/ganalytics.cpp + ga4/ganalytics_worker.cpp + Copyright 2022 chinchilla + Licensed under the Apache License, Version 2.0. + You may obtain a copy of the license at: + [http://www.apache.org/licenses/LICENSE-2.0]. + + +Important Note: +The rest of this project is not licensed under the Apache License, Version 2.0. It remains under the original license as specified in the original repository: +[https://github.com/IONOS-Productivity/nc-desktop]. \ No newline at end of file From d80048bc341bb89d6d76c412aa5dacd9763918b0 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 14:16:22 +0100 Subject: [PATCH 004/104] add ionos fonts --- fonts/OpenSans-Bold.ttf | Bin 0 -> 104120 bytes fonts/OpenSans-BoldItalic.ttf | Bin 0 -> 92628 bytes fonts/OpenSans-ExtraBold.ttf | Bin 0 -> 102076 bytes fonts/OpenSans-ExtraBoldItalic.ttf | Bin 0 -> 92772 bytes fonts/OpenSans-Italic.ttf | Bin 0 -> 92240 bytes fonts/OpenSans-Light.ttf | Bin 0 -> 101696 bytes fonts/OpenSans-LightItalic.ttf | Bin 0 -> 92488 bytes fonts/OpenSans-Regular.ttf | Bin 0 -> 96932 bytes fonts/OpenSans-SemiBold.ttf | Bin 0 -> 100820 bytes fonts/OpenSans-SemiBoldItalic.ttf | Bin 0 -> 92180 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 fonts/OpenSans-Bold.ttf create mode 100644 fonts/OpenSans-BoldItalic.ttf create mode 100644 fonts/OpenSans-ExtraBold.ttf create mode 100644 fonts/OpenSans-ExtraBoldItalic.ttf create mode 100644 fonts/OpenSans-Italic.ttf create mode 100644 fonts/OpenSans-Light.ttf create mode 100644 fonts/OpenSans-LightItalic.ttf create mode 100644 fonts/OpenSans-Regular.ttf create mode 100644 fonts/OpenSans-SemiBold.ttf create mode 100644 fonts/OpenSans-SemiBoldItalic.ttf diff --git a/fonts/OpenSans-Bold.ttf b/fonts/OpenSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..efdd5e84a0397ecada7b9cfde51db87db08766bd GIT binary patch literal 104120 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

n{#NV($fZ=b2Ttd7 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 -Ui0>vvum!cQP#SwwX988o3plLZOz)* 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 literal 0 HcmV?d00001 diff --git a/fonts/OpenSans-BoldItalic.ttf b/fonts/OpenSans-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9bf9b4e97b6576c8cc3d4527073731fd9cc57493 GIT binary patch literal 92628 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

4J;+I{;ffTJG!iGMcG*?Vwl&%p(3b?*`L@59ZU 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

9nNjw4~{@r0I~;bjWEs}nhrT# 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

!GC&_!#ZtN*Mh&_?3T(2tal^%sA zmG3b;CLNF-mz&yV%+QS(P%~qWp{=PgAt5`@*gUtcrFCj^OP%wGX)QH#>-dk(BWk9$ z%@McmBc?XCOl_N4Kcj9w|H&0fsJfQA*2Y#*O7_f}sV&V-h8i{1XHRLVn_H)^5s4wY zd0KN*-ED>%H8tgSmt~sTeJ|(MHqVi#;*UOWY7L6h*Q!Y#%C4DX$k%|>X+ZK-Aax>f z&c}B(Q>WH7&2g@C+#2#V&~<96&sR&V6Nzb9H*nLm?t6I{M`RlQxD1=xJacA^TCU5q z9uKDB-T6%o-S_hFDK#x}1O7OVnA13;R!~phC~i$7RLlj*8r6H}5dwYwO5Z4MO(RrX z)m-Ym+XzRMM9vX~JYkK~O@-Z{P1C#YT}Jl6)#bJu9;UU_)iuqiX{v3Usvjjdte+tg zmr*_Q&FJxosdR6unbq7nr=@vT zL!Ff0G)<~&nr0ZQakp9H?pT$(%_4Cf+tAiDt)``I=8T%QIj+q;pY+8l4lODU#XZ2f zwDfq;7ppk5s7ZF zp-ih)n^vnbwN`B+(Ur9{HcivD@xQKRJ?rG!*7M0wrb%&|nwoCy#?Umc$9-jw`}Xd8 z{dl#m3q;~P-XTlQ3mmt)8O=@8TAi~wE^4+K$E_hdU%WEZ)QQwIwsl5LYlC{<+nUrskznF-e-s>=j<7?8fwI?v8JhcPTh>U#u}IWS*?vgMZ9*(pQHZn zIs$E5yy9Z-GInMo?`^~jm$DuoIFFrKH%-mx(TGoOfTt7iLEKS_Y8D{a7?69>xS=| zYoyYeHiL$dRMgNY<>D%8ZB#*JXPSALcC2{W?pkL1JLeh)QC#YJ)XWJ8sifld5_jHh z>hJbX#Y>&|UY>&Nx@o+Uy4t!Kb7~A)S@Ht>An_mP@G8o@Fx_pUdNV}zR77)fSyLOE z-)Lx7>nOD}H0xV=1z|BP>NyAX)Zk0AP{*mbfR3)2Gr)xxYe&ny7n&|wnJV|RAH{>S z_*mQ;Yw8;t6B81WlI?e?iH^G@$6fcYDX!WVsi~Z-j;A#KlgrpREDM^m|?N=|Z=oa`t$ z*->(`qvT`aQXDW+95A}+lH!1o;((Fj zfRW;Wk>gg-fN7F?-)gFFoNK># zX$3A#+7GqalZZDRbb_K66o2VT$&o293OE^lM)gVv{Yb@=Opbp zSxZy2G*wH}v@~5yGqf~QOS82!ho=Sk1qC84D9F{)Jf0>b76`ZrNjc(uLUNvfk5s@% zD&QpMC+GA0NJTk``6|9hMgGKs6t%phf@EWDO>1LK^ZZ6JoP!sl21rwMV;h=Vnsm+L zZ<+Yp#{UXTlGPFulGPHCCd&=Y&9`xuO{tsFJWu3G(Q>6EsPIx!Rs2&@wdXYLIZdrc zN}5^^I8;!-PZM-ZNJ$fPL@MfsRL~Krpd(U2N2G#|NCh2{s&q<8v%?c~!FxfMgp_m* ze!2!fU4x&l!B5xVr)%)jHTdZo{B#X|x&}X8gP*R!PuJk5Yw*)G_~{z_3=MvU20ufC zpP|9e(BNli@G~^{85-OS4Q_@8H$#J)p~212;AUuWGc>rF8k|fG4kmG2zEUzZIGGxp zOs$@o8oW#mUZw^wQ-hbO!OPU(Woqy;HF()tJ+rlXW^3@XHTc;Y{A>+=wgx|2gP*Oz z&(`2)Yw)u*_}Lo#Yz=<420vSapQFLg(ctH3@N+cyIU4*N4StRWKSzU~qruP7;OA)Y zb2Ru`drZmE;OA)Ya|%p?uDJ<(9;MPaSHmG!!y#A0Ay>m8SHmG!!y#A0Ay>m8SHmG! z!y#A0Ay=b8u7*Qyz6QIX8+M*X2d&>o(fW;)JPn6D4Tn4p2em&*NXgT1$kTAh({RYs zaLChe$kTAh({RYs=#Z!JAzy=^uhAf1qd~p~KVO5NuffmPXppbL&)4ARYw+_m`1upSXf$Vp|-}tlETmXv9LhGynSzG_xs+?e)s0)&F#*V zj$b-{>G-ANmyTaLe(Ct7lqT#1#_$eBGiiV$};iqWvC%@mOX!t2w{4DCzYcLfSe=02gR49JYHJ&219;x-n zs$Ts=SO1XeA5#58s((oJ52^kk)jy>Aht%_fRR56bU(q$5A|2m&ithNvQ*_5So}xRx z@f6+hji>02Z#+eJeB&v)<9GD@6kX#e(&IOdqI>+tQFM>LGb>y}KUZ;$?elJ%tJ&NS z<0@_3kB*;*j{9LeExN{2r2An!MRz}pr|9m7@f6+r!FY=9{a`#r_kJ**qC39vwCEa7 zk=_r+Q*`eK<0-oLgYgvI`@wjM?)_jqMfdoPr|2HP@f6+TH=Y(<<0;bPHD027yv9p( zkJorP9sP6ROf1KCr*U*7&0z6v&8A~#u^riMC*zoX&2%zKY=?AUx^pB`cMft;YpeaO za%b1kYHTa@z2%ku;mUBA5i_`U*8;?Rp zrr@2n&1gGBKAacq>YwTB+0Bskmip@)do<)%78fSMJ&8I9apj^xqJ;>>=09Q_g@zXvbSe<9)I<+r{nIHLbb* zR$8!MwU?rWF)aI6U5Lle8ZY*E#)}9gdzDROr#Qj^T@Ao*0Q78IOlPsTIbZU0&Z>wBryd;i!n2=+epcYt3#dF0$_s>$S4{QVKe z$4(hJ`Tl9|JiQJ0{D=iNO`AG%){h%!0H6N-1tI$DX*2Ghw*N-;2LkEyD{ycNqHq}F z0#$niNze$vyJbm(-wLxboSEG%4wJ)$@554Q+q>h$Io>6zJ-5on$v@y-y7tTBVg4?I z5bo9y5-bL5>OH|BBHmq?YBCFXp&6OoiNoR`*}2ZF5SvvU*Cml0q3^6CTfGAwopImr z1ykxqi?X!y*0G5X4=$TBcOc;Ikv7Zv4s6t-MglzNi7bGU01Mw@&H8qszhr!g(gCVH z-d{x{`^IJodO=WC;=K_kheQQ)sSDc)h_a7_$dMdp>eam!uecIPH5}5aID~Xy) z^i#LspDE{TUU5s$EmGkp*XSIwgneK8)msxXk!hi9ruaB`~VnSd@ZwaOYzoGUTO6cXah%E?Yl zN=(ejj(547nh?8`7}rH@vxeA1LgZ9>&tURbt% zNl|&_oMn%ai#sm_zjx4BL0tK{>D@|2T?IZoLRZRP-PVv3*=;* z89$K!*8_Fq?W6Rp+^6mBtbsY%<)I{h`tjD6*H1dOWc6RgdH&a?ed>RW@uX_cxo;k= zIoFz+QuQjmy7slTZxGXSTfI~Gi`|l|HsQt1%8S5W+kRDbN_9er7E**vA>ADw*|o|O zX)#C^DJ?BN-WV4zrxr&N zRu|8gh1alNDa$3XUC_SyPC`c8_wQfYu%|VCP$*fD{_4bov?O)yhriRS;>FAYXa9cP z{ywna(CiVU_2tvO(pTjlIltqXM?Y)a7yr_bztHoO>8*mnXJolwuZrTBk@<1Xw)${l z&z{x093splMy%ly6R=Zc(sDwP6-7=I31QMvO!rHRRp*6Z?4EA7q?dz|uv%VRl@l=ATj+jq zPY29Ey)64+5~CFE@Dtd?Z_{_giRB;-}n$e@lDuE{y_J|Rdj?+FSZL@kR#h9dm{ z4JGIQB1h@VWF*m(Cc1%M7t4r||Mn~0B#`#!=}q#Ea1EML`xf+b2B?={7d4Jti;L{g z&RRw<{*}QhLL|h;qVqEtY{^V*E>cn0srnt!x(u01&MhWeg$rdsW z*y-L5km@}FAz-}B?j2kPv3YbxP1D>*E1MQfeyFOvd0H8;+1!3rF6QzWxJ!~n3${}c zI=Q%QAKfCAsE*%qV0T2J5F;0X48m=~gJ1~1Etw$i_U{KY@Fl5QU_J~)P^xTX|Gr}dmzo*}QkmTy4oj{}tZGu+z{JGZ8c(7o&{*RM^ixkUcOx2y zb5uY}t6F0V!Su4D3scdG0!)mHvnam-zocBILFBQ!UTJ-ruA`sNI$reJ7f&w9ZJt<@ zQ@MIm|H9cXtbh35%a8pgPk-h^hc@huhyVFgN+PKkGyJ~X+%OV1d~kY?nwx|B?qhOz z1N2#{&{#-tTZlS9GONt0T8}|vHcJ|{q)4>`1etIn||Ldi4>KeqK>HF`>;P6Udvm1LB zE+h!aZksN)))S!9Sp-W&t;Z53fD{l~h1HeK%3~~_rI<>!#;K@tMFO&2WmOR=KT z@v#dFN7Su)XHJH8!m$lomeBUUUi>wDD0$sgRNGKopQAb+Lr;YjKl|L)&pvvS{<8Y! zf5tyco*+|h*Ss*k_324PeL<}_><|UD)R4a*74)?L*m2}-VaM; zwbL6aPbH<7Z)ZYxWcuVcM2Ho-VSQE;2%VIq6LgXHd30fd2WyqbHkrF!8qSEY zO*zH{X1H=K%qnq4v?y)@H&^1BPkvlGzoCi#aN{BrbH%!Omx8tq=v6XQ)x9($sb{}D z)rohXedJhj>Gs*5{q*q$k~VwZ{&@!{wXLpSl-sYSc&7N5K|K>IEg_?FGc%dJnE;%p zV@JY-c%iF1#28cS(b$(4|&e@0jT zIkTx@>U*b>wfRpst=X~g&o_SfgJujE*-$ptCA~wxrupASlb#9NKO8aWn|(V-@EZDa z>{DY`F2BF13fMv8iWB4(Xk0tfhz47|$6)MGy^2QctbSqkJDga*Dn9(^)ao(K3kQwx z>tt!vln2WP&6x(fEVeJDH~9=2`2WVeL8f|7kWtnM8J{slrC1G@t20=#iCK{IeTJm8 z_yKcMvijGV;;VkZM5q&X$O)i##6|Dw+7Oup|Hp8<{K?dJjpTwq=tq+n_j7sl1IA zFf2BN)v??x7DoG1|rBY#7EbA;zJC99*@E2aVaVt`ilFyuHK@H@hDg8$~LGq zYN)KcLJL7>$gLac8BqW5dvh-TaO`K-19Qd<4K~o(Jl2?cA7Tx6)vN}0&$8r_$s}U& z?)9F>C-(1E)h(5_C;><%!?C)(M12i7_7IBU8`?C1p@oHAljOiWQy{+5V{+xBblCBZ z2!hEPTyis$H}2skb>><-a{(c1z&<{%i_AQV7p{XuHQ)vVi*#&FKAdgln1tTz&{E<@zlT&DH z9^E;lq->aQsh+y$(+T2_PD5%xHUvlI&>k|<4|w0-on@k6%G zJpMCnqnD49;TK83Kc5-CPF}o@Ufb~aV=0;R{d$rDe=?Bl|8^lg>2iVFKnoS~jsl=1 zFss@;2vMNQQt45F*#23e5*;8m_(bu>uwGT($8<5JGzD_MfmlgK+pQ^YG))>=x=mV6 zf28++rP@Q!x4pTHNSo)kww=K07}fV-rXV5FZB++g9yJj~)gX^3k-$n1@z1B|V(c)R z5>^@C_*&Gqj^s#V`p~!xvcEqq&LihA!{Hz3VS1I(jzQne*Ae43-UA(w{TYD{unZ{K zLgxW!V_%xmlkDzC5yk=B6?(|G7p>R}XbQJg2nRa|a!`=5(i0@hA(bB4zb75oG6xbA z>evz3Zqa6RX1QE(;@9G+*KX0@;5=OThAf~YaL?)&UU=;IyiiF3RFvkZ4cK0OcvmFvgP30;*gipdGqP! z1#D?#@ifvfjXWXNc()-C`&NvGFS`eMqc1tcz+C{uh{GVj79_bG8jWNZH+Vxb4(;BM zA^w_iZ1=|VRZ>;$#f!CVJE{ai-=R)P#=G@`X>Wjpe1`|F1!t7Z?ot<@*+kr}7iUhG zIJ$h|lqmeMn4U>pc9A-xNMUI66RJM9p8DkCIREOdb7*01onF-Hv_w*Y{}@s{=;bat zB%dt~ZX#gGU(&MeBPS`#Tbx+e6)b(+`=waa!wZ@AuFPMNO=fs`%mtp1jsdy~xDrW_ z26+SkW=x&g9o`OS0nq3-a;{jl=k^l5?|6@<3h%KBVeVkF7$gP=dKI*bx&tK;%M^#a z5KuA!3Up8|_Lztj+P;?Q2qJStwU+!#)YGH%FSE0H8nhHXJRLE@dl{2lm-Wy^3EzG0 zzI|EQU3CLyGYD39pk4|jvPLUud{c1=@XbV=xh{)Cl|=LCd2Li=E1QQLCD8#$#S9&xS!G!JdTR5mt#;$NV6|N;LY+*4M zG?`gyB{Fdwr5i8P|In{LgMxpwY1rt^qdyt(%5c>QdKQ-W1}*(J=}H3dwf~Cu*o@XK z^s5)IZzkc2R*^4ZU4hUlkViRakVlqbFD-*SK2rJ&EK}rG!GT}^>P1$xDZ&)_68$Uv zN9`EC%d?3@Y~HDb!>08w%$J2WdXYw`_FSUXv+MJbRK!~8Ccai9GAdo%CUu|?7z#mg z2i~>d@X!1zoG%**6Un!7c%hv_O=&R^Nz`{AU84gw>Y(8+ogfeV?Sa>uM%*{{ucI2V z_%rk-G+gc!T2K0uRH6j|_Whf_vzdOodFITGBxVcJojw{cJEn(+2ah>WkPHH|F_I|R zt2~kvEMlLX9g2x55)gwCB1=ZHQe&|@I;={Z7&e{LVqqK6J+Yynik(w>(kc2C{d3Akr8QsHl~sgxYnnY_;V;kpa&YnMbKU*=Ha5>7 zhyL~7%nZ_))4z9KL`Ftc<43a>o|-ukMzKe3=FrmnJ^*&>pijRCbu@y_9jK9HXf|0< zMoOHLq4eGp+zEzVfbx=5Oj zS&%tUEygUt&;@!qz#0%AAO#4(l{q3TF*+PmVZWeuZB~SExi0AnS?^7y730Xm5k{@P zAWTUPww-sboaTNn8!(?21Z@gnhQj}h&_Eci2v4LSV}vo)C`o}vAy{R#Nmic<7(QI_ zKcVE2 z?m&gXKplPH{efJkdPys8r>W$OHMn`!iWBJugPLwR(?@5TY~HIT0ZA%R3pIHp3;!!ytcfE|iI8*NYsjaWU1#Z~vq=>1)VS!aBkH7^ zzp%BQYriT5LgFL=`7p_!4+95^=9}~oe0rV@laRICg7nCp83j#1k|cMUQR5`Y{DUf_ z>I{iG>k^H0j`zCwBJEbM%BMGvX%a9YX}?8o@XVH4Fzpd!S*wDPV_^YH@=1hQIHDHk zY$K8M+B*6?xgmYf<`(n3NM@1t{&bNP*WLnLwQmuYie&3_Im9b%Bl4t;bkPlgkniO$ zrITt0=%U+gP!ScPvm=b<;}R2-avVtWpS)VVES4;b>LY(yzQt{O>1n3-YM^(H$gSY1 z7$M1RjW!sf%wb`gQcsxCER=f8A;C80kFgM!ZC4(%#_%hZv>BohpwT&i39&nYR!-Ki z+~lqmE#wA09;of{X!ZI{PoH00^GKF9hvbsD*&j9b8RT8Nf}U%s>~sFqE;8#t`Oswy z8#}OBj9Nzs+!T0nauBL9_EL}0s1ejQA-dFqCmb1{iwGU8Ldq;o1M+K-m+39?cu!PI zJVat?3t%d)8uCz~Hj|zp1IWV6#B6Q%{Ibloo0nghl~tdUn4H|gjWa$R)2Fie!x1aND~w7GP>K8c8eOSJV-zfRuz_6!8YopD7wXFqDLE7P z{c3XS==m3jZO7qlEsGj@Pbluyr~l%Ls<*7aojXQK_g2x1y_ya-3>%uBOiy%6S9U}d z!)efk(LjeVoYNpA$fgy9D9mcSmj=k(fbPuaxNAEseD!b>uuo!H`Pg1sQDg26|85W4 zmb{0DuHUrc!VK(H6-Xer77R;xau7-T^J>c=H;6!H9BSK$tyY3G@)gT8m0jqdvnKG=pYKuZN_nDg^>g%T%$x_qV?}rUn6k`4}1j&?4S9Y z20cG=+J`X(6M~{9Ka_0!`SfWrj-53=li{S-^3tRgOY4Rd$998EWKgRdrj8Mi z<8s>rqr#&~Jk}6hxWO1w;xQ6I1wutAgkszaK~qdshudq3D-?NFRoO9(#wo=~YPC3J zWMOVuh5o?i)c1|4C%08SmowVkCoWTKJY96^MCv(ejUXB3UVWt215ITgyb&8tZ^k6V zmC|!->d9)iW!Hl8nCD zeG3wM#K@CRW+&$!{C99rh$Yo%4qMc6_NO(Ek9sP@Ue>jAO8NskKl(wZy>+{`XHI-V zfG(&&ifUX^Kcep>$cr7i|3&a{s1WJa8v@N{HB^Z)NDu;{O`IJ`OgQ5_r7JN%ipj5% zHPcAqf>v|4nEAbC(fLefbK-Ke_itOiK5T(Fq0*h2O277=Ra^gDKfm?$H4|FAo0;Z- z`Z%L@K||^V3w)H|{vHhx4TNbgU#{Pga3?EAUZnGXL5+3moQcCm&zgKtp8V$n69yEI znG7&+7_H(tz|sL~xLa=w=?{j|8alHS1L@-=CUs!xJFxSnjO@|lDaU`wLfV%6(}!$^ zDKif$e6w19>UPed6Pju^Tcc9*fz53Mt&EsU7aS<-WUbML*#w3;+!mCZ!2)oMKpr+1 zer4fI16jD#Z0MqehW^FFVw)M+bBx-8=V#7d5U%aBW$N;$L*~=@t@^~+vSBe( z#X0pcjn6*q{ZgL%-i+ZB$4t2Yudj}r(A*XP%GFZ#I)cyjIv3DUw#FJ<{y zgI3vXZm2*r9wK$d&4-i(-pU&p1LguQI<4#3NsP6Cgju|qn)=il?^${B`Vm7E-U7$@ z?c`$28H`z3gr+ayHlXB=*6U;gAfM<|=)$8jRu2=kr!KurVn4vY^g@^F*)@abrdz-L z;tMilKmMg}?3ZTHE4vqwkhhEaBB!<;8idVdfo{W21d7232ueM{My){;Aw=AD30Oz+yg&ShP-`NR#iXTj?8hmX@2 z4*9I#j1TT#$uvLkVLn2Lz%5dcY!D2v%7zeagv#*$vq+F?gxiXLz|3Rr-4@9+y*G0R z=oUJ+IING>)m-j*vSP*gnH?6XsBzh!uaSgVAC~3afB3Pt$;{3ciSw&;26!0-#1)J` zgHh=>&@Ce&&#b^+8VNa71hg=-=8*8AVLiM z!mk0f3y;Kf=4f4XK%_0Q%wsc30Rude&jV51p^o+nC}-YV!8o2bS8!R-BqBwv|9ZS({ovx_>~RxDUOzwWo%`k$Eq7KFmR=-Fj{c*NxU!NH9C6P4p3hC%wl6!k zE!9~Z)h!NIR0W+#f*@#z%Sm<`g6=Z*@$>p?|{E<pdHLaD!1wCJ?G3f`yV zi^ycHHofaMvdtP0s@0gPj*(V`REGu-R_){`4KONKB<4lb+rWyr)^TumJLU0yBhQ-F8tn%UxtC01-!s5MmEDLy<%vg~fD- z;51;?xbOOks1M#SXI7DN&!SQpqJAl|j@JqAl?-!=reI|3lOl*S0$q0mG)g zQfdx0k_G3)`$_6`?+ym_S9GJyRPBLJ72(zy4Gu@R7#=E#tbYV)RV;!V$pov@q;S5A z8y;vI7m7hnC)_$DvV28$jYds&Ot0R%(~zL9X~>x~&E|?6`O1T>y$4sCa;ysWF@%S)COy0?c~%6pTTfg^4_^jKf|qv+~SY134LHfmO#DQ{CWaD(;D5Ra*K+_p+6 z+=8;qUYi_bAFF<;bvNU%f<@?kLFNZt0$4#8M^KPeMCL#wcdtN-Gog58L2e?42{2m* zYXX2h0oE*}KwN|0)R|=i`p4^XY>&5W4eFwKBDY}69({t^Gp^^n7ON}a7~N08BwKnu z5l2sfecPq${YsRrj)X2>)UVg}a8pq~dU5dZ8?U2pP-qf$a)$IgJe@FiprF>7)%Zg0 zE8|n8jxwktG<~q(5Z!!x0CODQ)2b~*M3$Agm}95gDkaGbk$e*Y)R zR&BI?UPg*Z7I{AInddBd^xK4x(H~A3)GsTU9;;+MA??>71xJBR7a`LfrjLw5-90EO z$|i)EZRVjKTd1HJ+NlK3#V|CZLxHoFJcbPqNwC|z$q;$CgsgI%8>T$an^LkN?S;HMkx7Gt=m3s7k_Hd~A)0a=ERvrNeAV@I-GNiI9~!tS!O zP()+bu=ceiG*=}i_?iP4!UxhHeRn}qZByO+_ghm_TlUUxs+&~VvS&d$QPmdq8RqHh z9x9%0Xqf-*{M7D`?rN#Mt7a3u%NyUdszVunFd)25qi60)n<#i z&O-#7WU!C`$znk2-Jq}YXbc9OO|A2_s&LwchZ;YHGK2Z|#d`3SiBl7YHcey*(4L8& zOcxA@xPT;}+0y<_+WCm{spnJZqLfRim%_eH+w~r4l}?h&-nbL3Ck`CIKjJw-B>Ryz zJB~axtA?BR%19|{6gg)iqR2Yy2P6BLymOfkY}-r!*7h!FoPZj3hB`&)F60Y+++Czh zbsmZnp?R)|?C9v!)Vyr7Y)Ez_5A--f0t^E^0kHM{WD9E}Wcu0U%u;?~8`05DXy?8K zV_0|>ECbD=LTn0>JzPo^KLn8pb3d3mT;EWe*!9Qr@9Y>eY)PM9&d5G_zgINGCeX`M zw)YsiV`RU(5gzlB5y%Io)*O${q7)9G^)W!N)u|fGs|WL zh6(%^hAXK$w)I$DHMx9j%jhw6)v9st&40glpZDgEZ0HSYPjA1fu7VWVkQL8CBi4LqnnPr@)9wv ze~B1heu@6Fem(tpt#tgs=0|1}Uv}R*|IL4@PxSirZ=~ttPw2+K9if{)KS3HkUQd5r zzm}LbtS6?IUZ%f-E0&61O50S2;o&>bUty90wJLlGRpYsi)~YqlNRI> z(Mg%0{3syL6D_?lmG0at#-R;Sra!gNorguIsQ#4hqgd#Fkvs}>Z1Q~@wzEhjUYv{{84jUSQj#rB=3{65x|1@+1vzAN? za1L>GQp}r2Z5usm+o;joMvmS#>gPc@*@Fh=x(3SiBVWIN%o|OkwljPk0-hut^}oXNA2r)WQ)-_#Is&^DzQ%LUl=zgx4Gu6 zM;`xc;qtdhq1gY^(?hDeIODq=?9=nX5hZh4X0SPm#5^fSbqw5+fDC1&tIRgqIcnv9&4u0 zO>HW@uUqV(31fz=dtk|C`R1@GQCj=(q6O<>6ECJFRTY1jnid&dv?n{2;YE(fU&_z< zGxQ=6A!47h3_V)H(cpvN{YcBpWN#Y%dNln`{&nneL+)qTbHeih*Wpu#Bl=3BRkK#+G5W{PGpLRt;Z3fe6N)O#d>HAHmE zoh8nEbb9sZh0|*r#cdPj4=$TMy^2vFj#^0!w1G(o+NBSWkS}$@@T!=-^Y2y?JIg>~ zUR^VDVD!k);#K7*LU&%Bw>auVfH`wOYB#u+ogePQq{0tDlp0JU0*MGYE(B{vu> zvdnd%xmb*9dygKjwsk3+(~NrK(`3@v@%feSFg>|cJS$C59Yv+wE+FTiMM#`HOtL{= z`<*wQbK;5a1Vs*!_JCB1_4e3a<*xh+VjO#9(aM*v99ywoUZ0ln^t77glOO+V=9-7k z5cPWGey$5~@&WW&E1H;SwR)XTVX`bB{1(>LuKbV>(DCRn51dLW_jvzB>nJ7Gd8Fd7 znCZQBf>e?LPtq<))NqDmlCe)xwE)dBsJ&gyDu_v9FKLN)FMirZbORH$(DIES1nffB zE*z?y95!}bd%GrvjTL4|r!h8BX!%1R8qqH4u@g)uv7v0_VT=rcyfLWnFsQ<8p%qZs z*!39O2`=J*ZFIeqA-8g`Ga22$Hj7pp6cJ%eFa~)%#^j`gn0ilwKOpec5`3L~8oda2 zSh4FC&U4Ut==F2C?ur-0Q#wNrPorl*TG~VJ&$;vyn)}8)$eR1eQhx~HZ4<{7R?iw< zfcCxw$0Yg#>+f4MzN}Yu*Hp6TPGHgAu5`F*W{QbIJX@2{7h1Vm(C!jVszf0*M;W1d zuG5HSa62Cn+IfWQ&InR2tWrjVbRJQoS>T@qPuD9W!aI+s)XesefcL%`BLa6zVk{rx z!$iKQ(fP)xNmXqDs4s~LC^ceN!C$B$YffNS4e&j(-BAIE_6B(@sOJX;<7c2Hkf6&* zj|MNLXDP#%=E=xNP4(q`d7&RkXkV`vvBVMe^KEN;(#EZHl(bxazle8zmD0ZG`fB@f zdNF-lY3uX#f00lz25DTzVbsbx=zwh^<0#=l5uAnB9k4(9IJJ@$insrR(}D#1Xu(FP zES*L)3-gr`)=nejvv)>-;+e__^W7sDJ(XD|2pOE7B8lvvC-1)EP`ddrNxT~q)}JLm z(rH9<`%iac!bfzwGlG=2KYlkRd_+IKv&t+J+F!aG6KEcEzVgmL9jpL)Aj9A(4)TPc zpdto_WAn_SjkV_82_E1$`c#qy2hvy%jesVNI8{eWAY4gJ)zTKS9acJ#*3t#kGUq8V zW$N}uv<3Fq*>6XtG*j%0?wuR7k|v1GUsjNSzs`CX-HIRlqU@2nf%7Zcw{ZlhT4+;N z<>yzWr-`pS%O^Jr_y|!UFWZ0C_0(xZGkOEK+{F3!=$;YS#huCs$K4~C-0)fObiXnp z;qDP^pA|eN2s$xW)V&&)xIK!b8t7C)2bB53u)`fy%lA-(h- z0?PP<^lK9HF8zj{e^)$BVh+$tB#L#ApW9Dj>9_k)0~8wDx1z`CCL)(8Xbt3SL%KwV z1x2GD(ISL(>gw`WDtv*p(#+1HYS!s1kwnDQqRr0sjD$#2_bh5yH~N7i^tEq3cx=Lk z*%SXphOZ^3(@GjQHhnT;VfVYZ+`S{3iBTC5{r?z&{n@9C=-6Wg2BW?* z%LL&Fr@lxM73u>M-gUw;>BTW=7B(tS6b%dRXBy!hXssZ$q(r%m0pNYnI>-}%_%aBm zFPIHyr&Zuf5Ql~}WGPK*9UguyS)6toXVPA$f3MA>^F(!F`A zrHqJEMquZ$2K7mJ6I~G*x`n~+ZZ<r~vD7N3r2gvzgUIqRH%+B^Pt79Kob$%6x z@E=9j&<{B;5S5=7FhcrorxDHVBb5<4--z}!SvE^dS=RZ@v;m2C|6ICy7a}5T5ol zD<{zuCa~iywJOQdk$^!$sW_@=<`W~XRlieOi(a!YkNtc8k82(s5NIi-zf>R2sme&m z7(7~)6qdQWpkm7A`Z{{x75Y3~eC_kCME^{k{M5JwTiW`1o*ht8`?r>7m=^?!$e*a0 z^bBUZMykzxwRi2>Vondp728#uy2h@A`>DZJ`a`GZ&4{G%{4VK!`Ob4v4g%wOOy~En z=ks&;r20qx{I2<*<nT23OTt*;7)}v=4Jl>WigI^$*vpn*EaFlNnP(vx zmO{%QixgoY7NXe@yd(HRu=H3kX$~gcgWbVZ!ICwY1P8-5XE?JmhO_^i#*g?<*kyLw zNOh;iGEK??N!!fbU>`zrYuvfwuG zL>FeOW5YwDf&H*b7{6eA^+x*7u6<_}i)2vT%M%|BpdUtAGnY+XID6|!GW7ktd6Qday!bhNxq1h2985>QYQ%heg$L*bm-bc4`HMb5#g{0Tdn9K zw1xzuMjh-6=eTA?PZKMUaW#nqEz9>X3|;e z!$Cs^2^;U>O@>8dCoC$2*$RyK&g<|Wvy(!3b5 z*s(tQCEh06z3;Hz>o+}g`q6=Nda_1M@%PNCfg{qpmW)xgu3mlp_VkvbtcdfcUL|R7 z^c{*$P5t%T8{d4iPvtxFR$#Z7hrEw-aWbdFK%qvVq@gnY?o+&uckMT>bOpaIayp@Se_d9=%9fd z#aai!57mZkncKhhpOCw_HDg;GSsX)##gZqeHj-|NRE1r=eOj#cZkN-pzVy;d-fy3M z79In`cM&8xmQ~+Hl}?487a=S>tilr=j^>|mdn7P|^UulvcSM+Z{Xm7aSt4P3Pyb>E zVj6K(On2?*Hdq{QrtM_m$@R#1@o)`CHF#;J0CP#YTo-r8GbuR4+jDhXD z6c`=S&R|qnp zXo315l`7a|3xFqFi2IIEao|n8thwW^u3niebOxpA0|r%GLt{}`M_aEv`PZ!Fv2zA@ zZtGRFpFEha3+A2q0qyT8>(cwRK9hxhnr*;tkZ;7BWGRzf-87v}6cyQJkZ3+TeTi{^ zB&fx_LPqDm(tOr8th}48t-UW_GqW~rs=dC^8nFi{X@7;$AFrb`8y*2>!}uNqBYk*I z@k3|Yi!ArfWmp6!1ZzcA2Nvx8P5$@uaSOaX1mjyI=$-aGyMxq%qzonPr@-GhQ;d4G z!)+8*!GWqk#Pw?Agp_=c;%fSO0dN}Cu3{a17EMwDnLwVX-?or0t|aIBwyk}jay~KR zC~?EE-;dCx^bq+z={g(&(tZ*%^an0MLYO;9kdPKsV-6K>&0|d&%2_W4mqA5y-u&9x z^tVn^Mm&l3WTEkTYdm$aAJbGpSN`%U>tp^!t`u8Xofr z&0t^fV23Y{U1BFt6$orU2y`~1JI$A0EZ4bjb;Jhs)ipw@&YufMU{Oy1YveU3(LX6vF3p8u(D!oC%X?z?KMbiRn51s(jzGaBr8q6Wtf zI@;EmzQ^H@B=qj*Eq5$IhxkJUcQ=TyPX5W)!!IuNA40g(C*J?i3G4&&B{p-toW-OK zvBU{Z@4LKFc`?_^)fk~B1GS9aVx(WoC=ggIp+KngSBm_;1ovlFa;>aDsQkzO1wkFj zxlDmDgt&kM%g1!%O2L;`Q`PWYS6~d8s>JR}YAy%fF!0dqz=`A#c$Pigu_kM!$7Di4 zZXDzZmVzSL$$AN=lqEBXx=s za~eOw#RlbpMKt*K^X&izeq+;1fb?H`dTL|$yChuFnG zzZz1+TbVoPSFe5vQRSJybKnK$zh~pzO?-Mtg(p2-Fc?zHaF91x43dLlOITDNhNxba z6G}WXi|y}n-?Q$d|9Gg6nA9KYD_+4}3BNlX{<#0jpYNN0yy2lQPF-40Y;V6;zw-P2 zU$Zn{{wqlH%{b)UrZoSH1AC3vM@@Ms#X4=;w_lthwfpAJ-?rlT8ReK$&u*R014KPB zthyf#JSqA^6~=d#wFU54U*WEfn2kyE48E^J8FvZI+|MLoe(r+)@Wq*c!1cswrYG7r zL;ItX9$bg_vDe$(e*K{ey)z^92dj~RU;Tb5*H|MvW<>neJ{J(6vm*R+vXjl%IE-8$ z)^!{PN%z|*bll5z97e5zHIjpXklGo-`*$F~L$xaq6ov+67z9HH1o*J+;}tAA;)+yg z3Y@RT3V{WyHNt~sG>w7XN4Gy-$K3pN#E5vEVf|yLIV;-Rl{ve2##+g$a;!p~B)_ag5C|Ow0*m<$BX0y)+C&CIqVkfl?EE8i0(gi_AHChc+GOnV~`OonxwLztz zi=(m#RxRkAQqFKoNheEAOr!IrohUw$=ReCWHPS=gi((8Z#DzV|scxLr#7ZimA9}c> zjG?yB60~zfM(Tof6`ru*V70|;Ga%OXs5=fQu%;U}Cz`Q*Q~R5V(d*2+Gkxb3c*7>E znTXDqv6+t@eRXxzB&XZfiMtV@PN>v&lMb)K38z46qf!^5V$^9AXM@^>^%^)jt&S_JV(MZbP5topDQ^$ zRwq$lRQ;l4xfC?m2;iZP<{YNrF@)p+4+bTv!zuuZY6X`f21P@LFmIlZ@!16i$NM`w z%dcR=t82)JI-V7xv|A<3~^2?$EfmI=Uu{qE?QQ%vB2Mzgo^-~;ETt3CM zYrZmzUk3TvhOr#e;TQq!`Z=G)?3+b7@y??g4goRxB?Ur9r^s1IXCRM@I0P~X!3$Pu z>I~t#J2*g_-c}&^`x-b7TkhaMDh_f8N`V7js}B0?2I`mmo-&>3|EgAY99u-9n$@s; zhhNbroZvh7N{n4U-}Y+r#NPRdt|0nr>c9LaUgawvywQ_>7oFYxwiZWS3C`kM<&7%V zbB~UMfN*;_tgGD)gNwszhPzMTDh`3aBf;;6`A*<+9Q@~RUz{@1Rj@p4^O~fc*3?t) zJw11PaY3oUe5&Z=o}}*?Do*o!$$GrL?!BEo=?@NfB|Y1=^&L<_#q+R}HCqvJ;f^~* zdg)9vMY;n_{UaTQ1aulf4ccrfbD)%(8j$W!M)3Yn*6Nxnpn?2fS>JrhG7{`c54bDv zR#~ep5&}4ci$4={B;Kv3aaeqvULidiinfB+GS_Q9uuo*X>M%X_fQ4#9Y zc~xZVw4douCvxKAv%7Uo%+67r>NX_e)-m1}GdnSR#@WBbiSQ5ck(qXon7@ zClkAOPfWtLV5f9nc>*N^v6KQyM z&b(*Xig)M4#o;(%QYO9f|GNM{{rhl_E`6+n9+|#;$xN($y0X%&+b{e-ZU%sdg8YHz z1ec5_6zLQ^&+2Ap|GJI$)u_pEZzb9JuI#6p_HxY0JhC^WyEaC}w)R+L8DKAk8>f`d$W>L}mg~ zq3Q_yW!x}}_DdxV;UJsE7c#x~tBzd7m=zeaPh9~YLboeG(6LecN^Ra(3{&mooy9JB zU(AK0uN?^Z(o;5cgiT$sfA4G0B%1rU`?vw4Q2tW92!AC2^N6^|kj;a(f8^ERQIo>& zMvS;LW|(U1sR6~Okd7C{K>3Uur#^{j+s$B z_b?Q6RFU_0Vh10X(K)KoMdB7-)@ba|D_010oDOgi`^W-EM0iF?y3y*Yh_KPWrtxP!3ld~t~%XqX%{jxm2M?+=B%z{RwjK{{xT|OUoTt9 z&ryBX4zvya7CSHMaX-lK>PAo)w-E;k8SLU`#(*|Gj4GLY1yhRXdNCqLfr)zJIR5^Kqmqaj&J@1^Pw z$aFlGpdmHX(!K^>uV~4#SX6iNM!vpc)N<2tNn8PKFC|jSQEz?>H{RkYzBa)g2JKK@YhU zh%}ndoh7Wg1JR!^hcCtEKF3B1y-1S+lVQuedR>-Ir_pr4M9EgYjKgeZu>z-rNg0`t zm5^`;OCbVY`Azk1F_ApZ#|>?_U~b*plIY7K<-i;C(RB~#1-b$gWa-!)i})LD($HP( zZ+1VQN-*s8UHZo^7J^}PAbkU)c;_xYq|Ocj;yZZ9eg;8I?tsYZIBHf4!gF|F>^30$ z4c|zak=>MszmdU$B4T-uOUO4!;IbG2r`{!zUAu*to#h%VGO`S~cJ!X?0zuqD(A&sP z^WX)5rfoCXzR2ji0!C+|+4Pca4_j<60P} zSVd3KE4OLcPdL?wn;YKx!Mk(bstxq=+Q%Pxfmne59=`hwU+lgQf0hka^K39_UyAjy zo0D)S<=a7`q+&Pq;Y^Z3FnAJ4EW}|w0x5J9x(0Voq^%L6DZtPpir;s6w5s5x(M4PP zDv;Toc7WX7KNHXSsae(#{nN~c+>V*pX*7O2Bflz72$Ta6>jj!+I63m&jiA^zURz-s z2Z~*l%>CQ0&X-mcw@sJSecD`ZX*E48HPORu$LIl41RQu43biCP%R(vqz;+8Wn%zi* zR^rx4-<^h>B^Y$V?=rkbH~$JZCP$tq&%C`{wMSVGyIl^joD5d`Vc@?Lu-N%$vm|R2 zgbAbpw@mUY|G2ZLB#|<^$5{wYJ_A1Zt{{(4dLm!i(U*pjI9evkMI?+|#3>{zJwzu^ z1gUIqSTxNdZ#9d&@i%yn-D-uu;r)Yd4Uo_k@LNsL=FzN16lpWq277dd2xzq`tj&Ng zS#Mzs*SSQb)OtZoqmY2=6dK5kf(o^&#CRNnv|H3_Rd$k;o7+Idsr>z|@) zGwI6A%k(yBy>ICFMJuJuZQ~ZL5I2)(Qf%10+unwIZ|ITWix=&;z8O=mCO6bCb$K%c zrK6X?b?{)=jbFe#pYOv4ctMq*T`bFbTTP;AkSA6YNw`_7+{Wf)eyq>SM$sfO9$W|F zu~0h1iTIw~d&&=l;7%9~u038^bDiEWP9`lAjWPYIb?eFWb)iE&z07!}CG|CW;WSw; zpFUJkPHs`LJRvt%b_@u zRq2V~6+ag4`_h8G!+E?T63hsvg}2hg3g`gg2VMCM^3u5B&yRNXul7zYCJQIGzE6f- zAP!P}_9R(Y;+rQt=l3;ny4VlfgLsJhOy2-k$M< zBDZqSyLzjihTq8I-i|JBU;k<6=rF}MrXxD!9(bU-5qkAuELu%!8klD&7WjS36l4-s z@#l{!&yiq5Wasoh=b38${4wP@!rsm?ZY}h7G=Hw>?V9$k*l~>Lh+$cbe}!xIr#Xb7 zvQMuo{g!C&S9%x%kpqo`uITEv+l-|+Y^;hBqT)+EQ6Uc;ajRXv6jJGI@iaRhv1M2@~NJbCcL6Bc#RXAJNZ zu6=#wg{c{yoakv%G=kJgy2irDI-9M@C zz&Rg|DD4l=r+p{tcOs%!3r_lXcZUT=#l+xRr3toyR{T2gp%^-;$3qLrJew?% zEj^ZtLR-#9^u!usyebc;^~H5i0-}%y`xpVrL?gQmy_o>39;OP5De;7bsB{B7kin*cO5z9k`Po=bzcl2zM_G7d%vMn>KgceS@E!u%2GIK>ygZV>hv0fB35j zGb*hxq_VNo}Q8AaMH5_cdU76MYz_z>ABasb*De4q{gQvB>?Lpx=3dIKe4E1 z=}nQ54toHTh5;T8qpgy_P^x~GY#~97PiMfDRk)VUM_9yP;IniQ_aYRLL}Kqg_iUjw zJmWX|kHuAE9)8mE03CDGmR{<7Xbw4Zg1mA_N5aqSq*pF2%&&L$d1cD*Hy+qMA}S>z zIjZ;oqoKdD1qq(!d6z1xTAe||gv5xGp# z*8JBycwJMk(l6c+m%e^vMg3w%3+P7iIF~RJ&WwsU^(gw71~=I&6&k;lgXR*CKeT__ zD(j16;R;=3SY35e{`@7bdhsW3K~HpkIN%Q;9%PkySk+t1s z*R(vF{ODdX>nFO!`}y}iF0TTYr^D|F4HwhX#S#?B5;6iTmW*Uaf}_ln0N@$CEXKGU z>-Ckypv5Fb9JwM<_7?Fj%a1`Q`427?zEMtTf!p<$^#ya*%&Z$r#~c|pclNlIPn8$9 z&K%<@b4%5E=^vcEZz7zKf0Yi-?B}jtJHBDt{oBW<40OA9O-ZMDJfvN36W7A>u7e1?iXBqSWyGL?EvMqPv)4lCv3P(^car$_lfE3~+(VFLI~ zmH3PbTwQo~DgYqP}zf2VKnD$cFi zNq5LS|M}z0n}rKjo+_PjaUhqG8fY&E@QD*b-9fU^7$1h-#V}mC=if?fA2d}otGGfc znMqXkjumG87mldO*O{(`^Kyrcq4y7eAiBKY>~YT%>&~gK4{dQyD(dw>DY=>6JEHHH z1)jz?MpZwb7nkZvz-E0;D&9`+M!&Zw)V;}U70Xsm$FAtHFS!3N*brza@dO%Vo3G-^ zwFm!r7k&)`4m$}B><0S~Aw_k78m+iAVaM0MlSj!2u~!kjRY%9pU76n<=YmVN)9+S( zf0ERYdGy@WspsFXsJVF1!=$7L+);#iL)ffVg9)>m3>p!)b#~YoWmdm`!#LN1yVN-= zi1Q1}M?ZFS{R*A7fnG>{Pl|HWb2a#6r-Bqzm>yf!WqcgjpfG`(%Oqyo&u7C)V3XP) zp!Wb%b2AKf<9A=)QA=hM?qEf{AlmN9~ zC4$(wS;9R++#HDT_3^oSTxInZMf+D*Nab(u^vZ8c|Lw$A*LTsK-!##sQfgXCc~nE~ zf__E^3HX96Cb~;++`ezFg&a9|;*YOBr629o(s=pZlJcdr&^-SGoRvBS7by+c#j^ar z-KvqTGEfV`L7NbEF&w+7&hKj?CSkY7D)y7zWnqUubVqY0CMChW=bj2aiYb?rtav8c zbe`<-9vh%dP0sAw-1^kgh)DVYLcTRQx{S1_jDqwR&W!B|Im`m6eB&C@btE$ z-rLd!649rpf!J-~e3wAMZP0hotg}A~?K=h`(h!NVh#^GJTr?gm;g(IF6vro!;RDEQ zIEKf%dYDS{Z=fB~=kKpRttGA6^>hcl0fIIC`*#c9$eLn&M#F3p7fH%US=VX9bLbK} z`cnfS%;2-3v=4GjA-3y}s4{7fL7iE?I zkI#9YXD$rG+=t-~!*CH15k?pkfdLT#6|bq|g-p#zMN?BVBQqm2Q!~xXtgNi8ueoNf zwXT&`R%T|cYksXYGc&tdYrAbJbNs(Q=a~UCcfb38{p5wfFg(wBKIfdz`CQ-cGPaRgJc(Y+}pGo&H4?lTBQFjj;^4pqQR?g=AdCB#p zWyu%$nmRkw7!tU7u;7Kyq?V6IGLC!1dxSTFjGFq6_PTmiSCdCWx|%#Dkz1A8vwGyu z>=7Q1>d%Z2{VA-yLLIwV_oVp!I{ZE2ZL9|O=5C`*zR?8=;G+ zbCA|(oGTFtAV-V>mW~)*l*tffXb48BWC7v4wA%JXE)lj19TfOLr?a|^$kYgPCisgL zU(X)Lmvn+V&u-g!cHX5bW!mgoK6$Sl|TUPAg&pwdkW|^K|%MLs0v=5HTmfxcDygoy?*@gM<4279(mx~8`cr?$lZ7F1D^RyGKxD>kCc}4{eG%m z3nSFy>@B9K%9Rl@QP=u^c-j#@3S0wqm^ei@qsoZl8F)hYdkG0yL(s9O#KqxR<75*$ z(@hQ~Wk`@v%|%_&<#s2!JW;nG0TlqQo{GL$?6-?3M+Z59zJVX$r$cQ&zwu;I?edqF z53SG3auk&Z(x<#A@1B+XJ=2Be3>tkcSS#7D-}8Sci$YslcI+9EzzQtdZj(kbCcO~) z;v~Q2+ToxtkZ9J#i0yDfy9MGbi9>>x=x7~cl+j8|lx(moj*jsPcyC%+G&f?jm>r6r z{+ltj@SW{UAOq&G*541WgBzq{P_)XimR3QIZcTc??shoA2&1v!6QNPr0L`l+o`gI2 z!Q0Teyt#dq%e{{5J`mTy7c?4s_SoKeY0Ize-d1@hZ)S(PWpu3R@ESfy88x;uyoS$- ztXxOMe>K+dPW=|V<5hZxR2;4#VrqRp#_r*M5nGJbfHOrO9W6nY_9(9ccLb%f!g_=B zgwVqOqnq~!Hs(hZfxpL>PT)(f=fM5HxKf#Yp`QEM0jy1!L<;rOi1@ZTYa*U)f^ko= zWtWI8qW~5wOpcBjf;(R3h0=V9Z7*7haZ*Ks2+GdBJi9xs8g*4M-+FcNP#FB=$$eNs z7|KGiSXB9R#MQ$;Bd#v#XwPH)=iu3i=Pd>?Gt68R<_t6~iq{6xH;}bRG%73~#LhrH zfiaOXa`=ihw0>k%Q^JJ(bYk1ViG0bEJ04<|5%QArzdXZ_Kfm-S8%d(zemUkFX#&f+ zxU%hMT_1GvFA0yLJvI;jrv+-&j8WL&Yg#RuD4h|Gt=XnSTN{l)#rzc}EFIE>MM=a0 z_#d}dxSv-^)_2*%JML$TA7BT;2=MDkK5XYh{C4SZs6hHvdMz|U+A2PCL#gx{7J?=o z+W#_Q;DX?qiOPf4QVIZ`fxxByC=J_FUIY zR@1fTsIj$uSxI$W_rPt;IkFyA1tJ%sn*!+o{|2$|7$r)vs3pdN7!f`M@c*%?fgR(; z*O6@Ul7xUkTF<^g7wE=CX?+Z#soV_`hmDI*%kP5Lp>gx4ZC-U2bW_C6*b&|tYON@< zifpucXYE1U*{A{Ej6qKf588Hy2g)p90tyt_bvlHtciop!7E(b;2RXO8|SJS3U;y=Cfd)>L0AHJHdyiiXT1Zl}Dau~G7 zu^-iX<;(I5>igB-vl)?`M@P;8zo+*TQiu-c1YQ5K2tOnxv<#jOJ)D6Ujm@S+!PCa$ zMTOT8f^cH}s1(CZ9ALo^cIy{6;Z@v4LnA+*Y#egtDON^PzZ! zW{(V%4x5!?Fu1&Qdd~VcUf2`U#FkAo4(L<7uy`>v=LeE|#2=q6sF#wsyL(z`c~+V< z6?3PqI)fAUA$<%qNCvcV4KhA-BQ=aqtqWN4;uI6(2b;;#?^we3Z1MLj@jLJfe54Lq zRmtL-+z+g1+C!-Ui^XfyNwUd+w05|3IIQBx2=|2LA+8Sj=o)`}^UCZ0NTTYv#l?jo z9dtaMffcxiLDlh5h9SYID4UbcLZ@ug3<=UXczJblJA)CFhpOqx-jjATjBc#!-M12I zUd!L*XF?axqYhHq#|lWVv%=5bILCh>yADSbt@L%cD{&{eHRveUv>Fnqc#2#*1b zx8V^$RYYztB3J+J-tG4-x|+e!>3&!nRA+loSfsu{f=O!x+Mb|w(Z*ThV3)=@gk5?? zo|Zg6HEf0j3HgfJd!eO8>XxVt$$Dc;?|s+D6Z^8iHO+f?L(>>$Y=PI{ZuyXZ`r<#= z4t$&CuU*Rg*1KkpX1%)g0;$oDukf{@Wg}Vtu1J)^GQ0G>0fbMekn(5>1Bo^hRjiAS z1V@xcuLt-FD7C;e)lR7;JW@E$;c3BO!t`22Fo|e_?3(s;GWL>P*9+rG1y9&l{2%<& z3lU50$1&^<_UN@^CqFy!K%?N>`k4Pq<=g7QqKiUXNrdQx%vM>q{&ziCw-Ryo&&7Hz z!>q+L8rmlgM>st0leU5sIFJ2WSBa%! zlbl#d3+A+r8#H-PX&F&YNvp~pn(_sU#_{8n=HEDcP(RXQ6iuVQhF~xL@(+6+F9c-b1r{C#0Z2v#=}w zGC%L7r|yU;kk(ihW>pVpbaQTw*=jvoftE>D`dW z8o6fWl)JhZ;^z(B^;VB8mNn*Df8H;oJw(m9$fBTHT>TlmMI#aK!OzHb7JnD~e5*lF#$C z{gcw&S_6MZI?TVF%MnZtB}rdiT*C(5d3R&7>L)>J$~oLqc*o382Vg#<9Bt95L^=_Z zLZ*d_1&U8;`N$Ka*LG+Yf7#-VB>WS_Y7XTkVW&e6q2PKtRIHE_7tI zj1M1;6c&%LeOz58%IPKM+P-5v^Jzc_t%lME=g+-E5dPe^#@)h}EVh8~XI$zGtodal zG8~tM-4I&Vr!FVwq4ko`hnOibRv)5n?)-F(J~L6@Lor${ zxw#&<5$QhJ7zv&O!YfQu6p5c-eTd=oA2~_k34~0M71I{|yTP(0?GLruQk&9kE#|v> zU&Fr{cKd^chStWFnL{}cIPowC^QTqkrIDxN%;Po zAGzZGv@7ypr|nc017{OHPMpggZHuwn1_teRy+)7pGIEJ7^p9TU@D2Mom?cqU6OJ$d z%7V-wAV^Dw4?cT@fAVhiJ%z!QgKo{_CwwefS>U^-$HW(u#Xo%fF@I%eauUl4TyxDY zucRimjUh>(%MNGGVt6&F7*C=J5UFP5QO#DPmJDDG7P! z?twTv+!D>epvM!J=!#1o5R9`3uEfY{4!fb`cfs(6Ou~VCI+#(GNUAKuLyFCj4$I5u zm$vtA=vz2yUa)pRYC@MnPsYfq`cW(i%-cWy$XiAiJTs$rK3h|_sBu)+1eR;g$uI5` z?VVS<|1fmj8g^{y7=bcN=huHgr^Ad>tqtLYbS2EkG$_BcM5pX_L;c!~(Z+!Y@VoJ0 zh|vgsu`4k{P}hj3X|KWw1DNPNoq$9-1)Lnk62A&&2>&^PDzdQa*Ds?9-QRDlb&g$H z-5EV33@Z}a_5ORrLDh)%nH(50RJBzHJu!T<@nqrzdC>&uDVl9ercH4vkU*CTX&2XQ3TO1qobZ%)uIq+Av!_} zQGb^IBaR=c@xvT_ILQZzNIEP+y$<^%8@=DX10JahdcLJpNixY$Wf>XBu4Y)>$oslu z4f!1!t&@_a!ZXa{<(e&cQq_FCOx-C*g^oGPzxepO#D?6f*_5ll8)U65a95U; z^p9wsr#22*z@{iy+L=AlLK|$Ox{z+}Q5xR;YK?(clOKq8V7eSg;FEram147iC@`ht zX#^7zVOd(=`rV_DX$Tc?#j&9*j|~3kcjiySYT)=7b{90|W#ira$bc$U6R-`?*Vmzb5#Y(WtoWd?s zU_l~pZ!=jEEKUQ#$!RPuf`6yLh)^e_;wX&jP!}bhFJhO31EJD5e_y_7@|uVxb|n{C zFFpt*CdyR_$*^}2-&4-(&ZF`@Hel4svWBv-A}d02ej6)>Vnw*EwBfvnzqeJhaf_At z7nf;wu|Ayt;D4@ zc$a?t)!wBqkGu=x3BL>7D>CjPUGnh)*>~v(uB``Kvrel8y*5JkWP;;1M7>NO($TiY zZ23v6_@5VS9)rhXnr4iOa^^~`uvEOZZ^Ls3VC(k8TjDbe^VwGmJ}jb85wKb17a(7c9u3Vfs6c6NHe zU%r{M>gUK~O7xVvFe$XH_nj~i8rxN%4iOsc`SZd%yNCNuvc0V@~r zUl`^WV9l8jleYZPs3<7i(};)03Rc-=5G#ex$woH5FnjHqgFBaPWNp&+d3&cn^1vIP zZIWt9SD7xI)zz~mM6PV`X|pvp3GpD>N6M4p>yS&|8yk@MC8l1AITA~91Ek?BPEH=^ zD@{-D*DXHE0k|$%ClR|BvD;LTAl@$o4;EGnLf|Nz42Nj5v}##pI0y-=^6J0%w|}8) zy!Z}3rc}25v2ajP&jE3)bk@Pek3Tm3z_K;ZNed#c-SmFsHTLQ6U!y#XcGro&-8tgK z;@q4ePxJ2|dG?VPm~Gwjp&8=EZe50K#*5FWFVMw28%p1&OKoJuy=!GA3w?^O{^~wcr#ny#y?K@QH}O3$uwx zt0Ocb17GP(9TJ{PEgIA?m(VhpLq&p4*RT-mOc~i_%%Sn6@NuY4j9hSWKS@)S2*%tb zospM-8w9Z+WM*Tcqm5RpvCCLgFp6L-Y|J~lZpH!Y%HHX68Dy+_(4&5@=2WFzo@VoAct_*jMsr3QK9oc^ z@W`(TCd4VmYl1}F)NX%b&toj2+?oax=`>@aOjr#@10X@AvJ*94#1SbVQ~Ydh%G^J# zCQ88hjhQ)SU0dFT_+N9|%+ITwfK$gf_U7(Qd^JzeYS&`2LV##0Z!+ zxcdEtG@ayW>i1(#DU+F}DGnq$6XKQV5y7;aoJ?<)f)5lcJ4OVNinvUGP*OBrSYxy~ zk$n@{v$RghO}KYqN?IDT-vN6K^2J6~w({rr#}(J}`;oTlk3LOTXh~qy-1^c|#Z162 zuRgWXocnOrC#!xcVYVv%k5sdwX#-q8Qpu-z{jK9mhPSP9Ir%TZe@PvCa90o{Q=Fe^ ztxoTawNQj8i$;4G`4;f*8QpPia0bR{6O$502c@Jqd^pn5G$Vs)dPmGPK?mp|+b2Vv zip%Cf_&xCG^xlZ`12vefP5|n0D5xxF$;(y_VmW#Ipk4n0e;TC1Xn}Ozx){!@G}D>7XPXN`)nY_eM0C*Ld`D1 zzA^Vm%1PH-V`BC3m+8d!>Fk6yjI_uT(U8z{h!9fbG*e(#(b)9ly0xc}&^-S9#RL4f zQp!et^2a+K`FQtT>-d4}`b1}s{z+}S?tJ9H=DNl{)oIna>BZh|S((+P;9eyS*QOl4 z^hoPb)SGqRer?w-Tdylje{Fs1VP>?)?>D`)^reH0>!Dz8r_M(a`A{EPHO{xF!gRg0)^7-hp&EWO#Y3(Gxm?)Br_ zx1aswont(y`?%E1th9T7x?$}356>Pd&FA^7&yi0L?B@61|MI9Bxv^ihzYqVq5)y?C zZy1J^P4XmkFzQN5>f-Rmvn0Jya+u={7DuW>vc#vxOOAL)yxt(|+Ye$83SyMK(2j)h zs%bgIC;(6`?0$4!pu{2!Q9$x%XbhD_FhHC`${4=vwdf4nbTFV5vAKJ+dG_gSwDjh; zZ?Amfn*%F0wY`%kJ(_oOTpGxs%IoFjgMS##6$pA#1zN8pC6syi*R_j54fSZ-!^e+H zp9;dL2S~nCq%*pBJd++0?iO&yAxCR57+hw?5-qSHWjpl%)5atr!)l>M4mE@ezOEvV z3-NMqtP9j#RL+Gj=uVc|(f!X$@y|=u_ZxJ3S<1Z+GS{0r!+PnA|U_iDV`7=HH-yc_IWG6lDF5^?)oc5TR!y6A}MFCH2UHH*>cn2U~f zD{gB|(5+Vx^23SVp|jNb-_8kHw;GbNkzCbmY*+^^*kozMmhPF?!0#!5jLN zzti+1(}WfdxGgiLI=!H=x4ep9;QhY%+$$Au3^z`fWwRzHg>~vE>D28ow zD{+~pl%p4OPcgsr>wuDxNGdVSV|)ney=Zk?U)G`^R4eNhXbll*3-b=j`}q_;N7>1T z=)Aw3&`2-FucxF7|s7tmsWEbvIDj`0iI*tkEl_n5^jy@euVuJzI>+{~J_ zWlDi2R+ENWxm@@NwkVI&nPtgR+)+`9ijtRz_AJ`dbV+O=+DF*hbo7caBmIX!Dkj}6 zb`;JPns?~Z%ye+XswacC?3xYZwk)i?ziQo|UR%9=TIoHb*S_3#U!bfa(9KsY^{c2( z?VsA!S0o*5e6n#(P5(C@TmSazssV4bO`cqun^*M4#JoP`xm`6+qK!c^wVkNi`dRz8 zxIOd+WPqkuiY^QDBRdO$yWhXa{L@=*e7xcIL9I=Nx0g(Pyx(o3mfSe)cJb1^lOiv* z%2RJ)am{II{>l=5c6yT6&wDPo>;*^zH3^G>u9FQ53MesFgCQmgK$A8i@WWJn5cXfd z?}Sz0$GQW1gwF;`(H8a(@PF*) ze~v(2D~vZpf@04%~JKn)Ol0xV4>v#kJh7<;8aTONpwliA*_ ztc@S#XMPLqRv9@Z%`9B6qWyXroetMS7$kf>%%md|mvaH6%wwA+RfP7*AG8(9A4oO7 z;d(h7He3J`VE`Atwv8!#XS|y=I_{_VDoQx#)t<(x|Twrq?x$ z)hfreMY@sjC`~V!6gb)d%OOdm*>D`I7Mn*0At8hbWTH|1hF@oA12gy+%5gR#$5&f1 zX2NS!>nozltAz(lou-{JWZQAm=)BkIdLcw#vJyxkOL$v5F08WhV$nVd!Lt*}A$b>e zg+UYZM}Xn!CG3hr?Npxxgma=_S2nfq=6>gtv)fyo!|oqS`UPmqWx#yUYg_>U>lidT zt1e9^17Bx6HajGUAQEt%yi*3Hv8loP&+(CO-RNBR81DBPuzl7G#30j73+@MHDQ<`8 zHBhF&dA;6N@8k~-dipp#80 zk2(MT`sb&=eaEJ4e3QQ+CAIf(rSTH~>+b*A#H7`GdK_6)>f5~xN2R2(f@`x8y4Z-i za`=A8Z!)u93r(IPr>U_NdoS7+xS5v#-*H07J_>nZ&~pB)1b#A+&rW6EvVQYt@tNhZ zN=&zX(whqx?vN@&M}Dk{vX}h`nKgpzbt>+XfSL@G6FCiyF3yz_4Ot*WEKDD92T|n( zHB_W3Kyoy*(ZB7{7qfF~Hhl8ds}rZ+J8<-JYhB#9`OKuJ%O^R;!wZp04Fb{y zb?L_CvqrXf;)5j(v&%!rwY|HgcI}>==4W@L#k&g3nFaAFB zrzdnT_eeh54+%rB7sBR`*luvY_lfl9ntZP}Py}hmYR2%z`ggSFpyR+sj#WTD1$b|8 zTIZt*%@3rO3Pj)gYlfr7WSZt?&25@xnw5dUceb?5n>Kmw-09P&wT>JxVA`~CrZGc@ zw%$B$oZjw;&r7z)bxSgU(>^vPqaeEwn1|(EDs!u%G@7c)^0LB$7y~ouN_wX0dlh*M zuq((0aKi|Q(9Q{Cn(P65(2Hap_~=NWZ^B>5RKWLG6*f2ku1uIdUK|xZm(S%X@)hAI zf@46RFp6BTRDAFYe39?zt1tX|5xtI2LBOjT8?joHOi~0V6NhelMJ4rvt3vmBT`uvR z7a-iU3yW}hr)~_(->W^$@|%Ct%-pNBywM!0W44Q@=s00!<>hAlyZ8pPwdK#8DeYyp zdCYcU%S`;!as1-(rHd9VUApM@d-$BC_{UCdZJw3it*m=<-7~s&?^9oxF@`nv zOv;TP*>a=u8tXB0-@cjr!+pO=EdPz><~R69bO#-uIr9P-s)3|qxlr2N3?dt|Qct&O z%V*XF%o1v1*1FXjH?Dr*kqvA1?|_SrT%1514a7ET^yDyHlIt5EN1*h=JM9I5pAR8Z@N|9Q1|DjM{gN2Y~}Qd@`BnC zrHTD(s_JU{*7nmm+eWsHlApVnUszc%?Do-1Hxv}?7}7hxXh3oGP4%Vxhl<*|@<1I$ za0M5_*Ob8vb0G}mmvG7=52WVj;8TS&7RZ^wb2q z6*};tbm`)+33fp#Y3B}bcn2Mk7D`x3qHcoLlNt)lR-ZUh=2GnM4mT0SnRc5V-A^b9 zqacSjU0YM~BLC)K>+6&4IhK6e^`Ae{IM;0H(W}?gV8Y`++`-IWo%~69s3J6Z$|zmW zyou62{saHZ+Pc<}T?ggn*rPwcxp{o<;K9l1g%kJQYq|BU+3$Uc>TO=aKVxrIkJ9(a zA5SIE2#|waTUb+WXHFSz9gwr2E= ze|~gIpKE&8=(;7B`<{PA^2>`t-@kp~I*XGZ(^^VD-s1GuDVTCxLRe;ifa6@#Q zIVw5|Rk`RDb|%XZBM8k!096AuPsmDW62n%H>u4E_FKAddmoqiF@E;mbm2)5HULjZt0P33@|HdR9p#^afeK zhHbEZ%QTg!h!_&c?Khw{*pF4X3ewZNWb}?Rb}`lj1O9|A7GFk6Molm;1)aoZ2lgDb zw1+G9B42#s8`V!FlmHAg()@%lw{RJ4P{+l7M;MKlBAKLbV3P?4GV&wAgzI#a>&_(a zl9W6u{11ltN?+%@4&|QM6~+*L?U~$Ht+|J{4p~<;DNyMxFj(0DTh759L)P`2sQ&zy z%8&4V`8;L2Tlw?zr;VL-bMxyFs9||=Tjk!DsmP^IrM&pH3H5tlNK4?qre=Ek_xsb% z$hZ6iy^DRXH2-$P)Vk`)&6p*U-7D}ANOpCBtbpcnsdW|_`wv2kY$ys}5H!I5o5!d#PPYy}Wc>C5srTj?S%GI$b54(ty0-40s%E3zubUSd?8F!c{QbL+qhRv?`0^e2` z0{S9SH%mv}kZ>fWM`>+A!?*>@?$v&O&Agnvh5D!-Sw%_jd#2)AZ3R3vbOhbZi1zJ} z^rQ;0bAd(+RRuNNR&aX4wWlVJ=i3g~_x-59dTRaOJoD($rT+FE;?(M^*{Rm4L=fFY zZQW(ux=)d%)Xoj5c1e&e6=v7GjK34}iCt;P#i`<>lRh?9qxYKh=v?cfM+`98uCX@+ z^C26xR$icjh_sY?(reQt+K`cM6##??J&xlY#}DmJ(H}&8Aa=F2EgK9sWhZ~x$*PXM zzHEC<{dErxUo&<}LT|RXcT~*W>z*9DX=G#TD<6IJ&zJe`5BXo}dYy2x9@wg8w(E;# zeya9i{`CtN=FVqE-mOpStjAg0vlsfZgl2vm7S%aE?9AKaXddWEb?0HfxHRs7DOwA! z-|5gY3x2MsQ0vI4V$1D@on()76$7zB(rD54@y%-1lC6`z_p&K*+Ur)Qvy~Cj%Mjh&6|3#<25|*`bOZ7ymt;$`}K)P8|4S1fT5#Z^G(yb*=v=hx6R>uawAYA zxy+m&QrjqFSQi2$sm!BwMzzs|j+B9uzKbJ1)`B`#i#0wvJt-BQ7PUx4Cq<(IG&zCvCj-zLexMq4_j;THbX{DJ&Uc9P}x zr9`ci8#+p#at(W!?lJ=Jkw_AqL_~!M$CKt2Ix}(~ zOdxDTuae1z@nz%62kR{lE)fxmDH zq?F5!s*<_{q;lPBkQ5LZP}v{vjAT6;-5gZU8 zgm}A0&dSDufYF1+0ccT*^`Ved>wR`S8lk3T*Dd6m7WN!n270ZLY~Z`UyyI0)rib!> z&~7$ zsjj-H2FQ{+SONhLYBs!58EPe@Hj9Ts$B4Pp^E6B1mq1&(`U`B4syR-edILZ}pW z!GvEaSZcPSwHXnwe#f)p*YT-Sb80UWZz*3NS*6m}Hy~+mDE}wEyhG9(O`Rk?QfRb4 zvBx_}n^vkp18JwgzAF!;rFz`7COl5hz@S*Qs7?jY8nEpwiH7zCtH$_jzRpjAr|1y8 zXcmi%zmxcN1`>aMT?xd0C^eV=8eYFr?5bqNo6Jvdu5IM&i!Ymqm=TSbi28!m@M`Y+ zyV+ouo(JBE84xmqG{fP$`iBMk^((AMG@H6=6%{R@zR-cy9_z6ru_!so9)_PPzTgWNHxKbjwWkJ+OAh?q}%RFTkLsBi`Oo#UbXSTA>*ESv$bW*#H=2HH|J%||DW-LvNLij z7FON=l)#ZW!FMd2?(0)^e{XMIl11AqyVvTMUjG=oF1GancC@Bn1T{uNFXE7ECdbYz zY#D9eY8*5meb?MD$jrxobsPM}N!ey8%HrndY%YUg=cfH9?ZzR03^L=|30(q$Ot5zP!+}ka+Sf}v_`oK1d!p3<9)leN zTh~qR*_@JFRWjU*5~h>B`)>lH0lVkforB|S{O#1f)wmnZ6Xg^n5KDKXn3dV8W0Fer z+v#rV%|rl7EhErN&HT32Y;mH&z%uO3<6c@jsc%kEUR4@AgQx5A%r|6x|K8ecek|T! zj@2NZiTpO{4)WXNdCFq=ZPbIH63bH$f*6U2axYfjBcH~~q4%hCtMr~G?lkVeDiUm* z@NCCv&xqBA9_J|ZOyhNAV-#5Zb!9MBVfGW*@=e?|-gZX9-8c9z6?W{d9#0#alF+{N~$ z7n$#^q+7by#{BK;=lIcmrs1WzHOABD<$p{}zd18tnYm(i>a?uBw&{0ERVUespVMyY z-7}s4^}=U--oMiOl=dk~W<8|hmn*LC)}@9Ydg8sFO*xtUST3Gn1fIbN&)tnGP&`9! zT4r*B4dq5IN5E$7l1aRoMm+&S90-RP6Vz|SGazqFSQTR2(6H(QArcB^1oc%B86`zc z>RM}jfIn@kC@bz6wP*hd#-81`i8pDg%{6DkoHKuhd4#mBp3C1Iz=4MdhUDAPSbQ(WEPJiE@v`9t}ZPBAjmV zd~^u)LS?R)FOf)t^9UWAU_CTm6!kDsRCA@TjftZN77;UgSkXL36BrBiO9g{PP{P^N z@<_5^dT)AnWZaS5C)uP(KEeh8tPFdISD#z5CZK?a?DzTS?vitN4+m#*efYaB_Q50q6936H}ApJvwK! z)(N|kSseHc<^6qXqBJZ9fRf>ua{n%>bh%9aLySp|Nu5a#O%LCgll-4TPTC8tTc_aP z)>b+}aY_iB)&vb<>mh{VRANwg7~?Qer=kd{V`|bPyPp^!&>SNocVcGbS#FUZ2pK1 zet8H#)n~%KrYC)Eui;LVJE9q^1Ijg`mMz=w7N2gtTc3?j$+Z0JvY!_H zW5wSW|G4a{rKgvic;Ji0XTEFwZsn)T|F!bOa(uVsZ;StR_ouifR~9PO+MjSu^Ujzk zpxL2tOKtKA@AP7-2*PHkWRsNWsH-Zg8Z(3~viIv>UOBEoIbPVUtfb$#9{J_|{$n+$ zeO3-D)w)ugUGae!96Oc@?O^S-T3HJmbg-wv!NWvg2dJ0Sdx2X|N*6anf$GfqMKi_> zoWD5wgd_)Sv9?K1FRt)uU(4>1b?@yZ-JCJ~b*2LE4;m(wDm&%ZbTbj4G48Mcw<-U9 z5oivNQ|v92+@q+u^xoNh2IS@y4cCsPk-y?rXUI|ra&WUj|cCnz0ue`E0gqdkFt?)8$p4j z->O}WYOVy}cNGKEYnWz&W(Lkb#M?$qYZ`vtbxn1ZrGx$b`jrnHI7XkBnd(c-$w}|g z!#QS5QdwjLhizLrjw^tNuF`>(`L6b2M;{D1nLeEf#Hv~y%%|6Anwy5-k}f9O-r@RRgn)15l{U9W&NUs-Z7pX$70F+@t(6{9Af+`)_^y#gF%B@0qq(p}*}@hTkr`ux;uRS^OxjtX+Lm zV|r@k_*uVk`o@zsein1zbgjqZO&v3L_W1O)jFjL!`S4BG((lA8_!^wYQ)Z8&SAuhA zjaUDQ9Q=5`NZ+hIf_g30JIR2x*b{X_u(o7fw7yqy*Q|tCo68lORgA@yQP9(a`YaUg zTv6-;(W5WWt5lxA8JJ6Jn4HG@nO${H}jK23FGNdQ>IM&T5H|7QHE8gk?%85q0 zdvD8@#ck=UU(hblhmG z$-oQJBbH~M`}8iwZ6927+l`I6%Dua9dw2z|GopG?!YxHP(t|JJx=L?z|9305Z4YHf z+w0PH6gona%~h`t-nLyjX6)AR5`f`w`T-|Xw_m>nYZlec0audOWlph0p=LDTw#g~+ z2u52eRzoV3jyu>1urethn7d&A`zEt~0TLUj9Rd zfMG=sMms#~&j{abYm1H?%-D|%G6KZ=el*2YD$M@`;FlNG--EWeV zDLaDb7-dI*B0yP@_6!NqBTAI~yX=T+?^3j-Q*s0q09Q?poLFAAES0sUep`Mv{`aX7 zGfPBjZ{2BpB@&eulS*B#A(S8Gt0o#h1hQI0AzK($m&M zdKTza#1X9SSW_&@f7}29Fhxa0BfX${$`n2iClR2(=`h5pLQ{-ZIAP0rWgl91>mRwV zXm3sZgpHF0T)=+jU`f1R&k^;@YiH%|RWwih6qwVvHimlKPVg1INA#}a+Zr1YiQR^i z{ui9|anSBS9#2TkwxsqCMk}aqu~?DcNYrFw1%|^0aNXUVAUptognAB!+*bHBm1ul& zxPS@=Al9TiTRJjnZHd9u4dt(FG%GS0{0~ik<c ziRgv6;v$4~BE%{ZakMq0iOgHWKcCMR%wJive4*Ufm*>cH_+H?^`B*^e3#vcrY}F`M z#7o6Jv{6QsNJ#+2F_{3dU{b;5uDl0I$0&-A2qNxsh%Zb%SN_8=-ZFGv>4FKeQ7&2m zmY0RB6_x7y=_x#1qx_25Pof;2#(D*3Mak<<##}NUw3s(aXy4#lEb*-m(KDDVLZsHfHzLyK_*L=141UHUlkHkz!36_=xmt5Y%g!OrO7>I8_DIYA&iiaSZ>D6>IhvKUaAVu*I> z2u)922I5w@lZUw@^Nt0ef<8`W%7c8>%ypfSAKU0aYX^U%Cqm{dA8XD*Hbb<*q%$cX zO4jJ2bPicoWGi7cAY~>>qeW5&cf|eF&F4e^F{s@co)WajEt6*nHN13by=TVS!XxZp z=m>N1x&^)mCBHWW%=FOG9+KfpmKh3!jBMrwu>)};5K5mN{+^ZL))r%w&Y(4#Vk`nP z4|m4x{NZ~zC_{(b5!#;fkFqyI->?85v^sNXLjcrlK)0MTt7?h7_?9Z=$0QX!t4#fxzzuXB6g=xaCZQ z>8Z$3KqZfMF%3LuWK@I>rAv3{DO|m(Oj^(kexyI~zFz{PbQW*fCf74>=wDJ)1g2E3 zkLg%A$yL^Y8CM4?-AMI#U@xwIc$63ShevkPM1Ncd5@n zc&PLoT%$jZ=SU%&SUuU3l9N%^mn@s&%t==q?f=!;uFjn{uc*AF- z-3QR=-ocF=KH$&u=bobj{;#i!172lJ#>jBO>t4gNrx1#TTZuO~<7#2BnfbWle{ zp|VBPvxHGBkh;QIFGNmyhl~t?1RJrBsj5EQf7vrjnV)J0zub9E;koJ z^IRn*ZfGziBf~#9n4#820*Nd#whoA5wX6>|r;*)@5> z$U?Th=Tmia@3?u~w!B9M{luIf?Yx(VuG1y(&!X)90&5)0WKI!I^YHy~kMlFnv@9d9 zbi}3Y+Fr_H)XVtM&5*3q#M^*sXtU8%)&+B|sqx6TW@HrC1v6B0`>IbF?u#PRpM}Hx zlv>4OM*2~a9}qc`$Ww~2ocw9mVyC;jUoKze{b2XH7jGD4cjXSY1#cR?%{OJsiSHk0 z*{@$$H>{+h?D~pXxzgx+Fci8;5@OgTlx>D4zZe@ z$Tr(&e9-(lWwb*75KJ0b$XyBRf#6l~`UqGL9lWLRN+r5^$r7on;op?i9g z%N1{zW8x9OOpCWVEcspQf`)v%C@Y~AM4P?6R11rojAv%XEV0y9k4>9L#pgv{i?`f9W zx^!LtQ0SC2e@trQgAas`E6snNJ$~BcsnaHf=y9H~#FgKHf5 zPFU-N8Eq!~IK4@d(eCX6{y&}w1}E)TgaAAazAV*%9u;}Ll+w01jqg2nj0Mu+8;}vSy)e7cwoM*`alm!n7#+WRG!)C;pFHTP3;F9=o8)4tzD_J?Hy&@u&w;tfzc(vp^ z$u=!S)Msz#D|H33^V}>Oq-|7)1!5dL+cKP-z=Xz~QUkV_bc+#ukvg<5YbC`ZVF8L8 zVF}`1IGJ%5Op|K3N}eOUlpR0Jo*B5C9pw4fGv7LX|BQE8Eq_I-l5+XmtaoVdFJ!)A z&ajhoJH!)#$7aV?$CgUjDzr60AFIIEGv{I5dEsL3M&cZtHkjp2kV%3j9qSn0HJDT4Vq_(OcvB=Y zkZAMMS|*p8q;OS^8(F)F=KPZ8Doi)$)p?hGPj_>1Ax6*&Nhy$2GL66i(KsAteS*at zg~|k%NeHRa2vh-~o=Vkq5!oQ_jaC{$;I18!3<&OR-@%HS%+HTBmfg~S$wq^zDgwm) z@O{U^=G4ZbZW|Y;j=qM~h0(azU{4dj58^lhC)i76GfKP~f(aToTEX3R0~QFmsA!sw z7`&O_{}7rDH%Dav9E@T_6`@d|8QIyYya?&fz`pCNhL#A{AJBsMN7t@k#U0!~*CeqL z{=VBw{6CT#y*1luW^fQHZIDX}jmB<`m7_pW2@-ityevn>yP}AI_=?f^BMU_xj-Oz> zM3fUi<$66kn3I;(x+zg$l4lpMF3K))mWR>Gle+pA?Ny#>o!=_3$xDl!Kb>Ij1;hYc6>epF z5gINJL_VyAPPdf~=A{O%@#fLVvSg%j#>&sf&{dBzZSH`5(F!*Av5 zs#*PrCsHTe{g9M1e@PABli{Jlfc%~;wrOVk(5&Gum`Z&P?f4h}msI-r-0{~;Bufd% z!`em4V&rM_G(~~Lv}8FU8x>7aR%~=R0S3> zszL}%i-69(YC8j9hS6fKK0}tA`tf&WRU7oLoUOfefiGw;ui`!| zWNPxsdZjtZQRgHl$B~)tO-6BX9A-P*ucvFF2+BXvFT?7y9zYA2tfO$^TudP1=sW%y`F2w}SLvtTL|oOz_AfE)~D z1A$>{kKo1%J{V#lVIPLyu?co8I#GMJM3xBx0PTbE%5K8?Cyto&h5X`Y#rO6aJ#Nw@ z_vn+2IGl(oX3@`Q5@K0?cH>mGnb(SE_v<`(b`e|Z;JQ`7R*Ha+Fw-KDU16t*Rnh*? zGMKzXo|T`vJnX~nIj=5*j>r!tUp(mq?Ls`Mg)&Dm={knKDV@cjAe@CYK)~4@x5Lw7 z9Y!KQ;-+XPJ0_@a!jJi4IC;vy?TG)VMi}lz7ARR=l-qN}dsWLK%I$^)>b4WVBK)-Q zsYQ~-y)HL%ggZ}07c{?|S#UL`MgI9DzGO2i`06Tzi+~!tfKfaN9vX@$C(-1nHQ%#{H-u*@bwoC*V*(m1l^FMNLSw)@GM& z>O8Aa_3+k5p50HRr#5H+TH*i&L7;alW;?)Qf0k)cwbzE=>0Lapm}&20r%ljfDWV?P8z3eKEOTTmv?iB~1fNQUBSQP( z>A?LjCtQL?g8k<&);htg#MfO(yR@B^@mG;b=bYG=D35U&`%>6CCkCdgoIgupg+58= zk0t{G!}$ZeHadSKm9v%ND9CMJ6f9WPcn4Up-lo$>N)x9Ku1HtN7f1=>3g9eXDk_s@ zDXkqrovyK;xYdc5kLfg1zoNQiS?VD!g1Tg&8))>0#JPBn8ohxPc^J_foo0)g3&LHx ziE(yO#~Hy_H%0Ima1U)aG0s|boc|KzRN2>I84>^3N!X=s=wN8P*rcJs*jNBxU{zQh z!X&+d4E5YK8}$P918Lkipl5JrZ)w>9mO$CZgj8h$A@rNHtQ9Szte+F->ZFXf1z{zqRbs zlA3oWZ(e%a!%K@mQ$4O)UW$qXd0hIz4c}fO9_C!%sIdbAUxW6w;-CB}3{rH*pvMq8 z0X>EBv2Hg&0W?mB6Lc63o!g=_^$+UWbKasLw$pgR=281_{=e4V10bqn?Hiw&vyCRb ziNeAPh=?p5Y;*)cK|}?N3IYO3QHm(`ieif~)p!$Qj4^#RxyB@>n%op)jLFSS^+sb7 z(=@rpn4;|de>3OoVKwo6@BjNg^z4)~=Xsua%A7gRG`NW{1D5T1csCBseB<)NrQgh1 zyLsoPhBP|Unx7%v6~_$mA3cke9G^_5g$bjUw^vouAR0$a7h&I_7?+r%_lFb?at_l8 zG(@xj{U@Gdg+9(Meht=(6$VsCCq#+<=OCp8P#|zw3kZ;-L6K2^3m{;K7C^utbMZ;a zS0+TMlIABO?-T7vJf{PCXAw{&7OhH}w~cHYYnI3)rCxHewleT1D7<>U$8 z`U)6i?gKLKBd?+3EwL+rOvhyMl>#Nw5eh#`)eePD#>W3#fiyokJf?@v2JC8PyyQ}z%GL)XX#2xciWu}S!h-v%G zk}5HqM!?eIxD|YUzz?Qz=x+lSKyj}JPCPlqhw7~-?yJp3uq8YO28l6?Jq;p_JE z^G4^WxB{!{H6<0^7^}kvI+6Rn_Wtj6^NJ+y$CP{IST3c^|FO?9N~N32M*Q&J#;Kz- z$Ba+(v97vy&JlJMpMCE0LDd<>b2L{uRMZf$nXyfyd;F|v{>Xg|@7^^ReJ%3{3)UoMf$0zt&*E-HsnrmJ3 z-De7A>Z~Q(n!e-0d(Qh%KJM_I`}+lYV4|Xr>-hbs)x6YOch^=e5&bbcXI_TiOb(s$S1sCXy6Q|%_$6<@txYrd2FV`;gruj#U zgSbrBd)ixRmCTZiF`OmuTajDPkzRQJ66DAKO0ZNoSd;4CetfJ4BW4)&fpM6rl18g zpdk39iTV^{4O5>=fBhc1FXt5uH$41u#;cE7%V@K82i=3|YWuDC(rRlteCwDkDCRX_ zBXO~tKSu5(SAK30PNDZIt}u9Mxi8uNRfE|LyqCtmVT?nl+$Bm#$ifW3A*Gn+U_EBt zgw3EYu#KrxI|{~*qECH~6Q*^4j6Y4c&z_i8AoqE3@+&_9Y8sn@wOpi5jI??**4q|?biI_Aw=@fxw=MU_MnGu2s#yhBq(2alNP2JnBHqF?fKey z_`s1P12J-t9@}^I!lxmEF zpea?abY>Q}ADz7ojVCEbZPs8XnKT2j5@2Yt#eKt7uq-6Mz;fYla5VluJF-`QQliBRGx3=djx$Dj;6LO!N*z+yTyY2nf zHx8^@;oL8hUq3tZgR{IqI=?V3W#kCze0%x5^>@AOZU|YoVDL!)e$l-6m@yIc7>}OK zMa?Ss!y%J_o&muD7-#pu>6k?o8c&U86*1M|K#Uc3+j^E`GV&AJIm_-(Zx?iu9+H5({dIFZol|YPTFOD zC~`XW8)B3XMfR?q6b?!L4Vz z-#D;i0lhpZvw;r;(wzEX_J!#gLn#|yHe=5$&iK$poaXWHIqUCm*MCnqmxQ{gyyfa5{PqfO<@$IfvzW$)O-Vc3Ytym{ zUoR@Va^VcvT3w;L%m+%XAB=IM%{We)vvtG}oHc#RHoo|K;M8%6L%2VV(gILw+lyYp zDzs%oF`DT&c(BgP3#YJoNnuzY0FNJ(T6~PaKdKt2SPS=8Zb`>RMJPzJw-mW2DSy+G znJO1M20VfVKNDfBmG(;n{r-0Ils zf{BKH_h4UxLp%HYBmNU$FZ^5RWq3rmkIsi+4F%rouCAWoibe~si1ykcI!*~bGD)a1 zk;&*dkqJk~eagO$%&@M&7A)Ub|M?kRVWrN8cHDK>+GC5GTfWV(!WE4LrPe3taC~~Y z(8tfrvmUG5ZvFDU-sP7;3;(h^4h<8u1Pv^x2ny1;h>oU*2A{@!b+&^oa9Z?YZ&i8e ztW1i+9h0}_c+6<)+kIdC@h}~A{Kz9qy1Q5G8<&$)<-LCld-g5s0CC8X5&DH`{r=`=w)d63_+Zak>Ta;?!$as@^L^UpHG2a zIG?@QKVl-<1Np1P{vLDGiYn_DW2BcbX|Uuvl^DP$cA`hM=^AxN;BGl_zEC>a{3zaj z4hr-(1{PODczbww7i0e(4-d)cEup6^DeqfwLfMByc~5!68>Oxb=dwUI&%Q~uJP&RN z-~Jb)aDTup<+bTjw93daZ}-RYAVv z4z~4J=gCJi;S1KBF=*f;5WZkGM;nDNWO$2x6@P}X^Vf6-QG%z0H zuTkMF(mbrdNpggv^D$Jaa2Bg@uJIUYd-Mhs&SDkL7)Ll-FT-pVPPYn2-cp$F&cR#3 z*YqALoNg74>U-ic(WZ!#M!{neNejt#d^zZukPYXgpUP`4C0(!#jYQBwL!T%IS@ClA zGf)Mm;takjWlOZ&1IW244??Sy>5i(DEzxXII3+vSxz87p)5aORRX9s;2#odE>y0}OEFr?yX6rl135;1v|Q)PGj4sEx2p8O|aV zj(l)0*SBKO(kU!chOd|8oeMaQ--rxh0}j_FDyzsUs$FLXR!(=-7a6w8O;%4 znKGPi6^`tNwd;SUuuK_Fw+bh=9}cAVp|DKA;nL?)g`O0WIKgQanDdbL_1X&!0HAKufiQqF% zxK2qpMi}|Wts&x!@(6xLxyZ+=6mYcx+Kzpupat;5^L%ZUs+-)CuIvzm+QGxg%Y(!F z1dYOPk2Zg{TwB@sj}p99>k%|^uRYgZ?1RpAGgzUK!_d7UG)urhn?F-%mc&&5Gl!xZ zAT&!rfoAOm6y8e7uMRFH*}Ko%d>PInZIuGY?5LrjhPU}LoJA^}ehuaHj1ih8!&$7t zNp*yyT_rS2hO=0OldNil%p2b3%W%3?IM;ZLH9bPJWH{X_9JzrO_2M!Snguwb%|EEL z`H&6gqV!T$Dq1Op|8sX7WC6mdul zIN+&YSRydVLoG6|uYr(FR>%-cH-eD;gn%HwFzgVx=EyYkYmO{*S#v-GS~Wp~gXY-Z zU0mXz0DudeBl=L4`aB!>O=_@Lj}Z2-oU6-@99Wj^``-z6`Q> zShU@#;4rt3bYTZo;QU!lGh|&Z=W8yCeC)QZeOTBB%5&}4mJ150+8W4XW4!Iglfpg@ z0|HuR)jq_I-9lQ`inKgr7%Ha#Lw8w73&YA>o@9*-L#^laFtSOW3`4ckYhmb!va|CL zyOjzELSBN3{+h^Jkb##n1THT@1uUJf+(b>}K_Zlpso?SwFhBtx!RFWd84ky!iTs2r^oc3)X?4{SzZ=LS7gZTkrQObB4mlvKCCC1COR7XSw4DqfNFi^uJxt4Or!;W3NYdH+m z5(97Gg1k{1YUyoVr`^SCN#5tw!TWs-A-lRu^RewK>_Be7Nj)Bi2Dodf)|nrjb9@Hh zxCEP#L?(s$`D^VFYw6+1TL;t1;IVYa;j(Q(v@&#*=HrQvjP!k=H?Zijk-q!UX=7LS z;MlOax)oS6$alDQ_SIwgJ)_K(Z=LeljI_6fdklk2*k{8O8Hr6d!ubY$eD{s3d!`5`;LucXl-`_o?4T$udHW6S-Er)A7JnSQ(L(5<1sbL9xAe_yu-)MGcF z3|FG{_4V@5y1P&p>^bw<4D1-q_rpL%P!EAk?}+s3g7i5ajE1|!EptSw-JP;%m~-=7 z*MllbUZ)+{@$HnJ^Jy^FK@1q^Gk96_9-04q=3a=_#aY?&r&B#da+x?~$Bu?|n_*?l0sPewT z>A=1PHT@KO{JRmpBZSde!a6t1gUWDn%?}F;2^m2AJ^Y!!yA&eDN*KoAwg2~wS3yr~ zH2;;kfZ67P<=A-*2drTV0(YOu8>(STJ*+On4CAX?#_b$Id*U0vElR3tzr@BzjgH71 zIxtqVbKtVZ!De%QSi149LCZB4(zYdct@9rai#f5ohxcTIJy20TSdn*3zXn9(&H^W2-tUOBK&W{w%BcTLd>DE<`z2x-N zjK;TzT5p94Fyr4+_vvD+kKVo}EU;wU9qH+}yG3m^s+eB3V;TTV-W-$n|BT7557%J& zDWk@dQ4bfh1Evz_f=lx}wDC%7syaBKA9Em9Gez*Zji!O7fqsLz><5Q>dbk^? z!IdB3a%x6Ac7TbF=blH zu(KtuXuL5yXy?EVUEsc*+m;LtEEqX3HO|M!+cYF>NppC3Zr6PHAF!&P@-b=5w>(I= zh4b^XFn0(OTOt#RuoGWeD%{Ekutw z5PlXN@i~q9iXI;S26w|uJM4m~AAm!(BZyBKW+E$oyFYLBDX)OUE`yA`efl06{M=h# z+-p5Mc;bR6)5Lb4Z~pa9I{o=?KK#J?z;jZI_42_{qp8~yUGP$2ctSb_|A`CEcXPtI zVa^_upWZDm)ehwo<aCBKKRJ```0d231qH+XB6d>E?6MKhJ-Y5tXA*FKWIe1gYwp08 z7-mUJ*nT5mT18->b3}x(tRf=9*#n2VhhOXPl;^+lZCKP%^3Bwi| z^ON_lx&^a=-t9P+_27HG8~OHK}?rWun)q?Y|QDf?N-)ppo=Oj872WAkqAlf)LtSmv$unp#1%T5r9FG(=uA zql_<$Y4&2`D#n)OlMnei8R^??`PQ`seIKW?tF+3pz3*~rgh6AP`a+P^LQANZRCe{m zC#(E&=DZHhd;-o?X;#BKj*$jG92YSaUTGa>uTH7(_t4?Ad)@Vn5zbgliQ|)^Nd?lwxwMQKL+(_xsnefaI&;ku)bJ z;iaOPKCU;h^Va8|(Lm29@GoL`M6qDjhSxNatZ!@n4eE5zau=<{BsQf2+of?f*qxwa zDi)R4@xE8`G`fVo06fx4$DO+p2YAB)ZzVkLIue9=FO1ZnwsWBefdBzbaPztdn)McT+ zPi>J{xqV8UK7^GQ%0W&4zm6Qj%UqeH!dFglLhX~t|EtrP*ijt7lvG$a!0|XHr1nK0 zx%T*_>yBgcd|w>Lbi?C?`p;bY)A37?%Mx}<`?~gJ5`yoxF&V+;u&}5Yqb6dQ$3WsT z&?UfNkfex+gkg~Z-q;HRQ<l`yG*?z;9EbLmiBN8G+Kg9i-@Hg}G1 zTrhe|Y|0>WU}TN;%fCL^94j_`_}XXmDpN$SvYTR{9eSCLGmnpGOOQWJ$>(2>j5wqG z>#%=*+8=gk^7J29;Th!W9^`_Jog=WS)PultjXp#F*bMfTqBq9XYVba_mr)SH>A+ypOUR#Tdfy2PCrmHb){#xA-=UDetPoI zVMR-PK0o;+?RcSZ%H}Iuu6~z6%Mzl>GPmZW)0ECvXJ!`n-Mx+1gj4)6{|=J)6asiu z@IJ;@t=*#{?w{AeL#N!IDBqVq{gvlm*QF@;^|TmYz5;^%R5zI?Dh53p$>+3j9I_(_ ztpwh#>lx zxFC7yH>%GSE8a5dqC&PNXg>u%1!Q~+#qi1fpxOykFVp@)B7t!i=O8WXyJEY8xIInv z@mQZp$C7BzBs-@$W*w(ZsqcTm6G83&Ej^|Ji=G0 zbP(Ew%Av0NNiS?|I^4K8i)&Z8%OHMGt`$Zrl;v87L3zz+u7~x z3HAy*#V$%_sZ`o1eW4kosnI;Cc~3iByF~k__9N}jx*%P$ZUZKgrRmq{U({bRm<)x6 zZHB{!4-HnQ7^iVg%bgx^`p!Ajxykua=PPIhC%AOEyx{VqtFLQ@Yn|(2*T1L6-;X2L}uuHh9$F`Gdb6d^uPb>=zsn zoD!TL{7&#E!QTb{5#k&Y6f!(yOvuELs*t~jycY67$X6l17_~+}W25n~@eSk0#&3;( zggS?ohcNfS7?lwJQI$}C*`q=cX>5m};hLjGuZ^*$RM~D1#$X7!yhwH<= z!$ZQ&;o0HE;nTyL!k2|_48JY>_3)3ve+d6ILW*#Y2#Sb}$cgBTxF_O?h!-P{MSK|X zO~h}QEHy52TjcIYOXSOuCnL{BUK%=K=nF$n4E=oQ_d|b;GDHPN4T~BXRTyl(IU*qy^38urYvW5Yfhb|IQXyG92@M@5f}E{vWY z-5k9W##1_U*j%|ot7P~!mU+ivD0uQhKrA22^- ze%bu9`AS@1TxeWrTxHzsxToV@jCYDJkDnXAG=6jZuJ}jepN~I*_wL4oBZ*##&52JX z{+Ki}X?D`wq$iV}OFEsLo;)sjZSvbGUMUk()}=h1s!J_Ty)X4*nkLOREj%qLEibJ+ z?SZsIX?-KLBi%-ZjEo$)a^$g5`cVO+qDD;~HGR|_qwXE`;HWP~eK&f@=*6QS7=38; zXJfp_1dTC`i5`4djD2gYEqy}z1LMdv3>nQ&mD&&0}!uNFHMW4ye0esNFnJ;i@7(Ul~W6qhV7xw*tL$uKE- z(zZ!2Px`jhy)>aTy|l2jwRA`63NfDi&9~ROwdfR~b?{v~ptQoXW1s4V8CR z?w{^8y>R+%)6ddDo0 z)m_zVs<&1DXLf0gre=R_d~I*-8?}9Pk#)s&tLygH9iOwOKC*sk{U;4!4T~F|Z}e>( z*SM(h<++BrC39b%dwlN4^9Ibznzwr1;dz&vMm9Ax-QM(eGi^?6u4_KnY-?$2Iov-N1}mHCPD8|VLR{`(6e7c?w*Y{8|r(QR#Q``h*H_3bA+QaaK*N;;}L z9_;wBGof>7=kuL^ER0{+u<((E7rNrQy1G_$-Q2ai>tNT>u47&AcYWD)X;J#34U2Xz zdSub_i%u*$v*_aDQHxhD-oE(0#ZNANb@9IzpIiLn;$OR+x(9X-?;hJ-+&!y%LHFwJ zTe~0Ve!BaO?h8wNmqac}Thg=S{iXg(E0^B2^qz1zDu$$CGU(eG$Z}fcB^JULZJy$mv zHUw@MwqewU!VS|ltln^F!w(yyH?H3J^v3hO!+IC>?(E&u`%&-JO(QpL-SqnA0h|3c zCvP6RdD|A}Eep4--m-Pexh=nL)o%^h8nt!I)`?qZZJob$_0}C*_ip|B)|a-P+$dZeC-On`+aFvx z(%0jB5GOM*^hOxZMUU+`IVwUQ^zZo9N?fHq?qqwgK}I{?_eX5|P(B^k?V7!|*Ae1*+hv44xF+H<;fljGmzT%0 zn*gJn!@<=oog;hnF{D)6VC%v8nxSxhHfR@#a zq53=$sw>6)uSkRDsvK$)aBnt=*32clw7bYM%}?ZZ{StDgcA{;K<^!@(oR>{OvrDS;`sBni~83|F|Gz&N2PPNM+M(G@2|V`+xdAU;4PPf!^P#` zctKXqb~$iaI9{ACq-SzjI9@^)TxL&Mugd%ryyyH^FWptdxhxIn?h2sTTXg-C^5b}ESXZ{rOx&y!9!C!^YQEe&iqy9o)IFC53|4YdA znd{UIL+CoM57&7f3cW`?|2nk2X3y8v+73bg{ke^BJr#BWUFG`9?M3iPgtmuxTEe+Q zJk;bMEV7+sAKFfEIdYuWhuXciqxL*uZ=7G;?i@mWCv?gg`LIE52XbiJXHN^egl*g~ zoJ%@jH>uoqrDtJ3bICTO{e>MvcK>b2?OoU$w|6dQ#qPQ7ar<`+*-tiC*xWI@?77Z! zy%Rdi^@g`4oaR=Xn9xeIH2Jh0;WoCPrfcqD&h#}Kx3?JFe_u134baS{1`dncopvU1 z(&Z5+slj?t*F}cIJLRN1hPEM&1o1Mwt>gUH7TFF9odIoJ=9sMBz-21S&$h|l&S~0h zA99`xy@2g#=Gu;OUh(?rUc(7VXyfz)$ZlP%?NRM;UcLDbyYh4-I^RH}ANt{Q4fE|N; zz|B2$gk4xf?Sr7iTV)SdmNX6 z#OTBE>}8z&!P^uL2e^5A#PzYi4YdBIZ@>s%2=4PTph4(7Z|g>ZHfQ2*w}7E59KRyP33qvuXH+M0Ppu2LLfuvAD6Y-rko_v>|xtFI@tEPq1_g1Xtl-anqkNL zVNXlQGK>^d5pwktLi*qfygCEnc7$=lUZB^C{IR<>Y0!O)ev@nqar%AWA>R4A23xcC zQCpeeH|Q}=J=TZX7Hc23l{;CGP6Hi2wud$QZ5Gisz&_P>y8->R!=zlRgwE-t!6_0n zMS`}Oq>SU!yUHQQD{P4CpM@l7BGDd};MA8QoXJwei2e-m(ceP?^{^$_UKOWN^SI5b zosIN(v>_?PS$f}gQCo}rmqFu6+cIH4uwQONTHepA1g&=>#QtCQcNb2m*@d$ivxKca zj=J{X{t4o5$On&MAG$f974LtQHrO~$weXj98@&2}M8X~())Dk&B5fPNgI(y;W@)dI z9l)`U+dtZsjR-?wi~hPp(6L9+rYIqAn|M3JY1JMC?pTzWZQHB!w{cIOuyfE53Lm^b zhXojW^cO+fUb(+&*8zKIf4^|qa=B_lL>OZa?YMZmCfb%ep@SBig|~08?<#w!%J8~( zFmJbb+ris8(YLuilxf_=+hDZ${=B^tZH^)zT@LtEg|>mJ zBk3Wo0ZTf?X4~krTajYO)|o}Otd@Ewo8)FTbbZD{2Ta!b{DmkbTuSFk4!R z^gqZ-jD_Z5&T;`+ju}oTXe5oN)wG7LptsQbsD=JSZ7hhTup{hs_9i^oKT8zzWt=2; zY}~m~>XkN2cS?6j_el>)4@>Vz?@9mCxM_+tB^cSCrCG1phSec2YF^U3gYyNvgK2Pj z@VemFgWn4NPw>ydzlTgPx)^hXwl67?XO0jS3$%?yl( zZ_wPVxdruj8K;508%%=72Cod>9sEY{vEYlrmrxI4^fvk%jiMg$#x$iK9jM3ssK+DM z)nmF+4^M}B)S?~)^|*?;X=kNE+gaNy>`mJ%7%h2)McZDnS;&jzAgQ)t`6BXex306U zwJx+Z*lKLEZ8J!{EvN5Y;@fwk?;WD=d#CTX?bp8J*45S(c<1i44(z*&5UZ=zrLV#2 zgiWoTtpBn)eOdlxz}fCEml5*ivaxz0p1E-5{F(30oH=v)%%^8QIrILR zV`tttbJv-LXF3Qu6L7}mjMEoQr>&>2oW6AWjnm<$!%h!89eCR7wEJo4^K+lS`}y(D z8llO>Y%(;>@eh+3uKRo8y7d2?#M?srJ$l1p_7XQNpxnUBng8mKkH6wix{G`-?Ih== zyUCBzF7hAgZ{%m`9$G-h(;+mRHPBu3Z}c8|FLrv{Bi&E$$1Xb$(0%kl*2w13%k)=i zpOhy(D0Q+y(k7P3lGqG3Gh^KJ%8K$SWs^%Ml@w2$P*ga+Ab(t5ZccVqW=8thF{4L~ zOiN8kPKqIB)|tVmj<}GI6E0I3q&I^N`@OPv?|vkg&RHds!h43 z>in4D#@v90oS5Ocro1YPvD#=spouW$;|{V+)fQuw(Gr26+9A8jl7W(Qt}B@#m&{O0 zQV-*3GMb|>87;?iOvb~sa#A_sTXIYlM$35-pCICz2$66@A~Y0F2&y=>##~F@!iL`5 zD$qy|xHxBVnEW=GXxt3@SwXjshQ`nD^TD0LFCS&g}m^fQyI{yRe z;gD0UZz6ifWN*? zz!oqE91acTY}j--gUm+4vT{qHkO?W}ADHj~yRBc%~8`?FO3&!MO8E`o$)YR+cX-ta+jVNmb(FL`QMvFGWqT^3F zJ^-EMkM!aPA{lU54$cPwL4>E5G0g-p98Rt&w@UfHups~#jbLzxm-LV=jK{`vMr>lMtRB-n~P_m z`nkPa)Bamgu7oI8ZLVk-3B0CB<I%hLxEjX_T);DEl096+-8WkVw)a(l~b=U76j zf@)!-bByIdp_YsaXhVgmysm<)D7YDQ8l>S5EP!5>l^0Gn6;7%whX#aJh&%iS2d4?o zy$+12JV*uuWwjW>4aRa7BvqiG2QrL#h?ufQU zo9D@V58wu3EH~9*$hN^~$tWr3EaL1D5>c2T|;GDutOJ20f zL(W{wIFYvV8v1qZ?E?F4W3RzfIJuWg!lVEspuE6BxVmSgdZOBBCAh|z&`ujYVE)4R zdkgKq;NFgmO%ZeF}W-#l3iEfy5AcJn0Tv`4M zmVz2Ll$9UEMDgsZtcn9eaIgFsBOw_gm+@Sl$%`0yf!butU%w&miZm6nPc=?*QQ(&2ZLc7&4qP zT$vjSIsmFc8FHRQU%`ozCtax<4LX3QKqImb)0GFDGJ@n1D^Vh&LZ)~M0tNMy%JL^& z2_6%_K$OM*pe_LounfGLa*efIQI=LT^j1}HVh(C!B~^h2sMq7Gn2gt* zD#qo9gytKk7^yTRBwv~mEZIVCE#F)IRJk;*%r#^xt|?{yAvtAbWh^{l$do{DTZmp` z3(=w6q=~K}CAf+wqQJzmiF+qX-U(h)v;d_^05}N;GNemSNRqC00?jF+g?Vlv<8c+> z(&YQ(56PFtAvz=vTihgs3`z)^;+Nn%#gn>E@knr=65^ijJ`2;{-Jftjfs_a9LKaW z^tAEkPM+moSQ^ZXB5k7T=5HG1iiF*>Gv>tRcl6qVn zxVkZasTN;SwWJ#9YQ$=w8uQ6w)Pa|3K(3KIge#tyNgS>iB^HMjjz;X*)QW%gkWn2{ z*@(B{Y5vRMH6qr6eN2jxSBIF9Oh$eSX-6!VEJ6uhE(@iaKtX|^pb1aa0MiJ8Z4`bp z@l-a>x3xpD!-)A`VA#w5&sh0aB(J%QcPi*?1AQ{(MwJdbtp6L_jiTP1$8x=EfvXvq z+sHiRwURmby_TPxS6n*0)MA9Q1()0K%jMS&IGkEpf{lW|H6n-CM^4WrohZS}*5bDY zPslZE2Y)k>%gb{d9L|m8$913s5*&$HaIvII{2Kub*FMelhRc40(4c0N{6BrJ19j#4 z!l~kts0W3zR7MDx&5%`*s12vRU6eGUp8fUcKsm0DnSfIbdgRo#&v5O%UfS`X-h4y4 z`(cd`b*)DoWv#K((T?cF6@bD$T0@dy7E zp$xA^2`+yv{5pEL|DCXQzy)oN8_o-I$E-z9;zhjCg8C9aw66h}`92Wy76)O4PB45{ zMiNTGh=~j#;b^lW;a!Tt%;RV(f$9;c3Agun!n>|XBpGvX`@4<$k5{q!1jKfZ7+65;6&^ekYSMG6kHThV_;eq>@a>Ov)K#CYeR5Ae%?Y z{bVg!N1i9QqeWbg`IVc<-_YLdr5e&pwOCiVgIpv(lP%;9vH>$a{!RWv?jaA8U&tl2 z(0j;ZH=sCxBpIP{6c8@cW9-$p^q5hAWO+%avxrs%i%{`MSdU` z$g^18;zD^>W&m|3eZ)#}o+I_5-o!=;4!rP1KY~(!8bAZ-K)gi;(ZMtr6O)aYo*YJg zBfsO_0?z`CfG2J!jiSSFX2x(DLr36EW5$-T@pxB%NE7kKNyeKAOUba6%P72w#$eaL zbecgkX%_i{oTb@#Q|03QG>+yAZ$%+3!p^c2F`v4GP9hd^0PB}0(=s}RPNmbZGhYSX za?{Bba+Q3Ey+?1NGw4h@i&nuGI2+!;T3Scv(0bZH8|hp+k2cX}+Cp3De7b-QL=U4+@M-E;|EN|({)uf5&9^7j6M#3pM@Tv2kDdaDf)MMh(1m3MsMaB`Ye5p9-+_E7wC)hCHgXbg&w7^ z(%0xe=~HoKj(B{V9;ffn6ZBnrlD(^c?+$eoMcj-_sxHd3u5V2#@1`=tcT7y+nWEo*?=g{hj`S(=o5o zK5B(mm7w3wu!2RywAdY2k6yVGb7n4#_l^fJcjm!7nHTeBKFpW-F@Jb31KB|MVh6Fo zm{lBtE`2BqVKBUxeHyw2gogC7kQ9u zBe#;<$TMs#OJ^A@lV!1Nmcw#c9vg>w&IN2dD`Z7%0-MN+SqYoOO4(#q#-^~TY#J+P z6|9m?XE$*l7@NhaST&o?YFI6+V{=$NYk<#eE}O@iSTk#3t!zG9z}hf(x`TDHg{+G$ zVvAWfTf&yIWo$WH!B(|VB;-N*K@``KRh0NckNWc%4e>|yo@dz3xK9>;ub3p>CL zvM1S7?C^OUe zonY^>lk7eAKKm#8fc=Yo2%q!E>=W$L^%=bA|7M@F)9eiUf}Lewvai_J>>T@seapUM z-?Jasd3J&Q$bMq~VHerY>=OHhU1q+$QA(1Mr4%VuN|Q!PqomQ&7-=lNKr*CEDND+h za->}NILAr(Qh_vHDwK+(3DQKVSSpbwVXpgRsZ5$8O_ioe1=A!7L2HF>d<$# zG@8wsIZmw$>)P6DTHETJ3+mgd7uNBc&IQ#qogE_TUQpB6R@2!$r>SlczvTvJS6y3O zdt|}W5$H2p>swpu=IN{D&?UPcmP<{4T$5ef+M%hz zk1nUC8sK!ba*zYq)gAg=1xcNPBv(dKCj#eOJXc*)Q`gerT&G6$xeDq!In?FK5bH$X zGOi!FOMQP_GmaBdj~~}@HLcCf)iPYydWVEdet&tFhW@xFe|B}7rU5_B1s#n|wSs%P zMiF%>kSP}|Yn0>81%iB@rE3&Xmjanqxs)6qP@q;xlq?v}1J*d#Wqdzsm%06M*Fpzc zUFThssBf#QYiX)(sco#$6$uIJnnd7Qy=E=O;Qm z;@aYn&`p$|Z;|=lQa!)5y`!ylenXv<+fpypwbbj273sDr(k+&y+bROL;)c$a`s%jM z=BDb-4!2gvl&(~!p-rZt)B&w)n?piZD$~#=2b1Ne+C|_pxu10|?fr4rG6w*z9S#Xy znGB{w1e!7~^$z^#rU+5%Iz^zLqSUHWsnry@R-GcyPHAgwsn>S$U$-fab#m);OzEd6 zTHGmzF4Oucbm?-4S2)BM_s4aWa$UPc;9RNdl5@8j)i$-Z)VDila$4kK)oN6qnJcpN zm%{9NVm_Vnefy&#Q!Ad=%tmo-J+Gv;wyvq8TCc#;bmNA^Z+7r1YB(_M zJW;(SQ9YT^tZdfO$rd&0Tje@RZ4Iruc3#0atq7zJ)KkGP%|{(;aDg0cD;Iz(2WuzG z{W>yT6_~R0l$#>qEFKn7r|LP4jd5mke1bie6sN}G)mZ=CL^tJ$q$JK(HI>X$YWWm3 zma4|m?6G9C8dGs4+i}GuCfV=CsZionC~+#3coj;#3MJkS#T=h#hZ3*Ci%(YbRLJov zy-sDvksdN1}=&QN@v{;z(3+B&s<2`I4yO zNK|nosyGr=9LXwG$?6ly>J!Q86UpimDJoSdDlI80Eh#E3DJtX?6>^FSIYot>qC!qp zA*ZVKO;vHEsyI?r9H}afR24_6iX&CUk*eZIQ*orJIMP%cX)2C16-SziBTdDTrs7EH zhhoP8OHp(v&TPLMXSUtmjw8-&#}Q|?k(&Gam1-O`e{zG=b6(| zb<;%0QP(90)5PmR*Chg{Y4+y8smmVIRmcSwi$G8agEyzTb+*(hebL(4O>PT1@oM0` z$+q^oT3vHv3tm9F_PUzZmRhH}MKx%)P|B&Ly>otDTVrdR3@0@$F-|wXuAR4Wxt(pT zA~!iMUeQOy6!|2_B_zc=)wOq^JJwNG>x6!4U1NPiM}uoe1G-6ayxnC^<3fAfwH>sy zC^vX>nU`gbQ^I(+n#FC6O-+q8;{9&G+qJ2#y?w5S=p;D24_zGMo(}Og-niGfcGtDF z+AHKbr?s=KKLJAQ377W9MfSLxph`^%^6V+smc|zKAx>$$*=$xqK{?X#N;*La6O}MY z36qsDMF~@tFiiB+}n&a{WUUPhw$TuhC2>b{IeuM%~9F{8b z@(2Z-xLlcDgra<0UZM;yJ}<$kwz|Esx^+>bc%4HQq6P>PwZ#psZ7teX@jFHQcJg0A zNrDW~oFGF)n4oEBZJozOHoLB=wM&#rR7xe9WqgTAGX053N;+9dC(HFnOqT1Bm@KF; zCngI%A{2Z?DC&n$@DZWlBSOJPgo2L<1s@U0d`e8V;}d*AzTk^FF-5_jqTo+a@Z(5f z&hNw&1%HZyKSjZxqTo+a@TVyFQxyCu3jP!Ye~N-XMZuq<;7?WXrz-eU75u3R{!|5j zs)9dN!Jn$&O;zxwDtJ>Byr~M_R0VIUf;Uyco2KANQ}Cb@C+eG~;7L>Pq$%}GQ}CrJ z_|g=7X$rnH1z(ziFHOOhrr^s|>Y1t3GgHBzso>94@MkLcGZp-q3jRz5f2M*zQ^B99 z;LlX>XDawJ75teB{wxK5mV!S^!Jnnz&r@hJ* z!Jnnz&&qQVe9boVew57PY=wqwg@$Z}hHQm~Y=wqwg@$Z}hHQm~Y=wqwg@$Z}hHQlg z*$NHWxeD&Qe%v_7|f3AW*SHYjF@E}*gpR3@{Rq*F3_;VHfxeESV1%IxB zKUcx8w4aH23jRC=f1ZLrPr;w3;LlU==PCH}6#RJ#{yYVLo`PR)ug!^h3jRC=zucai zla%%_Noh5chW&BBI8Gn*l#-C)C@h6#O{7GgRf09|opJbNtCz)mZNoKkJNlJU0 zWR~$KndSOp@}SVcq&T_$NpW)hli~#axLnyz5sLc=#eIbK`+`2C1$_tweFz182nBrz z1$_tweFz182nBrz1%D6<`Vb2G;&Np>MX2DH?G$MRzig*SEBIwQMOwix+bPlte%Vfu zR`APqinM}Xwo{}P{Mmv(ak;XMB2?-x+bGgX{bd_PTB(0_3b!?+Q|-2fc$$)z>5!+; zA=@g-D0E~ie8^VlknJ=sSGH4x3LUbYBCXIN+bPlt9kQJwt;j*PQ=}C+$aadfA_v({ zkyh}_b{dx}+bKdt4zisht;j*PQ=}C+$aadfA_v({kyhj&+bPmY{bf5vTB*Nmr${UH zm+dqzSGH4xN_}O!L|Un@Y?nwY^_A^1-mJVA63ltt{car5lSXH8wnLuiJM%oR{&Kt@ zb6qjvjN*9%M8{NxBqvoMZsM-}dHJULsE568%kMYU&FL_pvpiycOJ}p5_g6=>w(EEX zf{repGKd~DB6{9~6(KsW{66}v{J!Y2@`&iI@&df0ijd8j!_7QCF5YY?tEsC+kGk5> zp+vOxTpisV+_gOITrWuHQ3H3}@`#6{zm{j{WRI*~al`6l*Q;Lfx3YrqPTV~s91t2F zbLBtw&lTkp%A92Xa55(eA(|6qqeEynLPeO_nFO=UB#c(`v1&bL^1F-qN3rSnogpnG6r%tSin0`CoiWZmKzT+^x6n#Lo2oln0NaDG3B^T5GPJaK zf)S(C@(xBEs|%hPfRS-N?`WXNcg6_14rAx8fbEVEb6<><2Pt>3i90a4VVvCqBk6t^ zLC5HMQ)7KKv0U>Dd6Pp;j=!xnP2@j4{UC2S{BOM2r@=@`8o}ZEsXgRf@25hUlago(~BOa>!?ppEJgVt{)Xzjj|HT zVhs^wIY{UYrWC65aCl8fQBWnOzu%c*8JJ;)Vc2090TC5p1jLPT0TB@qO&wB1+z|H#a0wBK%y7po zGc_|KBU3{%Gs~^btgL5c=brtXd+r&5 z2!h~;|Hy)V$l#1j@1@$01Tr-euXZ1jH)50!Bxvz_9)8yk8TG)x>rck*!0$zZApSUF zR6^2I8C&}aB$=%*nml{byn|2u_8&6_@Z`J`q) zfuwl|f~INuq=oYYlVAlrJ^rqrK5NOe3*)jv1%ZSLBy3m7)JapMx~0zxB&G-co>GDr z^pX013Z!QXe(zK=d(q-cKfE7?zn2Jt@1|LECr>&VQ$AB5;a>uN{_IJM=cxveJ^1|u z)<@2nG<#~nhUMQ1WFXc{@6MaMaM5>r7nBJkv!@`0e=%>t)On+;x7G{9j`hS-5QS49 zjF+lekOYmOeMy!yf{>7uU`y;_wD?(4@pVcX+VXOVxWu_i)qFd`}(m)qRK22&-BS}KK?Lra&N>-xI}r8D$TxmW2BFc$tlo+RFfF z={8_!v)TOcfAtr#_*K>xlQ188zOt^GUaYEJLhtyH(5dtX zAJT1ET_s7Zs;wj*+Lm)9p@?3TYG`9M%_j%hS2Y=3MVe?1`>LXiWHjiV)w)_vQ0s+o zAzJ7v^tMMtXr;KQuAx5BYPC_V9p(s$F~$sY1Q_v~(WEj72?>U@w1fmdTfCouFN0uC zOY#G!h`(B+v8KkvCI?tM4l+Ew4)JL0;Lvx!?4 z?0&=V&=IYDRk|n5N?k+u`aCo~Wpt#N?Y*ct*%1uF3k|I|RV}LX*qIJ{iWhnd(RPCz z8Y)F6CW?|;42Zdaa;iTtcLZm2$oh>QFklfSkFRGceB=)TK{dJ7&((sf`O3EpD+6EVa+* za;yJX^ukKwJ$?VSnUo%$yk+BllDK`nIDYw`6^$ddyfb9~_F2?%C9Tw{{Vev?A`_R{T1{2)Y8wI zE=~W(i(6hCFlXaP5>S=ZFtz#oJ7tT%T;1@lYVhJYix&>b9p8Jnzd~gk?Gk5rUfnyQ<6^fY~e zI*FG+T8roj@+%;C0fL7lD-eiYBv!#sFWC&_*I($Jo#f~FHJhX&`n>aXdP|HIE6D?d z&|iSTr(&sGtqu`<1@D*CYF`0D#KCg&zgA;Bi=n%>?11&1#L+kV>o`^Pj9< zp8KQuhhItfXLwR7xg@5E3n51yhw&@7uBjGHs+C-gBA0gUf+=Pe6~wp&Y_vx`r4bHK zW=Ru!q;@c$@gs-CC+7|Bo{~NM!Jf%OCc>nX*1fRvm7If&HzJH1cmvBzq{^0$4@%t> zk!RL%N$X8{Fl1N@k7u@Py?ur`yfw1_Foz7CWa5g)fh96iJ-wlmEm9SwW^&54QZEmF zlK#(2hfeGxJ};2jboKl8V#v1T(OX%oW`?#!jc?E^2n(z(ng{xPVPOY3N8|K z(ZWBa!m5M_p>|&}*w1^I!%stka~up3#~Q{E&@8E>zXbiVMyWNiE|;U$5R*k(-%=St zE>7DrDPi&S;q{LE*Z+Cw!ibm8(>>z;da`fA+RA0aCND}Gyl}_iC*~gi@G!jq*9|6t zT8VgWXQ7+jECmJy1rBor1$oEBL=JPrXuSPEJU7{3iPHiTm_f$2m@zg5Foy>l#w~IZ zGrv}AD(Kh|KRNN;mmXU8(2x5*da>}M2lh7YT3ZuQ_sr*uCg<%a&O3ACrL*#?otGm$ z&CgcWo?kFxUt;p^$7)usKe%T6tdxP}8xAs#!s*F5s*}(vBeS(?qfSFqMpcf((`b}5 zYDuAW0{0gXXyz)c%)O-&n`E=37>rgmNF>L9pS3UBIWJ5ac=m(uXjymrXb->1X6Fwi zmmVRxyQGg=;=UwFq*K_cFz0$kn>^44u2%?UvNQ|IAS(~EzkkDF3n%lh6e%= zFwms~HH^&brif#jKix!cA3n8u-+|XZsjul#T#$WE+-Y(CUNu&#ym;iPUzd#7H|>qa z<@G*+X=3B!bf}rppcc3kfKR~+r+flcewN`5Kfgeg%4?WIr3nlf<_P>tY>Yh(kn$vW zNo$lK*-{jt5t-{zB{83AjpBB?cFFrB{Mg)~*1^;ML9Y(>=<{Ofj;7kL>zm&q>kI2g zUK#jMQI930;Ud{dto7!N0rV64`G~@EjZe|v)_&udb#ne6X%iO|ujX0~w#iFCIkgaA z_fm;Mpd{uvB();Rj6pVnphH6rN`f;nLRuE$lvS23b+<3Ub`)W!W1zo5h!+xtBzuTa z9cPt&gs#EE99_Hm2m*oyLE{7Y^tpe(W+s}P{2I4#@;HG<3n@x$ps>Wqd{uy%2Mywl zgJ*W0s4882ZTrd3PQEj7!N+r4a0Pk!!L z^|u?E-lA1on`h6;S>cE)m%UEYvGnqqs9gypm~(?fJ)Bm$w4mm3 zCSA-bpOL4)DhDu|sq-J<(COREvtlzlnrI_4*GjP4X07++4Vg4*K)cnJo*DjN$1KyTB4*iEvBS%a;Mw zZ1*IhN~M-12oMV$lhP3K0xC%+CPHL=%M59o(!L$b2$@sK}|`x6zvu=bT+IVHD{@ zL}qJS>tMa~uwEL(VPSS(Z`qd&b@=*9$QmV{RUxQnxe2z46pGl4R!NFMI4eorsQ$Ot zq=|U70f~;^DU}Koh~xlq0{;J z`kJ#HzLHO1w!;UHQXKzXemBz3?RjOZg&1A_#VT1`{#O#op@X{?E~6i|(nOLR`^V1X zwd+5=O}vht-m>PVs+k^IdpgW3^2s^>_#Xtm>ozSfnSN)^Q}v6MF{$2)_}>fi7|5)E zzcAF{FZ*bQI(*#0K6cEw$Jhk!fx(=8+_^{x57PfUb>{iHm&fd!bBo^mm`u5LZd=A< zD%)wg`pT=Y584UTX1pndE-@ z>6JV4*v=TuOYtmkA;#{n_8jU^tBEM8hB`!vK+}l(iLM}rMOuXUYyKrAJ1rzxyc+3z zw^-DLIe%IpCaansr}5jJ-*tfP32D(Outj1}fGa#?0>eTz&FNf35d2(Ly-GDyWTl#;{lR`4O}#sNTPFvFgC>!L-)3S61!uVLr-B)_8kJMC0BkY_G){BgSg@ zMgdLsI-a#9>tH3@={E7iMQ8OtB z$Lg~U+y7_H38{|$LdSj&TjEPRNYhRF-p+UF_RrtCdWOup^43+wuE?n3@q7Uq=?y9K z_SUEk8kiOhd=|5+ibfKD!GctQSWtg)TT*!yJx0&0S_Zz7>`%UQ8f!oMs&2#6a=$<5 zZRaUf^J~t}nh#aZWxJ&NRLU+R1gqUILLa8rm|--{vK~fLf0wH2-(u;QRQonu6Z^wX=DFB3H`T9E2$Mg==LNjLm- z{Njvhz73~7T(w;+a_)hJ-9-0IbuJN$#8cET;K1%Bvza`_BI>ome#HpT@CdC*GKCIx zm}ChSSL#R*9_F$fye&tHWidJu6_*WT!9ajHT$DD_Z(B>B8nXAu-jg%dZ!04npH6;$ z;=qCXG9Gz4Dtku#^kmZT@%Ld-2S#suIJaWt0|yqp`a?|jtubBeDpH0I?l*4A5@2;4 zR8xEwxCO!)b{sV%s*hr+x5>Rd}~a@V9%K zyd>GLU65H2ASuO!o=^`-iD95As;UdA^!o4L{4?;i1Fr{c+SvGd*9)rVmfrMF=Z9xT zE|%uB)RyL#t$OiY3CIxv#uk+~#xs4hw;F+l8ipdBC$rJqcv&TzF~CHw_M1wszTWan z)7}G<{LgJTE$wEdzLvtX2wI4673pa;poB5oA?pGq&rqY6L_8HE=CU1DDJB`_1M+4w zn*B9UYnYJ$lk$W7{eeUebx;=Vda(b22+>RJ7(})liT5O)!+MdLX6f9co3fs1@x>#T zjVs>s%NnVuW#8l5Mt!wXV%4JUpz}q(3s@5mQTBwVknggf5=u6B9BiL-qUjQiI4+K+ ze>R>cuO4?^604n6l81QEc|o)}vt3k?&j6kWs3NF{Mq+M<$t|ePKv<2EO$;L6pK`99 z-&pbE0r9-}L(6pMbun7ni1)Yt41DVGeorQi8d>yE$wM6~iFkDM_yVUgtE}*x)FPF& zEDM!(I_F191;H&-#8+0!o1Unavs!UvlSY*@4ab4(V}N>WK` zBCgZZ*XarM?X|Zp;L8;lMR-9tzmC-_=o+cGyyLRFc12oC0iQ)F3_fI3(754iY{Z(1 zXH;Ax_UqxKmOe}$YF1rc`==Vvlf^h$RGmT|q^)hY2eSvVEjl#JMe(!lih6VvRt=bosKhN^JoLJPxao z8L`5tH3nL1Lydh^NxxO0N8?N6%l(e`H9h()Y!AzNi{$ZebCE)<-QP>r3M!q4NeIq# z2zsqC)1h@8oiGEG?#D}HNZ8G`RGVZ?wJJG-Aw}XPa)dJ6Vv1GcH+1$MRP}vru*XYp z*6mt%J8se&i|0L9^3t?IdHm!FjdzY+yzyq^hh)mTEg`RvxGmF{Hqy_ZUNE2eqCUVV zP3;fujba#i%kZUw+N2A}M2;(j0k8WpQo$}+89#9>(_S$_$)MdwiIz$A(O#LAB)h?u z+QW0g(W14xR{s`R^j6v28Izwc@t-#CfZG2SZEY-{`{oN5>633s*H6-~w#_NqOX3@@ zgKMCabO4m%v9?B=>Cor}(5DTX#2&x`hXd}~jr-XMyvgm;pKKRS5nm+Y~8FInNCo0Ia zKW|>FEIE7d6Efv=OW3Q#x^3>FXXvG8t}9qcO?>xJEYc12&2)r@3K~rir-Pvb9oiyY zg&ZuMH2KRGtA>|sSsDVqxI7lQdF-Ptzi)ng2W_I~E%LJJ^xDaV8+uMZ+C%&GFGKx5 zKXrmQ-l(l;x{y~>->Ju@u2$*ViDxV3Cuc$%La4t~qmF>wcCiO&gFVCakPy8P95%!e ztP@ngC`56aj84pNFbzX^$!mP6Mr*pLq`Dd=wHl30V@0{CB%_zTM^1jw^;16Yo4Y@~ zr}Lu7_?&)YCxiw481$d-V)s&i)7pTC7RtQ`4V?1!GiKlFuu0Xks_rzuc2JO7tEs=7 z0~&Qk20lp0vUd)#*+3^v+7O2v=_zSqY z1CG)4WAew0+z5^718W`!Ne*LKxxqUCHFIxM05}t%6p~d)y^i437RS7qj$k8L#tZfcLpj^rd}G?f5)LDTTTv*t z0cJ0{B&`f0UHi%_Rq*3xvL^#CSz)5 z?&7OY(r7vBd_~F1MU_h)T{(D;vq)?z>C%7LqDz}71j!{`z&D6Vmx8X=#BgP(@^HC> zblr!g$sZ_P-t0dlR}n6TQqfCARrTiecuwc^oW=j##W7eqwXSl+RA&*lfj`S(@)&oP zB=|9ltO=54k6q_>p6CAs@xYj5D3QKI;!fz_0c|qD(Rv9Q$2flOl&Gz zvwP!z-8Oa+OL zO6mn^oH(i*gYSVzU@+i!Vo|C#Tr!zLG94zpt9hm zaI{!3H23S4D(Akj-Fo%K)8`{vE0nVk6@k_|gIA!=$7FzsH@Keb3jP^%kbqSrc-RQ4 z@TZeATMhN&4y=rtvj5w<0B!M+i7Pe*Y?8B_Lmf%$7k{;jd~xU4`O4zD>i%=YeT??S zu#*Nn52xctJz*gse(6apqQ}vp(O|OSoZCjORyNoJ)m1%7#u4XX0DFSc5@IY8$KSyz z0ujnku~7p?1k1Wqx**9j%;=?KF&0Y>+!dRcv4#2vv&(g}FP+UvqB6(+`fTU;5CSVwv+`Lt%24F~n0G z$MI-w#$Fg6$ouV{YC+VOZ?YiS@yXs(zn z8tD|W(|N=BF(RTq&`3s`K;}bKIxj(|^GDF^3NLsTW<=%)DuEH)Uvb$4Us6+x8?wEO zYHLXlqgmF3<`r3k(+B65rRHD*S2O4@`D6bTFHX8m8y_*PGEANPDCpP??Np2;vM4U zJsq2#HmzSjwuEHvS+RELSo-?1rGBco z#y(je_wJmW$j*(#Fsc`sgJhl)+XXFIAA=1Y7-4mFYXASXfDX;b%TQ*MgP{ z#XQ+2jYiyJXx0hp6Qt`%&MPuxf zl2WT}Q#NER&l*-BzLU{&+w8FDkkEmtTjy9JBLkUVx<%{AEx8bs(J^^LB}0nR_>5p_ zk-K8YC#ir9GPswzHbe9x326Kufx8mvhis!`!W zXS+!Z*Lr&52sRuo4&k2R2#GWV=dY|yBO!su#w?;&p~H-&U2VN(t{ha^mqyI2jDL82 z)i)ch%c3ia6K2mr`t@)*(ywJt`+pks0eWuwzhyem;MsXyPnLyMZt5JmzCRjgNbC2| z&K;_EkVPcggS^dw=3IwIV4wkYA9kK?)ERU+4g+iU;3X+umkU&S8dwy-kMA|?I6?!- z#J5x+h-M3;LCQY1ec+~tFC}G=1;KP}Lcq8@@sg!wNXUicgtvp=$r+}4XH4yg|Ip)A zUlgy7-?6s)FITEaA(;f43k}4A6Vz3}DOTuYH>$*7vr(`0^w1arOIPaP|7>C7U*tOxqxSTvp8gSY1$EGGF;47FHEiOkdB|u=}q9AtA zV2xn5dr6W;meCucVXBNKOZ;C^XdH-grDkf~@(1;4`7fh*pVmL58|pAb#l3Ly7ZhX@ zyXm^6^svRM!!_ZZhB(4a8to7V;JM5l>wZ*vT0nZpB_lo0Fcn`9EpR7u9fJa-4(#u| zx#8fC6(1aW?cwCj<$tLum<_DTDD4JqILe80_6T^$ef$nV~-j*JXmmYG>-@49?&-vrHhj^fmx>kqwBZQFiVmrurLX8$VJMJFycpX-{SC$`$$50}IpM_~^@%E6e+q zwrqQw6ux_o6nyv&efGi!bnlrN2T8ZagQUxg2kEDW4$@Cvl&uGMJoi-m(op}OzWngF zzKfITG4`I*bnl1n(P!WNfE2v>0{!@fgCy>d>ur#M1Cqa_RlS9HGMrg>99e0MT0ssE zMg)Q2L;sJYv#z>WTUpGt6IK^r+W1P< zThj}i)605gFD|Y6beXfM`0$AS8Sk&D!?VW;^Q8vqBuYR&g2nFZqw!J;l9#0NAX=0T zdEF4tX8ppff5M2fH#8oqlyBq6s$BYMcd)z6YFo7c4bDg`-zA~ow;TitzwqMCJjq1W2Y zeI4l04YiMMc2jg*oSfXHi&nPA#&++n4V7hoEshg7@0lZq!n^xy(eH$k+21od8Y+Xz zs}-2Qjo{daA1c@VpRAUeCq8g}%LntTZan=YEf{}h;KWf3k{Je6xe#J4ow&Li~6?u!wM&y^30W!0xW_dfJ zMC9XkR0hxz>WzOsDjzMl1Tu0P%0&PS>(C_1T46diiqd7$cCltHd6X_*ODkK2wVdxo zVz&4@{2U^Mm%VfmB094p!6`piojf(#)xOf!zNpby#Es4m%*12i*v|d?6wK&Txn*|c zjEz@FotRzv^_0nD6O!$D1yko2PJXKLRnV^jU8cX{2~kXYqV#${KXqVOgg2_x?E(SJ zc>|a$B1M;5duO8i$r>>_Be!{P<*dpD7mgGJOq{eRqtCR$)Y-citoT6I`c2DtxV~3a z)`8VC^M~~9H+aIhc@vvbz(3I+HSyzknkV=tdnz??M8Gx}9F0}$y+Xk~7&!E+5%sMYqK!{F6KZiJ==BzDk(&{7 z>V#m_f;>EYRm2zPU%o;DLTaWx2`sZ@3Ssr*hDM)av&hX0E-mao`m^(&eiT(Yz!^An3}-7T3e)d$Ej6Ek(jerl<4V z7qK7md=NQS3@SgqYF>~fC~2_`M^T$a-|0((;ztzlm`3s!zlU{YH8!6nqvYcStBN3o z5!P)+q4=>bHvw}het&rT{8gj3O)gvh+qANrjKVVc%?%h(_!yPIJC2c)o=8 zXT&&2GP& z%JOqJ%|UW;W5AS!6L(K9%G*4!f5Dq$8=4>9{qV?uA9=s`poA2$VdcIF!>TqwIE?x?=@NH3qE4lggF zHbQfaMxs_3JPm5}1>uAh-4*TqORR&2c|%tM!MbyBr3aZmtI6;$g6v<_;EX7y+4PHZ z(gEp!#d&^;s1J4iv`|cOR@INDxk}#}I-IsTzd=_&dUzl~Td6kiV0M=-acEAYS z&Vu%_UN_begO0yojR#sp%&eKpDYzu8Jb+yEatG9~V+PmVMEnBGfQ;rjHu9wl#f42twy`-#hs|u4b{w$_*{8{+>jlY4z zWI(~ERQLdEn9e06xMTocuYn{=Kg$(}b8ylk;mA`Ky*$|2IKn8N%My}G5ZGeVFw)=B zQ^mwi22I8do`I9-YxIpG@nbSzGJS*CajS=(EFyM#x(G2_MQfv~SuMjGL<(`Rj>ZUU zcqcg~P!~AVp_Ap9_TCVtg1jLe9CYQ#{Kg6DBrJPoSH4g`HUpb6S?AN_-B~pYw)9Bi?N4#ywStQlr}e>gXoGTfK^5&8f8fy{cpp?s+Wzs!`kx@_ ztVw9qcxl@>T2MZ=WqvmLqL`NQE*8$kUM?<<w|5opJG64cgVy4NFKNJNGYO3U*Xg}YT}D1OXJW!E+vQ^~ zPOz=&KmSov_krUwqWe$C>mN14QSnG9{joDUKVBa&agHkL?Kjs|rcHiu#;C!)21d=C zKj_7`hU|&6Et=Z7f3MVxIenAI49Vz~J}BBgv~tDm?_WCz>hn$wwFNvHj4i8$L5BtA zN28+rTz>Sv73Eln6Wcd*B;W9tFjODAR|us}f$MV5o(d57 zPZuWD?lmOub7f7ZPOdf3OYBEI4yPzxAaetSf%ZwJv{otoNYV5z8)C)T3YT{aCrOCUsfazLuF2U#)m> z_~b)VvZYI9ClY-B^;@R@h`hRs4^MjY!24v{dy^(MZrcCoqUQ5xT(H=-4y${ablEz6 z=?iFcU$9Ub^VnZ`IG8G?9D!Gql-6l<(+weq;+bcOA+yqo;EdA7B zMLD7n@Um;yj=YrKY+pf!eaKhD#oe{yHO@=rDW(5V_>_{;&P$x)lbamMFZc-&9GwbG z;c--|HaJ)#{=37P^41>88Xup#)|_o$Lx$1!l{H>ocda?a@ll>tNiSQba&!^cDo@B6J9{bPywVreDrO+pxNvxNl(I#PUoc+kYNAVmgx| zoVkBm&HUMW#x7K)_f9Pvow;d7?ZP`7ob;iyAHK4O`0sjfgy{F^hZDBUy7St+uNIU) zw(x@$%U6PftUn@;>)J@hW0G&-bhTRB=uzB?6K77dd_@Y--v}Ouh5hY{avb$zMRfGv ztsujG;w$d58$Zj*91s2!lCSJ$z5$rpKu{wPvI zKdm1M6s*+ax|`Eev9i!lzxE$-TgQ2JZgQW#J$v?XeZ!U3b@bm$`t|Ld-e3Gp`OfN$ z{aTykJh>jeC0vLVaNpUW)5vPisL(KrpTCDrRu08w7=5|z+>@F5K>eG%p;x)-!iwL@ zEpG1Dl~(4CZe2Fl{kmh*l;Rn)2iO0)byI1{jEeqr-mDj=_=)P2H9k(7Hg)>*6U9@n z(E}$3ROYXmzV|fAJv6v_MD?T@n<(8jzMEK^KyQq;I;*;^CnD2xeoo3cIZol^7Es2m=|9W5pg#R&L`z5r7rDp8wHlz@KZvL$#{-Q`B!&6$K7#& z`hyuc8#>T%m(LHSlMp|2I-v16qC>A&`^i4hh=e^&Av$j`i~Jo3@`E zYM9vB=sES!#Jan>4yKJO$)dp?0v)n=#Ets3n~|>rnPyg;Yg35JMA`>XRo=M)HW!&g6(gh+-QT6E8Yi%X0iK8 z3KTSskCf0xz@CrS(LtfSlf5oB@YngR9v){QZ-d1xCuvHY)gkU?(SX3Y2)_aUP>yeq zrw-C`50tj(y)E%lC?F{|nL{DNV3Gl)gG4D%5`iPfg^VD#6kKpIvP0Y<9Z+4x8U{s! zH9?AHw^-UF^ImLng#8Mf4*3T2d4II;iR8S_vFTvT5M8SLIb~w`lX8SYg&&cT9kEgC z)&9U{2(ZwIy~InLs_<|uqeInt6JFlATs436!lsM-fQt1H{x2Pv%O=&wd3ozXXk7?d61zWcOUM>_ z+ue-$=ZTfT5<>Dy?V<%QsA3t7wCzdy4ULup(bxYD1XaxGH6*ycYa$K4+opqlo z81UCELWG+JTppC?<_HN2_U)A;7H3L#xKt_F=bYx)yImKcFxkxIP`Yr;h6xuGD4jaF zu~&LKITY6Dt|r4c6e&Bq4R-|!qoe{Qm*-HRLA$0XP&g$OD7mjNT%;jG?t#MeO@T53 z?Rq?;i;1}#7fwkAg;6qsQ&P&wX@^7msBkY$fdef_Bi!cPyAQE9nqh!JR#w|PnT{>w z)QERcgXMzQM+eKvA{U$H0H6cJx$Zi&r-U}HU5FTP0?fw(po)xQ3gUR20TW#MPz^pFcJf*yzqNMlc*Joe zh+=)OM*2abvot|IvHs4-to|i;TYvlZZRe&NH&9z(_(nt5BZLHdV1Rd!$;a0R9a6r& zK{&zkHU*(!DM+UjNqMa3R`7dzQ(b7FkmKs9V?Bf$jhoTHWSP`JJhz8!iEW4@g`xE6 zao*2dd}OV8t+?OOef#2TPtrvBGSg_f@tgWbde3ssg&(_&kmhM#%i)zMlHa;Wp>&5D z8!(r`d2GfbVv1+4Hp;_$KAfy9un6?UgnHIP1pjoUV7q92wbu}3o&t7Fz z5Hw8Um8XsnYL%zDZHK}?asj6?ynj{c<5jwNS?jKx#h}nC`6Q&x^-Q6ghY9_)2?2T=;;QVzX<4h?IKQJ!ivy7i2A|DIqvFQzJM=$p!3jYc=kgfY-F z+(88P-PvBnG+{k|ZW`^w`g!qsF59b^#$2P)<%@mr+k3crO1#`XzN`@fB9FcYrNx(B zO~Me2yLx=TJJ4UPOS-GaSI(l}M)cXwb_%_f9^^YpVAu-ftxw&@y)>-pt7!yQBV21% zk~$_$T5ZQ2u{)4h12}v~J304u(>|<+Sa~mdy;b5nWgeuH>gBfey@c;up9VhcSxej2 ztHoaFZY;~&p~H5SIHxMB#beM=ju~WTgmA#Q5)?B73cHc%BcPh3@xq0F(F6Ykl_Yq# z-_GPGpu9+EGa|YN@lwqyRL@7xp4;c$hQ^Km=}Vi7acPs>w$Cn;f}LYlmA+1UV4fOI zuLUt1&-E6%YOE;cqu)3Qsd zoT=jItQl2OB-^7>qh)6vyhe-oEneY7hZ-%jNb%gC@Z3)*pU<_rL+&>kl7*X|3KY(V zYne_EB9 z#(Bm@vfHT5bWGn#^ZP#DtRTiA1T_9|sPGzYR)fqUB1(E|m|5`zZyvZp-M<)y!906)^{N#3RZ zfs}D?BX~|p%ZbLFjNZ)K*KnJg#54(!)wi79Vu#8r&)&JsO(^rb*?MPK(o*~v9ufijB30++k$>%f>{vxakDfinuKrL0lVNruk`KAJe( z12*CAQJOtcZ^YrD9>zg8)S;EULU5ubO98kUY9I#UKh(iGJe9sD{Lt|LtNn(%nH_uZ zFI7^ik#U2ypsRj$7Ut%;FU)R#Ks*=0kF+A3KQ9!MTlQt7{GPLrU9RxPl&#Nw5Tjx|H2`j4`|!LMfwY6k9-;dOdzOvZ&}$3ENI@&xg947*TK zx0Ak1Ka9h5reSOH_BzGc2a6t>bNJl~adqYET@ByXRypz37QPPFPFw5TIsjw-o?6*T6 z%AR_-?Wr1))4CWi;88lrC%a=D%dt;!VLw~3O+9+JeJ$^)SELh9W!Qhjp>*%whCRQj z+zti#tSd6^*6l7R4{&T46z0_@D%f<$F=Am&aN`-f1vczdl)yD(w;rg(qN^XT!WvXTr8m?@*E^BtV&+sUtmOfh4c7^saeENwmI%5% zJhUo<4gomRV|UA{JCQ}$!4#DDSsIbZqP?e{#D>z#8yYvzs}Ur0ru%}ml(5=aAnspH ze#S*>HXBa4c@QP^wuc%01MFcutPb||RR`#U0)mD(0`9+qz?6=M*X%9=qWlh*5pX92 zaXv2QDXpIf|9M+v+oc4bq}3s-Q#)KtNc}bB*PcG^%L&%PpQ|aqoj|L9%Z|eJ1kgh{ zA!Fy0y*MTFg)0grJJ@MfS1aN%Hm{nIe7J2$aEDq7hr+GB0%f=xN(Yb5t8?7iD^P|b zumqG2`lsN+GDHPRu5duXu+W`GN}y%XT;v#J~5Pq2fvWUIovS7!(!@A5w5O7~Iz6UTk0?TqnN)0dA{w z4>lcab3lLs2eVjOVD+Zpu`_R zJIEt6D0B$M7wQCi`$J(D-c#l^VWKR~4cx)pUtid*!Xa$Wl}YcsuDuWz^Zec}3)p>K zAY#FN-3zf#DY!_l3>a9ipfkDZiOQDL6EA|9t!we0V$A_`v9i9YuBjx5CYCLH^}#0%-Jj}4Z>RL_o08J6U&Dw74C_6<5xu&s4qSvic;LQx zq+rA3uT*?1Gm(RJB_({Jq60)SYcv)pp@sg5(i8g!hw8VjL{ryA$^^w_i2HVq} z=#9w>=1rcoXkjt7n3CMT|Ih#1qyXp%@3`U``KY3iqM}P3`&?LrIF4HpSRSUeq?YSa z$66Wh5aDokxYn4tW=kDBJU@BjaNwJnW+S~t-K>LukA;74k1OEcLzw^ZKy1|>Rp8aL zcsp5-j?~}Lk?M=yOUawfX;3=wtue7^Nlj+WsR3rQ^!xO*l1FCE-dJJY75!ir`Erl7 z6`3Km)v=Qw9mt@3EMLZ?1PiJO+LzP>7eif8Y#7AiW+v`}laHswjp(v$S?SnkBlko- zh^#YmO4{takl~FzC$1R?I9q`Ys>Fz=F$b3QEh`ZLX%a0F&aYI{aG!{LfoFxNZm_%5 zO&$WS6Jc2}>lcM3V8`vrsWv9o zMlHq*&yjHJfX$}paM56}J!#ya_?Q$`QF1oFfGvu#!0d{;8riv7FxkCz5uOR2>7J6O zi9PI(8EL$k{0y+V&( zrS}V6M-1s7($y9`WuW|pHQt)mn~0s_JEf#kisA%W3)p46d)Wv+`^ZLsR-}cA3GZQ! zZu^O>?OK=6XgixRhKxz5>&kzUf9-a3m}$TpNg=kTO!gi77UzPppQ_9LrYCxC_u1y= zpgluMQIJ=9IGHAbAjVuqtx>w$k#C{B58?CTem^C?&)d9D>(6yui@?q&LI$hV5Rdjz7nsieeilL=6^%SJN%^x8@tW_ z(p9+a`pf_D_l!q|{{e@UgmNW=^&dAZ)tCGoefc?8`%_rm=NI-DtZi-Gh6-o-6lMcT z5GQ}AZW3e2BOtwoJV4*ZlYE;ck+}1lWENrYeIkldvwh-y$V1rNLHr(#_3bn9_;j+n z=G7?!kuVO)J*VzGCe#7qJJ{XNswPn_c5Z{n&R5jzoCbgAF%AD6%Ah<^h3Rqldpw>f zDOC>C10-~bM+lhvA&G1pm4{A;PF9`lfeCjW9j8PgpN0USP#?`&=#*iR_YDh^VO4I1 zOBMgi$S~WME#v;zsbRqVGDDE#in_52cUFm2^GYn?)C^KJ@xF8okz}a2a#I*(DY$KB zX-S!6Ir3`5e4|HJ2{o#kZs$n*pLp%r*IP;e58PyP-2kr#htI2e{CA`WnD%i4+?k77 z8Jk7QrxfyWae^0am$6w@UdXlBOn>DTtTGZ3v_W>o<_a?!VeV#CsIw|Z>Sk&ASS+%% z)J8~ITP6ANJIl6jXFKB6A=L$70F_nvuVPbrH3H^ZVWOWJt;LvN${ztcV?oa_!IwPv zAn|vW(wpd=lYUf1+`fixIYpWu3LWi}tQIwcp@X zLIf)sFj;;`u#K<~(VzYrA{APkZ?#Y2X*!G(ghL)W%TmMV7fQ!hlb zI|{syN24*aLH!s7q|7EYi*bpUe;|{{@J@%LKmGnW`u+!rd0+pzr~c6P&*nb0$^V+} zKOc}NGRmu|$>-nio}`y|dR!xme2D7v4ZGD9pKh#wUWS})$1X4<3v@%R16+6uaxoZm zi@LZxpw{^UDj@i;Jw)YOXkI6+|}wb*w5u)fSQcf zve--P)5o0+3F)YX?Bpv}Dl1;)c~??W+X`Mo<|`gnR(SCh9qR4ON+0Gc6e~TNehz*k zgAWO5gTkhIXLC!wi9>ndJC_~r(L-5-s{qPOt<|VXT2cS+VmAd#VS-vGum(oGzEc>Q zlLErpOOZ^+Tmd+Xui-q|M~m=F?5;5lm_yK3n!IPuR>kCvF+M5XS4EEt&eBIkgvJ}yqJcL$F;qf`3Uij=f-s58uR}J0 zJt%h=@B@-Y(jSoyyYx=-@*u z>97ABvn9V$tgWbzdo6iu-n1u1(o2IQvYtOWm-?%F96VQYZ13I=JBJ;9{w=|`Ne)KUL$h(Ye_JoNFVW6z3X?!4y&PqV@KQqUvXU<#emPWKkG*qUz`Pj#2?72D@qeZxHr6L31PzfPdLK=u!{=^ndEuTB z=Dv%#m`lJi+Z29>*|iOuOf~33bOsKn#@?1Q3c-5P>wmQ;T^8#UzjHUAW~!gt#U22x{)P##L-B z$sK=aPWGT>yO)yce~>Rpp>|{Klk^&$e_&>rt$&$g$fLPM^HRE{Ck<*~lHxvF3S#Gf ze2S3PBw&Pn`xqfUehK9H+tVZwqIv%qp*s-4J@=j;jhK385%YX3Yfn_i^DcQlIXDQF zm!KfbQ-f}4h=9W_;T|UO{$^Z95NwzzEef$o2BU=u4~Y^b3-pOJKKVj3F`OnDhv>f# ztU8_T{Ma&{l+~UZCdLQ*fAAU6igQRf&HU53gMPjqaYDc6*6doVvS8Hk|Tr6m9kbN=pYDueg|q$ zuoq@_kSPipD<-A*c^&yr_Woh?dJCH_v-YW{_ma2psTB28yuu*m(?aQc$afFc_oC|N z7ZXAf637roLPCtMwX-EUCI+2lFd!ySK#Ix6c=%ZOH^Dz4?9+{rb2-+To1x39qQUSGyTDdhE=re!hs7{ zwCAMD5f|&UmNI><|AdkK^2N0+*;4bsyiLx@z2m}=1}XEey1|}d_9J_`##iSc3>KHoOEQKoOfvf|MO3<_pPbrN$rEV_}qt@&ZgxD7)z{^R%Gnn)gg?M=FH$+oWf zb2iOvC@d2Xyh(H*KirGD7qD3`h%`c!E)F-qt|0 z2L`rHJYoKYjlpG>zJr}=n+nNns7QRfO(?9LGJHZ)VZq=zkFVK5$kVm830>w5nR8?o zX&$pMw^Pq0j?C4gN3BTj*)J~blgCeztV6c7eo<>^3n;?5a|Ybd|~$D$L3sOs$@1I z5A$YL$ma340uS8`d@->1&@iz7P@ zIlma>o7N{LZeaSf1;zxLc2X?r>zUl$&la93XD@mbpF~v9@;&vPkg2USFMpgYbe2nY za&1JqZdnNUvL3ffr{OwR2)iL4BB+cyZ3qeW!Qfag7GUr*KA^-HL~y^#0H$yv@lS$t zr$c7+^U#aWU7p%lPe1r^%KmA`-wG*hC=FV=lq9GPw`coZB%4q#SwiD)`qC)!Prq|7 zj$cArs8E(wU87a8Q%LwyRR!dOO~mnwR%3Q{h+1dz7C@UQ=0y2m8D)63A3Nx01EdV8 zHo*@SK4S-=flk=m0UE3aS@LlGqstG|-!|>;Jz#%7zd?N+Ye$DPM6CQ`o7q_$mvX*}XBI*!dUMzs_th-6hFfKpp}0ChMvFWTa)WV0;W>r&6Akp-P0B`Cr`G1>KLsC$L%1h=}cGGww8-F^k9$ zfMGwl@T^SrZz~P4OU^7mVC3hs1yYn@SM2PBpEyevL^T?AR1%#zsPCZhGlRos%%b1# zY=r4KX_0Ef>9hiT7R5rNZ}c&L|Lvy9%OCGMZnQImjr^vC^uhxZvtE9l#T*Lm3qkEk z9QU?+%kDElV9x3)>{ByBc|{9HJ(A=X7>L|CQ1(OB#;*Ha_sVC$N`4nLd1DkS&T zwEq9HX!qwS01A$r;W1CPey?UT29&BwuwNwh?(30&4G^kJ?P`URB%hBGv zL%f*JP?&^}2d%E)jBLS2mqeoP1)t_2-WYbM`rwM3#GbZMGYU6u7kAXmCdcsUQa9;q z#6O!XtXj2hkt&RSiLra1RGYV&#(hXW6O)}A=o8=GR)yVJMC=RaI9+r9)vRaJ517W; zO@ZEeP#=Q+4LxNr_7_IY!i*O)9r;+ZU)k=q%3Fmv3;$J3-XXmKB4 zr~~tUcvj*Xzz=f7mNjs1tzgiL7rP&cRmq2AD_OtXM!TH zszi47M4DXkdPX@_ZtwJHZGpVzX^OGtHMT}f5#}pv++FV2!5CV@YlGebnAT? z)oQ#!KpStVpM|pXPkIrj07YJ^$L7c1H0OLPqot}I?VI8iBGPJL;sJpHvx#M-22Dp zIp@s6u*}9VtirI32#AP)hytP_;)Z4@N`&CP<3@;xh(zw?V5`QGkfbsLpFKe|g=w(2#j4!4MY+36r>r4{;|^gU{qETO z+r#P8n}vR~mQ>JM!FrPXlbqdm`wQoHnr(kL2VLyk7UoUIN!v$G=8KaD-`S}QTFWpYn{IxEOxxVFS*X0^EF@*G(QP}Mb~?*0 ziz?xWGfOzezwFK^;bUh6`@-{XLjpS>#~ciyK(zV#f{V!4*F7R4I43_sayNlS!?nd_ zzl6)uhi)o!0kSf87Y@c!WAbX3C`Zan|z!hPu1*R7OwA_WjT7k1jWj_PjaF^{~{~T)AOyw=U=5G zNFjpIv-@KXZ2a2eG5GwRh=4K@hzMXe%;6q(cKWsZ_?7D!0*D3?F?KpKImdF)xJMo< zh)Wjq%qrV6COufu;QCiq4fmJX;JHi0u_v=mAg+w@(rETMih?H$nX$K+UT8fOZ|#>s zww`w8E&a~h=+W$`*ejWxl}BbiHb*#c=ir6EuqU&Y!`F|NF5oBK{a*Dkv{nrX1nB}C zSvR#Pgn|T=1yYm^%rr@u6kK%4VobU*e_w7}97$w?tc-Z$N2BuwsbIuB>cHDyVQDbG zgW7?+`lyh%Ohh*$A|^(oHzYc4n+{}7Wk=WneJTUea@Pj$F4C68tg3V88~6CkZkg#l zdeYDr>$X8!3ggCYsLd%Px2bMY#E6mh?!u+pId~T4PJ4j&z#kZKY676{b^;+tAcmWb z$TCKc%V7K*!qyuop#G@f;U-;>tzdjeT4!=MZcDqcH{3+~Hr+<9c! z1GMQFoj*SM*GJqlNb*1ld|hDO+$Y=J64#^9+UvipG|onclZr&z7_5IjX<_5gB(2b+9m*RbQCA>&}b{;NWw z4rV*|&gZpj$je*}*-a9`+E?{h>q2Z|S?xG-`(s7zz)6PZiofEyZjjXA8zML`2+_HT zI!H{G>cbu>KM?S{_iI1N|Jh@R$_(i|7t*;4J1seniP~l~;5^w!z;A;mq|~KoKa9xLxPBR zL&34jK2aO8>8I35uh3yvBf2&92r@CRK^}6uxAENWFhnH)X9jK1;NdBHm@P=@wn!4l z%i8J6*q|#zz?+~l^};+eacMV$3h+MqC+)TtditF<`lE&(la(%#mPr;8=cRG~q6EA*lf~#85;K z*%DRW-e5%X_SU%zW}O#i$rbfvZDeN~q%XuREW2=Ms$mwy+_SvWjS5R)2V;k@|1Yo6Z{|##c7FBck2etAcf_!CCN*vpSAmoIYXHaPs3z2WA#$=R#H{!-F&%E#(O6 zo*`CI#Gr~sE1Zhfc6TDC74zzHuxPZL_15LkU||VPtO;%9!ot>J+xIjadva1j@$|Yw zdk#KzY}lGDwNn#!E`MI~hzVW3WX6+&`=t+09yoH$wxOGrkEtq2Nk|(KSC-9Yn9X>i zCJNSI6w{*&lD~V{U=WZ={{9#{eff=RB(HiH zxmULHLh9hb4&j{vCZXcElVQWLmfyW_BD?!AZJ>6JxgPR z=LWBV-CCEeoV?P(8dML z-!zpX2Jt!AxWb%Q@!Jn5|7(Rj(iR>?=e# zF%|{Lgk?0Vv(N|5gs3A1QEzq!Uy7b}f+4?ht=qz4H^{zWMi`5#K%W%F^T&;oX?evQ zi*#($H^&xuOQB;)JH7c^6i$L_^UhIni!#W3F8MjT2P8jY z9(c`Wgw@$;Pz#6GJYEDI4!nMVe-639k$W_%EZ6mnKLwxX^6Ob-5x2(c0_;)5{P6lm zM1?Gvl`#0se9S7hfG}T%s)2Jp(58oM*8T~?5%!{--okQ8xa&C_-cy7bY!)v8VRo!% zhdATa^H0$0FHG4v>E$ee>He-3Pvz!;d z0KMJd9cokuV6RyNu+7?iy*$7!;^>9Fkfiu{A+hC#D`a8GmQJJ(`;8+45=vWh(^7Pe zAFa5L`l0Rih=dVdR3bBtlO|tXSLNb>K-Ci8E51xCHhTJMK*OcccyjIuIn3X#6maRw zj2A{%1~5{z0nVc2WU|fS$Q``pZ#{gQZ?yIgh}PAANWb+>lCobu2EOGVJ}Je@NL=yQ zN#dQn99fv0=R$KFBM_qk@3XIfSJAJ;IrP^lO) z?EQuY#z{)wZ0^KXSR4{fN zVXt%Ol<2gf^FOR7zbG@t+nWT>ns=Z*JjuPA!4_)P#D~WN5zRN8wU{?qHX#0_%}V<_ zPac~8XRXiN*53LjP0?Zg4o}QzdSA_s^Niu=nRhxmvHKC;i6QwhgNN}>wA~)n!{Km8 z;8mXF6$}3P*oyQ8=+2Ny=+46THlsU&Y7EZkRE$16D@@+2bVdP`V}hVF8Vv}67<8Z^ z)BU-;=ZBU8YRbY;c1x%W`4l@xFjhYNOw-@bwY+32rcJ?uGPy16ZFYGvUwPk;JG%Mn}kKPFB0nK)^|iegBt5Z>V)^ zI$Z#>cg%RW*^I0W2sLmdAz;_ek)*hyutk{4$rWS8!GOt;H4R4+X?gQ+tNv&myt(U! z1)E+Erolnv%Ccp1YZ7)z<3IcGU3zL?koWe~*AHw7+PgKSdH@@N)Vn{bKL$IK71EX4 zH!LdY;fXN51xXba<2`y@C;LW;k#hTnsWwS0C++1iBg;#O%rdY6Y;>& zOSEFjo(W}hiW>743I|`OFFgO{sZ1Ysn$X10e)~Lc1O0h#&4#VS3BPC?fqR!mUEwt>aaaYQFWw945<>|7I>rIV0g z5mLrX?3FgWC^J6D8W=w?Ipo2thbDb_j_m%X>7ljr%0D zfa;<>uRzQl5`-BA&2S*`Gw`PP-{QfslNaY0V=C(gl-poUxEs#$$iew4ha)`74Mv8W zTX>Wz+-kTZ?tuxMx<_(R>+uLp{Fw`Q>A-ZvqQk+n3Mo0oLLrF|Z_j zOWC#EbQlBRKp&ay!7-1>MF>h%a>$v0u1sw7P&wJ<_>cjD2B8zJ!uZJ6vulppSF#*a z#JW+cqgdBu=?}e_fc&umA%0H&Sb4H1`M{14Z%tXs{0WQ#@*F8R3<}7D`?iGjuh{G# zwILmCR2Zgk{=!!w>mnREL&K0Wl-K_QP988W6!tpY1tJ0~a37>r1GK`fs$QzZi~yA` zQb1j_AoxZ`!tjbT#07!ige^tZ!S-;udlqZY0$NeJ!|!Su=KVUyO+nL8(U+GN|=&N6q*9P+MP*0X=Rb#8*J zV^+QSShn4H7DD)hEQ1AA3VOrxb$oye(3AB>5HL9w5H1Q9!J@O83`VOCy>XojOb(-h z3zfjKzu=y(u${!|(C=ycyA?&U81|)or?=c}nn=zf`)A5@pEDheeWIagy1ePh1<2(2 zy^k}IEYA_coWbbdaLpOA-t36tyeF?aD44JTyuDr7rAntT{24C*n$jZs~BK|Rp-K~V!oRMPHduPYLBI}M&?pQ826Xp9aYdWy3e*hq2S7< z1*A-R_22SvVO>i5HP?}g&KQ~*SvR6)F0yWpwa3O2J{j>;`u<|)75ZH(Nmd^r(X`L) zFX7qY8oanqT_@i`BZ*cCR;#3-@bEjZNnr|nCY^J!`CGCkt5v+vmI#JMjwEtl4XJ7X zQR=}vRrW4|hf%}EoJFs&*9Qdf5$%LacK=-#lk0M9&Eas>QQlXHiW)K%@~+v;bVAaU z@55?H``}54nG;sy&La5n@$!vW1fREuBiG68nNcA}`9a^oA+Xpr$1$>=3 zUhitr{Z*~F#$9fa3r`T^n@p~V^}-_PD5&aU6=v|IAO{B)dU7bavUe|<$*$2(`?G7b zUh*|)k8%xaNI2fh-FVtVICS?4JWQE)zrVW>^OuSG6x4{RD#TM@Y(B#1Y7ePIxad&e zWpN-eN6=Plid(BT_ZCn2yh}Xj(~Y>g5?6cRYAvo-vz5ab*MUWkI;mtq(sf-wuKLkI z>LWfA?$(lS7tq?fjr4aCt-6K#gU11-T8zrh#;+$~y3)t1myNh(`|cOg%(*hv|L2sfHMVn9tM*Y0wL*gk(Jzj zyZnRvqRTy5wJ*wfxxGIxl5VtiiK|<<7y2c#x(Z|vg3kc_a;$F&Z?IZ5rFV84a?_GJ z^-_q{7ap!kSp;$~rMo_Vr9Uhq5u+is(QBcR_u3QnU+$i~=Lxu-(szD0(B3ISAVj-8 ze6V_Lx-t~Di}V)hdkiDO>SZqA+;)ej-Ncb}G%B^)U8B*7W*w3d*(uFvWMs4(#1n`* zS&iKnAvV)hX)AMh^+u%<1ckA@tu(=XAwbL6H_FWx}k zb4f>4jD`R+~KX889-=-jAjhQDAiPV4v#U#V~3pfO{_$euj~Q6u<t(4MzrRl;T$W4?bd}DSf_VYkd=mZ`dFdEc>IZmA~IGi#iV$Z{zQ8be^yNec^K}i2Kxg zug9of7n=y=KTbucUGi%&lfPDDR0;fJr9v#{J2D>u(~*d584e+fMS?jaoZhIN*GR}D zOGnW|v?d(Mlg&Iz1mmrIV>Lx zQLYe{OWl_1@}QRD$xx|T1sVh8A#fG>(=Su@B_9Yna9y}$cV1Z_xY?bz$*LN9n`mmJ z*d5L<5vuKA!*i$}$cXa^4GSHfZwWI)^&g&Za2OoHj&#RJhvX)PIl>%)QjlMu-?02Z zU&(!FKFHRTv=F3GLInf4HQdao?dKY%oGMCS(_lA3eU5}m34$T{9}WZj#_Sy#86=rZ zN$UFk!3l@^XQnjvpI#FXM-~LpjS-wkFQ{Os%%eA_+)r~N@Ra>ru(;r#ho6gc)Y`k3 zF1=d2ueQ1-YUet?jSGYDJLVIX07td*gGCmr%Fc)|7{W2C?%pQv5eV^w`$vQhMa_$U zxUYZg(0qT5S~Wahjcv^0gRU5%VgvBLpm)CD%;Jb9il2monQ&@x*aP6Mg1}MP;mE_U z9GoglI+QeM$i$+l0l7O(O_Qd@o((uN#?r0r^S3X3Oy8uR#8)(t%;2}KtXdUc=2IOq zaYAA_DH}2LrAyVcDlaxNMxB2A$Zzx~=PBXxk)|pnvh(^6=>yIiGc+U0#apNe3_1%yzqKSiW6r#*#6+dd0f)=QD(9!CdffhzfCkzktf5WR%h18_E*+ z^oe`dele7^_|w5wcTyQdx09%f+N$mE-DnBesq@($uxBC}bSZy*R&J>}{*80B{Yz@- zn&i!?#QmQhHMwJIi914F@vCu|NU95WZ>w9>C%AkKP$A@)VU7(96ir@UTt)A(pX zfOC&Pm8EGrhYed(u;gWTWMZ!fCRDk1Tg#Rie;XZ9x7<0tOB!5#Z1U|)TuX1~ z&#vy9AK&(Cd2P|bvfR9g!P&DOTh(Jo@KAZP-?{qA-&ZavJ3VKkKG?-N-(h_4{-D- z`{F_$r45Nm$tLA+60|079|cUpl$0cF7@4oh(>=Cw_2#iNhb^wFn6daTkLT7U^zPlO zbjs|~Dfv@Gh5ItO^u zqL>x$CTO&QNE!+Z^wdTm?j8~0>8=%t#_Wk$tEUnXXC8bd+S&n|We+3VPDefyR0XJ) z7<>8f;v1R|z7JpP;;*mLhM@S?Mw0Y8DM@*KXK@#DrOT1=+b5UTGedje!eXHo?+hQ&BE0Y^ShK*lN0hsSKSn^=x^660V3rX*IS z)+E$F{!`8BU$!*-^U=05J)Rz2`%>=U;*U1>d~)1#OTso2_2bXpUAvw-pQ4Su22Zb! z+O6J<842M{+* zkvXP5frf*>ftJXw7L#39Cv;r>5U$R`y(5Kw@5@(TR<0iCx;nb!>d|P)QGRv$-{h-P zn>}XeH6C#9YpckX0lb z;;wdxC%|U#xGQ&$G0y}jfCE7kNsT>;A< znAt!oBT6Wh<~d5T!wyXY0wrp@5#_Rrk-~x2ZPq)tyhUm7!*sULIKqk|^FvdnNt+J8 z=+p}Td>iumS84=OuTs^m0>}pPHi2%*PZ*}RnCw`gc9XQft*u2GN8wEU{by~{@63Qy zoyOm?z3k3%@L3Iar}}MIT>uy9(47(q;{#;1+t$;PBUt4e>z@UI)NtJ; z+EIicv{un?UnCLV3PPQi=vC(|P`}7L=nZ7EIv0>7%zM*ah0J}Ef23N{c|`&CL>Cqm zK3r{JCoGl$-%#*8sdJxR`r6XI`^T)@w|~Xh zJ!$=(%CFhmR-QRGDPd0bh~i?QDRXX0;=I8liYEydYhLcZA_wTI`GPM`NIePzO= zi4V;h^WZd6Hh$8?!g-@|XQ9tPjuXw?#sR~lJM`7Ko*XNsr_G9;Yc=uq@m#q?BoxEWXml_m*$TMFu0yNYLI5kJ#imWLLhZztgH*JUepPfJp|#aBC_PzCPC1>` z)#UhkVq8OlQodM2e*^(UBA2O925i!0*j;+)07fFH)uKiP;jYq&I@s1S113yKn69#_ zAA!0hs~g~6t&**68rUVgg`4c>4boIXu5F|1K`m4T@=F)DX8XO>5+TTdgnj{|_|NZc z!7d_J2wdz2;g-`ZHn2OBYLZRnHBfsA9e;!08QVyj0(quJmYLUK!A;OIMpdk53-3hkRs)5z=D#D|`v=SYfh9l591gfE<31W)JB&Yy6?ucEAMEu0NcO&pkOH8^Bx;Nt6G*E9|E_`+BiMO*wMVxfP17mrh@Wc1(QyEQkP4rg5rvjL-s_VKq_2}tC3+{HOT_wWq^ac6 z-5QQd<0i?Ldi$R=29FEe>+@Jj0nO|2ml58nuP39&zXQnzm`0ud0u578l*H)p0?S_G z>V5?pP10+b`oUXfla;rxo`v04L@(^>M6NBlfky zQ>!t8F2~Ji6t!K%kPcsq!hjqG+9I482tL901@lKZUmaZ)O*h-f_1f|(I>_oh{-Wsp z)?1T>0nUpgb4YmUuS^El2`LN#1!pFBRsF1ROK5zpT{`osa;sDEa>zk8CBVikKy4B^ zKd<^k(}IGsNz>-$=L{H-SV3C+=(+yU(u}HkTMqQ9&7L_veS|HR>@U9t%mqQ!BqWPw z^(oYAM6hS7Ou?e4_c3+x*LQHa@@I1O2F?{(ShJyoZO2SI3$uHa!lDiDhx)5;CQr*tliWCO$EKV@(U`z16h9vU@9CQ(aUYKXTxZ z2hslnLXH@V{)3132t-ndAcA@{A)Pr@EWE6U8~}(~xvvmlrm>ij+w%+Ce!|&PgK-mJ zr?ays4jG`H8k5Zy73C483J&t%9f7&d)N^LD^U>oV26A8I(3^#87qStDDGH--|$TJxq11c%0uF&WGvjYc=F)~ zyFZvdV;S|0Ea;n>F=}9ZKG`}Xsas}*Z%n_a9!VJSbwWSkHrlF;xSw8xPU)`?_A%Wz z;;wU%9gK2VRf($NbZ{9!kwRYZlw^!}ec^(tmG5pHkk;>k@~6UzN0#sb7q7?0EuB7b z9~*G`=2lZh!0xSNQB|=r;21C9KxIYVl0Zp_Mad z)fOPnW>i7#teKTVJ>7_3P^?7)&X8|ljN}p0tG7mia$`?Sk>C%qK{K!=C_msdWVn3% zKenG-|JY%GnnR9p*VFh$PxcQB!vyu;8j%R4Dv_8HtT>Vq6A}|Za*cxtUra{=wJx&? z5?sHtp9#wQiR^uRsk!42dOU_(4bL50)De8>U9}ZqaPlZdzSYWq3nMJa4Ac;TB3{x`Z*NL&M$K1KdUp1By)9vQD_)kOe z!JfLRs=B(WWslJXb@-25Z=F4_drWGN*@c%XGP{R&i%ZRkj~Gu1dj&@O^@ z$uGjf?4}CL@a)d)FH1tHS*Zt(R;_Ir^RQFNevjBl{qAPK=vSwcUxZDSn-)VaXtIT zk6t#eZfEaqhjRPGB@Rs*I4>uaexIH_BrRhI7z228^e&4HDd_&gT$~%AmJ+kFb@!&QgFlx`uh{xp6cdr2n@DaQ@r&fvUBpn zy{)19=e@Ef$occ>-Os%uZ3uMEIe1!ga%{1fOMj&^&u)5jXzhT=p`k&6Cij|P9md;+Y~w=%m{k+S8FbQwmb!=NQR7Ih6;3=o-=mxwMq!B>yxT<)0Ef@E*F(ZRJ$#HVR z?*MyVKDZqk(#v5N;5We#BJInS>|-WJ>vojRqQ85bQ4b6LE~xU-s**CF>B0)DGv``P zdhWsi$G%|WfV9zdBfJkDtS9{&P=&s1*;};bK*`u+!aKDK;AsA8#>{oqhqn*yGkVMu z#K7!rRDEcUYFSNg4-6P$gX9!yY7rak(!~|6V;&bx9gjlhD%U_eWY@T8_Mp$LaemyH zBTAUSu;p<7V!YppBMR?>l>yf;fOX9@7;vhVLoXBxXa-xMcaI@4v>f^qLrnB|!775& zK<4%Scc`AEylT?qvc*#-Rh7b90<6x2bb4^&!ub=67c72Q0pbJ-VS-eM2-#WgZ85&+ zA-HSZeF2tu#>f#4xlX4Ib6`2Med|JM!3r0m^D>SV9mxE>euXKmzs1Ag+pBwzWT|S` z&cGFiCXZj)CC|Hu&C96M`}u|TOoL^}G+S*fG~0fv{>XO7$%xDul#$Uj-I@^2$UI{K zJgE2Y+DG42KR7?Rt3hq?LiV4^3+gHND5K0qb}X}sedQf~3Sgni(l-fNU{LU3N^(;z z*>XRyEOR(BBTH6T7^xF3M^Qn7$fUg-F%s;9llmnM%=7=827lw&w{lSLj2>Cz{60VB z`Bz)_C--(;$Y5y4J{06fKJ$&;w-5NZvBUc17X1+% z7_|$QN`3AedG&yGozKDwsn3ASNpC)7^QsP-SUqdj*(L_0J7wvtsyjzcHGFt&yeXpKlRnMs6S7%EeNCP-$n+jadN! z?mGEjn|>!Xl{05Q_i$C&w5Eroybbo6THB)sd*w|(P7fXV?92%=@&#JDV8a&r#}hRh zHW5!I@qr1h`4XcT$b8m1LV)gR7CkVE9a(ko=~q8}{e|zVEwA~IuxCzozo+ zuLmxQEVmok^Xd;ULLsQeHd#D8eEhxiAqK0}A9knHY9fM=C7ON zF-Aq&TIpVA+1*M=_4fERN6uB^*KMsC3EjJKSweda?G>3kEFNuQxnutc&%1gzuRlM; z&!z#YDRQ=n(b#@|v3$4=E?SJj-3R&k)rl!l!JB89Hsf#~WZJ+>h!d_;J_`1ywg|rF z-t3$=#l(0AsO$lDAXo-SJ-d2$9g^?mjU{%EXkzg+reVNtbTE;O#V_ZJD#i|jFNB!x zv<-0J3$nSxx9+v1!d}@cpZLqGi(dU^)BHwz{PPRny!<@zJp7kwqZ7s_Ej?Yea@p+V z!HEZw+zxH}Wc@64Ty*gIydOV)39uf2-SE%@qYIrsQu6cNajQckzoZjRKKJ74b^pAp z8svB2H}dj@9o$zs4OI`GyN3<)LqvS*qxE%4MgL@AYcD?@bP z$QFx6}1$8{hxL8NKMePu6ePOs;?Xn^e?D zeCaoh^sB>^v^35yL7RY>E8b8$AlbrHy)yy@H_2k+phS|Ji5N|+xXWbVIiiY;M+gZgZsYsO#gV6pV@K|~L1=F(B;q<$JMs4V zYuo`(XLEPgxfyg;1Jce7MioE^nVRehP4g5Jd9JyZ%!)Um!0_Z|MX_PgT&sL|AP6d6 zJ^hYG$!~@WF7Wlb+PFtbmc7=Kd}yb!nnxFpSkiZy_mwlf5|s>RCz4hV?c0=Ovn}1! zHDE(JG!djZOQk^E1$icu+y;%iXhy*`cmp*e!>h&aR+yL>pb{@XLYRP~@rETk0LZJ+ z3Zr*#si5-?iQ_l6wahIm^!1bc2RzCVJAlqB9Nf99aawBS*G$vh4`uNP_MJQTu^A(69$u@F=Zt`*?G1!Ia%|3+T00p}IEEnzKO4 zMn3dU)Qf!~jXVDF7uKA`x`rIpj90Vze}7iDWAn0zS`XA<`!gy-JyKLmA_FP`4=8&c zUnZUVhoNV6v-k8!xTtj{i_5@8na z`}VDm45>r%D01B)bNZq07R))=6m*h@31C$|CX<)NU=TEV5g2V2J_KkKk2`Y13A?M) zFtFiZ?XrlXRDJyEVTDt7&n}?X4-k9X^ww`%iXd`4>f%xKB3DVVN-4Qoid9b0c#=yG zvUxawwy@l}E~pLy-kqDq9<25Sr6S;4^lG)%W>lHA5c96wP(CNFG2)pyVU{$w6=B1X zE`p6AGe-ht1~UcUD}vC(KKgR*!fi8YpyU@!qo!7*Y5iLL+zO_c8(Ov*hLns-`aq~9 zP0liMyk*T0HMzNF4Yg^9Z`?|g$@xvwoc)B;F(sw6pIAUnqqX%|qbx!j2+tL7ZLnT# z^Y&Hy4$cokYkiC=s}?q=*2Md(z5>u6v7nZFKFZl0L@x<~YOH zlG0ss+$PNLdsv7f$y7&X%$V9&PYS0`r~5oI=FX!nWX!BF&YOaHcqwfaYDherW2`zY z8&_~JtNLZw4IYjNePBqi2#E+q zXPl#jPE98Vu7nPZrj-h6&bmK34S0)9Q!qu#M|^hW5Z8d8&3+_WDdYaU^Qf;XWurc& z0n`U<(B<{2$-<~ZqeFgRsF!Jf%2MP>Ar&ak!1 z*Ds#{^hS|pcHSAl?a7O#b6*n9cJD=h<;z&md|?sy+31?G1>W&b_b}ual{U`S7tBg~ z5wp=7voU*YHzk3)n9YcJ`3_7--nNIj(f#{P*z^81GdgyiH07`%hM=Zn@%P ztycCfr3oSsv^rp04xDo2gg-JSGq-=1BeGjWKycrY^HwmJ7kZUm+Ox0*KERyJ@m;6S zX+BxK<@k@!zVIM9{QJ87TNtLxe9O>jy#gi_l%xb3=IP>R`aH2zfq%L9g}+xqpD|jE zw|i5BBrTq}VojiF82B6S?xU4rjXD>jmY=?uX>$49Uumi^|D~ ziWBuo7VJTbXNH?cwx>P-3miqOdWNj13|KT9t~lA-D~}aZ8qTn60Mzud@o*pz%*Tk? z@BcbR5GUL>0lSWw_w9oO>BD^Ytm?O(gdG^TJU6MXtjELU{d31pONw(u_=gTipD?ke zYHZ1*Gp}tb?2|gaVOWpxJqn6;Hdn42G;ht|hWVM7w*(8-r&ooARi_#Amjz_cSeWHi zs!JH}UonBz2U{P>o4z)`i!CW8EK2X;x4|JvGxJ9jCI=Y;lOD+2S)I zMG_M8xZZ2r{z816iN}Z`v8_>ahKzri-b@rHO8;Wq(zow?OM=_NMxVPT9ilgH#q@w- zixx6`x&TyQu@-XF3xCwk$Sp)BhfzXl#{EuFw6Jr$&4&f^c?%ih0E5Di0yh4#<8|1w z+h6<0dE=3z;m+fls@r8RbraHrMZ&35^x0Rwc%50YAGOgppXt)SW`j85`CT~`b4$1csC4JX0eHehaSn?P)unRxal)#J;WHoThouOuOQ_c~I4QLLR zrI(KxiF!~5nPThKWu67LzALO#I>7b6d4vuAEOOjG&ys^@p1;HrRH_p4b(mW_B zp|`Mhlk-++Pmjgxvj%q^6_(^SV)>9!!@COyTj*#Lr@bJ?i9wH(ON!Risw zQBls%;gk66Z;K z1vo<)6lDIn5Gf$>G0YfJya)7WWuP^Dr1?POEgx}rP08d(pF6Sq;|&7~qcTPe$Y1^7 z%vsYbiYlf&{?Mu+4@GsYPFuaX_IqLu@T#aBFd@1mu*ScBTH4I%v-{JV6;D|~>w(z5eZqkN>nkOGg=@Kx%d>+_| zKFBT&&FS9V-{9HB8WuT7mImEH z^9v^d$42GY&Z+>NCm4Pt#`Q}uYwQ4%4>8!#0>J29C9jgQm_@;B>Zf;I*r)3b(C?o( z_tfwKYmrX$Umm3EZ!YZ9*XgROC;ltQIUi5N8N)HP+n?Nx_euy z1-rLJWzF#L@HAU=ZUQg~nWO9?uRc?NbouO zc{T}rsp=&XoI}4N2b(JP({ni_b$`WvGJb#Mev&eTp1}*`CXJEmC6?Q1L=G5Ai1mmd zgWHgW9%T1cf}QPUro{_pQ-0T&Rpg*)e7BeZhz~p*A6!=G2uF7K&nA=&=o>>dF_SO`4&p5E7%J=hbc><>9L?1gY4= zBZGo{t>K{&(Glgy(5gi4)C^4=+NVFnvJd0lX7}Vt4Xja2U51`4RQ6Bn78B-e@_poc z_0g2HuAxD`I*rlPqkGN(C>25j?ox@npyK6_1VdE53;sS4DrWo9P`P0Kyr@vW!jw$) zVJ1Ujx(9f91p8zUKn`gX@&!(*>yeMeaJG_wy)|0(uxhqyaz-ytZzJmQ(vk;>!?MRe zP$W(*2@Qx6d&D5F6_JovQc^IZPj+_ykqI+Kj+~Jo+T3hLk%c^wYbTouOrqeQ>l@1j z@A$&6>{Mf-78zq~E^N&Gz+doJ?H}=1_W%87?3VZb89?Fs4jR!@J=Fc|L#5i0$_w?R zsRau(j}!M?D_x3-iHduD@dFemVDtaqICI8$=FA&s5W!~w zq%bJk$*|(Bkq&}05S0*G47(#4T9Yk8%gs6w-oa$NLbay@DizV<^F$w;l#F9Id}5+W zSl~7I&Hh)boul0?LxLyvG7I+L6_Ldz$9SJMKVjE1gPwmR+BAC5fQn&K1b#0T2AsGv z)+_V1kyoq3NQnggZtQOv5qq<#Si%t{3+Ra;EY zSCsLz&Iu2rl?=saE^Gq=XH=q2x`P?cWkB43;S+UV)lbF}J-7NYxK7Ip_zO@Z;{z57) zESbEfnj!s=H}7pdED!M~$WjwzL_&tYgklezN`Uw#vL;{$#rZcOpET;(nJiQEX zOBoDao@TFroP00EiRfx5s|4dwR&K4~pfaj$T8DG{fC87+R!Q^4a4@Y>REcft9}xzHS4m|CzSqu>_| zv4wg^ghqt>;Ga$czXswP0bYRi@%q>J2HQS>5bo4I#5owe5_7h@P(=hSYc5;~ih9D@ z3mZ(Z7jJRs-P~q3k=!-@x))BZ+TFM&r+QewRYm6(&7T$+lv9;GcB=Q3ad|1uKQz5A ze}4Ml-|6b29T|JQ#LrLAPq)urtl6Ks{Q(lw{5gvzjeyNxjPdnU0eMHGcL%bj=R zGkcNlz57%(;EV|PZd&v>D(M*2%x`ACpRj| zXB+8(N&xBM?s-(k^$udFG;VMw0cq3ST`if_z&=-tW_Xv(fgQS^Yi(fZhH5d`^7`!w zdM1_!Am`LDJ6F&bMARX&AzbU?yil5+bCY;IMX#J{D6K53zrOs0utDbpa`6u5Z=UpX z`W4-MBCav9fkYm8nbpLkQoT40Jq~7V@&PzM0EB#f%_gi{MmwWIb{N)jyFS{vP3&Os z;R)L~$I(Du>&i}VW^HQ7h=GOCQ4`Xe-maQIv{y;3A3JksOl%G5AfaX z7fxb++_2Y7qonMO^pIuFg-0*Yvj;f-Kn=(DwgU0VrV=e0qnpOc@V(7evu7v=RAufC z=2hacC$3LIxFgDf@3M?X<=LOWeMcN!@WjZXe*^h_*7-H5Y=`|uJFe0?1?@2-BUC|q z^!M)@Xy|KA2>lO$9y_kq_m5xYP>;xU zyA2k3;G6?F<$30v60680=AF9RMza|PB;LQQyl=!$#{O2Tj^pwUn8NNFFHz?Ka9^_+ zszz*=g(3MAAy~(2FZof1X~Fzpmc&zg=ItBZ7jWP#DhD|5%T7ComA)4f94oX|3d0KZ zQsEh1up!)49tL--CR8WFeqkOWwhWYK+%x+OzVR%w^a2i+?#&$`LpaXGIrt?la{f*# z6d1?fSU=#uj72}pEb8cC0OPA#^3=GyNuH9Y&gdo*&P&dMj;!Pc@{o53<;B`C3)`9~ z$V8nv9xizt`z3l+Ze=C!Q{AA)f=S)G&MAWGA}KF&9%fMIbtHWq+2AZ>;lM(P>}e6mQy{zrj*pwZYMxs$Xhj6k zpK<=^LkeCy9#x$)Ov-ZpwulUDZKGXgA^H-0mW%@=IOGs|8-?Cl7-AiAqVxvTwL@>x z>D0g_m&3;$0ajUkLbe*);{43yiF&NF`eXFt1C=c|x7asFwK!h0pU4%CUvkz6m#duz zr6~RS zDkvD3(Sl>>^*Qv~LuJn}xd|Skq(x^XGfU@a51Ar_%LW;}Wdaw`FV@WyXK2Fq7UE5h z*~yO$!l`#rHNQ&WRmN6aCZ;2AZqn0hAOIegB#No;#BU=yTZg1djM)* zoga~^Q*`HorgL;ZfbsYeMg1#KM#UqWoNRqEtrzI@umd78Fm#wJ4>jW9Zhx}VIDB`6 ztmWGI(gd)NRJgbFiIGojaL!U>G=6lQ0KQVLOc>ee$OesHqI;6Do^U z7pjN4%Du75UgJ+89Q3pOQ7+)mx9R~(xTZ7sXWJmQ-xL5)zWz8H2|HyiZa_0~bJL&- zTF{u?AvW9<)kqGfv!D|)LR~$vYt>`uji)4;t* zgfP5b)6N!b0@k;w({V0mNN_|fEH68St>aguW+5rD}1>=J?9qjc#6Jv zYP)izKUWYTlMOoyJ?Ur8ujroF+Rt@UslHZE;;OF>m>ZenrE1!_Fs z{H@qem|>ay)?*jwndcI4#Mj;4wPCL}jTVozl z?M>;MzHpEj_a$9E&BuRFK+kR_cVI*NKx`+5^v*hji&%u?oHPx2L~fAr$SDX@#d%0xQBl}NQBhu2eLTkB%ZgM~tI-Ros9qfo zIP_GBDJuO1js`SS$OPGtZ*ttc72<>3z~Udq@AHwzc$4KMk$x}>1!#E0vD z+gma!wEw7i&lIhEBr+st!qcVmsy0-0?Vgy{_e9?>E6PvT)X-N4h5Y>PNz(rr-}Qbq zw5@5?KF!=+b)PI_hNeFb#p#bny69Hpl3VglAgT9Ll(c zaE#V49t`9Tp>A3P)dV|fbWo`~^aDA<18fFaKY&ow+6CQCoY_qvH<)1;Kk7oKacRXk zsAM^%If$`MVc0B@v0>f94Yn|=Hq;c<4XZo8n^7kYZU>`Nf(5Kv4aX>+!jgD7)GEVe zlZRHrjy7&z@k|(;u&`^eH+>L1WIvdPPSj|;B7$NQ=CqEiH58cFjoMunJhOR=Ic+FI zlbziBZ3mic-s>e*YrJ&h+>eDgyq%QH3}4-&FKKzG`^JS=Hc=1ZaA8yyLzblxQuYNP z%Py=eU$Z7EHx1ln?Z|>%Z_LCg<(3ggM{Zh zl0^x%B;k;A?bPO}Tbc)Yn$MMgCj{L&Onu2W(lFPF$mf9VPkzorkB#;C!_wJMQI)@7xvnK~OU8>Ck$j3ZQgY^RQn7 ze%aK~v7?o=p3JR;LdUv>=QUuhUFN4G)|$pc=c)fwU6ii^zScwtVI+&OF|6KSx^HyB zyEN#SFoyoodV#!h%y~sVBCDNMqE0yAyeK3%bJ%l!!a14F&q+K7Ma){sAXu4Mg8aZv z`Y3x2&MuaWiYGv8gZdT#M z2B1eckAb@3DGH%_jjXH~+$ApAefBi1(_)S#zWN?OF46kjm`)buZ7S_ zzX*#se@lb&d+@ge?bvar5(Frpv8RnkuYO0b9LO5>^$&{B8?2$Ka85>TFsXx>zp68t zHh(bNQ|M%8e-*1qQ8rj)JDoO%1J(+ui!EF7pRES=@ZCD(V6kK5jei42M2I|#7Uk4#>_vd3buyy~af?rN+@kV-GwA z3Yza487UQbXzHtbjS&K!UkvR!I6Jrpcxb*t8}K1V#|EE426`RH>AKZMw?KneC?||` zEr!l*P{s=B)3R&N%%QS*3Xz3uOEYiY{E|}Bh|D2~3t}{&?Z~6iGsBno;u&U(#a)f!Q8UKHZ1#mx#rJkQtPIL- znX{fvA1Ha4{9|a{SfqUZ@G}W77%k71;>@}!o%JbldcB5@E~ zd@A0zS-NfVFt6r}2v;RlW1rbFgbkdKd7kQ&;ETJ7Z?1l3Xz zILevVsa1SY*;qp??TF%NW^%_!)umVU``ZH?Ry-(HH@haeDslNHLw^j_)$!4rBoan% z=8*XdkW-nsZsqz|`g_}BtD_4@53~*To>YU?V^smyTxAgiI5-8t;w|bd7$zlk)&*XQ z6zNXq1AfKEI{NpgNVZ2=Yq@?*QGWAkZo-NM8xcvrx$Ek*>@Vf1^ojk)fywTtgfmAFv|x3{8;h`Qh|6T zMx_GKOBBS1*odm6mD_p(gc|ZgKxo`w| z+6f`y>;NS-@t=_HE$6SjLFdr()3hg_FL-W8#al~$rr+!5F7dTBL=6>HXX)kseTYc1 zcUOt==Sa^d5AALF+vKFw3s=MX?dchb(jHBE#+1Tt<3ch9j1UC+!#@VBSv;Wxy~;&Z zXbnz&Rs)D$!GmTEQkyZH-OOf{)e3}oD_{URC20R^ujC|cj_S;ipwN6U)G6Hz3)9NQ zjL6bPWJ-2g3rAo2n^d|m(9&S?9d7AEybo>Py^VhUc9^t$>Cg?sTZ~hW#(917!-L-c zbt)xTC@FO0`S@jp47p0o)fI~l6y`p*K0a*INb&lsP33b_Gnj5z4Y|(dCK}P4ei4`=fu3wfAcm>Jo(sZ0@|73C>N_&0OK7B0*9 z!E|++rD{GAe#%r`1g+=G{gtVDc5F_|us1)%WQjLA&r^{+8}e-Z<*&ucZ1o5ifIK$0 z3vqmbDHGy5&lRL2o2w|SK=jhXqpMFB4WoOHwOG0W5WuG!P81{Q+7;kKc>Uk>5+QKr z3Hu-COe=P<=a65A)U5e$rfvPI!TXhogNR=gda3c>Pu@T`x?P>E%pbgAA7MWO4FVb( zHWOY$(rJF=EO|)N2BuRIQ7U^nF-vmZ7{*IN{-#_r4B8#)c90jx0cjy8;2-AfclNqUO?Ih^X%V&bQ%%Xbkb>nRbvss49Mc;-_#s zI$SQH+b_{q>HDtLz&u0z$ppEkgm{Z6h_UJrF3{bx6qq^)j}yE(d=)^3vMS(qR+#JQ z*Upv~O;}pBIj*2HJQ^d|@ z%X<%$CA(I4y z!M(8}qK#bdLf2u|U|7P;jK);h-=xz<8&B*biN9=h6E+h){jv4eH-BhZ_Go|x+Ltl= zPEK1T01k&qhvhvkj1bC(-@e7xbU#|hIh1%Syx_|4HR%mLp>C3|FY4TV*;wG*<)kgV z6%1(ZemW)I6sh*lD3vbk|E%R){h#wHwGDJL4Y2ET**St_Bo~$juMUgmtm6DG?X2QhYM~tn>Fhp593h?GM>WIA zvXw=lSFd)2^t-EYvR&mT-D9$s2U_Jg&b-vjUn7zrHS_j%Roc6Nx0e7dm!E1%dt-Qe zv*q?es-wLwE_LWb;G9uQ(1-j`vjRpFZ)mCB-kur_d_)?_6NjMZy-F(c35UucgesG_ zpyEEUaC<^hBGW*Tc^?)c!5$NCU45tg?Ir&trt@^$l{Y^n$HPmiCB)}bO$WEFwF$UZ>pyg()5 z<%Nt@NI~$eAZGsG@vShL!~}(B5~ztHwl59_);Q_drEUM*yki#`NqX9)6-$P$&7D-= zXWEhOo?renL@Ky?;skyAMD5}i-_BjVu6tyC_t3WB*Pbk!mzc%8ZG6Po3=7xUxMPN^ zG45>kl9M}Tn75qGu)qv_jcUePd4^qJ7|2IgbQj!-aNPxH`YHTQ0szR{?|Fpk6zHq@R^3|?2 zIR6(RXOf){eykm!Tk}z&&Hyd3*^qZ)lbK{(j&zsbR<60^x{#(lQs1c=q2aUwEgrIopqX?ff!Wxav>NdVcu)o`2S5HI94t=!Q-6N!!LsHs35_w_9@*Bg<>Y z$#B(=@;*bwr)!^aCOq~3YwbM%qbk(^<$dq}`@X>0 zDQC{}JoA(}bDn8)&@PB|;dBDFutxuK@L*fJAVU%IkyoJ4C2uJ5acmc4IFPlnzI?7C zo!D5rq{SJ-YdIwB7A#9zh9t50c)O&<0xTV3Hj<8{Wd>>d1F(086cFI6)1j(5$yYnB%-6>aCmp+m z^%AK#y82B}O2X)Zy}O(SX7rt|RM$PqzqKkSVpwu?ifhmjhq+4@7t5t3?E|+A7@f4i zHj4?fI64Hk1YLpH4q$AVA78L6PUrIUz$U*QgH#xoR^61Yh`*qR`{wyYdq(LNRAxuU zCq<{a4nEX>($n~E%jK2LGDW@fpALYH@XvP$|9k-VXM6ej_+gV*OfkZ=I3KmkxH7c^ zIlLRp2RQmM#=&9V**z+#xgtB#m7c{rzYl=- zK0sdM|7SY-xbgdl3fmqYI!8bH{)lksXFLt&G*>B94IbCevp?H%d1;$WmEZ@gh>urz zqdz_nLtivZnys+q~TPSv-&Sj`RJH3aMi}8#7dmslmB}M%OUUv*$xOfvxr$nE|Q_Vcx_!x%6 z0(-ccAPIcKDfmLM2AEUOPRZMHtrt<1&hpc>!_RV79JXA?7{l9qEW;AF9MeuPxIuqI zKdKy9x1+YoS>P&29QzF7_*GblR_XI|PbhHlP809y>#680g(j8Lbn5%a1{~XNIcv#b zpB#VmH5$5)F1_?CYsRV4C-1rK2c@TZPMiZZ7S_th9Q0PP&J%qIzMF%;#xpR`$&2sX z;pyq*CHaLpg~1EzgkFR)5@qwl`eTX@|BMxahF!w>L^wgRZ#)s3?#O*O{%xztt&M)= z;5%d2TsiU-EvDh!>yLirR6NNXUw`9N`$t#j);8Ta5WB+pKKta6!%y7*Ep=zjf1K1u zO`Q4x{rSM756^5^ItP@ZFRsbQ4A*dyfDwCt&tN!z1_XwZz*sEn^pYY5MBwXe0GwnB zrQ-VtoU7LU2U9n?`i&x0_LqB_1$Sp5)G}To~asj`(y|uPZoo*Xa(hI!(sLnTk;}o#Y-#KSkHcP*>=}U zLFdn0YHxn<@v*I!RzLL0i^n<}G!si}n}W-a&WU~Y5z9duWhhQ>tJr$~_UgKYOAALI z+qwJQaE)%+!nMn~v?= z_2v-OfGy3zbI#u2ohh=*vO$_9y!W7SV35I6K2y}oDM%9*gfXEY4BYol>9gs$okr}d z$B7t#m3mSC6HmWW2XAjYGNC6dLYjT+pZQrq>wIH(W8!1S-46y%&g{?32HrBCv3{vJ zjg|vDLSTlHb6|M*pn|e+NgWc1{mncAdz%d9buL;9zAJ!D?7Yo@->aVwl3fZoQnNr` zez-2?#fNtv*O@Km{;tUDL5ni>H}yat1J9q>*ORqD8vR#ZNoeU0@JbHjZw{?CXy{P* zB8PgiF!!J!xYPMKEq`IiYk`G<@n!<#3Htakf`Y!tn>i^p(%d7tGlvIcAI=Y{J+x%c z{a)=iJED54Ck;8ASU(>P#F4FgC+*xaI-iCA`PAwgQ-x0ty8-b*F|3Qo^wnqv4)TK^ z*UxWY0QMjCaYeVuRcRJ_-C$xQ>d&0D&1{o2s!d00TY|vTxO3*aP7FwKaBLp^*pnLe zw{7IyeC?5aJ)=sg%I4hsH%B8T3o|Cpceg&fh{>5QK^AzDfE4 zp{$91J8*>M`ls)Fzn>0$zWMOD%&uJ@TW;L3nTBOr&ayGHEdTl8yLZpg;SWa+?VMT5Rmeo6Ci&oK2p>CF6mJ0f5qu^Qe`)u(%O^3XDAZDa z*5fF*#zS-Bo`3kR6N8@Q(~GWm|&+DfCTSJWcp~e?t}aX4#K+0 zL7wic_xNF9amvtXf0d9YK!6x}L})`6H>?L1-vz_6yb&b1gjg;v@^CPuyC?423`5f2 zcH4~$LMJ*v!7k`TG{LFNkv`tuSb*a#HU%G7CaFTO1yG2c0ljZj2qIbGKeu%*0Bo`; zN6=Oc(g+cyrlmwi!tX=gUi0*XnbS8+S^vQHEsqC3`r+SqcQu}x_RM>4es%SQc}rDs zPhHE;TbPryYen0Vp8a<%T$38PYsz!x;~#o!!uF#7H3puYz5LvEx(59(K629`MsD<& zRqe0GV6$HGq`bH9i$0j|01XzzXdL?5LW4jt9K53EmBQzdz{}ge6-}^wu{CpWQ+b{t zHf@3~;0Sg{TiL%E{r$4#(&|QZwHItq2mPr51#JiL4Zz2BhH%=Vpvh4d4LE*}D75we9vQ&7`j^8zW44UeHCJXu8+7Q2DD-A9(1xE&KcI zS6iz(Dtk(h@3>!Wt!gLF7v5i;_G9=9g!h-t!C4E!huk|FDeSpi(}OZxxwLGK>I@_X zuWV$b&0ECbs7tjMZE&PTs_(>?vcv)ddp!YY8Pvg=l{QEybrO)cC(`Z}GSWE1%jK)57RPE5(JnmX)i5*sU zw%xxZrE%-0#bTUZ(rNU(=JTc(EC=1!4&^QALp;9XI~1-HD~R$U8=%tcTviA04w+P^3jFK4zQNlVfp#p9M&>BEZZTh zy|7B{bS<~TG8p>7!n;Y)GikXUR!WKk=Rns}4pLZQhvndd7CPJMAcYlnSZQevu)x`g z+BBIi5=AGHBsvuuE~LRV+`(fiq@eyxrjA6?i5MT{B_Ru5GCbTS1^BY|b6*xpM&lkY zv(;vU(n-E9hU6>x?IOPfHJU4I5aj`Lj;Im5v3jDlWUnF#i4jR;}OL#LltGT9gI2t#d?;rwG;{j^fY&0wj{ z3muYSEwRIji|eb8bA%4bbzEYHm78nVAz9kOk^zfwONO+CCFcq5Gk^bH?pyXtFA7Tr zL{SzRz%3cmJX}snHm5PH?*q&l86tEdR*|=lEK3KSz)UfANa)1B`owp#x*;@0K!Voo03@z;QBl1Tk!j*uC&OB-ZodhvAO~2BZwl)+p>;B> zj+??V3$2ss>bNPawLljdG|Xmy^&sz~Y+3cwt*X2ChB|+ot1N_WMPJoZSPy@Pf&75oeae$+P{F3vtB^4jr-bZK~IGV zT6#6jHq>B;f>u({;-G0mhuSPcp$4s_3u&cQYrLUdv zUBu-l9qi;FHfMR=rgRlLe zQ(K|0fB`aQItYz(GxA8>GE`6J^wo zzx6mAyw&d%wY6;}2MKB|r`7Siw&ZP2CCMgSSJ-tG_E0~D9n+mKuHbgUL*qhiCzBcY zULM%kQf-Uem^^>PI{lN;bLs3RM4pPRRednxi7|uLKN!G+?HJ}`*FVSV$+?=9SbytJ zaMGp|0)H~VRl`ra5X)itMm9; ziyb>ruR;B>y_PeNZA#DTgKF5Qt$xk7_}Xd~q`Ayj7L$NX7boEHB)&SiYKb?mo4is; z-cp`>Mz#I%(kV`+++oo}gM70~N{jM6`VgR>?HX+e8R#@oGcqH~H+`4V;hSc@HT zF#{$l)5nIKHWi*tZOy^GOc{BrA?$_==&ID5#hTecToyRceb69mHN($id<}E;<(>F2yQ| zEE|voZwXkuLp9H1`h?q4n!^s?R$p*5_FmI?)dyV*vr-o=UrTkjHu}XbiBfQs1BaI2 zM2SpiZ&xRbL#aIZNv^#(uqh1$td$&bS)y9ve7ybnegu7PM zm9H)5!o7gad;VI!)R7#^wWtCi-hk>1^U%Vak-CV4u$nB(R!6clNswz?%4Ph9kG^a< zWFv}Ni!AwsfA#Ynsc;yka%ut}aN**FUSmKy%{MzEb4YtY*qWtTvA*G!#|unziiR{N zFIeI+&lzpdMlkmu@W?@SR`>+vkt~&qY5`WO=^#xvSC7In*GSc%31uprKx^~x^x23M zCl||`hKKRI#bRwrOxY}o;CLW}Ixll%h${0qwh0$d{_^@U}Tk*?lgUPNElDtACb zH_+-}_y|JcQWD#6^cykb~5M z>H+ErWg2Jr%00DSQn+o!pfaN&f=?2aPgoS2VdITJrE?c29vFY4!(WO&fBvGSJ3lZp z$m!M$%K)9Fhqf-2Uc8=5CoaBL&$=^jJO-}(16+Ambqhub;Oo?(wegt%<-(LJh{MlI z>sDB%{cEnsi&bnBDTFD55Awbw^wU%C-Ddgy_}NVdk3944ji?pbovG`}a$LHWJVhG1E~)bbsg8qD4*L zg#7tlY^bZdKaL-sP=?NvzrU`q%s)~MMO6QFU2#B%ZEl&*0NapnDwnzKC~%>u(wohX zS*{=5ICp*XtG{QuB;8l_;Nz=5-*)mP%gUXn<~NLARW@WHJN}$yy5)n-Vf*4~AdM}Y z{=%8v)~%mS|K#|xbs2M)%vigd*BqxGX*|SfQNuHX1EYHniTdA8h_Y?pDz-LKW~K8v z;dUo42BrS1lcCuE-BD2gKTm(+@|nsmt4nYSrx(WMF;_WON1Z&>1H*}%I$)r)Mj8^1 zy$Uc@;`u~uDw$y9dq-e3u3ztQ=h(d^LNuh@mkoW45^Gq*eyy?>9y_l|r%r2BiynF6 zS$+=sOBVH(juqLnE4L-jt}k3sGk>;W@}!jPw4&B=I3Yc%(K5F8X!MR7A6%T%8rl#& zH#RXMW>#)lV?>o9J|;RT%vc6py92#gth`45FirFimtYKqYjnJ2Ap1z2i~Q+wKKVej z+$ktu2|IVgx+Lrck<2bn>!lsO3 zl{$9tun8J0NKH$nXKy*zQ9q}~Tt|O*y7grF=6kmP`_89JU2<0b9{0mrr?!kfIeGIv zA>oUjqJ}%0+8(sLci*)c9S!FmeuvgQ_w3O>+TMRNZ*O?w#;!xWE`nzMox}Yk{QEb6 z_mY`y+Mlfi_wgwuCZczN61{#I8HO6)FrtJO^KlK}2g=x{dfA}#;$g#=iV{Yn{8h$B zh@dW*w1$O2E+=677-z=@)O^#D5}J0{@(R|Ni~}5AY6|~$lWqsST9RXVRsPOVtL@)z zC?jP%lv!xqD3@_}?^7naw+t<`Cdy@8T>6w5!e_cExaL|jQHIabbM*RgYzw)EQ7%QN zTF3q+wqQQnQ7JRQS|FFvYWrZz;(k}9%tUKs|1#D`E%}^Bav7qbQ^Z_m&XYE6g8j)! zWRCnK_BgT4Z7s2^R8@n!0y=sdaSUHo;Ac6W{Z`{fqJZ^ruFbUQ#*fxJ6;5+p8cvU# zmO}b)BNbTwf*XRu|Ldpz1jUtqH_E(WbEKc;8ag}MYv=>-T`zC&Eh^1HeV`v`AhgUVIUHkRIq7?(!as_*X#Ykf&(`-9fF)hb6ITY&qM@9%0Y3E9@63UYaaz zmj0m%#F)`z7)8xcZ&g2|{t5@&L~9B)d$hjVJnatct4_pem{XC{UZ-2=XN*n6V)9p3NwxcLn8Y4O?P^On!=19AtH4A?*5 zBL4j`Fl%7fw+49Xq!w?Xgu=J~GkeZu#3-*^4;{7U^g{T}uEr+=h>rvD26!~Vzp zFZurx5Ef7p&=9aX;Ld)c3Xkuti zXmRMA(3a2@q1!_54LuS1eCWHOUxfZ1<{B0hHY6+|YW+J zIS_L)=F8Z`*xTcL;=l|ht_G-K)-X~rc z9~GY*pA|nLen$M9_$Bdc;=AJSi+?EoMEq0n=ZxOQ0Ar{z%UEEXVq9bFGCpWLZv4df zmGP$pQ^JIV9SK(w{*|an^h=CR%t$OuoSk?kDI_UB>F%WOl9Q90lAlceB>Ah9gp`bw z*(uMYyp*a=Elk~#`g)og8$EWWT}&U8UX#8!y(|5$^rPu#(l2HV&KQ=_nz1xvZN|=w zeHlLuPaEDgeEslU!_N+XWrS*k+lYZ9rjD2~;sJ~JhAYv!FesN~kH z+N{M{_hfyT?UkL8ot0gXJtey=yCS;`qBK z&OI|LyG5wCxfYSM;r%Nqmd1aHzO3NzBHk2JGJ6ZN(+52T*&M2O-ZN`T) z<7aM|`Qa?@S$VUz&bo9<>@BNr`FwW4>`!m)xOMfdn{NHEJgj_H`S$XI<&Tx0D}SS6 zc*TLrF_rIDRaBj>`lULyx~h6Z^@-|ttN&edVb1h9M{1pGr_>&*{a0N{-TJym>#X(T z>bK0*%=MWYJa_WkHFM9*{m;Cld2RFVoA*|Ox*?-sUc=soujZ%Ef2h%~(a;#*Sl0M* z3ShC>wg0EXjTApZ)ZQb2^Z|jNH7usCgCbw;E zyVUN}KE8cr`-%2n7G^A5w(!it7Z<+2@XLkQ7kMo5T@<{?xF~DUwnZN<`gW0ZvCra& z#p#O+7jIqs*5XeW|I*>q5!eyeF{Wc|$E1$Rj<${s9eX;Cc0AqjX2&NTzbw%%30xAp zWa^SdOS+caz2wWKDN8$+KE3om%aWJXEStaVx#dyIH!Q!lB4tI_iVs(&u3WkDl~q2g zidWsX>h0ALtK(KLUH#_jzpwsc_3vxk)`YA{Tw_{Ox@O**6>GMyIk@J@HE*o>WX&&Y zo!08s4qKbGwrFkb+U09+Tf1-Vk+rASzP|R#+8@`c*7>a)x^C3E$?K}tEnK&0-9770 zu6uFa`|Cbk_rtpDolc#Bow1!`I;VElbT01f?%daTyz}|a4?F+8-g$lC`q=fO)=yer zvA%Wvy7k-E?_Ga*{mJz&u77|1SL^@S;JzVvgKzG2gbJ2pJ9;fW3B zH~f9W7aP4c=5JiS@wrVNn=&`GY**#4?t9owhxv%F`&&xd@_I%T0-QvB)uq9u>lw|b8Jg}~>@|6Zxef0l=rVqUv+U3KFl=MS7J@kVyW zCH_WMZUFMHJ7}Hdn@TT z*1cHql7=G`CDbz47R2FqDhJMzzy63ru|NWBl&IkHo= z0p)nugXdJ}UtK3ps_V!>RV6vCxkx@%MOk;LG~~2ujP(aL4%Y>88R1-&fuu-L)?8H+ z8>8wZm8yMYgtSM5mC{e3cePcgV%F6>pE>c%Vv#;48Hi_SekUV%zG^uyZ@q+gr4)nb z=MyKki_AcJf%FKeRG%j8(%aTk(j(RpQjhf-J5O|~Iu^vvTTh|>tupVeKOufqRcHMY z;bC0h4GWU40e%yGMRS;Rvt#6lbcU4jdz|+?Px2twfKSK-bt=cT2z42#I%2(~9z|XP zzmL#^))ICB=Zc%jVLb1r{*Elgm8}UP)1|rA>w@o`_x&!-ChI0H3oZx8OUQxCLb)KT ze48A&3>+_B7o-<)SvX!o7LXbEMg-qE@B3XEq`54(92_rM4mNp!KRtrivK+W9952qt zh2zC#!DS{wUT==Oe~7vZUARdobQCh@_2;q|`U+bAw~*^I*QuL^&~?BY!F8U8 zg3ny{IKTfCTKCxURY$EKsJu`PHp2B(*a>u%>npbxuCsDzy{At)SLFMlSx|8~3f%p} zA>+;+MBAUuLF zM%Xdr_uq!x-nq?j9TW0Z?4H{mw|~cw;fPJ>s0y<0;X1%|p6eagS)n&Jnw#iW*dcbs zp*s+fI!28s`sNW9jbx~Jtmuq3;Hh%qP744BG1@Dn;>+k9v zcm@}LMjd56BlxB8(atMw!<<(frj1vaoum#TziSVYBJE+s33*a84sbYskKt^}O9*?c zCq>&(M5=LiSEY2Aq^VXTgq>@SS}#k>(S9mzi*ynE8*e?J?nHZY9&uiG&QspbpdI7y z3$Bl94hQc8jFm5d2Y(;(7idEeKMfjQAgfhTWVLjN_-Mx9*)%-M+Z4dzxJ7%&-!I}_ z1ewClH38NG7=O$VWk7@6w&C3a-GZlggv}oMhc^3=-Xm$+WAcS}VFH~+mf~8@-|+}P zV{ee9xRy&Ztb3&=$p?TtQPPl?G&&OF^aD9e(Ldn*29`@oarsH_S^r7hECK8%@g9rg z?=<+3(_m*~G#TW)ije)SwYNi|0!;tI0H+ihYZQK-Uhz{$Lk)PyMQP zBj@-#PgM=OJWO^;J|qh1R*@&(lel+;?1HRx;#y5-iTCtHcvCKtz0yVc8{UgMaLvNC z0oNg1$8fF1)dPAk_>9I+3E2_!g%GFk^gyQw3q^bnGA`g!{!qS%UmOqT6=qz;qaSrz zQ$pr*{S$oy<$aZWDRmU&biQI<1gg(j-WC0;JhT-}rA=e*8h;gp# zM}@sWuNC<((C&xrpMec?{hdo@X|6%vS3*bLfPIXx9@IRE^b6o?zV(>uZR>XJRPeM8 z_p_~!OFN*Kylvq2skGmy+iBi5*+SD;W|J9eKk}Pu2H6Yy{|)xe!y>d(BQRdD zT6Km@wuQWX;_VE#b+r>{2m;O|>lxKJ@RQdOG^u%8#X}BjKRK`AcD$C15^Zq5K85Z5 zV(TNQ$DzJI;aMfL;j;53g?LGatnH$Gn{vow4s^yA0>^ECfv_%HfkHvaby z#rw$K$HKeiCVc*1^KJJ1zlHo8#j$Urv_fNW)NUC{s8^P;Zy+@sdM?&NfZ9O)wM|=)E|h`v-Wjbu5jYW-qZ<*k$%FiAoYq`1Qmp#7$BceA&CC z-O|0%gVGV{b?GgP7rUz_sU~BU(yglXs;xK;>>1Uws@GL-s0Reo;4#6S!7l~B8vJAM zzk>f0G65dkLHb~Qm_AZ()FqqKy_090W{MzVPdYg+_)B3!NRt z!Zcx?VLoAjVZmWBVfkU@VKou2{-Ls1tv4{Xz-w86SqS^dYvfHDjX|GET8(<_rw^kZ zzcYVPj~7vo_fZdGug5x3k1eRj9_c>R<00uH>OoWOoMC z>zMa;O)9irvp&aOu|9_}ljm5B^*O7VJVPEK71jdOl2~_IIxXug3$1n5Dr=?n7E)`? zz40a)bmNU1uM_Q!*Kb^~{`0b5&sSc)5^*K$O5l}%D?V2|uSg$%{_&e1U-)}H#z`izY0xysKfVg0 z?;oG>^56gMQi>kE=_9rhH!YytSopscQ10{jy!exLldsV?{Z_h*d@t=KKT3C#e@Xjj z0UbxfX#}gId+FVDAC6SrFCCEXqxaE+^nQAXKEUePJo+pBw{%F#lOB-T*uCkq=^&87mh2)ADd^&&B@Nn95Z^<$PvRc(s9OUf-!zrTx@hy zWJI_jEHuP_ptl!JEpl~ncG7CpDv41Nt2fhflUa(;d*@XcOood5xLCc(zb-c})?~;l zH|s0(W(2B8Lq6^x%TQs~m+Q@u2r3-1%gvc6Ij3LAOu1yHy(IP0k0c{G3WMH!A=jXP zoX(h1ig-`1p-gZ7R>UWWxGGX4+>rx4jGi{Pk@DwtzX{aA+uJL-*sEq!J19 zswt&%T2Cr}td2Bm_*0G#KqvVlUHE}WJbsmfZ*@Qr z>FuM>FaQjPV=|b^mH!Lt{DDyqM(4-KicnN)&ddeJGAk4%F&#I?K#`Cla`J7^G&~77Ir+L!n7H_h zi)Fa2R}kZIC(hJ-evjWmGlknu(9ay6C-c&uE4{wdP=f*3I=wk_aw%sKXOG~r!VJN4 zSt^A^rH&~FW`Rv46t@NE6lR+9V(dKR%r%b{X&bMhGktFt*lz2)oD7B2y0|0^3P1wN z3(SP8aAvwUstwEM25mswtM`IQ3xn=Do|(ywxo$YLvCB|U-DQ|oI#QHId$L@&gyZ%h zg|x6JJ1!PYTlR4S-8kiVCfzt~M(Gn?=)-I*Dt&}emQ$Wxc03&SN}tdZk|}Z-&*hoC zh@K}nq^U?aiSoK9G6`8F?y5wFNLM{hiO7=+A&-)($C;exCCVL-6o@k6AgFp=CEv-k zK~N#jNzPj(^2+$%al$!@$#bP^JPA;(uB{Iuoii;5_sEcQmo^T_0O#A{-HvfaV_}9TQ@V+tWtGS{qE34}&FXP5W zd?6bAM|agQ8e%ex1|b?Zvx}i78ynnb^ZYS9e~g^3;rUuawi&00;PF+kyUAvX-=dkN zp)g5(;48W=uWz}e%Fw8Ed3_d_x!XB3Utg@J!Nno@QgKKy^+ad(;b3V(VPweo!laPG zyoivpbkPlN2&INmuNfG^p5{dKP;nc@}$mPV!_So^N;_`Op{1)6In?fCf^fy z#OW$u954Jh-FCcaT1-sg<60|T5zdomn(0P!#5De!Ic0`fv(Ze7XUr@;PU)7i&Ym8U z9aLyeoK|Yq2bC3?s}b=EI_^ud%UWAwVrI9twa4(kwwTs75wZP$Y$3Zb4|+BAM6NqIz`t}<&WN|*lH(N9!CI6!4!a`jl(>Y|Y}=H$3f~aV zDRDIxSbU8mAD&xa)Xt)JK~F#xCeY|?~q(l zPik?s;aWm!NHwrllM19O5UV0hq?vSpR$i(Oxq9*-u0-s%j(v%+r;i*_Q zDAxcudXj^93!dh`99}(Qjbs>^guEKW^kf?H8%Zm^lsL8ql&AvKVFL09{AQs<4))5o zJz*;!*XIe_-ClV7+p8C139z*Qi;Q1y$6$NzzlT~6D0;z{Hc_W)K%S3u3z>)fCd{_# z&jVgR&QV^f17W4$ObdQF&s#wyr%mR1z2Hfe$l=t>>A9pGC3x9t{8rid*a|*nA(xlu zI5?b}@tn)84O}0NnPTx|k@zPQy;YRdqn^F>XhS)!Ls@`R0ea+A-)FeS^_OiTs5jn}?p|2KL|to9M_KD^ zbhIL8JhUf=n8-wEpGjyqhe_~KAl9F8&4HZ%;tyj7gff(p;O17tm!XBr+nKmv4FcXF zSW)DOnR?!^`vGW`1`(`ef=y%hbj;KnOoCw3A*fF%)*TtJTR;SfBvJ6F48g8bF;oH- z!$29gxkSRdb}2X~AdRHsyrbc;kC9{)8BNBJOz!aj8v__reX|j`iLDr)!>n3-@<_}_P zl`g6#Ysn7s6ZseEA$OvUJ4gOOe#G97N60VaXYwoBy1$WE$V=oHG`$KfSv5R4HRNUT zDrVwpsS|Z3UxIsYlQ+plygF*h4``p?CGU_+klEMdTe1l|Ue?2!xP~;sd(s5IeKWMO z724587D98sB8$;Zb&#cGIa!7op7-JZJhgbt*G@Sdeu-|A1Xl7s5#U>Zb&X$aNRP#T6aQ~pB@{A-#$3vGl?hDDa1^UV+Vq1v1y|KrOAK^>i+sM;qvT+DMydGhINQqAj$Qw$XO-Px3ikNDk3ObTRFqOK`g0 zGP<0uAn%i_{LF}*^s(og6$`YHX4{*!)Azo1{zujtqG z8~QE%j(!g>+m9GQ{ulk3{=&T<^f&q+`aAuDUZ*#x1)fBLel24XQ!zDqG+OjpotX=B zWxV(3!91B4^TwRn0c;=}#C(|_Jaz#r5dO!(m{k(YLeS+6Wns*~!WrgMvnUqLhOnV5 z2A;7KESANQQ{*x7JR3$%l1Ir4WDVZr8^}ZCMHbJDSY!1JOCYCNBKbFF<#Jz4D*S=z zWHY&kWw7CF1RKdlp(k;e>_JcBdvZUyjqD{4pl5MAxr02xMzb+2lV!1Nmcw$HiRH1e zET0vyajcMyXA`ia`6M=(O<_|ptfw(GwWen*jBcUZD+T!9qe{?2g6ayY!}==8Pnb~p7R6fB@vPan|_85DdJ;9!2Pr>{9G&{qd zVb8L&>^XK0bD3XYFTx}IGJL78;>5An*ah}FdxO2nF0!}S+w2{7iM`9-gP-*S_96R- z{T-g;f3S}+1Ntiagk58wViCnZ+2`yFY`pgs`^i%_EX)d@EtMGjwkk<2X>bUs6Fku_lB$wwL>;ZOw0 zSMrnmr2r{V(n*7*ASqZ1k@Qli6eby@a4ABHl%k|)X^1pbijiWaIB6K>W*emhDG}S? zCQB(&s+1%dCQk7IK)kt%sTB%N|m*z_Iqy}le z)F?Gc&C&v?MQWAWq;_ecv`AVkbx2F3rP4BKxwJxBDXo%LOKYUH(mJVAS}$#oHVPkn zH@xsY(iUl}v`yMB-6rjjZkO(mc1m{&-~1lwE@?0Pma*gw_{A@f*QI^ZJ<@)RH~h|h zmeN7#et0P#kPZtU{zIz9_J#&^!LW*kHf?)jz0sJJ>)f=krlqy2sinrHpthxAVGY0O zQczLV-X@}+1y%JeRqgZVG}J8Sx7^|2scETct#1`jvgTJ*wKO$qE96jy5{u4a;@r(t8%KF+Ei8e(d1TD0Gy^;4srpzqD^a3kklwhOfr%h z5xAJ}Tt!t?O=Fu&jXkP0DX44YP-BuI)`-A$Y%g-x+TOToEGMKEKW<~In&!{1km0)3 zIwV~4d&|4l^~P2Cl@%?jI{dg4wAD9M3+`#^Mbx!Grd+VBUXHsI2=aNBrd~u{3uId5 zQgYm*z+NR$vS1t!Sp8hralNQr=k~_k3LR*5o7X2%+fq~0*ig|}U0j94{CuPQ{6vRG+!`Gcnu+rBjWXXGE1H{H+gh5M>uMxZ zW35!vSgW0+NViFm?j%{dO(JlgRM*~EThY=!zoDYN&ArJnrI{+z&?3_?)d8(ri$g*) zRi>du4yMUZwTi%XS}*HdTYKYfMGgSm+8h#^A{k7Z2vkK}>TUSZ6bn&n+C`u(R%+F* z)T&snRl5k(#Vz%Xwd!{M>t5_wC--*8l(tyW;&wT7o!(2K>mrAEnM1szH?El>*L8^q zTxQsH$z_Q>s%~g%tZjA4;ncRlxuUVDt)`)-zQWDa+*%J(M7EQuO}_750NWN>T)ePK{fKy#m zhnN#b%JHcSE1H`tU@G$~t1H-qb~dq{mDWRH1r=;^y)?D1Nj6R5#f$WZ zwpdDnJ(g&X_1;Z(SDr{o;cT_1QhCZ=KFuCWx5qMUu~efyX2+Fk!YG|*IO!S537Y1bR^G;$+FP1LZfZiJqK}9v@<~ldN=bCC zX>CJytgWWn8U56n`r5j-I=8kubd%(GtLvQlg|@g`D`;s{Zt&(ZFWZ=)go*A|9WC_@ z4fR#x{qBUfYeP+I>s&9as zl{F1bi$tkprBt#}#+RHT)1RE8q*Il2s$7rcRJk6>se%e)a;o4XLcvFbqJ9Vk9}x;Z zA{2Z?DENp_@DZWRr{q){KEW5{3%(eW(-iz^3jQ<&f0}|nO~Ie0;7?QVrz!Z;6#Qul z{xk)Dnu0$~!Jnq!PgC%xDfrVB{OJn*bOnF9fDjA@GJJ1oUP!`R`6%%xeC7K7kNGtedJ4IT-pCkB_V3KVV zp;CX@Mv+$PFWV^6O8s-vxUC_bZnHJSGnBk6hdhN2*;Y|Tp(97(Lykg+Y^Mn(*-jBE zbjWs!v_gk$r${Sw$aadfA_v({kyhj&+bPnD9ArC1TEQ>dX@W_%Q-q2fWIIJ#k%Mff zNGo!X?G$N64zisht;j*PQ>2yp%XW&iQh(V_kyh$2+i8MHwo`;kePz2uTB)yWmq;u1 zmF+UosJs`FjClik-8iBrjm~1FL!Rh6^E{v4a=ahYub6N~@jMUFF||XIlXf8P;;!v^ z`KJ9*FI(T1-*2dy)8>TE^04N{_W4@gUme!es^J+3+7|JYljuPsqUAkU5u)?T@1x(! z?~5)gkBHtXFTgvh2-%!D+{_ab5{*tpRW;Ss71xTUo(4XYQU64hR*Gx$z&{=Zf+PWlXVsI2luf5RJ*Q z(IK=Mp(4zjEP`2B5=N_CFix$->~&8uXWC5}&_AqnzkpWjwv0&@EPCX)A&Y`t2A~=VRwTU|j!aj6>IA1R0~dd~E{8mc{}m z#VF1Lc8aiEglMEjo(~BOcF1Rtp9{u?`i}~&L0Ji92cYaAJi+w_Q||2aaCi+!QBWn< zn&TLG{Wgb`=KAeO;YoX*z(xijr~hmUPVs7~s}E%!SZ9KfDXOQTfS?ki{Fpm0xXmR% tF{6TqYG~a+&=^Ld*=$fFp9q2yx(>MC>Dm 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�?uC|3&0+ngjt%GBCAB^%e& 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

_T_kl)Xoan=RX{3lY#VQTZ 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 literal 0 HcmV?d00001 diff --git a/fonts/OpenSans-SemiBold.ttf b/fonts/OpenSans-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..54e7059cf36359cb5a3860085714a95306af0dea GIT binary patch literal 100820 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 DEZ%x^ literal 0 HcmV?d00001 diff --git a/fonts/OpenSans-SemiBoldItalic.ttf b/fonts/OpenSans-SemiBoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..aebcf1421226d045b8043d26433d780fa365b7de GIT binary patch literal 92180 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 OmxABnc!Ht?`Tqc{BF`NF literal 0 HcmV?d00001 From b13dcfbc388063639e6c8fde9f46289263c298d0 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 14:20:14 +0100 Subject: [PATCH 005/104] add ionos logos and icons --- admin/win/msi/gui/banner.bmp | Bin 85894 -> 114514 bytes admin/win/msi/gui/dialog.bmp | Bin 464774 -> 619346 bytes theme.qrc.in | 5 +++ theme/black/hidrivenext-icon.svg | 4 ++ .../colored/IONOS_logo_w_suffix_frontend.png | Bin 0 -> 3814 bytes .../colored/IONOS_logo_w_suffix_frontend.svg | 35 ++++++++++++++++++ .../IONOS_logo_w_suffix_frontend@2x.png | Bin 0 -> 7455 bytes theme/colored/hidrivenext-icon.svg | 4 ++ theme/hidrivenext.VisualElementsManifest.xml | 7 ++++ theme/white/hidrivenext-icon.svg | 4 ++ 10 files changed, 59 insertions(+) create mode 100644 theme/black/hidrivenext-icon.svg create mode 100644 theme/colored/IONOS_logo_w_suffix_frontend.png create mode 100644 theme/colored/IONOS_logo_w_suffix_frontend.svg create mode 100644 theme/colored/IONOS_logo_w_suffix_frontend@2x.png create mode 100644 theme/colored/hidrivenext-icon.svg create mode 100644 theme/hidrivenext.VisualElementsManifest.xml create mode 100644 theme/white/hidrivenext-icon.svg diff --git a/admin/win/msi/gui/banner.bmp b/admin/win/msi/gui/banner.bmp index 7eba2ce1a7700f2010105784749f73ba19ef0247..fa483161f4a6ed96708261f7aeb1524da2cf73c2 100644 GIT binary patch literal 114514 zcmeI)JBVCm9ER~(B7)io!8W9llwvv|5YmW+5Cd8XYO|dZuu=qV*1~4hLP!yl!p5Xf zQbe~gAr`UP*aX1@5(pTGh(r<6jq{wzJO1~}ncd0m$nJ*c;COD|?feGjJ-6(Umycao z7%+V@`g}0@{4rX6VKiSD>>unI&42n~VX*h9LH8N0-k*kp!T3McheuvK_U`hfe-6Cz z{k~`RE&aZ5@ZiC{i;IiTjy{i{IC0{MLr?y)=fLaB&!;x?$Lh*xdFZ5o0tzUgfC36A zpnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7>3Mim} z0tzUgfC36Apnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7>3Mim}0tzUgfC36Apnw7j zD4>7>3Mim}0tzUgfC36Apnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7>3Mim}0tzUg zfC36Apnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7>yISDxZ#Rbb{`zw+$FP~UsNtzi0+=tY@tG z&Nv>nCzn(2-rwVM1lFnZ)mzWi=3Q1m0Ru z>>MY#$oOLzYuc}$zIz7LOJ-9aQ?}v2bp2Asb*i_mde4Ay)QNU-JaxOv3Mim}0^2K) zjOntY+`G-Fl7aO;>78ri>p|*}4eeCh%sw)R@_g8zoXURY$u`Q+N2Z)3oO|zRHcjST z?vCzX*K+{2(MG+7om40b$!x}wPjWNGDAV2>ubE9b#+R|>*i)Z*jw|Ox^pW!x>QaX( zbx*#wf0z%)(e_8#II_%fc4HWwuP|pyW~UwI)TvpV`zKuA*QqU6_qnWq0tzUweFDh| zey5Wubu@kXSFdkt2BcnXGuy~C`XH;wh~!lEGf%d)W9b`1t=BH+dOkVY?$3JKrN8!5 z%WRa{w3G9L9D6+{$#KP(vT2ifo3p8#^PJSnn3ywO`l|P~Yg;+5N*?FFd-6Z^=sROi z`?THny=K321r$&~f$b4U#_&7cmkr6a`n&$HnN0>I6X}oVsLb0b+18GwZwzhStk*XB z`batEw9B<-_pF!ay`xX=SEn3hlCQa+oZL$p&O=fro@~R6?8}(&O%A7xWNX&RP(B#- z=qmU>1r$&~fgK@`jA?T+ zgX_!7{LWLS?|Q7ZNjqc)!pE>1|*_2_Ox_!2(7f-S`$Ju5!+w)EUZ88=n z#>{#q#+r5Jw9P#V>N+W)fC38a9D)2sw>g;+_T}ZQnVmdIzK|*DFBy@3m?tmWvGk3h z)@$q1Z}O=vSJyY2*||@UbCEXpYac9gUCX~$o97hMoKMhpo7tP~kG9u4U)XHB)>A+M z1r*qtKr*z=$+X&+m$POz_iWd;f1|tSN?-HLY_46&Y1(DZ`YaRg*O7B|;@vIY*UH58 zdY+4Oon7DQ!e*9h(VUCSIl9Q1?DfXHdAjt(7{$R zn`gDj(&P&nIM2-9Y+gTbpi?&FzVnpbGjE<(J2Q8<#e%zSyjwh6t1F;@0=q)s|H^DK zy0)F?we!yGyfgJM*Vnt^i*b+&D4>7>3N!*WSLgZO_^m7Bzlq8*+>cIH_C5E^yVEI?Yi#PTm)ZF{Ak?eRe)G3K@?1IN zV4gneb7kJkqHJxW)^S+@1r$&~f!!#uQD*1;DYB9Gq{+tQF5CK^d$KLhvFkN9KB-H; z?Nr}wqa1zb-E8`*xtzLr-cEn~8)M3(?>s|KS?3BUpnw7j>}G+DGMi&d&gPmn^S<1r zJh_=N^%}djHLY$PPugJ482Zi+YR=d4KHo;$NdW~EP~cG#$h+OsGLd5?E4gOP_3QW= z`1Di;?oCs+y~d_O{?1sN<+ZWyTK@ju$EF?nUhm&qa}2rOCbwB$uYB#xWd#&aKmi35 zP(T3%6i`3`1r$&~0R@~ literal 85894 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 Apa1{> diff --git a/admin/win/msi/gui/dialog.bmp b/admin/win/msi/gui/dialog.bmp index f548941594d7772eb466a98a2a3b3e6e037548a0..b870b472556dfb47177bd600b204c1453d492fd6 100644 GIT binary patch literal 619346 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 F{C`t&OI82? literal 464774 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 diff --git a/theme.qrc.in b/theme.qrc.in index 2405e4335afe6..7d85a2da536b7 100644 --- a/theme.qrc.in +++ b/theme.qrc.in @@ -240,5 +240,10 @@ theme/call-notification.wav theme/more-apps.svg theme/talk-app.svg + theme/colored/IONOS_logo_w_suffix_frontend.png + theme/colored/IONOS_logo_w_suffix_frontend@2x.png + theme/colored/IONOS_logo_w_suffix_frontend.svg + fonts/OpenSans-SemiBold.ttf + fonts/OpenSans-Regular.ttf diff --git a/theme/black/hidrivenext-icon.svg b/theme/black/hidrivenext-icon.svg new file mode 100644 index 0000000000000..8da01eec16cf2 --- /dev/null +++ b/theme/black/hidrivenext-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/theme/colored/IONOS_logo_w_suffix_frontend.png b/theme/colored/IONOS_logo_w_suffix_frontend.png new file mode 100644 index 0000000000000000000000000000000000000000..796fa1d7815f6f0713bcd04f52c5e2009d3e86b3 GIT binary patch literal 3814 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 literal 0 HcmV?d00001 diff --git a/theme/colored/IONOS_logo_w_suffix_frontend.svg b/theme/colored/IONOS_logo_w_suffix_frontend.svg new file mode 100644 index 0000000000000..e65d8b2190ed7 --- /dev/null +++ b/theme/colored/IONOS_logo_w_suffix_frontend.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/theme/colored/IONOS_logo_w_suffix_frontend@2x.png b/theme/colored/IONOS_logo_w_suffix_frontend@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..921840999cd9a36c4dd5223a04e10fb32d1038f3 GIT binary patch literal 7455 zcmV+)9pK`LP)?l@&Buft5HjXWrtjAnXdp zeVdb*#NYywWyu5xKp+WG_jiuc+N3NIAc;TkCxg2jz8C={PsRT|6t4j=xB@O-U*I|X zXPiN-Jf02#_;M@i{w9uRqS=}W;eA|-U@_0X5KYM$yg!X+tX6Y> z1}kxAOPq7R2_EAOe=0=Y3Fxm&9Vl?mg}{wltP=!55RIV(-{JHEsuz`OAqtM85Pe54 zPZz?-b+O+B7sg2xi@#ayEyj=T;xQHGk-$B#hg3kcmj@!DpOr))eKF(a`AhhsGt@q?b z9fHdY&OK){=<3`fDE4~t{7#`h2J#v@dgbzfM-T)-bOaQ9ZVPFC^9?i!E{1BsZ-RCg zep{Gu`?d4Ab&9V09RBm9^K-uvd(Dh3FV5v>5(GgIdqn~?Ot7c3 zR=(EfejqGh^?rvY&n+EYw-OTsK@hjZDfqUt@L)Z)88H4zzPO{Sbe&9e(w1hFy>yr@TS0dpFn6Bo>R^T zX>M_MI30<9@mxs31r)V06rCmrf*@)oJ`11B&h+RV`UM_o7sL5DgAe105L1spSxD?* z4aQmF!pl9Zd|k=7#JOjVbs-sC$#!$bxqo)%H}^?RbI*PPH_YcZf*}DtI0iRs-!+Ln zf*^?fAU?t8(se>%-!=;S0CRW(ZVVa~RQ&|ornxP`2OWvU%8Mbmk-=v%pEjb!Z|>9J zZe8WhOPe}1F5Rie-K{CNWeK@h}V5TD@V$B@8I5sD>HICrz6CC);`jk|Gp zepbFwvvmXOf(>2v_L_U(ZrRXz;%bdEU9fy7Eu(RLXyLRs2H;*7BjHNESi-(Q3;0n5T zd8L^9#YspK1VIoxO@tOcmtwp8Pw+vx05j|T8T%UQhQTUc%*V=ywc~c*%9mR2$+^1_ zLR69K%zA&8xQI}Tzvm!oG0WID#tvgvQPgp`y7xD^aQmt1VIo1Ai)w-;XT+YFTZp89+82*>T&JSrW34$Pq5Rl-D zjZMMEol9p7;7c(AB2L_54+l{2pMf9D(~Ac$=s!51gnTlqK}0TCZ6 zQ+Dq179sc_LJm_P2!bF8Pe|~^3fpkYx?B0yyLS-rz`a_Ujo@(lI}ijx5QGOL_~K=- z=9cxb@-g@gi1={r_OXIQA3+cV;ROl4nBn*8@VT{HBP(Cb_*nUnk$4awAx{tlK{!Ez zFK*H`!FD-*1Fn`Kvhu}=>Sa3zAMindL?1yA1mOS)zS!9mY(+s0wScb4{i~UWq zC-?Uk7DRnuZ06w<=f*Ds7e(LUi@)LW*K^oqzMrPrZU2#drQ`SvycU_9t5p7+i`UW1 z3A}%1mxzNm?f-$FzzH=DZG($e5B>n(F(mvjoqM6qttLKW-@q{~_^G%~&LEKnAGeN8 z3&_H^D{OD&8_`pA#Hb{WEd+Tog`-!y-CgBCh^PbjRQfUrHMh^W(0s;))%%Cyd$2n~ zWr-5qXI6hB=jYnvta=?zxp@6oye?#k9xUAyYHXSU$FL{IJ6-#|%NP=VU_pQFxfN*a zO`k#WPke4yy#;BVpJ#cbzAU+m<3 z0@|ByV?C_#^M`;Bah%N-Lhz5BSxj#@-iLH!NZ|>sA;zAJ0`U+~=q(|^w@WZsE#^K} zzRe!JM0|W0Pqr3)6t7t$>|4Xew8iV|MBE=Pq~$Mmiyvd(8MY2~&SKde20~y^VfPq7 zD|kSmw}b@WZZTTB8M<5f1|?R$42ZbcR`j8}j6`2un6Ee0E4fXE(&86)B9D2D{sC=| z;XZRhZrAQYf^XO8^OazeRzCh3T-dboZ6hp*`q)nN4M_CW1TX$HY@I7v3Ccu@O1$n zw=CNzAwgEYxIxj!z<0qWOJ5g3>pr^ud+-3v$yey!kI%JB#7;`3yt)MmzOLXd*aos_ z>k^9Pi=PCJw-$XAjNLs@`1NE@=FG6ykX&?xGfY~CDfz1-kW05Kc)4X6KE2(I4|@&d z){Pf*tqg^0wh+RNgU?MkgNy`a}r7kJ^2d>vs+z!3T(3+%tG_=X^}& zw{0Nzk=rrh--;*kZ*G6jl1yB;+0KoPvJM|ZOz6k>O8h>HE_@*pNbq$DwDK_r!G@yY zZjWA!sX3hDqL2a+Crb1^5jVB_t*Pu73Cr#r-aqqA1leyeZZ6lgVdH1Q_5K#x0vEZ* zFP=-QOgZa4xlLdJ=koJwF76ZRf#K*S_V%0rdJEW^v*V=nhq&BJaG~Zhc8A#>^_x31Yr#SS>FeL#IeC~#H{Y! zh^rmS#Gkf%b)(3;;ZMc5o*2it2YzFW-D*JlAiX;8ZNQR9oQ<^GF+u5WY~-QLreDS3 z=b#6}u@0x@@!Y2C2gs${Excm+HUhqj!nX_v(G+$rJUyJ9lWTV?($ZIc$I{RimBrY( zZE{yy`r-=_h<$vyED1Hxz8~AZ9lre8>F$hysho3{0Rz~7!s;Dn5_N-A)eZ4 zyC%=K9$Md0@Ilq1{8%ZhQQ%|ABQ2JqSL*=)RahJoty+QvU)NApz6@NrYvuFl(Mz<$ zHlmOEDtDK@d}z~=ZY3@lEUg!IC0o% z-}{>k2SMv;$T3!;uiCwv02Wr)jlods+FiMF%PHEA*`%b6E~1hzFbLHC!n~WohgQDF zFJ2jfzloT@1s=0^bD5!OKj*y!pVnuv3-qOB3J6;;-i@WDn-Wjgm@EDzg!G{GGS@BI z(ycoO8*j&Th}f&m7zPAm2dl8yfePH;HO$Kjh0m| z+;-)H;*AtCg|Ou5$|@<5@d(-kg~{O*t)Iiv?KYxmTXH@TV_d%W;Df|xVTCKVmf;vr zj8zP5$`hH#VCmXDzWt4KJ!^%0b&qJ(YH)P>vl6_YO83P$L)FvU8FJ}%6(6@OgVh2- zv3$FSya7A)-5pR-)sB*w+;TxId>MQZ!UO}*?=HOP!bK0m<@fH2}iILh7$z|zAnO(OuH=!V731O)xDYP zvH%?zl2YzIwCXUqa}#62%c9nvRxppP7IwTh7bcgeN5*kzP&5@r!Jb;h!};*V5L=Ar zolS3F6~{U@e8vcD{)TZ3ga-|UV_}TFoWc83mxu6LA;H&We5`zZzH*7k3yVi{vJw`k zMb>`Kn~LWm;(>21_-3tIEYyNO*K9qhwB9g7c5YHs6wXfci5{2ZH(-mYW@@6bJ~oYt zIh$*@E7$H2LX&9582DSK^G?l2`MoeoPu8K8%C8d&BGn z%|s)bfO{5XCiVliWo%sz?T32k>y27upKArx%))w9zPJ}vLa_v{i527#J%m-cb`uDj zNu}1FVd*y3^T=Z6nt5U0fi0#nFtxah$d$W<1Yg&2xALtQ-VUlyyv%1yRJQY{lU+( zb2qULWDny_{XjOJPi52ZFBbK`Y(SSCgKoi-GhoHvusv?&igp!VJlyDSyMl55ab%HL zkInbBhf@0NEuaQuugQY+$Fm$__ir8fM#>sMKP9}oG*R0EU{wC(#kiHKViIy zDuqxt4uX%R;7@A3C+8tV#yYDyUL*PQa$&}@BS$Z>;k^INLjCQB*8B4vu?F50Z-Xo- zhf@qR@4nzOT_4-H{EL{*7ujm9?7lWw1m&NXyhqnsZVr_nXAmQJEwg|Qv%b7XWe^KF zjK!hrteE%9l=xDxRO@$?;y&P$?EmC_!2Wzj*RD;iQ|Zb*%^*Tzbm_Xd3r@fXOrvHl zi(GP2mR$cO-_T5&qAyCrT6521H!t;zd@=GreJEHHl)VHlCD`e5uBQQdMb zCS31*xPI`8PA;L7SOOED;OkXnO5F$J2QI7@N7eSnHMKj7A}cKf?rvE>3#u>fbDv80 zsLkBt#mXG#o&`#xSfaXGq?UWzpV!FIbn4M)d=5khF=VOA9=jdFSkLZ`Th|ooklWsO zjNu(w(APgAjjhG;=G-KZF_zK4j-WZLCkyuCj(wi-fq{Wts13F>jkJSNd`TPl6rt;t zs3(<+qY8Mx??0E-u=(jiox7Tx=g<{a$rnTG_b3t3OiY5$+~X6K-P}*WmAnXh-0mF? z@Vx#ckL@#iT`E3N$YL!l?%_({4b3aj9I6NBP`ll$mRaOr4ZI{7mTVcy2PS#lXo~sT zv{GA=_cCqHMh;IpV;HES&#+f5j%TXbV+g*OS_0a1cc}~2RV20Ezc0N{$JSZE4H0LS zu3s6DRK}?tPBG44E?mQZiJ!lgzn58yo&mR!rdNC8KDH`Wt~oalijX0=v7Gw}VA9X} z+z-7oyK-lXqnW;VvdqC96x|0fS%~3m@!MsA(t(&$A1H3Ai>RjYI*Ct{Jr__Gl#7ezm2or`huish@RXJQ#W(6_^>CWZTR?@Rc( z-@b_T5Y%zuOP_IQ1C|aTx9*b$Zp>Yz z+O_M4x<_ixQNujeg{qKN1{(%#_{C5k)5zUxJ91sCE{h(%U8670w+zBlZYkYNB5VRx z)gjev&EWFc$S8bW6ANo5UcsjtAJ3sJaAEFh2BVJ!wMi@A<#+~NoqIL*VO_lM$)bl2`+;lgtxmKJJ0RA=q_q3=sPaL#~5 zvE?hcWVXAZs>7E>p=l+2b?08{bzam&+`V*F)8Y)82jiP2&~4(i@*!1CyXyiobL*b_ z_RebzJ|0skmK_HdFuWFzUY;*1{|_tP(f#|G^bBy9_{7Z1%58dBMi<`EE4!)&IEPqZ z{VVumr!9kZJis2vxXSW-ze@%zJ`7*LzhuYFr|7>ir* zp+7&D)`%t-{_Iw{cNt|xa~#(OV<==*^TsVv8GLTwGw}w|ljm5of);O5*b|b77tA<6 zoPILCa`>+dm{+l?RbpX3?q`Twarrs;qkmZD#cUBvsRtK-CDccY;Qou97JZ=~&ZXth zP#Y0jyj2yZS7Us!s9rF1?p{>o%H4c`k{(GzJfEv;*Bonma?dg>A0UK9vf?-~OV_@C zDUu`^Gzq4E8SB=Um?7b~Drh#mSG;=dwIhD6p$X4rnb+%XdhoVvJA4n7$R`tz!N-|5|*92jXXZ z-{v_m5_5J9@5j~g;kK^aO?vE1eCMAu-#PWj+SQ%QgT;g4)$KmA8bvawN~A#x-xavf zMg?%Zz;bv5^}4~@6MM|zxZGOLnNh8B9QxO`&|*$mBI~yDwlnwmFrzGe8Po}hy?q4F z=|_808*T}=>KVR$Nus3ko|J+tLd@_U`@4LhMOI%g^F$U;-&K_7U=E?Miw{f}R&F)E zIMybsH@a4JT7Icdrli1rk-n4p7w+gGi zmvX0Azj9RhkdV~`u7xpWw=?HMyLM5O7eU8ZJOov&wXUw*O{&V(xVUz?$9h{~lt~;i zBHK^v$BXQ8`~Vr+YLWmVHC3tmp6vLW^Ybb+)xMr!WW4IqPU!3z6I z44t)Jn@k?tvk`b*IeVB|_<;C%JG>*|3+c=5Msvr5|N$&+?&*e{DJ76dP} zZG<0}$NEJ6jaU}M56{jjL|;9@*Q*4AOuJ7^E!QD3;2h7QJ*V4%7pCC(u>G->_rcdfzj`q1it9bJYj^oK@t)=Vf5$DZvm)fKfBT0)oU|Bd%HgTFC>}1p7{2+f*y~)J*zqkM>IrKm)3g(; zbS|?#6zjz((LWrUd12NSc3>Ux6q;;*%Ilw2g;q;LZlq2!E z%lW@vh>lm$Eh5UDG6R>n2Y4sDc4l{z8|Uaot17Y0$pS1+RZgqEZ@&i zWBfo0B{jy_%UACjRcqHf>oJz?R}Dhd)!>2m;vc7DVN(09bbBJ#t9jL*k$-16eISI~ z?}nDBtF^k~e!zer2!bGpaL5NyAxPMo@I!CPoGkBwz%lNvJ>a8oyOKSRyEw+m0I>eh d|HaK>{eQh+Iv?Ql=63)9002ovPDHLkV1fhgi8=rP literal 0 HcmV?d00001 diff --git a/theme/colored/hidrivenext-icon.svg b/theme/colored/hidrivenext-icon.svg new file mode 100644 index 0000000000000..8da01eec16cf2 --- /dev/null +++ b/theme/colored/hidrivenext-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/theme/hidrivenext.VisualElementsManifest.xml b/theme/hidrivenext.VisualElementsManifest.xml new file mode 100644 index 0000000000000..424d569fc64d2 --- /dev/null +++ b/theme/hidrivenext.VisualElementsManifest.xml @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/theme/white/hidrivenext-icon.svg b/theme/white/hidrivenext-icon.svg new file mode 100644 index 0000000000000..8da01eec16cf2 --- /dev/null +++ b/theme/white/hidrivenext-icon.svg @@ -0,0 +1,4 @@ + + + + From 205b5055302a65b375efb6f6751402dab2eea290 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 14:29:44 +0100 Subject: [PATCH 006/104] add style sizes and colors --- theme/Style/Style.qml | 73 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 66 insertions(+), 7 deletions(-) diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 8fd90e0a0f6ed..2b2835ff579ae 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -2,7 +2,7 @@ pragma Singleton import QtQuick 2.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 QtObject { readonly property int pixelSize: fontMetrics.font.pixelSize @@ -10,19 +10,19 @@ QtObject { // Colors readonly property color ncBlue: Theme.wizardHeaderBackgroundColor - readonly property color ncHeaderTextColor: Theme.wizardHeaderTitleColor - readonly property color ncTextColor: Theme.systemPalette.windowText + readonly property color ncHeaderTextColor: sesTrayFontColor + readonly property color ncTextColor: sesTrayFontColor readonly property color ncTextBrightColor: "white" - readonly property color ncSecondaryTextColor: "#808080" + readonly property color ncSecondaryTextColor: sesTrayFontColor//"#808080" readonly property color lightHover: Theme.darkMode ? Qt.lighter(backgroundColor, 2) : Qt.darker(backgroundColor, 1.05) readonly property color darkerHover: Theme.darkMode ? Qt.lighter(backgroundColor, 2.35) : Qt.darker(backgroundColor, 1.25) readonly property color menuBorder: Theme.darkMode ? Qt.lighter(backgroundColor, 2.5) : Qt.darker(backgroundColor, 1.5) - readonly property color backgroundColor: Theme.systemPalette.base + readonly property color backgroundColor: "#FFFFFF" readonly property color buttonBackgroundColor: Theme.systemPalette.button readonly property color positiveColor: Qt.rgba(0.38, 0.74, 0.38, 1) readonly property color currentUserHeaderColor: UserModel.currentUser ? UserModel.currentUser.headerColor : ncBlue - readonly property color currentUserHeaderTextColor: UserModel.currentUser ? UserModel.currentUser.headerTextColor : ncHeaderTextColor + readonly property color currentUserHeaderTextColor: sesTrayFontColor readonly property color adjustedCurrentUserHeaderColor: Theme.darkMode ? Qt.lighter(currentUserHeaderColor, 2) : Qt.darker(currentUserHeaderColor, 1.5) @@ -99,7 +99,7 @@ QtObject { property int addAccountButtonHeight: 50 - property int headerButtonIconSize: 32 + property int headerButtonIconSize: sesIconSize property int dismissButtonSize: 26 property int minimumActivityItemHeight: 24 @@ -202,4 +202,63 @@ QtObject { function variableSize(size) { return size * (1 + Math.min(pixelSize / 100, 1)); } + + readonly property color sesIconDarkColor: "#001B41" + readonly property color sesIconColor: "#1474C4" + + readonly property color sesBorderColor: "#D7D7D7" + readonly property color sesWhite: "#FFFFFF" + readonly property color sesGray: "#465A75" + readonly property color sesTrayInputField: "#718095" + readonly property color sesHover: "#F2F5F8" + readonly property color sesActionHover: "#1474C4" + readonly property color sesActionPressed: "#0B2A63" + readonly property color sesSelectedColor: "#F4F7FA" + readonly property color sesButtonPressed: "#95CAEB" + readonly property color sesAccountMenuHover: "#DBEDF8" + readonly property color sesDarkGreen: "#096B35" + readonly property color sesDarkBlue: "#001B41" + readonly property color sesTrayFontColor: "#001B41" + readonly property color sesErrorBoxBorder: "#F50C00" + readonly property color sesErrorBoxText: "#C80A00" + readonly property color sesMenuBorder: "#2E4360" + readonly property color sesSearchFieldContent: "#97A3B4" + + property int sesAccountMenuHeight: variableSize(40) + property int sesHeaderLogoHeigth: variableSize(40) + property int sesHeaderLogoTopMargin: variableSize(12) + property int sesHeaderLogoLeftMargin: variableSize(24) + property int sesCornerRadius: 8 + property int sesHeaderTopMargin: variableSize(10) + property int sesSmallMargin: 8 + property int sesAccountMenuItemPadding: 12 + property int sesMediumMargin: 16 + + readonly property string sesOpenSansRegular: "qrc:///client/fonts/OpenSans-Regular.ttf" + property int sesFontPointSize: 9 + property int sesFontPixelSizeTitle: 20 + property int sesFontPixelSize: 16 + property int sesFontErrortextPixelSize: 14 + property int sesFontHintPixelSize: 12 + property int sesFontBoldWeight: 400 + property int sesFontNormalWeight: sesFontBoldWeight + + property int sesIconSize: 24 + property int sesActivityItemDistanceToFrame: 24 + property int sesActivityItemWidthModifier: 26 + property int sesFileDetailsIconSize: 58 + property int sesFileDetailsHeaderModifier: 100 + property int sesSearchFieldHeight: 40 + + //Tray Account Menu Values + property int sesAccountButtonWidth: 256 + property int sesAccountButtonHeight: 68 + property int sesAccountButtonRightMargin: 33 + property int sesAccountButtonLeftMargin: 19 + property int sesHeaderButtonWidth: 84 + property int sesHeaderButtonHeight: 68 + property int sesAccountMenuWidth: sesAccountButtonWidth - 8 + property int sesAccountLabelWidth: 157 + property int sesTrayHeaderMargin: 11 + property int sesTrayWindowWidth: 464 } From a969cadf461a1e29ba9217adcf9658bdcfbd5e2d Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 14:32:47 +0100 Subject: [PATCH 007/104] add custom components and themes --- src/gui/CMakeLists.txt | 1 + src/gui/SesComponents/SesErrorBox.qml | 76 +++++ src/gui/SesComponents/SesTrayHeader.qml | 67 +++++ src/gui/SesComponents/syncdirvalidation.cpp | 41 +++ src/gui/SesComponents/syncdirvalidation.h | 19 ++ src/gui/buttonstyle.h | 303 +++++++++++++++++++ src/gui/buttonstylestrategy.h | 60 ++++ src/libsync/CMakeLists.txt | 1 + src/libsync/ionostheme.h | 305 ++++++++++++++++++++ src/libsync/theme.cpp | 57 ++-- src/libsync/theme.h | 6 +- 11 files changed, 907 insertions(+), 29 deletions(-) create mode 100644 src/gui/SesComponents/SesErrorBox.qml create mode 100644 src/gui/SesComponents/SesTrayHeader.qml create mode 100644 src/gui/SesComponents/syncdirvalidation.cpp create mode 100644 src/gui/SesComponents/syncdirvalidation.h create mode 100644 src/gui/buttonstyle.h create mode 100644 src/gui/buttonstylestrategy.h create mode 100644 src/libsync/ionostheme.h diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 6e4acf203d199..e5210b09783dc 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -156,6 +156,7 @@ set(client_SRCS syncrunfilelog.cpp systray.h systray.cpp + buttonstyle.h thumbnailjob.h thumbnailjob.cpp userinfo.h diff --git a/src/gui/SesComponents/SesErrorBox.qml b/src/gui/SesComponents/SesErrorBox.qml new file mode 100644 index 0000000000000..1c821caccde18 --- /dev/null +++ b/src/gui/SesComponents/SesErrorBox.qml @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2021 by Felix Weilbach + * + * 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 2 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. + */ + +import QtQuick 2.15 +import QtQuick.Layouts 1.15 +import QtQuick.Controls 2.15 + +import Style 1.0 +import "../tray/" + +Item { + id: errorBox + + property string text: "" + + implicitHeight: errorMessageLayout.implicitHeight + (2 * Style.standardSpacing) + + Rectangle { + anchors.fill: parent + border.color: Style.sesErrorBoxBorder + border.width: Style.thickBorderWidth + radius: Style.sesCornerRadius + } + + GridLayout { + id: errorMessageLayout + + anchors.fill: parent + anchors.margins: Style.standardSpacing + anchors.leftMargin: Style.standardSpacing + solidStripe.width + + columns: 2 + + Image { + source: Style.sesErrorIcon + width: 24 + height: 24 + Layout.rightMargin: Style.standardSpacing + } + + EnforcedPlainTextLabel { + Layout.fillWidth: true + + font.pixelSize: Style.sesFontPixelSize + font.weight: Style.sesFontBoldWeight + + text: qsTr("Error") + color: Style.sesErrorBoxText + } + + EnforcedPlainTextLabel { + id: errorMessage + + Layout.fillWidth: true + Layout.fillHeight: true + Layout.columnSpan: 2 + + wrapMode: Text.WordWrap + text: errorBox.text + + font.pixelSize: Style.sesFontErrortextPixelSize + font.weight: Style.sesFontNormalWeight + } + } +} diff --git a/src/gui/SesComponents/SesTrayHeader.qml b/src/gui/SesComponents/SesTrayHeader.qml new file mode 100644 index 0000000000000..3f4dd42c70894 --- /dev/null +++ b/src/gui/SesComponents/SesTrayHeader.qml @@ -0,0 +1,67 @@ +import QtQuick 2.15 +import QtQuick.Window 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 +import QtGraphicalEffects 1.15 +import Qt.labs.platform 1.1 as NativeDialogs + +import "../" +import "../filedetails/" +import "../tray/" + +// Custom qml modules are in /theme (and included by resources.qrc) +import Style 1.0 + +import com.ionos.hidrivenext.desktopclient 1.0 + + +Rectangle { + + height: Style.trayWindowHeaderHeight + color: Style.sesWhite + radius: 0.0 + + RowLayout { + id: trayWindowHeaderLayout + + anchors.fill: parent + anchors.leftMargin: Style.sesTrayHeaderMargin + anchors.rightMargin: Style.sesTrayHeaderMargin + + TrayWindowAccountMenu{ + Layout.preferredWidth: Style.sesAccountButtonWidth + Layout.preferredHeight: Style.sesAccountButtonHeight + } + + HeaderButton { + id: trayWindowWebsiteButton + + icon.source: Style.sesWebsiteIcon + icon.color: Style.sesIconColor + onClicked: UserModel.openCurrentAccountServer() + + text: qsTr("Website") + + Layout.rightMargin: 2 + + Accessible.role: Accessible.Button + Accessible.name: qsTr("Open Nextcloud in browser") + Accessible.onPressAction: trayWindowWebsiteButton.clicked() + } + + TrayFoldersMenuButton { + id: openLocalFolderButton + + visible: currentUser.hasLocalFolder + currentUser: UserModel.currentUser + + onClicked: openLocalFolderButton.userHasGroupFolders ? openLocalFolderButton.toggleMenuOpen() : UserModel.openCurrentAccountLocalFolder() + + onFolderEntryTriggered: isGroupFolder ? UserModel.openCurrentAccountFolderFromTrayInfo(fullFolderPath) : UserModel.openCurrentAccountLocalFolder() + + Accessible.role: Accessible.Graphic + Accessible.name: qsTr("Open local or group folders") + Accessible.onPressAction: openLocalFolderButton.userHasGroupFolders ? openLocalFolderButton.toggleMenuOpen() : UserModel.openCurrentAccountLocalFolder() + } + } +} // Rectangle trayWindowHeaderBackground diff --git a/src/gui/SesComponents/syncdirvalidation.cpp b/src/gui/SesComponents/syncdirvalidation.cpp new file mode 100644 index 0000000000000..ca95f334d088e --- /dev/null +++ b/src/gui/SesComponents/syncdirvalidation.cpp @@ -0,0 +1,41 @@ +#include "syncdirvalidation.h" +#include +#include +#include "logger.h" + +#ifdef Q_OS_WIN +bool SyncDirValidator::isValidDir() { + QString appDataPath = SyncDirValidator::appDataPath(); + return !_path.startsWith(appDataPath) && !appDataPath.startsWith(_path); + +} + +QString SyncDirValidator::message() { + return QObject::tr("The directory %1 cannot be part of your sync directory. Please choose another folder.").arg(_path); +} + +QString SyncDirValidator::appDataPath() { + //Path: AppData/Roaming/ + QString appDataRoamingApplicationNamePath = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); + QDir appDataRoamingApplicationNameDir(appDataRoamingApplicationNamePath); + appDataRoamingApplicationNameDir.cdUp(); + appDataRoamingApplicationNameDir.cdUp(); + QString appDataPath = appDataRoamingApplicationNameDir.absolutePath(); + return appDataPath; +} + +#else + +bool SyncDirValidator::isValidDir() { + return true; +} + +QString SyncDirValidator::message() { + return ""; +} + +QString SyncDirValidator::appDataPath() { + return ""; +} + +#endif \ No newline at end of file diff --git a/src/gui/SesComponents/syncdirvalidation.h b/src/gui/SesComponents/syncdirvalidation.h new file mode 100644 index 0000000000000..a91812da85775 --- /dev/null +++ b/src/gui/SesComponents/syncdirvalidation.h @@ -0,0 +1,19 @@ +#ifndef SYNCDIRVALIDATION_H +#define SYNCDIRVALIDATION_H + +#include + +class SyncDirValidator { +public: + SyncDirValidator(const QString &path) : _path(path) {} + + bool isValidDir(); + QString message(); + +private: + QString appDataPath(); + QString _path; +}; + + +#endif // SYNCDIRVALIDATION_H \ No newline at end of file diff --git a/src/gui/buttonstyle.h b/src/gui/buttonstyle.h new file mode 100644 index 0000000000000..2f199b1352c80 --- /dev/null +++ b/src/gui/buttonstyle.h @@ -0,0 +1,303 @@ + +#ifndef _BUTTONSTYLE_H +#define _BUTTONSTYLE_H + +#include "ionostheme.h" +#include +#include + +namespace OCC{ + +enum class ButtonStyleName { + Primary, + Secondary, + MoreOptions, +}; +OCSYNC_EXPORT Q_NAMESPACE; +Q_ENUM_NS(ButtonStyleName); +} +Q_DECLARE_METATYPE(OCC::ButtonStyleName); + +namespace OCC{ +class ButtonStyle +{ +protected: + ButtonStyle() + { + qRegisterMetaType("OCC::ButtonStyleName"); + } + ~ButtonStyle() {} + +public: + + // Default + virtual QString buttonDefaultColor() const = 0; + virtual QString buttonDefaultBorderColor() const = 0; + // Hover + virtual QString buttonHoverColor() const = 0; + virtual QString buttonHoverBorderColor() const = 0; + // Pressed + virtual QString buttonPressedColor() const = 0; + virtual QString buttonPressedBorderColor() const = 0; + // Disabled + virtual QString buttonDisabledColor() const = 0; + virtual QString buttonDisabledBorderColor() const = 0; + // Focused + virtual QString buttonFocusedColor() const = 0; + virtual QString buttonFocusedBorderColor() const = 0; + // Font + virtual QString buttonDisabledFontColor() const = 0; + virtual QString buttonFontColor() const = 0; +}; + +class PrimaryButtonStyle : public ButtonStyle { +private: + PrimaryButtonStyle() + { + } + ~PrimaryButtonStyle() {} +public: + + PrimaryButtonStyle(PrimaryButtonStyle &other) = delete; + void operator=(const PrimaryButtonStyle &) = delete; + + static PrimaryButtonStyle& GetInstance() { + static PrimaryButtonStyle instance; + return instance; + } + + // Default + QString buttonDefaultColor() const override + { + return OCC::IonosTheme::buttonPrimaryColor(); + } + + QString buttonDefaultBorderColor() const override + { + return OCC::IonosTheme::buttonPrimaryColor(); + } + + //Hover + QString buttonHoverColor() const override + { + return OCC::IonosTheme::buttonPrimaryHoverColor(); + } + + QString buttonHoverBorderColor() const override + { + return OCC::IonosTheme::buttonPrimaryHoverColor(); + } + + // Pressed + QString buttonPressedColor() const override + { + return OCC::IonosTheme::buttonPrimaryPressedColor(); + } + + QString buttonPressedBorderColor() const override + { + return OCC::IonosTheme::buttonPrimaryPressedColor(); + } + + // Disabled + QString buttonDisabledColor() const override + { + return OCC::IonosTheme::buttonDisabledColor(); + } + + QString buttonDisabledBorderColor() const override + { + return OCC::IonosTheme::buttonDisabledColor(); + } + + // Focused + QString buttonFocusedColor() const override + { + return OCC::IonosTheme::buttonPrimaryColor(); + } + + QString buttonFocusedBorderColor() const override + { + return OCC::IonosTheme::black(); + } + + // Font + QString buttonDisabledFontColor() const override + { + return OCC::IonosTheme::buttonDisabledFontColor(); + } + + QString buttonFontColor() const override + { + return OCC::IonosTheme::white(); + } +}; + +class SecondaryButtonStyle : public ButtonStyle { +protected: + SecondaryButtonStyle() + { + } + ~SecondaryButtonStyle() {} +public: + + SecondaryButtonStyle(SecondaryButtonStyle &other) = delete; + void operator=(const SecondaryButtonStyle &) = delete; + + static SecondaryButtonStyle& GetInstance() { + static SecondaryButtonStyle instance; + return instance; + } + + // Default + QString buttonDefaultColor() const override + { + return OCC::IonosTheme::white(); + } + + QString buttonDefaultBorderColor() const override + { + return OCC::IonosTheme::buttonSecondaryBorderColor(); + } + + // Hover + QString buttonHoverColor() const override + { + return OCC::IonosTheme::buttonSecondaryHoverColor(); + } + + QString buttonHoverBorderColor() const override + { + return OCC::IonosTheme::buttonSecondaryBorderColor(); + } + + // Pressed + QString buttonPressedColor() const override + { + return OCC::IonosTheme::buttonSecondaryPressedColor(); + } + + QString buttonPressedBorderColor() const override + { + return OCC::IonosTheme::buttonSecondaryBorderColor(); + } + + // Disabled + QString buttonDisabledColor() const override + { + return OCC::IonosTheme::buttonDisabledColor(); + } + + QString buttonDisabledBorderColor() const override + { + return OCC::IonosTheme::buttonDisabledColor(); + } + + // Focused + QString buttonFocusedColor() const override + { + return OCC::IonosTheme::white(); + } + + QString buttonFocusedBorderColor() const override + { + return OCC::IonosTheme::black(); + } + + // Font + QString buttonDisabledFontColor() const override + { + return OCC::IonosTheme::buttonDisabledFontColor(); + } + + QString buttonFontColor() const override + { + return OCC::IonosTheme::black(); + } +}; + +class MoreOptionsButtonStyle : public ButtonStyle { +protected: + MoreOptionsButtonStyle() + { + } + ~MoreOptionsButtonStyle() {} +public: + + MoreOptionsButtonStyle(MoreOptionsButtonStyle &other) = delete; + void operator=(const MoreOptionsButtonStyle &) = delete; + + static MoreOptionsButtonStyle& GetInstance() { + static MoreOptionsButtonStyle instance; + return instance; + } + + // Default + QString buttonDefaultColor() const override + { + return OCC::IonosTheme::white(); + } + + QString buttonDefaultBorderColor() const override + { + return OCC::IonosTheme::white(); + } + + // Hover + QString buttonHoverColor() const override + { + return OCC::IonosTheme::buttonHoveredColor(); + } + + QString buttonHoverBorderColor() const override + { + return OCC::IonosTheme::buttonHoveredColor(); + } + + // Pressed + QString buttonPressedColor() const override + { + return OCC::IonosTheme::buttonPressedColor(); + } + + QString buttonPressedBorderColor() const override + { + return OCC::IonosTheme::buttonPressedColor(); + } + + // Disabled + QString buttonDisabledColor() const override + { + return OCC::IonosTheme::buttonDisabledColor(); + } + + QString buttonDisabledBorderColor() const override + { + return OCC::IonosTheme::buttonDisabledColor(); + } + + // Focused + QString buttonFocusedColor() const override + { + return OCC::IonosTheme::white(); + } + + QString buttonFocusedBorderColor() const override + { + return OCC::IonosTheme::black(); + } + + // Font + QString buttonDisabledFontColor() const override + { + return OCC::IonosTheme::buttonDisabledFontColor(); + } + + QString buttonFontColor() const override + { + return OCC::IonosTheme::black(); + } +}; +} + +#endif // _BUTTONSTYLE_H diff --git a/src/gui/buttonstylestrategy.h b/src/gui/buttonstylestrategy.h new file mode 100644 index 0000000000000..c6a316d25d3de --- /dev/null +++ b/src/gui/buttonstylestrategy.h @@ -0,0 +1,60 @@ +#ifndef BUTTONSTYLESTRATEGY_H +#define BUTTONSTYLESTRATEGY_H + +#include "buttonstyle.h" +#include +#include + + +class ButtonStyleStrategy +{ +public: + virtual ~ButtonStyleStrategy() = default; + + static OCC::ButtonStyle& getButtonStyle(const QWidget *widget, const QStyleOptionButton *option) + { + OCC::ButtonStyleName buttonStyleName; + if(widget != nullptr) + { + buttonStyleName = determineButtonStyleName(widget, option); + } + else + { + buttonStyleName = OCC::ButtonStyleName::Secondary; + } + + switch (buttonStyleName) + { + case OCC::ButtonStyleName::MoreOptions: + return OCC::MoreOptionsButtonStyle::GetInstance(); + case OCC::ButtonStyleName::Primary: + return OCC::PrimaryButtonStyle::GetInstance(); + case OCC::ButtonStyleName::Secondary: + default: + return OCC::SecondaryButtonStyle::GetInstance(); + } + } + + static OCC::ButtonStyleName determineButtonStyleName(const QWidget *widget, const QStyleOptionButton *option) + { + QVariant propertyValue = widget->property("buttonStyle"); + if(propertyValue.isValid()){ + + return propertyValue.value(); + } + + return getButtonStyleNameByObjectName(widget); + } + + static OCC::ButtonStyleName getButtonStyleNameByObjectName(const QWidget *widget) + { + static const QMap buttonStyleMap = { + {"qt_wizard_finish", OCC::ButtonStyleName::Primary} + }; + + QString buttonName = widget->objectName(); + return buttonStyleMap.value(buttonName, OCC::ButtonStyleName::Secondary); + } +}; + +#endif // BUTTONSTYLESTRATEGY_H \ No newline at end of file diff --git a/src/libsync/CMakeLists.txt b/src/libsync/CMakeLists.txt index 57b4ddef8d826..9b01ba265af22 100644 --- a/src/libsync/CMakeLists.txt +++ b/src/libsync/CMakeLists.txt @@ -111,6 +111,7 @@ set(libsync_SRCS syncoptions.cpp theme.h theme.cpp + ionostheme.h updatee2eefoldermetadatajob.h updatee2eefoldermetadatajob.cpp updatemigratede2eemetadatajob.h diff --git a/src/libsync/ionostheme.h b/src/libsync/ionostheme.h new file mode 100644 index 0000000000000..97d7e34670787 --- /dev/null +++ b/src/libsync/ionostheme.h @@ -0,0 +1,305 @@ +#ifndef _IONOSTHEME_H +#define _IONOSTHEME_H + +#include +#include +#include "theme.h" + +namespace OCC { + +class IonosTheme { +public: + + //Icons + static QString avatarIcon() { + return QString(Theme::themePrefix) + QStringLiteral("ses/ses-setupAvatar.svg"); + } + + static QString folderIcon() { + return QString(Theme::themePrefix) + QStringLiteral("ses/ses-folder32.svg"); + } + + static QString syncArrows() { + return QString(Theme::themePrefix) + QStringLiteral("ses/ses-syncArrows.svg"); + } + + static QString questionCircleIcon() { + return QString(Theme::themePrefix) + QStringLiteral("ses/ses-questionCircle.svg"); + } + + static QString liveBackupPlusIcon() { + return QString(Theme::themePrefix) + QStringLiteral("ses/ses-addLiveBackupPlus.svg"); + } + + static QString plusIcon() { + return QStringLiteral("qrc:///client/theme/ses/ses-darkPlus24.svg"); + } + + static QString deleteIcon() { + return QStringLiteral("qrc:///client/theme/ses/ses-activityDelete.svg"); + } + + static QString refreshIcon() { + return QStringLiteral("qrc:///client/theme/ses/ses-refresh.svg"); + } + + static int treeViewIconSize() { + return 32; + } + + //Control Configuration: Sizes + static QString toolbarActionBorderRadius() { + return "8px"; + } + + static QString toolbarSideMargin() { + return "10px"; + } + + static int toolbarIconSize(){ + return 24; + } + + static QString buttonRadius() { + return "4px"; + } + + static int buttonRadiusInt() { + return 4; + } + + static QString buttonPadding() { + return "10px"; + } + + static QString smallMargin() { + return "8"; + } + + static int minimalSettingsDialogWidth() { + return 740; + } + + static int LoginPageSpacer() { + return 45; + } + + //Font Configuration + static QString settingsFont() { + return "Segoe UI"; + } + + static QString contextMenuFont() { + return ":/client/fonts/OpenSans-Regular.ttf"; + } + + static QString settingsSmallTextSize() { + return "14px"; + } + + static int settingsTextPixel() { + return 16; + } + + static QString settingsTextSize() { + return QString::number(settingsTextPixel()) + "px"; + } + + static int settingsTitlePixel() { + return 20; + } + + static QString settingsTitleSize() { + return QString::number(settingsTitlePixel()) + "px"; + } + + static int settingsBigTitlePixel() { + return 24; + } + + static QString settingsBigTitleSize() { + return QString::number(settingsBigTitlePixel()) + "px"; + } + + static QString onboardingTitle() { + return "28px"; + } + + static QString settingsTextWeight() { + return "400"; + } + + static QString settingsTitleWeight400() { + return "400"; + } + + static QString settingsTitleWeight500() { + return "500"; + } + + static QString settingsTitleWeight600() { + return "600"; + } + + static QFont::Weight settingsTitleWeightDemiBold() { + return QFont::DemiBold; + } + + static QFont::Weight settingsTitleWeightNormal() { + return QFont::Normal; + } + + static QFont settingsFontDefault(){ + QFont defaultFont(settingsFont()); + defaultFont.setPixelSize(settingsTextPixel()); + defaultFont.setWeight(settingsTitleWeightNormal()); + return defaultFont; + } + + static QString titleColor() { + return "#000000"; + } + + static QString folderWizardSubtitleColor() { + return "#104996"; + } + + static QString folderWizardPathColor() { + return "#97A3B4"; + } + + static QString loginWizardFontGrey() { + return "#616161"; + } + + static QString loginWizardFontLightGrey() { + return "#BDBDBD"; + } + + static QString fontConfigurationCss(QString font, QString size, QString weight, QString color) { + return QString("font-family: %1; font-size: %2; font-weight: %3; color: %4; ").arg( + font, + size, + weight, + color); + } + + //Colors + static QString settingsLinkColor() { + return "#02306A"; + } + + static QString buttonPrimaryColor() { + return "#0F6CBD"; + } + + static QString buttonSecondaryBorderColor() { + return "#D1D1D1"; + } + + static QString buttonDisabledColor() { + return "#F0F0F0"; + } + + static QString buttonPrimaryHoverColor() { + return "#115EA3"; + } + + static QString buttonSecondaryHoverColor() { + return "#F5F5F5"; + } + + static QString buttonPrimaryPressedColor() { + return "#0C3B5E"; + } + + static QString buttonSecondaryPressedColor() { + return "#E0E0E0"; + } + + static QString buttonDisabledFontColor() { + return "#BDBDBD"; + } + + static QString white() { + return "#FFFFFF"; + } + + static QString black() { + return "#000000"; + } + + static QString dialogBackgroundColor() { + return "#FAFAFA"; + } + + static QString menuBorderColor() { + return "#2E4360"; + } + + static QString menuTextColor() { + return "#001B41"; + } + + static QString menuSelectedItemColor() { + return "#F4F7FA"; + } + + static QString menuBorderRadius() { + return "16px"; + } + + static QString buttonPressedColor() { + return "#0B2A63"; + } + + static QString buttonHoveredColor() { + return "#1474C4"; + } + + static QString toolButtonHoveredColor() { + return "#DBEDF8"; + } + + static QString toolButtonPressedColor() { + return "#95CAEB"; + } + + static QString errorBorderColor() { + return "#EEACB2"; + } + + static QString errorColor() { + return "#FDF3F4"; + } + + static QString warningBorderColor() { + return "#F4BFAB"; + } + + static QString warningColor() { + return "#FDF6F3"; + } + + static QString successBorderColor() { + return "#9FD89F"; + } + + static QString successColor() { + return "#F1FAF1"; + } + + static QString infoBorderColor() { + return "#11C7E6"; + } + + static QString infoColor() { + return "#E6F9FC"; + } + + +private: + IonosTheme() {} +}; +} +#endif // _IONOSTHEME_H \ No newline at end of file diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 46060c5b7f81b..d71737ba5d60a 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -126,7 +126,7 @@ QString Theme::appNameGUI() const QString Theme::appName() const { - return APPLICATION_SHORTNAME; + return APPLICATION_NAME; } QUrl Theme::stateOnlineImageSource() const @@ -372,6 +372,27 @@ Theme::Theme() QColor(127, 127, 127)); #endif + IONOSPalette.setColor(QPalette::Window, QColor("#ffffff")); + IONOSPalette.setColor(QPalette::WindowText, QColor("#001B40")); + IONOSPalette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(0,0,0)); + IONOSPalette.setColor(QPalette::Base, QColor( "#FAFAFA")); + IONOSPalette.setColor(QPalette::AlternateBase, QColor(0,0,0)); + IONOSPalette.setColor(QPalette::ToolTipBase, QColor(0,0,0)); + IONOSPalette.setColor(QPalette::ToolTipText, QColor(0,0,0)); + IONOSPalette.setColor(QPalette::Text, QColor(0,0,0)); + IONOSPalette.setColor(QPalette::Disabled, QPalette::Text, QColor(0,0,0)); + IONOSPalette.setColor(QPalette::Dark, QColor("#e1e1e1")); + IONOSPalette.setColor(QPalette::Shadow, QColor("#D1D1D1")); + IONOSPalette.setColor(QPalette::Button, QColor(0,0,0)); + IONOSPalette.setColor(QPalette::ButtonText, QColor(0,0,0)); + IONOSPalette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(0,0,0)); + IONOSPalette.setColor(QPalette::BrightText, QColor(0,0,0)); + IONOSPalette.setColor(QPalette::Link, QColor("#1474c4")); + IONOSPalette.setColor(QPalette::Highlight, QColor("#F2F5F8")); + IONOSPalette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(0,0,0)); + IONOSPalette.setColor(QPalette::HighlightedText, QColor(0,0,0)); + IONOSPalette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(0,0,0)); + #ifdef APPLICATION_SERVER_URL_ENFORCE _forceOverrideServerUrl = true; #endif @@ -847,38 +868,25 @@ void Theme::replaceLinkColorString(QString &linkString, const QColor &newColor) linkString.replace(linkRegularExpression, QString::fromLatin1(" Date: Thu, 21 Nov 2024 15:11:51 +0100 Subject: [PATCH 008/104] style gui/wizzard welcome pages --- src/gui/wizard/flow2authcredspage.cpp | 2 +- src/gui/wizard/flow2authwidget.cpp | 99 +- src/gui/wizard/flow2authwidget.h | 3 +- src/gui/wizard/flow2authwidget.ui | 388 +++--- src/gui/wizard/owncloudadvancedsetuppage.cpp | 184 ++- src/gui/wizard/owncloudadvancedsetuppage.h | 1 + src/gui/wizard/owncloudadvancedsetuppage.ui | 1180 +++++++++-------- .../wizard/owncloudconnectionmethoddialog.cpp | 1 + src/gui/wizard/owncloudsetupnocredspage.ui | 4 +- src/gui/wizard/owncloudsetuppage.cpp | 75 +- src/gui/wizard/owncloudsetuppage.h | 1 + src/gui/wizard/owncloudwizard.cpp | 47 +- src/gui/wizard/slideshow.cpp | 13 +- src/gui/wizard/welcomepage.cpp | 37 +- src/gui/wizard/welcomepage.ui | 521 ++++---- 15 files changed, 1442 insertions(+), 1114 deletions(-) diff --git a/src/gui/wizard/flow2authcredspage.cpp b/src/gui/wizard/flow2authcredspage.cpp index e03b9a50faba5..c086d1835243f 100644 --- a/src/gui/wizard/flow2authcredspage.cpp +++ b/src/gui/wizard/flow2authcredspage.cpp @@ -32,7 +32,7 @@ Flow2AuthCredsPage::Flow2AuthCredsPage() : AbstractCredentialsWizardPage() { _layout = new QVBoxLayout(this); - + _layout->setContentsMargins(0, 0, 0, 0); _flow2AuthWidget = new Flow2AuthWidget(); _layout->addWidget(_flow2AuthWidget); diff --git a/src/gui/wizard/flow2authwidget.cpp b/src/gui/wizard/flow2authwidget.cpp index 87f63d59197a8..6db4af0fa810b 100644 --- a/src/gui/wizard/flow2authwidget.cpp +++ b/src/gui/wizard/flow2authwidget.cpp @@ -14,19 +14,21 @@ #include "flow2authwidget.h" -#include "common/utility.h" + #include "account.h" +#include "buttonstyle.h" +#include "common/utility.h" #include "creds/webflowcredentials.h" +#include "linklabel.h" #include "networkjobs.h" -#include "wizard/owncloudwizardcommon.h" #include "theme.h" -#include "linklabel.h" +#include "wizard/owncloudwizardcommon.h" #include "QProgressIndicator.h" #include -#include #include +#include namespace OCC { @@ -39,11 +41,10 @@ Flow2AuthWidget::Flow2AuthWidget(QWidget *parent) { _ui.setupUi(this); - WizardCommon::initErrorLabel(_ui.errorLabel); - _ui.errorLabel->setTextFormat(Qt::RichText); + _ui.errorSnackbar->setVisible(false); - connect(_ui.openLinkLabel, &LinkLabel::clicked, this, &Flow2AuthWidget::slotOpenBrowser); - connect(_ui.copyLinkLabel, &LinkLabel::clicked, this, &Flow2AuthWidget::slotCopyLinkToClipboard); + connect(_ui.copyLinkButton, &QPushButton::clicked, this, &Flow2AuthWidget::slotCopyLinkToClipboard); + connect(_ui.openLinkButton, &QPushButton::clicked, this, &Flow2AuthWidget::slotOpenBrowser); auto sizePolicy = _progressIndi->sizePolicy(); sizePolicy.setRetainSizeWhenHidden(true); @@ -57,9 +58,7 @@ Flow2AuthWidget::Flow2AuthWidget(QWidget *parent) void Flow2AuthWidget::setLogo() { - const auto backgroundColor = palette().window().color(); - const auto logoIconFileName = Theme::instance()->isBranded() ? Theme::hidpiFileName("external.png", backgroundColor) - : Theme::hidpiFileName(":/client/theme/colored/external.png"); + const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/ses/ses-external.svg"); _ui.logoLabel->setPixmap(logoIconFileName); } @@ -94,16 +93,14 @@ void Flow2AuthWidget::slotAuthResult(Flow2Auth::Result r, const QString &errorSt switch (r) { case Flow2Auth::NotSupported: /* Flow2Auth can't open browser */ - _ui.errorLabel->setText(tr("Unable to open the Browser, please copy the link to your Browser.")); - _ui.errorLabel->show(); + setError(tr("Error"),tr("Unable to open the Browser, please copy the link to your Browser.")); break; case Flow2Auth::Error: /* Error while getting the access token. (Timeout, or the server did not accept our client credentials */ - _ui.errorLabel->setText(errorString); - _ui.errorLabel->show(); + setError(tr("Error"), errorString); break; case Flow2Auth::LoggedIn: { - _ui.errorLabel->hide(); + _ui.errorSnackbar->hide(); break; } } @@ -111,12 +108,12 @@ void Flow2AuthWidget::slotAuthResult(Flow2Auth::Result r, const QString &errorSt emit authResult(r, errorString, user, appPassword); } -void Flow2AuthWidget::setError(const QString &error) { - if (error.isEmpty()) { - _ui.errorLabel->hide(); +void Flow2AuthWidget::setError(const QString &caption, const QString &message) { + if (message.isEmpty()) { + _ui.errorSnackbar->hide(); } else { - _ui.errorLabel->setText(error); - _ui.errorLabel->show(); + _ui.errorSnackbar->setError(message); + _ui.errorSnackbar->show(); } } @@ -127,8 +124,8 @@ Flow2AuthWidget::~Flow2AuthWidget() { void Flow2AuthWidget::slotOpenBrowser() { - if (_ui.errorLabel) - _ui.errorLabel->hide(); + if (_ui.errorSnackbar) + _ui.errorSnackbar->hide(); if (_asyncAuth) _asyncAuth->openBrowser(); @@ -136,8 +133,8 @@ void Flow2AuthWidget::slotOpenBrowser() void Flow2AuthWidget::slotCopyLinkToClipboard() { - if (_ui.errorLabel) - _ui.errorLabel->hide(); + if (_ui.errorSnackbar) + _ui.errorSnackbar->hide(); if (_asyncAuth) _asyncAuth->copyLinkToClipboard(); @@ -185,8 +182,8 @@ void Flow2AuthWidget::startSpinner() _progressIndi->setVisible(true); _progressIndi->startAnimation(); - _ui.openLinkLabel->setEnabled(false); - _ui.copyLinkLabel->setEnabled(false); + _ui.openLinkButton->setEnabled(false); + _ui.copyLinkButton->setEnabled(false); } void Flow2AuthWidget::stopSpinner(bool showStatusLabel) @@ -196,8 +193,8 @@ void Flow2AuthWidget::stopSpinner(bool showStatusLabel) _progressIndi->setVisible(false); _progressIndi->stopAnimation(); - _ui.openLinkLabel->setEnabled(_statusUpdateSkipCount == 0); - _ui.copyLinkLabel->setEnabled(_statusUpdateSkipCount == 0); + _ui.openLinkButton->setEnabled(_statusUpdateSkipCount == 0); + _ui.copyLinkButton->setEnabled(_statusUpdateSkipCount == 0); } void Flow2AuthWidget::slotStyleChanged() @@ -205,6 +202,14 @@ void Flow2AuthWidget::slotStyleChanged() customizeStyle(); } +void Flow2AuthWidget::shrinkTopMarginForText() +{ + _ui.topMarginSpacer->changeSize(20, 30); + _ui.topMarginSpacer->invalidate(); + setMinimumHeight(340); + setMaximumHeight(400); +} + void Flow2AuthWidget::customizeStyle() { setLogo(); @@ -218,13 +223,35 @@ void Flow2AuthWidget::customizeStyle() } } - _ui.openLinkLabel->setText(tr("Reopen Browser")); - _ui.openLinkLabel->setAlignment(Qt::AlignCenter); - - _ui.copyLinkLabel->setText(tr("Copy Link")); - _ui.copyLinkLabel->setAlignment(Qt::AlignCenter); - - WizardCommon::customizeHintLabel(_ui.statusLabel); + _ui.openLinkButton->setText(tr("Open Browser")); + _ui.openLinkButton->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Primary)); + _ui.openLinkButton->setFixedSize(180, 40); + + _ui.copyLinkButton->setText(tr("Copy Link")); + _ui.copyLinkButton->setFixedSize(150, 40); + + _ui.mainLayoutVBox->setContentsMargins(32, 0, 32, 0); + _ui.innerLayoutVBox->setSpacing(16); + +#ifdef Q_OS_MAC + _ui.horizontalLayout->setSpacing(32); +#endif + + _ui.statusLabel->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + )); + + _ui.label->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + )); + + _ui.label->setText(tr("Switch to your browser to connect your account")); } } // namespace OCC diff --git a/src/gui/wizard/flow2authwidget.h b/src/gui/wizard/flow2authwidget.h index 2660ff0b76209..11fc9ee8e69b3 100644 --- a/src/gui/wizard/flow2authwidget.h +++ b/src/gui/wizard/flow2authwidget.h @@ -35,7 +35,8 @@ class Flow2AuthWidget : public QWidget void startAuth(Account *account); void resetAuth(Account *account = nullptr); - void setError(const QString &error); + void setError(const QString &caption, const QString &message); + void shrinkTopMarginForText(); public Q_SLOTS: void slotAuthResult(Flow2Auth::Result, const QString &errorString, const QString &user, const QString &appPassword); diff --git a/src/gui/wizard/flow2authwidget.ui b/src/gui/wizard/flow2authwidget.ui index 44961ddae1a2a..7ab39ab757ad2 100644 --- a/src/gui/wizard/flow2authwidget.ui +++ b/src/gui/wizard/flow2authwidget.ui @@ -1,201 +1,195 @@ - Flow2AuthWidget - - - - 0 - 0 - 580 - 330 - - - - - 0 - 0 - - - - - 500 - 280 - - - - Browser Authentication - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 80 - - - - - - - - 0 - - - 0 - - - - - Logo - - - Qt::AlignCenter - - - - - - - - 12 - 75 - true - - - - Switch to your browser to connect your account - - - Qt::AlignCenter - - - true - - - - - - - Status - - - Qt::AlignCenter - - - 0 - - - - - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 0 - - - - - - - + Flow2AuthWidget + + + + 0 + 0 + 580 + 405 + + + + + 0 + 0 + + + + + 580 + 405 + + + + Browser Authentication + + + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 20 + 110 + + + + + + + + 0 + + + 0 + + + + + Logo + + + Qt::AlignCenter + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 0 + 8 + + + + + + + + Switch to your browser to connect your account + + + Qt::AlignCenter + + + true + + + + + + + Status + + + Qt::AlignCenter + + + 0 + + + + + + + An error occurred while connecting. Please try again. + + + + + + + + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Copy Link + + + + + + + Reopen Browser + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 0 + 32 + + + + - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - An error occurred while connecting. Please try again. - - - Qt::PlainText - - - Qt::AlignCenter - - - - - - - - - - - - Qt::Vertical - - - - 20 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 80 - - - - - - - - - OCC::LinkLabel - QWidget -

wizard/linklabel.h
- 1 - - - - + + + + OCC::LinkLabel + QWidget +
wizard/linklabel.h
+ 1 +
+
+ + diff --git a/src/gui/wizard/owncloudadvancedsetuppage.cpp b/src/gui/wizard/owncloudadvancedsetuppage.cpp index f242db0d3367e..9dc987fd0d462 100644 --- a/src/gui/wizard/owncloudadvancedsetuppage.cpp +++ b/src/gui/wizard/owncloudadvancedsetuppage.cpp @@ -23,17 +23,19 @@ #include "QProgressIndicator.h" -#include "wizard/owncloudwizard.h" -#include "wizard/owncloudwizardcommon.h" -#include "wizard/owncloudadvancedsetuppage.h" + #include "buttonstyle.h" #include "account.h" -#include "theme.h" #include "configfile.h" -#include "selectivesyncdialog.h" -#include #include "creds/abstractcredentials.h" +#include "ionostheme.h" #include "networkjobs.h" +#include "selectivesyncdialog.h" +#include "theme.h" +#include "wizard/owncloudadvancedsetuppage.h" #include "wizard/owncloudwizard.h" +#include "wizard/owncloudwizardcommon.h" +#include "SesComponents/syncdirvalidation.h" +#include namespace OCC { @@ -46,15 +48,22 @@ OwncloudAdvancedSetupPage::OwncloudAdvancedSetupPage(OwncloudWizard *wizard) setupResoultionWidget(); _filePathLabel.reset(new ElidedLabel); + _filePathLabel->setObjectName("filePathLabel"); + _filePathLabel->setWordWrap(true); _filePathLabel->setElideMode(Qt::ElideMiddle); _filePathLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); _filePathLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); - _ui.locationsGridLayout->addWidget(_filePathLabel.data(), 3, 3); + _ui.locationsVBox->insertWidget(3, _filePathLabel.data()); _filePathLabel->setTextFormat(Qt::PlainText); _ui.userNameLabel->setTextFormat(Qt::PlainText); _ui.serverAddressLabel->setTextFormat(Qt::PlainText); _ui.localFolderDescriptionLabel->setTextFormat(Qt::PlainText); + _ui.confCheckBoxSize->hide(); + _ui.confSpinBox->hide(); + _ui.confTraillingSizeLabel->hide(); + _ui.wSyncStrategy->removeItem(_ui.horizontalLayout_6); + registerField(QLatin1String("OCSyncFromScratch"), _ui.cbSyncFromScratch); @@ -67,12 +76,12 @@ OwncloudAdvancedSetupPage::OwncloudAdvancedSetupPage(OwncloudWizard *wizard) setupCustomization(); connect(_ui.pbSelectLocalFolder, &QAbstractButton::clicked, this, &OwncloudAdvancedSetupPage::slotSelectFolder); + _ui.pbSelectLocalFolder->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Secondary)); setButtonText(QWizard::FinishButton, tr("Connect")); if (Theme::instance()->enforceVirtualFilesSyncFolder()) { _ui.rSyncEverything->setDisabled(true); _ui.rSelectiveSync->setDisabled(true); - _ui.bSelectiveSync->setDisabled(true); } connect(_ui.rSyncEverything, &QAbstractButton::clicked, this, &OwncloudAdvancedSetupPage::slotSyncEverythingClicked); @@ -84,7 +93,6 @@ OwncloudAdvancedSetupPage::OwncloudAdvancedSetupPage(OwncloudWizard *wizard) _selectiveSyncBlacklist.clear(); } }); - connect(_ui.bSelectiveSync, &QAbstractButton::clicked, this, &OwncloudAdvancedSetupPage::slotSelectiveSyncClicked); const auto theme = Theme::instance(); const auto appIcon = theme->applicationIcon(); @@ -102,7 +110,6 @@ OwncloudAdvancedSetupPage::OwncloudAdvancedSetupPage(OwncloudWizard *wizard) } _ui.rVirtualFileSync->setText(tr("Use &virtual files instead of downloading content immediately %1").arg(bestAvailableVfsMode() == Vfs::WindowsCfApi ? QString() : tr("(experimental)"))); - #ifdef Q_OS_WIN if (bestAvailableVfsMode() == Vfs::WindowsCfApi) { _ui.wSyncStrategy->addLayout(_ui.lVirtualFileSync); @@ -191,7 +198,7 @@ void OwncloudAdvancedSetupPage::initializePage() _ui.confSpinBox->setValue(newFolderLimit.second); _ui.confCheckBoxExternal->setChecked(cfgFile.confirmExternalStorage()); - fetchUserAvatar(); + SetAvatarIcon(); setUserInformation(); customizeStyle(); @@ -214,6 +221,12 @@ void OwncloudAdvancedSetupPage::initializePage() } } +void OwncloudAdvancedSetupPage::SetAvatarIcon() +{ + const auto icon = QIcon(IonosTheme::avatarIcon()); + _ui.lServerIcon->setPixmap(icon.pixmap(32)); +} + void OwncloudAdvancedSetupPage::fetchUserAvatar() { // Reset user avatar @@ -313,7 +326,6 @@ void OwncloudAdvancedSetupPage::updateStatus() _ui.lFreeSpace->setText(QString(tr("%1 free space", "%1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB")).arg(lfreeSpaceStr)); _ui.syncModeLabel->setText(t); - _ui.syncModeLabel->setFixedHeight(_ui.syncModeLabel->sizeHint().height()); qint64 rSpace = _ui.rSyncEverything->isChecked() ? _rSize : _rSelectedSize; @@ -331,6 +343,7 @@ void OwncloudAdvancedSetupPage::setResolutionGuiVisible(bool value) _ui.syncModeLabel->setVisible(value); _ui.rKeepLocal->setVisible(value); _ui.cbSyncFromScratch->setVisible(value); + _ocWizard->adjustSize(); } /* obsolete */ @@ -407,13 +420,18 @@ bool OwncloudAdvancedSetupPage::validatePage() _checking = true; startSpinner(); emit completeChanged(); - + ConfigFile cfgFile; if (_ui.rSyncEverything->isChecked()) { ConfigFile cfgFile; cfgFile.setNewBigFolderSizeLimit(_ui.confCheckBoxSize->isChecked(), - _ui.confSpinBox->value()); + _ui.confCheckBoxSize->isChecked() ? _ui.confSpinBox->value() : -1); cfgFile.setConfirmExternalStorage(_ui.confCheckBoxExternal->isChecked()); } + else + { + cfgFile.setNewBigFolderSizeLimit(false, -1); + cfgFile.setConfirmExternalStorage(false); + } emit createLocalAndRemoteFolders(localFolder(), _remoteFolder); return false; @@ -434,6 +452,7 @@ void OwncloudAdvancedSetupPage::setErrorString(const QString &err) _ui.errorLabel->setVisible(true); _ui.errorLabel->setText(err); } + _ocWizard->adjustSize(); _checking = false; emit completeChanged(); } @@ -456,6 +475,11 @@ void OwncloudAdvancedSetupPage::setRemoteFolder(const QString &remoteFolder) void OwncloudAdvancedSetupPage::slotSelectFolder() { QString dir = QFileDialog::getExistingDirectory(nullptr, tr("Local Sync Folder"), QDir::homePath()); + SyncDirValidator syncDirValidator(dir); + if (!syncDirValidator.isValidDir()) { + setErrorString(syncDirValidator.message()); + return; + } if (!dir.isEmpty()) { // TODO: remove when UX decision is made refreshVirtualFilesAvailibility(dir); @@ -474,6 +498,7 @@ void OwncloudAdvancedSetupPage::slotSelectiveSyncClicked() AccountPtr acc = dynamic_cast(wizard())->account(); auto *dlg = new SelectiveSyncDialog(acc, _remoteFolder, _selectiveSyncBlacklist, this); dlg->setAttribute(Qt::WA_DeleteOnClose); + dlg->setStyleSheet(QStringLiteral("background-color: %1;").arg(IonosTheme::dialogBackgroundColor())); connect(dlg, &SelectiveSyncDialog::finished, this, [this, dlg]{ const int result = dlg->result(); @@ -486,6 +511,14 @@ void OwncloudAdvancedSetupPage::slotSelectiveSyncClicked() if (result == QDialog::Accepted) { _selectiveSyncBlacklist = dlg->createBlackList(); updateBlacklist = true; + _ui.confCheckBoxExternal->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::loginWizardFontLightGrey() + )); + + _ui.confCheckBoxSize->setDisabled(true); } else if (result == QDialog::Rejected && _selectiveSyncBlacklist == QStringList("/")) { _selectiveSyncBlacklist = dlg->oldBlackList(); updateBlacklist = true; @@ -513,6 +546,8 @@ void OwncloudAdvancedSetupPage::slotSelectiveSyncClicked() }); dlg->open(); + + } void OwncloudAdvancedSetupPage::slotVirtualFileSyncClicked() @@ -524,6 +559,15 @@ void OwncloudAdvancedSetupPage::slotVirtualFileSyncClicked() setRadioChecked(_ui.rVirtualFileSync); }); } + + _ui.confCheckBoxExternal->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::loginWizardFontLightGrey() + )); + + _ui.confCheckBoxSize->setDisabled(true); } void OwncloudAdvancedSetupPage::slotSyncEverythingClicked() @@ -534,8 +578,16 @@ void OwncloudAdvancedSetupPage::slotSyncEverythingClicked() QString errorStr = checkLocalSpace(_rSize); setErrorString(errorStr); + + _ui.confCheckBoxExternal->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + )); } + void OwncloudAdvancedSetupPage::slotQuotaRetrieved(const QVariantMap &result) { _rSize = result["size"].toDouble(); @@ -575,16 +627,106 @@ void OwncloudAdvancedSetupPage::customizeStyle() } } + _ocWizard->setMinimumSize(QSize(626, 515)); + _ocWizard->setMaximumSize(QSize(626, 600)); + + _ui.mainHBox->setContentsMargins(0, 0, 0, 0); + _ui.wSyncStrategySynchronizeEverything->setContentsMargins(0, 0, 0, 0); + _ui.lVirtualFileSync->setContentsMargins(0, 0, 0, 0); + _ui.horizontalLayout_8->setContentsMargins(32, 0, 0, 0); + _ui.horizontalLayout_10->setContentsMargins(0, 8, 0, 0); + _ui.horizontalLayout_10->setMargin(1); + + _ui.wSyncStrategy->setSpacing(16); + _ui.wSyncStrategy->setContentsMargins(0, 0, 0, 0); + _ui.verticalLayout->setSpacing(0); + _ui.pbSelectLocalFolder->setMinimumSize(0, 40); + + _ui.serverVBox->setAlignment(Qt::AlignTop); + _ui.serverVBox->setSpacing(5); + _ui.serverVBox->setContentsMargins(0, 0, 0, 0); + + _ui.arrowVBox->setSpacing(0); + _ui.arrowVBox->setContentsMargins(0, 0, 0, 0); + _ui.arrowVBox->setAlignment(Qt::AlignTop); + + _ui.locationsVBox->setAlignment(Qt::AlignTop); + _ui.locationsVBox->setContentsMargins(0, 0, 0, 0); + _ui.locationsVBox->setSpacing(5); + + _ui.resolutionWidgetLayout->setContentsMargins(0, 0, 0, 0); + styleSyncLogo(); styleLocalFolderLabel(); + + setStyleSheet( + "QRadioButton {" + + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + "} QCheckBox {" + + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + "}" + ); + + _ui.userNameLabel->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + )); + + _ui.serverAddressLabel->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::loginWizardFontGrey() + )); + + _ui.localFolderDescriptionLabel->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + )); + + _filePathLabel->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::loginWizardFontGrey() + )); + + _ui.lFreeSpace->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::loginWizardFontGrey() + )); + + #ifdef Q_OS_MAC + _ui.syncModeLabel->setStyleSheet( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTitleWeight600(), + IonosTheme::titleColor() + ) + ); + #endif + } void OwncloudAdvancedSetupPage::styleLocalFolderLabel() { - const auto backgroundColor = palette().window().color(); - const auto folderIconFileName = Theme::instance()->isBranded() ? Theme::hidpiFileName("folder.png", backgroundColor) - : Theme::hidpiFileName(":/client/theme/colored/folder.png"); - _ui.lLocal->setPixmap(folderIconFileName); + const auto icon = QIcon(IonosTheme::folderIcon()); + _ui.lLocal->setPixmap(icon.pixmap(32)); } void OwncloudAdvancedSetupPage::setRadioChecked(QRadioButton *radio) @@ -603,8 +745,10 @@ void OwncloudAdvancedSetupPage::setRadioChecked(QRadioButton *radio) void OwncloudAdvancedSetupPage::styleSyncLogo() { - const auto syncArrowIcon = Theme::createColorAwareIcon(QLatin1String(":/client/theme/sync-arrow.svg"), palette()); - _ui.syncLogoLabel->setPixmap(syncArrowIcon.pixmap(QSize(50, 50))); + const auto syncArrowIcon = QIcon(IonosTheme::syncArrows()); + // const auto syncArrowIcon = Theme::createColorAwareIcon(QLatin1String(":/client/theme/sync-arrow.svg"), palette()); + _ui.syncLogoLabel->setPixmap(syncArrowIcon.pixmap(QSize(32,32))); + _ui.syncLogoLabel->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); } void OwncloudAdvancedSetupPage::setupResoultionWidget() diff --git a/src/gui/wizard/owncloudadvancedsetuppage.h b/src/gui/wizard/owncloudadvancedsetuppage.h index 2c0f23bb42b37..d078222de5768 100644 --- a/src/gui/wizard/owncloudadvancedsetuppage.h +++ b/src/gui/wizard/owncloudadvancedsetuppage.h @@ -82,6 +82,7 @@ private slots: void setResolutionGuiVisible(bool value); void setupResoultionWidget(); void fetchUserAvatar(); + void SetAvatarIcon(); void setUserInformation(); // TODO: remove when UX decision is made diff --git a/src/gui/wizard/owncloudadvancedsetuppage.ui b/src/gui/wizard/owncloudadvancedsetuppage.ui index 5f51a2d824e10..dc9eedfad6610 100644 --- a/src/gui/wizard/owncloudadvancedsetuppage.ui +++ b/src/gui/wizard/owncloudadvancedsetuppage.ui @@ -7,7 +7,7 @@ 0 0 912 - 633 + 635 @@ -19,14 +19,49 @@ Form - - + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 32 + 20 + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 52 + + + + + + true + 0 @@ -48,612 +83,633 @@ - + QLayout::SetFixedSize - - - - Avatar + + 65 + + + 65 + + + + + QLayout::SetFixedSize - - Qt::PlainText + + + + + 0 + 0 + + + + Avatar + + + Qt::PlainText + + + Qt::AlignCenter + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 0 + 8 + + + + + + + + + 0 + 0 + + + + Username + + + Qt::PlainText + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + Server address + + + Qt::PlainText + + + Qt::AlignHCenter|Qt::AlignTop + + + true + + + + + + + + + QLayout::SetFixedSize - - Qt::AlignCenter + + + + + 0 + 0 + + + + Sync Logo + + + Qt::PlainText + + + Qt::AlignHCenter|Qt::AlignTop + + + + + + + + + QLayout::SetFixedSize - + + + + + 0 + 0 + + + + + 0 + 32 + + + + &Local Folder + + + Qt::PlainText + + + Qt::AlignCenter + + + pbSelectLocalFolder + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 0 + 8 + + + + + + + + + 0 + 0 + + + + + true + + + + Local Folder + + + Qt::PlainText + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + Free space + + + Qt::PlainText + + + Qt::AlignCenter + + + true + + + + + + + + 0 + 4 + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 40 + 16 + + + + + + + + + 0 + 0 + + + + Choose different folder + + + true + + + false + + + + + + + + + + + + 0 + 4 + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 0 + 32 + + + + + + + + + + + + + 0 + 0 + + + + Synchronize everything from server + + + true + + + + + + + Size + + + Qt::PlainText + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 20 + 20 + + + + + + + + Ask before syncing folders larger than + + + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + 999999 + + + 99 + + + + + + + + MB + + + + Qt::PlainText + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Ask before syncing external storages + + + 32 + + + + + + + + + 8 + + + + + + 0 + 0 + + + + Choose what to sync + + + false + + + + + + + TextLabel + + + Qt::PlainText + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 0 + 0 + + + + Use virtual files !PLACEHOLDER! + + + false + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + - - + + + + + + + 0 + 4 + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 0 + 16 + + + + + + + + 6 + + + QLayout::SetMinimumSize + + + 0 + + + 2 + + + 0 + + + 0 + + + - + 0 0 - - &Local Folder - - - Qt::PlainText - - - Qt::AlignCenter - - - pbSelectLocalFolder - - - - - + 9 true - - Username - - - Qt::PlainText - - - Qt::AlignCenter - - - - - - - - true - + + 1 - Local Folder + Status message - Qt::PlainText + Qt::AutoText - Qt::AlignCenter + Qt::AlignLeading + + + true - - + + - + 0 0 - Choose different folder + Keep local data - + true - - false - - - + + - + 0 0 - - Free space - - - Qt::PlainText - - - Qt::AlignCenter - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Vertical + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + - - QSizePolicy::Expanding - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - Server address + Erase local folder and start a clean sync - - Qt::PlainText - - - Qt::AlignHCenter|Qt::AlignTop - - + true - - - - Sync Logo - - - Qt::PlainText - - - Qt::AlignCenter - - - - - - QLayout::SetMinimumSize + + + + 0 + 4 + - - 0 + + Qt::Vertical - - 0 + + QSizePolicy::Preferred - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 0 - - - 0 - - - - - 0 - - - 0 - - - - - 0 - - - - - Synchronize everything from server - - - true - - - - - - - Size - - - Qt::PlainText - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 0 - - - - - Qt::Horizontal - - - QSizePolicy::Minimum - - - - 20 - 20 - - - - - - - - Ask before syncing folders larger than - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - 999999 - - - 99 - - - - - - - MB - - - Qt::PlainText - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 0 - - - - - Qt::Horizontal - - - QSizePolicy::Minimum - - - - 20 - 20 - - - - - - - - Ask before syncing external storages - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 0 - - - - - - 0 - 0 - - - - - - - false - - - - - - - Choose what to sync - - - true - - - false - - - - - - - TextLabel - - - Qt::PlainText - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 0 - 0 - - - - Use virtual files !PLACEHOLDER! - - - false - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 0 - 0 - - - - - 6 - - - QLayout::SetMinimumSize - - - 0 - - - 2 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 9 - true - - - - 1 - - - Status message - - - Qt::AutoText - - - Qt::AlignCenter - - - false - - - - - - - - 0 - 0 - - - - Keep local data - - - true - - - - - - - - 0 - 0 - - - - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - - - Erase local folder and start a clean sync - - - true - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - + + + 0 + 16 + + + @@ -677,6 +733,22 @@ + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 32 + 20 + + + + diff --git a/src/gui/wizard/owncloudconnectionmethoddialog.cpp b/src/gui/wizard/owncloudconnectionmethoddialog.cpp index 2c4bd12a51067..285290d099868 100644 --- a/src/gui/wizard/owncloudconnectionmethoddialog.cpp +++ b/src/gui/wizard/owncloudconnectionmethoddialog.cpp @@ -23,6 +23,7 @@ OwncloudConnectionMethodDialog::OwncloudConnectionMethodDialog(QWidget *parent) , ui(new Ui::OwncloudConnectionMethodDialog) { ui->setupUi(this); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); connect(ui->btnNoTLS, &QAbstractButton::clicked, this, &OwncloudConnectionMethodDialog::returnNoTLS); connect(ui->btnClientSideTLS, &QAbstractButton::clicked, this, &OwncloudConnectionMethodDialog::returnClientSideTLS); diff --git a/src/gui/wizard/owncloudsetupnocredspage.ui b/src/gui/wizard/owncloudsetupnocredspage.ui index d67873450da94..8c01bd50cfe09 100644 --- a/src/gui/wizard/owncloudsetupnocredspage.ui +++ b/src/gui/wizard/owncloudsetupnocredspage.ui @@ -67,13 +67,13 @@ - + diff --git a/src/gui/wizard/owncloudsetuppage.cpp b/src/gui/wizard/owncloudsetuppage.cpp index a5374eb59fc3c..d26c6c09a7f65 100644 --- a/src/gui/wizard/owncloudsetuppage.cpp +++ b/src/gui/wizard/owncloudsetuppage.cpp @@ -77,7 +77,7 @@ OwncloudSetupPage::OwncloudSetupPage(QWidget *parent) void OwncloudSetupPage::setLogo() { - _ui.logoLabel->setPixmap(Theme::instance()->wizardApplicationLogo()); + //_ui.logoLabel->setPixmap(Theme::instance()->wizardApplicationLogo()); } void OwncloudSetupPage::setupServerAddressDescriptionLabel() @@ -237,7 +237,7 @@ bool OwncloudSetupPage::validatePage() QString u = url(); QUrl qurl(u); if (!qurl.isValid() || qurl.host().isEmpty()) { - setErrorString(tr("Server address does not seem to be valid"), false); + setConnectionError(tr("Server address does not seem to be valid"), false); return false; } @@ -264,41 +264,50 @@ void OwncloudSetupPage::setAuthType(DetermineAuthTypeJob::AuthType type) stopSpinner(); } +void OwncloudSetupPage::setConnectionError(const QString &err, bool retryHTTPonly) +{ + this->setVisible(true); + _ocWizard->button(QWizard::BackButton)->setHidden(false); + setErrorString(err, retryHTTPonly); +} + void OwncloudSetupPage::setErrorString(const QString &err, bool retryHTTPonly) { if (err.isEmpty()) { _ui.errorLabel->setVisible(false); } else { - if (retryHTTPonly) { - QUrl url(_ui.leUrl->fullText()); - if (url.scheme() == "https") { - // Ask the user how to proceed when connecting to a https:// URL fails. - // It is possible that the server is secured with client-side TLS certificates, - // but that it has no way of informing the owncloud client that this is the case. - - OwncloudConnectionMethodDialog dialog; - dialog.setUrl(url); - // FIXME: Synchronous dialogs are not so nice because of event loop recursion - int retVal = dialog.exec(); - - switch (retVal) { - case OwncloudConnectionMethodDialog::No_TLS: { - url.setScheme("http"); - _ui.leUrl->setFullText(url.toString()); - // skip ahead to next page, since the user would expect us to retry automatically - wizard()->next(); - } break; - case OwncloudConnectionMethodDialog::Client_Side_TLS: - addCertDial->show(); - break; - case OwncloudConnectionMethodDialog::Closed: - case OwncloudConnectionMethodDialog::Back: - default: - // No-op. - break; - } - } - } + //SES-84: Should only be shown in the Managed Cloud Client + + // if (retryHTTPonly) { + // QUrl url(_ui.leUrl->fullText()); + // if (url.scheme() == "https") { + // // Ask the user how to proceed when connecting to a https:// URL fails. + // // It is possible that the server is secured with client-side TLS certificates, + // // but that it has no way of informing the owncloud client that this is the case. + + // OwncloudConnectionMethodDialog dialog; + // dialog.setUrl(url); + // // FIXME: Synchronous dialogs are not so nice because of event loop recursion + // int retVal = dialog.exec(); + + // switch (retVal) { + // case OwncloudConnectionMethodDialog::No_TLS: { + // url.setScheme("http"); + // _ui.leUrl->setFullText(url.toString()); + // // skip ahead to next page, since the user would expect us to retry automatically + // wizard()->next(); + // } break; + // case OwncloudConnectionMethodDialog::Client_Side_TLS: + // addCertDial->show(); + // break; + // case OwncloudConnectionMethodDialog::Closed: + // case OwncloudConnectionMethodDialog::Back: + // default: + // // No-op. + // break; + // } + // } + // } _ui.errorLabel->setVisible(true); _ui.errorLabel->setText(err); @@ -362,7 +371,7 @@ void OwncloudSetupPage::slotStyleChanged() void OwncloudSetupPage::customizeStyle() { - setLogo(); + //setLogo(); if (_progressIndi) { const auto isDarkBackground = Theme::isDarkColor(palette().window().color()); diff --git a/src/gui/wizard/owncloudsetuppage.h b/src/gui/wizard/owncloudsetuppage.h index 06cea0753695e..e856f170dbb8b 100644 --- a/src/gui/wizard/owncloudsetuppage.h +++ b/src/gui/wizard/owncloudsetuppage.h @@ -59,6 +59,7 @@ class OwncloudSetupPage : public QWizardPage public slots: void setErrorString(const QString &, bool retryHTTPonly); + void setConnectionError(const QString &, bool retryHTTPonly); void startSpinner(); void stopSpinner(); void slotCertificateAccepted(); diff --git a/src/gui/wizard/owncloudwizard.cpp b/src/gui/wizard/owncloudwizard.cpp index 238286aa0accd..e8c31eec15a41 100644 --- a/src/gui/wizard/owncloudwizard.cpp +++ b/src/gui/wizard/owncloudwizard.cpp @@ -19,13 +19,15 @@ #include "theme.h" #include "owncloudgui.h" -#include "wizard/owncloudwizard.h" -#include "wizard/welcomepage.h" -#include "wizard/owncloudsetuppage.h" -#include "wizard/owncloudhttpcredspage.h" + +#include "ionostheme.h" +#include "wizard/flow2authcredspage.h" #include "wizard/owncloudadvancedsetuppage.h" +#include "wizard/owncloudhttpcredspage.h" +#include "wizard/owncloudsetuppage.h" +#include "wizard/owncloudwizard.h" #include "wizard/webviewpage.h" -#include "wizard/flow2authcredspage.h" +#include "wizard/welcomepage.h" #include "common/vfs.h" @@ -116,6 +118,9 @@ OwncloudWizard::OwncloudWizard(QWidget *parent) adjustWizardSize(); centerWindow(); + + // Set focus policy to prevent initial focus on the button + setFocusPolicy(Qt::StrongFocus); } void OwncloudWizard::centerWindow() @@ -130,20 +135,9 @@ void OwncloudWizard::centerWindow() wizardWindow->move(newWindowPosition); } - void OwncloudWizard::adjustWizardSize() { - const auto pageSizes = calculateWizardPageSizes(); - const auto currentPageIndex = currentId(); - - // If we can, just use the size of the current page - if(currentPageIndex > -1 && currentPageIndex < pageSizes.count()) { - resize(pageSizes.at(currentPageIndex)); - return; - } - - // As a backup, resize to largest page - resize(calculateLargestSizeOfWizardPages(pageSizes)); + setFixedSize(QSize(626, 460)); } QList OwncloudWizard::calculateWizardPageSizes() const @@ -322,6 +316,10 @@ void OwncloudWizard::slotCurrentPageChanged(int id) #endif // WITH_WEBENGINE id == WizardCommon::Page_Flow2AuthCreds) { setButtonLayout({ QWizard::BackButton, QWizard::Stretch }); + #ifdef APPLICATION_SERVER_URL_ENFORCE + button(QWizard::BackButton)->setHidden(true); + #endif + } else if (id == WizardCommon::Page_AdvancedSetup) { setButtonLayout({ QWizard::CustomButton2, QWizard::Stretch, QWizard::CustomButton1, QWizard::FinishButton }); setNextButtonAsDefault(); @@ -332,6 +330,11 @@ void OwncloudWizard::slotCurrentPageChanged(int id) if (id == WizardCommon::Page_ServerSetup) { emit clearPendingRequests(); + #ifdef APPLICATION_SERVER_URL_ENFORCE + _setupPage->setServerUrl(APPLICATION_SERVER_URL); + _setupPage->initializePage(); + button(QWizard::BackButton)->setHidden(true); + #endif } if (id == WizardCommon::Page_AdvancedSetup && _credentialsPage == _flow2CredsPage) { @@ -345,7 +348,7 @@ void OwncloudWizard::displayError(const QString &msg, bool retryHTTPonly) { switch (currentId()) { case WizardCommon::Page_ServerSetup: - _setupPage->setErrorString(msg, retryHTTPonly); + _setupPage->setConnectionError(msg, retryHTTPonly); break; case WizardCommon::Page_HttpCreds: @@ -406,8 +409,14 @@ void OwncloudWizard::customizeStyle() // Set background colors auto wizardPalette = palette(); - const auto backgroundColor = wizardPalette.color(QPalette::Window); + const auto backgroundColor = QColor(IonosTheme::dialogBackgroundColor()); + + // Set Color of upper part wizardPalette.setColor(QPalette::Base, backgroundColor); + + // Set Color of lower part + wizardPalette.setColor(backgroundRole(), backgroundColor); + // Set separator color wizardPalette.setColor(QPalette::Mid, backgroundColor); diff --git a/src/gui/wizard/slideshow.cpp b/src/gui/wizard/slideshow.cpp index 7423227211b32..5e263c8a47c1d 100644 --- a/src/gui/wizard/slideshow.cpp +++ b/src/gui/wizard/slideshow.cpp @@ -13,6 +13,8 @@ */ #include "slideshow.h" +#include "ionostheme.h" + #include #include #include @@ -21,14 +23,19 @@ namespace OCC { -static const int Spacing = 6; +static const int Spacing = IonosTheme::LoginPageSpacer(); static const int SlideDuration = 1000; static const int SlideDistance = 400; SlideShow::SlideShow(QWidget *parent) : QWidget(parent) { setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); - setStyleSheet(QStringLiteral("font: bold 18pt")); + setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::onboardingTitle(), + IonosTheme::settingsTitleWeight400(), + IonosTheme::titleColor() + )); } void SlideShow::addSlide(const QPixmap &pixmap, const QString &label) @@ -190,7 +197,7 @@ void SlideShow::maybeRestartTimer() } void SlideShow::drawSlide(QPainter *painter, int index) -{ +{ const auto label = _labels.value(index); const auto labelRect = style()->itemTextRect(fontMetrics(), rect(), diff --git a/src/gui/wizard/welcomepage.cpp b/src/gui/wizard/welcomepage.cpp index 1228f51599d87..ecdf8fe525995 100644 --- a/src/gui/wizard/welcomepage.cpp +++ b/src/gui/wizard/welcomepage.cpp @@ -13,11 +13,12 @@ */ #include "welcomepage.h" +#include "buttonstyle.h" #include "guiutility.h" #include "theme.h" +#include "ui_welcomepage.h" #include "wizard/owncloudwizard.h" #include "wizard/slideshow.h" -#include "ui_welcomepage.h" namespace OCC { @@ -47,36 +48,23 @@ void WelcomePage::initializePage() void WelcomePage::setLoginButtonDefault() { +#ifdef Q_OS_WIN _ui->loginButton->setDefault(true); +#endif _ui->loginButton->setFocus(); } void WelcomePage::styleSlideShow() { - const auto theme = Theme::instance(); - const auto backgroundColor = palette().window().color(); - - const auto wizardNextcloudIconFileName = theme->isBranded() ? Theme::hidpiFileName("wizard-nextcloud.png", backgroundColor) - : Theme::hidpiFileName(":/client/theme/colored/wizard-nextcloud.png"); - const auto wizardFilesIconFileName = theme->isBranded() ? Theme::hidpiFileName("wizard-files.png", backgroundColor) - : Theme::hidpiFileName(":/client/theme/colored/wizard-files.png"); - const auto wizardGroupwareIconFileName = theme->isBranded() ? Theme::hidpiFileName("wizard-groupware.png", backgroundColor) - : Theme::hidpiFileName(":/client/theme/colored/wizard-groupware.png"); - const auto wizardTalkIconFileName = theme->isBranded() ? Theme::hidpiFileName("wizard-talk.png", backgroundColor) - : Theme::hidpiFileName(":/client/theme/colored/wizard-talk.png"); - - _ui->slideShow->addSlide(wizardNextcloudIconFileName, tr("Keep your data secure and under your control")); - _ui->slideShow->addSlide(wizardFilesIconFileName, tr("Secure collaboration & file exchange")); - _ui->slideShow->addSlide(wizardGroupwareIconFileName, tr("Easy-to-use web mail, calendaring & contacts")); - _ui->slideShow->addSlide(wizardTalkIconFileName, tr("Screensharing, online meetings & web conferences")); + const auto ionosLogoFileName = Theme::hidpiFileName(":/client/theme/colored/IONOS_logo_w_suffix_frontend.png"); - const auto isDarkBackground = Theme::isDarkColor(backgroundColor); - _ui->slideShowNextButton->setIcon(theme->uiThemeIcon(QString("control-next.svg"), isDarkBackground)); - _ui->slideShowPreviousButton->setIcon(theme->uiThemeIcon(QString("control-prev.svg"), isDarkBackground)); + _ui->slideShow->addSlide(ionosLogoFileName, tr("Keep your data secure and under your control")); } void WelcomePage::setupSlideShow() { + _ui->slideShowNextButton->hide(); + _ui->slideShowPreviousButton->hide(); connect(_ui->slideShow, &SlideShow::clicked, _ui->slideShow, &SlideShow::stopShow); connect(_ui->slideShowNextButton, &QPushButton::clicked, _ui->slideShow, &SlideShow::nextSlide); connect(_ui->slideShowPreviousButton, &QPushButton::clicked, _ui->slideShow, &SlideShow::prevSlide); @@ -84,14 +72,16 @@ void WelcomePage::setupSlideShow() void WelcomePage::setupLoginButton() { + _ui->loginButton->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Primary)); connect(_ui->loginButton, &QPushButton::clicked, this, [this](bool /*checked*/) { _nextPage = WizardCommon::Page_ServerSetup; - _ocWizard->next(); + _ocWizard->next(); }); } void WelcomePage::setupCreateAccountButton() { + _ui->createAccountButton->hide(); #ifdef WITH_WEBENGINE connect(_ui->createAccountButton, &QPushButton::clicked, this, [this](bool /*checked*/) { _ocWizard->setRegistration(true); @@ -108,8 +98,9 @@ void WelcomePage::setupCreateAccountButton() void WelcomePage::setupHostYourOwnServerLabel() { + _ui->hostYourOwnServerLabel->hide(); _ui->hostYourOwnServerLabel->setText(tr("Host your own server")); - _ui->hostYourOwnServerLabel->setAlignment(Qt::AlignCenter); + _ui->hostYourOwnServerLabel->setAlignment(Qt::AlignCenter); _ui->hostYourOwnServerLabel->setUrl(QUrl("https://docs.nextcloud.com/server/latest/admin_manual/installation/#installation")); } @@ -120,6 +111,8 @@ int WelcomePage::nextId() const void WelcomePage::customizeStyle() { + _ocWizard->setFixedSize(626, 460); + _ui->mainHbox->setContentsMargins(0, 0, 0, 0); styleSlideShow(); } } diff --git a/src/gui/wizard/welcomepage.ui b/src/gui/wizard/welcomepage.ui index e2e920aa315d3..84f0aae879145 100644 --- a/src/gui/wizard/welcomepage.ui +++ b/src/gui/wizard/welcomepage.ui @@ -1,229 +1,298 @@ - OCC::WelcomePage - - - - 0 - 0 - 500 - 500 - - - - - 0 - 0 - - - - Form - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 80 - - - - - - - - 0 - - - - - - 40 - 16777215 - - - - - - - false - - - false - - - true - - - - - - - - 12 - 75 - true - - - - - - - - - 40 - 16777215 - - - - - - - false - - - false - - - true - - - - - - - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 0 - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Log in - - - true - - - true - - - - - - - Sign up with provider - - - true - - - false - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - OCC::SlideShow - QWidget -
wizard/slideshow.h
-
- - OCC::LinkLabel - QWidget -
wizard/linklabel.h
- 1 -
-
- - + OCC::WelcomePage + + + + 0 + 0 + 626 + 450 + + + + + 0 + 0 + + + + Form + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 118 + 20 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 90 + + + + + + + + 0 + + + + + + 40 + 16777215 + + + + + + + false + + + false + + + true + + + + + + + + 12 + true + + + + + -1 + -1 + + + + + + + + + 40 + 16777215 + + + + + + + false + + + false + + + true + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 90 + + + + + + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 0 + + + 10 + + + + + Qt::Vertical + + + QSizePolicy::MinimumExpanding + + + + 20 + 80 + + + + + + + + Log in + + + true + + + true + + + + + + + Sign up with provider + + + true + + + false + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 48 + + + + + + + + + + Qt::Horizontal + + + + 40 + 0 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 0 + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 118 + 20 + + + + + + + + + OCC::SlideShow + QWidget +
wizard/slideshow.h
+
+ + OCC::LinkLabel + QWidget +
wizard/linklabel.h
+ 1 +
+
+ +
From ee74a6f6744d69f904eeb2411d960085470ad6a9 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:24:58 +0100 Subject: [PATCH 009/104] style tray --- resources.qrc | 6 + src/gui/tray/AccountMenuItem.qml | 41 ++ src/gui/tray/ActivityActionButton.qml | 2 +- src/gui/tray/ActivityItem.qml | 4 +- src/gui/tray/ActivityItemActions.qml | 3 +- src/gui/tray/ActivityItemContent.qml | 53 +- src/gui/tray/ActivityList.qml | 11 +- src/gui/tray/CallNotificationDialog.qml | 4 +- src/gui/tray/CustomButton.qml | 3 +- src/gui/tray/EditFileLocallyLoadingDialog.qml | 2 +- src/gui/tray/EnforcedPlainTextLabel.qml | 1 - src/gui/tray/HeaderButton.qml | 52 +- src/gui/tray/HeaderLogo.qml | 34 ++ src/gui/tray/NCBusyIndicator.qml | 8 +- src/gui/tray/NCButtonContents.qml | 1 + src/gui/tray/SesButtonContents.qml | 73 +++ src/gui/tray/SesCustomButton.qml | 75 +++ src/gui/tray/SyncStatus.qml | 30 +- src/gui/tray/TalkReplyTextField.qml | 2 +- src/gui/tray/TrayFoldersMenuButton.qml | 49 +- src/gui/tray/TrayWindowAccountMenu.qml | 285 ++++++++++ src/gui/tray/TrayWindowHeaderBar.qml | 171 ++++++ src/gui/tray/UnifiedSearchInputContainer.qml | 2 +- src/gui/tray/UnifiedSearchResultListItem.qml | 2 +- .../tray/UnifiedSearchResultSectionItem.qml | 2 +- src/gui/tray/UserLine.qml | 139 +++-- src/gui/tray/Window.qml | 512 ++---------------- src/gui/tray/activitylistmodel.cpp | 21 +- src/gui/tray/asyncimageresponse.h | 4 +- src/gui/tray/usermodel.cpp | 48 +- src/gui/tray/usermodel.h | 2 + 31 files changed, 968 insertions(+), 674 deletions(-) create mode 100644 src/gui/tray/AccountMenuItem.qml create mode 100644 src/gui/tray/HeaderLogo.qml create mode 100644 src/gui/tray/SesButtonContents.qml create mode 100644 src/gui/tray/SesCustomButton.qml create mode 100644 src/gui/tray/TrayWindowAccountMenu.qml create mode 100644 src/gui/tray/TrayWindowHeaderBar.qml diff --git a/resources.qrc b/resources.qrc index 7222e8c9ff0e7..f8599430d2d61 100644 --- a/resources.qrc +++ b/resources.qrc @@ -39,7 +39,9 @@ src/gui/tray/UnifiedSearchResultNothingFound.qml src/gui/tray/UnifiedSearchResultSectionItem.qml src/gui/tray/CustomButton.qml + src/gui/tray/SesCustomButton.qml src/gui/tray/NCButtonContents.qml + src/gui/tray/SesButtonContents.qml src/gui/tray/NCButtonBackground.qml src/gui/tray/TextButtonContents.qml src/gui/tray/ActivityItemContextMenu.qml @@ -53,6 +55,10 @@ src/gui/tray/NCToolTip.qml src/gui/tray/NCProgressBar.qml src/gui/tray/EnforcedPlainTextLabel.qml + src/gui/tray/TrayWindowHeaderBar.qml + src/gui/tray/TrayWindowAccountMenu.qml + src/gui/tray/HeaderLogo.qml + src/gui/tray/AccountMenuItem.qml theme/Style/Style.qml theme/Style/qmldir src/gui/filedetails/NCRadioButton.qml diff --git a/src/gui/tray/AccountMenuItem.qml b/src/gui/tray/AccountMenuItem.qml new file mode 100644 index 0000000000000..0d427221d72a7 --- /dev/null +++ b/src/gui/tray/AccountMenuItem.qml @@ -0,0 +1,41 @@ +import QtQuick 2.15 +import QtQuick.Window 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 + +// Custom qml modules are in /theme (and included by resources.qrc) +import Style 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 + +MenuItem { + id: accountMenuItem + + property bool isHovered: accountMenuItem.hovered || accountMenuItem.visualFocus + property bool isActive: accountMenuItem.pressed + + font.pixelSize: Style.sesFontPixelSize + hoverEnabled: true + leftPadding: Style.sesMediumMargin + topPadding: Style.sesAccountMenuItemPadding + bottomPadding: Style.sesAccountMenuItemPadding + spacing: Style.sesSmallMargin + + icon.height: Style.smallIconSize + icon.width: Style.smallIconSize + icon.color: Style.sesIconDarkColor + + background: Item { + height: parent.height + width: parent.menu.width + Rectangle { + radius: 0 + anchors.fill: parent + anchors.margins: 1 + color: accountMenuItem.isActive ? Style.sesButtonPressed : accountMenuItem.isHovered ? Style.sesAccountMenuHover : "transparent" + } + } + + Accessible.role: Accessible.MenuItem + Accessible.name: text + Accessible.onPressAction: accountMenuItem.clicked() +} \ No newline at end of file diff --git a/src/gui/tray/ActivityActionButton.qml b/src/gui/tray/ActivityActionButton.qml index 1682bb2936438..c2c6171da8e41 100644 --- a/src/gui/tray/ActivityActionButton.qml +++ b/src/gui/tray/ActivityActionButton.qml @@ -1,7 +1,7 @@ import QtQuick 2.15 import QtQuick.Controls 2.3 import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 AbstractButton { id: root diff --git a/src/gui/tray/ActivityItem.qml b/src/gui/tray/ActivityItem.qml index 2cac0580b9798..adf3de8495694 100644 --- a/src/gui/tray/ActivityItem.qml +++ b/src/gui/tray/ActivityItem.qml @@ -3,11 +3,13 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 ItemDelegate { id: root + leftPadding: Style.sesActivityItemDistanceToFrame + rightPadding: Style.sesActivityItemDistanceToFrame property Flickable flickable property int iconSize: Style.trayListItemIconSize diff --git a/src/gui/tray/ActivityItemActions.qml b/src/gui/tray/ActivityItemActions.qml index a44fc9880ee15..91f57036a5e77 100644 --- a/src/gui/tray/ActivityItemActions.qml +++ b/src/gui/tray/ActivityItemActions.qml @@ -3,7 +3,7 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 Repeater { id: root @@ -46,7 +46,6 @@ Repeater { textColor: Style.adjustedCurrentUserHeaderColor textColorHovered: Style.currentUserHeaderTextColor - contentsFont.bold: true bgColor: Style.currentUserHeaderColor visible: verb !== "REPLY" || (verb === "REPLY" && root.talkReplyButtonVisible) diff --git a/src/gui/tray/ActivityItemContent.qml b/src/gui/tray/ActivityItemContent.qml index 795a490d916e2..f3870e4c28b42 100644 --- a/src/gui/tray/ActivityItemContent.qml +++ b/src/gui/tray/ActivityItemContent.qml @@ -4,7 +4,7 @@ import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import QtGraphicalEffects 1.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 RowLayout { id: root @@ -26,12 +26,12 @@ RowLayout { Item { id: thumbnailItem - readonly property int imageWidth: width * (1 - Style.thumbnailImageSizeReduction) - readonly property int imageHeight: height * (1 - Style.thumbnailImageSizeReduction) + readonly property int imageWidth: Style.sesIconSize + readonly property int imageHeight: Style.sesIconSize readonly property int thumbnailRadius: model.thumbnail && model.thumbnail.isUserAvatar ? width / 2 : 3 - implicitWidth: root.iconSize - implicitHeight: model.thumbnail && model.thumbnail.isMimeTypeIcon ? root.iconSize * 0.9 : root.iconSize + implicitWidth: Style.sesIconSize + implicitHeight: Style.sesIconSize Loader { id: thumbnailImageLoader @@ -45,8 +45,8 @@ RowLayout { Image { id: thumbnailImage - width: thumbnailItem.imageWidth - height: thumbnailItem.imageHeight + width: Style.sesIconSize + height: Style.sesIconSize anchors.verticalCenter: parent.verticalCenter anchors.left: parent.left cache: true @@ -78,8 +78,9 @@ RowLayout { Image { id: activityIcon - width: model.thumbnail !== undefined ? parent.width * 0.4 : thumbnailItem.imageWidth - height: model.thumbnail !== undefined ? width : width * 0.9 + + width: model.thumbnail !== undefined ? Style.sesIconSize * 0.6 : Style.sesIconSize + height: model.thumbnail !== undefined ? Style.sesIconSize * 0.6 : Style.sesIconSize // Prevent bad access into unloaded item properties readonly property int thumbnailPaintedWidth: thumbnailImageLoader.item ? thumbnailImageLoader.item.paintedWidth : 0 @@ -116,8 +117,8 @@ RowLayout { Layout.fillHeight: true Layout.fillWidth: true - Layout.maximumWidth: root.width - Style.standardSpacing - root.iconSize - implicitWidth: root.width - Style.standardSpacing - root.iconSize + Layout.maximumWidth: root.width - Style.standardSpacing - root.iconSize + Style.sesActivityItemWidthModifier + implicitWidth: root.width - Style.standardSpacing - root.iconSize + Style.sesActivityItemWidthModifier spacing: Style.smallSpacing @@ -136,7 +137,7 @@ RowLayout { elide: Text.ElideRight wrapMode: Text.Wrap maximumLineCount: 2 - font.pixelSize: Style.topLinePixelSize + font: root.font visible: text !== "" } @@ -152,30 +153,39 @@ RowLayout { height: (text === "") ? 0 : implicitHeight text: root.activityData.dateTime - font.pixelSize: Style.subLinePixelSize - color: palette.midlight + font.family: Style.sesOpenSansRegular + font.pixelSize: Style.sesFontHintPixelSize + color: Style.sesTrayFontColor visible: text !== "" } CustomButton { id: fileDetailsButton + property bool isHovered: fileDetailsButton.hovered || fileDetailsButton.visualFocus + property bool isActive: fileDetailsButton.pressed + Layout.preferredWidth: Style.dismissButtonSize Layout.preferredHeight: Style.dismissButtonSize Layout.alignment: Qt.AlignTop | Qt.AlignRight - icon.source: "image://svgimage-custom-color/more.svg/" + palette.buttonText + icon.source: "image://svgimage-custom-color/more.svg/" + (isHovered ? Style.sesWhite : Style.sesActionHover) NCToolTip { text: qsTr("Open file details") visible: parent.hovered } + background: Rectangle { + anchors.fill: parent + anchors.margins: 1 + color: parent.isActive ? Style.sesActionPressed : parent.isHovered ? Style.sesActionHover : "transparent" + radius: width / 2 + } + display: Button.IconOnly leftPadding: 0 rightPadding: 0 - bgColor: palette.mid - bgNormalOpacity: 0 visible: model.showFileDetails @@ -228,8 +238,9 @@ RowLayout { height: (text === "") ? 0 : implicitHeight elide: Text.ElideRight wrapMode: Text.Wrap - maximumLineCount: 2 - font.pixelSize: Style.subLinePixelSize + maximumLineCount: 10 + font.family: Style.sesOpenSansRegular + font.pixelSize: Style.sesFontHintPixelSize visible: text !== "" } @@ -248,8 +259,8 @@ RowLayout { elide: Text.ElideRight wrapMode: Text.Wrap maximumLineCount: 2 - font.pixelSize: Style.topLinePixelSize - color: palette.midlight + font: root.font + color: Style.sesTrayFontColor visible: text !== "" } diff --git a/src/gui/tray/ActivityList.qml b/src/gui/tray/ActivityList.qml index 150e6483b3c46..034ffa794f910 100644 --- a/src/gui/tray/ActivityList.qml +++ b/src/gui/tray/ActivityList.qml @@ -2,7 +2,7 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 as NC +import com.ionos.hidrivenext.desktopclient 1.0 as NC ScrollView { id: controlRoot @@ -65,7 +65,7 @@ ScrollView { highlight: Rectangle { id: activityHover anchors.fill: activityList.currentItem - color: palette.highlight + color: Style.sesHover radius: Style.mediumRoundedButtonRadius visible: activityList.activeFocus } @@ -126,14 +126,15 @@ ScrollView { verticalAlignment: Image.AlignVCenter horizontalAlignment: Image.AlignHCenter fillMode: Image.PreserveAspectFit - source: "image://svgimage-custom-color/activity.svg/" + palette.midlight + source: "image://svgimage-custom-color/activity.svg/" + sourceSize.height: 32 + sourceSize.width: 22 } EnforcedPlainTextLabel { width: parent.width text: qsTr("No activities yet") - color: palette.midlight - font.bold: true + color: Style.sesDarkBlue wrapMode: Text.Wrap horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter diff --git a/src/gui/tray/CallNotificationDialog.qml b/src/gui/tray/CallNotificationDialog.qml index dd3d2a9f0b0a8..e1bf24b46472d 100644 --- a/src/gui/tray/CallNotificationDialog.qml +++ b/src/gui/tray/CallNotificationDialog.qml @@ -16,7 +16,7 @@ import QtQuick 2.15 import QtQuick.Window 2.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import QtQuick.Layouts 1.2 import QtMultimedia 5.15 import QtQuick.Controls 2.15 @@ -239,7 +239,6 @@ ApplicationWindow { visible: isAnswerCallButton text: modelData.label - contentsFont.bold: true bgColor: Style.ncBlue bgNormalOpacity: 0.8 @@ -266,7 +265,6 @@ ApplicationWindow { CustomButton { id: declineCall text: qsTr("Decline") - contentsFont.bold: true bgColor: Style.errorBoxBackgroundColor bgNormalOpacity: 0.8 diff --git a/src/gui/tray/CustomButton.qml b/src/gui/tray/CustomButton.qml index f57c065c935b1..a5fb1bc88bf9d 100644 --- a/src/gui/tray/CustomButton.qml +++ b/src/gui/tray/CustomButton.qml @@ -28,7 +28,7 @@ Button { property color textColor: palette.buttonText property color textColorHovered: textColor - property alias contentsFont: contents.font + property alias contentsFont: root.font property alias bgColor: bgRectangle.color property alias bgNormalColor: bgRectangle.normalColor @@ -50,6 +50,7 @@ Button { NCToolTip { text: root.toolTipText visible: root.toolTipText !== "" && root.hovered + font: contentsFont } contentItem: NCButtonContents { diff --git a/src/gui/tray/EditFileLocallyLoadingDialog.qml b/src/gui/tray/EditFileLocallyLoadingDialog.qml index c453279f2650e..19c253b196c5e 100644 --- a/src/gui/tray/EditFileLocallyLoadingDialog.qml +++ b/src/gui/tray/EditFileLocallyLoadingDialog.qml @@ -1,7 +1,7 @@ import QtQuick 2.15 import QtQuick.Window 2.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 diff --git a/src/gui/tray/EnforcedPlainTextLabel.qml b/src/gui/tray/EnforcedPlainTextLabel.qml index f47692c2c84e1..d27a9a27c28e6 100644 --- a/src/gui/tray/EnforcedPlainTextLabel.qml +++ b/src/gui/tray/EnforcedPlainTextLabel.qml @@ -22,7 +22,6 @@ Label { textFormat = Text.PlainText; } } - textFormat: Text.PlainText onTextFormatChanged: resetToPlainText() Component.onCompleted: resetToPlainText() diff --git a/src/gui/tray/HeaderButton.qml b/src/gui/tray/HeaderButton.qml index 3d16aa3509617..55dc3bf8e837f 100644 --- a/src/gui/tray/HeaderButton.qml +++ b/src/gui/tray/HeaderButton.qml @@ -21,12 +21,12 @@ import QtQuick.Layouts 1.15 // Custom qml modules are in /theme (and included by resources.qrc) import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 Button { id: root - display: AbstractButton.IconOnly + display: AbstractButton.TextUnderIcon flat: true hoverEnabled: Style.hoverEffectsEnabled @@ -34,27 +34,51 @@ Button { icon.height: Style.headerButtonIconSize Layout.alignment: Qt.AlignRight - Layout.preferredWidth: Style.trayWindowHeaderHeight - Layout.preferredHeight: Style.trayWindowHeaderHeight + Layout.preferredWidth: Style.sesHeaderButtonWidth + Layout.preferredHeight: Style.sesHeaderButtonHeight + + property bool isHovered: root.hovered || root.visualFocus + property bool isActive: root.pressed background: Rectangle { - color: root.hovered || root.visualFocus ? Style.currentUserHeaderTextColor : "transparent" - opacity: 0.2 + width: Style.sesHeaderButtonWidth + height: Style.sesHeaderButtonHeight + color: root.isActive ? Style.sesButtonPressed : root.isHovered ? Style.sesAccountMenuHover : "transparent" + radius: Style.sesCornerRadius } contentItem: Item { - anchors.fill: parent - + id: rootContent + Image { - id: internalImage - anchors.centerIn: parent - width: root.icon.width - height: root.icon.height + id: buttonIcon + anchors.horizontalCenter: rootContent.horizontalCenter + anchors.top: rootContent.top + anchors.topMargin: 10 + + property int imageWidth: root.icon.width + property int imageHeight: root.icon.height + cache: true + source: root.icon.source sourceSize { - width: root.icon.width - height: root.icon.height + width: imageWidth + height: imageHeight } + + width: imageWidth + height: imageHeight + + anchors.verticalCenter: parent + } + + Text { + anchors.horizontalCenter: buttonIcon.horizontalCenter + anchors.top: buttonIcon.bottom + anchors.topMargin: 5 + font: root.font + text: root.text + color: Style.sesTrayFontColor } } } diff --git a/src/gui/tray/HeaderLogo.qml b/src/gui/tray/HeaderLogo.qml new file mode 100644 index 0000000000000..ee7b9ee008351 --- /dev/null +++ b/src/gui/tray/HeaderLogo.qml @@ -0,0 +1,34 @@ +import QtQuick 2.15 +import QtQuick.Window 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 +import QtGraphicalEffects 1.15 +import Qt.labs.platform 1.1 as NativeDialogs + +import "../" + +// Custom qml modules are in /theme (and included by resources.qrc) +import Style 1.0 + +import com.ionos.hidrivenext.desktopclient 1.0 + +Rectangle { + Image{ + id: trayWindowLogo + cache: false + source: Style.sesIonosLogoIcon + sourceSize: Qt.size(width, height) + fillMode: Image.PreserveAspectFit + anchors{ + top: parent.top + left: parent.left + bottom: parent.bottom + topMargin: Style.sesHeaderLogoTopMargin + leftMargin: Style.sesHeaderLogoTopMargin + bottomMargin: Style.sesHeaderLogoTopMargin + + } + } + + color: Style.sesSelectedColor +} \ No newline at end of file diff --git a/src/gui/tray/NCBusyIndicator.qml b/src/gui/tray/NCBusyIndicator.qml index 973d3dee1ed62..bf8664ca5f5d4 100644 --- a/src/gui/tray/NCBusyIndicator.qml +++ b/src/gui/tray/NCBusyIndicator.qml @@ -22,9 +22,6 @@ BusyIndicator { property color color: palette.midlight property string imageSource: "image://svgimage-custom-color/change.svg/" - property int imageSourceSizeWidth: 64 - property int imageSourceSizeHeight: 64 - contentItem: Image { id: contentImage @@ -34,9 +31,8 @@ BusyIndicator { verticalAlignment: Image.AlignVCenter source: colourableImage ? root.imageSource + root.color : root.imageSource - sourceSize.width: root.imageSourceSizeWidth - sourceSize.height: root.imageSourceSizeHeight - fillMode: Image.PreserveAspectFit + width: Style.sesIconSize + height: Style.sesIconSize mipmap: true diff --git a/src/gui/tray/NCButtonContents.qml b/src/gui/tray/NCButtonContents.qml index f469f168ec344..d5662ee61951c 100644 --- a/src/gui/tray/NCButtonContents.qml +++ b/src/gui/tray/NCButtonContents.qml @@ -57,6 +57,7 @@ RowLayout { id: buttonLabel Layout.fillWidth: true + font: root.font text: root.text diff --git a/src/gui/tray/SesButtonContents.qml b/src/gui/tray/SesButtonContents.qml new file mode 100644 index 0000000000000..d27b0316daba3 --- /dev/null +++ b/src/gui/tray/SesButtonContents.qml @@ -0,0 +1,73 @@ +/* + * Copyright (C) by Claudio Cambra + * + * 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 2 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. + */ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 +import QtGraphicalEffects 1.15 + +import Style 1.0 + +RowLayout { + id: root + + property bool hovered: false + property string imageSourceHover: "" + property string imageSource: "" + property int imageSourceWidth: undefined + property int imageSourceHeight: undefined + property string text: "" + property var display + + property color textColor: palette.buttonText + property color textColorHovered: textColor + property alias font: buttonLabel.font + + height: parent.height + + EnforcedPlainTextLabel { + id: buttonLabel + + Layout.alignment: Qt.AlignVCenter + + text: root.text + + visible: root.text !== "" + + color: root.hovered ? root.textColorHovered : root.textColor + + elide: Text.ElideRight + } + + Image { + id: icon + + Layout.alignment: Qt.AlignVCenter + + source: root.hovered ? root.imageSourceHover : root.imageSource + + sourceSize { + width: root.imageSourceWidth + height: root.imageSourceHeight + } + + fillMode: Image.PreserveAspectFit + visible: root.display === Button.TextOnly ? false : root.hovered ? root.imageSourceHover !== "" : root.imageSource !== "" + + layer.enabled: true + layer.effect: ColorOverlay { + color: Style.sesWhite + } + } +} \ No newline at end of file diff --git a/src/gui/tray/SesCustomButton.qml b/src/gui/tray/SesCustomButton.qml new file mode 100644 index 0000000000000..0f61857f01a28 --- /dev/null +++ b/src/gui/tray/SesCustomButton.qml @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2022 by Oleksandr Zolotov + * + * 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 2 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. + */ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 +import Style 1.0 + +Button { + id: root + + property string imageSourceHover: root.icon.source + property var iconItem: icon + + property string toolTipText: "" + + property color textColor: palette.buttonText + property color textColorHovered: textColor + + property alias contentsFont: root.font + + property alias bgColor: bgRectangle.color + property alias bgNormalColor: bgRectangle.normalColor + property alias bgHoverColor: bgRectangle.hoverColor + property alias bgNormalOpacity: bgRectangle.normalOpacity + property alias bgHoverOpacity: bgRectangle.hoverOpacity + + property int bgBorderWidth + property string bgBorderColor + + background: NCButtonBackground { + id: bgRectangle + hovered: root.hovered + height: 36 + border.width: root.bgBorderWidth + border.color: root.bgBorderColor + } + + leftPadding: root.text === "" ? Style.smallSpacing : 20 + rightPadding: root.text === "" ? Style.smallSpacing : 20 + + implicitHeight: 36 + implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding + + hoverEnabled: true + + NCToolTip { + text: root.toolTipText + visible: root.toolTipText !== "" && root.hovered + } + + contentItem: SesButtonContents { + id: contents + display: root.display + hovered: root.hovered + imageSourceHover: root.imageSourceHover + imageSource: root.icon.source + imageSourceWidth: 12 + imageSourceHeight: 16 + text: root.text + textColor: root.textColor + textColorHovered: root.textColorHovered + } +} diff --git a/src/gui/tray/SyncStatus.qml b/src/gui/tray/SyncStatus.qml index 25d4f69115a3a..37a6b773f80da 100644 --- a/src/gui/tray/SyncStatus.qml +++ b/src/gui/tray/SyncStatus.qml @@ -4,7 +4,7 @@ import QtQuick.Layouts 1.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 as NC +import com.ionos.hidrivenext.desktopclient 1.0 as NC RowLayout { id: root @@ -19,18 +19,11 @@ RowLayout { NCBusyIndicator { id: syncIcon - property int size: Style.trayListItemIconSize * 0.6 - property int whiteSpace: (Style.trayListItemIconSize - size) - - Layout.preferredWidth: size - Layout.preferredHeight: size - Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter Layout.topMargin: 16 - Layout.rightMargin: whiteSpace * (0.5 + Style.thumbnailImageSizeReduction) + Layout.rightMargin: 0 Layout.bottomMargin: 16 - Layout.leftMargin: Style.trayHorizontalMargin + (whiteSpace * (0.5 - Style.thumbnailImageSizeReduction)) - + Layout.leftMargin: Style.sesActivityItemDistanceToFrame padding: 0 imageSource: syncStatus.syncIcon @@ -40,10 +33,11 @@ RowLayout { ColumnLayout { id: syncProgressLayout - Layout.alignment: Qt.AlignVCenter + Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter Layout.topMargin: 8 - Layout.rightMargin: Style.trayHorizontalMargin + Layout.rightMargin: Style.sesActivityItemDistanceToFrame Layout.bottomMargin: 8 + Layout.leftMargin: 0 Layout.fillWidth: true Layout.fillHeight: true @@ -54,8 +48,7 @@ RowLayout { text: syncStatus.syncStatusString verticalAlignment: Text.AlignVCenter - font.pixelSize: Style.topLinePixelSize - font.bold: true + font: root.font wrapMode: Text.Wrap } @@ -80,7 +73,7 @@ RowLayout { text: syncStatus.syncStatusDetailString visible: syncStatus.syncStatusDetailString !== "" color: palette.midlight - font.pixelSize: Style.subLinePixelSize + font: root.font wrapMode: Text.Wrap } } @@ -100,13 +93,9 @@ RowLayout { padding: Style.smallSpacing textColor: Style.adjustedCurrentUserHeaderColor textColorHovered: Style.currentUserHeaderTextColor - contentsFont.bold: true bgColor: Style.currentUserHeaderColor - visible: !activityModel.hasSyncConflicts && - !syncStatus.syncing && - NC.UserModel.currentUser.hasLocalFolder && - NC.UserModel.currentUser.isConnected + visible: false // SES-4 removed enabled: visible onClicked: { if(!syncStatus.syncing) { @@ -125,7 +114,6 @@ RowLayout { text: qsTr("Resolve conflicts") textColor: Style.adjustedCurrentUserHeaderColor textColorHovered: Style.currentUserHeaderTextColor - contentsFont.bold: true bgColor: Style.currentUserHeaderColor visible: activityModel.hasSyncConflicts && diff --git a/src/gui/tray/TalkReplyTextField.qml b/src/gui/tray/TalkReplyTextField.qml index 3cc1f867af097..f84d4d381918c 100644 --- a/src/gui/tray/TalkReplyTextField.qml +++ b/src/gui/tray/TalkReplyTextField.qml @@ -2,7 +2,7 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 TextField { diff --git a/src/gui/tray/TrayFoldersMenuButton.qml b/src/gui/tray/TrayFoldersMenuButton.qml index 6295edda893fa..3f34345f06a91 100644 --- a/src/gui/tray/TrayFoldersMenuButton.qml +++ b/src/gui/tray/TrayFoldersMenuButton.qml @@ -27,6 +27,11 @@ HeaderButton { required property var currentUser property bool userHasGroupFolders: currentUser.groupFolders.length > 0 + icon.source: Style.sesFilesIcon + icon.color: Style.sesIconColor + + text: qsTr("Files") + function openMenu() { foldersMenuLoader.openMenu() } @@ -60,23 +65,14 @@ HeaderButton { contentItem: Item { id: rootContent - anchors.fill: parent - - Item { - id: contentContainer - anchors.centerIn: parent - - implicitWidth: openLocalFolderButtonCaretIconLoader.active ? openLocalFolderButtonIcon.width + openLocalFolderButtonCaretIconLoader.width : openLocalFolderButtonIcon.width - implicitHeight: openLocalFolderButtonIcon.height - Image { id: folderStateIndicator - visible: root.currentUser.hasLocalFolder + visible: root.currentUser.hasLocalFolder && false // SES-50 Hide Indicator till we have a proper implementation source: root.currentUser.isConnected ? Style.stateOnlineImageSource : Style.stateOfflineImageSource cache: false anchors.bottom: openLocalFolderButtonIcon.bottom - anchors.bottomMargin: Style.trayFoldersMenuButtonStateIndicatorBottomOffset + anchors.bottomMargin: -5 anchors.right: openLocalFolderButtonIcon.right sourceSize.width: Style.folderStateIndicatorSize sourceSize.height: Style.folderStateIndicatorSize @@ -85,16 +81,6 @@ HeaderButton { Accessible.name: root.currentUser.isConnected ? qsTr("Connected") : qsTr("Disconnected") z: 1 - Rectangle { - id: folderStateIndicatorBackground - width: Style.folderStateIndicatorSize + Style.trayFolderStatusIndicatorSizeOffset - height: width - anchors.centerIn: parent - color: Style.currentUserHeaderColor - radius: width * Style.trayFolderStatusIndicatorRadiusFactor - z: -2 - } - Rectangle { id: folderStateIndicatorBackgroundMouseHover width: Style.folderStateIndicatorSize + Style.trayFolderStatusIndicatorSizeOffset @@ -110,12 +96,15 @@ HeaderButton { Image { id: openLocalFolderButtonIcon - property int imageWidth: rootContent.width * Style.trayFoldersMenuButtonMainIconSizeFraction - property int imageHeight: rootContent.width * Style.trayFoldersMenuButtonMainIconSizeFraction + anchors.horizontalCenter: rootContent.horizontalCenter + anchors.top: rootContent.top + anchors.topMargin: 10 + property int imageWidth: root.icon.width + property int imageHeight: root.icon.height cache: true - source: "image://svgimage-custom-color/folder.svg/" + Style.currentUserHeaderTextColor + source: root.icon.source sourceSize { width: imageWidth height: imageHeight @@ -124,9 +113,17 @@ HeaderButton { width: imageWidth height: imageHeight - anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenter: parent } + Text { + anchors.horizontalCenter: openLocalFolderButtonIcon.horizontalCenter + anchors.top: openLocalFolderButtonIcon.bottom + anchors.topMargin: 5 + text: root.text + font: root.font + color: Style.sesTrayFontColor + } Loader { id: openLocalFolderButtonCaretIconLoader @@ -154,9 +151,7 @@ HeaderButton { width: openLocalFolderButtonCaretIconLoader.imageWidth height: openLocalFolderButtonCaretIconLoader.imageHeight - } - } } Loader { diff --git a/src/gui/tray/TrayWindowAccountMenu.qml b/src/gui/tray/TrayWindowAccountMenu.qml new file mode 100644 index 0000000000000..2d7d2367e8747 --- /dev/null +++ b/src/gui/tray/TrayWindowAccountMenu.qml @@ -0,0 +1,285 @@ +import QtQuick 2.15 +import QtQuick.Window 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 +import QtGraphicalEffects 1.15 +import Qt.labs.platform 1.1 as NativeDialogs + +import "../" +import "../filedetails/" + +// Custom qml modules are in /theme (and included by resources.qrc) +import Style 1.0 + +import com.ionos.hidrivenext.desktopclient 1.0 + +Button { + id: currentAccountButton + + display: AbstractButton.IconOnly + flat: true + + Accessible.role: Accessible.ButtonMenu + Accessible.name: qsTr("Current account") + Accessible.onPressAction: currentAccountButton.clicked() + + property bool isHovered: currentAccountButton.hovered || currentAccountButton.visualFocus + property bool isActive: currentAccountButton.pressed + + background: Rectangle { + color: currentAccountButton.isActive ? Style.sesButtonPressed : + currentAccountButton.isHovered ? Style.sesAccountMenuHover : + accountMenu.visible? Style.sesSelectedColor : "transparent" + radius: Style.sesCornerRadius + } + + // We call open() instead of popup() because we want to position it + // exactly below the dropdown button, not the mouse + onClicked: { + syncPauseButton.text = Systray.syncIsPaused ? qsTr("Resume sync for all") : qsTr("Pause sync for all") + if (accountMenu.visible) { + accountMenu.close() + } else { + accountMenu.open() + } + } + + onVisibleChanged: { + // HACK: reload account Instantiator immediately by restting it - could be done better I guess + // see also id:accountMenu below + userLineInstantiator.active = false; + userLineInstantiator.active = true; + } + + Menu { + id: accountMenu + + // x coordinate grows towards the right + // y coordinate grows towards the bottom + x: (currentAccountButton.x + 2) + y: (currentAccountButton.y + Style.trayWindowHeaderHeight + 2) + + width: Style.sesAccountMenuWidth + height: Math.min(implicitHeight, maxMenuHeight) + closePolicy: Menu.CloseOnPressOutsideParent | Menu.CloseOnEscape + + clip: true + + background: Rectangle { + border.color: Style.sesBorderColor + color: Style.sesWhite + radius: Style.sesCornerRadius + } + + contentItem: ScrollView { + id: accMenuScrollView + ScrollBar.horizontal.policy: ScrollBar.AlwaysOff + + data: WheelHandler { + target: accMenuScrollView.contentItem + } + ListView { + implicitHeight: contentHeight + model: accountMenu.contentModel + interactive: true + clip: true + currentIndex: accountMenu.currentIndex + } + } + + onClosed: { + // HACK: reload account Instantiator immediately by restting it - could be done better I guess + // see also onVisibleChanged above + userLineInstantiator.active = false; + userLineInstantiator.active = true; + } + + Instantiator { + id: userLineInstantiator + model: UserModel + delegate: UserLine { + onShowUserStatusSelector: { + userStatusDrawer.openUserStatusDrawer(model.index); + accountMenu.close(); + } + onClicked: UserModel.currentUserId = model.index; + } + onObjectAdded: accountMenu.insertItem(index, object) + onObjectRemoved: accountMenu.removeItem(object) + } + + Rectangle { + anchors.left: parent.left + anchors.right: parent.right + implicitHeight: 1 + color: Style.sesBorderColor + } + + AccountMenuItem{ + id: addAccountButton + icon.source: Style.sesDarkPlus + text: qsTr("Add account") + onClicked: UserModel.addAccount() + visible: Systray.enableAddAccount + } + + Rectangle { + anchors.left: parent.left + anchors.right: parent.right + implicitHeight: 1 + color: Style.sesBorderColor + } + + AccountMenuItem{ + id: syncPauseButton + onClicked: Systray.syncIsPaused = !Systray.syncIsPaused + icon.source: Systray.syncIsPaused ? Style.sesAccountResume : Style.sesAccountPause + } + + AccountMenuItem{ + id: settingsButton + text: qsTr("Settings") + onClicked: Systray.openSettings() + icon.source: Style.sesAccountSettings + } + + AccountMenuItem{ + id: exitButton + text: qsTr("Exit") + onClicked: Systray.shutdown() + icon.source: Style.sesAccountQuit + } + } + + RowLayout { + id: accountControlRowLayout + + height: Style.sesAccountButtonHeight + width: Style.sesAccountButtonWidth + spacing: 0 + + Image { + id: currentAccountAvatar + + Layout.leftMargin: Style.sesAccountButtonLeftMargin + verticalAlignment: Qt.AlignCenter + cache: false + source: Style.sesAvatar + Accessible.role: Accessible.Graphic + Accessible.name: qsTr("Current account avatar") + + Rectangle { + id: currentAccountStatusIndicatorBackground + // SES-50 Remove Inidcator + // visible: UserModel.currentUser.isConnected + // && UserModel.currentUser.serverHasUserStatus + visible: false + width: Style.accountAvatarStateIndicatorSize + + Style.trayFolderStatusIndicatorSizeOffset + height: width + anchors.bottom: currentAccountAvatar.bottom + anchors.right: currentAccountAvatar.right + anchors.bottomMargin: -5 + anchors.rightMargin: -5 + color: Style.currentUserHeaderColor + radius: width * Style.trayFolderStatusIndicatorRadiusFactor + } + + Rectangle { + id: currentAccountStatusIndicatorMouseHover + // SES-50 Remove Inidcator + // visible: UserModel.currentUser.isConnected + // && UserModel.currentUser.serverHasUserStatus + visible: false + width: Style.accountAvatarStateIndicatorSize + + Style.trayFolderStatusIndicatorSizeOffset + height: width + anchors.bottom: currentAccountAvatar.bottom + anchors.right: currentAccountAvatar.right + anchors.bottomMargin: -5 + anchors.rightMargin: -5 + color: currentAccountButton.hovered ? Style.sesHover : "transparent" + opacity: Style.trayFolderStatusIndicatorMouseHoverOpacityFactor + radius: width * Style.trayFolderStatusIndicatorRadiusFactor + } + + Image { + id: currentAccountStatusIndicator + // SES-50 Remove Inidcator + // visible: UserModel.currentUser.isConnected + // && UserModel.currentUser.serverHasUserStatus + visible: false + source: UserModel.currentUser.statusIcon + cache: false + x: currentAccountStatusIndicatorBackground.x + 1 + y: currentAccountStatusIndicatorBackground.y + 1 + sourceSize.width: Style.accountAvatarStateIndicatorSize + sourceSize.height: Style.accountAvatarStateIndicatorSize + + Accessible.role: Accessible.Indicator + Accessible.name: UserModel.desktopNotificationsAllowed ? qsTr("Current account status is online") : qsTr("Current account status is do not disturb") + } + } + + Column { + id: accountLabels + spacing: 0 + Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter + Layout.leftMargin: Style.sesSmallMargin + Layout.fillWidth: true + Layout.maximumWidth: parent.width + + EnforcedPlainTextLabel { + id: currentAccountUser + Layout.alignment: Qt.AlignLeft | Qt.AlignBottom + width: Style.sesAccountLabelWidth + text: UserModel.currentUser.name + elide: Text.ElideRight + color: Style.currentUserHeaderTextColor + font: root.font + } + + RowLayout { + id: currentUserStatus + visible: UserModel.currentUser.isConnected && + UserModel.currentUser.serverHasUserStatus + spacing: Style.accountLabelsSpacing + width: parent.width + + EnforcedPlainTextLabel { + id: emoji + visible: UserModel.currentUser.statusEmoji !== "" + width: Style.userStatusEmojiSize + text: UserModel.currentUser.statusEmoji + } + EnforcedPlainTextLabel { + id: message + Layout.alignment: Qt.AlignLeft | Qt.AlignBottom + Layout.fillWidth: true + visible: UserModel.currentUser.statusMessage !== "" + width: Style.currentAccountLabelWidth + text: UserModel.currentUser.statusMessage !== "" + ? UserModel.currentUser.statusMessage + : UserModel.currentUser.server + elide: Text.ElideRight + color: Style.currentUserHeaderTextColor + } + } + } + + ColorOverlay { + cached: true + color: Style.currentUserHeaderTextColor + width: source.width + height: source.height + Layout.rightMargin: Style.sesAccountButtonRightMargin + source: Image { + Layout.alignment: Qt.AlignRight + verticalAlignment: Qt.AlignCenter + source: Style.sesChevron + sourceSize.width: 12 + sourceSize.height: 7 + Accessible.role: Accessible.PopupMenu + Accessible.name: qsTr("Account switcher and settings menu") + } + } + } +} \ No newline at end of file diff --git a/src/gui/tray/TrayWindowHeaderBar.qml b/src/gui/tray/TrayWindowHeaderBar.qml new file mode 100644 index 0000000000000..e03af08bc67a6 --- /dev/null +++ b/src/gui/tray/TrayWindowHeaderBar.qml @@ -0,0 +1,171 @@ +import QtQuick 2.15 +import QtQuick.Window 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 +import QtGraphicalEffects 1.15 +import Qt.labs.platform 1.1 as NativeDialogs + +import "../" +import "../filedetails/" + +// Custom qml modules are in /theme (and included by resources.qrc) +import Style 1.0 + +import com.ionos.hidrivenext.desktopclient 1.0 + + +Rectangle { + + height: Style.trayWindowHeaderHeight + color: Style.sesWhite + radius: 0.0 + + RowLayout { + id: trayWindowHeaderLayout + + anchors.fill: parent + anchors.leftMargin: 20 + anchors.rightMargin: 20 + + TrayWindowAccountMenu{ + Layout.preferredWidth: Style.currentAccountButtonWidth + Layout.preferredHeight: Style.trayWindowHeaderHeight + } + + HeaderButton { + id: trayWindowWebsiteButton + + icon.source: Style.sesWebsiteIcon + icon.color: Style.sesIconColor + onClicked: UserModel.openCurrentAccountServer() + + text: qsTr("Website") + + Accessible.role: Accessible.Button + Accessible.name: qsTr("Open Nextcloud in browser") + Accessible.onPressAction: trayWindowWebsiteButton.clicked() + + Layout.alignment: Qt.AlignRight + Layout.preferredWidth: Style.trayWindowHeaderHeight + Layout.preferredHeight: Style.trayWindowHeaderHeight + } + + TrayFoldersMenuButton { + id: openLocalFolderButton + + visible: currentUser.hasLocalFolder + currentUser: UserModel.currentUser + + + onClicked: openLocalFolderButton.userHasGroupFolders ? openLocalFolderButton.toggleMenuOpen() : UserModel.openCurrentAccountLocalFolder() + + onFolderEntryTriggered: isGroupFolder ? UserModel.openCurrentAccountFolderFromTrayInfo(fullFolderPath) : UserModel.openCurrentAccountLocalFolder() + + Accessible.role: Accessible.Graphic + Accessible.name: qsTr("Open local or group folders") + Accessible.onPressAction: openLocalFolderButton.userHasGroupFolders ? openLocalFolderButton.toggleMenuOpen() : UserModel.openCurrentAccountLocalFolder() + + Layout.alignment: Qt.AlignRight + Layout.preferredWidth: Style.trayWindowHeaderHeight + Layout.preferredHeight: Style.trayWindowHeaderHeight + } + + HeaderButton { + id: trayWindowTalkButton + + visible: false //SES-4 removed + icon.source: "qrc:///client/theme/white/talk-app.svg" + icon.color: Style.currentUserHeaderTextColor + onClicked: UserModel.openCurrentAccountTalk() + + Accessible.role: Accessible.Button + Accessible.name: qsTr("Open Nextcloud Talk in browser") + Accessible.onPressAction: trayWindowTalkButton.clicked() + + Layout.alignment: Qt.AlignRight + Layout.preferredWidth: Style.trayWindowHeaderHeight + Layout.preferredHeight: Style.trayWindowHeaderHeight + + } + + HeaderButton { + id: trayWindowAppsButton + icon.source: "qrc:///client/theme/white/more-apps.svg" + icon.color: Style.currentUserHeaderTextColor + + visible: false //SES-4 removed + + onClicked: { + if(appsMenuListView.count <= 0) { + UserModel.openCurrentAccountServer() + } else if (appsMenu.visible) { + appsMenu.close() + } else { + appsMenu.open() + } + } + + Accessible.role: Accessible.ButtonMenu + Accessible.name: qsTr("More apps") + Accessible.onPressAction: trayWindowAppsButton.clicked() + + Menu { + id: appsMenu + x: Style.trayWindowMenuOffsetX + y: (trayWindowAppsButton.y + trayWindowAppsButton.height + Style.trayWindowMenuOffsetY) + width: Style.trayWindowWidth * Style.trayWindowMenuWidthFactor + height: implicitHeight + y > Style.trayWindowHeight ? Style.trayWindowHeight - y : implicitHeight + closePolicy: Menu.CloseOnPressOutsideParent | Menu.CloseOnEscape + + background: Rectangle { + border.color: Style.sesBorderColor + color: Style.sesWhite + radius: 2 + } + + contentItem: ScrollView { + id: appsMenuScrollView + ScrollBar.horizontal.policy: ScrollBar.AlwaysOff + + data: WheelHandler { + target: appsMenuScrollView.contentItem + } + ListView { + id: appsMenuListView + implicitHeight: contentHeight + model: UserAppsModel + interactive: true + clip: true + currentIndex: appsMenu.currentIndex + delegate: MenuItem { + id: appEntry + anchors.left: parent.left + anchors.right: parent.right + + text: model.appName + font.pixelSize: Style.topLinePixelSize + icon.source: model.appIconUrl + icon.color: Style.ncTextColor + onTriggered: UserAppsModel.openAppUrl(appUrl) + hoverEnabled: true + + background: Item { + height: parent.height + width: parent.width + Rectangle { + anchors.fill: parent + anchors.margins: 1 + color: parent.parent.hovered || parent.parent.visualFocus ? Style.sesHover : "transparent" + } + } + + Accessible.role: Accessible.MenuItem + Accessible.name: qsTr("Open %1 in browser").arg(model.appName) + Accessible.onPressAction: appEntry.triggered() + } + } + } + } + } + } +} // Rectangle trayWindowHeaderBackground diff --git a/src/gui/tray/UnifiedSearchInputContainer.qml b/src/gui/tray/UnifiedSearchInputContainer.qml index c6493176d6f51..4ceb546e222b2 100644 --- a/src/gui/tray/UnifiedSearchInputContainer.qml +++ b/src/gui/tray/UnifiedSearchInputContainer.qml @@ -18,7 +18,7 @@ import QtQuick.Controls 2.15 import QtGraphicalEffects 1.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 TextField { id: trayWindowUnifiedSearchTextField diff --git a/src/gui/tray/UnifiedSearchResultListItem.qml b/src/gui/tray/UnifiedSearchResultListItem.qml index f8a025572d5ed..4da6f09d0ce7a 100644 --- a/src/gui/tray/UnifiedSearchResultListItem.qml +++ b/src/gui/tray/UnifiedSearchResultListItem.qml @@ -16,7 +16,7 @@ import QtQml 2.15 import QtQuick 2.15 import QtQuick.Controls 2.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 MouseArea { id: unifiedSearchResultMouseArea diff --git a/src/gui/tray/UnifiedSearchResultSectionItem.qml b/src/gui/tray/UnifiedSearchResultSectionItem.qml index 1637424f7f09d..61c8a4042a9b0 100644 --- a/src/gui/tray/UnifiedSearchResultSectionItem.qml +++ b/src/gui/tray/UnifiedSearchResultSectionItem.qml @@ -17,7 +17,7 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 EnforcedPlainTextLabel { required property string section diff --git a/src/gui/tray/UserLine.qml b/src/gui/tray/UserLine.qml index a546cf5573072..a81c8509c8c38 100644 --- a/src/gui/tray/UserLine.qml +++ b/src/gui/tray/UserLine.qml @@ -19,11 +19,14 @@ import QtQuick.Layouts 1.15 // Custom qml modules are in /theme (and included by resources.qrc) import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 AbstractButton { id: userLine + property bool isHovered: userLine.hovered || userLine.visualFocus + property bool isActive: userLine.pressed + signal showUserStatusSelector(int id) property variant dialog; @@ -32,58 +35,32 @@ AbstractButton { Accessible.role: Accessible.MenuItem Accessible.name: qsTr("Switch to account") + " " + model.name - height: Style.trayWindowHeaderHeight + height: Style.sesAccountMenuHeight + + leftPadding: Style.sesMediumMargin + topPadding: Style.sesSmallMargin + bottomPadding: Style.sesSmallMargin background: Rectangle { + radius: 0 anchors.fill: parent anchors.margins: 1 - color: (userLine.hovered || userLine.visualFocus) && - !(userMoreButton.hovered || userMoreButton.visualFocus) ? - palette.highlight : palette.base + color: userLine.isHovered && !userMoreButton.isHovered ? Style.sesAccountMenuHover : "transparent" } contentItem: RowLayout { id: userLineLayout - spacing: Style.userStatusSpacing + spacing: Style.sesSmallMargin Image { id: accountAvatar - Layout.leftMargin: 7 verticalAlignment: Qt.AlignCenter cache: false - source: model.avatar !== "" ? model.avatar : Theme.darkMode ? "image://avatars/fallbackWhite" : "image://avatars/fallbackBlack" - Layout.preferredHeight: Style.accountAvatarSize - Layout.preferredWidth: Style.accountAvatarSize - - Rectangle { - id: accountStatusIndicatorBackground - visible: model.isConnected && model.serverHasUserStatus - width: accountStatusIndicator.sourceSize.width + 2 - height: width - anchors.bottom: accountAvatar.bottom - anchors.right: accountAvatar.right - color: userLine.hovered || userLine.visualFocus ? "#f6f6f6" : "white" - radius: width*0.5 - } - - Image { - id: accountStatusIndicator - visible: model.isConnected && model.serverHasUserStatus - source: model.statusIcon - cache: false - x: accountStatusIndicatorBackground.x + 1 - y: accountStatusIndicatorBackground.y + 1 - sourceSize.width: Style.accountAvatarStateIndicatorSize - sourceSize.height: Style.accountAvatarStateIndicatorSize - - Accessible.role: Accessible.Indicator - Accessible.name: model.desktopNotificationsAllowed ? qsTr("Current account status is online") : qsTr("Current account status is do not disturb") - } + source: Style.sesAvatar } ColumnLayout { id: accountLabels - Layout.leftMargin: Style.accountLabelsSpacing Layout.fillWidth: true Layout.fillHeight: true @@ -94,8 +71,7 @@ AbstractButton { verticalAlignment: Text.AlignBottom text: name elide: Text.ElideRight - font.pixelSize: Style.topLinePixelSize - font.bold: true + font: root.font } RowLayout { @@ -119,28 +95,25 @@ AbstractButton { visible: model.statusMessage !== "" text: statusMessage elide: Text.ElideRight - font.pixelSize: Style.subLinePixelSize + font: root.font leftPadding: Style.accountLabelsSpacing } } - - EnforcedPlainTextLabel { - id: accountServer - Layout.fillWidth: true - Layout.alignment: Qt.AlignLeft | Qt.AlignTop - verticalAlignment: Text.AlignTop - text: server - elide: Text.ElideRight - font.pixelSize: Style.subLinePixelSize - } } Button { id: userMoreButton Layout.preferredWidth: Style.headerButtonIconSize - Layout.fillHeight: true + Layout.preferredHeight: Layout.preferredWidth + Layout.rightMargin: Style.sesMediumMargin flat: true + property bool isHovered: userMoreButton.hovered || userMoreButton.visualFocus + property bool isActive: userMoreButton.pressed || userMoreButtonMenu.visible + + icon.source: "qrc:///client/theme/more.svg" + icon.color: userMoreButton.isActive || userMoreButton.isHovered ? Style.sesWhite : Style.sesIconDarkColor + Accessible.role: Accessible.ButtonMenu Accessible.name: qsTr("Account actions") Accessible.onPressAction: userMoreButtonMouseArea.clicked() @@ -149,32 +122,43 @@ AbstractButton { background: Rectangle { anchors.fill: parent anchors.margins: 1 - color: userMoreButton.hovered || userMoreButton.visualFocus ? palette.highlight : "transparent" - } - - contentItem: Image { - anchors.fill: parent - source: "image://svgimage-custom-color/more.svg" + "/" + palette.buttonText - fillMode: Image.PreserveAspectFit + color: userMoreButton.isActive ? Style.sesActionPressed : userMoreButton.isHovered ? Style.sesActionHover : "transparent" + radius: width / 2 } AutoSizingMenu { id: userMoreButtonMenu closePolicy: Menu.CloseOnPressOutsideParent | Menu.CloseOnEscape + background: Rectangle { + radius: Style.sesCornerRadius + border.color: Style.sesBorderColor + } + MenuItem { - visible: model.isConnected && model.serverHasUserStatus + visible: false height: visible ? implicitHeight : 0 text: qsTr("Set status") - font.pixelSize: Style.topLinePixelSize + font: root.font palette.windowText: Style.ncTextColor hoverEnabled: true onClicked: showUserStatusSelector(index) } MenuItem { + id: logInOutButton + + property bool isHovered: logInOutButton.hovered || logInOutButton.visualFocus + property bool isActive: logInOutButton.pressed + + icon.source: Style.sesLogout + icon.color: Style.sesIconDarkColor + leftPadding: Style.sesMediumMargin + topPadding: Style.sesAccountMenuItemPadding + bottomPadding: Style.sesAccountMenuItemPadding + spacing: Style.sesSmallMargin text: model.isConnected ? qsTr("Log out") : qsTr("Log in") - font.pixelSize: Style.topLinePixelSize + font: root.font palette.windowText: Style.ncTextColor hoverEnabled: true onClicked: { @@ -186,29 +170,32 @@ AbstractButton { height: parent.height width: parent.menu.width Rectangle { + radius: 0 anchors.fill: parent anchors.margins: 1 - color: parent.parent.hovered ? palette.highlight : "transparent" + color: logInOutButton.isActive ? Style.sesButtonPressed : + logInOutButton.isHovered ? Style.sesAccountMenuHover : "transparent" } } - Accessible.role: Accessible.Button + Accessible.role: Accessible.MenuItem Accessible.name: model.isConnected ? qsTr("Log out") : qsTr("Log in") - - onPressed: { - if (model.isConnected) { - UserModel.logout(index) - } else { - UserModel.login(index) - } - accountMenu.close() - } } MenuItem { + + property bool isHovered: removeAccountButton.hovered || removeAccountButton.visualFocus + property bool isActive: removeAccountButton.pressed + id: removeAccountButton + icon.source: Style.sesDelete + icon.color: Style.sesIconDarkColor + leftPadding: Style.sesMediumMargin + topPadding: Style.sesAccountMenuItemPadding + bottomPadding: Style.sesAccountMenuItemPadding + spacing: Style.sesSmallMargin text: qsTr("Remove account") - font.pixelSize: Style.topLinePixelSize + font: root.font palette.windowText: Style.ncTextColor hoverEnabled: true onClicked: { @@ -220,17 +207,19 @@ AbstractButton { height: parent.height width: parent.menu.width Rectangle { + radius: 0 anchors.fill: parent anchors.margins: 1 - color: parent.parent.hovered ? palette.highlight : "transparent" + color: removeAccountButton.isActive ? Style.sesButtonPressed : + removeAccountButton.isHovered ? Style.sesAccountMenuHover : "transparent" } } - Accessible.role: Accessible.Button + Accessible.role: Accessible.MenuItem Accessible.name: text Accessible.onPressAction: removeAccountButton.clicked() } } } } -} // MenuItem userLine +} // MenuItem userLine \ No newline at end of file diff --git a/src/gui/tray/Window.qml b/src/gui/tray/Window.qml index 7d94526c14b6b..72d0491aa9458 100644 --- a/src/gui/tray/Window.qml +++ b/src/gui/tray/Window.qml @@ -21,22 +21,27 @@ import Qt.labs.platform 1.1 as NativeDialogs import "../" import "../filedetails/" +import "../SesComponents/" // Custom qml modules are in /theme (and included by resources.qrc) import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 ApplicationWindow { id: trayWindow title: Systray.windowTitle // If the main dialog is displayed as a regular window we want it to be quadratic - width: Systray.useNormalWindow ? Style.trayWindowHeight : Style.trayWindowWidth + width: Systray.useNormalWindow ? Style.trayWindowHeight : Style.sesTrayWindowWidth height: Style.trayWindowHeight color: "transparent" flags: Systray.useNormalWindow ? Qt.Window : Qt.Dialog | Qt.FramelessWindowHint + font.family: Style.sesOpenSansRegular + font.pixelSize: Style.sesFontPixelSize + font.weight: Style.sesFontBoldWeight + // TODO: Rather than setting all these palette colours manually, // create a custom style and do it for all components globally palette { @@ -71,16 +76,10 @@ ApplicationWindow { onClosing: Systray.isOpen = false - onVisibleChanged: { - // HACK: reload account Instantiator immediately by restting it - could be done better I guess - // see also id:accountMenu below - userLineInstantiator.active = false; - userLineInstantiator.active = true; - syncStatus.model.load(); - } + onVisibleChanged: syncStatus.model.load() background: Rectangle { - radius: Systray.useNormalWindow ? 0.0 : Style.trayWindowRadius + radius: 0.0 border.width: Style.trayWindowBorderWidth border.color: palette.dark color: palette.window @@ -142,7 +141,7 @@ ApplicationWindow { maskSource: Rectangle { width: trayWindow.width height: trayWindow.height - radius: Systray.useNormalWindow ? 0.0 : Style.trayWindowRadius + radius: 0.0 } } @@ -159,7 +158,7 @@ ApplicationWindow { radius: Systray.useNormalWindow ? 0.0 : Style.trayWindowRadius border.width: Style.trayWindowBorderWidth border.color: palette.dark - color: palette.window + color: "red"//palette.window } property int userIndex: 0 @@ -256,470 +255,33 @@ ApplicationWindow { Accessible.role: Accessible.Grouping Accessible.name: qsTr("Nextcloud desktop main dialog") - Rectangle { - id: trayWindowHeaderBackground - - anchors.left: trayWindowMainItem.left - anchors.right: trayWindowMainItem.right - anchors.top: trayWindowMainItem.top - height: Style.trayWindowHeaderHeight - color: Style.currentUserHeaderColor - - RowLayout { - id: trayWindowHeaderLayout - - spacing: 0 - anchors.fill: parent - - Button { - id: currentAccountButton - - Layout.preferredWidth: Style.currentAccountButtonWidth - Layout.preferredHeight: Style.trayWindowHeaderHeight - display: AbstractButton.IconOnly - flat: true - - Accessible.role: Accessible.ButtonMenu - Accessible.name: qsTr("Current account") - Accessible.onPressAction: currentAccountButton.clicked() - - // We call open() instead of popup() because we want to position it - // exactly below the dropdown button, not the mouse - onClicked: { - syncPauseButton.text = Systray.syncIsPaused ? qsTr("Resume sync for all") : qsTr("Pause sync for all") - if (accountMenu.visible) { - accountMenu.close() - } else { - accountMenu.open() - } - } - - Menu { - id: accountMenu - - // x coordinate grows towards the right - // y coordinate grows towards the bottom - x: (currentAccountButton.x + 2) - y: (currentAccountButton.y + Style.trayWindowHeaderHeight + 2) - - width: (Style.currentAccountButtonWidth - 2) - height: Math.min(implicitHeight, maxMenuHeight) - closePolicy: Menu.CloseOnPressOutsideParent | Menu.CloseOnEscape - - background: Rectangle { - border.color: palette.dark - color: palette.base - radius: Style.currentAccountButtonRadius - } - - onClosed: { - // HACK: reload account Instantiator immediately by restting it - could be done better I guess - // see also onVisibleChanged above - userLineInstantiator.active = false; - userLineInstantiator.active = true; - } - - Instantiator { - id: userLineInstantiator - model: UserModel - delegate: UserLine { - onShowUserStatusSelector: { - userStatusDrawer.openUserStatusDrawer(model.index); - accountMenu.close(); - } - onClicked: UserModel.currentUserId = model.index; - } - onObjectAdded: accountMenu.insertItem(index, object) - onObjectRemoved: accountMenu.removeItem(object) - } - - MenuItem { - id: addAccountButton - height: Systray.enableAddAccount ? Style.addAccountButtonHeight : 0 - hoverEnabled: true - visible: Systray.enableAddAccount - - background: Item { - height: parent.height - width: parent.menu.width - Rectangle { - anchors.fill: parent - anchors.margins: 1 - color: parent.parent.hovered || parent.parent.visualFocus ? palette.highlight : "transparent" - } - } - - RowLayout { - anchors.fill: parent - spacing: 0 - - Image { - Layout.leftMargin: 12 - verticalAlignment: Qt.AlignCenter - source: Theme.darkMode ? "qrc:///client/theme/white/add.svg" : "qrc:///client/theme/black/add.svg" - sourceSize.width: Style.headerButtonIconSize - sourceSize.height: Style.headerButtonIconSize - } - EnforcedPlainTextLabel { - Layout.leftMargin: 14 - text: qsTr("Add account") - font.pixelSize: Style.topLinePixelSize - } - // Filler on the right - Item { - Layout.fillWidth: true - Layout.fillHeight: true - } - } - onClicked: UserModel.addAccount() - - Accessible.role: Accessible.MenuItem - Accessible.name: qsTr("Add new account") - Accessible.onPressAction: addAccountButton.clicked() - } - - Rectangle { - anchors.left: parent.left - anchors.right: parent.right - implicitHeight: 1 - color: palette.dark - } - - MenuItem { - id: syncPauseButton - font.pixelSize: Style.topLinePixelSize - hoverEnabled: true - onClicked: Systray.syncIsPaused = !Systray.syncIsPaused - - background: Item { - height: parent.height - width: parent.menu.width - Rectangle { - anchors.fill: parent - anchors.margins: 1 - color: parent.parent.hovered || parent.parent.visualFocus ? palette.highlight : "transparent" - } - } - - Accessible.role: Accessible.MenuItem - Accessible.name: Systray.syncIsPaused ? qsTr("Resume sync for all") : qsTr("Pause sync for all") - Accessible.onPressAction: syncPauseButton.clicked() - } - - MenuItem { - id: settingsButton - text: qsTr("Settings") - font.pixelSize: Style.topLinePixelSize - hoverEnabled: true - onClicked: Systray.openSettings() - - background: Item { - height: parent.height - width: parent.menu.width - Rectangle { - anchors.fill: parent - anchors.margins: 1 - color: parent.parent.hovered || parent.parent.visualFocus ? palette.highlight : "transparent" - } - } - - Accessible.role: Accessible.MenuItem - Accessible.name: text - Accessible.onPressAction: settingsButton.clicked() - } - - MenuItem { - id: exitButton - text: qsTr("Exit"); - font.pixelSize: Style.topLinePixelSize - hoverEnabled: true - onClicked: Systray.shutdown() - - background: Item { - height: parent.height - width: parent.menu.width - Rectangle { - anchors.fill: parent - anchors.margins: 1 - color: parent.parent.hovered || parent.parent.visualFocus ? palette.highlight : "transparent" - } - } - - Accessible.role: Accessible.MenuItem - Accessible.name: text - Accessible.onPressAction: exitButton.clicked() - } - } - - background: Rectangle { - color: parent.hovered || parent.visualFocus ? Style.currentUserHeaderTextColor : "transparent" - opacity: 0.2 - } - - RowLayout { - id: accountControlRowLayout - - height: Style.trayWindowHeaderHeight - width: Style.currentAccountButtonWidth - spacing: 0 - - Image { - id: currentAccountAvatar - - Layout.leftMargin: Style.trayHorizontalMargin - verticalAlignment: Qt.AlignCenter - cache: false - source: UserModel.currentUser.avatar != "" ? UserModel.currentUser.avatar : "image://avatars/fallbackWhite" - Layout.preferredHeight: Style.accountAvatarSize - Layout.preferredWidth: Style.accountAvatarSize - - Accessible.role: Accessible.Graphic - Accessible.name: qsTr("Current account avatar") - - Rectangle { - id: currentAccountStatusIndicatorBackground - visible: UserModel.currentUser.isConnected - && UserModel.currentUser.serverHasUserStatus - width: Style.accountAvatarStateIndicatorSize + + Style.trayFolderStatusIndicatorSizeOffset - height: width - anchors.bottom: currentAccountAvatar.bottom - anchors.right: currentAccountAvatar.right - color: Style.currentUserHeaderColor - radius: width * Style.trayFolderStatusIndicatorRadiusFactor - } - - Rectangle { - id: currentAccountStatusIndicatorMouseHover - visible: UserModel.currentUser.isConnected - && UserModel.currentUser.serverHasUserStatus - width: Style.accountAvatarStateIndicatorSize + + Style.trayFolderStatusIndicatorSizeOffset - height: width - anchors.bottom: currentAccountAvatar.bottom - anchors.right: currentAccountAvatar.right - color: currentAccountButton.hovered ? Style.currentUserHeaderTextColor : "transparent" - opacity: Style.trayFolderStatusIndicatorMouseHoverOpacityFactor - radius: width * Style.trayFolderStatusIndicatorRadiusFactor - } - - Image { - id: currentAccountStatusIndicator - visible: UserModel.currentUser.isConnected - && UserModel.currentUser.serverHasUserStatus - source: UserModel.currentUser.statusIcon - cache: false - x: currentAccountStatusIndicatorBackground.x + 1 - y: currentAccountStatusIndicatorBackground.y + 1 - sourceSize.width: Style.accountAvatarStateIndicatorSize - sourceSize.height: Style.accountAvatarStateIndicatorSize - - Accessible.role: Accessible.Indicator - Accessible.name: UserModel.desktopNotificationsAllowed ? qsTr("Current account status is online") : qsTr("Current account status is do not disturb") - } - } - - Column { - id: accountLabels - spacing: 0 - Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter - Layout.leftMargin: Style.userStatusSpacing - Layout.fillWidth: true - Layout.maximumWidth: parent.width - - EnforcedPlainTextLabel { - id: currentAccountUser - Layout.alignment: Qt.AlignLeft | Qt.AlignBottom - width: Style.currentAccountLabelWidth - text: UserModel.currentUser.name - elide: Text.ElideRight - color: Style.currentUserHeaderTextColor - - font.pixelSize: Style.topLinePixelSize - font.bold: true - } - - EnforcedPlainTextLabel { - id: currentAccountServer - Layout.alignment: Qt.AlignLeft | Qt.AlignBottom - width: Style.currentAccountLabelWidth - text: UserModel.currentUser.server - elide: Text.ElideRight - color: Style.currentUserHeaderTextColor - visible: UserModel.numUsers() > 1 - } - - RowLayout { - id: currentUserStatus - visible: UserModel.currentUser.isConnected && - UserModel.currentUser.serverHasUserStatus - spacing: Style.accountLabelsSpacing - width: parent.width - - EnforcedPlainTextLabel { - id: emoji - visible: UserModel.currentUser.statusEmoji !== "" - width: Style.userStatusEmojiSize - text: UserModel.currentUser.statusEmoji - } - EnforcedPlainTextLabel { - id: message - Layout.alignment: Qt.AlignLeft | Qt.AlignBottom - Layout.fillWidth: true - visible: UserModel.currentUser.statusMessage !== "" - width: Style.currentAccountLabelWidth - text: UserModel.currentUser.statusMessage !== "" - ? UserModel.currentUser.statusMessage - : UserModel.currentUser.server - elide: Text.ElideRight - color: Style.currentUserHeaderTextColor - font.pixelSize: Style.subLinePixelSize - } - } - } - - ColorOverlay { - cached: true - color: Style.currentUserHeaderTextColor - width: source.width - height: source.height - source: Image { - Layout.alignment: Qt.AlignRight - verticalAlignment: Qt.AlignCenter - Layout.margins: Style.accountDropDownCaretMargin - source: "qrc:///client/theme/white/caret-down.svg" - sourceSize.width: Style.accountDropDownCaretSize - sourceSize.height: Style.accountDropDownCaretSize - Accessible.role: Accessible.PopupMenu - Accessible.name: qsTr("Account switcher and settings menu") - } - } - } - } - - // Add space between items - Item { - Layout.fillWidth: true - } - - TrayFoldersMenuButton { - id: openLocalFolderButton - - visible: currentUser.hasLocalFolder - currentUser: UserModel.currentUser - - - onClicked: openLocalFolderButton.userHasGroupFolders ? openLocalFolderButton.toggleMenuOpen() : UserModel.openCurrentAccountLocalFolder() - - onFolderEntryTriggered: isGroupFolder ? UserModel.openCurrentAccountFolderFromTrayInfo(fullFolderPath) : UserModel.openCurrentAccountLocalFolder() - - Accessible.role: Accessible.Graphic - Accessible.name: qsTr("Open local or group folders") - Accessible.onPressAction: openLocalFolderButton.userHasGroupFolders ? openLocalFolderButton.toggleMenuOpen() : UserModel.openCurrentAccountLocalFolder() - - Layout.alignment: Qt.AlignRight - Layout.preferredWidth: Style.trayWindowHeaderHeight - Layout.preferredHeight: Style.trayWindowHeaderHeight - } - - HeaderButton { - id: trayWindowTalkButton - - visible: UserModel.currentUser && UserModel.currentUser.serverHasTalk - icon.source: "image://svgimage-custom-color/talk-app.svg" + "/" + Style.currentUserHeaderTextColor - - onClicked: UserModel.openCurrentAccountTalk() - - Accessible.role: Accessible.Button - Accessible.name: qsTr("Open Nextcloud Talk in browser") - Accessible.onPressAction: trayWindowTalkButton.clicked() - - Layout.alignment: Qt.AlignRight - Layout.preferredWidth: Style.trayWindowHeaderHeight - Layout.preferredHeight: Style.trayWindowHeaderHeight - - } + HeaderLogo { + id: trayWindowLogoHeaderBackground + height: Style.sesHeaderLogoHeigth + width: parent.width + } - HeaderButton { - id: trayWindowAppsButton - icon.source: "image://svgimage-custom-color/more-apps.svg" + "/" + Style.currentUserHeaderTextColor - - onClicked: { - if(appsMenuListView.count <= 0) { - UserModel.openCurrentAccountServer() - } else if (appsMenu.visible) { - appsMenu.close() - } else { - appsMenu.open() - } - } + SesTrayHeader { + id: trayWindowHeaderBackground + anchors.left: trayWindowLogoHeaderBackground.left + anchors.right: trayWindowLogoHeaderBackground.right + anchors.top: trayWindowLogoHeaderBackground.bottom + anchors.topMargin: Style.sesHeaderTopMargin + } - Accessible.role: Accessible.ButtonMenu - Accessible.name: qsTr("More apps") - Accessible.onPressAction: trayWindowAppsButton.clicked() - - Menu { - id: appsMenu - x: Style.trayWindowMenuOffsetX - y: (trayWindowAppsButton.y + trayWindowAppsButton.height + Style.trayWindowMenuOffsetY) - width: Style.trayWindowWidth * Style.trayWindowMenuWidthFactor - height: implicitHeight + y > Style.trayWindowHeight ? Style.trayWindowHeight - y : implicitHeight - closePolicy: Menu.CloseOnPressOutsideParent | Menu.CloseOnEscape - - background: Rectangle { - border.color: palette.dark - color: palette.base - radius: 2 - } - - contentItem: ScrollView { - id: appsMenuScrollView - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff - - data: WheelHandler { - target: appsMenuScrollView.contentItem - } - ListView { - id: appsMenuListView - implicitHeight: contentHeight - model: UserAppsModel - interactive: true - clip: true - currentIndex: appsMenu.currentIndex - delegate: MenuItem { - id: appEntry - anchors.left: parent.left - anchors.right: parent.right - - text: model.appName - font.pixelSize: Style.topLinePixelSize - icon.source: model.appIconUrl - icon.color: palette.buttonText - onTriggered: UserAppsModel.openAppUrl(appUrl) - hoverEnabled: true - - background: Item { - height: parent.height - width: parent.width - Rectangle { - anchors.fill: parent - anchors.margins: 1 - color: parent.parent.hovered || parent.parent.visualFocus ? palette.highlight : "transparent" - } - } - - Accessible.role: Accessible.MenuItem - Accessible.name: qsTr("Open %1 in browser").arg(model.appName) - Accessible.onPressAction: appEntry.triggered() - } - } - } - } - } - } - } // Rectangle trayWindowHeaderBackground + Rectangle { + anchors.left: parent.left + anchors.right: parent.right + anchors.top: trayWindowHeaderBackground.bottom + anchors.topMargin: Style.sesHeaderTopMargin + implicitHeight: 1 + color: Style.sesBorderColor + } UnifiedSearchInputContainer { id: trayWindowUnifiedSearchInputContainer - height: Style.trayWindowHeaderHeight * 0.65 + height: 0 + visible: false //SES-4 removed anchors { top: trayWindowHeaderBackground.bottom @@ -738,9 +300,12 @@ ApplicationWindow { onClearText: { UserModel.currentUser.unifiedSearchResultsListModel.searchTerm = "" } } - ErrorBox { + SesErrorBox { id: unifiedSearchResultsErrorLabel - visible: UserModel.currentUser.unifiedSearchResultsListModel.errorString && !unifiedSearchResultsListView.visible && ! UserModel.currentUser.unifiedSearchResultsListModel.isSearchInProgress && ! UserModel.currentUser.unifiedSearchResultsListModel.currentFetchMoreInProgressProviderId + visible: UserModel.currentUser.unifiedSearchResultsListModel.errorString && + !unifiedSearchResultsListView.visible && + !UserModel.currentUser.unifiedSearchResultsListModel.isSearchInProgress && + !UserModel.currentUser.unifiedSearchResultsListModel.currentFetchMoreInProgressProviderId text: UserModel.currentUser.unifiedSearchResultsListModel.errorString anchors.top: trayWindowUnifiedSearchInputContainer.bottom anchors.left: trayWindowMainItem.left @@ -866,7 +431,6 @@ ApplicationWindow { textColor: Style.currentUserHeaderTextColor textColorHovered: Style.currentUserHeaderTextColor - contentsFont.bold: true bgNormalColor: Qt.lighter(bgHoverColor, 1.25) bgHoverColor: Style.currentUserHeaderColor bgNormalOpacity: Style.newActivitiesBgNormalOpacity diff --git a/src/gui/tray/activitylistmodel.cpp b/src/gui/tray/activitylistmodel.cpp index fd98c0a11dab5..201ffa04169ff 100644 --- a/src/gui/tray/activitylistmodel.cpp +++ b/src/gui/tray/activitylistmodel.cpp @@ -26,6 +26,8 @@ #include "activitydata.h" #include "systray.h" +#include "ionostheme.h" + #include #include #include @@ -226,18 +228,18 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const }; const auto generateIconPath = [&]() { - auto colorIconPath = role == DarkIconRole ? QStringLiteral("qrc:///client/theme/white/") : QStringLiteral("qrc:///client/theme/black/"); + auto colorIconPath = QStringLiteral("qrc:///client/theme/ses/"); if (a._type == Activity::NotificationType && !a._talkNotificationData.userAvatar.isEmpty()) { return QStringLiteral("qrc:///client/theme/colored/talk-bordered.svg"); } else if (a._type == Activity::SyncResultType) { - colorIconPath.append("state-error.svg"); + colorIconPath.append("ses-snackBarErrorIcon.svg"); return colorIconPath; } else if (a._type == Activity::SyncFileItemType) { if (a._syncFileItemStatus == SyncFileItem::NormalError || a._syncFileItemStatus == SyncFileItem::FatalError || a._syncFileItemStatus == SyncFileItem::DetailError || a._syncFileItemStatus == SyncFileItem::BlacklistedError) { - colorIconPath.append("state-error.svg"); + colorIconPath.append("ses-snackBarErrorIcon.svg"); return colorIconPath; } else if (a._syncFileItemStatus == SyncFileItem::SoftError || a._syncFileItemStatus == SyncFileItem::Conflict @@ -246,22 +248,19 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const || a._syncFileItemStatus == SyncFileItem::FileNameInvalid || a._syncFileItemStatus == SyncFileItem::FileNameInvalidOnServer || a._syncFileItemStatus == SyncFileItem::FileNameClash) { - colorIconPath.append("state-warning.svg"); + colorIconPath.append("ses-warning.svg"); return colorIconPath; } else if (a._syncFileItemStatus == SyncFileItem::FileIgnored) { - colorIconPath.append("state-info.svg"); + colorIconPath.append("ses-info.svg"); return colorIconPath; } else { // File sync successful if (a._fileAction == "file_created") { - return a._previews.empty() ? QStringLiteral("qrc:///client/theme/colored/add.svg") - : QStringLiteral("qrc:///client/theme/colored/add-bordered.svg"); + return IonosTheme::plusIcon(); } else if (a._fileAction == "file_deleted") { - return a._previews.empty() ? QStringLiteral("qrc:///client/theme/colored/delete.svg") - : QStringLiteral("qrc:///client/theme/colored/delete-bordered.svg"); + return IonosTheme::deleteIcon(); } else { - return a._previews.empty() ? colorIconPath % QStringLiteral("change.svg") - : QStringLiteral("qrc:///client/theme/colored/change-bordered.svg"); + return IonosTheme::refreshIcon(); } } } else { diff --git a/src/gui/tray/asyncimageresponse.h b/src/gui/tray/asyncimageresponse.h index 9d2d60003f19d..e6176618270fb 100644 --- a/src/gui/tray/asyncimageresponse.h +++ b/src/gui/tray/asyncimageresponse.h @@ -16,7 +16,7 @@ #include #include -#include +#include "sesFileIconProvider.h" class AsyncImageResponse : public QQuickImageResponse { @@ -35,6 +35,6 @@ private slots: QStringList _imagePaths; QSize _requestedImageSize; QColor _svgRecolor; - QFileIconProvider _fileIconProvider; + SesFileIconProvider _fileIconProvider; int _index = 0; }; diff --git a/src/gui/tray/usermodel.cpp b/src/gui/tray/usermodel.cpp index fb482e983ddc9..5e5c5233a1b04 100644 --- a/src/gui/tray/usermodel.cpp +++ b/src/gui/tray/usermodel.cpp @@ -18,6 +18,7 @@ #include "tray/talkreply.h" #include "userstatusconnector.h" #include "thumbnailjob.h" +#include "buttonstyle.h" #include #include @@ -25,6 +26,10 @@ #include #include #include +#include +#include +#include +#include // time span in milliseconds which has to be between two // refreshes of the notifications @@ -1416,15 +1421,18 @@ void UserModel::removeAccount(const int id) } QMessageBox messageBox(QMessageBox::Question, - tr("Confirm Account Removal"), + tr("Confirm Account Removal"), tr("

Do you really want to remove the connection to the account %1?

" "

Note: This will not delete any files.

") - .arg(_users[id]->name()), - QMessageBox::NoButton); - const auto * const yesButton = messageBox.addButton(tr("Remove connection"), QMessageBox::YesRole); + .arg(_users[id]->name())); + messageBox.addButton(tr("Cancel"), QMessageBox::NoRole); + QPushButton *yesButton = messageBox.addButton(tr("Remove connection"), QMessageBox::YesRole); + + styleMessageBox(messageBox, yesButton); messageBox.exec(); + if (messageBox.clickedButton() != yesButton) { return; } @@ -1570,6 +1578,38 @@ int UserModel::findUserIdForAccount(AccountState *account) const const auto id = std::distance(std::cbegin(_users), it); return id; } + +void UserModel::styleMessageBox(QMessageBox &messageBox, QPushButton *yesButton){ + + messageBox.setStyleSheet(QStringLiteral("QMessageBox { background-color: %1; } QMessageBox QLabel { %2 } ").arg( + IonosTheme::dialogBackgroundColor(), + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + ) + ); + + messageBox.setIconPixmap(QPixmap(IonosTheme::questionCircleIcon())); + + yesButton->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Primary)); + + QDialogButtonBox *buttonBox = messageBox.findChild(); + buttonBox->setLayoutDirection(Qt::RightToLeft); + buttonBox->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); + + QHBoxLayout *buttonBoxLayout = messageBox.findChild(); + buttonBoxLayout->setSpacing(8); +#ifdef Q_OS_MACOS + buttonBoxLayout->setSpacing(24); +#endif + + QLabel *label = messageBox.findChild("qt_msgbox_label"); + label->setMinimumSize(529, 49); + label->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); +} /*-------------------------------------------------------------------------------------*/ ImageProvider::ImageProvider() diff --git a/src/gui/tray/usermodel.h b/src/gui/tray/usermodel.h index 37f039f3a79be..2d7609f9c0765 100644 --- a/src/gui/tray/usermodel.h +++ b/src/gui/tray/usermodel.h @@ -7,6 +7,7 @@ #include #include #include +#include #include "accountfwd.h" #include "accountmanager.h" @@ -267,6 +268,7 @@ public slots: bool _init = true; void buildUserList(); + void styleMessageBox(QMessageBox &messageBox, QPushButton *yesButton); }; class ImageProvider : public QQuickImageProvider From d09bae7b4e2122eda79d0d408233bd84d402ce50 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:27:52 +0100 Subject: [PATCH 010/104] add ses style helpers --- src/gui/moreoptionsbuttonstylehelper.cpp | 113 ++++++++++++ src/gui/moreoptionsbuttonstylehelper.h | 25 +++ src/gui/pushbuttonstylehelper.cpp | 122 +++++++++++++ src/gui/pushbuttonstylehelper.h | 36 ++++ src/gui/sesFileIconProvider.cpp | 22 +++ src/gui/sesFileIconProvider.h | 14 ++ src/gui/sesstyle.cpp | 217 +++++++++++++++++++++++ src/gui/sesstyle.h | 75 ++++++++ 8 files changed, 624 insertions(+) create mode 100644 src/gui/moreoptionsbuttonstylehelper.cpp create mode 100644 src/gui/moreoptionsbuttonstylehelper.h create mode 100644 src/gui/pushbuttonstylehelper.cpp create mode 100644 src/gui/pushbuttonstylehelper.h create mode 100644 src/gui/sesFileIconProvider.cpp create mode 100644 src/gui/sesFileIconProvider.h create mode 100644 src/gui/sesstyle.cpp create mode 100644 src/gui/sesstyle.h diff --git a/src/gui/moreoptionsbuttonstylehelper.cpp b/src/gui/moreoptionsbuttonstylehelper.cpp new file mode 100644 index 0000000000000..20f19fb2a655b --- /dev/null +++ b/src/gui/moreoptionsbuttonstylehelper.cpp @@ -0,0 +1,113 @@ +#include "moreoptionsbuttonstylehelper.h" + +#include "buttonstylestrategy.h" +#include "buttonstyle.h" +#include "ionostheme.h" +#include +#include +#include + + +void MoreOptionsButtonStyleHelper::setupPainterForToolButtonShape(const QStyleOptionButton *option, QPainter *painter, const QWidget *widget) +{ + OCC::ButtonStyle& style = ButtonStyleStrategy::getButtonStyle(widget, option); + + // Disabled + if (!(option->state & QStyle::State_Enabled)) { + painter->setPen(QColor(style.buttonDisabledBorderColor())); + painter->setBrush(QColor(style.buttonDisabledColor())); + } + //Pressed + else if (option->state & QStyle::State_Sunken) + { + painter->setPen(QColor(style.buttonPressedBorderColor())); + painter->setBrush(QColor(style.buttonPressedColor())); + } + // Hover + else if(option->state & QStyle::State_MouseOver) + { + painter->setPen(QColor(style.buttonHoverBorderColor())); + painter->setBrush(QColor(style.buttonHoverColor())); + } + // Focused + else if (option->state & QStyle::State_HasFocus) { + painter->setPen(QColor(style.buttonFocusedBorderColor())); + painter->setBrush(QColor(style.buttonFocusedColor())); + } + // Else - Just beeing there + else { + painter->setPen(QColor(style.buttonDefaultBorderColor())); + painter->setBrush(QColor(style.buttonDefaultColor())); + } +} + +void MoreOptionsButtonStyleHelper::drawToolButtonShape(const QStyleOptionButton *option, QPainter *painter, const QWidget *widget) +{ + painter->save(); + painter->setRenderHints(QPainter::Antialiasing); + setupPainterForToolButtonShape(option, painter, widget); + const int radius = option->rect.height() / 2; + painter->drawRoundedRect(option->rect, radius,radius); + painter->restore(); +} + +QPixmap MoreOptionsButtonStyleHelper::tintPixmap(const QPixmap &src, const QColor &color) const{ + QPixmap result(src.size()); + result.fill(Qt::transparent); + + QPainter painter(&result); + painter.setCompositionMode(QPainter::CompositionMode_Source); + painter.drawPixmap(0, 0, src); + + painter.setCompositionMode(QPainter::CompositionMode_SourceIn); + painter.fillRect(result.rect(), color); + + painter.end(); + return result; +} + +QSize MoreOptionsButtonStyleHelper::getLargestIconSize(const QIcon &icon) const{ + QList availableSizes = icon.availableSizes(); + + if (availableSizes.isEmpty()) { + return QSize(); + } + + QSize largestSize; + int maxDimension = 0; + + for (const QSize &size : availableSizes) { + if (size.width() > maxDimension) { + maxDimension = size.width(); + largestSize = size; + } + } + + return largestSize; +} + +void MoreOptionsButtonStyleHelper::adjustIconColor(QStyleOptionButton *option, const QWidget *widget) +{ + QColor iconColor; + OCC::ButtonStyle& style = ButtonStyleStrategy::getButtonStyle(widget, option); + + if (!(option->state & QStyle::State_Enabled)) { + iconColor = style.buttonDisabledFontColor(); + } + else if(option->state & QStyle::State_MouseOver) + { + iconColor = QColor(style.buttonDefaultColor()); + } + else + { + iconColor = QColor(style.buttonHoverColor()); + } + + QIcon icon = option->icon; + QSize iconSize = getLargestIconSize(icon); + QPixmap pixmap = icon.pixmap(iconSize); + + QPixmap coloredPixmap = tintPixmap(pixmap, iconColor); + + option->icon = (QIcon(coloredPixmap)); +} \ No newline at end of file diff --git a/src/gui/moreoptionsbuttonstylehelper.h b/src/gui/moreoptionsbuttonstylehelper.h new file mode 100644 index 0000000000000..6ffc2d5f4060d --- /dev/null +++ b/src/gui/moreoptionsbuttonstylehelper.h @@ -0,0 +1,25 @@ +#ifndef MOREOPTIONSBUTTONSTYLEHELPER_H +#define MOREOPTIONSBUTTONSTYLEHELPER_H + +#include + +class QPainter; +class QStyleOptionButton; +class QWidget; +class QPixmap; +class QColor; +class QIcon; + +class MoreOptionsButtonStyleHelper +{ +public: + void setupPainterForToolButtonShape(const QStyleOptionButton *option, QPainter *painter, const QWidget *widget); + void drawToolButtonShape(const QStyleOptionButton *option, QPainter *painter, const QWidget *widget); + void adjustIconColor(QStyleOptionButton *option, const QWidget *widget); + +private: + QPixmap tintPixmap(const QPixmap &src, const QColor &color) const; + QSize getLargestIconSize(const QIcon &icon) const; + +}; +#endif // MOREOPTIONSBUTTONSTYLEHELPER_H \ No newline at end of file diff --git a/src/gui/pushbuttonstylehelper.cpp b/src/gui/pushbuttonstylehelper.cpp new file mode 100644 index 0000000000000..de087eaa98c31 --- /dev/null +++ b/src/gui/pushbuttonstylehelper.cpp @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** This file is part of the Oxygen2 project. +** +** SPDX-FileCopyrightText: 2022 Klarälvdalens Datakonsult AB, a KDAB Group company +** +** SPDX-License-Identifier: MIT +** +****************************************************************************/ + +#include "pushbuttonstylehelper.h" + + +#include "buttonstyle.h" +#include "buttonstylestrategy.h" +#include "ionostheme.h" +#include +#include +#include +#include +#include + +void PushButtonStyleHelper::setupPainterForShape(const QStyleOptionButton *option, QPainter *painter, const QWidget *widget) +{ + OCC::ButtonStyle& style = ButtonStyleStrategy::getButtonStyle(widget, option); + + // Disabled + if (!(option->state & QStyle::State_Enabled)) { + painter->setPen(QColor(style.buttonDisabledBorderColor())); + painter->setBrush(QColor(style.buttonDisabledColor())); + } + //Pressed + else if (option->state & QStyle::State_Sunken) { + + painter->setPen(QColor(style.buttonPressedBorderColor())); + painter->setBrush(QColor(style.buttonPressedColor())); + } + // Hover + else if(option->state & QStyle::State_MouseOver) + { + painter->setPen(QColor(style.buttonHoverBorderColor())); + painter->setBrush(QColor(style.buttonHoverColor())); + } + // Focused + else if (option->state & QStyle::State_HasFocus) { + painter->setPen(QColor(style.buttonFocusedBorderColor())); + painter->setBrush(QColor(style.buttonFocusedColor())); + } + // Else - Just beeing there + else { + painter->setPen(QColor(style.buttonDefaultBorderColor())); + painter->setBrush(QColor(style.buttonDefaultColor())); + } +} + +void PushButtonStyleHelper::drawButtonShape(const QStyleOptionButton *option, QPainter *painter, const QWidget *widget) +{ + painter->save(); + painter->setRenderHints(QPainter::Antialiasing); + setupPainterForShape(option, painter, widget); + const int radius = OCC::IonosTheme::buttonRadiusInt(); + painter->drawRoundedRect(option->rect, radius, radius); + painter->restore(); +} + +void PushButtonStyleHelper::setFont(QFont& font) const +{ + font.setWeight(OCC::IonosTheme::settingsTitleWeightDemiBold()); + font.setPixelSize(OCC::IonosTheme::settingsTextPixel()); +} + +void PushButtonStyleHelper::recalculateContentSize(QSize &contentsSize, const QWidget *widget) const +{ + QFont font = widget->font(); + setFont(font); + QFontMetrics fm(font); + + //Code aus qpushbutton.cpp - sizeHint + const QPushButton* pushButton = qobject_cast(widget); + int w = 0, h = 0; + QString s(pushButton->text()); + bool empty = s.isEmpty(); + if (empty) + s = QStringLiteral("XXXX"); + QSize sz = fm.size(Qt::TextShowMnemonic, s); + if (!empty || !w) + w += sz.width(); + if (!empty || !h) + h = qMax(h, sz.height()); + // -- end code + + contentsSize.setHeight(h); + contentsSize.setWidth(w); +} + +QSize PushButtonStyleHelper::sizeFromContents(const QStyleOptionButton *option, QSize contentsSize, const QWidget *widget, int margin) const +{ + Q_UNUSED(option) + Q_UNUSED(widget) + if(widget != nullptr) + { + recalculateContentSize(contentsSize, widget); + } + const int frameWidth = 2; // due to pen width 1 in drawButtonBevel, on each side + return QSize(qMax(80, contentsSize.width() + 2 * margin + frameWidth), qMin(40, contentsSize.height() + 2 * margin + frameWidth)); +} + +void PushButtonStyleHelper::adjustTextPalette(QStyleOptionButton *option, const QWidget *widget) const +{ + QColor textColor; + OCC::ButtonStyle& style = ButtonStyleStrategy::getButtonStyle(widget, option); + + // Disabled + if (!(option->state & QStyle::State_Enabled)) { + textColor = style.buttonDisabledFontColor(); + } + else + { + textColor = style.buttonFontColor(); + } + option->palette.setColor(QPalette::ButtonText, textColor); +} \ No newline at end of file diff --git a/src/gui/pushbuttonstylehelper.h b/src/gui/pushbuttonstylehelper.h new file mode 100644 index 0000000000000..cf9c23959599c --- /dev/null +++ b/src/gui/pushbuttonstylehelper.h @@ -0,0 +1,36 @@ +/**************************************************************************** +** +** This file is part of the Oxygen2 project. +** +** SPDX-FileCopyrightText: 2022 Klarälvdalens Datakonsult AB, a KDAB Group company +** +** SPDX-License-Identifier: MIT +** +****************************************************************************/ + +#ifndef PUSHBUTTONSTYLEHELPER_H +#define PUSHBUTTONSTYLEHELPER_H + +#include + +class QPainter; +class QPushButton; +class QStyleOptionButton; +class QWidget; +class QPixmap; +class QColor; +class QFont; + +class PushButtonStyleHelper +{ +public: + void setupPainterForShape(const QStyleOptionButton *option, QPainter *painter, const QWidget *widget); + void drawButtonShape(const QStyleOptionButton *option, QPainter *painter, const QWidget *widget); + QSize sizeFromContents(const QStyleOptionButton *option, QSize contentsSize, const QWidget *widget, int margin) const; + void adjustTextPalette(QStyleOptionButton *option, const QWidget *widget) const; + void setFont(QFont& font) const; +private: + void recalculateContentSize(QSize &contentsSize, const QWidget *widget) const; + +}; +#endif // PUSHBUTTONSTYLEHELPER_H \ No newline at end of file diff --git a/src/gui/sesFileIconProvider.cpp b/src/gui/sesFileIconProvider.cpp new file mode 100644 index 0000000000000..99f96001b2fb1 --- /dev/null +++ b/src/gui/sesFileIconProvider.cpp @@ -0,0 +1,22 @@ +#include "sesfileiconprovider.h" + +#include +#include + +QIcon SesFileIconProvider::icon(const QFileInfo &info) const +{ + QFileIconProvider provider; + + if (info.isDir()) + { + return QIcon(":/client/theme/ses/ses-filesIconBright.svg"); + } + + if (info.suffix().isEmpty()) + { + return QIcon(":/client/theme/ses/ses-file.svg"); + } + + + return provider.icon(info); +}; \ No newline at end of file diff --git a/src/gui/sesFileIconProvider.h b/src/gui/sesFileIconProvider.h new file mode 100644 index 0000000000000..69d7454be7d3f --- /dev/null +++ b/src/gui/sesFileIconProvider.h @@ -0,0 +1,14 @@ +#ifndef SESFILEICONPROVIDER_H +#define SESFILEICONPROVIDER_H + +#include +#include +#include + +class SesFileIconProvider : public QFileIconProvider +{ +public: + QIcon icon(const QFileInfo &info) const override; +}; + +#endif // SESFILEICONPROVIDER_H \ No newline at end of file diff --git a/src/gui/sesstyle.cpp b/src/gui/sesstyle.cpp new file mode 100644 index 0000000000000..24e7baafcc116 --- /dev/null +++ b/src/gui/sesstyle.cpp @@ -0,0 +1,217 @@ +/**************************************************************************** +** +** This file is part of the Oxygen2 project. +** +** SPDX-FileCopyrightText: 2022 Klarälvdalens Datakonsult AB, a KDAB Group company +** +** SPDX-License-Identifier: MIT +** +****************************************************************************/ + +/************************************************************************* + * + * Copyright (c) 2013-2019, Klaralvdalens Datakonsult AB (KDAB) + * All rights reserved. + * + * See the LICENSE.txt file shipped along with this file for the license. + * + *************************************************************************/ + +#include "sesstyle.h" +#include "ionostheme.h" + +#include "pushbuttonstylehelper.h" +#include "moreoptionsbuttonstylehelper.h" + +#include +#include +#include +#include +#include + +sesStyle::sesStyle() + : super() + , mPushButtonStyleHelper(new PushButtonStyleHelper) + , mMoreOptionsButtonStyleHelper(new MoreOptionsButtonStyleHelper) +{ +} + +void sesStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *option, QPainter *painter, const QWidget *widget) const +{ + switch (pe) { + case PE_FrameFocusRect: + // nothing, we don't want focus rects + break; + #ifdef Q_OS_MAC + case PE_IndicatorBranch: + { + + QStyleOption optCopy = *option; + int originalWidth = optCopy.rect.width(); + int originalHeight = optCopy.rect.height(); + optCopy.rect.setWidth(static_cast(originalWidth * 0.5)); + optCopy.rect.setHeight(static_cast(originalHeight * 0.5)); + optCopy.rect.translate(5, 5); + + if (!(option->state & State_Children)) + break; + if (option->state & State_Open) + drawPrimitive(PE_IndicatorArrowDown, &optCopy, painter, widget); + else { + const bool reverse = (option->direction == Qt::RightToLeft); + drawPrimitive(reverse ? PE_IndicatorArrowLeft : PE_IndicatorArrowRight, &optCopy, painter, widget); + } + break; + } + #endif + default: + super::drawPrimitive(pe, option, painter, widget); + break; + } +} + +int sesStyle::pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const +{ + switch (metric) { + case PM_ButtonShiftHorizontal: + case PM_ButtonShiftVertical: + return 0; // no shift + case PM_ButtonMargin: + return 16; + default: + return super::pixelMetric(metric, option, widget); + } +} + +void sesStyle::drawButton(const QStyleOptionButton *btn, QPainter *painter, const QWidget *widget) const { + proxy()->drawControl(CE_PushButtonBevel, btn, painter, widget); + QStyleOptionButton subopt = *btn; + subopt.rect = subElementRect(SE_PushButtonContents, btn, widget); + proxy()->drawControl(CE_PushButtonLabel, &subopt, painter, widget); + if (btn->state & State_HasFocus) { + QStyleOptionFocusRect fropt; + fropt.QStyleOption::operator=(*btn); + fropt.rect = subElementRect(SE_PushButtonFocusRect, btn, widget); + proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget); + } +} + + +void sesStyle::drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const +{ + switch (element) { + case CE_TreeViewMoreOptions: + { + if (const auto *btn = qstyleoption_cast(option)) + { + // Bevel + mMoreOptionsButtonStyleHelper->drawToolButtonShape(btn, painter, widget); + + // Label / Icon + QStyleOptionButton subopt = *btn; + subopt.rect = subElementRect(SE_PushButtonContents, btn, widget); + mMoreOptionsButtonStyleHelper->adjustIconColor(&subopt, widget); + QCommonStyle::drawControl(CE_PushButtonLabel, &subopt, painter, widget); + } + return; + } + case CE_PushButton: + { + if (const auto *btn = qstyleoption_cast(option)) + { + drawButton(btn, painter, widget); + } + return; + } + case CE_PushButtonBevel: + if (const auto *optionButton = qstyleoption_cast(option)) + { + mPushButtonStyleHelper->drawButtonShape(optionButton, painter, widget); + } + return; + case CE_PushButtonLabel: + if (const auto *optionButton = qstyleoption_cast(option)) + { + QStyleOptionButton customStyleCopy = *optionButton; + mPushButtonStyleHelper->adjustTextPalette(&customStyleCopy, widget); + + painter->save(); + QFont font = painter->font(); + mPushButtonStyleHelper->setFont(font); + painter->setFont(font); + + QCommonStyle::drawControl(element, &customStyleCopy, painter, widget); + painter->restore(); + } + return; + default: + super::drawControl(element, option, painter, widget); + } +} + +void sesStyle::polish(QWidget *w) +{ + if (qobject_cast(w) || qobject_cast(w)) { + w->setAttribute(Qt::WA_Hover); + } + super::polish(w); +} + +bool sesStyle::eventFilter(QObject *obj, QEvent *event) +{ + return super::eventFilter(obj, event); +} + +PushButtonStyleHelper *sesStyle::pushButtonStyleHelper() const +{ + return mPushButtonStyleHelper.get(); +} + +int sesStyle::styleHint(StyleHint stylehint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const +{ + switch (stylehint) { + case SH_DialogButtonBox_ButtonsHaveIcons: + return 0; + default: + break; + } + + return super::styleHint(stylehint, option, widget, returnData); +} + +QSize sesStyle::sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget) const +{ + switch (type) { + case CT_PushButton: + if (const auto *buttonOption = qstyleoption_cast(option)) { + return mPushButtonStyleHelper->sizeFromContents(buttonOption, contentsSize, widget, pixelMetric(PM_ButtonMargin, buttonOption, widget)); + } + break; + case CT_TreeViewMoreOptions: + { + if (const auto *buttonOption = qstyleoption_cast(option)) { + return super::sizeFromContents(CT_ToolButton, option, contentsSize, widget); + } + break; + } + default: + break; + } + return super::sizeFromContents(type, option, contentsSize, widget); +} + +QRect sesStyle::subElementRect(SubElement subElement, const QStyleOption *option, const QWidget *widget) const +{ + switch (subElement) { + default: + return super::subElementRect(subElement, option, widget); + } +} + +void sesStyle::drawComplexControl(ComplexControl complexControl, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const +{ + switch (complexControl) { + default: + super::drawComplexControl(complexControl, option, painter, widget); + } +} \ No newline at end of file diff --git a/src/gui/sesstyle.h b/src/gui/sesstyle.h new file mode 100644 index 0000000000000..9f9e053dab36c --- /dev/null +++ b/src/gui/sesstyle.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** This file is part of the Oxygen2 project. +** +** SPDX-FileCopyrightText: 2022 Klarälvdalens Datakonsult AB, a KDAB Group company +** +** SPDX-License-Identifier: MIT +** +****************************************************************************/ + +/************************************************************************* + * + * Copyright (c) 2013-2019, Klaralvdalens Datakonsult AB (KDAB) + * All rights reserved. + * + * See the LICENSE.txt file shipped along with this file for the license. + * + *************************************************************************/ +#pragma once + +#include +#include +#include + +class PushButtonStyleHelper; + +// QProxyStyle to see all widgets in an application (even if it means mixing with the default style) +// QCommonStyle to only see what we have styled, no bad interactions from the default style, but the other widgets won't be usable +using super = QProxyStyle; + +class sesStyle : public super +{ +public: + enum CustomControlElement { + CE_TreeViewMoreOptions = QStyle::CE_CustomBase + 1, // Custom element for a button + }; + + enum CustomContentsType { + CT_TreeViewMoreOptions = QStyle::CT_CustomBase + 1, // Custom element for a button + }; + + sesStyle(); + + void drawPrimitive(PrimitiveElement pe, const QStyleOption *option, QPainter *painter, + const QWidget *widget = nullptr) const override; + + int pixelMetric(PixelMetric pm, const QStyleOption *option = nullptr, + const QWidget *widget = nullptr) const override; + + void drawButton(const QStyleOptionButton *btn, QPainter *painter, const QWidget *widget) const; + + void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, + const QWidget *widget = nullptr) const override; + + void drawComplexControl(ComplexControl complexControl, const QStyleOptionComplex *opt, QPainter *painter, + const QWidget *widget = nullptr) const override; + + int styleHint(StyleHint stylehint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const override; + + QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget) const override; + + QRect subElementRect(SubElement subElement, const QStyleOption *option, const QWidget *widget) const override; + + void polish(QWidget *w) override; + + bool eventFilter(QObject *obj, QEvent *event) override; + + + PushButtonStyleHelper* pushButtonStyleHelper() const; + +private: + std::unique_ptr mPushButtonStyleHelper; + std::unique_ptr mMoreOptionsButtonStyleHelper; + +}; \ No newline at end of file From 3cd6e826d113bbaa969a5bb176d811068b9370b2 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:28:27 +0100 Subject: [PATCH 011/104] style activity view and shares view --- src/gui/filedetails/FileActivityView.qml | 2 +- src/gui/filedetails/FileDetailsPage.qml | 82 +- src/gui/filedetails/FileDetailsView.qml | 2 +- src/gui/filedetails/FileDetailsWindow.qml | 2 +- src/gui/filedetails/NCInputDateField.qml | 2 +- src/gui/filedetails/NCInputTextEdit.qml | 2 +- src/gui/filedetails/NCInputTextField.qml | 2 +- src/gui/filedetails/NCTabButton.qml | 2 +- src/gui/filedetails/ShareDelegate.qml | 39 +- src/gui/filedetails/ShareDetailsPage.qml | 934 +++++++++++----------- src/gui/filedetails/ShareView.qml | 119 +-- src/gui/filedetails/ShareeDelegate.qml | 5 +- src/gui/filedetails/ShareeSearchField.qml | 15 +- src/gui/filedetails/shareemodel.cpp | 2 +- src/gui/filedetails/sharemodel.cpp | 8 +- src/gui/filedetails/sortedsharemodel.cpp | 2 +- 16 files changed, 595 insertions(+), 625 deletions(-) diff --git a/src/gui/filedetails/FileActivityView.qml b/src/gui/filedetails/FileActivityView.qml index 002654b7955bc..4bbedff9e7785 100644 --- a/src/gui/filedetails/FileActivityView.qml +++ b/src/gui/filedetails/FileActivityView.qml @@ -16,7 +16,7 @@ import QtQuick 2.15 import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 import "../tray" diff --git a/src/gui/filedetails/FileDetailsPage.qml b/src/gui/filedetails/FileDetailsPage.qml index 5008017a8efe4..2e91913dff290 100644 --- a/src/gui/filedetails/FileDetailsPage.qml +++ b/src/gui/filedetails/FileDetailsPage.qml @@ -16,7 +16,7 @@ import QtQuick 2.15 import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 import "../tray" @@ -45,6 +45,10 @@ Page { localPath: root.localPath } + font.family: Style.sesOpenSansRegular + font.pixelSize: Style.sesFontPixelSize + font.weight: Style.sesFontNormalWeight + Connections { target: Systray function onShowFileDetailsPage(fileLocalPath, page) { @@ -74,7 +78,7 @@ Page { } header: ColumnLayout { - spacing: root.intendedPadding + spacing: Style.sesMediumMargin GridLayout { id: headerGridLayout @@ -107,15 +111,15 @@ Page { id: fileIcon Layout.rowSpan: headerGridLayout.rows - Layout.preferredWidth: Style.trayListItemIconSize - Layout.leftMargin: root.intendedPadding + Layout.preferredWidth: Style.sesFileDetailsIconSize + Layout.leftMargin: Style.sesMediumMargin Layout.fillHeight: true verticalAlignment: Image.AlignVCenter horizontalAlignment: Image.AlignHCenter source: root.fileDetails.iconUrl - sourceSize.width: Style.trayListItemIconSize - sourceSize.height: Style.trayListItemIconSize + sourceSize.width: Style.sesFileDetailsIconSize + sourceSize.height: Style.sesFileDetailsIconSize fillMode: Image.PreserveAspectFit } @@ -123,10 +127,13 @@ Page { id: fileNameLabel Layout.fillWidth: true - Layout.rightMargin: headerGridLayout.textRightMargin + Layout.rightMargin: Style.sesFileDetailsHeaderModifier text: root.fileDetails.name - font.bold: true + + font.pixelSize: Style.sesFontPixelSizeTitle + font.weight: Style.sesFontBoldWeight + wrapMode: Text.Wrap } @@ -143,6 +150,9 @@ Page { bgNormalOpacity: 0 toolTipText: qsTr("Dismiss") + font.pixelSize: Style.sesFontPixelSize + font.weight: Style.sesFontNormalWeight + visible: root.showCloseButton onClicked: root.closeButtonClicked() @@ -152,10 +162,13 @@ Page { id: fileDetailsLabel Layout.fillWidth: true - Layout.rightMargin: headerGridLayout.textRightMargin + Layout.rightMargin: Style.sesFileDetailsHeaderModifier + + text: `${root.fileDetails.sizeString}, ${root.fileDetails.lastChangedString}` + + font.pixelSize: Style.sesFontHintPixelSize + font.weight: Style.sesFontNormalWeight - text: `${root.fileDetails.sizeString} · ${root.fileDetails.lastChangedString}` - color: palette.midlight wrapMode: Text.Wrap } @@ -169,6 +182,9 @@ Page { color: palette.midlight wrapMode: Text.Wrap visible: headerGridLayout.showFileLockedString + + font.pixelSize: Style.sesFontHintPixelSize + font.weight: Style.sesFontNormalWeight } Row { @@ -211,39 +227,13 @@ Page { NCToolTip { visible: hoverHandler.hovered text: tagRepeater.fileTagModel.overflowTagsString + + font.pixelSize: Style.sesFontPixelSize + font.weight: Style.sesFontNormalWeight } } } } - - TabBar { - id: viewBar - - Layout.leftMargin: root.intendedPadding - Layout.rightMargin: root.intendedPadding - - padding: 0 - background: null - - NCTabButton { - svgCustomColorSource: "image://svgimage-custom-color/activity.svg" - text: qsTr("Activity") - accentColor: root.accentColor - checked: swipeView.currentIndex === fileActivityView.swipeIndex - onClicked: swipeView.currentIndex = fileActivityView.swipeIndex - } - - NCTabButton { - width: visible ? implicitWidth : 0 - height: visible ? implicitHeight : 0 - svgCustomColorSource: "image://svgimage-custom-color/share.svg" - text: qsTr("Sharing") - accentColor: root.accentColor - checked: swipeView.currentIndex === shareViewLoader.swipeIndex - onClicked: swipeView.currentIndex = shareViewLoader.swipeIndex - visible: root.fileDetails.sharingAvailable - } - } } SwipeView { @@ -252,18 +242,6 @@ Page { anchors.fill: parent clip: true - FileActivityView { - id: fileActivityView - - readonly property int swipeIndex: SwipeView.index - - delegateHorizontalPadding: root.intendedPadding - - accountState: root.accountState - localPath: root.localPath - iconSize: root.iconSize - } - Loader { id: shareViewLoader diff --git a/src/gui/filedetails/FileDetailsView.qml b/src/gui/filedetails/FileDetailsView.qml index 5fae863d4f6d0..35981f15fb0f1 100644 --- a/src/gui/filedetails/FileDetailsView.qml +++ b/src/gui/filedetails/FileDetailsView.qml @@ -16,7 +16,7 @@ import QtQuick 2.15 import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 StackView { diff --git a/src/gui/filedetails/FileDetailsWindow.qml b/src/gui/filedetails/FileDetailsWindow.qml index abcf3e850f90e..152b4663873f9 100644 --- a/src/gui/filedetails/FileDetailsWindow.qml +++ b/src/gui/filedetails/FileDetailsWindow.qml @@ -17,7 +17,7 @@ import QtQuick.Window 2.15 import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 ApplicationWindow { diff --git a/src/gui/filedetails/NCInputDateField.qml b/src/gui/filedetails/NCInputDateField.qml index 4c0ea491c7fe4..bca7c701ff00f 100644 --- a/src/gui/filedetails/NCInputDateField.qml +++ b/src/gui/filedetails/NCInputDateField.qml @@ -14,7 +14,7 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 NCInputTextField { id: root diff --git a/src/gui/filedetails/NCInputTextEdit.qml b/src/gui/filedetails/NCInputTextEdit.qml index 3685b1f9deaa7..e65186b73815e 100644 --- a/src/gui/filedetails/NCInputTextEdit.qml +++ b/src/gui/filedetails/NCInputTextEdit.qml @@ -16,7 +16,7 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 TextEdit { diff --git a/src/gui/filedetails/NCInputTextField.qml b/src/gui/filedetails/NCInputTextField.qml index fa4bef0bfc8a2..ad92be0ac5edb 100644 --- a/src/gui/filedetails/NCInputTextField.qml +++ b/src/gui/filedetails/NCInputTextField.qml @@ -16,7 +16,7 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 TextField { diff --git a/src/gui/filedetails/NCTabButton.qml b/src/gui/filedetails/NCTabButton.qml index 8c6c7426ff5ee..b52e5a0d49b07 100644 --- a/src/gui/filedetails/NCTabButton.qml +++ b/src/gui/filedetails/NCTabButton.qml @@ -17,7 +17,7 @@ import QtQuick.Window 2.15 import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 import "../tray" diff --git a/src/gui/filedetails/ShareDelegate.qml b/src/gui/filedetails/ShareDelegate.qml index baf378fe8ce6f..2560d55ffa3fb 100644 --- a/src/gui/filedetails/ShareDelegate.qml +++ b/src/gui/filedetails/ShareDelegate.qml @@ -18,7 +18,7 @@ import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 import QtGraphicalEffects 1.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 import "../tray" import "../" @@ -50,7 +50,7 @@ GridLayout { property FileDetails fileDetails: FileDetails {} property StackView rootStackView: StackView {} property bool backgroundsVisible: true - property color accentColor: Style.ncBlue + property color accentColor: Style.sesIconColor property bool canCreateLinkShares: true property bool serverAllowsResharing: true @@ -165,7 +165,7 @@ GridLayout { bgColor: palette.highlight bgNormalOpacity: 0 - icon.source: "image://svgimage-custom-color/add.svg/" + palette.buttonText + icon.source: Style.sesLightPlus + palette.buttonText icon.width: Style.smallIconSize icon.height: Style.smallIconSize @@ -197,13 +197,14 @@ GridLayout { toolTipText: qsTr("Copy share link location") text: shareLinkCopied ? qsTr("Copied!") : "" - textColor: palette.brightText - contentsFont.bold: true - bgColor: shareLinkCopied ? Style.positiveColor : palette.highlight - bgNormalOpacity: shareLinkCopied ? 1 : 0 + textColor: Style.sesDarkGreen + + bgColor: palette.highlight + bgNormalOpacity: 0 + + icon.source: shareLinkCopied ? Style.sesGreenCheckmark + Style.positiveColor : + Style.sesClipboard + palette.brightText - icon.source: shareLinkCopied ? "image://svgimage-custom-color/copy.svg/" + palette.brightText : - "image://svgimage-custom-color/copy.svg/" + palette.buttonText icon.width: Style.smallIconSize icon.height: Style.smallIconSize @@ -212,14 +213,6 @@ GridLayout { onClicked: copyShareLink() - Behavior on bgColor { - ColorAnimation { duration: Style.shortAnimationDuration } - } - - Behavior on bgNormalOpacity { - NumberAnimation { duration: Style.shortAnimationDuration } - } - Behavior on Layout.preferredWidth { SmoothedAnimation { duration: Style.shortAnimationDuration } } @@ -239,6 +232,9 @@ GridLayout { CustomButton { id: moreButton + property bool isHovered: moreButton.hovered || moreButton.visualFocus + property bool isActive: moreButton.pressed + Layout.alignment: Qt.AlignCenter Layout.preferredWidth: Style.iconButtonWidth Layout.preferredHeight: width @@ -248,13 +244,20 @@ GridLayout { bgColor: palette.highlight bgNormalOpacity: 0 - icon.source: "image://svgimage-custom-color/more.svg/" + palette.buttonText + icon.source: "image://svgimage-custom-color/more.svg/" + (moreButton.isActive || moreButton.isHovered ? Style.sesWhite : Style.sesIconColor) icon.width: Style.smallIconSize icon.height: Style.smallIconSize visible: !root.isPlaceholderLinkShare && !root.isSecureFileDropPlaceholderLinkShare && !root.isInternalLinkShare enabled: visible + background: Rectangle { + anchors.fill: parent + anchors.margins: 1 + color: moreButton.isActive ? Style.sesActionPressed : moreButton.isHovered ? Style.sesActionHover : "transparent" + radius: width / 2 + } + onClicked: root.rootStackView.push(shareDetailsPageComponent, {}, StackView.PushTransition) Component { diff --git a/src/gui/filedetails/ShareDetailsPage.qml b/src/gui/filedetails/ShareDetailsPage.qml index 15ffbe61a14b4..56676e7ff55d2 100644 --- a/src/gui/filedetails/ShareDetailsPage.qml +++ b/src/gui/filedetails/ShareDetailsPage.qml @@ -18,9 +18,10 @@ import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 import QtGraphicalEffects 1.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 import "../tray" +import "../SesComponents/" import "../" Page { @@ -43,6 +44,11 @@ Page { signal setPassword(string password) signal setNote(string note) + + font.family: Style.sesOpenSansRegular + font.pixelSize: Style.sesFontPixelSize + font.weight: Style.sesFontNormalWeight + property bool backgroundsVisible: true property color accentColor: Style.ncBlue @@ -95,6 +101,16 @@ Page { property bool waitingForPasswordChange: false property bool waitingForNoteChange: false + readonly property int titlePixelSize: Style.sesFontPixelSizeTitle + readonly property int titleFontWeight: Style.sesFontNormalWeight + + readonly property int hintPixelSize: Style.sesFontHintPixelSize + readonly property int hintFontWeight: Style.sesFontNormalWeight + + + readonly property int pixelSize: Style.sesFontPixelSize + readonly property int fontWeight: Style.sesFontNormalWeight + function showPasswordSetError(message) { passwordErrorBoxLoader.message = message !== "" ? message : qsTr("An error occurred setting the share password."); @@ -106,8 +122,8 @@ Page { } function resetLinkShareLabelField() { - linkShareLabelTextField.text = linkShareLabel; - waitingForLinkShareLabelChange = false; + // linkShareLabelTextField.text = linkShareLabel; + // waitingForLinkShareLabelChange = false; } function resetPasswordField() { @@ -211,17 +227,21 @@ Page { } EnforcedPlainTextLabel { - id: headLabel + id: fileNameLabel Layout.fillWidth: true + Layout.rightMargin: headerGridLayout.textRightMargin + + text: root.fileDetails.name - text: qsTr("Edit share") - font.bold: true - elide: Text.ElideRight + font.pixelSize: titlePixelSize + font.weight: titleFontWeight + + wrapMode: Text.Wrap } CustomButton { - id: closeButton + id: placeholder Layout.rowSpan: headerGridLayout.rows Layout.preferredWidth: Style.iconButtonWidth @@ -233,18 +253,24 @@ Page { bgNormalOpacity: 0 toolTipText: qsTr("Dismiss") + font.pixelSize: pixelSize + font.weight: fontWeight + + onClicked: root.closeShareDetails() } EnforcedPlainTextLabel { - id: secondaryLabel + id: fileDetailsLabel Layout.fillWidth: true - Layout.rightMargin: root.padding + Layout.rightMargin: headerGridLayout.textRightMargin - text: root.fileDetails.name - color: palette.midlight + text: `${root.fileDetails.sizeString}, ${root.fileDetails.lastChangedString}` wrapMode: Text.Wrap + + font.pixelSize: hintPixelSize + font.weight: hintFontWeight } } } @@ -258,277 +284,13 @@ Page { readonly property int rowIconWidth: Style.smallIconSize readonly property int indicatorItemWidth: 20 - readonly property int indicatorSpacing: Style.standardSpacing - readonly property int itemPadding: Style.smallSpacing + readonly property int indicatorSpacing: Style.sesSmallMargin + readonly property int itemPadding: Style.sesSmallMargin width: parent.width - RowLayout { - Layout.fillWidth: true - height: visible ? implicitHeight : 0 - spacing: scrollContentsColumn.indicatorSpacing - - visible: root.isLinkShare - - Image { - Layout.preferredWidth: scrollContentsColumn.indicatorItemWidth - Layout.fillHeight: true - - verticalAlignment: Image.AlignVCenter - horizontalAlignment: Image.AlignHCenter - fillMode: Image.Pad - - source: "image://svgimage-custom-color/edit.svg/" + palette.dark - sourceSize.width: scrollContentsColumn.rowIconWidth - sourceSize.height: scrollContentsColumn.rowIconWidth - } - - NCInputTextField { - id: linkShareLabelTextField - - Layout.fillWidth: true - height: visible ? implicitHeight : 0 - - text: root.linkShareLabel - placeholderText: qsTr("Share label") - - enabled: root.isLinkShare && - !root.waitingForLinkShareLabelChange - - onAccepted: if(text !== root.linkShareLabel) { - root.setLinkShareLabel(text); - root.waitingForLinkShareLabelChange = true; - } - - NCBusyIndicator { - anchors.fill: parent - visible: root.waitingForLinkShareLabelChange - running: visible - z: 1 - } - } - } - - Loader { - Layout.fillWidth: true - active: !root.isFolderItem && !root.isEncryptedItem - visible: active - sourceComponent: CheckBox { - // TODO: Rather than setting all these palette colours manually, - // create a custom style and do it for all components globally. - // - // Additionally, we need to override the entire palette when we - // set one palette property, as otherwise we default back to the - // theme palette -- not the parent palette - palette { - text: Style.ncTextColor - windowText: Style.ncTextColor - buttonText: Style.ncTextColor - brightText: Style.ncTextBrightColor - highlight: Style.lightHover - highlightedText: Style.ncTextColor - light: Style.lightHover - midlight: Style.ncSecondaryTextColor - mid: Style.darkerHover - dark: Style.menuBorder - button: Style.buttonBackgroundColor - window: Style.menuBorder - base: Style.backgroundColor - toolTipBase: Style.backgroundColor - toolTipText: Style.ncTextColor - } - - spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding - indicator.width: scrollContentsColumn.indicatorItemWidth - indicator.height: scrollContentsColumn.indicatorItemWidth - - checkable: true - checked: root.editingAllowed - text: qsTr("Allow upload and editing") - enabled: !root.isSharePermissionChangeInProgress - - onClicked: root.toggleAllowEditing(checked) - - NCBusyIndicator { - anchors.fill: parent - visible: root.isSharePermissionChangeInProgress - running: visible - z: 1 - } - } - } - - Loader { - Layout.fillWidth: true - active: root.isFolderItem && !root.isEncryptedItem - visible: active - sourceComponent: ColumnLayout { - id: permissionRadioButtonsLayout - spacing: 0 - width: parent.width - - ButtonGroup { - id: permissionModeRadioButtonsGroup - } - - NCRadioButton { - readonly property int permissionMode: ShareModel.ModeViewOnly - Layout.fillWidth: true - ButtonGroup.group: permissionModeRadioButtonsGroup - enabled: !root.isSharePermissionChangeInProgress - checked: root.currentPermissionMode === permissionMode - text: qsTr("View only") - indicatorItemWidth: scrollContentsColumn.indicatorItemWidth - indicatorItemHeight: scrollContentsColumn.indicatorItemWidth - spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding - onClicked: root.permissionModeChanged(permissionMode) - } - - NCRadioButton { - readonly property int permissionMode: ShareModel.ModeUploadAndEditing - Layout.fillWidth: true - ButtonGroup.group: permissionModeRadioButtonsGroup - enabled: !root.isSharePermissionChangeInProgress - checked: root.currentPermissionMode === permissionMode - text: qsTr("Allow upload and editing") - indicatorItemWidth: scrollContentsColumn.indicatorItemWidth - indicatorItemHeight: scrollContentsColumn.indicatorItemWidth - spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding - onClicked: root.permissionModeChanged(permissionMode) - } - - NCRadioButton { - readonly property int permissionMode: ShareModel.ModeFileDropOnly - Layout.fillWidth: true - ButtonGroup.group: permissionModeRadioButtonsGroup - enabled: !root.isSharePermissionChangeInProgress - checked: root.currentPermissionMode === permissionMode - text: qsTr("File drop (upload only)") - indicatorItemWidth: scrollContentsColumn.indicatorItemWidth - indicatorItemHeight: scrollContentsColumn.indicatorItemWidth - spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding - onClicked: root.permissionModeChanged(permissionMode) - } - - CheckBox { - id: allowResharingCheckBox - - Layout.fillWidth: true - - // TODO: Rather than setting all these palette colours manually, - // create a custom style and do it for all components globally. - // - // Additionally, we need to override the entire palette when we - // set one palette property, as otherwise we default back to the - // theme palette -- not the parent palette - palette { - text: Style.ncTextColor - windowText: Style.ncTextColor - buttonText: Style.ncTextColor - brightText: Style.ncTextBrightColor - highlight: Style.lightHover - highlightedText: Style.ncTextColor - light: Style.lightHover - midlight: Style.ncSecondaryTextColor - mid: Style.darkerHover - dark: Style.menuBorder - button: Style.buttonBackgroundColor - window: palette.dark // NOTE: Fusion theme uses darker window colour for the border of the checkbox - base: Style.backgroundColor - toolTipBase: Style.backgroundColor - toolTipText: Style.ncTextColor - } - - spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding - indicator.width: scrollContentsColumn.indicatorItemWidth - indicator.height: scrollContentsColumn.indicatorItemWidth - - checkable: true - checked: root.resharingAllowed - text: qsTr("Allow resharing") - enabled: !root.isSharePermissionChangeInProgress && root.serverAllowsResharing - visible: root.serverAllowsResharing - onClicked: root.toggleAllowResharing(checked); - - Connections { - target: root - onResharingAllowedChanged: allowResharingCheckBox.checked = root.resharingAllowed - } - } - } - - NCBusyIndicator { - anchors.fill: parent - visible: root.isSharePermissionChangeInProgress - running: visible - z: 1 - } - } - - Loader { - Layout.fillWidth: true - - active: root.isLinkShare - visible: active - sourceComponent: ColumnLayout { - CheckBox { - id: hideDownloadEnabledMenuItem - - anchors.left: parent.left - anchors.right: parent.right - - // TODO: Rather than setting all these palette colours manually, - // create a custom style and do it for all components globally. - // - // Additionally, we need to override the entire palette when we - // set one palette property, as otherwise we default back to the - // theme palette -- not the parent palette - palette { - text: Style.ncTextColor - windowText: Style.ncTextColor - buttonText: Style.ncTextColor - brightText: Style.ncTextBrightColor - highlight: Style.lightHover - highlightedText: Style.ncTextColor - light: Style.lightHover - midlight: Style.ncSecondaryTextColor - mid: Style.darkerHover - dark: Style.menuBorder - button: Style.buttonBackgroundColor - window: palette.dark // NOTE: Fusion theme uses darker window colour for the border of the checkbox - base: Style.backgroundColor - toolTipBase: Style.backgroundColor - toolTipText: Style.ncTextColor - } - - spacing: scrollContentsColumn.indicatorSpacing - padding: scrollContentsColumn.itemPadding - indicator.width: scrollContentsColumn.indicatorItemWidth - indicator.height: scrollContentsColumn.indicatorItemWidth - - checked: root.hideDownload - text: qsTr("Hide download") - enabled: !root.isHideDownloadInProgress - onClicked: root.toggleHideDownload(checked); - - NCBusyIndicator { - anchors.fill: parent - visible: root.isHideDownloadInProgress - running: visible - z: 1 - } - } - } - } - CheckBox { id: passwordProtectEnabledMenuItem - Layout.fillWidth: true // TODO: Rather than setting all these palette colours manually, @@ -555,6 +317,9 @@ Page { toolTipText: Style.ncTextColor } + font.pixelSize: pixelSize + font.weight: fontWeight + spacing: scrollContentsColumn.indicatorSpacing padding: scrollContentsColumn.itemPadding indicator.width: scrollContentsColumn.indicatorItemWidth @@ -564,70 +329,14 @@ Page { checked: root.passwordProtectEnabled text: qsTr("Password protect") visible: root.shareSupportsPassword - enabled: visible && - !root.waitingForPasswordProtectEnabledChange && + enabled: visible && + !root.waitingForPasswordProtectEnabledChange && !root.passwordEnforced onClicked: { root.togglePasswordProtect(checked); root.waitingForPasswordProtectEnabledChange = true; } - - NCBusyIndicator { - anchors.fill: parent - visible: root.waitingForPasswordProtectEnabledChange - running: visible - z: 1 - } - } - - RowLayout { - Layout.fillWidth: true - - height: visible ? implicitHeight : 0 - spacing: scrollContentsColumn.indicatorSpacing - - visible: root.shareSupportsPassword && root.passwordProtectEnabled - - Image { - Layout.preferredWidth: scrollContentsColumn.indicatorItemWidth - Layout.fillHeight: true - - verticalAlignment: Image.AlignVCenter - horizontalAlignment: Image.AlignHCenter - fillMode: Image.Pad - - source: "image://svgimage-custom-color/lock-https.svg/" + palette.dark - sourceSize.width: scrollContentsColumn.rowIconWidth - sourceSize.height: scrollContentsColumn.rowIconWidth - } - - NCInputTextField { - id: passwordTextField - - Layout.fillWidth: true - height: visible ? implicitHeight : 0 - - text: root.password !== "" ? root.password : root.passwordPlaceholder - enabled: visible && - root.passwordProtectEnabled && - !root.waitingForPasswordChange && - !root.waitingForPasswordProtectEnabledChange - - onAccepted: if(text !== root.password && text !== root.passwordPlaceholder) { - passwordErrorBoxLoader.message = ""; - root.setPassword(text); - root.waitingForPasswordChange = true; - } - - NCBusyIndicator { - anchors.fill: parent - visible: root.waitingForPasswordChange || - root.waitingForPasswordProtectEnabledChange - running: visible - z: 1 - } - } } Loader { @@ -648,7 +357,7 @@ Page { // Artificially add vertical padding implicitHeight: passwordErrorBox.implicitHeight + (Style.smallSpacing * 2) - ErrorBox { + SesErrorBox { id: passwordErrorBox anchors.left: parent.left anchors.right: parent.right @@ -659,6 +368,44 @@ Page { } } + TextEdit { + id: passwordTextEdit + visible: root.passwordProtectEnabled + Layout.fillWidth: true + Layout.leftMargin: 3 + Layout.rightMargin: 3 + height: visible ? 64 : 0 + wrapMode: TextEdit.Wrap + selectByMouse: true + text: root.password !== "" ? root.password : root.passwordPlaceholder + + font.family: root.font.family + font.pixelSize: pixelSize + font.weight: fontWeight + + padding: scrollContentsColumn.itemPadding + enabled: visible && + root.passwordProtectEnabled && + !root.waitingForPasswordChange && + !root.waitingForPasswordProtectEnabledChange + + onEditingFinished: if(text !== root.password && text !== root.passwordPlaceholder) { + passwordErrorBoxLoader.message = ""; + root.setPassword(text); + root.waitingForPasswordChange = true; + } + + Rectangle { + id: passwordTextBorder + anchors.fill: parent + radius: Style.slightlyRoundedButtonRadius + border.width: Style.thickBorderWidth + border.color: Style.sesTrayInputField + color: palette.base + z: -1 + } + } + CheckBox { id: expireDateEnabledMenuItem @@ -688,6 +435,9 @@ Page { toolTipText: Style.ncTextColor } + font.pixelSize: pixelSize + font.weight: fontWeight + spacing: scrollContentsColumn.indicatorSpacing padding: scrollContentsColumn.itemPadding indicator.width: scrollContentsColumn.indicatorItemWidth @@ -702,73 +452,286 @@ Page { root.toggleExpirationDate(checked); root.waitingForExpireDateEnabledChange = true; } + } + + NCInputDateField { + id: expireDateField + + font.pixelSize: pixelSize + font.weight: fontWeight + + Layout.fillWidth: true + Layout.leftMargin: 3 + Layout.rightMargin: 3 + height: visible ? implicitHeight : 0 + leftPadding: 15 + + visible: root.expireDateEnabled + + selectByMouse: true + + dateInMs: root.expireDate + maximumDateMs: root.maximumExpireDate + minimumDateMs: { + const currentDate = new Date(); + const currentYear = currentDate.getFullYear(); + const currentMonth = currentDate.getMonth(); + const currentMonthDay = currentDate.getDate(); + // Start of day at 00:00:0000 + return Date.UTC(currentYear, currentMonth, currentMonthDay + 1); + } + + + enabled: root.expireDateEnabled && + !root.waitingForExpireDateChange && + !root.waitingForExpireDateEnabledChange + + onUserAcceptedDate: { + root.setExpireDate(dateInMs); + root.waitingForExpireDateChange = true; + } - NCBusyIndicator { + Rectangle { + id: dateTextBorder anchors.fill: parent - visible: root.waitingForExpireDateEnabledChange - running: visible - z: 1 + radius: Style.slightlyRoundedButtonRadius + border.width: Style.thickBorderWidth + border.color: Style.sesTrayInputField + color: palette.base + z: -1 } } - RowLayout { + ColumnLayout { Layout.fillWidth: true height: visible ? implicitHeight : 0 - spacing: scrollContentsColumn.indicatorSpacing + spacing: Style.extraSmallSpacing - visible: root.expireDateEnabled + CheckBox { + id: noteEnabledMenuItem + + Layout.fillWidth: true + + // TODO: Rather than setting all these palette colours manually, + // create a custom style and do it for all components globally. + // + // Additionally, we need to override the entire palette when we + // set one palette property, as otherwise we default back to the + // theme palette -- not the parent palette + palette { + text: Style.ncTextColor + windowText: Style.ncTextColor + buttonText: Style.ncTextColor + brightText: Style.ncTextBrightColor + highlight: Style.lightHover + highlightedText: Style.ncTextColor + light: Style.lightHover + midlight: Style.ncSecondaryTextColor + mid: Style.darkerHover + dark: Style.menuBorder + button: Style.buttonBackgroundColor + window: Style.menuBorder + base: Style.backgroundColor + toolTipBase: Style.backgroundColor + toolTipText: Style.ncTextColor + } + + font.pixelSize: pixelSize + font.weight: fontWeight - Image { - Layout.preferredWidth: scrollContentsColumn.indicatorItemWidth - Layout.fillHeight: true - verticalAlignment: Image.AlignVCenter - horizontalAlignment: Image.AlignHCenter - fillMode: Image.Pad + spacing: scrollContentsColumn.indicatorSpacing + padding: scrollContentsColumn.itemPadding + indicator.width: scrollContentsColumn.indicatorItemWidth + indicator.height: scrollContentsColumn.indicatorItemWidth + + checkable: true + checked: root.noteEnabled + text: qsTr("Note to recipient") + enabled: !root.waitingForNoteEnabledChange - source: "image://svgimage-custom-color/calendar.svg/" + palette.dark - sourceSize.width: scrollContentsColumn.rowIconWidth - sourceSize.height: scrollContentsColumn.rowIconWidth + onClicked: { + root.toggleNoteToRecipient(checked); + root.waitingForNoteEnabledChange = true; + } } - NCInputDateField { - id: expireDateField + Text{ + text: qsTr("Enter the note to recipient") + color: Style.sesGray + padding: scrollContentsColumn.itemPadding + visible: root.noteEnabled + font.family: root.font.family + font.pixelSize: pixelSize + font.weight: fontWeight + } + TextEdit { + id: noteTextEdit + visible: root.noteEnabled + font.family: root.font.family + font.pixelSize: pixelSize + font.weight: fontWeight Layout.fillWidth: true - height: visible ? implicitHeight : 0 - - dateInMs: root.expireDate - maximumDateMs: root.maximumExpireDate - minimumDateMs: { - const currentDate = new Date(); - const currentYear = currentDate.getFullYear(); - const currentMonth = currentDate.getMonth(); - const currentMonthDay = currentDate.getDate(); - // Start of day at 00:00:0000 UTC - return Date.UTC(currentYear, currentMonth, currentMonthDay + 1); + Layout.leftMargin: 3 + Layout.rightMargin: 3 + height: visible ? 64 : 0 + wrapMode: TextEdit.Wrap + selectByMouse: true + padding: scrollContentsColumn.itemPadding + enabled: root.noteEnabled && + !root.waitingForNoteChange && + !root.waitingForNoteEnabledChange + + onEditingFinished: if(text !== "") { + root.setNote(text); + root.waitingForNoteChange = true; + } + + Rectangle { + id: noteTextBorder + anchors.fill: parent + radius: Style.slightlyRoundedButtonRadius + border.width: Style.thickBorderWidth + border.color: Style.sesTrayInputField + color: palette.base + z: -1 } + } + } + + Loader { + Layout.fillWidth: true + active: !root.isFolderItem && !root.isEncryptedItem + visible: active + sourceComponent: CheckBox { + // TODO: Rather than setting all these palette colours manually, + // create a custom style and do it for all components globally. + // + // Additionally, we need to override the entire palette when we + // set one palette property, as otherwise we default back to the + // theme palette -- not the parent palette + palette { + text: Style.ncTextColor + windowText: Style.ncTextColor + buttonText: Style.ncTextColor + brightText: Style.ncTextBrightColor + highlight: Style.lightHover + highlightedText: Style.ncTextColor + light: Style.lightHover + midlight: Style.ncSecondaryTextColor + mid: Style.darkerHover + dark: Style.menuBorder + button: Style.buttonBackgroundColor + window: Style.menuBorder + base: Style.backgroundColor + toolTipBase: Style.backgroundColor + toolTipText: Style.ncTextColor + } + + font.pixelSize: pixelSize + font.weight: fontWeight - enabled: root.expireDateEnabled && - !root.waitingForExpireDateChange && - !root.waitingForExpireDateEnabledChange + spacing: scrollContentsColumn.indicatorSpacing + padding: scrollContentsColumn.itemPadding + indicator.width: scrollContentsColumn.indicatorItemWidth + indicator.height: scrollContentsColumn.indicatorItemWidth + + checkable: true + checked: root.editingAllowed + text: qsTr("Allow upload and editing") + enabled: !root.isSharePermissionChangeInProgress + + onClicked: root.toggleAllowEditing(checked) + } + } + + Loader { + Layout.fillWidth: true + active: root.isFolderItem && !root.isEncryptedItem + visible: active + sourceComponent: ColumnLayout { + id: permissionRadioButtonsLayout + spacing: 0 + width: parent.width - onUserAcceptedDate: { - root.setExpireDate(dateInMs); - root.waitingForExpireDateChange = true; + ButtonGroup { + id: permissionModeRadioButtonsGroup } - NCBusyIndicator { - anchors.fill: parent - visible: root.waitingForExpireDateEnabledChange || - root.waitingForExpireDateChange - running: visible - z: 1 + CheckBox { + id: customPermissionsCheckBox + Layout.fillWidth: true + enabled: !root.isSharePermissionChangeInProgress + checked: root.currentPermissionMode === permissionMode + text: qsTr("Custom Permissions") + spacing: scrollContentsColumn.indicatorSpacing + padding: scrollContentsColumn.itemPadding + indicator.width: scrollContentsColumn.indicatorItemWidth + indicator.height: scrollContentsColumn.indicatorItemWidth + onClicked: root.permissionModeChanged(permissionMode) + font.pixelSize: pixelSize + font.weight: fontWeight + } + + CheckBox { + readonly property int permissionMode: ShareModel.ModeViewOnly + Layout.fillWidth: true + Layout.leftMargin: 30 + ButtonGroup.group: permissionModeRadioButtonsGroup + enabled: !root.isSharePermissionChangeInProgress + checked: root.currentPermissionMode === permissionMode + text: qsTr("View only") + indicator.width: scrollContentsColumn.indicatorItemWidth + indicator.height: scrollContentsColumn.indicatorItemWidth + spacing: scrollContentsColumn.indicatorSpacing + padding: scrollContentsColumn.itemPadding + onClicked: root.permissionModeChanged(permissionMode) + visible: customPermissionsCheckBox.checked + font.pixelSize: pixelSize + font.weight: fontWeight + } + + CheckBox { + readonly property int permissionMode: ShareModel.ModeUploadAndEditing + Layout.fillWidth: true + Layout.leftMargin: 30 + ButtonGroup.group: permissionModeRadioButtonsGroup + enabled: !root.isSharePermissionChangeInProgress + checked: root.currentPermissionMode === permissionMode + text: qsTr("Allow upload and editing") + indicator.width: scrollContentsColumn.indicatorItemWidth + indicator.height: scrollContentsColumn.indicatorItemWidth + spacing: scrollContentsColumn.indicatorSpacing + padding: scrollContentsColumn.itemPadding + onClicked: root.permissionModeChanged(permissionMode) + visible: customPermissionsCheckBox.checked + font.pixelSize: pixelSize + font.weight: fontWeight + } + + CheckBox { + readonly property int permissionMode: ShareModel.ModeFileDropOnly + Layout.fillWidth: true + Layout.leftMargin: 30 + ButtonGroup.group: permissionModeRadioButtonsGroup + enabled: !root.isSharePermissionChangeInProgress + checked: root.currentPermissionMode === permissionMode + text: qsTr("File drop (upload only)") + indicator.width: scrollContentsColumn.indicatorItemWidth + indicator.height: scrollContentsColumn.indicatorItemWidth + spacing: scrollContentsColumn.indicatorSpacing + padding: scrollContentsColumn.itemPadding + onClicked: root.permissionModeChanged(permissionMode) + visible: customPermissionsCheckBox.checked + font.pixelSize: pixelSize + font.weight: fontWeight } } } CheckBox { - id: noteEnabledMenuItem + id: allowResharingCheckBox Layout.fillWidth: true @@ -790,131 +753,140 @@ Page { mid: Style.darkerHover dark: Style.menuBorder button: Style.buttonBackgroundColor - window: Style.menuBorder + window: palette.dark // NOTE: Fusion theme uses darker window colour for the border of the checkbox base: Style.backgroundColor toolTipBase: Style.backgroundColor toolTipText: Style.ncTextColor } + font.pixelSize: pixelSize + font.weight: fontWeight + spacing: scrollContentsColumn.indicatorSpacing padding: scrollContentsColumn.itemPadding indicator.width: scrollContentsColumn.indicatorItemWidth indicator.height: scrollContentsColumn.indicatorItemWidth checkable: true - checked: root.noteEnabled - text: qsTr("Note to recipient") - enabled: !root.waitingForNoteEnabledChange - - onClicked: { - root.toggleNoteToRecipient(checked); - root.waitingForNoteEnabledChange = true; - } - - NCBusyIndicator { - anchors.fill: parent - visible: root.waitingForNoteEnabledChange - running: visible - z: 1 + checked: root.resharingAllowed + text: qsTr("Allow resharing") + enabled: !root.isSharePermissionChangeInProgress && root.serverAllowsResharing + visible: root.serverAllowsResharing + onClicked: root.toggleAllowResharing(checked); + + Connections { + target: root + onResharingAllowedChanged: allowResharingCheckBox.checked = root.resharingAllowed } } - RowLayout { + Loader { Layout.fillWidth: true - height: visible ? implicitHeight : 0 - spacing: scrollContentsColumn.indicatorSpacing - visible: root.noteEnabled + active: root.isLinkShare + visible: active + sourceComponent: ColumnLayout { + CheckBox { + id: hideDownloadEnabledMenuItem + + anchors.left: parent.left + anchors.right: parent.right + + // TODO: Rather than setting all these palette colours manually, + // create a custom style and do it for all components globally. + // + // Additionally, we need to override the entire palette when we + // set one palette property, as otherwise we default back to the + // theme palette -- not the parent palette + palette { + text: Style.ncTextColor + windowText: Style.ncTextColor + buttonText: Style.ncTextColor + brightText: Style.ncTextBrightColor + highlight: Style.lightHover + highlightedText: Style.ncTextColor + light: Style.lightHover + midlight: Style.ncSecondaryTextColor + mid: Style.darkerHover + dark: Style.menuBorder + button: Style.buttonBackgroundColor + window: palette.dark // NOTE: Fusion theme uses darker window colour for the border of the checkbox + base: Style.backgroundColor + toolTipBase: Style.backgroundColor + toolTipText: Style.ncTextColor + } - Image { - Layout.preferredWidth: scrollContentsColumn.indicatorItemWidth - Layout.fillHeight: true + font.pixelSize: pixelSize + font.weight: fontWeight - verticalAlignment: Image.AlignVCenter - horizontalAlignment: Image.AlignHCenter - fillMode: Image.Pad + spacing: scrollContentsColumn.indicatorSpacing + padding: scrollContentsColumn.itemPadding + indicator.width: scrollContentsColumn.indicatorItemWidth + indicator.height: scrollContentsColumn.indicatorItemWidth - source: "image://svgimage-custom-color/edit.svg/" + palette.dark - sourceSize.width: scrollContentsColumn.rowIconWidth - sourceSize.height: scrollContentsColumn.rowIconWidth + checked: root.hideDownload + text: qsTr("Hide download") + enabled: !root.isHideDownloadInProgress + onClicked: root.toggleHideDownload(checked); + } } + } + } + } - NCInputTextEdit { - id: noteTextEdit + footer: GridLayout { + id: buttonGrid - Layout.fillWidth: true - height: visible ? Math.max(Style.talkReplyTextFieldPreferredHeight, contentHeight) : 0 - submitButton.height: Math.min(Style.talkReplyTextFieldPreferredHeight, height - 2) + columns: 1 + rows: 2 - text: root.note - enabled: root.noteEnabled && - !root.waitingForNoteChange && - !root.waitingForNoteEnabledChange + SesCustomButton { + Layout.columnSpan: buttonGrid.columns - onEditingFinished: if(text !== root.note) { - root.setNote(text); - root.waitingForNoteChange = true; - } + icon.source: Style.sesLightPlus - NCBusyIndicator { - anchors.fill: parent - visible: root.waitingForNoteChange || - root.waitingForNoteEnabledChange - running: visible - z: 1 - } - } - } + font.pixelSize: pixelSize + font.weight: fontWeight + text: qsTr("Add another link") + textColor: palette.brightText - CustomButton { - height: Style.standardPrimaryButtonHeight - - icon.source: "image://svgimage-custom-color/close.svg/" + Style.errorBoxBackgroundColor - imageSourceHover: "image://svgimage-custom-color/close.svg/" + palette.brightText - text: qsTr("Unshare") - textColor: Style.errorBoxBackgroundColor - textColorHovered: "white" - contentsFont.bold: true - bgNormalColor: palette.button - bgHoverColor: Style.errorBoxBackgroundColor - bgNormalOpacity: 1.0 - bgHoverOpacity: 1.0 - - onClicked: root.deleteShare() - } + bgColor: Style.sesActionPressed + bgNormalOpacity: 1.0 + bgHoverOpacity: Style.hoverOpacity - CustomButton { - height: Style.standardPrimaryButtonHeight - - icon.source: "image://svgimage-custom-color/add.svg/" + root.accentColor - imageSourceHover: "image://svgimage-custom-color/add.svg/" + palette.brightText - text: qsTr("Add another link") - textColor: root.accentColor - textColorHovered: palette.brightText - contentsFont.bold: true - bgNormalColor: palette.button - bgHoverColor: root.accentColor - bgNormalOpacity: 1.0 - bgHoverOpacity: 1.0 - - visible: root.isLinkShare && root.canCreateLinkShares - enabled: visible - - onClicked: root.createNewLinkShare() - } + visible: root.isLinkShare && root.canCreateLinkShares + enabled: visible + + Layout.leftMargin: 16 + Layout.bottomMargin: 16 + Layout.row: 0 + + onClicked: root.createNewLinkShare() } - } - footer: DialogButtonBox { - topPadding: 0 - bottomPadding: root.padding - rightPadding: root.padding - leftPadding: root.padding - alignment: Qt.AlignRight | Qt.AlignVCenter - contentWidth: (contentItem as ListView).contentWidth - visible: copyShareLinkButton.visible + SesCustomButton { + id: unshareButton - CustomButton { + font.pixelSize: pixelSize + font.weight: fontWeight + text: qsTr("Unshare") + textColor: Style.sesActionPressed + + bgColor: palette.highlight + bgNormalOpacity: 1.0 + + bgBorderWidth: 2 + bgBorderColor: Style.sesActionPressed + bgHoverOpacity: Style.hoverOpacity + + Layout.bottomMargin: 16 + Layout.leftMargin: 16 + Layout.rightMargin: 60 + Layout.row: 1 + onClicked: root.deleteShare() + } + + SesCustomButton { id: copyShareLinkButton function copyShareLink() { @@ -929,13 +901,14 @@ Page { property bool shareLinkCopied: false - height: Style.standardPrimaryButtonHeight + icon.source: Style.sesClipboard - icon.source: "image://svgimage-custom-color/copy.svg/" + palette.brightText + font.pixelSize: pixelSize + font.weight: fontWeight text: shareLinkCopied ? qsTr("Share link copied!") : qsTr("Copy share link") textColor: palette.brightText - contentsFont.bold: true - bgColor: shareLinkCopied ? Style.positiveColor : root.accentColor + + bgColor: Style.sesActionPressed bgNormalOpacity: 1.0 bgHoverOpacity: shareLinkCopied ? 1.0 : Style.hoverOpacity @@ -944,6 +917,11 @@ Page { onClicked: copyShareLink() + Layout.alignment: Qt.AlignRight + Layout.bottomMargin: 16 + Layout.rightMargin: 20 + Layout.row: 1 + Behavior on bgColor { ColorAnimation { duration: Style.shortAnimationDuration } } diff --git a/src/gui/filedetails/ShareView.qml b/src/gui/filedetails/ShareView.qml index c4c58fde14910..3ab3237db4be0 100644 --- a/src/gui/filedetails/ShareView.qml +++ b/src/gui/filedetails/ShareView.qml @@ -17,9 +17,10 @@ import QtQuick.Window 2.15 import QtQuick.Layouts 1.2 import QtQuick.Controls 2.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 import "../tray" +import "../SesComponents" import "../" ColumnLayout { @@ -123,20 +124,14 @@ ColumnLayout { } } - ErrorBox { + SesErrorBox { id: errorBox Layout.fillWidth: true Layout.leftMargin: root.horizontalPadding Layout.rightMargin: root.horizontalPadding - showCloseButton: true visible: false - - onCloseButtonClicked: { - text = ""; - visible = false; - } } ShareeSearchField { @@ -144,6 +139,7 @@ ColumnLayout { Layout.fillWidth: true Layout.leftMargin: root.horizontalPadding Layout.rightMargin: root.horizontalPadding + Layout.preferredHeight: Style.sesSearchFieldHeight visible: root.userGroupSharingPossible enabled: visible && !root.loading && !root.shareModel.isShareDisabledEncryptedFolder && !shareeSearchField.isShareeFetchOngoing @@ -165,6 +161,7 @@ ColumnLayout { Layout.fillHeight: true Layout.leftMargin: root.horizontalPadding Layout.rightMargin: root.horizontalPadding + Layout.topMargin: Style.sesMediumMargin active: root.sharingPossible @@ -186,61 +183,71 @@ ColumnLayout { sourceModel: root.shareModel } - delegate: ShareDelegate { - id: shareDelegate - - Connections { - target: root.shareModel - // Though we try to handle this internally by listening to onPasswordChanged, - // with passwords we will get the same value from the model data when a - // password set has failed, meaning we won't be able to easily tell when we - // have had a response from the server in QML. So we listen to this signal - // directly from the model and do the reset of the password field manually. - function onPasswordSetError(shareId, errorCode, errorMessage) { - if(shareId !== model.shareId) { - return; + delegate: ColumnLayout{ + width: parent.width + ShareDelegate { + id: shareDelegate + + Connections { + target: root.shareModel + // Though we try to handle this internally by listening to onPasswordChanged, + // with passwords we will get the same value from the model data when a + // password set has failed, meaning we won't be able to easily tell when we + // have had a response from the server in QML. So we listen to this signal + // directly from the model and do the reset of the password field manually. + function onPasswordSetError(shareId, errorCode, errorMessage) { + if(shareId !== model.shareId) { + return; + } + shareDelegate.resetPasswordField(); + shareDelegate.showPasswordSetError(errorMessage); } - shareDelegate.resetPasswordField(); - shareDelegate.showPasswordSetError(errorMessage); - } - function onServerError() { - if(shareId !== model.shareId) { - return; + function onServerError() { + if(shareId !== model.shareId) { + return; + } + shareDelegate.resetMenu(); } - shareDelegate.resetMenu(); } - } - iconSize: root.iconSize - fileDetails: root.fileDetails - rootStackView: root.rootStackView - backgroundsVisible: root.backgroundsVisible - accentColor: root.accentColor - canCreateLinkShares: root.publicLinkSharingPossible - serverAllowsResharing: root.serverAllowsResharing - - onCreateNewLinkShare: { - root.waitingForSharesToChange = true; - shareModel.createNewLinkShare(); - } - onDeleteShare: { - root.waitingForSharesToChange = true; - shareModel.deleteShareFromQml(model.share); + iconSize: root.iconSize + fileDetails: root.fileDetails + rootStackView: root.rootStackView + backgroundsVisible: root.backgroundsVisible + accentColor: Style.sesIconColor + canCreateLinkShares: root.publicLinkSharingPossible + serverAllowsResharing: root.serverAllowsResharing + + onCreateNewLinkShare: { + root.waitingForSharesToChange = true; + shareModel.createNewLinkShare(); + } + onDeleteShare: { + root.waitingForSharesToChange = true; + shareModel.deleteShareFromQml(model.share); + } + + onToggleAllowEditing: shareModel.toggleShareAllowEditingFromQml(model.share, enable) + onToggleAllowResharing: shareModel.toggleShareAllowResharingFromQml(model.share, enable) + onToggleHideDownload: shareModel.toggleHideDownloadFromQml(model.share, enable) + onTogglePasswordProtect: shareModel.toggleSharePasswordProtectFromQml(model.share, enable) + onToggleExpirationDate: shareModel.toggleShareExpirationDateFromQml(model.share, enable) + onToggleNoteToRecipient: shareModel.toggleShareNoteToRecipientFromQml(model.share, enable) + onPermissionModeChanged: shareModel.changePermissionModeFromQml(model.share, permissionMode) + + onSetLinkShareLabel: shareModel.setLinkShareLabelFromQml(model.share, label) + onSetExpireDate: shareModel.setShareExpireDateFromQml(model.share, milliseconds) + onSetPassword: shareModel.setSharePasswordFromQml(model.share, password) + onSetNote: shareModel.setShareNoteFromQml(model.share, note) + width: parent.width } - onToggleAllowEditing: shareModel.toggleShareAllowEditingFromQml(model.share, enable) - onToggleAllowResharing: shareModel.toggleShareAllowResharingFromQml(model.share, enable) - onToggleHideDownload: shareModel.toggleHideDownloadFromQml(model.share, enable) - onTogglePasswordProtect: shareModel.toggleSharePasswordProtectFromQml(model.share, enable) - onToggleExpirationDate: shareModel.toggleShareExpirationDateFromQml(model.share, enable) - onToggleNoteToRecipient: shareModel.toggleShareNoteToRecipientFromQml(model.share, enable) - onPermissionModeChanged: shareModel.changePermissionModeFromQml(model.share, permissionMode) - - onSetLinkShareLabel: shareModel.setLinkShareLabelFromQml(model.share, label) - onSetExpireDate: shareModel.setShareExpireDateFromQml(model.share, milliseconds) - onSetPassword: shareModel.setSharePasswordFromQml(model.share, password) - onSetNote: shareModel.setShareNoteFromQml(model.share, note) + Rectangle{ + height: Style.sesMediumMargin + color: "transparent" + width: parent.width + } } Loader { diff --git a/src/gui/filedetails/ShareeDelegate.qml b/src/gui/filedetails/ShareeDelegate.qml index 40b169d87be1e..debc44f733eb0 100644 --- a/src/gui/filedetails/ShareeDelegate.qml +++ b/src/gui/filedetails/ShareeDelegate.qml @@ -17,7 +17,7 @@ import QtQuick.Window 2.15 import QtQuick.Layouts 1.2 import QtQuick.Controls 2.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 import "../tray" @@ -62,6 +62,9 @@ ItemDelegate { Layout.preferredHeight: unifiedSearchResultSkeletonItemDetails.iconWidth Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft + font.pixelSize: Style.sesFontPixelSize + font.weight: Style.sesFontNormalWeight + Layout.fillWidth: true horizontalAlignment: Text.AlignLeft diff --git a/src/gui/filedetails/ShareeSearchField.qml b/src/gui/filedetails/ShareeSearchField.qml index 4246d54e9ed8d..c23c6e0e3225b 100644 --- a/src/gui/filedetails/ShareeSearchField.qml +++ b/src/gui/filedetails/ShareeSearchField.qml @@ -17,7 +17,7 @@ import QtQuick.Window 2.15 import QtQuick.Layouts 1.2 import QtQuick.Controls 2.15 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import Style 1.0 import "../tray" @@ -38,7 +38,7 @@ TextField { } readonly property int horizontalPaddingOffset: Style.trayHorizontalMargin - readonly property color placeholderColor: palette.dark + readonly property color placeholderColor: Style.sesSearchFieldContent readonly property double iconsScaleFactor: 0.6 function triggerSuggestionsVisibility() { @@ -48,6 +48,7 @@ TextField { placeholderText: enabled ? qsTr("Search for users or groups…") : qsTr("Sharing is not available for this folder") placeholderTextColor: placeholderColor + onActiveFocusChanged: triggerSuggestionsVisibility() onTextChanged: triggerSuggestionsVisibility() Keys.onPressed: { @@ -87,14 +88,14 @@ TextField { } } - leftPadding: searchIcon.width + searchIcon.anchors.leftMargin + horizontalPaddingOffset - rightPadding: clearTextButton.width + clearTextButton.anchors.rightMargin + horizontalPaddingOffset + leftPadding: searchIcon.width + searchIcon.anchors.leftMargin + horizontalPaddingOffset - 5 + rightPadding: root.text ? clearTextButton.width + clearTextButton.anchors.rightMargin + horizontalPaddingOffset : 5 background: Rectangle { radius: 5 - border.color: parent.activeFocus ? UserModel.currentUser.accentColor : palette.dark + border.color: Style.sesMenuBorder border.width: 1 - color: palette.base + } Image { @@ -114,7 +115,7 @@ TextField { fillMode: Image.PreserveAspectFit horizontalAlignment: Image.AlignLeft - source: "image://svgimage-custom-color/search.svg" + "/" + root.placeholderColor + source: "image://svgimage-custom-color/search.svg" + "/" + Style.sesSearchFieldContent sourceSize: Qt.size(parent.height * root.iconsScaleFactor, parent.height * root.iconsScaleFactor) visible: !root.shareeModel.fetchOngoing diff --git a/src/gui/filedetails/shareemodel.cpp b/src/gui/filedetails/shareemodel.cpp index 9710de710715b..9018bfa832839 100644 --- a/src/gui/filedetails/shareemodel.cpp +++ b/src/gui/filedetails/shareemodel.cpp @@ -23,7 +23,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcShareeModel, "com.nextcloud.shareemodel") +Q_LOGGING_CATEGORY(lcShareeModel, "com.ionos.hidrivenext.shareemodel") ShareeModel::ShareeModel(QObject *parent) : QAbstractListModel(parent) diff --git a/src/gui/filedetails/sharemodel.cpp b/src/gui/filedetails/sharemodel.cpp index ff849b84fb346..1c922fc8d4d08 100644 --- a/src/gui/filedetails/sharemodel.cpp +++ b/src/gui/filedetails/sharemodel.cpp @@ -36,7 +36,7 @@ static const auto secureFileDropPlaceholderLinkShareId = QStringLiteral("__secur namespace OCC { -Q_LOGGING_CATEGORY(lcShareModel, "com.nextcloud.sharemodel") +Q_LOGGING_CATEGORY(lcShareModel, "com.ionos.hidrivenext.sharemodel") ShareModel::ShareModel(QObject *parent) : QAbstractListModel(parent) @@ -674,11 +674,11 @@ QString ShareModel::iconUrlForShare(const SharePtr &share) const switch(share->getShareType()) { case Share::TypeInternalLink: - return QString(iconsPath + QStringLiteral("external.svg")); + return QString(iconsPath + QStringLiteral("externalLink.svg")); case Share::TypePlaceholderLink: case Share::TypeSecureFileDropPlaceholderLink: case Share::TypeLink: - return QString(iconsPath + QStringLiteral("public.svg")); + return QString(iconsPath + QStringLiteral("link.svg")); case Share::TypeEmail: return QString(iconsPath + QStringLiteral("email.svg")); case Share::TypeRoom: @@ -989,7 +989,7 @@ void ShareModel::toggleShareNoteToRecipient(const SharePtr &share, const bool en return; } - const QString note = enable ? tr("Enter a note for the recipient") : QString(); + const QString note = QString(); if (const auto linkShare = share.objectCast()) { linkShare->setNote(note); } else if (const auto userGroupShare = share.objectCast()) { diff --git a/src/gui/filedetails/sortedsharemodel.cpp b/src/gui/filedetails/sortedsharemodel.cpp index 9b9ef99a644bd..bcc5f3a06fd18 100644 --- a/src/gui/filedetails/sortedsharemodel.cpp +++ b/src/gui/filedetails/sortedsharemodel.cpp @@ -16,7 +16,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcSortedShareModel, "com.nextcloud.sortedsharemodel") +Q_LOGGING_CATEGORY(lcSortedShareModel, "com.ionos.hidrivenext.sortedsharemodel") SortedShareModel::SortedShareModel(QObject *parent) : QSortFilterProxyModel(parent) From 610aa56efe5a55f9cbc90d401e2864421ddf6c2b Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:28:45 +0100 Subject: [PATCH 012/104] style credentials --- src/gui/creds/webflowcredentials.cpp | 4 ++-- src/gui/creds/webflowcredentialsdialog.cpp | 22 ++++++++++++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/gui/creds/webflowcredentials.cpp b/src/gui/creds/webflowcredentials.cpp index 037485913d266..a388fd86838d5 100644 --- a/src/gui/creds/webflowcredentials.cpp +++ b/src/gui/creds/webflowcredentials.cpp @@ -163,8 +163,8 @@ void WebFlowCredentials::askFromUser() { _askDialog->setUrl(url); } - QString msg = tr("You have been logged out of your account %1 at %2. Please login again.") - .arg(_account->prettyName(), _account->url().toDisplayString()); + QString msg = tr("You have been logged out of your account %1 at %2. Please login again.") + .arg(_account->eliedName(200), _account->url().toDisplayString()); _askDialog->setInfo(msg); _askDialog->show(); diff --git a/src/gui/creds/webflowcredentialsdialog.cpp b/src/gui/creds/webflowcredentialsdialog.cpp index 4ec6747fc6ace..35284b294388f 100644 --- a/src/gui/creds/webflowcredentialsdialog.cpp +++ b/src/gui/creds/webflowcredentialsdialog.cpp @@ -7,6 +7,7 @@ #include "application.h" #include "owncloudgui.h" #include "wizard/owncloudwizardcommon.h" +#include "ionostheme.h" #ifdef WITH_WEBENGINE #include "wizard/webview.h" #endif // WITH_WEBENGINE @@ -20,6 +21,11 @@ WebFlowCredentialsDialog::WebFlowCredentialsDialog(Account *account, bool useFlo { setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + setStyleSheet(QStringLiteral("QDialog { background-color: %1; }").arg(IonosTheme::dialogBackgroundColor())); + + setFixedWidth(646); + setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum)); + _layout = new QVBoxLayout(this); int spacing = _layout->spacing(); int margin = _layout->margin(); @@ -31,12 +37,24 @@ WebFlowCredentialsDialog::WebFlowCredentialsDialog(Account *account, bool useFlo _containerLayout->setMargin(margin); _infoLabel = new QLabel(); - _infoLabel->setTextFormat(Qt::PlainText); + _infoLabel->setTextFormat(Qt::RichText); _infoLabel->setAlignment(Qt::AlignCenter); + _infoLabel->setWordWrap(true); + _infoLabel->setContentsMargins(0, 32, 0, 0); + _infoLabel->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTitleWeight600(), + IonosTheme::titleColor() + )); _containerLayout->addWidget(_infoLabel); + layout()->setSizeConstraint(QLayout::SetFixedSize); + if (_useFlow2) { _flow2AuthWidget = new Flow2AuthWidget(); + _flow2AuthWidget->shrinkTopMarginForText(); + _containerLayout->addWidget(_flow2AuthWidget); connect(_flow2AuthWidget, &Flow2AuthWidget::authResult, this, &WebFlowCredentialsDialog::slotFlow2AuthResult); @@ -113,7 +131,7 @@ void WebFlowCredentialsDialog::setError(const QString &error) { slotShowSettingsDialog(); if (_useFlow2 && _flow2AuthWidget) { - _flow2AuthWidget->setError(error); + _flow2AuthWidget->setError("Error", error); return; } From 4c098926161b45c8144aae31d048b03234e85d88 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:29:53 +0100 Subject: [PATCH 013/104] style settings --- src/gui/CMakeLists.txt | 26 +- src/gui/ConflictDelegate.qml | 2 +- src/gui/EmojiPicker.qml | 2 +- src/gui/ResolveConflictsDialog.qml | 2 +- src/gui/UserStatusSelector.qml | 2 +- src/gui/UserStatusSelectorPage.qml | 2 +- src/gui/accountsettings.cpp | 531 ++++++++----- src/gui/accountsettings.h | 5 + src/gui/accountsettings.ui | 712 +++++++++-------- src/gui/addcertificatedialog.cpp | 1 + src/gui/application.cpp | 43 +- src/gui/application.h | 3 +- src/gui/authenticationdialog.cpp | 1 + src/gui/caseclashfilenamedialog.cpp | 47 ++ src/gui/caseclashfilenamedialog.h | 2 + src/gui/caseclashfilenamedialog.ui | 18 +- src/gui/conflictdialog.cpp | 28 + src/gui/conflictdialog.h | 3 +- src/gui/foldercreationdialog.cpp | 56 +- src/gui/foldercreationdialog.h | 2 + src/gui/foldercreationdialog.ui | 186 +++-- src/gui/folderstatusdelegate.cpp | 337 +++++--- src/gui/folderstatusdelegate.h | 12 +- src/gui/folderstatusview.cpp | 10 +- src/gui/folderwizard.cpp | 332 +++++++- src/gui/folderwizard.h | 8 +- src/gui/folderwizardselectivesync.ui | 85 ++ src/gui/folderwizardsourcepage.ui | 175 ++-- src/gui/folderwizardtargetpage.ui | 349 +++++--- src/gui/generalsettings.cpp | 138 +++- src/gui/generalsettings.h | 9 +- src/gui/generalsettings.ui | 1097 +++++++++++++++----------- src/gui/ignorelisttablewidget.cpp | 128 ++- src/gui/ignorelisttablewidget.h | 4 + src/gui/ignorelisttablewidget.ui | 217 +++-- src/gui/invalidfilenamedialog.cpp | 50 +- src/gui/invalidfilenamedialog.h | 1 + src/gui/legalnotice.cpp | 1 + src/gui/linkbutton.cpp | 26 + src/gui/linkbutton.h | 23 + src/gui/logbrowser.cpp | 2 +- src/gui/main.cpp | 20 +- src/gui/owncloudgui.cpp | 57 +- src/gui/proxyauthdialog.cpp | 1 + src/gui/selectivesyncdialog.cpp | 81 +- src/gui/sessnackbar.cpp | 140 ++++ src/gui/sessnackbar.h | 62 ++ src/gui/settingsdialog.cpp | 110 ++- src/gui/systray.cpp | 19 +- 49 files changed, 3520 insertions(+), 1648 deletions(-) create mode 100644 src/gui/folderwizardselectivesync.ui create mode 100644 src/gui/linkbutton.cpp create mode 100644 src/gui/linkbutton.h create mode 100644 src/gui/sessnackbar.cpp create mode 100644 src/gui/sessnackbar.h diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index e5210b09783dc..74ad64430721b 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -18,6 +18,9 @@ endif() if(CMAKE_BUILD_TYPE MATCHES Debug) add_definitions(-DQT_QML_DEBUG) endif() +if(CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo") + add_definitions(-DBUILDTYPE_RELWITHDEBINFO) +endif() IF(BUILD_UPDATER) add_subdirectory(updater) @@ -156,6 +159,15 @@ set(client_SRCS syncrunfilelog.cpp systray.h systray.cpp + sesstyle.h + sesstyle.cpp + buttonstylestrategy.h + sesFileIconProvider.h + sesFileIconProvider.cpp + pushbuttonstylehelper.h + pushbuttonstylehelper.cpp + moreoptionsbuttonstylehelper.h + moreoptionsbuttonstylehelper.cpp buttonstyle.h thumbnailjob.h thumbnailjob.cpp @@ -191,8 +203,18 @@ set(client_SRCS emojimodel.cpp syncconflictsmodel.h syncconflictsmodel.cpp + linkbutton.h + linkbutton.cpp + sessnackbar.h + sessnackbar.cpp fileactivitylistmodel.h fileactivitylistmodel.cpp + ga4/ganalytics.h + ga4/ganalytics.cpp + ga4/ganalytics_worker.h + ga4/ganalytics_worker.cpp + ga4/datacollectionwrapper.cpp + ga4/datacollectionwrapper.h filedetails/datefieldbackend.h filedetails/datefieldbackend.cpp filedetails/filedetails.h @@ -203,6 +225,8 @@ set(client_SRCS filedetails/shareemodel.cpp filedetails/sortedsharemodel.h filedetails/sortedsharemodel.cpp + SesComponents/syncdirvalidation.h + SesComponents/syncdirvalidation.cpp tray/svgimageprovider.h tray/svgimageprovider.cpp tray/syncstatussummary.h @@ -764,7 +788,7 @@ if(BUILD_OWNCLOUD_OSX_BUNDLE AND NOT BUILD_LIBRARIES_ONLY) "$/../.." -qmldir=${CMAKE_SOURCE_DIR}/src/gui -always-overwrite - -executable="$/${cmd_NAME}" + -executable=$/${cmd_NAME} ${NO_STRIP} COMMAND "${CMAKE_COMMAND}" -E rm -rf "${BIN_OUTPUT_DIRECTORY}/${OWNCLOUD_OSX_BUNDLE}/Contents/PlugIns/bearer" diff --git a/src/gui/ConflictDelegate.qml b/src/gui/ConflictDelegate.qml index 915173507233a..716c55da835e2 100644 --- a/src/gui/ConflictDelegate.qml +++ b/src/gui/ConflictDelegate.qml @@ -17,7 +17,7 @@ import QtQuick 2.15 import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import "./tray" Item { diff --git a/src/gui/EmojiPicker.qml b/src/gui/EmojiPicker.qml index 9c1882ed433ff..0225ac0a5a5a5 100644 --- a/src/gui/EmojiPicker.qml +++ b/src/gui/EmojiPicker.qml @@ -17,7 +17,7 @@ import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 as NC +import com.ionos.hidrivenext.desktopclient 1.0 as NC import "./tray" ColumnLayout { diff --git a/src/gui/ResolveConflictsDialog.qml b/src/gui/ResolveConflictsDialog.qml index 285bd8c038a27..61d7cb454d6f1 100644 --- a/src/gui/ResolveConflictsDialog.qml +++ b/src/gui/ResolveConflictsDialog.qml @@ -19,7 +19,7 @@ import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 import QtQml.Models 2.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 import "./tray" ApplicationWindow { diff --git a/src/gui/UserStatusSelector.qml b/src/gui/UserStatusSelector.qml index 35c4793ce2d31..5816b0dd47f8c 100644 --- a/src/gui/UserStatusSelector.qml +++ b/src/gui/UserStatusSelector.qml @@ -17,7 +17,7 @@ import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 import QtQuick.Window 2.15 -import com.nextcloud.desktopclient 1.0 as NC +import com.ionos.hidrivenext.desktopclient 1.0 as NC import Style 1.0 import "./tray" diff --git a/src/gui/UserStatusSelectorPage.qml b/src/gui/UserStatusSelectorPage.qml index 42b92249f35ae..19c21104d0bdb 100644 --- a/src/gui/UserStatusSelectorPage.qml +++ b/src/gui/UserStatusSelectorPage.qml @@ -16,7 +16,7 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import Style 1.0 -import com.nextcloud.desktopclient 1.0 as NC +import com.ionos.hidrivenext.desktopclient 1.0 as NC Page { id: page diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index 8f5621704d47b..f4b21bea17b24 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -12,53 +12,55 @@ * for more details. */ - #include "accountsettings.h" #include "common/syncjournaldb.h" #include "common/syncjournalfilerecord.h" #include "qmessagebox.h" #include "ui_accountsettings.h" -#include "theme.h" -#include "foldercreationdialog.h" -#include "folderman.h" -#include "folderwizard.h" -#include "folderstatusmodel.h" -#include "folderstatusdelegate.h" -#include "common/utility.h" -#include "guiutility.h" -#include "application.h" -#include "configfile.h" +#include "ionostheme.h" +#include "buttonstyle.h" #include "account.h" -#include "accountstate.h" -#include "userinfo.h" #include "accountmanager.h" -#include "owncloudsetupwizard.h" +#include "accountstate.h" +#include "application.h" +#include "common/utility.h" +#include "configfile.h" #include "creds/abstractcredentials.h" #include "creds/httpcredentialsgui.h" -#include "tooltipupdater.h" -#include "filesystem.h" #include "encryptfolderjob.h" -#include "syncresult.h" +#include "filesystem.h" +#include "foldercreationdialog.h" +#include "folderman.h" +#include "folderstatusdelegate.h" +#include "folderstatusmodel.h" +#include "folderwizard.h" +#include "guiutility.h" #include "ignorelisttablewidget.h" -#include "wizard/owncloudwizard.h" +#include "owncloudsetupwizard.h" +#include "syncresult.h" +#include "theme.h" +#include "tooltipupdater.h" #include "ui_mnemonicdialog.h" +#include "userinfo.h" +#include "wizard/owncloudwizard.h" #include +#include #include #include #include +#include +#include +#include #include #include -#include -#include +#include #include -#include -#include +#include #include -#include -#include +#include #ifdef BUILD_FILE_PROVIDER_MODULE #include "macOS/fileprovider.h" @@ -66,7 +68,8 @@ #include "account.h" -namespace { +namespace +{ constexpr auto propertyFolder = "folder"; constexpr auto propertyPath = "path"; constexpr auto e2eUiActionIdKey = "id"; @@ -75,32 +78,32 @@ constexpr auto e2EeUiActionDisableEncryptionId = "disable_encryption"; constexpr auto e2EeUiActionDisplayMnemonicId = "display_mnemonic"; } -namespace OCC { +namespace OCC +{ class AccountSettings; Q_LOGGING_CATEGORY(lcAccountSettings, "nextcloud.gui.account.settings", QtInfoMsg) -static const char progressBarStyleC[] = - "QProgressBar {" - "border: 1px solid grey;" - "border-radius: 5px;" - "text-align: center;" - "}" - "QProgressBar::chunk {" - "background-color: %1; width: 1px;" - "}"; +const QString progressBarStyle() +{ + return QStringLiteral( + "QProgressBar { border: 1px solid grey; border-radius: 5px; text-align: center; }" + "QProgressBar::chunk { background-color: %1; width: 1px; }" + ); +} void showEnableE2eeWithVirtualFilesWarningDialog(std::function onAccept) { const auto messageBox = new QMessageBox; messageBox->setAttribute(Qt::WA_DeleteOnClose); messageBox->setText(AccountSettings::tr("End-to-end Encryption with Virtual Files")); - messageBox->setInformativeText(AccountSettings::tr("You seem to have the Virtual Files feature enabled on this folder. " - "At the moment, it is not possible to implicitly download virtual files that are " - "end-to-end encrypted. To get the best experience with virtual files and " - "end-to-end encryption, make sure the encrypted folder is marked with " - "\"Make always available locally\".")); + messageBox->setInformativeText( + AccountSettings::tr("You seem to have the Virtual Files feature enabled on this folder. " + "At the moment, it is not possible to implicitly download virtual files that are " + "end-to-end encrypted. To get the best experience with virtual files and " + "end-to-end encryption, make sure the encrypted folder is marked with " + "\"Make always available locally\".")); messageBox->setIcon(QMessageBox::Warning); const auto dontEncryptButton = messageBox->addButton(QMessageBox::StandardButton::Cancel); Q_ASSERT(dontEncryptButton); @@ -159,9 +162,9 @@ class MouseCursorChanger : public QObject Qt::CursorShape shape = Qt::ArrowCursor; const auto pos = folderList->mapFromGlobal(QCursor::pos()); const auto index = folderList->indexAt(pos); - if (model->classify(index) == FolderStatusModel::RootFolder && - (FolderStatusDelegate::errorsListRect(folderList->visualRect(index)).contains(pos) || - FolderStatusDelegate::optionsButtonRect(folderList->visualRect(index),folderList->layoutDirection()).contains(pos))) { + if (model->classify(index) == FolderStatusModel::RootFolder + && (FolderStatusDelegate::errorsListRect(folderList->visualRect(index)).contains(pos) + || FolderStatusDelegate::optionsButtonRect(folderList->visualRect(index), folderList->layoutDirection()).contains(pos))) { shape = Qt::PointingHandCursor; } folderList->setCursor(shape); @@ -187,6 +190,8 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent) // Connect styleChanged events to our widgets, so they can adapt (Dark-/Light-Mode switching) connect(this, &AccountSettings::styleChanged, delegate, &FolderStatusDelegate::slotStyleChanged); + _ui->_folderList->setFont(IonosTheme::settingsFontDefault()); + _ui->_folderList->header()->hide(); _ui->_folderList->setItemDelegate(delegate); _ui->_folderList->setModel(_model); @@ -222,21 +227,20 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent) _ui->_folderList->setAttribute(Qt::WA_Hover, true); _ui->_folderList->installEventFilter(mouseCursorChanger); - connect(this, &AccountSettings::removeAccountFolders, - AccountManager::instance(), &AccountManager::removeAccountFolders); - connect(_ui->_folderList, &QWidget::customContextMenuRequested, - this, &AccountSettings::slotCustomContextMenuRequested); - connect(_ui->_folderList, &QAbstractItemView::clicked, - this, &AccountSettings::slotFolderListClicked); +#ifdef Q_OS_MAC + _ui->expandMemoryButton->setAutoDefault(false); +#endif + + connect(this, &AccountSettings::removeAccountFolders, AccountManager::instance(), &AccountManager::removeAccountFolders); + connect(_ui->_folderList, &QWidget::customContextMenuRequested, this, &AccountSettings::slotCustomContextMenuRequested); + connect(_ui->_folderList, &QAbstractItemView::clicked, this, &AccountSettings::slotFolderListClicked); connect(_ui->_folderList, &QTreeView::expanded, this, &AccountSettings::refreshSelectiveSyncStatus); connect(_ui->_folderList, &QTreeView::collapsed, this, &AccountSettings::refreshSelectiveSyncStatus); - connect(_ui->selectiveSyncNotification, &QLabel::linkActivated, - this, &AccountSettings::slotLinkActivated); + connect(_ui->selectiveSyncNotification, &QLabel::linkActivated, this, &AccountSettings::slotLinkActivated); connect(_model, &FolderStatusModel::suggestExpand, _ui->_folderList, &QTreeView::expand); connect(_model, &FolderStatusModel::dirtyChanged, this, &AccountSettings::refreshSelectiveSyncStatus); refreshSelectiveSyncStatus(); - connect(_model, &QAbstractItemModel::rowsInserted, - this, &AccountSettings::refreshSelectiveSyncStatus); + connect(_model, &QAbstractItemModel::rowsInserted, this, &AccountSettings::refreshSelectiveSyncStatus); auto *syncNowAction = new QAction(this); syncNowAction->setShortcut(QKeySequence(Qt::Key_F6)); @@ -248,7 +252,6 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent) connect(syncNowWithRemoteDiscovery, &QAction::triggered, this, &AccountSettings::slotScheduleCurrentFolderForceRemoteDiscovery); addAction(syncNowWithRemoteDiscovery); - slotHideSelectiveSyncWidget(); _ui->bigFolderUi->setVisible(false); connect(_model, &QAbstractItemModel::dataChanged, this, &AccountSettings::slotSelectiveSyncChanged); @@ -264,11 +267,6 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent) connect(FolderMan::instance(), &FolderMan::folderListChanged, _model, &FolderStatusModel::resetFolders); connect(this, &AccountSettings::folderChanged, _model, &FolderStatusModel::resetFolders); - - // quotaProgressBar style now set in customizeStyle() - /*QColor color = palette().highlight().color(); - _ui->quotaProgressBar->setStyleSheet(QString::fromLatin1(progressBarStyleC).arg(color.name()));*/ - // Connect E2E stuff initializeE2eEncryption(); _ui->encryptionMessage->setCloseButtonVisible(false); @@ -278,8 +276,9 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent) connect(_accountState, &AccountState::stateChanged, this, &AccountSettings::slotAccountStateChanged); slotAccountStateChanged(); - connect(&_userInfo, &UserInfo::quotaUpdated, - this, &AccountSettings::slotUpdateQuota); + connect(&_userInfo, &UserInfo::quotaUpdated, this, &AccountSettings::slotUpdateQuota); + + connect(_ui->expandMemoryButton, &QAbstractButton::clicked, this, &AccountSettings::slotExpandMemoryClicked); customizeStyle(); } @@ -326,7 +325,7 @@ void AccountSettings::slotE2eEncryptionInitializationFinished(bool isNewMnemonic void AccountSettings::slotEncryptFolderFinished(int status) { qCInfo(lcAccountSettings) << "Current folder encryption status code:" << status; - auto job = qobject_cast(sender()); + auto job = qobject_cast(sender()); Q_ASSERT(job); if (!job->errorString().isEmpty()) { QMessageBox::warning(nullptr, tr("Warning"), job->errorString()); @@ -390,9 +389,10 @@ bool AccountSettings::canEncryptOrDecrypt(const FolderStatusModel::SubFolderInfo if (!_accountState->account()->e2e() || _accountState->account()->e2e()->_mnemonic.isEmpty()) { QMessageBox msgBox; - msgBox.setText(tr("End-to-end encryption is not configured on this device. " - "Once it is configured, you will be able to encrypt this folder.\n" - "Would you like to set up end-to-end encryption?")); + msgBox.setText( + tr("End-to-end encryption is not configured on this device. " + "Once it is configured, you will be able to encrypt this folder.\n" + "Would you like to set up end-to-end encryption?")); msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Ok); const auto ret = msgBox.exec(); @@ -411,19 +411,20 @@ bool AccountSettings::canEncryptOrDecrypt(const FolderStatusModel::SubFolderInfo // for some reason the actual folder in disk is info->_folder->path + info->_path. QDir folderPath(info->_folder->path() + info->_path); - folderPath.setFilter( QDir::AllEntries | QDir::NoDotAndDotDot ); + folderPath.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); if (folderPath.count() != 0) { QMessageBox msgBox; - msgBox.setText(tr("You cannot encrypt a folder with contents, please remove the files.\n" - "Wait for the new sync, then encrypt it.")); + msgBox.setText( + tr("You cannot encrypt a folder with contents, please remove the files.\n" + "Wait for the new sync, then encrypt it.")); msgBox.exec(); return false; } return true; } -void AccountSettings::slotMarkSubfolderEncrypted(FolderStatusModel::SubFolderInfo* folderInfo) +void AccountSettings::slotMarkSubfolderEncrypted(FolderStatusModel::SubFolderInfo *folderInfo) { if (!canEncryptOrDecrypt(folderInfo)) { return; @@ -529,23 +530,26 @@ void AccountSettings::slotEditCurrentLocalIgnoredFiles() openIgnoredFilesDialog(fileName); } -void AccountSettings::openIgnoredFilesDialog(const QString & absFolderPath) +void AccountSettings::openIgnoredFilesDialog(const QString &absFolderPath) { Q_ASSERT(QFileInfo(absFolderPath).isAbsolute()); const QString ignoreFile{absFolderPath + ".sync-exclude.lst"}; const auto layout = new QVBoxLayout(); const auto ignoreListWidget = new IgnoreListTableWidget(this); + ignoreListWidget->setFont(IonosTheme::settingsFont()); ignoreListWidget->readIgnoreFile(ignoreFile); layout->addWidget(ignoreListWidget); const auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + customizeButtonBox(buttonBox); layout->addWidget(buttonBox); const auto dialog = new QDialog(); dialog->setLayout(layout); + dialog->setStyleSheet(QStringLiteral("QDialog { background-color: %1; }").arg(IonosTheme::dialogBackgroundColor())); - connect(buttonBox, &QDialogButtonBox::clicked, [=](QAbstractButton * button) { + connect(buttonBox, &QDialogButtonBox::clicked, [=](QAbstractButton *button) { if (buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole) { ignoreListWidget->slotWriteIgnoreFile(ignoreFile); } @@ -553,10 +557,29 @@ void AccountSettings::openIgnoredFilesDialog(const QString & absFolderPath) }); connect(buttonBox, &QDialogButtonBox::rejected, dialog, &QDialog::close); + dialog->setPalette(QPalette(QPalette::Window, IonosTheme::white())); + dialog->setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + dialog->open(); } -void AccountSettings::slotSubfolderContextMenuRequested(const QModelIndex& index, const QPoint& pos) +void AccountSettings::customizeButtonBox(QDialogButtonBox *buttonBox){ + buttonBox->layout()->setSpacing(16); + buttonBox->setContentsMargins(0,0,11,10); + + const auto okButton = buttonBox->button(QDialogButtonBox::Ok); + + okButton->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); + okButton->setMinimumSize(80, 40); + + buttonBox->button(QDialogButtonBox::Cancel)->setMinimumSize(80, 40); + +#if defined(Q_OS_MAC) + buttonBox->layout()->setSpacing(32); +#endif +} + +void AccountSettings::slotSubfolderContextMenuRequested(const QModelIndex &index, const QPoint &pos) { Q_UNUSED(pos); @@ -580,7 +603,9 @@ void AccountSettings::slotSubfolderContextMenuRequested(const QModelIndex& index if (!isEncrypted && !isParentEncrypted && isTopFolder) { ac = menu.addAction(tr("Encrypt")); - connect(ac, &QAction::triggered, [this, info] { slotMarkSubfolderEncrypted(info); }); + connect(ac, &QAction::triggered, [this, info] { + slotMarkSubfolderEncrypted(info); + }); } else { // Ignore decrypting for now since it only works with an empty folder // connect(ac, &QAction::triggered, [this, &info] { slotMarkSubfolderDecrypted(info); }); @@ -613,15 +638,64 @@ void AccountSettings::slotSubfolderContextMenuRequested(const QModelIndex& index const auto path = rec.isValid() ? rec._path : remotePath; ac = availabilityMenu->addAction(Utility::vfsPinActionText()); - connect(ac, &QAction::triggered, this, [this, folder, path] { slotSetSubFolderAvailability(folder, path, PinState::AlwaysLocal); }); + connect(ac, &QAction::triggered, this, [this, folder, path] { + slotSetSubFolderAvailability(folder, path, PinState::AlwaysLocal); + }); ac = availabilityMenu->addAction(Utility::vfsFreeSpaceActionText()); - connect(ac, &QAction::triggered, this, [this, folder, path] { slotSetSubFolderAvailability(folder, path, PinState::OnlineOnly); }); + connect(ac, &QAction::triggered, this, [this, folder, path] { + slotSetSubFolderAvailability(folder, path, PinState::OnlineOnly); + }); + + styleCustomContextMenu(availabilityMenu); } + styleCustomContextMenu(&menu); + menu.exec(QCursor::pos()); } +void AccountSettings::styleCustomContextMenu(QMenu *menu) const +{ + menu->setWindowFlags(menu->windowFlags() | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint); + + menu->setAttribute(Qt::WA_TranslucentBackground); + + menu->setStyleSheet( + QStringLiteral( + "QMenu {" + "background-color: %1; " + "border: 1px solid %2; " + "padding: 15px; " + "border-radius: %5; " + "font-family: %6; " + "font-size: %7; " + "font-weight: %8; " + "}" + "QMenu::item {" + "background-color: transparent;" + "padding: 16px 18px; " + "color: %3; " + "border-radius: 8px; " + "}" + "QMenu::item:selected {" + "background-color: %4; " + "color: %3; " + "border-radius: 8px; " + "}" + ).arg( + IonosTheme::white(), + IonosTheme::menuBorderColor(), + IonosTheme::menuTextColor(), + IonosTheme::menuSelectedItemColor(), + IonosTheme::menuBorderRadius(), + IonosTheme::contextMenuFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight() + ) + ); +} + void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos) { const auto treeView = _ui->_folderList; @@ -630,6 +704,8 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos) return; } + + if (_model->classify(index) == FolderStatusModel::SubFolder) { slotSubfolderContextMenuRequested(index, pos); return; @@ -649,9 +725,15 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos) if (!folder) { return; } - const auto menu = new QMenu(treeView); + connect(menu, &QMenu::aboutToHide, [treeView, index]() { + auto* delegate = qobject_cast(treeView->itemDelegate(index)); + delegate->MousePos = QPoint(-1, -1); + treeView->update(); + }); + + menu->setAttribute(Qt::WA_DeleteOnClose); auto ac = menu->addAction(tr("Open folder")); @@ -689,15 +771,21 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos) auto availabilityMenu = menu->addMenu(tr("Availability")); ac = availabilityMenu->addAction(Utility::vfsPinActionText()); - connect(ac, &QAction::triggered, this, [this]() { slotSetCurrentFolderAvailability(PinState::AlwaysLocal); }); + connect(ac, &QAction::triggered, this, [this]() { + slotSetCurrentFolderAvailability(PinState::AlwaysLocal); + }); ac->setDisabled(Theme::instance()->enforceVirtualFilesSyncFolder()); ac = availabilityMenu->addAction(Utility::vfsFreeSpaceActionText()); - connect(ac, &QAction::triggered, this, [this]() { slotSetCurrentFolderAvailability(PinState::OnlineOnly); }); + connect(ac, &QAction::triggered, this, [this]() { + slotSetCurrentFolderAvailability(PinState::OnlineOnly); + }); ac = menu->addAction(tr("Disable virtual file support …")); connect(ac, &QAction::triggered, this, &AccountSettings::slotDisableVfsCurrentFolder); ac->setDisabled(Theme::instance()->enforceVirtualFilesSyncFolder()); + + styleCustomContextMenu(availabilityMenu); } if (Theme::instance()->showVirtualFilesOption() && !folder->virtualFilesEnabled() && Vfs::checkAvailability(folder->path())) { @@ -711,6 +799,7 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos) } } + styleCustomContextMenu(menu); menu->popup(treeView->mapToGlobal(pos)); } @@ -719,24 +808,11 @@ void AccountSettings::slotFolderListClicked(const QModelIndex &indx) { if (indx.data(FolderStatusDelegate::AddButton).toBool()) { // "Add Folder Sync Connection" - const auto treeView = _ui->_folderList; - const auto pos = treeView->mapFromGlobal(QCursor::pos()); - QStyleOptionViewItem opt; - opt.initFrom(treeView); - const auto btnRect = treeView->visualRect(indx); - const auto btnSize = treeView->itemDelegate(indx)->sizeHint(opt, indx); - const auto actual = QStyle::visualRect(opt.direction, btnRect, QRect(btnRect.topLeft(), btnSize)); - if (!actual.contains(pos)) { - return; - } if (indx.flags() & Qt::ItemIsEnabled) { slotAddFolder(); } else { - QToolTip::showText( - QCursor::pos(), - _model->data(indx, Qt::ToolTipRole).toString(), - this); + QToolTip::showText(QCursor::pos(), _model->data(indx, Qt::ToolTipRole).toString(), this); } return; } @@ -774,7 +850,6 @@ void AccountSettings::slotAddFolder() folderWizard->open(); } - void AccountSettings::slotFolderWizardAccepted() { const auto folderWizard = qobject_cast(sender()); @@ -783,10 +858,8 @@ void AccountSettings::slotFolderWizardAccepted() qCInfo(lcAccountSettings) << "Folder wizard completed"; FolderDefinition definition; - definition.localPath = FolderDefinition::prepareLocalPath( - folderWizard->field(QLatin1String("sourceFolder")).toString()); - definition.targetPath = FolderDefinition::prepareTargetPath( - folderWizard->property("targetPath").toString()); + definition.localPath = FolderDefinition::prepareLocalPath(folderWizard->field(QLatin1String("sourceFolder")).toString()); + definition.targetPath = FolderDefinition::prepareTargetPath(folderWizard->property("targetPath").toString()); if (folderWizard->property("useVirtualFiles").toBool()) { definition.virtualFilesMode = bestAvailableVfsMode(); @@ -797,9 +870,9 @@ void AccountSettings::slotFolderWizardAccepted() if (!dir.exists()) { qCInfo(lcAccountSettings) << "Creating folder" << definition.localPath; if (!dir.mkpath(".")) { - QMessageBox::warning(this, tr("Folder creation failed"), - tr("

Could not create local folder %1.

") - .arg(QDir::toNativeSeparators(definition.localPath))); + QMessageBox::warning(this, + tr("Folder creation failed"), + tr("

Could not create local folder %1.

").arg(QDir::toNativeSeparators(definition.localPath))); return; } } @@ -830,8 +903,7 @@ void AccountSettings::slotFolderWizardAccepted() folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, selectiveSyncBlackList); // The user already accepted the selective sync dialog. everything is in the white list - folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList, - QStringList() << QLatin1String("/")); + folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList, QStringList() << QLatin1String("/")); folderMan->scheduleAllFolders(); emit folderChanged(); } @@ -855,16 +927,29 @@ void AccountSettings::slotRemoveCurrentFolder() const auto shortGuiLocalPath = folder->shortGuiLocalPath(); auto messageBox = new QMessageBox(QMessageBox::Question, - tr("Confirm Folder Sync Connection Removal"), - tr("

Do you really want to stop syncing the folder %1?

" - "

Note: This will not delete any files.

") - .arg(shortGuiLocalPath), - QMessageBox::NoButton, - this); + tr("Confirm Folder Sync Connection Removal"), + tr("

Do you really want to stop syncing the folder %1?

" + "

Note: This will not delete any files.

") + .arg(shortGuiLocalPath), + QMessageBox::NoButton, + this); + + messageBox->setStyleSheet( + QStringLiteral("QMessageBox QLabel { %1; }").arg( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + ) + ); + messageBox->setAttribute(Qt::WA_DeleteOnClose); const auto yesButton = messageBox->addButton(tr("Remove Folder Sync Connection"), QMessageBox::YesRole); + yesButton->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); messageBox->addButton(tr("Cancel"), QMessageBox::NoRole); - connect(messageBox, &QMessageBox::finished, this, [messageBox, yesButton, folder, row, this]{ + connect(messageBox, &QMessageBox::finished, this, [messageBox, yesButton, folder, row, this] { if (messageBox->clickedButton() == yesButton) { Utility::removeFavLink(folder->path()); FolderMan::instance()->removeFolder(folder); @@ -971,21 +1056,33 @@ void AccountSettings::slotDisableVfsCurrentFolder() return; } - const auto msgBox = new QMessageBox( - QMessageBox::Question, - tr("Disable virtual file support?"), - tr("This action will disable virtual file support. As a consequence contents of folders that " - "are currently marked as \"available online only\" will be downloaded." - "\n\n" - "The only advantage of disabling virtual file support is that the selective sync feature " - "will become available again." - "\n\n" - "This action will abort any currently running synchronization.")); + const auto msgBox = new QMessageBox(QMessageBox::Question, + tr("Disable virtual file support?"), + tr("This action will disable virtual file support. As a consequence contents of folders that " + "are currently marked as \"available online only\" will be downloaded." + "\n\n" + "The only advantage of disabling virtual file support is that the selective sync feature " + "will become available again." + "\n\n" + "This action will abort any currently running synchronization.")); + + msgBox->setStyleSheet(QString( + "QMessageBox {" + + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + "background-color: %1; }").arg(IonosTheme::dialogBackgroundColor()) + ); + const auto acceptButton = msgBox->addButton(tr("Disable support"), QMessageBox::AcceptRole); + acceptButton->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); + msgBox->addButton(tr("Cancel"), QMessageBox::RejectRole); connect(msgBox, &QMessageBox::finished, msgBox, [this, msgBox, folder, acceptButton] { msgBox->deleteLater(); - if (msgBox->clickedButton() != acceptButton|| !folder) { + if (msgBox->clickedButton() != acceptButton || !folder) { return; } @@ -1095,47 +1192,48 @@ void AccountSettings::disableEncryptionForAccount(const AccountPtr &account) con QMessageBox dialog; dialog.setWindowTitle(tr("Disable end-to-end encryption")); dialog.setText(tr("Disable end-to-end encryption for %1?").arg(account->davUser())); - dialog.setInformativeText(tr("Removing end-to-end encryption will remove locally-synced files that are encrypted." - "
" - "Encrypted files will remain on the server.")); + dialog.setInformativeText( + tr("Removing end-to-end encryption will remove locally-synced files that are encrypted." + "
" + "Encrypted files will remain on the server.")); dialog.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); dialog.setDefaultButton(QMessageBox::Ok); dialog.adjustSize(); const auto ret = dialog.exec(); - switch(ret) { + switch (ret) { case QMessageBox::Ok: - connect(account->e2e(), &ClientSideEncryption::sensitiveDataForgotten, - this, &AccountSettings::resetE2eEncryption); + connect(account->e2e(), &ClientSideEncryption::sensitiveDataForgotten, this, &AccountSettings::resetE2eEncryption); account->e2e()->forgetSensitiveData(account); break; case QMessageBox::Cancel: break; - Q_UNREACHABLE(); + Q_UNREACHABLE(); } } void AccountSettings::showConnectionLabel(const QString &message, QStringList errors) { - const auto errStyle = QLatin1String("color:#ffffff; background-color:#bb4d4d;padding:5px;" - "border-width: 1px; border-style: solid; border-color: #aaaaaa;" - "border-radius:5px;"); - if (errors.isEmpty()) { - auto msg = message; - Theme::replaceLinkColorStringBackgroundAware(msg); - _ui->connectLabel->setText(msg); - _ui->connectLabel->setToolTip({}); - _ui->connectLabel->setStyleSheet({}); - } else { - errors.prepend(message); - auto userFriendlyMsg = errors.join(QLatin1String("
")); - qCDebug(lcAccountSettings) << userFriendlyMsg; - Theme::replaceLinkColorString(userFriendlyMsg, QColor("#c1c8e6")); - _ui->connectLabel->setText(userFriendlyMsg); - _ui->connectLabel->setToolTip({}); - _ui->connectLabel->setStyleSheet(errStyle); - } - _ui->accountStatus->setVisible(!message.isEmpty()); + // SES-4 Removed + // const auto errStyle = QLatin1String("color:#ffffff; background-color:#bb4d4d;padding:5px;" + // "border-width: 1px; border-style: solid; border-color: #aaaaaa;" + // "border-radius:5px;"); + // if (errors.isEmpty()) { + // auto msg = message; + // Theme::replaceLinkColorStringBackgroundAware(msg); + // _ui->connectLabel->setText(msg); + // _ui->connectLabel->setToolTip({}); + // _ui->connectLabel->setStyleSheet({}); + // } else { + // errors.prepend(message); + // auto userFriendlyMsg = errors.join(QLatin1String("
")); + // qCDebug(lcAccountSettings) << userFriendlyMsg; + // Theme::replaceLinkColorString(userFriendlyMsg, QColor("#c1c8e6")); + // _ui->connectLabel->setText(userFriendlyMsg); + // _ui->connectLabel->setToolTip({}); + // _ui->connectLabel->setStyleSheet(errStyle); + // } + _ui->accountStatus->setVisible(false); } void AccountSettings::slotEnableCurrentFolder(bool terminate) @@ -1157,14 +1255,37 @@ void AccountSettings::slotEnableCurrentFolder(bool terminate) if (!currentlyPaused && !terminate) { // check if a sync is still running and if so, ask if we should terminate. if (folder->isBusy()) { // its still running - const auto msgbox = new QMessageBox(QMessageBox::Question, tr("Sync Running"), - tr("The syncing operation is running.
Do you want to terminate it?"), - QMessageBox::Yes | QMessageBox::No, this); - msgbox->setAttribute(Qt::WA_DeleteOnClose); + const auto msgbox = new QMessageBox(QMessageBox::Question, + tr("Sync Running"), + tr("The syncing operation is running.
Do you want to terminate it?"), + QMessageBox::Yes | QMessageBox::No, + this); + msgbox->setAttribute(Qt::WA_DeleteOnClose); msgbox->setDefaultButton(QMessageBox::Yes); - connect(msgbox, &QMessageBox::accepted, this, [this]{ + msgbox->defaultButton()->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); + + QHBoxLayout *buttonLayout = msgbox->findChild(); + buttonLayout->setSpacing(8); + +#ifdef Q_OS_MAC + buttonLayout->setSpacing(24); +#endif + + connect(msgbox, &QMessageBox::accepted, this, [this] { slotEnableCurrentFolder(true); }); + + msgbox->setStyleSheet( + QStringLiteral("QMessageBox QLabel { %1; }").arg( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + ) + ); + msgbox->open(); return; } @@ -1230,10 +1351,12 @@ void AccountSettings::slotUpdateQuota(qint64 total, qint64 used) const auto usedStr = Utility::octetsToString(used); const auto totalStr = Utility::octetsToString(total); const auto percentStr = Utility::compactFormatDouble(percent, 1); - const auto toolTip = tr("%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.").arg(usedStr, totalStr, percentStr); + const auto toolTip = tr("%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.") + .arg(usedStr, totalStr, percentStr); _ui->quotaInfoLabel->setText(tr("%1 of %2 in use").arg(usedStr, totalStr)); _ui->quotaInfoLabel->setToolTip(toolTip); _ui->quotaProgressBar->setToolTip(toolTip); + _ui->quotaInfo2Label->setText(tr("Storage space %1% occupied").arg(percentStr)); } else { _ui->quotaProgressBar->setVisible(false); _ui->quotaInfoLabel->setToolTip({}); @@ -1261,9 +1384,7 @@ void AccountSettings::slotAccountStateChanged() _model->slotUpdateFolderState(folder); } - const auto server = QString::fromLatin1("
%2") - .arg(Utility::escape(account->url().toString()), - Utility::escape(safeUrl.toString())); + const auto server = QString::fromLatin1("%2").arg(Utility::escape(account->url().toString()), Utility::escape(safeUrl.toString())); auto serverWithUser = server; if (const auto cred = account->credentials()) { auto user = account->davDisplayName(); @@ -1299,14 +1420,11 @@ void AccountSettings::slotAccountStateChanged() break; } case AccountState::NetworkError: - showConnectionLabel(tr("Unable to connect to %1.") - .arg(Utility::escape(Theme::instance()->appNameGUI())), - _accountState->connectionErrors()); + showConnectionLabel(tr("Unable to connect to %1.").arg(Utility::escape(Theme::instance()->appNameGUI())), _accountState->connectionErrors()); break; case AccountState::ConfigurationError: - showConnectionLabel(tr("Server configuration error: %1 at %2.") - .arg(Utility::escape(Theme::instance()->appNameGUI()), server), - _accountState->connectionErrors()); + showConnectionLabel(tr("Server configuration error: %1 at %2.").arg(Utility::escape(Theme::instance()->appNameGUI()), server), + _accountState->connectionErrors()); break; case AccountState::Disconnected: // we can't end up here as the whole block is ifdeffed @@ -1315,8 +1433,7 @@ void AccountSettings::slotAccountStateChanged() } } else { // ownCloud is not yet configured. - showConnectionLabel(tr("No %1 connection configured.") - .arg(Utility::escape(Theme::instance()->appNameGUI()))); + showConnectionLabel(tr("No %1 connection configured.").arg(Utility::escape(Theme::instance()->appNameGUI()))); } /* Allow to expand the item if the account is connected. */ @@ -1349,8 +1466,8 @@ void AccountSettings::checkClientSideEncryptionState() * Verify if the user has a private key already uploaded to the server, * if it has, do not offer to create one. */ - qCInfo(lcAccountSettings) << "Account" << accountsState()->account()->displayName() - << "Client Side Encryption" << accountsState()->account()->capabilities().clientSideEncryptionAvailable(); + qCInfo(lcAccountSettings) << "Account" << accountsState()->account()->displayName() << "Client Side Encryption" + << accountsState()->account()->capabilities().clientSideEncryptionAvailable(); if (_accountState->account()->capabilities().clientSideEncryptionAvailable()) { _ui->encryptionMessage->show(); @@ -1406,9 +1523,12 @@ void AccountSettings::slotHideSelectiveSyncWidget() _ui->selectiveSyncLabel->hide(); } -void AccountSettings::slotSelectiveSyncChanged(const QModelIndex &topLeft, - const QModelIndex &bottomRight, - const QVector &roles) +void AccountSettings::slotExpandMemoryClicked() +{ + QDesktopServices::openUrl(QUrl(tr("https://wl.hidrive.com/easy/0057"))); +} + +void AccountSettings::slotSelectiveSyncChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles) { Q_UNUSED(bottomRight); if (!roles.contains(Qt::CheckStateRole)) { @@ -1463,7 +1583,10 @@ void AccountSettings::slotPossiblyUnblacklistE2EeFoldersAndRestartSync() return; } - disconnect(_accountState->account()->e2e(), &ClientSideEncryption::initializationFinished, this, &AccountSettings::slotPossiblyUnblacklistE2EeFoldersAndRestartSync); + disconnect(_accountState->account()->e2e(), + &ClientSideEncryption::initializationFinished, + this, + &AccountSettings::slotPossiblyUnblacklistE2EeFoldersAndRestartSync); for (const auto folder : FolderMan::instance()->map()) { if (folder->accountState() != _accountState) { @@ -1492,7 +1615,9 @@ void AccountSettings::slotPossiblyUnblacklistE2EeFoldersAndRestartSync() } } -void AccountSettings::updateBlackListAndScheduleFolderSync(const QStringList &blackList, OCC::Folder *folder, const QStringList &foldersToRemoveFromBlacklist) const +void AccountSettings::updateBlackListAndScheduleFolderSync(const QStringList &blackList, + OCC::Folder *folder, + const QStringList &foldersToRemoveFromBlacklist) const { folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, blackList); folder->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist, {}); @@ -1509,14 +1634,15 @@ void AccountSettings::folderTerminateSyncAndUpdateBlackList(const QStringList &b return; } // in case sync is already running - terminate it and start a new one - const QMetaObject::Connection syncTerminatedConnection = connect(folder, &Folder::syncFinished, this, [this, blackList, folder, foldersToRemoveFromBlacklist]() { - const auto foundConnectionIt = _folderConnections.find(folder->alias()); - if (foundConnectionIt != _folderConnections.end()) { - disconnect(*foundConnectionIt); - _folderConnections.erase(foundConnectionIt); - } - updateBlackListAndScheduleFolderSync(blackList, folder, foldersToRemoveFromBlacklist); - }); + const QMetaObject::Connection syncTerminatedConnection = + connect(folder, &Folder::syncFinished, this, [this, blackList, folder, foldersToRemoveFromBlacklist]() { + const auto foundConnectionIt = _folderConnections.find(folder->alias()); + if (foundConnectionIt != _folderConnections.end()) { + disconnect(*foundConnectionIt); + _folderConnections.erase(foundConnectionIt); + } + updateBlackListAndScheduleFolderSync(blackList, folder, foldersToRemoveFromBlacklist); + }); _folderConnections.insert(folder->alias(), syncTerminatedConnection); folder->slotTerminateSync(); } @@ -1630,12 +1756,39 @@ void AccountSettings::customizeStyle() _ui->connectLabel->setText(msg); const auto color = palette().highlight().color(); - _ui->quotaProgressBar->setStyleSheet(QString::fromLatin1(progressBarStyleC).arg(color.name())); + _ui->quotaProgressBar->setStyleSheet(progressBarStyle().arg(color.name())); + + _ui->quotaInfoLabel->setStyleSheet( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTitleWeight600(), + IonosTheme::titleColor() + ) + ); + + _ui->quotaInfo2Label->setStyleSheet( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsSmallTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + ); + +#if defined(Q_OS_MAC) + _ui->selectiveSyncLabel->setStyleSheet(QString("color: %1;").arg(IonosTheme::black())); + _ui->horizontalLayout->setSpacing(16); +#endif + } void AccountSettings::initializeE2eEncryption() { - connect(_accountState->account()->e2e(), &ClientSideEncryption::initializationFinished, this, &AccountSettings::slotPossiblyUnblacklistE2EeFoldersAndRestartSync); + connect(_accountState->account()->e2e(), + &ClientSideEncryption::initializationFinished, + this, + &AccountSettings::slotPossiblyUnblacklistE2EeFoldersAndRestartSync); if (!_accountState->account()->e2e()->_mnemonic.isEmpty()) { slotE2eEncryptionMnemonicReady(); @@ -1644,11 +1797,12 @@ void AccountSettings::initializeE2eEncryption() connect(_accountState->account()->e2e(), &ClientSideEncryption::initializationFinished, this, [this] { if (!_accountState->account()->e2e()->_publicKey.isNull()) { - _ui->encryptionMessage->setText(tr("End-to-end encryption has been enabled on this account with another device." - "
" - "It can be enabled on this device by entering your mnemonic." - "
" - "This will enable synchronisation of existing encrypted folders.")); + _ui->encryptionMessage->setText( + tr("End-to-end encryption has been enabled on this account with another device." + "
" + "It can be enabled on this device by entering your mnemonic." + "
" + "This will enable synchronisation of existing encrypted folders.")); } }); _accountState->account()->setE2eEncryptionKeysGenerationAllowed(false); @@ -1674,9 +1828,10 @@ void AccountSettings::resetE2eEncryption() void AccountSettings::removeActionFromEncryptionMessage(const QString &actionId) { - const auto foundEnableEncryptionActionIt = std::find_if(std::cbegin(_ui->encryptionMessage->actions()), std::cend(_ui->encryptionMessage->actions()), [&actionId](const QAction *action) { - return action->property(e2eUiActionIdKey).toString() == actionId; - }); + const auto foundEnableEncryptionActionIt = + std::find_if(std::cbegin(_ui->encryptionMessage->actions()), std::cend(_ui->encryptionMessage->actions()), [&actionId](const QAction *action) { + return action->property(e2eUiActionIdKey).toString() == actionId; + }); if (foundEnableEncryptionActionIt != std::cend(_ui->encryptionMessage->actions())) { _ui->encryptionMessage->removeAction(*foundEnableEncryptionActionIt); (*foundEnableEncryptionActionIt)->deleteLater(); diff --git a/src/gui/accountsettings.h b/src/gui/accountsettings.h index 117a3aa536a0a..44982945be2d4 100644 --- a/src/gui/accountsettings.h +++ b/src/gui/accountsettings.h @@ -20,6 +20,7 @@ #include #include #include +#include #include "folder.h" #include "userinfo.h" @@ -131,8 +132,10 @@ private slots: void resetE2eEncryption(); void checkClientSideEncryptionState(); void removeActionFromEncryptionMessage(const QString &actionId); + void slotExpandMemoryClicked(); private: + void styleCustomContextMenu(QMenu *menu) const; bool event(QEvent *) override; QAction *addActionToEncryptionMessage(const QString &actionTitle, const QString &actionId); @@ -143,6 +146,8 @@ private slots: void disguiseTabWidget() const; + void customizeButtonBox(QDialogButtonBox *buttonBox); + Ui::AccountSettings *_ui; FolderStatusModel *_model; diff --git a/src/gui/accountsettings.ui b/src/gui/accountsettings.ui index bc1594e8f3189..60f01052b444a 100644 --- a/src/gui/accountsettings.ui +++ b/src/gui/accountsettings.ui @@ -1,335 +1,387 @@ - OCC::AccountSettings - - - - 0 - 0 - 1028 - 871 - - - - Form - - - - - - - - - 0 - 0 - - - - - - - Storage space: … - - - Qt::PlainText - - - false - - - - - - - false - - - - 0 - 0 - - - - - 16777215 - 7 - - - - 100 - - - -1 - - - false - - - - - - - - - - - - - - - 0 - 0 - - - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - - - Qt::RichText - - - true - - - true - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - Cancel - - - - - - - - 0 - 0 - - - - Apply - - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - Connected with <server> as <user> - - - Qt::RichText - - - true + OCC::AccountSettings + + + + 0 + 0 + 1028 + 871 + - - true + + Form - - - - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - color: red - - - - - - true - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Synchronize all - - - - - - - Synchronize none - - - - - - - Apply manual changes - - - - - - - - - - - - 1 - - - - Standard file sync - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - Qt::CustomContextMenu - - - false - - - QAbstractItemView::NoEditTriggers - - - true - - - - - - - - Virtual file sync - - + + 32 + + + 32 + + + 32 + + + 32 + + + + + + + + + 0 + 0 + + + + + + + Storage space: … + + + Qt::PlainText + + + false + + + + + + + + + false + + + + 0 + 0 + + + + + 16777215 + 8 + + + + 100 + + + -1 + + + false + + + + + + + + 0 + 0 + + + + Expand Memory + + + + + + + + + + 0 + 0 + + + + + + + Storage space: … + + + Qt::PlainText + + + false + + + + + + + + + + + + + + + 0 + 0 + + + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + + + Qt::RichText + + + true + + + true + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + Cancel + + + + + + + + 0 + 0 + + + + Apply + + + + + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + + + Connected with <server> as <user> + + + Qt::RichText + + + true + + + true + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + color: red + + + + + + true + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Synchronize all + + + + + + + Synchronize none + + + + + + + Apply manual changes + + + + + + + + + + + + 1 + + + + Standard file sync + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + Qt::CustomContextMenu + + + false + + + QAbstractItemView::NoEditTriggers + + + true + + + + + + + + Virtual file sync + + + + + - - - - - - SslButton - QToolButton -
sslbutton.h
-
- - OCC::FolderStatusView - QTreeView -
folderstatusview.h
-
- - KMessageWidget - QWidget -
kmessagewidget.h
- 1 -
-
- - -
+ + + SslButton + QToolButton +
sslbutton.h
+
+ + OCC::FolderStatusView + QTreeView +
folderstatusview.h
+
+ + KMessageWidget + QWidget +
kmessagewidget.h
+ 1 +
+
+ + + \ No newline at end of file diff --git a/src/gui/addcertificatedialog.cpp b/src/gui/addcertificatedialog.cpp index fabaeec5b6d14..0d3e8f3209edb 100644 --- a/src/gui/addcertificatedialog.cpp +++ b/src/gui/addcertificatedialog.cpp @@ -26,6 +26,7 @@ AddCertificateDialog::AddCertificateDialog(QWidget *parent) { ui->setupUi(this); ui->labelErrorCertif->setText(""); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); } AddCertificateDialog::~AddCertificateDialog() diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 9092d05dcc53c..47dfca96c3e6a 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -38,6 +38,8 @@ #include "pushnotifications.h" #include "shellextensionsserver.h" +#include "ga4/datacollectionwrapper.h" + #if defined(BUILD_UPDATER) #include "updater/ocupdater.h" #endif @@ -163,9 +165,6 @@ bool Application::configVersionMigration() configFile.setLaunchOnSystemStartup(configFile.launchOnSystemStartup()); Utility::setLaunchOnStartup(theme->appName(), theme->appNameGUI(), configFile.launchOnSystemStartup()); - // default is now off to displaying dialog warning user of too many files deletion - configFile.setPromptDeleteFiles(false); - // back up all old config files QStringList backupFilesList; QDir configDir(configFile.configPath()); @@ -374,6 +373,7 @@ Application::Application(int &argc, char **argv) this, &Application::slotAccountStateAdded); connect(AccountManager::instance(), &AccountManager::accountRemoved, this, &Application::slotAccountStateRemoved); + const auto accounts = AccountManager::instance()->accounts(); for (const auto &ai : accounts) { slotAccountStateAdded(ai.data()); @@ -439,6 +439,30 @@ Application::~Application() AccountManager::instance()->shutdown(); } +void Application::startTracking() +{ + DataCollectionWrapper dcw; + dcw.initDataCollection(); + AccountPtr account = AccountManager::instance()->accounts().first()->account(); + QByteArray byteArray = account->credentials()->user().toUtf8(); // Convert the input string to a byte array + QByteArray hash = QCryptographicHash::hash(byteArray, QCryptographicHash::Sha256); // Perform the hash + + ConfigFile cfg; + dcw.setSendData(cfg.sendData()); + dcw.setAccount(account); + + dcw.setClientID(hash.toHex()); + dcw.login(); +} + +void Application::stopTracking() +{ + DataCollectionWrapper dcw; + dcw.accountRemoved(); + dcw.setClientID(QString()); + dcw.setAccount(nullptr); +} + void Application::setupAccountsAndFolders() { _folderManager.reset(new FolderMan); @@ -577,6 +601,14 @@ void Application::slotAccountStateRemoved(AccountState *accountState) _folderManager.data(), &FolderMan::slotServerVersionChanged); } + if(AccountManager::instance()->accounts().isEmpty()) { + stopTracking(); + } + else + { + startTracking(); + } + // if there is no more account, show the wizard. if (_gui && AccountManager::instance()->accounts().isEmpty()) { // allow to add a new account if there is non any more. Always think @@ -596,6 +628,8 @@ void Application::slotAccountStateAdded(AccountState *accountState) connect(accountState->account().data(), &Account::serverVersionChanged, _folderManager.data(), &FolderMan::slotServerVersionChanged); + startTracking(); + _gui->slotTrayMessageIfServerUnsupported(accountState->account().data()); } @@ -674,8 +708,7 @@ void Application::setupLogging() logger->setLogDebug(true); #endif - logger->enterNextLogFile(QStringLiteral("nextcloud.log"), OCC::Logger::LogType::Log); - logger->enterNextLogFile(QStringLiteral("permanent_delete.log"), OCC::Logger::LogType::DeleteLog); + logger->enterNextLogFile(); qCInfo(lcApplication) << "##################" << _theme->appName() << "locale:" << QLocale::system().name() diff --git a/src/gui/application.h b/src/gui/application.h index fb9634b5ec974..62057186025b0 100644 --- a/src/gui/application.h +++ b/src/gui/application.h @@ -115,7 +115,8 @@ protected slots: private: void setHelp(); - + void startTracking(); + void stopTracking(); void handleEditLocallyFromOptions(); AccountManager::AccountsRestoreResult restoreLegacyAccount(); diff --git a/src/gui/authenticationdialog.cpp b/src/gui/authenticationdialog.cpp index 7b7de1abbebb0..aef5f8163c017 100644 --- a/src/gui/authenticationdialog.cpp +++ b/src/gui/authenticationdialog.cpp @@ -43,6 +43,7 @@ AuthenticationDialog::AuthenticationDialog(const QString &realm, const QString & connect(box, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(box, &QDialogButtonBox::rejected, this, &QDialog::reject); lay->addWidget(box); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); } QString AuthenticationDialog::user() const diff --git a/src/gui/caseclashfilenamedialog.cpp b/src/gui/caseclashfilenamedialog.cpp index 27ca251a69911..553eaccf0432a 100644 --- a/src/gui/caseclashfilenamedialog.cpp +++ b/src/gui/caseclashfilenamedialog.cpp @@ -19,6 +19,7 @@ #include "account.h" #include "folder.h" +#include "buttonstyle.h" #include #include @@ -83,6 +84,8 @@ CaseClashFilenameDialog::CaseClashFilenameDialog(AccountPtr account, Q_ASSERT(_account); Q_ASSERT(_folder); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + const auto filePathFileInfo = QFileInfo(_filePath); const auto conflictFileName = filePathFileInfo.fileName(); @@ -98,6 +101,7 @@ CaseClashFilenameDialog::CaseClashFilenameDialog(AccountPtr account, _ui->setupUi(this); _ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); _ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Rename file")); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); _ui->descriptionLabel->setText(tr("The file \"%1\" could not be synced because of a case clash conflict with an existing file on this system.").arg(_originalFileName)); _ui->explanationLabel->setText(tr("%1 does not support equal file names with only letter casing differences.").arg(QSysInfo::prettyProductName())); @@ -149,10 +153,13 @@ CaseClashFilenameDialog::CaseClashFilenameDialog(AccountPtr account, _ui->buttonBox->setStandardButtons(_ui->buttonBox->standardButtons() &~ QDialogButtonBox::No); if (_conflictSolver.allowedToRename()) { _ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); + _ui->filenameLineEdit->setEnabled(true); _ui->filenameLineEdit->selectAll(); } else { _ui->buttonBox->setStandardButtons(_ui->buttonBox->standardButtons() | QDialogButtonBox::No); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); } }); @@ -166,6 +173,8 @@ CaseClashFilenameDialog::CaseClashFilenameDialog(AccountPtr account, }); checkIfAllowedToRename(); + + customizeStyle(); } CaseClashFilenameDialog::~CaseClashFilenameDialog() = default; @@ -283,5 +292,43 @@ void CaseClashFilenameDialog::onFilenameLineEditTextChanged(const QString &text) _ui->buttonBox->button(QDialogButtonBox::Ok) ->setEnabled(isTextValid); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); + } + +void CaseClashFilenameDialog::customizeStyle() +{ + this->setStyleSheet( + QStringLiteral("QDialog {background-color: %1; color: %2;} QLabel{ %3;}").arg( + IonosTheme::dialogBackgroundColor(), + IonosTheme::black(), + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + ) + ); + + _ui->filenameLineEdit->setStyleSheet( + QStringLiteral( + "color: %1; font-family: %2; font-size: %3; font-weight: %4; border-radius: %5; border: 1px " + "solid %6; padding: 0px 12px; text-align: left; vertical-align: middle; height: 40px; background: %7; ").arg( + IonosTheme::folderWizardPathColor(), + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::buttonRadius(), + IonosTheme::menuBorderColor(), + IonosTheme::white() + ) + ); + + #ifdef Q_OS_MAC + _ui->buttonBox->layout()->setSpacing(24); + _ui->buttonBox->setLayoutDirection(Qt::LeftToRight); + #endif +} + } diff --git a/src/gui/caseclashfilenamedialog.h b/src/gui/caseclashfilenamedialog.h index 6608cb80102bc..feb88d43075ac 100644 --- a/src/gui/caseclashfilenamedialog.h +++ b/src/gui/caseclashfilenamedialog.h @@ -79,5 +79,7 @@ private slots: QString _relativeFilePath; QString _originalFileName; QString _newFilename; + + void customizeStyle(); }; } diff --git a/src/gui/caseclashfilenamedialog.ui b/src/gui/caseclashfilenamedialog.ui index a5944fc709886..59c22cf3ebb23 100644 --- a/src/gui/caseclashfilenamedialog.ui +++ b/src/gui/caseclashfilenamedialog.ui @@ -117,9 +117,12 @@ - - Open existing file - + + Open existing file + + + true + @@ -223,9 +226,12 @@ - - Open clashing file - + + Open clashing file + + + true + diff --git a/src/gui/conflictdialog.cpp b/src/gui/conflictdialog.cpp index bae7b190f957a..75c8c7d2304b3 100644 --- a/src/gui/conflictdialog.cpp +++ b/src/gui/conflictdialog.cpp @@ -16,6 +16,7 @@ #include "ui_conflictdialog.h" #include "conflictsolver.h" +#include "buttonstyle.h" #include #include @@ -50,8 +51,10 @@ ConflictDialog::ConflictDialog(QWidget *parent) { _ui->setupUi(this); forceHeaderFont(_ui->conflictMessage); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); _ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); _ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Keep selected version")); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); _ui->conflictMessage->setTextFormat(Qt::PlainText); @@ -67,6 +70,8 @@ ConflictDialog::ConflictDialog(QWidget *parent) connect(_solver, &ConflictSolver::localVersionFilenameChanged, this, &ConflictDialog::updateWidgets); connect(_solver, &ConflictSolver::remoteVersionFilenameChanged, this, &ConflictDialog::updateWidgets); + + customizeStyle(); } QString ConflictDialog::baseFilename() const @@ -178,6 +183,29 @@ void ConflictDialog::updateButtonStates() : isRemotePicked ? tr("Keep server version") : tr("Keep selected version"); _ui->buttonBox->button(QDialogButtonBox::Ok)->setText(text); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); + +} + +void ConflictDialog::customizeStyle() +{ + this->setStyleSheet( + QStringLiteral("QDialog {background-color: %1; color: %2;} QLabel{ %3;}").arg( + IonosTheme::dialogBackgroundColor(), + IonosTheme::black(), + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + ) + ); + + #ifdef Q_OS_MAC + _ui->buttonBox->layout()->setSpacing(24); + _ui->buttonBox->setLayoutDirection(Qt::LeftToRight); + #endif } } // namespace OCC diff --git a/src/gui/conflictdialog.h b/src/gui/conflictdialog.h index b102b8de7797f..3ec4de41436ec 100644 --- a/src/gui/conflictdialog.h +++ b/src/gui/conflictdialog.h @@ -46,7 +46,8 @@ public slots: private: void updateWidgets(); void updateButtonStates(); - + void customizeStyle(); + QString _baseFilename; QScopedPointer _ui; ConflictSolver *_solver; diff --git a/src/gui/foldercreationdialog.cpp b/src/gui/foldercreationdialog.cpp index a245c9f4dc461..1cfe53195b814 100644 --- a/src/gui/foldercreationdialog.cpp +++ b/src/gui/foldercreationdialog.cpp @@ -13,6 +13,9 @@ */ #include "foldercreationdialog.h" + +#include "buttonstyle.h" +#include "ionostheme.h" #include "ui_foldercreationdialog.h" #include @@ -20,6 +23,9 @@ #include #include #include +#include +#include +#include namespace OCC { @@ -31,10 +37,13 @@ FolderCreationDialog::FolderCreationDialog(const QString &destination, QWidget * , _destination(destination) { ui->setupUi(this); + setWindowTitle(tr("%1 Create new folder").arg(Theme::instance()->appNameGUI())); + customizeStyle(); - ui->labelErrorMessage->setVisible(false); + ui->errorSnackbar->setVisible(false); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + setWindowFlags(windowFlags() | Qt::Dialog | Qt::WindowMinMaxButtonsHint); connect(ui->newFolderNameEdit, &QLineEdit::textChanged, this, &FolderCreationDialog::slotNewFolderNameEditTextEdited); @@ -69,11 +78,6 @@ void FolderCreationDialog::accept() const auto fullPath = QString(_destination + "/" + ui->newFolderNameEdit->text()); - if (QDir(fullPath).exists()) { - ui->labelErrorMessage->setVisible(true); - return; - } - if (QDir(_destination).mkdir(ui->newFolderNameEdit->text())) { Q_EMIT folderCreated(fullPath); } else { @@ -86,10 +90,46 @@ void FolderCreationDialog::accept() void FolderCreationDialog::slotNewFolderNameEditTextEdited() { if (!ui->newFolderNameEdit->text().isEmpty() && QDir(_destination + "/" + ui->newFolderNameEdit->text()).exists()) { - ui->labelErrorMessage->setVisible(true); + ui->errorSnackbar->setVisible(true); + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); } else { - ui->labelErrorMessage->setVisible(false); + ui->errorSnackbar->setVisible(false); + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); } } +void FolderCreationDialog::customizeStyle() +{ + ui->buttonBox->setLayoutDirection(Qt::RightToLeft); + + QDialog *dialog = qobject_cast(this); + dialog->setMinimumSize(626, 156); + + QPushButton *okButton = ui->buttonBox->button(QDialogButtonBox::Ok); + okButton->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Primary)); + + QHBoxLayout* buttonlayout = qobject_cast(ui->buttonBox->layout()); + buttonlayout->setSpacing(16); + + ui->errorSnackbar->setFixedHeight(46); + + ui->newFolderNameEdit->setStyleSheet( + QStringLiteral( + "color: %1; font-family: %2; font-size: %3; font-weight: %4; border-radius: %5; border: 1px " + "solid %6; padding: 0px 12px; text-align: left; vertical-align: middle; height: 40px; background: %7; ") + .arg(IonosTheme::folderWizardPathColor(), + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::buttonRadius(), + IonosTheme::menuBorderColor(), + IonosTheme::white() + ) + ); + +#if defined(Q_OS_MAC) + buttonlayout->setSpacing(32); +#endif + } +} \ No newline at end of file diff --git a/src/gui/foldercreationdialog.h b/src/gui/foldercreationdialog.h index 3d8642112f2c4..78d582a41e24d 100644 --- a/src/gui/foldercreationdialog.h +++ b/src/gui/foldercreationdialog.h @@ -43,6 +43,8 @@ private slots: Ui::FolderCreationDialog *ui; QString _destination; + + void customizeStyle(); }; } diff --git a/src/gui/foldercreationdialog.ui b/src/gui/foldercreationdialog.ui index 84d7c77e18654..314ef6cffab97 100644 --- a/src/gui/foldercreationdialog.ui +++ b/src/gui/foldercreationdialog.ui @@ -1,100 +1,90 @@ - OCC::FolderCreationDialog - - - - 0 - 0 - 355 - 138 - - - - Create new folder - - - - - 0 - 90 - 341 - 32 - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - 20 - 30 - 321 - 22 - - - - Enter folder name - - - - - true - - - - 20 - 60 - 321 - 16 - - - - color: rgb(255, 0, 0) - - - Folder already exists - - - - - - - buttonBox - accepted() - OCC::FolderCreationDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - OCC::FolderCreationDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - - + OCC::FolderCreationDialog + + + Create new folder + + + + + + Enter folder name + + + + + + + Folder already exists + + + false + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + + + + + + buttonBox + accepted() + OCC::FolderCreationDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + OCC::FolderCreationDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + \ No newline at end of file diff --git a/src/gui/folderstatusdelegate.cpp b/src/gui/folderstatusdelegate.cpp index b356a3dd32b83..52b73444dc457 100644 --- a/src/gui/folderstatusdelegate.cpp +++ b/src/gui/folderstatusdelegate.cpp @@ -19,7 +19,11 @@ #include "folderstatusview.h" #include "folderman.h" #include "accountstate.h" +#include "sesstyle.h" +#include "buttonstyle.h" + #include +#include #include #include @@ -27,14 +31,7 @@ #include #include #include - -inline static QFont makeAliasFont(const QFont &normalFont) -{ - QFont aliasFont = normalFont; - aliasFont.setBold(true); - aliasFont.setPointSize(normalFont.pointSize() + 2); - return aliasFont; -} +#include namespace { #ifdef Q_OS_MACOS @@ -44,6 +41,14 @@ namespace { namespace OCC { +inline static QFont makeAliasFont(const QFont &normalFont) +{ + QFont aliasFont = normalFont; + aliasFont.setWeight(IonosTheme::settingsTitleWeightDemiBold()); + aliasFont.setPixelSize(IonosTheme::settingsBigTitlePixel()); + return aliasFont; +} + FolderStatusDelegate::FolderStatusDelegate() : QStyledItemDelegate() { @@ -52,15 +57,22 @@ FolderStatusDelegate::FolderStatusDelegate() QString FolderStatusDelegate::addFolderText() { - return tr("Add Folder Sync Connection"); + return tr("Add live backup"); +} + +QString FolderStatusDelegate::addInfoText() +{ + return tr("Synchronize any other local folder with your %1").arg(Theme::instance()->appNameGUI()); } // allocate each item size in listview. -QSize FolderStatusDelegate::sizeHint(const QStyleOptionViewItem &option, +QSize FolderStatusDelegate::sizeHint( + const QStyleOptionViewItem &option, const QModelIndex &index) const { - QFont aliasFont = makeAliasFont(option.font); - QFont font = option.font; + QFont font = QFont(option.font); + font.setPixelSize(IonosTheme::settingsTextPixel()); + QFont aliasFont = makeAliasFont(font); QFontMetrics fm(font); QFontMetrics aliasFm(aliasFont); @@ -69,9 +81,10 @@ QSize FolderStatusDelegate::sizeHint(const QStyleOptionViewItem &option, if (classif == FolderStatusModel::AddButton) { const int margins = aliasFm.height(); // same as 2*aliasMargin of paint QFontMetrics fm(qApp->font("QPushButton")); + QStyleOptionButton opt; static_cast(opt) = option; - opt.text = addFolderText(); + opt.text = addInfoText(); return QApplication::style()->sizeFromContents( QStyle::CT_PushButton, &opt, fm.size(Qt::TextSingleLine, opt.text)) .expandedTo(QApplication::globalStrut()) @@ -113,22 +126,72 @@ int FolderStatusDelegate::rootFolderHeightWithoutErrors(const QFontMetrics &fm, return h; } +void FolderStatusDelegate::drawAddButton(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + QFont titleFont = option.font; + titleFont.setWeight(IonosTheme::settingsTitleWeightDemiBold()); + titleFont.setPixelSize(IonosTheme::settingsTitlePixel()); + QFontMetrics titleTextFm(titleFont); + const auto baseDistanceForCalculus = titleTextFm.height() / 2; + + QFont subtitleFont = option.font; + + QFontMetrics subtitleTextFm(subtitleFont); + const auto distanceToSubline = subtitleTextFm.height() / 4; + + auto iconBox = option.rect; + iconBox.setTop(iconBox.top() + baseDistanceForCalculus); + iconBox.setBottom(iconBox.top() + IonosTheme::treeViewIconSize()); + iconBox.setLeft(iconBox.left() + baseDistanceForCalculus); + iconBox.setWidth(iconBox.height()); + + auto titleBox = option.rect; + titleBox.setTop(iconBox.top()); + titleBox.setBottom(iconBox.bottom() - distanceToSubline); + titleBox.setRight(titleBox.right() - baseDistanceForCalculus); + titleBox.setLeft(iconBox.right() + baseDistanceForCalculus); + + auto subtitleBox = option.rect; + subtitleBox.setTop(titleBox.bottom() + distanceToSubline); + subtitleBox.setBottom(subtitleBox.top() + 4 * distanceToSubline); + subtitleBox.setLeft(iconBox.right() + baseDistanceForCalculus); + subtitleBox.setRight(subtitleBox.right() - baseDistanceForCalculus); + + auto titleText = addFolderText(); + auto subtitleText = addInfoText(); + auto addIcon = QIcon(IonosTheme::liveBackupPlusIcon()); + const auto addPixmap = addIcon.pixmap(iconBox.size(), QIcon::Normal); + + painter->save(); + painter->drawPixmap(QStyle::visualRect(option.direction, option.rect, iconBox).left(), iconBox.top(), addPixmap); + + drawElidedText(painter, option, titleTextFm, titleFont, titleText, titleBox); + + drawElidedText(painter, option, subtitleTextFm, subtitleFont, subtitleText, subtitleBox); + + painter->restore(); +} + void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { + QStyleOptionViewItem opt = option; + QFont font = opt.font; + font.setPixelSize(IonosTheme::settingsTextPixel()); + opt.font = font; + + QStyledItemDelegate::paint(painter, opt, index); + if (index.data(AddButton).toBool()) { - const_cast(option).showDecorationSelected = false; + drawAddButton(painter, opt, index); + return; } - QStyledItemDelegate::paint(painter, option, index); - auto textAlign = Qt::AlignLeft; - const auto aliasFont = makeAliasFont(option.font); - const auto subFont = option.font; - const auto errorFont = subFont; - auto progressFont = subFont; + const auto aliasFont = makeAliasFont(opt.font); + const auto subFont = opt.font; - progressFont.setPointSize(subFont.pointSize() - 2); + const auto errorFont = subFont; QFontMetrics subFm(subFont); QFontMetrics aliasFm(aliasFont); @@ -136,26 +199,10 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem & const auto aliasMargin = aliasFm.height() / 2; const auto margin = subFm.height() / 4; - if (index.data(AddButton).toBool()) { - QStyleOptionButton opt; - static_cast(opt) = option; - if (opt.state & QStyle::State_Enabled && opt.state & QStyle::State_MouseOver && index == _pressedIndex) { - opt.state |= QStyle::State_Sunken; - } else { - opt.state |= QStyle::State_Raised; - } - opt.text = addFolderText(); - opt.rect = addButtonRect(option.rect, option.direction); - painter->save(); - painter->setFont(qApp->font("QPushButton")); - QApplication::style()->drawControl(QStyle::CE_PushButton, &opt, painter, option.widget); - painter->restore(); - return; - } - if (dynamic_cast(index.model())->classify(index) != FolderStatusModel::RootFolder) { return; } + painter->save(); auto statusIcon = qvariant_cast(index.data(FolderStatusIconRole)); @@ -165,7 +212,6 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem & auto errorTexts = qvariant_cast(index.data(FolderErrorMsg)); auto infoTexts = qvariant_cast(index.data(FolderInfoMsg)); - auto overallPercent = qvariant_cast(index.data(SyncProgressOverallPercent)); auto overallString = qvariant_cast(index.data(SyncProgressOverallString)); auto itemString = qvariant_cast(index.data(SyncProgressItemString)); auto warningCount = qvariant_cast(index.data(WarningCount)); @@ -194,7 +240,7 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem & localPathRect.setTop(remotePathRect.bottom() + margin); localPathRect.setBottom(localPathRect.top() + subFm.height()); - iconRect.setBottom(localPathRect.bottom()); + iconRect.setBottom(iconRect.top() + IonosTheme::treeViewIconSize()); iconRect.setWidth(iconRect.height()); const auto nextToIcon = iconRect.right() + aliasMargin; @@ -204,8 +250,6 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem & const auto iconSize = iconRect.width(); - auto optionsButtonVisualRect = optionsButtonRect(option.rect, option.direction); - const auto statusPixmap = statusIcon.pixmap(iconSize, iconSize, syncEnabled ? QIcon::Normal : QIcon::Disabled); painter->drawPixmap(QStyle::visualRect(option.direction, option.rect, iconRect).left(), iconRect.top(), statusPixmap); @@ -237,37 +281,31 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem & painter->setPen(palette.color(colourGroup, QPalette::Text)); } - const auto elidedAlias = aliasFm.elidedText(aliasText, Qt::ElideRight, aliasRect.width()); - painter->setFont(aliasFont); - painter->drawText(QStyle::visualRect(option.direction, option.rect, aliasRect), textAlign, elidedAlias); + drawElidedText(painter, option, aliasFm, aliasFont, aliasText, aliasRect); const auto showProgess = !overallString.isEmpty() || !itemString.isEmpty(); if (!showProgess) { - painter->setFont(subFont); - const auto elidedRemotePathText = subFm.elidedText(syncText, Qt::ElideRight, remotePathRect.width()); - painter->drawText(QStyle::visualRect(option.direction, option.rect, remotePathRect), textAlign, elidedRemotePathText); + drawElidedText(painter, option, subFm, subFont, syncText, remotePathRect); - const auto elidedPathText = subFm.elidedText(pathText, Qt::ElideMiddle, localPathRect.width()); - painter->drawText(QStyle::visualRect(option.direction, option.rect, localPathRect), textAlign, elidedPathText); + drawElidedText(painter, option, subFm, subFont, pathText, localPathRect); } - auto textBoxTop = iconRect.bottom() + margin; + auto textBoxTop = qMax(localPathRect.bottom(), remotePathRect.bottom()) + margin; // paint an error overlay if there is an error string or conflict string - auto drawTextBox = [&](const QStringList &texts, QColor color) { + auto drawTextBox = [&](const QStringList &texts, QColor color, QColor borderColor) { auto rect = localPathRect; rect.setLeft(iconRect.left()); rect.setTop(textBoxTop); rect.setHeight(texts.count() * subFm.height() + 2 * margin); - rect.setRight(option.rect.right() - margin); + rect.setRight(option.rect.right() - aliasMargin); // save previous state to not mess up colours with the background (fixes issue: https://github.com/nextcloud/desktop/issues/1237) painter->save(); painter->setBrush(color); - painter->setPen(QColor(0xaa, 0xaa, 0xaa)); - painter->drawRoundedRect(QStyle::visualRect(option.direction, option.rect, rect), - 4, 4); - painter->setPen(Qt::white); + painter->setPen(borderColor); + painter->drawRoundedRect(QStyle::visualRect(option.direction, option.rect, rect), 4, 4); + painter->setPen(Qt::black); painter->setFont(errorFont); QRect textRect(rect.left() + margin, rect.top() + margin, @@ -285,87 +323,144 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem & }; if (!conflictTexts.isEmpty()) { - drawTextBox(conflictTexts, QColor(0xba, 0xba, 0x4d)); + drawTextBox(conflictTexts, QColor(IonosTheme::warningColor()), QColor(IonosTheme::warningBorderColor())); } if (!errorTexts.isEmpty()) { - drawTextBox(errorTexts, QColor(0xbb, 0x4d, 0x4d)); + drawTextBox(errorTexts, QColor(IonosTheme::errorColor()), QColor(IonosTheme::errorBorderColor())); } if (!infoTexts.isEmpty()) { - drawTextBox(infoTexts, QColor(0x4d, 0x4d, 0xba)); + drawTextBox(infoTexts, QColor(IonosTheme::infoColor()), QColor(IonosTheme::infoBorderColor())); } // Sync File Progress Bar: Show it if syncFile is not empty. if (showProgess) { - const auto fileNameTextHeight = subFm.boundingRect(tr("File")).height(); - constexpr auto barHeight = 7; // same height as quota bar - const auto overallWidth = option.rect.right() - aliasMargin - optionsButtonVisualRect.width() - nextToIcon; + drawSyncProgressBar(painter, opt, index, subFm, aliasMargin, remotePathRect, margin, nextToIcon); + } - painter->save(); + drawMoreOptionsButton(painter, option, index); +} + +void FolderStatusDelegate::drawSyncProgressBar(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index, const QFontMetrics &subFm, const int aliasMargin, const QRect &remotePathRect, const int margin, const int nextToIcon) const +{ + auto overallPercent = qvariant_cast(index.data(SyncProgressOverallPercent)); + auto overallString = qvariant_cast(index.data(SyncProgressOverallString)); + auto optionsButtonVisualRect = optionsButtonRect(option.rect, option.direction); - // Overall Progress Bar. - const auto progressBarRect = QRect(nextToIcon, - remotePathRect.top(), - overallWidth - 2 * margin, - barHeight); + const auto fileNameTextHeight = subFm.boundingRect(tr("File")).height(); + constexpr auto barHeight = 7; // same height as quota bar + const auto overallWidth = option.rect.right() - aliasMargin - optionsButtonVisualRect.width() - nextToIcon; - QStyleOptionProgressBar progressBarOpt; + QFont progressFont(option.font); + progressFont.setPixelSize(IonosTheme::settingsTextPixel()); + progressFont.setWeight(IonosTheme::settingsTitleWeightNormal()); + painter->save(); + + // Overall Progress Bar. + const auto progressBarRect = QRect(nextToIcon, + remotePathRect.top(), + overallWidth - 2 * margin, + barHeight); + + QStyleOptionProgressBar progressBarOpt; - progressBarOpt.state = option.state | QStyle::State_Horizontal; - progressBarOpt.minimum = 0; - progressBarOpt.maximum = 100; - progressBarOpt.progress = overallPercent; - progressBarOpt.orientation = Qt::Horizontal; - progressBarOpt.rect = QStyle::visualRect(option.direction, option.rect, progressBarRect); + progressBarOpt.state = option.state | QStyle::State_Horizontal; + progressBarOpt.minimum = 0; + progressBarOpt.maximum = 100; + progressBarOpt.progress = overallPercent; + progressBarOpt.orientation = Qt::Horizontal; + progressBarOpt.rect = QStyle::visualRect(option.direction, option.rect, progressBarRect); #ifdef Q_OS_MACOS - backupStyle->drawControl(QStyle::CE_ProgressBar, &progressBarOpt, painter, option.widget); + backupStyle->drawControl(QStyle::CE_ProgressBar, &progressBarOpt, painter, option.widget); #else - QApplication::style()->drawControl(QStyle::CE_ProgressBar, &progressBarOpt, painter, option.widget); + QApplication::style()->drawControl(QStyle::CE_ProgressBar, &progressBarOpt, painter, option.widget); #endif + // Overall Progress Text + QRect overallProgressRect; + overallProgressRect.setTop(progressBarRect.bottom() + margin); + overallProgressRect.setHeight(fileNameTextHeight); + overallProgressRect.setLeft(progressBarRect.left()); + overallProgressRect.setWidth(progressBarRect.width()); + painter->setFont(progressFont); - // Overall Progress Text - QRect overallProgressRect; - overallProgressRect.setTop(progressBarRect.bottom() + margin); - overallProgressRect.setHeight(fileNameTextHeight); - overallProgressRect.setLeft(progressBarRect.left()); - overallProgressRect.setWidth(progressBarRect.width()); - painter->setFont(progressFont); - - painter->drawText(QStyle::visualRect(option.direction, option.rect, overallProgressRect), Qt::AlignLeft | Qt::AlignVCenter, overallString); - painter->restore(); - } + painter->drawText(QStyle::visualRect(option.direction, option.rect, overallProgressRect), Qt::AlignLeft | Qt::AlignVCenter, overallString); painter->restore(); +} + +void FolderStatusDelegate::drawElidedText(QPainter *painter, QStyleOptionViewItem option, QFontMetrics fontMetric, QFont font, QString text, QRect rect) const{ + const auto elidedText = fontMetric.elidedText(text, Qt::ElideRight, rect.width()); + painter->setFont(font); + painter->drawText(QStyle::visualRect(option.direction, option.rect, rect), Qt::AlignLeft, elidedText); +} + +void FolderStatusDelegate::drawMoreOptionsButton(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + auto optionsButtonVisualRect = optionsButtonRect(option.rect, option.direction); + + QStyleOptionButton btnOpt; + btnOpt.state = option.state; + btnOpt.state &= ~(QStyle::State_Selected | QStyle::State_HasFocus | QStyle::State_MouseOver); + btnOpt.state |= QStyle::State_Raised; + + if(optionsButtonVisualRect.contains(MousePos) ) { - QStyleOptionToolButton btnOpt; - btnOpt.state = option.state; - btnOpt.state &= ~(QStyle::State_Selected | QStyle::State_HasFocus); + btnOpt.state |= QStyle::State_MouseOver; + } + + if (btnOpt.state & QStyle::State_Enabled && btnOpt.state & QStyle::State_MouseOver && index == _pressedIndex) { + btnOpt.state |= QStyle::State_Sunken; + } else { btnOpt.state |= QStyle::State_Raised; - btnOpt.arrowType = Qt::NoArrow; - btnOpt.subControls = QStyle::SC_ToolButton; - btnOpt.rect = optionsButtonVisualRect; - btnOpt.icon = _iconMore; - const auto buttonSize = QApplication::style()->pixelMetric(QStyle::PM_ButtonIconSize); - btnOpt.iconSize = QSize(buttonSize, buttonSize); - QApplication::style()->drawComplexControl(QStyle::CC_ToolButton, &btnOpt, painter); } + + btnOpt.rect = optionsButtonVisualRect; + btnOpt.icon = _iconMore; + const auto iconSize = optionsButtonIconSize(); + btnOpt.iconSize = QSize(iconSize, iconSize); + QWidget buttonWidget; + buttonWidget.setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::MoreOptions)); + + QApplication::style()-> + drawControl( + static_cast(sesStyle::CE_TreeViewMoreOptions), &btnOpt, painter, &buttonWidget); } -bool FolderStatusDelegate::editorEvent(QEvent *event, QAbstractItemModel *model, - const QStyleOptionViewItem &option, const QModelIndex &index) +int FolderStatusDelegate::optionsButtonIconSize() { + // Using this calculation to use the DPI-Scaled values. The QStyleHelper::dpiScaled is not accessible from here. + return QApplication::style()->pixelMetric(QStyle::PM_LargeIconSize) - QApplication::style()->pixelMetric(QStyle::PM_MenuScrollerHeight); +} + +bool FolderStatusDelegate::editorEvent( + QEvent *event, + QAbstractItemModel *model, + const QStyleOptionViewItem &option, + const QModelIndex &index) { switch (event->type()) { case QEvent::MouseButtonPress: case QEvent::MouseMove: if (const auto *view = qobject_cast(option.widget)) { auto *me = dynamic_cast(event); - QModelIndex index; + QModelIndex pressedIndex; if (me->buttons()) { - index = view->indexAt(me->pos()); + pressedIndex = view->indexAt(me->pos()); } - if (_pressedIndex != index) { - _pressedIndex = index; + if (_pressedIndex != pressedIndex) { + _pressedIndex = pressedIndex; + view->viewport()->update(); + } + auto optionsButtonVisualRect = optionsButtonRect(option.rect, option.direction); + + MousePos = me->pos(); + if(optionsButtonVisualRect.contains(MousePos)) + { + _hoveredIndex = index; + view->viewport()->update(); + } else if(_hoveredIndex.isValid()) + { + _hoveredIndex = QModelIndex(); view->viewport()->update(); } } @@ -381,37 +476,29 @@ bool FolderStatusDelegate::editorEvent(QEvent *event, QAbstractItemModel *model, QRect FolderStatusDelegate::optionsButtonRect(QRect within, Qt::LayoutDirection direction) { - QFont font = QFont(); + QFont font = QFont(IonosTheme::settingsFont()); QFont aliasFont = makeAliasFont(font); QFontMetrics fm(font); QFontMetrics aliasFm(aliasFont); within.setHeight(FolderStatusDelegate::rootFolderHeightWithoutErrors(fm, aliasFm)); - QStyleOptionToolButton opt; - int e = QApplication::style()->pixelMetric(QStyle::PM_ButtonIconSize); - opt.rect.setSize(QSize(e,e)); - QSize size = QApplication::style()->sizeFromContents(QStyle::CT_ToolButton, &opt, opt.rect.size()).expandedTo(QApplication::globalStrut()); - - int margin = QApplication::style()->pixelMetric(QStyle::PM_LayoutHorizontalSpacing); - QRect r(QPoint(within.right() - size.width() - margin, + QStyleOptionButton opt; + int iconSize = optionsButtonIconSize(); + opt.rect.setSize(QSize(iconSize,iconSize)); + QSize size = QApplication::style()->sizeFromContents( + static_cast(sesStyle::CT_TreeViewMoreOptions), &opt, opt.rect.size()).expandedTo(QApplication::globalStrut()); + + // Using PM_LargeIconSize as margin because it get DPI Scaled, which I canot access from here + int margin = QApplication::style()->pixelMetric(QStyle::PM_LargeIconSize); + QRect r(QPoint(within.right() - size.width() - aliasFm.height() / 2, within.top() + within.height() / 2 - size.height() / 2), size); return QStyle::visualRect(direction, within, r); } -QRect FolderStatusDelegate::addButtonRect(QRect within, Qt::LayoutDirection direction) -{ - QFontMetrics fm(qApp->font("QPushButton")); - QStyleOptionButton opt; - opt.text = addFolderText(); - QSize size = QApplication::style()->sizeFromContents(QStyle::CT_PushButton, &opt, fm.size(Qt::TextSingleLine, opt.text)).expandedTo(QApplication::globalStrut()); - QRect r(QPoint(within.left(), within.top() + within.height() / 2 - size.height() / 2), size); - return QStyle::visualRect(direction, within, r); -} - QRect FolderStatusDelegate::errorsListRect(QRect within) { - QFont font = QFont(); + QFont font = QFont(IonosTheme::settingsFont()); QFont aliasFont = makeAliasFont(font); QFontMetrics fm(font); QFontMetrics aliasFm(aliasFont); @@ -426,7 +513,7 @@ void FolderStatusDelegate::slotStyleChanged() void FolderStatusDelegate::customizeStyle() { - _iconMore = Theme::createColorAwareIcon(QLatin1String(":/client/theme/more.svg")); + _iconMore = Theme::createColorAwareIcon(QLatin1String(":/client/theme/ses/ses-more.svg"), QSize(128, 128)); } } // namespace OCC diff --git a/src/gui/folderstatusdelegate.h b/src/gui/folderstatusdelegate.h index a8ed1c41de3b4..32b6786d094f1 100644 --- a/src/gui/folderstatusdelegate.h +++ b/src/gui/folderstatusdelegate.h @@ -27,6 +27,7 @@ class FolderStatusDelegate : public QStyledItemDelegate Q_OBJECT public: FolderStatusDelegate(); + QPoint MousePos; enum datarole { FolderAliasRole = Qt::UserRole + 100, HeaderRole, @@ -60,8 +61,9 @@ class FolderStatusDelegate : public QStyledItemDelegate /** * return the position of the option button within the item */ + + static QRect optionsButtonRect(QRect within, Qt::LayoutDirection direction); - static QRect addButtonRect(QRect within, Qt::LayoutDirection direction); static QRect errorsListRect(QRect within); static int rootFolderHeightWithoutErrors(const QFontMetrics &fm, const QFontMetrics &aliasFm); @@ -70,9 +72,17 @@ public slots: private: void customizeStyle(); + void drawAddButton(QPainter *,const QStyleOptionViewItem &, const QModelIndex &) const; + void drawElidedText(QPainter *painter, QStyleOptionViewItem option, QFontMetrics fontMetric, QFont font, QString text, QRect rect) const; + void drawSyncProgressBar(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index, const QFontMetrics &subFm, const int aliasMargin, const QRect &remotePathRect, const int margin, const int nextToIcon) const; + void drawMoreOptionsButton(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; + + static int optionsButtonIconSize(); static QString addFolderText(); + static QString addInfoText(); QPersistentModelIndex _pressedIndex; + QPersistentModelIndex _hoveredIndex; QIcon _iconMore; }; diff --git a/src/gui/folderstatusview.cpp b/src/gui/folderstatusview.cpp index a353bc49f269a..876d02bc36b50 100644 --- a/src/gui/folderstatusview.cpp +++ b/src/gui/folderstatusview.cpp @@ -14,11 +14,15 @@ #include "folderstatusview.h" #include "folderstatusdelegate.h" +#include "ionostheme.h" namespace OCC { FolderStatusView::FolderStatusView(QWidget *parent) : QTreeView(parent) { + #ifdef Q_OS_MAC + setPalette(QPalette(QPalette::ButtonText, IonosTheme::white())); + #endif } QModelIndex FolderStatusView::indexAt(const QPoint &point) const @@ -32,11 +36,7 @@ QModelIndex FolderStatusView::indexAt(const QPoint &point) const QRect FolderStatusView::visualRect(const QModelIndex &index) const { - QRect rect = QTreeView::visualRect(index); - if (index.data(FolderStatusDelegate::AddButton).toBool()) { - return FolderStatusDelegate::addButtonRect(rect, layoutDirection()); - } - return rect; + return QTreeView::visualRect(index); } } // namespace OCC diff --git a/src/gui/folderwizard.cpp b/src/gui/folderwizard.cpp index 3d3efa2b1fa16..1969c48962a98 100644 --- a/src/gui/folderwizard.cpp +++ b/src/gui/folderwizard.cpp @@ -13,16 +13,18 @@ */ #include "folderwizard.h" -#include "folderman.h" -#include "configfile.h" -#include "theme.h" -#include "networkjobs.h" #include "account.h" -#include "selectivesyncdialog.h" #include "accountstate.h" +#include "buttonstyle.h" +#include "common/asserts.h" +#include "configfile.h" #include "creds/abstractcredentials.h" +#include "folderman.h" +#include "networkjobs.h" +#include "selectivesyncdialog.h" +#include "theme.h" +#include "SesComponents/syncdirvalidation.h" #include "wizard/owncloudwizard.h" -#include "common/asserts.h" #include #include @@ -30,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -62,9 +65,9 @@ QString FormatWarningsWizardPage::formatWarnings(const QStringList &warnings) co { QString ret; if (warnings.count() == 1) { - ret = tr("Warning: %1").arg(warnings.first()); + ret = tr("%1").arg(warnings.first()); } else if (warnings.count() > 1) { - ret = tr("Warning:") + "
    "; + ret = tr("") + "
      "; Q_FOREACH (QString warning, warnings) { ret += QString::fromLatin1("
    • %1
    • ").arg(warning); } @@ -90,8 +93,10 @@ FolderWizardLocalPath::FolderWizardLocalPath(const AccountPtr &account) _ui.localFolderLineEdit->setText(QDir::toNativeSeparators(defaultPath)); _ui.localFolderLineEdit->setToolTip(tr("Enter the path to the local folder.")); - _ui.warnLabel->setTextFormat(Qt::RichText); - _ui.warnLabel->hide(); + _ui.sesSnackBar->setWordWrap(true); + _ui.sesSnackBar->hide(); + + _ui.localFolderChooseBtn->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Primary)); changeStyle(); } @@ -100,12 +105,12 @@ FolderWizardLocalPath::~FolderWizardLocalPath() = default; void FolderWizardLocalPath::initializePage() { - _ui.warnLabel->hide(); + _ui.sesSnackBar->hide(); } void FolderWizardLocalPath::cleanupPage() { - _ui.warnLabel->hide(); + _ui.sesSnackBar->hide(); } bool FolderWizardLocalPath::isComplete() const @@ -116,23 +121,18 @@ bool FolderWizardLocalPath::isComplete() const const auto errorStr = FolderMan::instance()->checkPathValidityForNewFolder( QDir::fromNativeSeparators(_ui.localFolderLineEdit->text()), serverUrl).second; - - bool isOk = errorStr.isEmpty(); - QStringList warnStrings; - if (!isOk) { - warnStrings << errorStr; + if(errorStr.isEmpty()) + { + _ui.sesSnackBar->hide(); + _ui.sesSnackBar->clearMessage(); + return true; } - - _ui.warnLabel->setWordWrap(true); - if (isOk) { - _ui.warnLabel->hide(); - _ui.warnLabel->clear(); - } else { - _ui.warnLabel->show(); - QString warnings = formatWarnings(warnStrings); - _ui.warnLabel->setText(warnings); + else + { + _ui.sesSnackBar->show(); + _ui.sesSnackBar->setWarning(formatWarnings(QStringList(errorStr))); + return false; } - return isOk; } void FolderWizardLocalPath::slotChooseLocalFolder() @@ -151,6 +151,13 @@ void FolderWizardLocalPath::slotChooseLocalFolder() QString dir = QFileDialog::getExistingDirectory(this, tr("Select the source folder"), sf); + + SyncDirValidator syncDirValidator(dir); + if (!syncDirValidator.isValidDir()) { + _ui.sesSnackBar->show(); + _ui.sesSnackBar->setError(syncDirValidator.message()); + return; + } if (!dir.isEmpty()) { // set the last directory component name as alias _ui.localFolderLineEdit->setText(QDir::toNativeSeparators(dir)); @@ -177,8 +184,60 @@ void FolderWizardLocalPath::changeEvent(QEvent *e) void FolderWizardLocalPath::changeStyle() { - const auto yellowWarnPalette = yellowWarnWidgetPalette(_ui.warnLabel->palette()); - _ui.warnLabel->setPalette(yellowWarnPalette); + _ui.title->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsBigTitleSize(), + IonosTheme::settingsTitleWeight600(), + IonosTheme::titleColor())); + + _ui.title->setProperty("text", tr("Add Folder Sync")); + + _ui.subTitle->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTitleWeight600(), + IonosTheme::folderWizardSubtitleColor())); + + _ui.subTitle->setProperty("text", tr("Step 1 of 3: Select local folder")); + + _ui.description->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor())); + + _ui.description->setProperty("text", + tr("Select a folder on your hard drive that should be permanetly connected to your %1. All files and " + "subfolders are automatically uploaded and synchronized").arg(Theme::instance()->appNameGUI())); + + _ui.localFolderLineEdit->setStyleSheet(QString( + "color: %1; font-family: %2; font-size: %3; font-weight: %4; border-radius: %5; border: 1px " + "solid %6; padding: 0px 12px; text-align: left; vertical-align: middle; height: 40px; background: %7; ") + .arg(IonosTheme::folderWizardPathColor()) + .arg(IonosTheme::settingsFont()) + .arg(IonosTheme::settingsTextSize()) + .arg(IonosTheme::settingsTextWeight()) + .arg(IonosTheme::buttonRadius()) + .arg(IonosTheme::menuBorderColor()) + .arg(IonosTheme::white()) + ); + + _ui.localFolderChooseBtn->setProperty("text", tr("Choose")); + + +#if defined(Q_OS_MAC) + _ui.localFolderChooseBtn->setStyleSheet( + QStringLiteral("QPushButton { margin-left: 5px; margin-top: 12px; height: 40px; width: 80px; %1} ").arg( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTitleWeight500(), + IonosTheme::white() + ) + ) + ); +#endif + } // ================================================================================= @@ -187,7 +246,7 @@ FolderWizardRemotePath::FolderWizardRemotePath(const AccountPtr &account) , _account(account) { _ui.setupUi(this); - _ui.warnFrame->hide(); + _ui.sesSnackBar->hide(); _ui.folderTreeWidget->setSortingEnabled(true); _ui.folderTreeWidget->sortByColumn(0, Qt::AscendingOrder); @@ -198,11 +257,21 @@ FolderWizardRemotePath::FolderWizardRemotePath(const AccountPtr &account) connect(_ui.folderTreeWidget, &QTreeWidget::currentItemChanged, this, &FolderWizardRemotePath::slotCurrentItemChanged); connect(_ui.folderEntry, &QLineEdit::textEdited, this, &FolderWizardRemotePath::slotFolderEntryEdited); + _ui.refreshButton->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Primary)); + _ui.addFolderButton->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Primary)); + + _ui.buttonLayout->setAlignment(Qt::AlignLeft); + _lscolTimer.setInterval(500); _lscolTimer.setSingleShot(true); connect(&_lscolTimer, &QTimer::timeout, this, &FolderWizardRemotePath::slotLsColFolderEntry); _ui.folderTreeWidget->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); + +#ifdef Q_OS_MAC + _ui.folderTreeWidget->setPalette(QPalette(IonosTheme::white())); +#endif + // Make sure that there will be a scrollbar when the contents is too wide _ui.folderTreeWidget->header()->setStretchLastSection(false); @@ -219,12 +288,51 @@ void FolderWizardRemotePath::slotAddRemoteFolder() } auto *dlg = new QInputDialog(this); - dlg->setWindowTitle(tr("Create Remote Folder")); dlg->setLabelText(tr("Enter the name of the new folder to be created below \"%1\":") .arg(parent)); dlg->open(this, SLOT(slotCreateRemoteFolder(QString))); + + QDialogButtonBox *buttonBox = dlg->findChild(); + buttonBox->setLayoutDirection(Qt::RightToLeft); + buttonBox->layout()->setSpacing(16); + buttonBox->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed); + buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Primary)); dlg->setAttribute(Qt::WA_DeleteOnClose); + + dlg->findChild()->setStyleSheet( + QStringLiteral( + "color: %1; font-family: %2; font-size: %3; font-weight: %4; border-radius: %5; border: 1px " + "solid %6; padding: 0px 12px; text-align: left; vertical-align: middle; height: 40px; background: %7; ").arg( + IonosTheme::folderWizardPathColor(), + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::buttonRadius(), + IonosTheme::menuBorderColor(), + IonosTheme::white() + ) + ); + + #ifdef Q_OS_MAC + buttonBox->layout()->setSpacing(24); + + dlg->setStyleSheet( + QStringLiteral(" %1; } ").arg( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + ) + ); + + buttonBox->button(QDialogButtonBox::Ok)->setStyleSheet( + buttonBox->button(QDialogButtonBox::Ok)->styleSheet() + + QStringLiteral(" color: %1; ").arg(IonosTheme::white()) + ); + #endif } void FolderWizardRemotePath::slotCreateRemoteFolder(const QString &folder) @@ -250,7 +358,7 @@ void FolderWizardRemotePath::slotCreateRemoteFolder(const QString &folder) void FolderWizardRemotePath::slotCreateRemoteFolderFinished() { qCDebug(lcWizard) << "webdav mkdir request finished"; - showWarn(tr("Folder was successfully created on %1.").arg(Theme::instance()->appNameGUI())); + showSuccess(tr("Folder was successfully created on %1.").arg(Theme::instance()->appNameGUI())); slotRefreshFolders(); _ui.folderEntry->setText(dynamic_cast(sender())->path()); slotLsColFolderEntry(); @@ -260,9 +368,9 @@ void FolderWizardRemotePath::slotHandleMkdirNetworkError(QNetworkReply *reply) { qCWarning(lcWizard) << "webdav mkdir request failed:" << reply->error(); if (!_account->credentials()->stillValid(reply)) { - showWarn(tr("Authentication failed accessing %1").arg(Theme::instance()->appNameGUI())); + showError(tr("Authentication failed accessing %1").arg(Theme::instance()->appNameGUI())); } else { - showWarn(tr("Failed to create the folder on %1. Please check manually.") + showError(tr("Failed to create the folder on %1. Please check manually.") .arg(Theme::instance()->appNameGUI())); } } @@ -280,7 +388,7 @@ void FolderWizardRemotePath::slotHandleLsColNetworkError(QNetworkReply *reply) } auto job = qobject_cast(sender()); ASSERT(job); - showWarn(tr("Failed to list a folder. Error: %1") + showError(tr("Failed to list a folder. Error: %1") .arg(job->errorStringParsingBody())); } @@ -528,11 +636,33 @@ void FolderWizardRemotePath::initializePage() void FolderWizardRemotePath::showWarn(const QString &msg) const { if (msg.isEmpty()) { - _ui.warnFrame->hide(); + _ui.sesSnackBar->hide(); + + } else { + _ui.sesSnackBar->show(); + _ui.sesSnackBar->setWarning(msg); + } +} + +void FolderWizardRemotePath::showSuccess(const QString &msg) const +{ + if (msg.isEmpty()) { + _ui.sesSnackBar->hide(); + + } else { + _ui.sesSnackBar->show(); + _ui.sesSnackBar->setSuccess(msg); + } +} + +void FolderWizardRemotePath::showError(const QString &msg) const +{ + if (msg.isEmpty()) { + _ui.sesSnackBar->hide(); } else { - _ui.warnFrame->show(); - _ui.warnLabel->setText(msg); + _ui.sesSnackBar->show(); + _ui.sesSnackBar->setError(msg); } } @@ -554,27 +684,114 @@ void FolderWizardRemotePath::changeEvent(QEvent *e) void FolderWizardRemotePath::changeStyle() { - const auto yellowWarnPalette = yellowWarnWidgetPalette(_ui.warnLabel->palette()); - _ui.warnLabel->setPalette(yellowWarnPalette); + _ui.title->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsBigTitleSize(), + IonosTheme::settingsTitleWeight600(), + IonosTheme::titleColor())); + + _ui.title->setProperty("text", tr("Add Folder Sync")); + + _ui.subTitle->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTitleWeight600(), + IonosTheme::folderWizardSubtitleColor())); + + _ui.subTitle->setProperty("text", tr("Step 2 of 3: Directory in your %1").arg(Theme::instance()->appNameGUI())); + + _ui.description1->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor())); + + _ui.description1->setProperty("text", + tr("Please now select or create a target folder in your %1 where the content should be uploaded and synchronized.").arg(Theme::instance()->appNameGUI())); + + _ui.description2->setProperty("text", + tr("Both folders are permanently linked and the respective contents are automatically synchronized and updated.")); + + _ui.description2->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor())); + + _ui.folderEntry->setStyleSheet( + QStringLiteral("color: %1; font-family: %2; font-size: %3; font-weight: %4; border-radius: %5; border: 1px " + "solid %6; padding: 0px 12px; text-align: left; vertical-align: middle; height: 40px;") + .arg(IonosTheme::folderWizardPathColor()) + .arg(IonosTheme::settingsFont()) + .arg(IonosTheme::settingsTextSize()) + .arg(IonosTheme::settingsTextWeight()) + .arg(IonosTheme::buttonRadius()) + .arg(IonosTheme::menuBorderColor())); + + _ui.folderTreeWidget->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor())); + + _ui.refreshButton->setProperty("text", tr("Refresh")); + + _ui.addFolderButton->setProperty("text", tr("Create folder")); + +#if defined(Q_OS_MAC) + _ui.buttonLayout->setSpacing(24); +#endif } // ==================================================================================== FolderWizardSelectiveSync::FolderWizardSelectiveSync(const AccountPtr &account) { - auto *layout = new QVBoxLayout(this); + _uiSelectiveSync.setupUi(this); + auto *layout = _uiSelectiveSync.verticalLayout; _selectiveSync = new SelectiveSyncWidget(account, this); layout->addWidget(_selectiveSync); if (Theme::instance()->showVirtualFilesOption() && bestAvailableVfsMode() != Vfs::Off) { _virtualFilesCheckBox = new QCheckBox(tr("Use virtual files instead of downloading content immediately %1").arg(bestAvailableVfsMode() == Vfs::WindowsCfApi ? QString() : tr("(experimental)"))); + connect(_virtualFilesCheckBox, &QCheckBox::clicked, this, &FolderWizardSelectiveSync::virtualFilesCheckboxClicked); connect(_virtualFilesCheckBox, &QCheckBox::stateChanged, this, [this](int state) { _selectiveSync->setEnabled(state == Qt::Unchecked); }); _virtualFilesCheckBox->setChecked(bestAvailableVfsMode() == Vfs::WindowsCfApi); + _virtualFilesCheckBox->setStyleSheet("margin-top: 5px;"); + layout->addWidget(_virtualFilesCheckBox); + + _virtualFilesCheckBox->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor())); } + + _selectiveSync->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor())); + + _uiSelectiveSync.title->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsBigTitleSize(), + IonosTheme::settingsTitleWeight600(), + IonosTheme::titleColor())); + _uiSelectiveSync.title->setProperty("text", tr("Add Folder Sync")); + + _uiSelectiveSync.subTitle->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTitleWeight600(), + IonosTheme::folderWizardSubtitleColor())); + + _uiSelectiveSync.subTitle->setProperty("text", tr("Step 3 of 3: Selektive Synchronisation")); + } FolderWizardSelectiveSync::~FolderWizardSelectiveSync() = default; @@ -669,8 +886,8 @@ FolderWizard::FolderWizard(AccountPtr account, QWidget *parent) , _folderWizardSourcePage(new FolderWizardLocalPath(account)) , _folderWizardSelectiveSyncPage(new FolderWizardSelectiveSync(account)) { - setWizardStyle(QWizard::ModernStyle); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + setPage(Page_Source, _folderWizardSourcePage); _folderWizardSourcePage->installEventFilter(this); if (!Theme::instance()->singleSyncFolder()) { @@ -681,8 +898,14 @@ FolderWizard::FolderWizard(AccountPtr account, QWidget *parent) setPage(Page_SelectiveSync, _folderWizardSelectiveSyncPage); setWindowTitle(tr("Add Folder Sync Connection")); + setButtonLayout({ QWizard::Stretch, QWizard::CancelButton, QWizard::NextButton, QWizard::FinishButton }); setOptions(QWizard::CancelButtonOnLeft); setButtonText(QWizard::FinishButton, tr("Add Sync Connection")); + button(QWizard::NextButton)->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Primary)); + + adjustWizardSize(); + setWizardStyle(QWizard::ClassicStyle); + customizeStyle(); } FolderWizard::~FolderWizard() = default; @@ -710,4 +933,29 @@ void FolderWizard::resizeEvent(QResizeEvent *event) } } +void FolderWizard::customizeStyle() +{ + // HINT: Customize wizard's own style here, if necessary in the future (Dark-/Light-Mode switching) + + // Set background colors + auto wizardPalette = palette(); + const auto backgroundColor = QColor(IonosTheme::dialogBackgroundColor()); + + // Set Color of upper part + wizardPalette.setColor(QPalette::Base, backgroundColor); + + // Set Color of lower part + wizardPalette.setColor(QPalette::Window, backgroundColor); + + // Set separator color + wizardPalette.setColor(QPalette::Mid, backgroundColor); + + setPalette(wizardPalette); +} + +void FolderWizard::adjustWizardSize() +{ + setFixedSize(QSize(576, 704)); +} + } // end namespace diff --git a/src/gui/folderwizard.h b/src/gui/folderwizard.h index 867a50ec7b967..5d27eb367156b 100644 --- a/src/gui/folderwizard.h +++ b/src/gui/folderwizard.h @@ -24,6 +24,7 @@ #include "ui_folderwizardsourcepage.h" #include "ui_folderwizardtargetpage.h" +#include "ui_folderwizardselectivesync.h" class QCheckBox; @@ -95,6 +96,8 @@ class FolderWizardRemotePath : public FormatWarningsWizardPage protected slots: void showWarn(const QString & = QString()) const; + void showSuccess(const QString & = QString()) const; + void showError(const QString & = QString()) const; void slotAddRemoteFolder(); void slotCreateRemoteFolder(const QString &); void slotCreateRemoteFolderFinished(); @@ -146,6 +149,7 @@ private slots: void virtualFilesCheckboxClicked(); private: + Ui_FolderWizardSelectiveSync _uiSelectiveSync{}; SelectiveSyncWidget *_selectiveSync; QCheckBox *_virtualFilesCheckBox = nullptr; }; @@ -174,8 +178,10 @@ class FolderWizard : public QWizard FolderWizardLocalPath *_folderWizardSourcePage; FolderWizardRemotePath *_folderWizardTargetPage = nullptr; FolderWizardSelectiveSync *_folderWizardSelectiveSyncPage; -}; + void customizeStyle(); + void adjustWizardSize(); +}; } // namespace OCC diff --git a/src/gui/folderwizardselectivesync.ui b/src/gui/folderwizardselectivesync.ui new file mode 100644 index 0000000000000..29fd0b148e663 --- /dev/null +++ b/src/gui/folderwizardselectivesync.ui @@ -0,0 +1,85 @@ + + + FolderWizardSelectiveSync + + + + 0 + 0 + 639 + 460 + + + + Form + + + + + + 20 + + + 0 + + + 20 + + + 0 + + + + + font: 18pt bold; + + + Add Folder Sync + + + Qt::PlainText + + + false + + + + + + + color: rgb(16, 73, 150); font: bold; + + + Step 3 of 3: Selektive Synchronisation + + + Qt::PlainText + + + false + + + + + + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 349 + 360 + + + + + + + + + \ No newline at end of file diff --git a/src/gui/folderwizardsourcepage.ui b/src/gui/folderwizardsourcepage.ui index 94af3645a594f..4175c0c13519a 100644 --- a/src/gui/folderwizardsourcepage.ui +++ b/src/gui/folderwizardsourcepage.ui @@ -6,69 +6,152 @@ 0 0 - 423 - 174 + 639 + 460 Form - + + + + 20 + + + 0 + + + 20 + + + 0 + + + + + font: 18pt bold; + + + Add Folder Sync + + + Qt::PlainText + + + false + + + + + + + color: rgb(16, 73, 150); font: bold; + + + Step 1 of 3: Select local folder + + + Qt::PlainText + + + false + + + + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + + + Qt::PlainText + + + true + + + + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 20 + 15 + + + + + + + + + + + + 85 + 16777215 + + + + &Choose + + + + + + + true + + + + + + Qt::Vertical + + QSizePolicy::Preferred + 349 - 0 + 360 - - - - Pick a local folder on your computer to sync - - - - - - - - - - - &Choose … - - - - - - - - - - - - true - - - QFrame::StyledPanel - - - - - - Qt::RichText - - - 3 - - - diff --git a/src/gui/folderwizardtargetpage.ui b/src/gui/folderwizardtargetpage.ui index 4e53902aba6b2..937956c683747 100644 --- a/src/gui/folderwizardtargetpage.ui +++ b/src/gui/folderwizardtargetpage.ui @@ -1,125 +1,234 @@ - FolderWizardTargetPage - - - - 0 - 0 - 520 - 350 - - - - Form - - - - - - - - - true - - - QFrame::NoFrame - - - QFrame::Raised - - - - - - - - true - - - QFrame::NoFrame - - - QFrame::Plain - - - TextLabel - - - Qt::RichText - - - true - - - 3 - - - - - - - - - - - - Select a remote destination folder - - - true - - - false - - - - - - Create folder - - - - - - - Qt::Vertical - - - - 20 - 40 - + FolderWizardTargetPage + + + + 0 + 0 + 639 + 460 + - - - - - - Refresh + + Form - - - - - - true - - - true - - - - Folders - - - - - + + + + + 20 + + + 0 + + + 20 + + + 0 + + + + + font: 18pt bold; + + + Add Folder Sync + + + Qt::PlainText + + + false + + + + + + + color: rgb(16,73, 150);font: bold; + + + Step 2 of 3: Directory in your %1 + + + Qt::PlainText + + + false + + + + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + + + Qt::PlainText + + + true + + + + + + + + 0 + 0 + + + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + + + Qt::PlainText + + + true + + + + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 20 + 12 + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + true + + + true + + + + Folders + + + + + + + + true + + + + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 20 + 10 + + + + + + + + 16 + + + + + + 86 + 40 + + + + Refresh + + + + + + + + 167 + 40 + + + + Create folder + + + + + + + + - - - - - - + + + \ No newline at end of file diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index 2112d386d2b2d..ae704227b75ef 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -16,11 +16,13 @@ #include "ui_generalsettings.h" #include "theme.h" +#include "ionostheme.h" #include "configfile.h" #include "application.h" #include "owncloudsetupwizard.h" #include "accountmanager.h" #include "guiutility.h" +#include "linkbutton.h" #if defined(BUILD_UPDATER) #include "updater/updater.h" @@ -43,6 +45,7 @@ #include #include #include +#include #include @@ -155,6 +158,7 @@ GeneralSettings::GeneralSettings(QWidget *parent) this, &GeneralSettings::slotToggleOptionalServerNotifications); _ui->serverNotificationsCheckBox->setToolTip(tr("Server notifications that require attention.")); + connect(_ui->callNotificationsCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::slotToggleCallNotifications); _ui->callNotificationsCheckBox->setToolTip(tr("Show call notification dialogs.")); @@ -172,7 +176,7 @@ GeneralSettings::GeneralSettings(QWidget *parent) _ui->autostartCheckBox->setChecked(hasSystemAutoStart); _ui->autostartCheckBox->setDisabled(hasSystemAutoStart); _ui->autostartCheckBox->setToolTip(tr("You cannot disable autostart because system-wide autostart is enabled.")); - } else { + } else { connect(_ui->autostartCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::slotToggleLaunchOnStartup); _ui->autostartCheckBox->setChecked(ConfigFile().launchOnSystemStartup()); } @@ -182,9 +186,6 @@ GeneralSettings::GeneralSettings(QWidget *parent) _ui->infoAndUpdatesLabel->setText(Theme::instance()->about()); _ui->infoAndUpdatesLabel->setOpenExternalLinks(true); - // About legal notice - connect(_ui->legalNoticeButton, &QPushButton::clicked, this, &GeneralSettings::slotShowLegalNotice); - connect(_ui->usageDocumentationButton, &QPushButton::clicked, this, []() { Utility::openBrowser(QUrl(Theme::instance()->helpUrl())); }); @@ -202,6 +203,7 @@ GeneralSettings::GeneralSettings(QWidget *parent) connect(_ui->stopExistingFolderNowBigSyncCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::saveMiscSettings); connect(_ui->newExternalStorage, &QAbstractButton::toggled, this, &GeneralSettings::saveMiscSettings); connect(_ui->moveFilesToTrashCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::saveMiscSettings); + connect(_ui->sendData_checkbox, &QAbstractButton::toggled, this, &GeneralSettings::saveMiscSettings); #ifndef WITH_CRASHREPORTER _ui->crashreporterCheckBox->setVisible(false); @@ -228,8 +230,8 @@ GeneralSettings::GeneralSettings(QWidget *parent) int m1 = 0; int m2 = 0; int m3 = 0; - _ui->horizontalLayout_3->getContentsMargins(&m0, &m1, &m2, &m3); - _ui->horizontalLayout_3->setContentsMargins(0, m1, m2, m3); + _ui->horizontalLayout_1->getContentsMargins(&m0, &m1, &m2, &m3); + _ui->horizontalLayout_1->setContentsMargins(0, m1, m2, m3); // OEM themes are not obliged to ship mono icons, so there // is no point in offering an option @@ -240,7 +242,13 @@ GeneralSettings::GeneralSettings(QWidget *parent) // accountAdded means the wizard was finished and the wizard might change some options. connect(AccountManager::instance(), &AccountManager::accountAdded, this, &GeneralSettings::loadMiscSettings); + connect(_ui->moreInfoLinkButton, &OCC::LinkButton::clicked, this, &GeneralSettings::slotOpenMoreInformationLink); + connect(_ui->legalNoticeLinkButton, &OCC::LinkButton::clicked, this, &GeneralSettings::slotOpenLegalNoticeLink); + connect(_ui->openSourceLinkButton, &OCC::LinkButton::clicked, this, &GeneralSettings::slotOpenOpenSourceLink); + connect(_ui->privacyLinkButton, &OCC::LinkButton::clicked, this, &GeneralSettings::slotOpenPrivacyLink); + connect(_ui->sendData_checkbox, &QAbstractButton::toggled, this, &GeneralSettings::slotToggleSendData); + connectToTracking(); customizeStyle(); } @@ -249,6 +257,71 @@ GeneralSettings::~GeneralSettings() delete _ui; } +void GeneralSettings::connectToTracking() +{ + // DataCollectionWrapper dcw; + + connect(_ui->autoCheckForUpdatesCheckBox, &QAbstractButton::clicked, this, [this](){ + _dcw.clicked(DataCollectionWrapper::TrackingPage::GeneralSettings + , DataCollectionWrapper::TrackingElement::AutoCheckforUpdate); + }); + + connect(_ui->autostartCheckBox, &QAbstractButton::clicked, this, [this](){ + _dcw.clicked(DataCollectionWrapper::TrackingPage::GeneralSettings + , DataCollectionWrapper::TrackingElement::AutoStart); + }); + + connect(_ui->serverNotificationsCheckBox, &QAbstractButton::clicked, this, [this](){ + _dcw.clicked(DataCollectionWrapper::TrackingPage::GeneralSettings + , DataCollectionWrapper::TrackingElement::ServerNotifications); + }); + + connect(_ui->moreInfoLinkButton, &OCC::LinkButton::clicked, this, [this](){ + _dcw.clicked(DataCollectionWrapper::TrackingPage::GeneralSettings + , DataCollectionWrapper::TrackingElement::MoreInformation); + }); + + connect(_ui->legalNoticeLinkButton, &OCC::LinkButton::clicked, this, [this](){ + _dcw.clicked(DataCollectionWrapper::TrackingPage::GeneralSettings + , DataCollectionWrapper::TrackingElement::LegalNotice); + }); + + connect(_ui->openSourceLinkButton, &OCC::LinkButton::clicked, this, [this](){ + _dcw.clicked(DataCollectionWrapper::TrackingPage::GeneralSettings + , DataCollectionWrapper::TrackingElement::OpenSourceComponents); + }); + + connect(_ui->privacyLinkButton, &OCC::LinkButton::clicked, this, [this](){ + _dcw.clicked(DataCollectionWrapper::TrackingPage::GeneralSettings + , DataCollectionWrapper::TrackingElement::PrivacyPolicy); + }); + + connect(_ui->sendData_checkbox, &QAbstractButton::clicked, this, [this](){ + _dcw.clicked(DataCollectionWrapper::TrackingPage::GeneralSettings, + DataCollectionWrapper::TrackingElement::ToogleSendData); + }); +} + +void GeneralSettings::slotOpenMoreInformationLink() +{ + QDesktopServices::openUrl(QUrl("https://wl.hidrive.com/easy/0007/")); +} + +void GeneralSettings::slotOpenLegalNoticeLink() +{ + QDesktopServices::openUrl(QUrl("https://wl.hidrive.com/easy/0004/")); +} + +void GeneralSettings::slotOpenOpenSourceLink() +{ + QDesktopServices::openUrl(QUrl("https://wl.hidrive.com/easy/0006")); +} + +void GeneralSettings::slotOpenPrivacyLink() +{ + QDesktopServices::openUrl(QUrl("https://wl.hidrive.com/easy/0005/")); +} + QSize GeneralSettings::sizeHint() const { return { @@ -271,6 +344,7 @@ void GeneralSettings::loadMiscSettings() _ui->newExternalStorage->setChecked(cfgFile.confirmExternalStorage()); _ui->monoIconsCheckBox->setChecked(cfgFile.monoIcons()); _ui->moveFilesToTrashCheckBox->setChecked(cfgFile.moveToTrash()); + _ui->sendData_checkbox->setChecked(cfgFile.sendData()); auto newFolderLimit = cfgFile.newBigFolderSizeLimit(); _ui->newFolderLimitCheckBox->setChecked(newFolderLimit.first); @@ -459,6 +533,7 @@ void GeneralSettings::saveMiscSettings() cfgFile.setConfirmExternalStorage(_ui->newExternalStorage->isChecked()); cfgFile.setNotifyExistingFoldersOverLimit(existingFolderLimitEnabled); cfgFile.setStopSyncingExistingFoldersOverLimit(stopSyncingExistingFoldersOverLimit); + cfgFile.setSendData(_ui->sendData_checkbox->isChecked()); _ui->existingFolderLimitCheckBox->setEnabled(newFolderLimitEnabled); _ui->stopExistingFolderNowBigSyncCheckBox->setEnabled(existingFolderLimitEnabled); @@ -538,6 +613,12 @@ void GeneralSettings::slotShowLegalNotice() delete notice; } +void GeneralSettings::slotToggleSendData() +{ + DataCollectionWrapper dcw; + dcw.setSendData(_ui->sendData_checkbox->isChecked()); +} + void GeneralSettings::slotStyleChanged() { customizeStyle(); @@ -553,6 +634,51 @@ void GeneralSettings::customizeStyle() }(); _ui->infoAndUpdatesLabel->setText(aboutText); + this->setStyleSheet( + QStringLiteral("QGroupBox { border: %1; font-size: %2; font-weight: %3; color: %4; }").arg( + Theme::instance()->systemPalette().base().color().name(), + IonosTheme::settingsTitleSize(), + IonosTheme::settingsTitleWeight500(), + IonosTheme::black() + ) + ); + + this->setStyleSheet( + this->styleSheet() + QStringLiteral("QCheckBox { font-size: %1; font-weight: %2; margin-left: %3 px; color: %4; }").arg( + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::smallMargin(), + IonosTheme::black() + ) + ); + + this->setStyleSheet( + this->styleSheet() + QStringLiteral("QLabel { font-size: %1; font-weight: %2; color: %3; }").arg( + IonosTheme::settingsTextSize(), + IonosTheme::settingsTitleWeight500(), + IonosTheme::black() + ) + ); + + this->setStyleSheet( + this->styleSheet() + QStringLiteral("QFrame { font-size: %1; font-weight: %2; color: %3; }").arg( + IonosTheme::settingsTextSize(), + IonosTheme::settingsTitleWeight600(), + IonosTheme::black() + ) + ); + +#if defined(Q_OS_MAC) + _ui->generalBoxLayout->setMargin(16); + _ui->dataProtectionBoxLayout->setMargin(16); +#endif + + // SES-4 removed + _ui->monoIconsCheckBox->hide(); + _ui->callNotificationsCheckBox->hide(); + _ui->advanced_groupBox->hide(); + _ui->updates_frame->hide(); + #if defined(BUILD_UPDATER) // updater info slotUpdateInfo(); diff --git a/src/gui/generalsettings.h b/src/gui/generalsettings.h index 70a726142db8b..8a13aaa86bf5f 100644 --- a/src/gui/generalsettings.h +++ b/src/gui/generalsettings.h @@ -19,7 +19,7 @@ #include #include - +#include "ga4/datacollectionwrapper.h" namespace OCC { class IgnoreListEditor; class SyncLogDialog; @@ -54,6 +54,11 @@ private slots: void slotCreateDebugArchive(); void loadMiscSettings(); void slotShowLegalNotice(); + void slotOpenMoreInformationLink(); + void slotOpenLegalNoticeLink(); + void slotOpenPrivacyLink(); + void slotOpenOpenSourceLink(); + void slotToggleSendData(); #if defined(BUILD_UPDATER) void slotUpdateInfo(); void slotUpdateChannelChanged(); @@ -62,8 +67,10 @@ private slots: #endif private: + void connectToTracking(); void customizeStyle(); + DataCollectionWrapper _dcw; Ui::GeneralSettings *_ui; QPointer _ignoreEditor; bool _currentlyLoading = false; diff --git a/src/gui/generalsettings.ui b/src/gui/generalsettings.ui index b0d82f7e47749..59f3cbb8f3079 100644 --- a/src/gui/generalsettings.ui +++ b/src/gui/generalsettings.ui @@ -1,467 +1,648 @@ - OCC::GeneralSettings - - - - 0 - 0 - 601 - 663 - - - - Form - - - - - - Advanced - - - - - - 0 + OCC::GeneralSettings + + + + 0 + 0 + 601 + 663 + - - - - - - Ask for confirmation before synchronizing new folders larger than - - - true - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 10 - 20 - - - - - - - - 999999 - - - 99 - - - - - - - MB - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - Notify when synchronised folders grow larger than specified limit - - - - - - - - - - - Qt::Horizontal + + Form + + + + + 24 - - QSizePolicy::Fixed + + 32 - - - 40 - 20 - + + 24 - - - - - - Automatically disable synchronisation of folders that overcome limit + + 24 - - - - - - - - - - - - Ask for confirmation before synchronizing external storages - - - - - - - - - - - Move removed files to trash - - - - - - - - - - - Show sync folders in &Explorer's navigation pane - - - - - - - - - - - - 0 - 0 - - - - S&how crash reporter - - - - - - - - - - - Edit &Ignored Files - - - - - - - Create Debug Archive - - - - - - - Qt::Horizontal - - - - 555 - 20 - - - - - - - - - - - - - Info - - - - - - - 0 - 0 - - - - Desktop client x.x.x - - - - - - - - - - - - - 0 - 0 - - - - Update channel - - - - - - - - 0 - 0 - - - - - stable - - - - - beta - - - - - - - - - - - true - - - true - - - - - - - - 0 - 0 - - - - &Restart && Update - - - - - - - - - - - - 0 - 0 - - - - &Automatically check for updates - - - true - - - - - - - - 0 - 0 - - - - Check Now - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - + + + + + + General Settings + + + + + + + + 3 + + + + + &Launch on system startup + + + + + + + Show server &notifications + + + + + + + For System Tray + + + Use &monochrome icons + + + + + + + Show call notifications + + + + + + + + + + Qt::Horizontal + + + + 20 + 0 + + + + + + + + + Updates + + + + + + + + 3 + + + + + + 0 + 0 + + + + &Automatically check for updates + + + true + + + + + + + + + + + + + Advanced + + + + + + 0 + + + + + + + Ask for confirmation before + synchronizing new folders larger than + + + true + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 10 + 20 + + + + + + + + 999999 + + + 99 + + + + + + + + MB + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + Notify when synchronised folders grow + larger than specified limit + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + Automatically disable synchronisation of + folders that overcome limit + + + + + + + + + + + + + Ask for confirmation before synchronizing + external storages + + + + + + + + + + + Move removed files to trash + + + + + + + + + + + Show sync folders in &Explorer's navigation + pane + + + + + + + + + + + + 0 + 0 + + + + S&how crash reporter + + + + + + + + + + + Edit &Ignored Files + + + + + + + Create Debug Archive + + + + + + + Qt::Horizontal + + + + 555 + 20 + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 16 + + + + QSizePolicy::Minimum + + + + + + + Data Protection + + + + 3 + + + + + &Analysis data collection for needs-based design + + + + + + + 12 + + + 5 + + + + + Legal Notice + + + + + + + Privacy Policy + + + + + + + Open Source Software + + + + + + + Qt::Horizontal + + + + 20 + 0 + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 10 + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + 0 + 0 + + + + Update channel + + + + + + + + 0 + 0 + + + + + stable + + + + + beta + + + + + + + + + + + true + + + true + + + + + + + + 0 + 0 + + + + &Restart && Update + + + + + + + + + + + + 0 + 0 + + + + Check Now + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Usage Documentation + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + Desktop client x.x.x + + + + + + + More Information + + + + + + + Qt::Horizontal + + + + 20 + 0 + + + + + + + - - - - - - - - Usage Documentation - - - - - - - Legal Notice - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - - - - - General Settings - - - - - - For System Tray - - - Use &monochrome icons - - - - - - - &Launch on system startup - - - - - - - Show server &notifications - - - - - - - Show call notifications - - - - - - - - - autostartCheckBox - serverNotificationsCheckBox - monoIconsCheckBox - ignoredFilesButton - newFolderLimitCheckBox - newFolderLimitSpinBox - crashreporterCheckBox - restartButton - - - - - newFolderLimitCheckBox - toggled(bool) - newFolderLimitSpinBox - setEnabled(bool) - - - 247 - 188 - - - 497 - 190 - - - - - + + autostartCheckBox + serverNotificationsCheckBox + monoIconsCheckBox + ignoredFilesButton + newFolderLimitCheckBox + newFolderLimitSpinBox + crashreporterCheckBox + restartButton + + + + + newFolderLimitCheckBox + toggled(bool) + newFolderLimitSpinBox + setEnabled(bool) + + + 247 + 188 + + + 497 + 190 + + + + + \ No newline at end of file diff --git a/src/gui/ignorelisttablewidget.cpp b/src/gui/ignorelisttablewidget.cpp index f6dd7347fe14b..2e14282e2ea56 100644 --- a/src/gui/ignorelisttablewidget.cpp +++ b/src/gui/ignorelisttablewidget.cpp @@ -1,10 +1,13 @@ #include "ignorelisttablewidget.h" + #include "ui_ignorelisttablewidget.h" #include "folderman.h" +#include "buttonstyle.h" #include #include +#include #include #include @@ -21,18 +24,29 @@ IgnoreListTableWidget::IgnoreListTableWidget(QWidget *parent) setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); ui->setupUi(this); - ui->descriptionLabel->setText(tr("Files or folders matching a pattern will not be synchronized.\n\n" - "Items where deletion is allowed will be deleted if they prevent a " - "directory from being removed. " - "This is useful for meta data.")); + customizeIgnoreListDialogStyle(); + + ui->descriptionLabel->setText(tr("Files or folders that match this pattern will not be synchronized.\n\n" + "Objects that are allowed to be deleted will be deleted if they would " + "prevent a folder from being deleted. " + "This is useful for metadata.")); - ui->removePushButton->setEnabled(false); connect(ui->tableWidget, &QTableWidget::itemSelectionChanged, this, &IgnoreListTableWidget::slotItemSelectionChanged); + + ui->removePushButton->setEnabled(false); + ui->removePushButton->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Secondary)); + ui->removePushButton->setMinimumSize(QSize(114, 40)); connect(ui->removePushButton, &QAbstractButton::clicked, this, &IgnoreListTableWidget::slotRemoveCurrentItem); + + ui->addPushButton->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Primary)); + ui->addPushButton->setMinimumSize(QSize(114, 40)); connect(ui->addPushButton, &QAbstractButton::clicked, this, &IgnoreListTableWidget::slotAddPattern); + + ui->removeAllPushButton->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Primary)); + ui->removeAllPushButton->setMinimumSize(QSize(114, 40)); connect(ui->removeAllPushButton, &QAbstractButton::clicked, this, &IgnoreListTableWidget::slotRemoveAllItems); @@ -108,10 +122,13 @@ void IgnoreListTableWidget::slotWriteIgnoreFile(const QString & file) void IgnoreListTableWidget::slotAddPattern() { - bool okClicked = false; - QString pattern = QInputDialog::getText(this, tr("Add Ignore Pattern"), - tr("Add a new ignore pattern:"), - QLineEdit::Normal, QString(), &okClicked); + QInputDialog inputDialog(this); + + customizeAddIgnorePatternDialogStyle(inputDialog); + + bool okClicked = inputDialog.exec() == QDialog::Accepted; + + QString pattern = inputDialog.textValue(); if (!okClicked || pattern.isEmpty()) return; @@ -167,4 +184,97 @@ int IgnoreListTableWidget::addPattern(const QString &pattern, bool deletable, bo return newRow; } +void IgnoreListTableWidget::customizeIgnoreListDialogStyle(){ + + ui->tableWidget->setStyleSheet( + QStringLiteral("QTableWidget { background-color: %1; color: %2; } ").arg( + IonosTheme::white(), + IonosTheme::black() + ) + + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + ); + + ui->descriptionLabel->setStyleSheet( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + ); + + ui->tableWidget->horizontalHeader()->setStyleSheet( + QStringLiteral("QHeaderView::section { background-color: %1; color: %2; border-bottom: none; %3; }").arg( + IonosTheme::white(), + IonosTheme::black(), + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + ) + ); + + ui->tableWidget->setMinimumSize(374, 424); + +#if defined(Q_OS_MAC) + ui->verticalButtonLayout->setSpacing(30); + this->setFixedWidth(584); +#endif + +} + +void IgnoreListTableWidget::customizeAddIgnorePatternDialogStyle(QInputDialog &inputDialog){ + inputDialog.setWindowTitle(tr("Ignore Pattern")); + inputDialog.setLabelText(tr("Add New Ignore Pattern")); + inputDialog.setTextValue(QString()); + inputDialog.resize(626, 196); + inputDialog.setVisible(true); + inputDialog.setContentsMargins(12,0,12,12); + + QLabel *label = inputDialog.findChild(); + label->setAlignment(Qt::AlignCenter); + label->setStyleSheet( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + ) + ); + + QLineEdit *lineEdit = inputDialog.findChild(); + lineEdit->setStyleSheet( + QStringLiteral( + "color: %1; font-family: %2; font-size: %3; font-weight: %4; border-radius: %5; border: 1px " + "solid %6; padding: 0px 12px; text-align: left; vertical-align: middle; height: 40px; background: %7; ") + .arg(IonosTheme::folderWizardPathColor(), + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::buttonRadius(), + IonosTheme::menuBorderColor(), + IonosTheme::white() + ) + ); + + QDialogButtonBox *buttonBox = inputDialog.findChild(); + buttonBox->setLayoutDirection(Qt::RightToLeft); + buttonBox->layout()->setSpacing(16); + buttonBox->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed); + + QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok); + okButton->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); + +#if defined(Q_OS_MAC) + buttonBox->layout()->setSpacing(32); +#endif +} + } // namespace OCC diff --git a/src/gui/ignorelisttablewidget.h b/src/gui/ignorelisttablewidget.h index 39d43fde98247..ea4758d93490f 100644 --- a/src/gui/ignorelisttablewidget.h +++ b/src/gui/ignorelisttablewidget.h @@ -1,6 +1,7 @@ #pragma once #include +#include class QAbstractButton; @@ -32,6 +33,9 @@ private slots: private: void setupTableReadOnlyItems(); + void customizeIgnoreListDialogStyle(); + void customizeAddIgnorePatternDialogStyle(QInputDialog &inputDialog); + QString readOnlyTooltip; Ui::IgnoreListTableWidget *ui; }; diff --git a/src/gui/ignorelisttablewidget.ui b/src/gui/ignorelisttablewidget.ui index 1ea59cd4fd844..08d4a771a3088 100644 --- a/src/gui/ignorelisttablewidget.ui +++ b/src/gui/ignorelisttablewidget.ui @@ -1,112 +1,111 @@ - OCC::IgnoreListTableWidget - - - - 0 - 0 - 342 - 378 - - - - IgnoreListTableWidget - - - - - - true - - - QAbstractItemView::SingleSelection - - - QAbstractItemView::SelectRows - - - 2 - - - - Pattern - - - - - Allow Deletion - - + OCC::IgnoreListTableWidget + + + IgnoreListTableWidget + + + + 40 + + + + + 24 + + + 15 + + + + + true + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + + 2 + + + + Pattern + + + + + Allow Deletion + + + + + + + + 15 + + + Qt::AlignTop + + + + + true + + + Add + + + + + + + true + + + Remove + + + + + + + Remove all + + + + + + + + + + + true + + + + 0 + 0 + + + + + + + Qt::PlainText + + + true + + + + - - - - - true - - - Add - - - - - - - true - - - Remove - - - - - - - Remove all - - - - - - - true - - - Qt::Vertical - - - - 20 - 322 - - - - - - - - true - - - - 0 - 0 - - - - - - - Qt::PlainText - - - true - - - - - - - - + + + \ No newline at end of file diff --git a/src/gui/invalidfilenamedialog.cpp b/src/gui/invalidfilenamedialog.cpp index 844f5b5e4bdf2..d3fb2f2666cd4 100644 --- a/src/gui/invalidfilenamedialog.cpp +++ b/src/gui/invalidfilenamedialog.cpp @@ -19,8 +19,9 @@ #include "ui_invalidfilenamedialog.h" #include "filesystem.h" +#include "ionostheme.h" +#include "buttonstyle.h" #include - #include #include #include @@ -74,6 +75,7 @@ InvalidFilenameDialog::InvalidFilenameDialog(AccountPtr account, Folder *folder, { Q_ASSERT(_account); Q_ASSERT(_folder); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); const auto filePathFileInfo = QFileInfo(_filePath); _relativeFilePath = filePathFileInfo.path() + QStringLiteral("/"); @@ -85,6 +87,7 @@ InvalidFilenameDialog::InvalidFilenameDialog(AccountPtr account, Folder *folder, _ui->setupUi(this); _ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); _ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Rename file")); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); _ui->descriptionLabel->setTextFormat(Qt::PlainText); _ui->errorLabel->setTextFormat(Qt::PlainText); @@ -100,6 +103,8 @@ InvalidFilenameDialog::InvalidFilenameDialog(AccountPtr account, Folder *folder, tr("Checking rename permissions …")); _ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); _ui->filenameLineEdit->setEnabled(false); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); + connect(_ui->filenameLineEdit, &QLineEdit::textChanged, this, &InvalidFilenameDialog::onFilenameLineEditTextChanged); @@ -110,6 +115,8 @@ InvalidFilenameDialog::InvalidFilenameDialog(AccountPtr account, Folder *folder, } else { checkIfAllowedToRename(); } + + customizeStyle(); } InvalidFilenameDialog::~InvalidFilenameDialog() = default; @@ -151,6 +158,7 @@ bool InvalidFilenameDialog::processLeadingOrTrailingSpacesError(const QString &f const auto hasTrailingSpaces = fileName.endsWith(QLatin1Char(' ')); _ui->buttonBox->setStandardButtons(_ui->buttonBox->standardButtons() &~ QDialogButtonBox::No); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); if (hasLeadingSpaces || hasTrailingSpaces) { if (hasLeadingSpaces && hasTrailingSpaces) { @@ -187,6 +195,8 @@ void InvalidFilenameDialog::onPropfindPermissionError(QNetworkReply *reply) void InvalidFilenameDialog::allowRenaming() { _ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); + _ui->filenameLineEdit->setEnabled(true); _ui->filenameLineEdit->selectAll(); @@ -222,8 +232,9 @@ void InvalidFilenameDialog::onFilenameLineEditTextChanged(const QString &text) _ui->errorLabel->setText(tr("Filename contains illegal characters: %1").arg(illegalCharacterListToString(illegalContainedCharacters))); } - _ui->buttonBox->button(QDialogButtonBox::Ok) - ->setEnabled(isTextValid); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(isTextValid); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); + } void InvalidFilenameDialog::onMoveJobFinished() @@ -245,6 +256,7 @@ void InvalidFilenameDialog::onRemoteDestinationFileAlreadyExists(const QVariantM _ui->errorLabel->setText(tr("Cannot rename file because a file with the same name does already exist on the server. Please pick another name.")); _ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); + _ui->buttonBox->button(QDialogButtonBox::Ok)->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); } void InvalidFilenameDialog::onRemoteDestinationFileDoesNotExist(QNetworkReply *reply) @@ -284,4 +296,36 @@ void InvalidFilenameDialog::onRemoteSourceFileDoesNotExist(QNetworkReply *reply) } QDialog::accept(); } + +void InvalidFilenameDialog::customizeStyle() +{ + this->setStyleSheet( + QStringLiteral("QDialog {background-color: %1; } QLabel{ font-family: %2; font-size: %3; font-weight: %4; }").arg( + IonosTheme::dialogBackgroundColor(), + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight() + ) + ); + + _ui->filenameLineEdit->setStyleSheet( + QStringLiteral( + "color: %1; font-family: %2; font-size: %3; font-weight: %4; border-radius: %5; border: 1px " + "solid %6; padding: 0px 12px; text-align: left; vertical-align: middle; height: 40px; background: %7; ").arg( + IonosTheme::folderWizardPathColor(), + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::buttonRadius(), + IonosTheme::menuBorderColor(), + IonosTheme::white() + ) + ); + + #ifdef Q_OS_MAC + _ui->buttonBox->layout()->setSpacing(24); + _ui->buttonBox->setLayoutDirection(Qt::LeftToRight); + #endif +} + } diff --git a/src/gui/invalidfilenamedialog.h b/src/gui/invalidfilenamedialog.h index f2552e5fc1080..44af2bf9c2183 100644 --- a/src/gui/invalidfilenamedialog.h +++ b/src/gui/invalidfilenamedialog.h @@ -72,6 +72,7 @@ class InvalidFilenameDialog : public QDialog void onPropfindPermissionSuccess(const QVariantMap &values); void onPropfindPermissionError(QNetworkReply *reply = nullptr); void allowRenaming(); + void customizeStyle(); private slots: void useInvalidName(); }; diff --git a/src/gui/legalnotice.cpp b/src/gui/legalnotice.cpp index b19a3be120f49..e884c4e08aeef 100644 --- a/src/gui/legalnotice.cpp +++ b/src/gui/legalnotice.cpp @@ -24,6 +24,7 @@ LegalNotice::LegalNotice(QDialog *parent) , _ui(new Ui::LegalNotice) { _ui->setupUi(this); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); connect(_ui->closeButton, &QPushButton::clicked, this, &LegalNotice::accept); diff --git a/src/gui/linkbutton.cpp b/src/gui/linkbutton.cpp new file mode 100644 index 0000000000000..9bf2134fb62f8 --- /dev/null +++ b/src/gui/linkbutton.cpp @@ -0,0 +1,26 @@ +// linkbutton.cpp +#include "linkbutton.h" +#include "ionostheme.h" +#include "theme.h" + +namespace OCC { + LinkButton::LinkButton(QWidget* parent) + : QLabel(parent) + { + setStyleSheet(QStringLiteral("QLabel { color: %1; text-decoration: underline; font-size: %2; font-weight: %3; }") + .arg(IonosTheme::settingsLinkColor() + , IonosTheme::settingsTextSize() + , IonosTheme::settingsTitleWeight600() + )); + + setCursor(Qt::PointingHandCursor); + } + + void LinkButton::mousePressEvent(QMouseEvent* event) + { + if (event->button() == Qt::LeftButton) { + emit clicked(); + } + QLabel::mousePressEvent(event); + } +} \ No newline at end of file diff --git a/src/gui/linkbutton.h b/src/gui/linkbutton.h new file mode 100644 index 0000000000000..7dd0465e65142 --- /dev/null +++ b/src/gui/linkbutton.h @@ -0,0 +1,23 @@ +// linkbutton.h +#ifndef LINKBUTTON_H +#define LINKBUTTON_H + +#include +#include +#include +namespace OCC { + class LinkButton : public QLabel + { + Q_OBJECT + + public: + explicit LinkButton(QWidget* parent = nullptr); + + signals: + void clicked(); + + protected: + void mousePressEvent(QMouseEvent* event); + }; +} +#endif // LINKBUTTON_H diff --git a/src/gui/logbrowser.cpp b/src/gui/logbrowser.cpp index 46357edc50a5d..38f59930a9506 100644 --- a/src/gui/logbrowser.cpp +++ b/src/gui/logbrowser.cpp @@ -118,7 +118,7 @@ void LogBrowser::togglePermanentLogging(bool enabled) if (enabled) { if (!logger->isLoggingToFile()) { logger->setupTemporaryFolderLogDir(); - logger->enterNextLogFile(QStringLiteral("nextcloud.log"), OCC::Logger::LogType::Log); + logger->enterNextLogFile(); } } else { logger->disableTemporaryFolderLogDir(); diff --git a/src/gui/main.cpp b/src/gui/main.cpp index 6742a8b1a0e5e..6dae10e6730de 100644 --- a/src/gui/main.cpp +++ b/src/gui/main.cpp @@ -25,6 +25,7 @@ #include "application.h" #include "cocoainitializer.h" #include "theme.h" +#include "ionostheme.h" #include "common/utility.h" #if defined(BUILD_UPDATER) @@ -37,6 +38,9 @@ #include #include #include +#include "sesstyle.h" +#include "ga4/ganalytics.h" +#include "ga4/datacollectionwrapper.h" using namespace OCC; @@ -84,10 +88,15 @@ int main(int argc, char **argv) // though it looks slightly less native. Check here after the // QApplication was constructed, but before any QWidget is // constructed. - if (app.devicePixelRatio() > 1) - QApplication::setStyle(QStringLiteral("fusion")); + // if (app.devicePixelRatio() > 1) + // QApplication::setStyle(QStringLiteral("fusion")); + + QApplication::setFont(IonosTheme::settingsFontDefault()); + #endif // Q_OS_WIN + QApplication::setStyle(new sesStyle); + #ifndef Q_OS_WIN signal(SIGPIPE, SIG_IGN); #endif @@ -187,5 +196,12 @@ int main(int argc, char **argv) } } + QString clientID; + if (clientID.isEmpty()) { + clientID = QUuid::createUuid().toString(); + } + + + return app.exec(); } diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp index bb4ae42bba478..4f3c5ce8844b1 100644 --- a/src/gui/owncloudgui.cpp +++ b/src/gui/owncloudgui.cpp @@ -68,7 +68,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcOwnCloudGui, "com.nextcloud.owncloudgui") +Q_LOGGING_CATEGORY(lcOwnCloudGui, "com.ionos.hidrivenext.owncloudgui") const char propertyAccountC[] = "oc_account"; @@ -115,27 +115,27 @@ ownCloudGui::ownCloudGui(Application *parent) connect(Logger::instance(), &Logger::guiLog, this, &ownCloudGui::slotShowTrayMessage); connect(Logger::instance(), &Logger::guiMessage, this, &ownCloudGui::slotShowGuiMessage); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "SyncStatusSummary"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "EmojiModel"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "UserStatusSelectorModel"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "ActivityListModel"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "FileActivityListModel"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "SortedActivityListModel"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "WheelHandler"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "CallStateChecker"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "DateFieldBackend"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "FileDetails"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "ShareModel"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "ShareeModel"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "SortedShareModel"); - qmlRegisterType("com.nextcloud.desktopclient", 1, 0, "SyncConflictsModel"); - - qmlRegisterUncreatableType("com.nextcloud.desktopclient", 1, 0, "QAbstractItemModel", "QAbstractItemModel"); - qmlRegisterUncreatableType("com.nextcloud.desktopclient", 1, 0, "Activity", "Activity"); - qmlRegisterUncreatableType("com.nextcloud.desktopclient", 1, 0, "TalkNotificationData", "TalkNotificationData"); - qmlRegisterUncreatableType("com.nextcloud.desktopclient", 1, 0, "UnifiedSearchResultsListModel", "UnifiedSearchResultsListModel"); - qmlRegisterUncreatableType("com.nextcloud.desktopclient", 1, 0, "UserStatus", "Access to Status enum"); - qmlRegisterUncreatableType("com.nextcloud.desktopclient", 1, 0, "Sharee", "Access to Type enum"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "SyncStatusSummary"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "EmojiModel"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "UserStatusSelectorModel"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "ActivityListModel"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "FileActivityListModel"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "SortedActivityListModel"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "WheelHandler"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "CallStateChecker"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "DateFieldBackend"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "FileDetails"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "ShareModel"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "ShareeModel"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "SortedShareModel"); + qmlRegisterType("com.ionos.hidrivenext.desktopclient", 1, 0, "SyncConflictsModel"); + + qmlRegisterUncreatableType("com.ionos.hidrivenext.desktopclient", 1, 0, "QAbstractItemModel", "QAbstractItemModel"); + qmlRegisterUncreatableType("com.ionos.hidrivenext.desktopclient", 1, 0, "Activity", "Activity"); + qmlRegisterUncreatableType("com.ionos.hidrivenext.desktopclient", 1, 0, "TalkNotificationData", "TalkNotificationData"); + qmlRegisterUncreatableType("com.ionos.hidrivenext.desktopclient", 1, 0, "UnifiedSearchResultsListModel", "UnifiedSearchResultsListModel"); + qmlRegisterUncreatableType("com.ionos.hidrivenext.desktopclient", 1, 0, "UserStatus", "Access to Status enum"); + qmlRegisterUncreatableType("com.ionos.hidrivenext.desktopclient", 1, 0, "Sharee", "Access to Type enum"); qRegisterMetaTypeStreamOperators(); @@ -146,13 +146,13 @@ ownCloudGui::ownCloudGui(Application *parent) qRegisterMetaType("Sharee"); qRegisterMetaType("ActivityList"); - qmlRegisterSingletonInstance("com.nextcloud.desktopclient", 1, 0, "UserModel", UserModel::instance()); - qmlRegisterSingletonInstance("com.nextcloud.desktopclient", 1, 0, "UserAppsModel", UserAppsModel::instance()); - qmlRegisterSingletonInstance("com.nextcloud.desktopclient", 1, 0, "Theme", Theme::instance()); - qmlRegisterSingletonInstance("com.nextcloud.desktopclient", 1, 0, "Systray", Systray::instance()); + qmlRegisterSingletonInstance("com.ionos.hidrivenext.desktopclient", 1, 0, "UserModel", UserModel::instance()); + qmlRegisterSingletonInstance("com.ionos.hidrivenext.desktopclient", 1, 0, "UserAppsModel", UserAppsModel::instance()); + qmlRegisterSingletonInstance("com.ionos.hidrivenext.desktopclient", 1, 0, "Theme", Theme::instance()); + qmlRegisterSingletonInstance("com.ionos.hidrivenext.desktopclient", 1, 0, "Systray", Systray::instance()); #ifdef BUILD_FILE_PROVIDER_MODULE - qmlRegisterSingletonInstance("com.nextcloud.desktopclient", 1, 0, "FileProviderSettingsController", Mac::FileProviderSettingsController::instance()); + qmlRegisterSingletonInstance("com.ionos.hidrivenext.desktopclient", 1, 0, "FileProviderSettingsController", Mac::FileProviderSettingsController::instance()); #endif } @@ -244,7 +244,7 @@ void ownCloudGui::slotSyncStateChange(Folder *folder) || result.status() == SyncResult::Problem || result.status() == SyncResult::SyncAbortRequested || result.status() == SyncResult::Error) { - Logger::instance()->enterNextLogFile(QStringLiteral("nextcloud.log"), OCC::Logger::LogType::Log); + Logger::instance()->enterNextLogFile(); } } @@ -579,6 +579,7 @@ void ownCloudGui::slotShowSettings() if (_settingsDialog.isNull()) { _settingsDialog = new SettingsDialog(this); _settingsDialog->setAttribute(Qt::WA_DeleteOnClose, true); + _settingsDialog->setStyleSheet(QStringLiteral("QDialog {background: %1}").arg(Theme::instance()->systemPalette().base().color().name())); _settingsDialog->show(); } raiseDialog(_settingsDialog.data()); diff --git a/src/gui/proxyauthdialog.cpp b/src/gui/proxyauthdialog.cpp index c5680bb7e7a10..5e3fee0fc5035 100644 --- a/src/gui/proxyauthdialog.cpp +++ b/src/gui/proxyauthdialog.cpp @@ -22,6 +22,7 @@ ProxyAuthDialog::ProxyAuthDialog(QWidget *parent) , ui(new Ui::ProxyAuthDialog) { ui->setupUi(this); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); } ProxyAuthDialog::~ProxyAuthDialog() diff --git a/src/gui/selectivesyncdialog.cpp b/src/gui/selectivesyncdialog.cpp index ea313d16eaeff..5eea0ebcec713 100644 --- a/src/gui/selectivesyncdialog.cpp +++ b/src/gui/selectivesyncdialog.cpp @@ -13,12 +13,14 @@ */ #include "selectivesyncdialog.h" #include "account.h" +#include "buttonstyle.h" #include "common/utility.h" #include "configfile.h" #include "folder.h" #include "folderman.h" #include "networkjobs.h" #include "theme.h" +#include "ionostheme.h" #include #include #include @@ -77,6 +79,14 @@ SelectiveSyncWidget::SelectiveSyncWidget(AccountPtr account, QWidget *parent) auto header = new QLabel(this); header->setText(tr("Deselect remote folders you do not wish to synchronize.")); header->setWordWrap(true); + header->setStyleSheet( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor()) + + QStringLiteral("background-color: %1;").arg(IonosTheme::dialogBackgroundColor()) + ); layout->addWidget(header); layout->addWidget(_folderTree); @@ -94,6 +104,42 @@ SelectiveSyncWidget::SelectiveSyncWidget(AccountPtr account, QWidget *parent) _folderTree->headerItem()->setText(0, tr("Name")); _folderTree->headerItem()->setText(1, tr("Size")); + +#ifdef Q_OS_MAC + _folderTree->header()->setStyleSheet( + "QHeaderView::section {" + " background-color: white;" // Set the background color + " border: 1px solid #e6e6e6;" // Optional: add a border + " padding-left: 4px;" + + QString(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor())) + + + "}" + ); +#else + _folderTree->header()->setStyleSheet( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + )); +#endif + + _folderTree->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::titleColor() + )); + +#ifdef Q_OS_MAC + _folderTree->setPalette(QPalette(IonosTheme::white())); +#endif + ConfigFile::setupDefaultExcludeFilePaths(_excludedFiles); _excludedFiles.reloadExcludeFiles(); } @@ -287,7 +333,7 @@ void SelectiveSyncWidget::slotUpdateDirectories(QStringList list) void SelectiveSyncWidget::slotUpdateRootFolderFilesSize(const QStringList &subfolders) { const auto job = qobject_cast(sender()); - + if (!job) { qWarning() << "slotUpdateRootFolderFilesSize must have a valid sender"; return; @@ -477,6 +523,7 @@ SelectiveSyncDialog::SelectiveSyncDialog(AccountPtr account, Folder *folder, QWi , _folder(folder) { bool ok = false; + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); init(account); QStringList selectiveSyncList = _folder->journalDb()->getSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, &ok); if (ok) { @@ -494,6 +541,7 @@ SelectiveSyncDialog::SelectiveSyncDialog(AccountPtr account, const QString &fold , _folder(nullptr) { init(account); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); _selectiveSync->setFolderInfo(folder, folder, blacklist); } @@ -504,11 +552,42 @@ void SelectiveSyncDialog::init(const AccountPtr &account) _selectiveSync = new SelectiveSyncWidget(account, this); layout->addWidget(_selectiveSync); auto *buttonBox = new QDialogButtonBox(Qt::Horizontal); + _okButton = buttonBox->addButton(QDialogButtonBox::Ok); + _okButton->setProperty("buttonStyle", QVariant::fromValue(ButtonStyleName::Primary)); connect(_okButton, &QPushButton::clicked, this, &SelectiveSyncDialog::accept); + QPushButton *button = nullptr; button = buttonBox->addButton(QDialogButtonBox::Cancel); + +#ifdef Q_OS_MAC + _okButton->setStyleSheet( + _okButton->styleSheet() + QStringLiteral("QPushButton { %1; } ").arg( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTitleWeight500(), + IonosTheme::white() + ) + ) + ); + + button->setStyleSheet( + button->styleSheet() + QStringLiteral("QPushButton { %1; } ").arg( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTitleWeight500(), + IonosTheme::titleColor() + ) + ) + ); + + buttonBox->layout()->setSpacing(24); +#endif + connect(button, &QAbstractButton::clicked, this, &QDialog::reject); + layout->addWidget(buttonBox); } diff --git a/src/gui/sessnackbar.cpp b/src/gui/sessnackbar.cpp new file mode 100644 index 0000000000000..abc508b4ba83c --- /dev/null +++ b/src/gui/sessnackbar.cpp @@ -0,0 +1,140 @@ +#include "sessnackbar.h" +#include "ionostheme.h" +#include "theme.h" +#include +#include +#include + +namespace OCC { + + sesSnackBar::sesSnackBar(QWidget* parent) + : QFrame(parent) + { + setObjectName("sesSnackBar"); + setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + setContentsMargins(0, 0, 0, 0); + + auto policy = sizePolicy(); + policy.setRetainSizeWhenHidden(false); + setSizePolicy(policy); + + const auto layout = new QHBoxLayout(); + layout->setObjectName("sesSnackBarLayout"); + layout->setContentsMargins(16, 15, 16, 15); + layout->setSpacing(0); + + m_captionLabel.setObjectName("sesSnackBarCaption"); + m_captionLabel.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); + m_captionLabel.setText(m_caption); + + m_messageLabel.setObjectName("sesSnackBarMessage"); + m_messageLabel.setText(m_message); + m_messageLabel.setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum); + m_messageLabel.setWordWrap(true); + + m_iconLabel.setObjectName("sesSnackBarIcon"); + m_iconLabel.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + m_iconLabel.setFixedSize(16, 16); + + layout->addWidget(&m_captionLabel); + layout->addSpacerItem(new QSpacerItem(8, 0, QSizePolicy::Fixed, QSizePolicy::Fixed)); + layout->addWidget(&m_messageLabel); + layout->addSpacerItem(new QSpacerItem(8, 0, QSizePolicy::Fixed, QSizePolicy::Fixed)); + layout->addWidget(&m_iconLabel); + setLayout(layout); + + errorStyle(); + } + + void sesSnackBar::clearMessage(){ + m_captionLabel.clear(); + m_messageLabel.clear(); + } + + QString sesSnackBar::caption() const { return m_caption; } + QString sesSnackBar::message() const { return m_message; } + + + void sesSnackBar::setCaption(QString captionText) { + if (m_caption != captionText) { + m_caption = captionText; + m_captionLabel.setText(m_caption); + emit captionChanged(m_caption); + } + } + + void sesSnackBar::setError(QString errorMessage){ + errorStyle(); + setMessage(errorMessage); + setCaption(tr("Error")); + emit errorChanged(m_message); + } + + void sesSnackBar::setWarning(QString warningMessage){ + warningStyle(); + setMessage(warningMessage); + setCaption(tr("Warning")); + emit warningChanged(m_message); + } + + void sesSnackBar::setSuccess(QString successMessage){ + successStyle(); + setMessage(successMessage); + setCaption(tr("Success")); + emit successChanged(m_message); + } + + void sesSnackBar::setMessage(QString messageText) { + m_message = messageText; + m_messageLabel.setText(m_message); + } + + void sesSnackBar::setWordWrap(bool on) + { + m_messageLabel.setWordWrap(on); + } + + bool sesSnackBar::wordWrap() const + { + return m_messageLabel.wordWrap(); + } + + void sesSnackBar::successStyle() + { + const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/ses/ses-snackBarSuccessIcon.svg"); + m_iconLabel.setPixmap(logoIconFileName); + + updateStyleSheet(IonosTheme::successBorderColor(), IonosTheme::successColor(), IonosTheme::black(), IonosTheme::black()); + } + + void sesSnackBar::warningStyle() + { + const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/ses/ses-snackBarWarningIcon.svg"); + m_iconLabel.setPixmap(logoIconFileName); + + updateStyleSheet(IonosTheme::warningBorderColor(), IonosTheme::warningColor(), IonosTheme::black(), IonosTheme::black()); + } + + void sesSnackBar::errorStyle() + { + const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/ses/ses-snackBarErrorIcon.svg"); + m_iconLabel.setPixmap(logoIconFileName); + + updateStyleSheet(IonosTheme::errorBorderColor(), IonosTheme::errorColor(), IonosTheme::black(), IonosTheme::black()); + } + + void sesSnackBar::updateStyleSheet(QColor frameBorderColor, QColor frameBackgroundColor, QColor frameColor, QColor labelColor) + { + QString style = QString::fromLatin1("QFrame {border: 1px solid %1; border-radius: 4px;" + "background-color: %2; color: %3;}" + "QLabel {border: 0px none; padding 0px; background-color: transparent; color: %4;}" + "QLabel#sesSnackBarCaption {font-weight: bold;}" + ).arg(frameBorderColor.name() + , frameBackgroundColor.name() + , frameColor.name() + , labelColor.name()); + + setStyleSheet(style); + + } +} \ No newline at end of file diff --git a/src/gui/sessnackbar.h b/src/gui/sessnackbar.h new file mode 100644 index 0000000000000..cb215e996838c --- /dev/null +++ b/src/gui/sessnackbar.h @@ -0,0 +1,62 @@ +#ifndef SESSNACKBAR_H +#define SESSNACKBAR_H + +#include +#include +#include +#include +#include +#include +#include + +namespace OCC { + + class sesSnackBar : public QFrame + { + Q_OBJECT + Q_PROPERTY(QString caption READ caption WRITE setCaption NOTIFY captionChanged) + Q_PROPERTY(QString message READ message) + Q_PROPERTY(QString error WRITE setError NOTIFY errorChanged) + Q_PROPERTY(QString warning WRITE setWarning NOTIFY warningChanged) + Q_PROPERTY(QString success WRITE setSuccess NOTIFY successChanged) + Q_PROPERTY(bool wordWrap READ wordWrap WRITE setWordWrap) + + public: + explicit sesSnackBar(QWidget* parent = nullptr); + QString caption() const; + QString message() const; + bool wordWrap() const; + void clearMessage(); + + public slots: + void setCaption(QString captionText); + void setError(QString errorMessage); + void setWarning(QString warningMessage); + void setSuccess(QString successMessage); + + void setWordWrap(bool on); + + signals: + void captionChanged(QString captionText); + void errorChanged(QString errorText); + void warningChanged(QString warningText); + void successChanged(QString successText); + + private: + QString m_caption; + QString m_message; + + QLabel m_messageLabel; + QLabel m_captionLabel; + QLabel m_iconLabel; + + void updateStyleSheet(QColor frameBorderColor, QColor frameBackgroundColor, QColor frameColor, QColor labelColor); + void setMessage(QString messageText); + + void errorStyle(); + void warningStyle(); + void successStyle(); + + }; +} +#endif // SESSNACKBAR_H diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index 8f8b1e2f8f76f..076b5acee1494 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -17,6 +17,7 @@ #include "folderman.h" #include "theme.h" +#include "ionostheme.h" #include "generalsettings.h" #include "networksettings.h" #include "accountsettings.h" @@ -44,10 +45,14 @@ namespace { const QString TOOLBAR_CSS() { - return QStringLiteral("QToolBar { background: %1; margin: 0; padding: 0; border: none; border-bottom: 1px solid %2; spacing: 0; } " - "QToolBar QToolButton { background: %1; border: none; border-bottom: 1px solid %2; margin: 0; padding: 5px; } " - "QToolBar QToolBarExtension { padding:0; } " - "QToolBar QToolButton:checked { background: %3; color: %4; }"); + return QStringLiteral("QToolBar { background: %1; border: none; border-bottom: 1px solid %2; } " + "QToolBar QToolButton { background: %1; border: none; margin: 2px 0px 7px 12px; padding: 11px 4px 4px 4px; border-radius: %5; %8; } " + "QToolBar QToolButton:checked { background: %7; color: %4; }" + "QToolBar QToolButton:hover { background: %3; }" + "QToolBar QToolButton:pressed { background: %6; color: %4; }" + "QToolBar::separator { height: 100%; width: 1px; background: %2; margin-left: 12px; } " // Style for the separator + "QToolBarExtension#qt_toolbar_ext_button {margin: 0 0 7px 0; padding: 0;}" // Style overflow button + ); } const float buttonSizeRatio = 1.618f; // golden ratio @@ -69,7 +74,7 @@ QString shortDisplayNameForSettings(OCC::Account *account, int width) QFont f; QFontMetrics fm(f); host = fm.elidedText(host, Qt::ElideMiddle, width); - user = fm.elidedText(user, Qt::ElideRight, width); + user = fm.elidedText(user, Qt::ElideMiddle, width); } return QStringLiteral("%1\n%2").arg(user, host); } @@ -87,8 +92,9 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) _ui->setupUi(this); _toolBar = new QToolBar; - _toolBar->setIconSize(QSize(32, 32)); + _toolBar->setIconSize(QSize(IonosTheme::toolbarIconSize(), IonosTheme::toolbarIconSize())); _toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + _toolBar->setFixedHeight(94); layout()->setMenuBar(_toolBar); // People perceive this as a Window, so also make Ctrl+W work @@ -112,13 +118,12 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) _actionGroup->setExclusive(true); connect(_actionGroup, &QActionGroup::triggered, this, &SettingsDialog::slotSwitchPage); - // Adds space between users + activities and general + network actions - auto *spacer = new QWidget(); - spacer->setMinimumWidth(10); - spacer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum); - _toolBar->addWidget(spacer); + QAction *newAccountAction = createColorAwareAction(QLatin1String(":/client/theme/ses/ses-darkPlus16.svg"), tr("New Account")); + _actionGroup->addAction(newAccountAction); + _toolBar->addAction(newAccountAction); + connect(newAccountAction, &QAction::triggered, _gui, &ownCloudGui::slotNewAccountWizard); - QAction *generalAction = createColorAwareAction(QLatin1String(":/client/theme/settings.svg"), tr("General")); + QAction *generalAction = createColorAwareAction(QLatin1String(":/client/theme/ses/ses-settings24.svg"), tr("General")); _actionGroup->addAction(generalAction); _toolBar->addAction(generalAction); auto *generalSettings = new GeneralSettings; @@ -127,15 +132,16 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) // Connect styleChanged events to our widgets, so they can adapt (Dark-/Light-Mode switching) connect(this, &SettingsDialog::styleChanged, generalSettings, &GeneralSettings::slotStyleChanged); - QAction *networkAction = createColorAwareAction(QLatin1String(":/client/theme/network.svg"), tr("Network")); - _actionGroup->addAction(networkAction); - _toolBar->addAction(networkAction); - auto *networkSettings = new NetworkSettings; - _ui->stack->addWidget(networkSettings); + // SES-4 removed network settings + // QAction *networkAction = createColorAwareAction(QLatin1String(":/client/theme/network.svg"), tr("Network")); + // _actionGroup->addAction(networkAction); + // _toolBar->addAction(networkAction); + // auto *networkSettings = new NetworkSettings; + // _ui->stack->addWidget(networkSettings); _actionGroupWidgets.insert(generalAction, generalSettings); - _actionGroupWidgets.insert(networkAction, networkSettings); - + // _actionGroupWidgets.insert(networkAction, networkSettings); + _toolBar->addSeparator(); foreach(auto ai, AccountManager::instance()->accounts()) { accountAdded(ai.data()); } @@ -158,6 +164,7 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); cfg.restoreGeometry(this); + resize(width() > IonosTheme::minimalSettingsDialogWidth() ? width(): IonosTheme::minimalSettingsDialogWidth(), height()); } SettingsDialog::~SettingsDialog() @@ -216,7 +223,7 @@ void SettingsDialog::showFirstPage() { QList actions = _toolBar->actions(); if (!actions.empty()) { - actions.first()->trigger(); + actions.at(1)->trigger(); } } @@ -234,14 +241,14 @@ void SettingsDialog::accountAdded(AccountState *s) bool brandingSingleAccount = !Theme::instance()->multiAccount(); const auto actionText = brandingSingleAccount ? tr("Account") : s->account()->displayName(); - const auto accountAction = createColorAwareAction(QLatin1String(":/client/theme/account.svg"), actionText); + const auto accountAction = createColorAwareAction(QLatin1String(":/client/theme/ses/ses-settingsAvatar.svg"), actionText); if (!brandingSingleAccount) { accountAction->setToolTip(s->account()->displayName()); accountAction->setIconText(shortDisplayNameForSettings(s->account().data(), static_cast(height * buttonSizeRatio))); } - _toolBar->insertAction(_toolBar->actions().at(0), accountAction); + _toolBar->addAction(accountAction); auto accountSettings = new AccountSettings(s, this); QString objectName = QLatin1String("accountSettings_"); objectName += s->account()->displayName(); @@ -254,8 +261,7 @@ void SettingsDialog::accountAdded(AccountState *s) accountAction->trigger(); connect(accountSettings, &AccountSettings::folderChanged, _gui, &ownCloudGui::slotFoldersChanged); - connect(accountSettings, &AccountSettings::openFolderAlias, - _gui, &ownCloudGui::slotFolderOpenAction); + connect(accountSettings, &AccountSettings::openFolderAlias, _gui, &ownCloudGui::slotFolderOpenAction); connect(accountSettings, &AccountSettings::showIssuesList, this, &SettingsDialog::showIssuesList); connect(s->account().data(), &Account::accountChangedAvatar, this, &SettingsDialog::slotAccountAvatarChanged); connect(s->account().data(), &Account::accountChangedDisplayName, this, &SettingsDialog::slotAccountDisplayNameChanged); @@ -275,16 +281,7 @@ void SettingsDialog::accountAdded(AccountState *s) void SettingsDialog::slotAccountAvatarChanged() { - auto *account = dynamic_cast(sender()); - if (account && _actionForAccount.contains(account)) { - QAction *action = _actionForAccount[account]; - if (action) { - QImage pix = account->avatar(); - if (!pix.isNull()) { - action->setIcon(QPixmap::fromImage(AvatarJob::makeCircularAvatar(pix))); - } - } - } + } void SettingsDialog::slotAccountDisplayNameChanged() @@ -336,18 +333,44 @@ void SettingsDialog::accountRemoved(AccountState *s) void SettingsDialog::customizeStyle() { - QString highlightColor(palette().highlight().color().name()); - QString highlightTextColor(palette().highlightedText().color().name()); - QString dark(palette().dark().color().name()); - QString background(palette().base().color().name()); - _toolBar->setStyleSheet(TOOLBAR_CSS().arg(background, dark, highlightColor, highlightTextColor)); + QPalette palette = Theme::instance()->systemPalette(); + + QString white(palette.window().color().name()); + QString hoverColor(IonosTheme::toolButtonHoveredColor()); + QString pressedColor(IonosTheme::toolButtonPressedColor()); + QString selectedColor(IonosTheme::menuSelectedItemColor()); + + QString borderColor(palette.shadow().color().name()); + QString highlightTextColor(palette.highlightedText().color().name()); + + QString toolbarActionBorderRadius(IonosTheme::toolbarActionBorderRadius()); + QString toolbarSideMargin (IonosTheme::toolbarSideMargin()); + QString toolButtonFont ( + IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::menuTextColor() + ) + ); + + _toolBar->setStyleSheet( + TOOLBAR_CSS().arg(white, borderColor, hoverColor, highlightTextColor, toolbarActionBorderRadius, pressedColor, selectedColor, toolButtonFont) + ); Q_FOREACH (QAction *a, _actionGroup->actions()) { - QIcon icon = Theme::createColorAwareIcon(a->property("iconPath").toString(), palette()); + QIcon icon = Theme::createColorAwareIcon(a->property("iconPath").toString(), palette); a->setIcon(icon); auto *btn = qobject_cast(_toolBar->widgetForAction(a)); - if (btn) + if (btn) { + Q_FOREACH (auto ai, AccountManager::instance()->accounts()){ + if (a->text().contains(ai->account()->displayName())){ + btn->setFixedWidth(164); + } + } + btn->setIcon(icon); + } } } @@ -374,10 +397,11 @@ class ToolButtonAction : public QWidgetAction QString objectName = QLatin1String("settingsdialog_toolbutton_"); objectName += text(); btn->setObjectName(objectName); - + btn->setFixedSize(150, 94); btn->setDefaultAction(this); btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); - btn->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); + + btn->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); return btn; } }; diff --git a/src/gui/systray.cpp b/src/gui/systray.cpp index d65258e1fa468..d3fdb22a0a778 100644 --- a/src/gui/systray.cpp +++ b/src/gui/systray.cpp @@ -15,6 +15,7 @@ #include "accountmanager.h" #include "systray.h" #include "theme.h" +#include "ionostheme.h" #include "config.h" #include "common/utility.h" #include "tray/svgimageprovider.h" @@ -202,6 +203,12 @@ void Systray::setupContextMenu() resumeAction->setVisible(anyPaused); resumeAction->setEnabled(anyPaused); }); + + _contextMenu->setStyleSheet(IonosTheme::fontConfigurationCss( + IonosTheme::settingsFont(), + IonosTheme::settingsTextSize(), + IonosTheme::settingsTextWeight(), + IonosTheme::menuTextColor())); } void Systray::destroyDialog(QQuickWindow *dialog) const @@ -566,6 +573,10 @@ void Systray::showTalkMessage(const QString &title, const QString &message, cons void Systray::setToolTip(const QString &tip) { + if(tip.isEmpty()) { + QSystemTrayIcon::setToolTip(""); + return; + } QSystemTrayIcon::setToolTip(tr("%1: %2").arg(Theme::instance()->appNameGUI(), tip)); } @@ -615,7 +626,7 @@ void Systray::forceWindowInit(QQuickWindow *window) const // this shouldn't flicker window->show(); window->hide(); - + #ifdef Q_OS_MAC // On macOS we need to designate the tray window as visible on all spaces and // at the menu bar level, otherwise showing it can cause the current spaces to @@ -767,7 +778,7 @@ QPoint Systray::computeNotificationReferencePoint(int spacing, NotificationPosit auto trayIconCenter = calcTrayIconCenter(); auto taskbarScreenEdge = taskbarOrientation(); const auto screenRect = currentAvailableScreenRect(); - + if(position == NotificationPosition::TopLeft) { taskbarScreenEdge = TaskBarPosition::Top; trayIconCenter = QPoint(0, 0); @@ -871,7 +882,7 @@ QPoint Systray::computeNotificationPosition(int width, int height, int spacing, auto trayIconCenter = calcTrayIconCenter(); auto taskbarScreenEdge = taskbarOrientation(); const auto screenRect = currentScreenRect(); - + if(position == NotificationPosition::TopLeft) { taskbarScreenEdge = TaskBarPosition::Top; trayIconCenter = QPoint(0, 0); @@ -885,7 +896,7 @@ QPoint Systray::computeNotificationPosition(int width, int height, int spacing, taskbarScreenEdge = TaskBarPosition::Bottom; trayIconCenter = QPoint(screenRect.width(), screenRect.height()); } - + const auto topLeft = [=]() { switch(taskbarScreenEdge) { case TaskBarPosition::Bottom: From 0c7ae74e69be0e4c2caba5831e229c6f9eec31ec Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:30:41 +0100 Subject: [PATCH 014/104] add stylings in libsync --- src/libsync/account.cpp | 18 ++++- src/libsync/account.h | 1 + src/libsync/configfile.cpp | 17 ++++- src/libsync/configfile.h | 4 ++ src/libsync/discovery.cpp | 44 ++++++------ src/libsync/logger.cpp | 99 ++++++--------------------- src/libsync/logger.h | 19 ++--- src/libsync/propagateremotedelete.cpp | 1 - src/libsync/propagatorjobs.cpp | 1 - src/libsync/syncfileitem.h | 2 - src/libsync/syncfilestatustracker.cpp | 3 - 11 files changed, 82 insertions(+), 127 deletions(-) diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 78eb06b0f7736..ee5b1f8c36bda 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -50,6 +50,8 @@ #include #include #include +#include +#include #include #include @@ -198,9 +200,17 @@ QString Account::prettyName() const return name; } +QString Account::eliedName(const int size) const +{ + QFontMetrics fontMetrics(QApplication::font()); + QString elidedName = fontMetrics.elidedText(prettyName(), Qt::ElideMiddle, size); + return elidedName; +} + QColor Account::serverColor() const { - return _serverColor; + // SES-50 Hardcoded. Old value was _serverColor; + return QColor("#718095"); } QColor Account::headerColor() const @@ -210,7 +220,8 @@ QColor Account::headerColor() const QColor Account::headerTextColor() const { - return _serverTextColor; + // SES-50 Hardcoded to Black. Old value was _serverTextColor; + return QColor("black"); } QColor Account::accentColor() const @@ -222,7 +233,8 @@ QColor Account::accentColor() const darknessAdjustment *= darknessAdjustment; // Square the value to pronounce the darkness more in lighter colours const auto baseAdjustment = 125; const auto adjusted = Theme::isDarkColor(accentColor) ? accentColor : accentColor.darker(baseAdjustment + darknessAdjustment); - return adjusted; + // SES-50 Hardcoded. Old value was adjusted; + return QColor("#718095"); } QString Account::id() const diff --git a/src/libsync/account.h b/src/libsync/account.h index 0ac43606c0d61..a194d891ac9d5 100644 --- a/src/libsync/account.h +++ b/src/libsync/account.h @@ -124,6 +124,7 @@ class OWNCLOUDSYNC_EXPORT Account : public QObject /// e.g. the actual name of the user (John Doe). If this cannot be /// provided, defaults to davUser (e.g. johndoe) [[nodiscard]] QString prettyName() const; + [[nodiscard]] QString eliedName(const int size) const; [[nodiscard]] QColor accentColor() const; [[nodiscard]] QColor headerColor() const; diff --git a/src/libsync/configfile.cpp b/src/libsync/configfile.cpp index 75892da8e12fb..3ba0e61a77cd2 100644 --- a/src/libsync/configfile.cpp +++ b/src/libsync/configfile.cpp @@ -105,6 +105,7 @@ static constexpr char notifyExistingFoldersOverLimitC[] = "notifyExistingFolders static constexpr char stopSyncingExistingFoldersOverLimitC[] = "stopSyncingExistingFoldersOverLimit"; static constexpr char confirmExternalStorageC[] = "confirmExternalStorage"; static constexpr char moveToTrashC[] = "moveToTrash"; +static constexpr char sendDataC[] = "sendData"; static constexpr char forceLoginV2C[] = "forceLoginV2"; @@ -955,13 +956,13 @@ void ConfigFile::setNewBigFolderSizeLimit(bool isChecked, qint64 mbytes) bool ConfigFile::confirmExternalStorage() const { - const auto fallback = getValue(confirmExternalStorageC, QString(), true); + const auto fallback = getValue(confirmExternalStorageC, QString(), false); return getPolicySetting(QLatin1String(confirmExternalStorageC), fallback).toBool(); } bool ConfigFile::useNewBigFolderSizeLimit() const { - const auto fallback = getValue(useNewBigFolderSizeLimitC, QString(), true); + const auto fallback = getValue(useNewBigFolderSizeLimitC, QString(), false); return getPolicySetting(QLatin1String(useNewBigFolderSizeLimitC), fallback).toBool(); } @@ -993,6 +994,16 @@ void ConfigFile::setConfirmExternalStorage(bool isChecked) setValue(confirmExternalStorageC, isChecked); } +bool ConfigFile::sendData() const +{ + return getValue(sendDataC, QString(), false).toBool(); +} + +void ConfigFile::setSendData(bool isChecked) +{ + setValue(sendDataC, isChecked); +} + bool ConfigFile::moveToTrash() const { return getValue(moveToTrashC, QString(), false).toBool(); @@ -1020,7 +1031,7 @@ bool ConfigFile::showMainDialogAsNormalWindow() const { bool ConfigFile::promptDeleteFiles() const { QSettings settings(configFile(), QSettings::IniFormat); - return settings.value(QLatin1String(promptDeleteC), false).toBool(); + return settings.value(QLatin1String(promptDeleteC), true).toBool(); } void ConfigFile::setPromptDeleteFiles(bool promptDeleteFiles) diff --git a/src/libsync/configfile.h b/src/libsync/configfile.h index 440902635438a..eca9bc3913a71 100644 --- a/src/libsync/configfile.h +++ b/src/libsync/configfile.h @@ -152,6 +152,10 @@ class OWNCLOUDSYNC_EXPORT ConfigFile [[nodiscard]] bool confirmExternalStorage() const; void setConfirmExternalStorage(bool); + /** If we should track user data */ + [[nodiscard]] bool sendData() const; + void setSendData(bool); + /** If we should move the files deleted on the server in the trash */ [[nodiscard]] bool moveToTrash() const; void setMoveToTrash(bool); diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index cb85e494ea3c3..d29894abda104 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -483,26 +483,29 @@ void ProcessDirectoryJob::processFile(PathTuple path, const auto localFileIsLocked = dbEntry._lockstate._locked ? "locked" : "not locked"; const auto serverFileLockType = serverEntry.isValid() ? QString::number(static_cast(serverEntry.lockOwnerType)) : QStringLiteral(""); const auto localFileLockType = dbEntry._lockstate._locked ? QString::number(static_cast(dbEntry._lockstate._lockOwnerType)) : QStringLiteral(""); - - QString processingLog; - QDebug deleteLogger{&processingLog}; - deleteLogger.nospace() << "Processing " << path._original - << " | (db/local/remote)" - << " | valid: " << dbEntry.isValid() << "/" << hasLocal << "/" << hasServer - << " | mtime: " << dbEntry._modtime << "/" << localEntry.modtime << "/" << serverEntry.modtime - << " | size: " << dbEntry._fileSize << "/" << localEntry.size << "/" << serverEntry.size - << " | etag: " << dbEntry._etag << "//" << serverEntry.etag - << " | checksum: " << dbEntry._checksumHeader << "//" << serverEntry.checksumHeader - << " | perm: " << dbEntry._remotePerm << "//" << serverEntry.remotePerm - << " | fileid: " << dbEntry._fileId << "//" << serverEntry.fileId - << " | type: " << dbEntry._type << "/" << localEntry.type << "/" << (serverEntry.isDirectory ? ItemTypeDirectory : ItemTypeFile) - << " | e2ee: " << dbEntry.isE2eEncrypted() << "/" << serverEntry.isE2eEncrypted() - << " | e2eeMangledName: " << dbEntry.e2eMangledName() << "/" << serverEntry.e2eMangledName - << " | file lock: " << localFileIsLocked << "//" << serverFileIsLocked - << " | file lock type: " << localFileLockType << "//" << serverFileLockType - << " | metadata missing: /" << localEntry.isMetadataMissing << '/'; - - qCInfo(lcDisco).nospace() << processingLog; + qCInfo(lcDisco).nospace() << "Processing " << path._original + << " | (db/local/remote)" + << " | valid: " << dbEntry.isValid() << "/" << hasLocal << "/" << hasServer + << " | mtime: " << dbEntry._modtime << "/" << localEntry.modtime << "/" << serverEntry.modtime + << " | size: " << dbEntry._fileSize << "/" << localEntry.size << "/" << serverEntry.size + << " | etag: " << dbEntry._etag << "//" << serverEntry.etag + << " | checksum: " << dbEntry._checksumHeader << "//" << serverEntry.checksumHeader + << " | perm: " << dbEntry._remotePerm << "//" << serverEntry.remotePerm + << " | fileid: " << dbEntry._fileId << "//" << serverEntry.fileId + << " | inode: " << dbEntry._inode << "/" << localEntry.inode << "/" + << " | type: " << dbEntry._type << "/" << localEntry.type << "/" << (serverEntry.isDirectory ? ItemTypeDirectory : ItemTypeFile) + << " | e2ee: " << dbEntry.isE2eEncrypted() << "/" << serverEntry.isE2eEncrypted() + << " | e2eeMangledName: " << dbEntry.e2eMangledName() << "/" << serverEntry.e2eMangledName + << " | file lock: " << localFileIsLocked << "//" << serverFileIsLocked + << " | file lock type: " << localFileLockType << "//" << serverFileLockType + << " | metadata missing: /" << localEntry.isMetadataMissing << '/'; + + if (localEntry.isValid() + && !serverEntry.isValid() + && !dbEntry.isValid() + && localEntry.modtime < _lastSyncTimestamp) { + qCWarning(lcDisco) << "File" << path._original << "was modified before the last sync run and is not in the sync journal and server"; + } if (_discoveryData->isRenamed(path._original)) { qCDebug(lcDisco) << "Ignoring renamed"; @@ -514,7 +517,6 @@ void ProcessDirectoryJob::processFile(PathTuple path, item->_originalFile = path._original; item->_previousSize = dbEntry._fileSize; item->_previousModtime = dbEntry._modtime; - item->_discoveryResult = std::move(processingLog); if (dbEntry._modtime == localEntry.modtime && dbEntry._type == ItemTypeVirtualFile && localEntry.type == ItemTypeFile) { item->_type = ItemTypeFile; diff --git a/src/libsync/logger.cpp b/src/libsync/logger.cpp index 7d22eba8239f7..2bfaa8aaf6147 100644 --- a/src/libsync/logger.cpp +++ b/src/libsync/logger.cpp @@ -68,8 +68,6 @@ static bool compressLog(const QString &originalName, const QString &targetName) namespace OCC { -Q_LOGGING_CATEGORY(lcPermanentLog, "nextcloud.log.permanent") - Logger *Logger::instance() { static Logger log; @@ -153,7 +151,7 @@ void Logger::doLog(QtMsgType type, const QMessageLogContext &ctx, const QString _logstream->flush(); } closeNoLock(); - enterNextLogFileNoLock(QStringLiteral("nextcloud.log"), LogType::Log); + enterNextLogFileNoLock(); } ++linesCounter; @@ -165,13 +163,6 @@ void Logger::doLog(QtMsgType type, const QMessageLogContext &ctx, const QString if (_doFileFlush) _logstream->flush(); } - if (_permanentDeleteLogStream && strcmp(ctx.category, lcPermanentLog().categoryName()) == 0) { - (*_permanentDeleteLogStream) << msg << "\n"; - _permanentDeleteLogStream->flush(); - if (_permanentDeleteLogFile.size() > 10LL * 1024LL) { - enterNextLogFileNoLock(QStringLiteral("permanent_delete.log"), LogType::DeleteLog); - } - } if (type == QtFatalMsg) { closeNoLock(); #if defined(Q_OS_WIN) @@ -206,12 +197,6 @@ void Logger::setLogFile(const QString &name) setLogFileNoLock(name); } -void Logger::setPermanentDeleteLogFile(const QString &name) -{ - QMutexLocker locker(&_mutex); - setPermanentDeleteLogFileNoLock(name); -} - void Logger::setLogExpire(int expire) { _logExpire = expire; @@ -251,9 +236,10 @@ QString Logger::temporaryFolderLogDirPath() const void Logger::setupTemporaryFolderLogDir() { auto dir = temporaryFolderLogDirPath(); - if (!QDir().mkpath(dir)) { + if (!QDir().mkpath(dir)) return; - } + setLogDebug(true); + setLogExpire(4 /*hours*/); setLogDir(dir); _temporaryFolderLogDir = true; } @@ -263,8 +249,10 @@ void Logger::disableTemporaryFolderLogDir() if (!_temporaryFolderLogDir) return; - enterNextLogFile("nextcloud.log", LogType::Log); + enterNextLogFile(); setLogDir(QString()); + setLogDebug(false); + setLogFile(QString()); _temporaryFolderLogDir = false; } @@ -291,7 +279,7 @@ void Logger::dumpCrashLog() } } -void Logger::enterNextLogFileNoLock(const QString &baseFileName, LogType type) +void Logger::enterNextLogFileNoLock() { if (!_logDirectory.isEmpty()) { @@ -303,44 +291,29 @@ void Logger::enterNextLogFileNoLock(const QString &baseFileName, LogType type) // Tentative new log name, will be adjusted if one like this already exists const auto now = QDateTime::currentDateTime(); const auto cLocale = QLocale::c(); // Some system locales generate strings that are incompatible with filesystem - QString newLogName = cLocale.toString(now, QStringLiteral("yyyyMMdd_HHmm")) + QStringLiteral("_%1").arg(baseFileName); + QString newLogName = cLocale.toString(now, QStringLiteral("yyyyMMdd_HHmm")) + QStringLiteral("_nextcloud.log"); // Expire old log files and deal with conflicts - const auto files = dir.entryList({QStringLiteral("*owncloud.log.*"), QStringLiteral("*%1.*").arg(baseFileName)}, QDir::Files, QDir::Name); - for (const auto &s : files) { + QStringList files = dir.entryList(QStringList("*owncloud.log.*"), QDir::Files, QDir::Name) + + dir.entryList(QStringList("*nextcloud.log.*"), QDir::Files, QDir::Name); + static const QRegularExpression rx(QRegularExpression::anchoredPattern(R"(.*(next|own)cloud\.log\.(\d+).*)")); + int maxNumber = -1; + foreach (const QString &s, files) { if (_logExpire > 0) { QFileInfo fileInfo(dir.absoluteFilePath(s)); if (fileInfo.lastModified().addSecs(60 * 60 * _logExpire) < now) { dir.remove(s); } } - } - - const auto regexpText = QString{"%1\\.(\\d+).*"}.arg(QRegularExpression::escape(newLogName)); - const auto anchoredPatternRegexpText = QRegularExpression::anchoredPattern(regexpText); - const QRegularExpression rx(regexpText); - int maxNumber = -1; - const auto collidingFileNames = dir.entryList({QStringLiteral("%1.*").arg(newLogName)}, QDir::Files, QDir::Name); - for(const auto &fileName : collidingFileNames) { - const auto rxMatch = rx.match(fileName); - if (rxMatch.hasMatch()) { - maxNumber = qMax(maxNumber, rxMatch.captured(1).toInt()); + const auto rxMatch = rx.match(s); + if (s.startsWith(newLogName) && rxMatch.hasMatch()) { + maxNumber = qMax(maxNumber, rxMatch.captured(2).toInt()); } } newLogName.append("." + QString::number(maxNumber + 1)); - auto previousLog = QString{}; - switch (type) - { - case OCC::Logger::LogType::Log: - previousLog = _logFile.fileName(); - setLogFileNoLock(dir.filePath(newLogName)); - break; - case OCC::Logger::LogType::DeleteLog: - previousLog = _permanentDeleteLogFile.fileName(); - setPermanentDeleteLogFileNoLock(dir.filePath(newLogName)); - break; - } + auto previousLog = _logFile.fileName(); + setLogFileNoLock(dir.filePath(newLogName)); // Compress the previous log file. On a restart this can be the most recent // log file. @@ -389,40 +362,10 @@ void Logger::setLogFileNoLock(const QString &name) _logstream->setCodec(QTextCodec::codecForName("UTF-8")); } -void Logger::setPermanentDeleteLogFileNoLock(const QString &name) -{ - if (_permanentDeleteLogStream) { - _permanentDeleteLogStream.reset(nullptr); - _permanentDeleteLogFile.close(); - } - - if (name.isEmpty()) { - return; - } - - bool openSucceeded = false; - if (name == QLatin1String("-")) { - openSucceeded = _permanentDeleteLogFile.open(stdout, QIODevice::WriteOnly); - } else { - _permanentDeleteLogFile.setFileName(name); - openSucceeded = _permanentDeleteLogFile.open(QIODevice::WriteOnly); - } - - if (!openSucceeded) { - postGuiMessage(tr("Error"), - QString(tr("File \"%1\"
      cannot be opened for writing.

      " - "The log output cannot be saved!
      ")) - .arg(name)); - return; - } - - _permanentDeleteLogStream.reset(new QTextStream(&_permanentDeleteLogFile)); -} - -void Logger::enterNextLogFile(const QString &baseFileName, LogType type) +void Logger::enterNextLogFile() { QMutexLocker locker(&_mutex); - enterNextLogFileNoLock(baseFileName, type); + enterNextLogFileNoLock(); } } // namespace OCC diff --git a/src/libsync/logger.h b/src/libsync/logger.h index 2d9dce3193edd..bfcb2989d5db0 100644 --- a/src/libsync/logger.h +++ b/src/libsync/logger.h @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include "common/utility.h" #include "owncloudlib.h" @@ -35,12 +35,6 @@ class OWNCLOUDSYNC_EXPORT Logger : public QObject { Q_OBJECT public: - enum class LogType { - Log, - DeleteLog, - }; - Q_ENUM(LogType) - bool isLoggingToFile() const; void doLog(QtMsgType type, const QMessageLogContext &ctx, const QString &message); @@ -53,8 +47,6 @@ class OWNCLOUDSYNC_EXPORT Logger : public QObject QString logFile() const; void setLogFile(const QString &name); - void setPermanentDeleteLogFile(const QString &name); - void setLogExpire(int expire); QString logDir() const; @@ -96,7 +88,7 @@ class OWNCLOUDSYNC_EXPORT Logger : public QObject void guiMessage(const QString &, const QString &); public slots: - void enterNextLogFile(const QString &baseFileName, OCC::Logger::LogType type); + void enterNextLogFile(); private: Logger(QObject *parent = nullptr); @@ -104,23 +96,20 @@ public slots: void closeNoLock(); void dumpCrashLog(); - void enterNextLogFileNoLock(const QString &baseFileName, LogType type); + void enterNextLogFileNoLock(); void setLogFileNoLock(const QString &name); - void setPermanentDeleteLogFileNoLock(const QString &name); QFile _logFile; bool _doFileFlush = false; int _logExpire = 0; bool _logDebug = false; QScopedPointer _logstream; - mutable QRecursiveMutex _mutex; + mutable QMutex _mutex; QString _logDirectory; bool _temporaryFolderLogDir = false; QSet _logRules; QVector _crashLog; int _crashLogIndex = 0; - QFile _permanentDeleteLogFile; - QScopedPointer _permanentDeleteLogStream; }; } // namespace OCC diff --git a/src/libsync/propagateremotedelete.cpp b/src/libsync/propagateremotedelete.cpp index 708b0f2ed2a0a..7bc5be9528889 100644 --- a/src/libsync/propagateremotedelete.cpp +++ b/src/libsync/propagateremotedelete.cpp @@ -29,7 +29,6 @@ Q_LOGGING_CATEGORY(lcPropagateRemoteDelete, "nextcloud.sync.propagator.remotedel void PropagateRemoteDelete::start() { qCInfo(lcPropagateRemoteDelete) << "Start propagate remote delete job for" << _item->_file; - qCInfo(lcPermanentLog) << "delete" << _item->_file << _item->_discoveryResult; if (propagator()->_abortRequested) return; diff --git a/src/libsync/propagatorjobs.cpp b/src/libsync/propagatorjobs.cpp index f39d6898d8152..f165c523a815f 100644 --- a/src/libsync/propagatorjobs.cpp +++ b/src/libsync/propagatorjobs.cpp @@ -101,7 +101,6 @@ bool PropagateLocalRemove::removeRecursively(const QString &path) void PropagateLocalRemove::start() { qCInfo(lcPropagateLocalRemove) << "Start propagate local remove job"; - qCInfo(lcPermanentLog) << "delete" << _item->_file << _item->_discoveryResult; _moveToTrash = propagator()->syncOptions()._moveFilesToTrash; diff --git a/src/libsync/syncfileitem.h b/src/libsync/syncfileitem.h index a4619535561b1..4bf481a138c86 100644 --- a/src/libsync/syncfileitem.h +++ b/src/libsync/syncfileitem.h @@ -339,8 +339,6 @@ class OWNCLOUDSYNC_EXPORT SyncFileItem bool _isAnyInvalidCharChild = false; bool _isAnyCaseClashChild = false; - - QString _discoveryResult; }; inline bool operator<(const SyncFileItemPtr &item1, const SyncFileItemPtr &item2) diff --git a/src/libsync/syncfilestatustracker.cpp b/src/libsync/syncfilestatustracker.cpp index 2b934806fa08c..67ad27ad0e59e 100644 --- a/src/libsync/syncfilestatustracker.cpp +++ b/src/libsync/syncfilestatustracker.cpp @@ -249,9 +249,6 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector &items) } SharedFlag sharedFlag = item->_remotePerm.hasPermission(RemotePermissions::IsShared) ? Shared : NotShared; - if (item->_instruction != CSyncEnums::CSYNC_INSTRUCTION_REMOVE) { - item->_discoveryResult.clear(); - } if (item->_instruction != CSYNC_INSTRUCTION_NONE && item->_instruction != CSYNC_INSTRUCTION_UPDATE_METADATA && item->_instruction != CSYNC_INSTRUCTION_IGNORE From c1ad3591eb6a66a04d81943afa10361956d3d843 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:30:52 +0100 Subject: [PATCH 015/104] add ga4 tracking --- src/gui/ga4/datacollectionwrapper.cpp | 59 +++++ src/gui/ga4/datacollectionwrapper.h | 82 +++++++ src/gui/ga4/ganalytics.cpp | 168 ++++++++++++++ src/gui/ga4/ganalytics.h | 77 +++++++ src/gui/ga4/ganalytics_worker.cpp | 309 ++++++++++++++++++++++++++ src/gui/ga4/ganalytics_worker.h | 121 ++++++++++ 6 files changed, 816 insertions(+) create mode 100644 src/gui/ga4/datacollectionwrapper.cpp create mode 100644 src/gui/ga4/datacollectionwrapper.h create mode 100644 src/gui/ga4/ganalytics.cpp create mode 100644 src/gui/ga4/ganalytics.h create mode 100644 src/gui/ga4/ganalytics_worker.cpp create mode 100644 src/gui/ga4/ganalytics_worker.h diff --git a/src/gui/ga4/datacollectionwrapper.cpp b/src/gui/ga4/datacollectionwrapper.cpp new file mode 100644 index 0000000000000..895221ae0b0a8 --- /dev/null +++ b/src/gui/ga4/datacollectionwrapper.cpp @@ -0,0 +1,59 @@ +#include "datacollectionwrapper.h" + +#ifdef BUILDTYPE_RELWITHDEBINFO + const QString GA_MEASUREMENT_ID = "G-P9KD4TLW0V"; // Verwende diesen String nur wenn wir in Debug bauen +#else + const QString GA_MEASUREMENT_ID = "G-270CYZ49V0"; // Verwende diesen String nur wenn wir in Release bauen +#endif + + +DataCollectionWrapper::DataCollectionWrapper(QObject *parent) : QObject(parent) { +} + +DataCollectionWrapper::~DataCollectionWrapper() { +} + +void DataCollectionWrapper::clicked(const TrackingPage trackingPage, const TrackingElement trackingButton){ + trackEvent( _trackingPageString[trackingPage], _trackingElementString[trackingButton]); +} + +void DataCollectionWrapper::opened(const TrackingPage trackingPage){ + trackEvent(_trackingEventString[TrackingEvent::Open], _trackingPageString[trackingPage]); +} + +void DataCollectionWrapper::login(){ + trackEvent(QString(), _trackingEventString[TrackingEvent::Login]); +} + +void DataCollectionWrapper::accountRemoved(){ + trackEventImmediately(QString(), _trackingEventString[TrackingEvent::Logout]); +} + +void DataCollectionWrapper::trackEvent(QString page, QString element) { + GAnalytics::getInstance().sendEvent(page, element); +} + +void DataCollectionWrapper::trackEventImmediately(QString page, QString element) +{ + GAnalytics::getInstance().sendEventImmediatley(page, element); +} + +void DataCollectionWrapper::setClientID(const QString clientId) { + GAnalytics::getInstance().setClientID(clientId); +} + +void DataCollectionWrapper::setSendData(const bool sendData) { + GAnalytics::getInstance().enable(sendData); +} + +void DataCollectionWrapper::setAccount(const OCC::AccountPtr account) { + GAnalytics::getInstance().setAccount(account); +} + +void DataCollectionWrapper::initDataCollection() { + GAnalytics* ga = &GAnalytics::getInstance(); + ga->setMeasurementId(GA_MEASUREMENT_ID); + ga->setSendInterval(3000); + ga->setLogLevel(GAnalytics::Info); + ga->enableValidation(false); +} \ No newline at end of file diff --git a/src/gui/ga4/datacollectionwrapper.h b/src/gui/ga4/datacollectionwrapper.h new file mode 100644 index 0000000000000..f7e97bb01bbae --- /dev/null +++ b/src/gui/ga4/datacollectionwrapper.h @@ -0,0 +1,82 @@ +#ifndef DATACOLLECTIONWRAPPER_H +#define DATACOLLECTIONWRAPPER_H + +#include "ganalytics.h" +#include "account.h" + +class DataCollectionWrapper : public QObject { + + Q_OBJECT + Q_ENUMS(TrackingPage) + Q_ENUMS(TrackingEvent) + Q_ENUMS(TrackingElement) + + +public: + + enum TrackingEvent + { + Click, + Open, + Login, + Logout, + }; + + enum TrackingPage{ + GeneralSettings, + AccountSettings, + }; + + enum TrackingElement{ + PrivacyPolicy, + OpenSourceComponents, + LegalNotice, + MoreInformation, + ServerNotifications, + AutoStart, + ToogleSendData, + AutoCheckforUpdate + }; + + void setClientID(const QString clientId); + void setSendData(const bool sendData); + void setAccount(const OCC::AccountPtr account); + void initDataCollection(); + + DataCollectionWrapper(QObject *parent = 0); + ~DataCollectionWrapper(); + +public slots: + void login(); + void accountRemoved(); + void clicked(const TrackingPage trackingPage, const TrackingElement trackingButton); + void opened(const TrackingPage trackingPage); +private: + void trackEvent(QString page = QString(), QString element = QString()); + void trackEventImmediately(QString page = QString(), QString element = QString()); + + std::map _trackingPageString = { + { GeneralSettings, "GeneralSetting" }, + { AccountSettings, "AccountSettings" }, + }; + + std::map _trackingElementString = { + { PrivacyPolicy, "PrivacyPolicy" }, + { OpenSourceComponents, "OpenSourceComponents" }, + { LegalNotice, "LegalNotice" }, + { MoreInformation, "MoreInformation" }, + { ServerNotifications, "ServerNotifications" }, + { AutoStart, "AutoStart" }, + { ToogleSendData, "ToogleSendData" }, + { AutoCheckforUpdate, "AutoCheckforUpdate" }, + }; + + std::map _trackingEventString = { + { Click, "click" }, + { Open, "screen_view" }, + { Login, "login" }, + { Logout, "logout" }, + }; +}; + +#endif // DATACOLLECTIONWRAPPER_H \ No newline at end of file diff --git a/src/gui/ga4/ganalytics.cpp b/src/gui/ga4/ganalytics.cpp new file mode 100644 index 0000000000000..00e80a7f84006 --- /dev/null +++ b/src/gui/ga4/ganalytics.cpp @@ -0,0 +1,168 @@ +/* + * This file is part of Nextcloud Destop - Ionos HiDrive Next + * + * Modifications: + * - Changed the usage of Measurement Protocol to the GA4 API + * - Removed the construction of the json payload + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "ganalytics.h" +#include "ganalytics_worker.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "account.h" + + +GAnalytics::GAnalytics(QObject *parent) : QObject(parent) +{ + d = new GAnalyticsWorker(this); +} + +/** + * Destructor of class GAnalytics. + */ +GAnalytics::~GAnalytics() +{ + delete d; +} + +void GAnalytics::setLogLevel(GAnalytics::LogLevel logLevel) +{ + d->m_logLevel = logLevel; +} + +GAnalytics::LogLevel GAnalytics::logLevel() const +{ + return d->m_logLevel; +} + +void GAnalytics::setViewportSize(const QString &viewportSize) +{ + d->m_viewportSize = viewportSize; +} + +QString GAnalytics::viewportSize() const +{ + return d->m_viewportSize; +} + +void GAnalytics::setLanguage(const QString &language) +{ + d->m_language = language; +} + +QString GAnalytics::language() const +{ + return d->m_language; +} + +void GAnalytics::setAnonymizeIPs(bool anonymize) +{ + d->m_anonymizeIPs = anonymize; +} + +bool GAnalytics::anonymizeIPs() +{ + return d->m_anonymizeIPs; +} + +void GAnalytics::setSendInterval(int milliseconds) +{ + d->m_timer.setInterval(milliseconds); +} + +int GAnalytics::sendInterval() const +{ + return (d->m_timer.interval()); +} + +bool GAnalytics::isEnabled() +{ + return d->m_isEnabled; +} + +void GAnalytics::setMeasurementId(const QString &measurementId) +{ + d->m_measurementId = measurementId; +} + +void GAnalytics::setClientID(const QString &clientID) +{ + d->m_clientID = clientID; +} + +void GAnalytics::enable(bool state) +{ + d->enable(state); +} + +void GAnalytics::enableValidation(bool state) +{ + d->m_validation = state; +} + +void GAnalytics::setNetworkAccessManager(QNetworkAccessManager *networkAccessManager) +{ + if (d->networkManager != networkAccessManager) + { + // Delete the old network manager if it was our child + if (d->networkManager && d->networkManager->parent() == this) + { + d->networkManager->deleteLater(); + } + + d->networkManager = networkAccessManager; + } +} + +QNetworkAccessManager *GAnalytics::networkAccessManager() const +{ + return d->networkManager; +} + +void GAnalytics::setAccount(OCC::AccountPtr account) +{ + d->m_account = account; +} +/** + * This method is called whenever a button was pressed in the application. + * A query for a POST message will be created to report this event. The + * created query will be stored in a message queue. + */ +void GAnalytics::sendEvent(const QString &page, const QString &element) +{ + d->enqueQueryWithCurrentTime(element, page); +} + +void GAnalytics::sendEventImmediatley(const QString &page, const QString &element) +{ + d->enqueQueryWithCurrentTime(element, page); + d->postMessage(); +} diff --git a/src/gui/ga4/ganalytics.h b/src/gui/ga4/ganalytics.h new file mode 100644 index 0000000000000..c9fbf2c2dc695 --- /dev/null +++ b/src/gui/ga4/ganalytics.h @@ -0,0 +1,77 @@ +#pragma once + +#include +#include +#include "account.h" + +class QNetworkAccessManager; +class GAnalyticsWorker; +class DataCollectionWrapper; +class Account; + +// https://developers.google.com/analytics/devguides/collection/protocol/ga4/verify-implementation?client_type=gtag +class GAnalytics : public QObject +{ + Q_OBJECT + Q_ENUMS(LogLevel) + +public: + ~GAnalytics(); + + static GAnalytics& getInstance() + { + static GAnalytics instance; + return instance; + } + +public: + enum LogLevel + { + Debug, + Info, + Error + }; + + void setMeasurementId(const QString& measurementId); + void setClientID(const QString& clientID); + + void setLogLevel(LogLevel logLevel); + LogLevel logLevel() const; + + void setViewportSize(const QString &viewportSize); + QString viewportSize() const; + + void setLanguage(const QString &language); + QString language() const; + + void setAnonymizeIPs(bool anonymize); + bool anonymizeIPs(); + + void setSendInterval(int milliseconds); + int sendInterval() const; + + void enable(bool state = true); + bool isEnabled(); + + OCC::AccountPtr account; + void setAccount(OCC::AccountPtr account); + + void enableValidation(bool state); + + /// Get or set the network access manager. If none is set, the class creates its own on the first request + void setNetworkAccessManager(QNetworkAccessManager *networkAccessManager); + QNetworkAccessManager *networkAccessManager() const; + + +private: + void sendEvent(const QString &page = QString(), const QString &element = QString()); + void sendEventImmediatley(const QString &page, const QString &element); + explicit GAnalytics(QObject *parent = 0); + Q_DISABLE_COPY_MOVE(GAnalytics); + +private: + GAnalyticsWorker *d; + + friend class DataCollectionWrapper; +}; + diff --git a/src/gui/ga4/ganalytics_worker.cpp b/src/gui/ga4/ganalytics_worker.cpp new file mode 100644 index 0000000000000..f3eb1351430c3 --- /dev/null +++ b/src/gui/ga4/ganalytics_worker.cpp @@ -0,0 +1,309 @@ +/* + * This file is part of Nextcloud Destop - Ionos HiDrive Next + * + * Modifications: + * - Changed the usage of Measurement Protocol to the GA4 API + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "ganalytics.h" +#include "ganalytics_worker.h" +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include "logger.h" +#include "account.h" + +const QLatin1String GAnalyticsWorker::dateTimeFormat("yyyy,MM,dd-hh:mm::ss:zzz"); + +Q_LOGGING_CATEGORY(lcGAnalyticsWorker, "nextcloud.gui.ga4.ganalytics_worker", QtInfoMsg) + +GAnalyticsWorker::GAnalyticsWorker(GAnalytics *parent) + : QObject(parent), q(parent), m_logLevel(GAnalytics::Error) +{ + m_appName = QCoreApplication::instance()->applicationName(); + m_appVersion = QCoreApplication::instance()->applicationVersion(); + m_request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json; charset=utf-8"); + m_request.setHeader(QNetworkRequest::UserAgentHeader, getUserAgent()); + + m_language = QLocale::system().name().toLower().replace("_", "-"); + m_screenResolution = getScreenResolution(); + + m_timer.setInterval(m_timerInterval); + connect(&m_timer, &QTimer::timeout, this, &GAnalyticsWorker::postMessage); +} + +void GAnalyticsWorker::enable(bool state) +{ + // state change to the same is not valid. + if(m_isEnabled == state) + { + return; + } + + m_isEnabled = state; + if(m_isEnabled) + { + // enable -> start doing things :) + m_timer.start(); + } + else + { + // disable -> stop the timer + m_timer.stop(); + } +} + +void GAnalyticsWorker::logMessage(GAnalytics::LogLevel level, const QString &message) +{ + if (m_logLevel > level) + { + return; + } + if(level == GAnalytics::Error) + { + // log error message + qCCritical(lcGAnalyticsWorker) << "[Analytics]" << message; + } + else if(level == GAnalytics::Info) + { + // log info message + qCInfo(lcGAnalyticsWorker) << "[Analytics]" << message; + } + else if(level == GAnalytics::Debug) + { + // log debug message + qCDebug(lcGAnalyticsWorker) << "[Analytics]" << message; + } +} + +/** + * Get primary screen resolution. + * @return A QString like "800x600". + */ +QString GAnalyticsWorker::getScreenResolution() +{ + QScreen *screen = QGuiApplication::primaryScreen(); + QSize size = screen->size(); + + return QString("%1x%2").arg(size.width()).arg(size.height()); +} + +/** + * Try to gain information about the system where this application + * is running. It needs to get the name and version of the operating + * system, the language and screen resolution. + * All this information will be send in POST messages. + * @return agent A QString with all the information formatted for a POST message. + */ +QString GAnalyticsWorker::getUserAgent() +{ + return QString("%1/%2").arg(m_appName).arg(m_appVersion); +} + + +/** + * Takes a QUrlQuery object and wrapp it together with + * a QTime object into a QueryBuffer struct. These struct + * will be stored in the message queue. + */ +void GAnalyticsWorker::enqueQueryWithCurrentTime(QString eventValue, QString screenNameValue) +{ + if(!m_isEnabled) + { + return; + } + QueryBuffer buffer; + buffer.eventValue = eventValue; + buffer.screenNameValue = screenNameValue; + buffer.time = QDateTime::currentDateTime(); + + m_messageQueue.enqueue(buffer); +} + +/** + * This function is called by a timer interval. + * The function tries to send a messages from the queue. + * If message was successfully send then this function + * will be called back to send next message. + * If message queue contains more than one message then + * the connection will kept open. + * The message POST is asyncroniously when the server + * answered a signal will be emitted. + */ +void GAnalyticsWorker::postMessage() +{ + if (m_messageQueue.isEmpty()) + { + // queue empty -> try sending later + m_timer.start(); + return; + } + else + { + // queue has messages -> stop timer and start sending + m_timer.stop(); + } + + if(m_account == nullptr) + { + logMessage(GAnalytics::Error, "account is not set!"); + return; + } + + QString connection = "close"; + if (m_messageQueue.count() > 1) + { + connection = "keep-alive"; + } + + QueryBuffer buffer = m_messageQueue.head(); + QDateTime sendTime = QDateTime::currentDateTime(); + qint64 timeDiff = buffer.time.msecsTo(sendTime); + + if (timeDiff > fourHours) + { + // too old. + m_messageQueue.dequeue(); + emit postMessage(); + return; + } + + m_request.setRawHeader("Connection", connection.toUtf8()); + m_request.setHeader(QNetworkRequest::ContentLengthHeader, 0); + + if (m_measurementId.isEmpty()) { + logMessage(GAnalytics::Error, "google analytics measurement id was not set!"); + m_messageQueue.dequeue(); + return; + } + if (m_clientID.isEmpty()) { + logMessage(GAnalytics::Error, "client id was not set!"); + m_messageQueue.dequeue(); + return; + } + + QUrl requestUrl; + requestUrl.setScheme("https"); + requestUrl.setHost("www.google-analytics.com"); + if(m_validation){ + requestUrl.setPath("/debug/g/collect"); + } + else { + requestUrl.setPath("/g/collect"); + } + + QUrlQuery query; + setStaticQueryValues(query); + setDynamicQueryValues(query, buffer.eventValue, buffer.screenNameValue); + + requestUrl.setQuery(query); + + m_request.setUrl(QUrl(requestUrl)); + + char message[512]; + snprintf(message, sizeof(message), "%s\n", requestUrl.toString().toStdString().c_str()); + logMessage(GAnalytics::Debug, message); + + QNetworkReply *reply = m_account->sendRawRequest("POST", m_request.url(), m_request, QByteArray()); + + connect(reply, SIGNAL(finished()), this, SLOT(postMessageFinished())); +} + +void GAnalyticsWorker::setDynamicQueryValues(QUrlQuery& query, const QString& eventValue, const QString& screenNameValue){ + query.addQueryItem(_ga4[GA4::Event], eventValue); + query.addQueryItem(_ga4[GA4::ScreenName], screenNameValue); +} + +void GAnalyticsWorker::setStaticQueryValues(QUrlQuery& query){ + + query.addQueryItem(_ga4[GA4::Version], "2"); + query.addQueryItem(_ga4[GA4::MeasurementID], m_measurementId); + query.addQueryItem(_ga4[GA4::ClientID], m_clientID); + + query.addQueryItem(_ga4[GA4::SessionID], "1"); + query.addQueryItem(_ga4[GA4::SessionSequence], "1"); + query.addQueryItem(_ga4[GA4::SessionCount], "1"); + query.addQueryItem(_ga4[GA4::UserID], m_userID); + query.addQueryItem(_ga4[GA4::Language], m_language); + query.addQueryItem(_ga4[GA4::ScreenResolution], m_screenResolution); + // TODO SES-169 + // query.addQueryItem(_ga4[GA4::AgentArch], "x86_64"); + query.addQueryItem(_ga4[GA4::AgentMobileBrand], "0"); + #ifdef Q_OS_WIN + query.addQueryItem(_ga4[GA4::AgentPlatform], "Windows"); + #endif + #ifdef Q_OS_LINUX + query.addQueryItem(_ga4[GA4::AgentPlatform], "Linux"); + #endif + #ifdef Q_OS_MAC + query.addQueryItem(_ga4[GA4::AgentPlatform], "MacOS"); + #endif + // TODO SES-169 + // query.addQueryItem(_ga4[GA4::AgentPlatformVersion], "10"); + query.addQueryItem(_ga4[GA4::EngagementTime], "100"); + + query.addQueryItem(_ga4[GA4::AppName], QUrl::toPercentEncoding(m_appName)); + query.addQueryItem(_ga4[GA4::AppVersion], m_appVersion); +} + + +/** + * NetworkAccsessManager has finished to POST a message. + * If POST message was successfully send then the message + * query should be removed from queue. + * SIGNAL "postMessage" will be emitted to send next message + * if there is any. + * If message couldn't be send then next try is when the + * timer emits its signal. + */ +void GAnalyticsWorker::postMessageFinished() +{ + QNetworkReply *reply = qobject_cast(sender()); + + int httpStausCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + if (httpStausCode < 200 || httpStausCode > 299) + { + logMessage(GAnalytics::Error, QString("Error posting message: %1").arg(reply->errorString())); + + // An error ocurred. Try sending later. + m_timer.start(); + return; + } + else + { + logMessage(GAnalytics::Debug, "Message sent"); + } + + if(m_validation) + { + QByteArray bytes = reply->readAll(); + QString str = QString::fromUtf8(bytes.data(), bytes.size()); + char message[256]; + snprintf(message, sizeof(message), "Status Code:%d\nReply: %s\n", httpStausCode, str.toStdString().c_str()); + logMessage(GAnalytics::Debug, message); + } + + m_messageQueue.dequeue(); + postMessage(); + reply->deleteLater(); +} \ No newline at end of file diff --git a/src/gui/ga4/ganalytics_worker.h b/src/gui/ga4/ganalytics_worker.h new file mode 100644 index 0000000000000..5fac431303774 --- /dev/null +++ b/src/gui/ga4/ganalytics_worker.h @@ -0,0 +1,121 @@ +#pragma once + +#include +#include +#include +#include +#include +#include "ganalytics.h" +#include "abstractnetworkjob.h" + +#include +#include +#include "account.h" + +struct QueryBuffer +{ + QString eventValue; + QString screenNameValue; + QDateTime time; +}; + +class GAnalyticsWorker : public QObject +{ + Q_OBJECT + + +public: + explicit GAnalyticsWorker(GAnalytics *parent = 0); + + GAnalytics *q; + + QNetworkAccessManager *networkManager = nullptr; + + QQueue m_messageQueue; + QTimer m_timer; + QNetworkRequest m_request; + GAnalytics::LogLevel m_logLevel; + + QString m_measurementId; + QString m_clientID; + QString m_userID; + QString m_appName; + QString m_appVersion; + QString m_language; + QString m_screenResolution; + QString m_viewportSize; + + OCC::AccountPtr m_account; + + bool m_anonymizeIPs = false; + bool m_isEnabled = false; + int m_timerInterval = 30000; + bool m_validation = false; + + const static int fourHours = 4 * 60 * 60 * 1000; + const static QLatin1String dateTimeFormat; + +public: + void logMessage(GAnalytics::LogLevel level, const QString &message); + + QString getScreenResolution(); + QString getUserAgent(); + + void enqueQueryWithCurrentTime(QString eventValue, QString screenNameValue); + void setIsSending(bool doSend); + void enable(bool state); + +public slots: + void postMessage(); + void postMessageFinished(); + +private: + void setStaticQueryValues(QUrlQuery& query); + void setDynamicQueryValues(QUrlQuery& query, const QString& eventValue, const QString& screenNameValue); + + enum GA4 + { + Version, + MeasurementID, + ClientID, + SessionID, + SessionSequence, + SessionCount, + UserID, + Language, + ScreenResolution, + AgentArch, + AgentMobileBrand, + AgentPlatform, + AgentPlatformVersion, + Event, + ScreenName, + AppName, + AppVersion, + EngagementTime, + }; + + std::map _ga4 = { + { Version, "v" }, + { MeasurementID, "tid" }, + { ClientID, "cid" }, + { SessionID, "sid" }, + { SessionSequence, "_s" }, + { SessionCount, "sct" }, + { UserID, "uid" }, + { Language, "ul" }, + { ScreenResolution, "sr" }, + { AgentArch, "ua" }, + { AgentMobileBrand, "uamb" }, + { AgentPlatform, "uap" }, + { AgentPlatformVersion, "uapv" }, + { Event, "en" }, + { ScreenName, "ep.screen_name" }, + { AppName, "ep.app_name" }, + { AppVersion, "ep.software_version" }, + { EngagementTime, "_et" }, + }; + + friend class GAnalytics; +}; + From 8ca13e29dfff52d2129146722eb07fd616abf2bf Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:31:25 +0100 Subject: [PATCH 016/104] sort imports in csync.h --- src/csync/csync.h | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/csync/csync.h b/src/csync/csync.h index 0a22571687f0c..3baf87587f46c 100644 --- a/src/csync/csync.h +++ b/src/csync/csync.h @@ -34,21 +34,18 @@ #include "std/c_private.h" #include "ocsynclib.h" -#include "config_csync.h" -#include "common/remotepermissions.h" - -#include -#include #include + #include #include +#include #include #include +#include +#include "common/remotepermissions.h" namespace OCC { -Q_DECLARE_LOGGING_CATEGORY(lcPermanentLog) - class SyncJournalFileRecord; namespace EncryptionStatusEnums { From cc312759c1b9e9878821c7d5476680a47a94d40b Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:32:19 +0100 Subject: [PATCH 017/104] add a space in shellext for windows --- shell_integration/windows/WinShellExt.wxs.in | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/shell_integration/windows/WinShellExt.wxs.in b/shell_integration/windows/WinShellExt.wxs.in index 6b770dfe7f727..1d2154200437a 100644 --- a/shell_integration/windows/WinShellExt.wxs.in +++ b/shell_integration/windows/WinShellExt.wxs.in @@ -42,11 +42,11 @@ There is a limit in Windows (oh wonder^^) so that only the first 15 extensions get invoked, this is why to use that dirty little trick to get ahead ;) See: https://docs.microsoft.com/en-us/windows/win32/shell/context-menu-handlers?redirectedfrom=MSDN#employing-the-verb-selection-model --> - - - - - + + + + + From 5e3f93340b8ad5814392919cd24b765d1b6302c1 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:32:48 +0100 Subject: [PATCH 018/104] update windows build scripts --- admin/win/msi/CMakeLists.txt | 2 +- admin/win/msi/Ionos.wxs | 226 ++++++++++++++++++++++++++++++++ admin/win/msi/Nextcloud~~.wxs | 237 ++++++++++++++++++++++++++++++++++ admin/win/msi/make-msi.bat.in | 4 +- 4 files changed, 466 insertions(+), 3 deletions(-) create mode 100644 admin/win/msi/Ionos.wxs create mode 100644 admin/win/msi/Nextcloud~~.wxs diff --git a/admin/win/msi/CMakeLists.txt b/admin/win/msi/CMakeLists.txt index 933037dac1151..297336ae8d324 100644 --- a/admin/win/msi/CMakeLists.txt +++ b/admin/win/msi/CMakeLists.txt @@ -26,7 +26,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/collect-transform.xsl ${CMAKE_CURRENT_BINARY_DIR}/make-msi.bat Platform.wxi - Nextcloud.wxs + Ionos.wxs ${CMAKE_CURRENT_BINARY_DIR}/RegistryCleanup.vbs RegistryCleanupCustomAction.wxs gui/banner.bmp diff --git a/admin/win/msi/Ionos.wxs b/admin/win/msi/Ionos.wxs new file mode 100644 index 0000000000000..aed4d0b74820e --- /dev/null +++ b/admin/win/msi/Ionos.wxs @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") + + + (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") + + + (SCHEDULE_REBOOT=1) OR NOT (UILevel=2) + + + + $(var.AppName) + $(var.AppIcon) + $(var.AppHelpLink) + $(var.AppInfoLink) + + + + + + + + + + + + + + + + + + + + + + + + 1 + + 1 + + + WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed + + Removing previous installation + Trying to terminate application process of previous installation + Removing sync folders from Explorer's Navigation Pane + + + + + + + NOT (LAUNCH=0) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (NO_SHELL_EXTENSIONS=1) + + + + + (NO_START_MENU_SHORTCUTS=1) + + + + + (NO_DESKTOP_SHORTCUT=1) + + + + diff --git a/admin/win/msi/Nextcloud~~.wxs b/admin/win/msi/Nextcloud~~.wxs new file mode 100644 index 0000000000000..c14cbe030699b --- /dev/null +++ b/admin/win/msi/Nextcloud~~.wxs @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NSIS_UNINSTALLEXE AND NOT Installed + + + (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") + + + (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") + + + (SCHEDULE_REBOOT=1) OR NOT (UILevel=2) + + + + $(var.AppName) + $(var.AppIcon) + $(var.AppHelpLink) + $(var.AppInfoLink) + + + + + + + + + + + + + + + + + + + + + + + + 1 + + 1 + + + WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed + + Removing previous installation + Trying to terminate application process of previous installation + Removing sync folders from Explorer's Navigation Pane + + + + + + + NOT (LAUNCH=0) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (NO_SHELL_EXTENSIONS=1) + + + + + (NO_START_MENU_SHORTCUTS=1) + + + + + (NO_DESKTOP_SHORTCUT=1) + + + + diff --git a/admin/win/msi/make-msi.bat.in b/admin/win/msi/make-msi.bat.in index eb14735327fdf..1b19cea7cc855 100644 --- a/admin/win/msi/make-msi.bat.in +++ b/admin/win/msi/make-msi.bat.in @@ -17,10 +17,10 @@ Rem Generate collect.wxs if %ERRORLEVEL% neq 0 exit %ERRORLEVEL% Rem Compile en-US (https://www.firegiant.com/wix/tutorial/transforms/morphing-installers/) -"%WIX%\bin\candle.exe" -dcodepage=1252 -dPlatform=%BuildArch% -arch %BuildArch% -dHarvestAppDir="%HarvestAppDir%" -ext WixUtilExtension NCMsiHelper.wxs WinShellExt.wxs collect.wxs Nextcloud.wxs RegistryCleanupCustomAction.wxs +"%WIX%\bin\candle.exe" -dcodepage=1252 -dPlatform=%BuildArch% -arch %BuildArch% -dHarvestAppDir="%HarvestAppDir%" -ext WixUtilExtension NCMsiHelper.wxs WinShellExt.wxs collect.wxs Ionos.wxs RegistryCleanupCustomAction.wxs if %ERRORLEVEL% neq 0 exit %ERRORLEVEL% Rem Link MSI package -"%WIX%\bin\light.exe" -sw1076 -ext WixUIExtension -ext WixUtilExtension -cultures:en-us NCMsiHelper.wixobj WinShellExt.wixobj collect.wixobj Nextcloud.wixobj RegistryCleanupCustomAction.wixobj -out "@MSI_INSTALLER_FILENAME@" +"%WIX%\bin\light.exe" -sw1076 -ext WixUIExtension -ext WixUtilExtension -cultures:en-us NCMsiHelper.wixobj WinShellExt.wixobj collect.wixobj Ionos.wixobj RegistryCleanupCustomAction.wixobj -out "@MSI_INSTALLER_FILENAME@" exit %ERRORLEVEL% From 59f21edc9070594140b3e7b3fa090ec1ba0d0215 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:33:03 +0100 Subject: [PATCH 019/104] add adr documentation --- doc/ADR/20241007_TrackingWithGA4.md | 31 +++++++++++++++++++++++++++++ doc/ADR/_template.md | 30 ++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 doc/ADR/20241007_TrackingWithGA4.md create mode 100644 doc/ADR/_template.md diff --git a/doc/ADR/20241007_TrackingWithGA4.md b/doc/ADR/20241007_TrackingWithGA4.md new file mode 100644 index 0000000000000..522a6f3c87c79 --- /dev/null +++ b/doc/ADR/20241007_TrackingWithGA4.md @@ -0,0 +1,31 @@ +# Use Tracking with Google Analytics 4 + +## Status + +proposed + +## Context + +The web front end already tracks user interactions with GA4. To track interactions in the client software as well, an implementation with GA should also be done here. + +## Decision + +Since the use of GA4 in desktop software and the use of the pure API are not natively supported, a reverse-engineered solution had to be used (see https://ga4mp.dev/#/), similar to the use of the GA4 Measurement Protocol, which, however, does not provide a complete replacement. + +This approach implements GA4 tracking based on HTTP POST requests. + +## Implementation Details + +The implementation consists of three classes: + +* GAnalyticsWorker +* GAnalytics +* DataCollectionWrapper + +The DataCollectionWrapper is the outermost layer and is used by the application to track actions and events. The DataCollectionWrapper provides enums for various tracking pages (areas of the application, such as GeneralSettings or UserSettings) and tracking elements (specific buttons, checkboxes, or similar items). +GAnalytics acts as an intermediary between the outer layer (DataCollectionWrapper) and the communication logic. Various variables are also set here. When a tracking call is made, it is forwarded to the GAnalyticsWorker, where it is queued. + +The GAnalyticsWorker contains a queue, a message loop, and a QNetworkAccessManager. At fixed intervals, the queue is checked for tracking calls, which are then sent to the GA4 interface. If multiple calls are present, the connection is kept alive until all tracking calls have been sent. + +## Consequences +This approach allows client-side tracking using GA4, bridging the gap between web and desktop tracking. The modular design simplifies maintenance by separating tracking logic from communication handling. Usage is straightforward; the application simply calls the DataCollectionWrapper at points where tracking should occur, ensuring that actions and events are recorded seamlessly. However, relying on a reverse-engineered solution introduces risks of future incompatibility with GA4 updates. Managing a queue and network connection adds complexity, and there might be latency when batching tracking calls. Overall, the solution balances functionality with maintainability but carries some technical risks. diff --git a/doc/ADR/_template.md b/doc/ADR/_template.md new file mode 100644 index 0000000000000..0f2aef85df5b5 --- /dev/null +++ b/doc/ADR/_template.md @@ -0,0 +1,30 @@ +# ADR template by Michael Nygard + +This is the template in [Documenting architecture decisions - Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions). +You can use [adr-tools](https://github.com/npryce/adr-tools) for managing the ADR files. + +We extended this Template with ```Implementation Details``` (optional) + +In each ADR file, write these sections: + +# Title + +## Status + +What is the status, such as proposed, accepted, rejected, deprecated, superseded, etc.? + +## Context + +What is the issue that we're seeing that is motivating this decision or change? + +## Decision + +What is the change that we're proposing and/or doing? + +## Implementation Details + +(Optional) How was this Decision implemented. I.e. Uml Diagrams, Code etc. + +## Consequences + +What becomes easier or more difficult to do because of this change? From 7c798ab46d1c10c0ae6bc7566cdbfefe440a259b Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:33:31 +0100 Subject: [PATCH 020/104] add components to resources --- resources.qrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources.qrc b/resources.qrc index f8599430d2d61..2e1abe7196291 100644 --- a/resources.qrc +++ b/resources.qrc @@ -74,5 +74,7 @@ src/gui/macOS/ui/FileProviderSyncStatus.qml src/gui/macOS/ui/FileProviderStorageInfo.qml src/gui/macOS/ui/FileProviderFastEnumerationSettings.qml + src/gui/SesComponents/SesErrorBox.qml + src/gui/SesComponents/SesTrayHeader.qml From 6ee58b9834da6a6a678e55e4156d4def57075694 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:34:31 +0100 Subject: [PATCH 021/104] add mac specific styles and shell extension changes --- cmake/modules/MacOSXBundleInfo.plist.in | 2 +- .../FileProviderExt/FileProviderExtension.swift | 2 +- .../Services/ClientCommunicationService.swift | 2 +- .../FileProviderExt/Services/FPUIExtensionService.swift | 2 +- .../FileProviderUIExt/DocumentActionViewController.swift | 2 +- .../MacOSX/NextcloudIntegration/FileProviderUIExt/Info.plist | 2 +- src/gui/macOS/fileproviderxpc_mac_utils.mm | 2 +- src/gui/macOS/ui/FileProviderEvictionDialog.qml | 3 +-- src/gui/macOS/ui/FileProviderFastEnumerationSettings.qml | 2 +- src/gui/macOS/ui/FileProviderFileDelegate.qml | 3 +-- src/gui/macOS/ui/FileProviderSettings.qml | 2 +- src/gui/macOS/ui/FileProviderStorageInfo.qml | 2 +- src/gui/macOS/ui/FileProviderSyncStatus.qml | 5 +++-- 13 files changed, 15 insertions(+), 16 deletions(-) diff --git a/cmake/modules/MacOSXBundleInfo.plist.in b/cmake/modules/MacOSXBundleInfo.plist.in index 0dffc284ad2b8..8327c22976671 100644 --- a/cmake/modules/MacOSXBundleInfo.plist.in +++ b/cmake/modules/MacOSXBundleInfo.plist.in @@ -29,7 +29,7 @@ CFBundleShortVersionString @MIRALL_VERSION_STRING@ NSHumanReadableCopyright - (C) 2014-2022 @APPLICATION_VENDOR_XML_ESCAPED@ + (C) 2014-2022 @APPLICATION_VENDOR@ NSSupportsAutomaticGraphicsSwitching NSRequiresAquaSystemAppearance diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift index 1223982037416..2394866c71c72 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift @@ -37,7 +37,7 @@ import OSLog return LocalSocketClient(socketPath: socketPath.path, lineProcessor: lineProcessor) }() - let urlSessionIdentifier = "com.nextcloud.session.upload.fileproviderext" + let urlSessionIdentifier = "com.ionos.hidrivenext.session.upload.fileproviderext" let urlSessionMaximumConnectionsPerHost = 5 lazy var urlSession: URLSession = { let configuration = URLSessionConfiguration.background(withIdentifier: urlSessionIdentifier) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Services/ClientCommunicationService.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Services/ClientCommunicationService.swift index 76a0f00ce267a..1624d68907b11 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Services/ClientCommunicationService.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Services/ClientCommunicationService.swift @@ -18,7 +18,7 @@ import OSLog class ClientCommunicationService: NSObject, NSFileProviderServiceSource, NSXPCListenerDelegate, ClientCommunicationProtocol { let listener = NSXPCListener.anonymous() - let serviceName = NSFileProviderServiceName("com.nextcloud.desktopclient.ClientCommunicationService") + let serviceName = NSFileProviderServiceName("com.ionos.hidrivenext.desktopclient.ClientCommunicationService") let fpExtension: FileProviderExtension init(fpExtension: FileProviderExtension) { diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Services/FPUIExtensionService.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Services/FPUIExtensionService.swift index 0c3e444a9abbc..446b5e9a64f7d 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Services/FPUIExtensionService.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/Services/FPUIExtensionService.swift @@ -9,7 +9,7 @@ import FileProvider import NextcloudKit let fpUiExtensionServiceName = NSFileProviderServiceName( - "com.nextcloud.desktopclient.FPUIExtensionService" + "com.ionos.hidrivenext.desktopclient.FPUIExtensionService" ) @objc protocol FPUIExtensionService { diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/DocumentActionViewController.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/DocumentActionViewController.swift index 96363e962b124..64948f13bf1ff 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/DocumentActionViewController.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/DocumentActionViewController.swift @@ -36,7 +36,7 @@ class DocumentActionViewController: FPUIActionExtensionViewController { ) { Logger.actionViewController.info("Preparing action: \(actionIdentifier, privacy: .public)") - if actionIdentifier == "com.nextcloud.desktopclient.FileProviderUIExt.ShareAction" { + if actionIdentifier == "com.ionos.hidrivenext.desktopclient.FileProviderUIExt.ShareAction" { prepare(childViewController: ShareViewController(itemIdentifiers)) } diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/Info.plist b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/Info.plist index 85f108b15fc96..e2a7f25d39a3b 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/Info.plist +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/Info.plist @@ -16,7 +16,7 @@ NSExtensionFileProviderActionActivationRule TRUEPREDICATE NSExtensionFileProviderActionIdentifier - com.nextcloud.desktopclient.FileProviderUIExt.ShareAction + com.ionos.hidrivenext.desktopclient.FileProviderUIExt.ShareAction NSExtensionFileProviderActionName Share options diff --git a/src/gui/macOS/fileproviderxpc_mac_utils.mm b/src/gui/macOS/fileproviderxpc_mac_utils.mm index eb385d1c42858..2451f7c9f3564 100644 --- a/src/gui/macOS/fileproviderxpc_mac_utils.mm +++ b/src/gui/macOS/fileproviderxpc_mac_utils.mm @@ -19,7 +19,7 @@ #include "gui/accountmanager.h" namespace { -const char *const clientCommunicationServiceName = "com.nextcloud.desktopclient.ClientCommunicationService"; +const char *const clientCommunicationServiceName = "com.ionos.hidrivenext.desktopclient.ClientCommunicationService"; NSString *const nsClientCommunicationServiceName = [NSString stringWithUTF8String:clientCommunicationServiceName]; } diff --git a/src/gui/macOS/ui/FileProviderEvictionDialog.qml b/src/gui/macOS/ui/FileProviderEvictionDialog.qml index 01db805c8bb53..aaa1b543b85ee 100644 --- a/src/gui/macOS/ui/FileProviderEvictionDialog.qml +++ b/src/gui/macOS/ui/FileProviderEvictionDialog.qml @@ -20,7 +20,7 @@ import Style 1.0 import "../../filedetails" import "../../tray" -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 ApplicationWindow { id: root @@ -56,7 +56,6 @@ ApplicationWindow { padding: Style.smallSpacing textColor: Style.ncTextColor textColorHovered: Style.ncHeaderTextColor - contentsFont.bold: true bgColor: Style.ncBlue text: qsTr("Reload") onClicked: reloadMaterialisedItems(accountUserIdAtHost) diff --git a/src/gui/macOS/ui/FileProviderFastEnumerationSettings.qml b/src/gui/macOS/ui/FileProviderFastEnumerationSettings.qml index ce94746298d5d..07eef6c02c9e2 100644 --- a/src/gui/macOS/ui/FileProviderFastEnumerationSettings.qml +++ b/src/gui/macOS/ui/FileProviderFastEnumerationSettings.qml @@ -20,7 +20,7 @@ import Style 1.0 import "../../filedetails" import "../../tray" -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 Column { id: root diff --git a/src/gui/macOS/ui/FileProviderFileDelegate.qml b/src/gui/macOS/ui/FileProviderFileDelegate.qml index d364a364c3744..5191e106879fd 100644 --- a/src/gui/macOS/ui/FileProviderFileDelegate.qml +++ b/src/gui/macOS/ui/FileProviderFileDelegate.qml @@ -20,7 +20,7 @@ import Style 1.0 import "../../filedetails" import "../../tray" -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 Item { id: root @@ -95,7 +95,6 @@ Item { text: qsTr("Delete") textColorHovered: Style.ncHeaderTextColor bgColor: Style.errorBoxBackgroundColor - contentsFont.bold: true onClicked: root.evictItem(root.identifier, root.domainIdentifier) } } diff --git a/src/gui/macOS/ui/FileProviderSettings.qml b/src/gui/macOS/ui/FileProviderSettings.qml index a4efa0a32eae9..32ad3bf8842a8 100644 --- a/src/gui/macOS/ui/FileProviderSettings.qml +++ b/src/gui/macOS/ui/FileProviderSettings.qml @@ -20,7 +20,7 @@ import Style 1.0 import "../../filedetails" import "../../tray" -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 Page { id: root diff --git a/src/gui/macOS/ui/FileProviderStorageInfo.qml b/src/gui/macOS/ui/FileProviderStorageInfo.qml index 2830309b30982..b0af30222e56c 100644 --- a/src/gui/macOS/ui/FileProviderStorageInfo.qml +++ b/src/gui/macOS/ui/FileProviderStorageInfo.qml @@ -20,7 +20,7 @@ import Style 1.0 import "../../filedetails" import "../../tray" -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 GridLayout { id: root diff --git a/src/gui/macOS/ui/FileProviderSyncStatus.qml b/src/gui/macOS/ui/FileProviderSyncStatus.qml index 11f093bbcd88b..4e3cceb6f2ac8 100644 --- a/src/gui/macOS/ui/FileProviderSyncStatus.qml +++ b/src/gui/macOS/ui/FileProviderSyncStatus.qml @@ -20,7 +20,7 @@ import Style 1.0 import "../../filedetails" import "../../tray" -import com.nextcloud.desktopclient 1.0 +import com.ionos.hidrivenext.desktopclient 1.0 GridLayout { id: root @@ -53,8 +53,9 @@ GridLayout { Layout.columnSpan: root.syncStatus.syncing ? 2 : 1 Layout.fillWidth: true font.bold: true - font.pointSize: Style.headerFontPtSize + font.pointSize: Style.sesFontPointSize text: root.syncStatus.syncing ? qsTr("Syncing") : qsTr("All synced!") + color: Style.sesDarkBlue } NCProgressBar { From 39c3f6130e00e3132ffdd4c5d4ef56796a0131ed Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:34:41 +0100 Subject: [PATCH 022/104] add mac build script --- admin/osx/ionos_macmaker/start.sh | 179 ++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 admin/osx/ionos_macmaker/start.sh diff --git a/admin/osx/ionos_macmaker/start.sh b/admin/osx/ionos_macmaker/start.sh new file mode 100644 index 0000000000000..0eb9d9d405852 --- /dev/null +++ b/admin/osx/ionos_macmaker/start.sh @@ -0,0 +1,179 @@ +#!/bin/bash + +# This script is used to build the Mac OS X version of the IONOS client. +set -xe + +# Parse the command line arguments +while getopts "b:s:ci" opt; do + case ${opt} in + b )BUILD_DIR=$OPTARG;; + s )CODE_SIGN_IDENTITY=$OPTARG ;; + c )CLEAN_REBUILD=true ;; + i )PACKAGE_INSTALLER=true ;; + \? ) + echo "Usage: start.sh [-b ] [-s ] [-c] [-i]" + exit 1 + ;; + esac +done + +# Set the deployment target +export MACOSX_DEPLOYMENT_TARGET=10.15 + +# Some variables +PRODUCT_NAME="HiDrive Next" +REPO_ROOT_DIR="../../.." +CRAFT_DIR=~/Craft64 +PRODUCT_DIR=$BUILD_DIR/product +BUILD_UPDATER=true +TEAM_IDENTIFIER="5TDLCVD243" + +# Check if the client is running and kill it +# This is necessary to avoid issues with replacement of the bundle file +if pgrep -x "$PRODUCT_NAME" >/dev/null; then + killall "$PRODUCT_NAME" +fi + +# Check if BUILD_DIR is set, so we don't accidentally delete the whole filesystem +if [ -z "$BUILD_DIR" ]; then + echo "Build dir not set. Add -b to the command." + exit 0 +fi + +# Check if BUILD_DIR exists. If not, create it. If so, clear it. +if [ ! -d $BUILD_DIR ]; then + mkdir -p $BUILD_DIR +else + if [ $CLEAN_REBUILD = true ]; then + rm -rf $BUILD_DIR/* + fi +fi + +# Check if Craft dir exists, if not exit +if [ ! -d $CRAFT_DIR ]; then + echo "Craft dir not found. Exiting." + exit 1 +fi + +# Load Sparkle +SPARKLE_DIR=$BUILD_DIR/sparkle +SPARKLE_DOWNLOAD_URI="https://github.com/sparkle-project/Sparkle/releases/download/1.27.3/Sparkle-1.27.3.tar.xz" + +if [ "$CLEAN_REBUILD" == "true" ] && [ "$BUILD_UPDATER" == "true" ]; then + mkdir -p $SPARKLE_DIR + wget $SPARKLE_DOWNLOAD_URI -O $SPARKLE_DIR/Sparkle.tar.xz + tar -xvf $SPARKLE_DIR/Sparkle.tar.xz -C $SPARKLE_DIR +fi + +# Build the client +cmake -S $REPO_ROOT_DIR/ -B $BUILD_DIR \ + -DQT_TRANSLATIONS_DIR=$REPO_ROOT_DIR/translations \ + -DCMAKE_INSTALL_PREFIX=$PRODUCT_DIR \ + -DBUILD_TESTING=OFF \ + -DBUILD_UPDATER=$(if [ $BUILD_UPDATER == true ]; then echo "ON"; else echo "OFF"; fi) \ + -DMIRALL_VERSION_BUILD=`date +%Y%m%d` \ + -DMIRALL_VERSION_SUFFIX=increment \ + -DBUILD_OWNCLOUD_OSX_BUNDLE=ON \ + -DCMAKE_OSX_ARCHITECTURES=x86_64 \ + -DBUILD_FILE_PROVIDER_MODULE=ON \ + -DCMAKE_PREFIX_PATH=$CRAFT_DIR \ + -DSPARKLE_LIBRARY=$SPARKLE_DIR/Sparkle.framework \ + -DSOCKETAPI_TEAM_IDENTIFIER_PREFIX="$TEAM_IDENTIFIER." \ + +make install -C $BUILD_DIR -j4 + +# --------------------------------------------------- +# Sign the client +# CODE_SIGN_IDENTITY="Developer ID Application: IONOS SE (5TDLCVD243)" + +# Check if CODE_SIGN_IDENTITY is set, if not exit +if [ -z "$CODE_SIGN_IDENTITY" ]; then + echo "Code sign identity not set. Exiting." + open $PRODUCT_DIR + exit 0 +fi + +PRODUCT_PATH=$PRODUCT_DIR/$PRODUCT_NAME.app + +recursive_sign(){ + local path="$1" + local extension="${path##*.}" + if [[ "$extension" == "dylib" || "$extension" == "framework" || "$extension" == "appex" ]]; then + echo "Signing directory: $path" + codesign -s "$2" --force --preserve-metadata=entitlements --verbose=4 --deep --options=runtime --timestamp "${path}" + fi +} + +export -f recursive_sign + +sign_folder_content(){ + local folder="$1" + local identity="$2" + local entitlements="$3" + codesign -s "$identity" --force $entitlements --verbose=4 --deep --options=runtime --timestamp "${folder}" +} + +export -f sign_folder_content + +CLIENT_CONTENTS_DIR=$PRODUCT_PATH/Contents +CLIENT_FRAMEWORKS_DIR=$CLIENT_CONTENTS_DIR/Frameworks +CLIENT_PLUGINS_DIR=$CLIENT_CONTENTS_DIR/PlugIns +CLIENT_RESOURCES_DIR=$CLIENT_CONTENTS_DIR/Resources + +find "$CLIENT_FRAMEWORKS_DIR" -print0 | xargs -0 -I {} bash -c 'recursive_sign "$@" "$CODE_SIGN_IDENTITY"' _ {} "$CODE_SIGN_IDENTITY" +find "$CLIENT_PLUGINS_DIR" -print0 | xargs -0 -I {} bash -c 'recursive_sign "$@" "$CODE_SIGN_IDENTITY"' _ {} "$CODE_SIGN_IDENTITY" +find "$CLIENT_RESOURCES_DIR" -print0 | xargs -0 -I {} bash -c 'recursive_sign "$@" "$CODE_SIGN_IDENTITY"' _ {} "$CODE_SIGN_IDENTITY" + +codesign -s "$CODE_SIGN_IDENTITY" --force --preserve-metadata=entitlements --verbose=4 --deep --options=runtime --timestamp "$PRODUCT_PATH" + +# Sign Sparkle +if [ $BUILD_UPDATER == true ]; then + SPARKLE_DIR=$CLIENT_FRAMEWORKS_DIR/Sparkle.framework + find "$SPARKLE_DIR/Resources/Autoupdate.app/Contents/MacOS" -mindepth 1 -print0 | xargs -0 -I {} bash -c 'sign_folder_content "$@" "$CODE_SIGN_IDENTITY"' _ {} "$CODE_SIGN_IDENTITY" + codesign -s "$CODE_SIGN_IDENTITY" --force --preserve-metadata=entitlements --verbose=4 --deep --options=runtime --timestamp "$SPARKLE_DIR/Sparkle" +fi + +# Sign the client +find "$CLIENT_CONTENTS_DIR/MacOS" -mindepth 1 -print0 | xargs -0 -I {} bash -c 'sign_folder_content "$@" "$CODE_SIGN_IDENTITY" "$entitlements" ' _ {} "$CODE_SIGN_IDENTITY" "--preserve-metadata=entitlements" + +# Validate that the key used for signing the binary matches the expected TeamIdentifier +# needed to pass the SocketApi through the sandbox for communication with virtual file system +if ! codesign -dv "$PRODUCT_PATH" 2>&1 | grep -q "TeamIdentifier=$TEAM_IDENTIFIER"; then + echo "TeamIdentifier does not match. Exiting." + exit 0 +fi + +# --------------------------------------------------- +# Installer + +# Build the installer, if enabled +if [ -z "$PACKAGE_INSTALLER" ]; then + echo "Installer packaging not enabled. Exiting." + open $PRODUCT_DIR + exit 0 +fi + +# package +$BUILD_DIR/admin/osx/create_mac.sh "$PRODUCT_DIR" "$BUILD_DIR" 'Developer ID Installer: IONOS SE (5TDLCVD243)' + +# notariaze +# Extract package filename from filesystem per .pkg extension +PACKAGE_FILENAME=$(ls $PRODUCT_DIR/*.pkg) + +# catch the output of the notarytool command +OUTPUT=$(xcrun notarytool submit --wait $PACKAGE_FILENAME\ + --keychain-profile "IONOS SE HiDrive Next") + +SUBMISSION_STATUS=$(echo $OUTPUT | grep -o 'status: [^ ]*' | cut -d ' ' -f 2) + +# Check if the notarization was successful +if [ $SUBMISSION_STATUS != "Accepted" ]; then + echo "Notarization failed. Exiting." + exit 1 +fi + +# staple +xcrun stapler staple $PACKAGE_FILENAME +xcrun stapler validate $PACKAGE_FILENAME + +open $PRODUCT_DIR From 2cc784d0bce02a1b7fd7e3dc2201d691e1f7f5e7 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:35:27 +0100 Subject: [PATCH 023/104] change windows ci script to manual trigger --- .github/workflows/windows-build-and-test.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/windows-build-and-test.yml b/.github/workflows/windows-build-and-test.yml index 03b9688497320..184f46d2fd5de 100644 --- a/.github/workflows/windows-build-and-test.yml +++ b/.github/workflows/windows-build-and-test.yml @@ -1,5 +1,10 @@ name: Windows Build and Test on: + workflow_dispatch: + # push: + # branches: + # - master + # - develop pull_request: types: [opened, synchronize, reopened] jobs: From 4d46c8c1fae12e7a1302fa82e0f1d844037b0d4d Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:35:46 +0100 Subject: [PATCH 024/104] add translations for spanish and french --- translations/client_es.ts | 2783 ++++++------ translations/client_fr.ts | 9002 ++++++++++++++++++++----------------- 2 files changed, 6230 insertions(+), 5555 deletions(-) diff --git a/translations/client_es.ts b/translations/client_es.ts index bc716a7b51dfc..0699ecbc5289c 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -1,13 +1,15 @@ - + + + ActivityItem - + Open %1 locally Abrir %1 localmente - + In %1 En %1 @@ -15,12 +17,12 @@ ActivityItemContent - + Open file details Abrir detalles del archivo - + Dismiss Descartar @@ -28,12 +30,12 @@ ActivityList - + Activity list Lista de actividad - + No activities yet Aún no hay actividades @@ -54,17 +56,17 @@ Avatar de la notificación de llamada - + Answer Talk call notification Aviso de llamada de Answer Talk - + Decline Rechazar - + Decline Talk call notification Rechazar la notificación de llamadas de Talk @@ -193,20 +195,10 @@ FileDetailsPage - + Dismiss Descartar - - - Activity - Actividad - - - - Sharing - Compartir - FileDetailsWindow @@ -229,7 +221,7 @@ Elementos materializados - + Reload Recargar @@ -237,12 +229,12 @@ FileProviderFastEnumerationSettings - + Enable fast sync Habilitar sincronización rápida - + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. La sincronización rápida sólo sincronizará los cambios en archivos y carpetas dentro de las carpetas que se han explorado. Esto puede incrementar significativamente la capacidad de respuesta en la configuración inicial de archivos virtuales. Sin embargo, esto provocará descargas redundantes de archivos movidos a carpetas inexploradas. @@ -268,22 +260,22 @@ Configuración general - + Enable virtual files Activar archivos virtuales - + Advanced Avanzado - + Signal file provider domain Dominio del proveedor de archivos de firmas - + Create debug archive Crear archivo de depuración @@ -322,31 +314,15 @@ FileSystem - + Error removing "%1": %2 Error al eliminar "%1": %2 - + Could not remove folder "%1" No se ha podido eliminar la carpeta "%1" - - - Could not make directories in trash - No se pueden crear carpetas en la papelera - - - - - Could not move "%1" to "%2" - No se ha podido mover "%1" a "%2" - - - - Moving to the trash is not implemented on this platform - Mover a la papelera no está implementado en esta plataforma - Flow2AuthWidget @@ -361,48 +337,60 @@ Logo - + Switch to your browser to connect your account Cambiar al navegador para conectar con tu cuenta - + An error occurred while connecting. Please try again. Se ha producido un error al conectarse. Por favor, inténtelo de nuevo. - - - FolderWizardSourcePage - - Pick a local folder on your computer to sync - Seleccione una carpeta local en su equipo para sincronizar + + Copy Link + Copiar Link - - &Choose … - &Seleccionar … + + Reopen Browser + Reabrir el navegador FolderWizardTargetPage - - Select a remote destination folder - Seleccionar una carpeta remota de destino - - - + Create folder Crear carpeta - + Refresh Actualizar - + + Add Folder Sync + + + + + Step 2 of 3: Directory in your %1 + + + + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + + + + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + + + + Folders Carpetas @@ -410,17 +398,17 @@ OCC::AbstractNetworkJob - + Connection timed out Tiempo de conexión agotado - + Unknown error: network reply was deleted Error desconocido: la respuesta de red fue eliminada - + Server replied "%1 %2" to "%3 %4" El servidor respondió "%1 %2" a "%3 %4" @@ -428,17 +416,17 @@ OCC::Account - + File %1 is already locked by %2. El archivo %1 ya está bloqueado por %2. - + Lock operation on %1 failed with error %2 La operación de bloqueo en %1 ha fallado con el error %2. - + Unlock operation on %1 failed with error %2 La operación de desbloqueo en %1 ha fallado con el error %2. @@ -446,51 +434,37 @@ OCC::AccountManager - - An existing configuration from a legacy desktop client was detected. -Should an account import be attempted? - Se ha detectado una configuración existente del cliente de escritorio antiguo. - -¿Se debe intentar importar la cuenta? - - - + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? %1 cuentas se detectaron con un cliente de escritorio antiguo. ¿Deben estas cuentas ser importadas? - + 1 account was detected from a legacy desktop client. Should the account be imported? 1 cuenta se detectó desde un cliente de escritorio antiguo. ¿Debe importarse esta cuenta? - - - + + Legacy import Importación antigua - + Import Importar - + Skip Saltar - - Successfully imported account from legacy client: %1 - Se ha importado satisfactoriamente desde el cliente antiguo la cuenta: %1 - - - + Could not import accounts from legacy client configuration. No se pudieron importar las cuentas desde la configuración del cliente antiguo. @@ -498,259 +472,267 @@ Should the account be imported? OCC::AccountSettings - + + Storage space: … Espacio de almacenamiento: ... - + + Expand Memory + + + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore Las carpetas no seleccionadas serán <b>eliminadas</b> de su carpeta local y ya no serán sincronizadas en este ordenador - - - + + + Cancel Cancelar - + Apply Aplicar - + Connected with <server> as <user> Conectado a <server> como <user> - + Synchronize all Sincronizar todo - + Synchronize none No sincronizar nada - + Apply manual changes Aplicar cambios manuales - + Standard file sync Sincronización de archivos estándar - + Virtual file sync Sincronización de archivos virtual - + End-to-end Encryption with Virtual Files Cifrado de extremo a extremo con Archivos Virtuales - + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". Parece que tienes la función de Archivos Virtuales activada en esta carpeta. Por el momento, no es posible descargar implícitamente los archivos virtuales que están cifrados de extremo a extremo. Para obtener la mejor experiencia con los archivos virtuales y el cifrado de extremo a extremo, asegúrate de que la carpeta cifrada está marcada con "Hacer que esté siempre disponible localmente". - + + Do not encrypt folder No cifrar carpeta - + + Encrypt folder Cifrar carpeta - + End-to-end Encryption Cifrado de extremo a extremo - + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> Esto cifrará su carpeta y todos los archivos contenidos en ella. Ya no se podrá acceder a estos archivos sin su clave de cifrado. <b>Este proceso no es reversible. ¿Seguro que quiere continuar?</b> - + No account configured. No se ha configurado ninguna cuenta. - + Disable encryption Deshabilitar cifrado - + Display mnemonic Mostrar regla mnemotécnica - + End-to-end encryption has been enabled for this account El cifrado de extremo a extremo a sido habilitado para esta cuenta - + Warning Aviso - + Please wait for the folder to sync before trying to encrypt it. Por favor, espere a que la carpeta se sincronice antes de intentar cifrarla. - + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully La carpeta tiene un pequeño problema de sincronización. El cifrado de esta carpeta será posible cuando se haya sincronizado correctamente. - + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully La carpeta tiene un problema de sincronización. El cifrado de esta carpeta será posible cuando se haya sincronizado correctamente. - + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. Would you like to set up end-to-end encryption? El cifrado de extremo a extremo no está configurado en este dispositivo. Una vez que esté configurado, podrás cifrar esta carpeta. ¿Deseas configurar el cifrado de extremo a extremo? - + You cannot encrypt a folder with contents, please remove the files. Wait for the new sync, then encrypt it. No puede cifrar una carpeta con contenidos, por favor, elimine los archivos. Espere a una nueva sincronización, luego cifrala. - + Encryption failed Ha fallado el cifrado - + Could not encrypt folder because the folder does not exist anymore No es posible cifrar la carpeta porque ya no existe - - + + Open folder Abrir carpeta - + Encrypt Cifrar - - + + Edit Ignored Files Editar archivos ignorados - - + + Create new folder Crear nueva carpeta - - + + Availability Disponibilidad - + Choose what to sync Elija qué sincronizar - + Force sync now Forzar la sincronización ahora - + Restart sync Reiniciar sync - + Resume sync Continuar sincronización - + Pause sync Pausar sincronización - + Remove folder sync connection Eliminar la sincronización de carpetas conectadas - + Disable virtual file support … Desactivar soporte para archivos virtuales … - + Enable virtual file support %1 … Activar soporte para archivos virtuales %1 ... - + (experimental) (experimental) - + Folder creation failed Ha fallado la creación de la carpeta - + <p>Could not create local folder <i>%1</i>.</p> <p>No pudo crear la carpeta local <i>%1</i>.</p> - + Confirm Folder Sync Connection Removal Confirme la sincronización para la eliminación de la carpeta conectada - + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> <p>¿De verdad quiere dejar de sincronizar la carpeta <i>%1</i>?</p><p><b>Nota:</b> Esto <b>no</b> elminará los archivo.</p> - + Remove Folder Sync Connection Eliminar carpeta de sincronización conectada - + Disable virtual file support? ¿Desactivar soporte para archivos virtuales? - + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. The only advantage of disabling virtual file support is that the selective sync feature will become available again. @@ -763,162 +745,162 @@ La única ventaja de deshabilitar el soporte de archivos virtuales es para la ca Además, esta acción interrumpirá cualquier sincronización en curso. - + Disable support Desactivar soporte - + End-to-end encryption mnemonic Mnemónico para cifrado de extremo a extremo - + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). Para proteger tu identidad criptográfica, la ciframos con una regla mnemotécnica de 12 palabras del diccionario. Por favor, anótalas y mantenlas a salvo. Estas palabras serán necesarias para añadir otros dispositivos a su cuenta (como un teléfono móvil o un portátil). - + Disable end-to-end encryption Deshabilitar cifrado de extremo a extremo - + Disable end-to-end encryption for %1? Deshabilitar cifrado de extremo a extremo para %1? - + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. Quitar el cifrado de extremo a extremo borrará los archivos sincronizados localmente que se encuentran encriptados.<br>Los archivos encriptados se mantendrán en el servidor. - + Sync Running Sincronización en curso - + The syncing operation is running.<br/>Do you want to terminate it? La sincronización está en curso.<br/>¿Desea interrumpirla? - + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. %1 (%3%) de %2 en uso. Algunas carpetas, como carpetas de red o compartidas, podrían tener límites diferentes. - + %1 of %2 in use %1 de %2 en uso - + + Storage space %1% occupied + + + + Currently there is no storage usage information available. Actualmente no hay información disponible sobre el uso de almacenamiento. - + %1 in use %1 en uso - + %1 as %2 %1 como %2 - + The server version %1 is unsupported! Proceed at your own risk. ¡La versión %1 del servidor no está soportada! Si continúas, lo haces bajo tu propio riesgo. - + Connected to %1. Conectado a %1. - + Server %1 is temporarily unavailable. Servidor %1 no está disponible temporalmente. - + Server %1 is currently in maintenance mode. El servidor %1 se encuentra en modo mantenimiento. - + Server %1 is currently being redirected, or your connection is behind a captive portal. El servidor %1 está siendo redirigido actualmente o tu conexión está detrás de un portal cautivo. - + Signed out from %1. Cerró sesión desde %1. - - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - Obteniendo autorización desde el navegador. <a href='%1'>Haga clic aquí</a> para re-abrir el navegador. - - - + Connecting to %1 … Conectando a %1 ... - - No connection to %1 at %2. - Sin conexión a %1 en %2. - - - + Unable to connect to %1. No es posible conectarse con %1. - + Server configuration error: %1 at %2. Error de configuración del servidor: %1 en %2, - + No %1 connection configured. No hay ninguna conexión de %1 configurada. - + + https://wl.hidrive.com/easy/0057 + + + + There are folders that were not synchronized because they are too big: Hay carpetas que no se han sincronizado porque son demasiado grandes: - + There are folders that were not synchronized because they are external storages: Hay carpetas que no se han sincronizado porque están en el almacenamiento externo: - + There are folders that were not synchronized because they are too big or external storages: Hay carpetas que no se han sincronizado porque son demasiado grandes o están en el almacenamiento externo: - + There are folders that have grown in size beyond %1MB: %2 Existen carpetas que han aumentado de tamaño más alla de %1MB: %2 - + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. El cifrado de extremo a extremo ha sido habilitado en esta cuenta con otro dispositivo.<br> puede ser habilitado en este dispositivo ingresando su mnemónico.<br> Esto habilitará la sincronización de las carpetas cifradas existentes - + This account supports end-to-end encryption Esta cuenta soporta cifrado punto a punto - + Set up encryption Configurar cifrado @@ -944,52 +926,52 @@ Además, esta acción interrumpirá cualquier sincronización en curso. OCC::AccountState - + Signed out Cerrar sesión - + Disconnected Desconectado - + Connected Conectado - + Service unavailable Servicio no disponible - + Maintenance mode Modo mantenimiento - + Redirect detected Redirección detectada - + Network error Error en la red - + Configuration error Error en la configuración - + Asking Credentials Solicitando credenciales - + Unknown account state Estado de cuenta desconocido @@ -997,22 +979,22 @@ Además, esta acción interrumpirá cualquier sincronización en curso. OCC::ActivityListModel - + For more activities please open the Activity app. Para más detalles, por favor, abre la app Actividades. - + Fetching activities … Actividades de búsqueda … - + Network error occurred: client will retry syncing. Ha ocurrido un error de red: el cliente reintentará la sincronización. - + Files from the ignore list as well as symbolic links are not synced. Los archivos de la lista de ignorados así como los enlace simbólicos no estarán sincronizados. @@ -1050,12 +1032,12 @@ Además, esta acción interrumpirá cualquier sincronización en curso.Usar encriptación pkcs12 es muy recomendable, puesto que una copia se guardará en el archivo de configuración. - + Select a certificate Seleccione un certificado - + Certificate files (*.p12 *.pfx) Archivos de certificado (*.p12 *.pfx) @@ -1063,71 +1045,71 @@ Además, esta acción interrumpirá cualquier sincronización en curso. OCC::Application - + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. Algunos ajustes fueron configurados en %1 versiones de este cliente y utilizan características que no están disponibles en esta versión.<br><br>Continuar implica <b>%2 estos ajustes</b>.<br><br>El archivo de configuración actual ya fue respaldado a <i>%3</i>. - + newer newer software version recientes - + older older software version antiguos - + ignoring ignorando - + deleting eliminando - + Quit Salir - + Continue Continuar - + %1 accounts number of accounts imported %1 cuentas - + 1 account 1 cuenta - + %1 folders number of folders imported %1 carpetas - + 1 folder 1 carpeta - + Legacy import Importación legada - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1135,17 +1117,17 @@ Además, esta acción interrumpirá cualquier sincronización en curso. - + Error accessing the configuration file Error al acceder al archivo de configuración - + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. Se ha producido un error al acceder al archivo de configuración en %1. Por favor, asegúrese de que su cuenta del sistema puede acceder al archivo. - + Quit %1 Salir %1 @@ -1215,32 +1197,32 @@ Además, esta acción interrumpirá cualquier sincronización en curso. - + Local file changed during sync. Un archivo local ha cambiado durante la sincronización. - + Network error: %1 Error de red: %1 - + Error updating metadata: %1 Error al actualizar los metadatos: %1 - + The file %1 is currently in use El archivo %1 se encuentra en uso - + The local file was removed during sync. El archivo local ha sido eliminado durante la sincronización. - + Restoration failed: %1 Fallo al restaurar: %1 @@ -1312,85 +1294,85 @@ Además, esta acción interrumpirá cualquier sincronización en curso. - + today hoy - + 0 byte 0 bytes - + Open existing file Abrir archivo existente - + Case clashing file Archivo con conflicto de capitalización - + file B Archivo B - - + + Open clashing file Abrir archivo con problema de capitalización - + Please enter a new name for the clashing file: Por favor ingrese un nombre nuevo para el archivo con el problema de capitalización: - + New filename Nuevo nombre de archivo - + Rename file Renombrar archivo - + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. El archivo "%1" no pudo ser sincronizado porque genera un conflicto de capitalización con un archivo que ya existe en este sistema. - + %1 does not support equal file names with only letter casing differences. %1 no soporta nombres de archivo idénticos con diferencias de capitalización de letras. - + Filename contains leading and trailing spaces. El nombre del archivo contiene espacios iniciales y finales. - + Filename contains leading spaces. El nombre del archivo contiene espacios al inicio. - + Filename contains trailing spaces. El nombre del archivo contiene espacios al final. - + Use invalid name Usar nombre inválido - + Filename contains illegal characters: %1 El nombre del archivo contiene caracteres ilegales: %1 @@ -1398,7 +1380,7 @@ Además, esta acción interrumpirá cualquier sincronización en curso. OCC::CleanupPollsJob - + Error writing metadata to the database Error al escribir los metadatos en la base de datos @@ -1406,12 +1388,12 @@ Además, esta acción interrumpirá cualquier sincronización en curso. OCC::ClientSideEncryption - + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> Por favor, introduzca su frase de cifrado de extremo a extremo:<br><br>Nombre de usuario: %2<br> Cuenta: %3<br> - + Enter E2E passphrase Introduce la frase de acceso E2E @@ -1425,7 +1407,7 @@ Además, esta acción interrumpirá cualquier sincronización en curso. - + Conflicting versions of %1. Versión conflictiva de %1. @@ -1473,33 +1455,33 @@ Además, esta acción interrumpirá cualquier sincronización en curso.<a href="%1">Abrir versión en servidor</a> - - + + Keep selected version Mantener la versión seleccionada - + Open local version Abrir la versión local - + Open server version Abrir la versión en servidor - + Keep both versions Mantener ambas versiones - + Keep local version Mantener versión local - + Keep server version Mantener la versión del servidor @@ -1541,32 +1523,32 @@ Además, esta acción interrumpirá cualquier sincronización en curso. OCC::ConnectionValidator - + No Nextcloud account configured La cuenta Nextcloud no está configurada - + Authentication error: Either username or password are wrong. Error de autenticación: El usuario o la contraseña son incorrectos - + Timeout Tiempo de espera superado - + The provided credentials are not correct Las credenciales proporcionadas no son correctas - + The configured server for this client is too old La configuración del servidor para este cliente es demasiado antigua - + Please update to the latest server and restart the client. Por favor, actualice a la última versión del servidor y reinicie el cliente. @@ -1579,12 +1561,12 @@ Además, esta acción interrumpirá cualquier sincronización en curso. OCC::DiscoveryPhase - + Error while canceling deletion of a file Error al cancelar la eliminación de un archivo - + Error while canceling deletion of %1 Error al cancelar la eliminación de %1 @@ -1592,42 +1574,47 @@ Además, esta acción interrumpirá cualquier sincronización en curso. OCC::DiscoverySingleDirectoryJob - - + + Server error: PROPFIND reply is not XML formatted! Error del servidor: ¡la respuesta de PROPFIND no tiene formato XML! - - + + Encrypted metadata setup error! ¡Hubo un error al configurar los metadatos cifrados! + + + Encrypted metadata setup error: initial signature from server is empty. + + OCC::DiscoverySingleLocalDirectoryJob - + Error while opening directory %1 Error al abrir el directorio %1 - + Directory not accessible on client, permission denied Directorio no accesible en el cliente, permiso denegado - + Directory not found: %1 Directorio no encontrado: %1 - + Filename encoding is not valid La codificación del nombre del archivo no es válida - + Error while reading directory %1 Error al leer el directorio %1 @@ -1645,7 +1632,7 @@ Además, esta acción interrumpirá cualquier sincronización en curso. - + Please try again. Por favor intente de nuevo. @@ -1662,12 +1649,12 @@ Además, esta acción interrumpirá cualquier sincronización en curso. - - - - - - + + + + + + Could not start editing locally. No se pudo iniciar la edición local. @@ -1698,60 +1685,60 @@ Además, esta acción interrumpirá cualquier sincronización en curso. - - + + An error occurred during data retrieval. Ocurrió un error mientras se recababan los datos. - - + + An error occurred trying to synchronise the file to edit locally. Ocurrió un error mientras se intentaba sincronizar el archivo para edición local. - + An error occurred during setup. Ocurrió un error mientras se hacía la configuración. - + Server error: PROPFIND reply is not XML formatted! Error del servidor: ¡la respuesta de PROPFIND no tiene formato XML! - + Could not find a remote file info for local editing. Make sure its path is valid. No fue posible encontrar la información del archivo remoto para edición local. Asegúrese de que la ruta es válida. - + Invalid local file path. Ruta al archivo local inválida. - + Could not open %1 No fue posible abrir %1 - + File %1 already locked. El archivo %1 ya está bloqueado. - - + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. El bloqueo se mantendrá por %1 minutos. Puede también desbloquear este archivo manualmente una vez que termine de editarlo. - + File %1 now locked. El archivo %1 ahora está bloqueado. - + File %1 could not be locked. El archivo %1 no pudo ser bloqueado. @@ -1759,7 +1746,7 @@ Además, esta acción interrumpirá cualquier sincronización en curso. OCC::EncryptFolderJob - + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. No se pueden generar los metadatos para el cifrado, desbloquea la carpeta. @@ -1807,43 +1794,64 @@ Esto podría ser un problema con tu librería OpenSSL %1 second(s) ago seconds elapsed since file last modified - Hace %1 segundo(s)Hace %1 segundo(s)Hace %1 segundo(s) + + Hace %1 segundo(s) + Hace %1 segundo(s) + %1 minute(s) ago minutes elapsed since file last modified - Hace %1 minuto(s)Hace %1 minuto(s)Hace %1 minuto(s) + + Hace %1 minuto(s) + Hace %1 minuto(s) + %1 hour(s) ago hours elapsed since file last modified - Hace %1 hora(s)Hace %1 hora(s)Hace %1 hora(s) + + Hace %1 hora(s) + Hace %1 hora(s) + %1 day(s) ago days elapsed since file last modified - Hace %1 día(s)Hace %1 día(s)Hace %1 día(s) + + Hace %1 día(s) + Hace %1 día(s) + %1 month(s) ago months elapsed since file last modified - Hace %1 mes(es)Hace %1 mes(es)Hace %1 mes(es) + + Hace %1 mes(es) + Hace %1 mes(es) + %1 year(s) ago years elapsed since file last modified - Hace %1 año(s)Hace %1 año(s)Hace %1 año(s) + + Hace %1 año(s) + Hace %1 año(s) + Locked by %1 - Expires in %2 minute(s) remaining time before lock expires - Bloqueado por %1 - Expira en %2 minuto(s)Bloqueado por %1 - Expira en %2 minuto(s)Bloqueado por %1 - Expira en %2 minuto(s) + + Bloqueado por %1 - Expira en %2 minuto(s) + Bloqueado por %1 - Expira en %2 minuto(s) + @@ -1886,37 +1894,48 @@ Esto podría ser un problema con tu librería OpenSSL OCC::Flow2AuthWidget - + Unable to open the Browser, please copy the link to your Browser. No se ha podido abrir el navegador, por favor copie el enlace en su navegador. - + + + Error + Error + + + Waiting for authorization Esperando autorización - + Polling for authorization Pidiendo autorización - + Starting authorization Iniciando autorización - + Link copied to clipboard. Enlace copiado al portapapeles. - - Reopen Browser - Reabrir el navegador + + Open Browser + - + + Switch to your browser to connect your account + Cambiar al navegador para conectar con tu cuenta + + + Copy Link Copiar Link @@ -1924,172 +1943,196 @@ Esto podría ser un problema con tu librería OpenSSL OCC::Folder - + Local folder %1 does not exist. La carpeta local %1 no existe. - + %1 should be a folder but is not. %1 debería ser una carpeta, pero no lo es. - + %1 is not readable. %1 es ilegible. - + %1 and %n other file(s) have been removed. - %1 y otro archivo han sido borrados.%1 y otros %n archivos han sido borrados.%1 y otros %n archivos han sido borrados. + + %1 y otro archivo han sido borrados. + %1 y otros %n archivos han sido borrados. + - + %1 has been removed. %1 names a file. %1 ha sido eliminado. - + %1 and %n other file(s) have been added. - %1 y %n otro(s) archivo(s) ha(n) sido añadido(s).%1 y %n otro(s) archivo(s) ha(n) sido añadido(s).%1 y %n otro(s) archivo(s) ha(n) sido añadido(s). + + %1 y %n otro(s) archivo(s) ha(n) sido añadido(s). + %1 y %n otro(s) archivo(s) ha(n) sido añadido(s). + - + %1 has been added. %1 names a file. %1 ha sido añadido. - + %1 and %n other file(s) have been updated. - %1 y otro archivo han sido actualizados.%1 y otros %n archivos han sido actualizados.%1 y otros %n archivos han sido actualizados. + + %1 y otro archivo han sido actualizados. + %1 y otros %n archivos han sido actualizados. + - + %1 has been updated. %1 names a file. %1 ha sido actualizado. - + %1 has been renamed to %2 and %n other file(s) have been renamed. - %1 ha sido renombrado a %2 y otro archivo ha sido renombrado.%1 ha sido renombrado a %2 y otros %n archivos han sido renombrado.%1 ha sido renombrado a %2 y otros %n archivos han sido renombrado. + + %1 ha sido renombrado a %2 y otro archivo ha sido renombrado. + %1 ha sido renombrado a %2 y otros %n archivos han sido renombrado. + - + %1 has been renamed to %2. %1 and %2 name files. %1 ha sido renombrado a %2. - + %1 has been moved to %2 and %n other file(s) have been moved. - %1 ha sido movido a %2 y otro archivo ha sido movido.%1 ha sido movido a %2 y otros %n archivos han sido movidos.%1 ha sido movido a %2 y otros %n archivos han sido movidos. + + %1 ha sido movido a %2 y otro archivo ha sido movido. + %1 ha sido movido a %2 y otros %n archivos han sido movidos. + - + %1 has been moved to %2. %1 ha sido movido a %2. - + %1 has and %n other file(s) have sync conflicts. - %1 y otro archivo han tenido conflictos al sincronizar.%1 y otros %n archivos han tenido conflictos al sincronizar.%1 y otros %n archivos han tenido conflictos al sincronizar. + + %1 y otro archivo han tenido conflictos al sincronizar. + %1 y otros %n archivos han tenido conflictos al sincronizar. + - + %1 has a sync conflict. Please check the conflict file! Conflicto al sincronizar %1. ¡Por favor compruebe el archivo! - + %1 and %n other file(s) could not be synced due to errors. See the log for details. - %1 y otro archivo no pudieron ser sincronizados debido a errores. Para más detalles vea el registro.%1 y otros %n archivos no se han podido sincronizar debido a errores. Para más detalles vea el registro.%1 y otros %n archivos no se han podido sincronizar debido a errores. Para más detalles vea el registro. + + %1 y otro archivo no pudieron ser sincronizados debido a errores. Para más detalles vea el registro. + %1 y otros %n archivos no se han podido sincronizar debido a errores. Para más detalles vea el registro. + - + %1 could not be synced due to an error. See the log for details. %1 no se ha podido sincronizar debido a un error. Para más detalles, vea el registro. - + %1 and %n other file(s) are currently locked. - %1 y otro %n archivo está actualmente bloqueado.%1 y otro(s) %n archivo(s) están bloqueados actualmente.%1 y otro(s) %n archivo(s) están bloqueados actualmente. + + %1 y otro %n archivo está actualmente bloqueado. + %1 y otro(s) %n archivo(s) están bloqueados actualmente. + - + %1 is currently locked. %1 está actualmente bloqueado. - + Sync Activity Actividad de la sincronización - + Could not read system exclude file No se ha podido leer el archivo de exclusión del sistema - + A new folder larger than %1 MB has been added: %2. Una carpeta mayor de %1 MB ha sido añadida: %2. - + A folder from an external storage has been added. Una carpeta de almacenamiento externo ha sido añadida. - + Please go in the settings to select it if you wish to download it. Por favor vaya a opciones a seleccionarlo si desea descargar esto. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Una carpeta ha sobrepasado el límite establecido de tamaño de %1MB: %2. %3 - + Keep syncing Continuar sincronización - + Stop syncing Detener sincronización - + The folder %1 has surpassed the set folder size limit of %2MB. La carpeta %1 ha sobrepasado el límite establecido de tamaño de %2MB. - + Would you like to stop syncing this folder? ¿Desea detener la sincronización de esta carpeta? - + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. Se ha creado la carpeta %1 pero se excluyó de la sincronización con anterioridad. Los datos en su interior no se sincronizarán. - + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. Se ha creado el archivo %1 pero se excluyó de la sincronización con anterioridad. No se sincronizará. - + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). @@ -2102,71 +2145,74 @@ Esto significa que el cliente de sincronización podría no subir inmediatamente %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" La descarga de archivo virtual ha fallado con código "%1" , estado "%2" y mensaje de error "%3" - - All files in the sync folder "%1" folder were deleted on the server. -These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. -If you decide to restore the files, they will be re-synced with the server if you have rights to do so. -If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Todos los archivos en la carpeta de sincronización "%1" han sido eliminados del servidor. -Esta eliminación se sincronizará con tu carpeta local, haciendo que esos archivos ya no estén disponibles a no ser que tengas derecho a restaurarlos. -Si decides restaurar los archivos, volverán a sincronizarse con el servidor si tienes derecho a hacer esto. -Si decides eliminar los archivos, ya no los tendrás disponibles, a no ser que seas el propietario. + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + - - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. -Are you sure you want to sync those actions with the server? -If this was an accident and you decide to keep your files, they will be re-synced from the server. - Todos los archivos en la carpeta de sincronización "%1" serán eliminados. -Esta eliminación será sincronizada con tu servidor, haciendo que esos archivos no estén disponibles a no ser que sean restaurados. -¿Estás seguro de que deseas sincronizar esta acción con el servidor? -Si esto ha sido un accidente, y decides mantener tus archivos, serán re-sincronizados desde el servidor. + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by downloading them from the server. + - - Remove All Files? - ¿Eliminar todos los archivos? + + Remove all files? + - - Remove all files - Eliminar todos los archivos + + Proceed with Deletion + - - Keep files - Mantener archivos + + Restore Files to Server + + + + + Restore Files from Server + OCC::FolderCreationDialog - + Create new folder Crear nueva carpeta - + Enter folder name Escriba el nombre de la carpeta - + Folder already exists Ya existe la carpeta - + + %1 Create new folder + + + + Error Error - + Could not create a folder! Check your write permissions. ¡No se pudo crear la carpeta! Comprueba los permisos de escritura. @@ -2174,107 +2220,108 @@ Si esto ha sido un accidente, y decides mantener tus archivos, serán re-sincron OCC::FolderMan - + Could not reset folder state No se ha podido restablecer el estado de la carpeta - + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. Se ha encontrado un registro de sincronización antiguo "%1", que no se ha podido eliminar. Por favor, asegúrese de que ninguna aplicación lo está utilizando en este momento. - + (backup) (copia de seguridad) - + (backup %1) (copia de seguridad %1) - + Undefined state. Estado no definido. - + Waiting to start syncing. Esperando para comenzar la sincronización. - + Preparing for sync. Preparándose para sincronizar. - + Sync is running. Sincronización en funcionamiento. - + Sync finished with unresolved conflicts. La sincronización finalizó pero con conflictos sin resolver. - + Last sync was successful. La última sincronización se ha realizado con éxito. - + Setup error. Error de configuración. - + Sync request was cancelled. La solicitud de sincronización fue cancelada. - + Sync is paused. La sincronización está en pausa. - + %1 (Sync is paused) %1 (Sincronización en pausa) - + No valid folder selected! ¡La carpeta seleccionada no es válida! - + The selected path does not exist! ¡La ruta seleccionada no existe! - + The selected path is not a folder! ¡La ruta seleccionada no es una carpeta! - + + You have no permission to write to the selected folder! ¡No tiene permiso para escribir en la carpeta seleccionada! - + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! El directorio local %1 ya contiene un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro. - + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! El directorio local %1 está dentro de un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro. - + There is already a sync from the server to this local folder. Please pick another local folder! Ya existe una tarea de sincronización entre el servidor y esta carpeta. Por favor elija otra carpeta local. @@ -2282,12 +2329,17 @@ Si esto ha sido un accidente, y decides mantener tus archivos, serán re-sincron OCC::FolderStatusDelegate - - Add Folder Sync Connection - Añadir conexión para el directorio de sincronización + + Add live backup + - + + Synchronize any other local folder with your %1 + + + + File Archivo @@ -2295,156 +2347,159 @@ Si esto ha sido un accidente, y decides mantener tus archivos, serán re-sincron OCC::FolderStatusModel - + You need to be connected to add a folder Necesita estar conectado para añadir una carpeta - + Click this button to add a folder to synchronize. Haga clic en este botón para añadir una carpeta a sincronizar - + Could not decrypt! ¡No fue posible desencriptar! - - + + %1 (%2) %1 (%2) - + Error while loading the list of folders from the server. Error mientras se cargaba la lista de carpetas desde el servidor. - + Fetching folder list from server … Obteniendo la lista de carpetas del servidor ... - + There are unresolved conflicts. Click for details. Hay conflictos sin resolver. Haz clic para más detalles. - + Virtual file support is enabled. El soporte para archivos virtuales está activado. - + Signed out Cerrar sesión - + Synchronizing VirtualFiles with local folder Sincronizando archivos virtuales con carpeta local - + Synchronizing with local folder Sincronizando con carpeta local - + Checking for changes in remote "%1" Buscando cambios en carpeta remota "%1" - + Checking for changes in local "%1" Buscando cambios en carpeta local "%1" - + Reconciling changes Reconciliando cambios - + Syncing %1 - Example text: "Syncing 'foo.txt', 'bar.txt'" + Example text: "Syncing 'foo.txt', 'bar.txt'" Sincronizando %1 - - + + , , - + download %1/s Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) descargando: %1/s - + ↓ %1/s ↓ %1/s - + upload %1/s Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) cargar %1/s - + ↑ %1/s ↑ %1/s - + %1 %2 (%3 of %4) Example text: "uploading foobar.png (2MB of 2MB)" %1 %2 (%3 de %4) - + %1 %2 Example text: "uploading foobar.png" %1 %2 - + A few seconds left, %1 of %2, file %3 of %4 Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" Quedan pocos segundos, %1 de %2, archivo %3 de %4 - + %5 left, %1 of %2, file %3 of %4 %5 restantes, %1 de %2, archivo %3 de %4 - + %1 of %2, file %3 of %4 Example text: "12 MB of 345 MB, file 6 of 7" %1 de %2, archivo %3 de %4 - + file %1 of %2 archivo %1 de %2 - + Waiting … Esperando ... - + Waiting for %n other folder(s) … - Esperando a otra %n carpeta ...Esperando a %n carpeta(s)…Esperando a %n carpeta(s)… + + Esperando a otra %n carpeta ... + Esperando a %n carpeta(s)… + - + Preparing to sync … Preparando la sincronización ... @@ -2452,7 +2507,7 @@ Si esto ha sido un accidente, y decides mantener tus archivos, serán re-sincron OCC::FolderWatcher - + The watcher did not receive a test notification. El vigilante no recibió una notificación de prueba. @@ -2468,12 +2523,12 @@ Si esto ha sido un accidente, y decides mantener tus archivos, serán re-sincron OCC::FolderWizard - + Add Folder Sync Connection Añadir conexión para el directorio de sincronización - + Add Sync Connection Añadir conexión de sincronización @@ -2481,12 +2536,12 @@ Si esto ha sido un accidente, y decides mantener tus archivos, serán re-sincron OCC::FolderWizardLocalPath - + Click to select a local folder to sync. Haga clic para seleccionar una carpeta local que sincronizar. - + Enter the path to the local folder. Introduzca la ubicación de la carpeta local. @@ -2495,122 +2550,164 @@ Si esto ha sido un accidente, y decides mantener tus archivos, serán re-sincron Select the source folder Seleccione la carpeta de origen + + + Add Folder Sync + + + + + Step 1 of 3: Select local folder + + + + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + + + + + Choose + + OCC::FolderWizardRemotePath - + Create Remote Folder Crear carpeta remota - + Enter the name of the new folder to be created below "%1": Introduce el nombre de la nueva carpeta que se creará debajo de "%1": - + Folder was successfully created on %1. La carpeta ha sido creada con éxito en %1. - + Authentication failed accessing %1 Fallo de autenticación al acceder a %1 - + Failed to create the folder on %1. Please check manually. Fallo al crear la carpeta %1. Por favor, revíselo manualmente. - + Failed to list a folder. Error: %1 Fallo al listar una carpeta. Error: %1 - + Choose this to sync the entire account Elija esto para sincronizar la cuenta entera - + This folder is already being synced. Esta carpeta ya se ha sincronizado. - + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. Ya ha sincronizado <i>%1</i>, el cual es la carpeta de <i>%2</i>. - + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. Ya estás sincronizando <i>%1</i>, que es una subcarpeta de <i>%2</i>. + + + Add Folder Sync + + + + + Step 2 of 3: Directory in your %1 + + + + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + + + + + Refresh + Actualizar + + + + Create folder + Crear carpeta + OCC::FolderWizardSelectiveSync - - + + Use virtual files instead of downloading content immediately %1 Usa archivos virtuales en vez de descargar el contenido inmediatamente %1 - - + + (experimental) (experimental) - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Los archivos virtuales no son compatibles con la carpeta raíz de la partición de Windows como carpeta local. Por favor, elija una subcarpeta válida bajo la letra de la unidad. + + Add Folder Sync + - - Virtual files are not available for the selected folder - Los archivos virtuales no están disponibles para la carpeta seleccionada + + Step 3 of 3: Selektive Synchronisation + - - - OCC::FormatWarningsWizardPage - - <b>Warning:</b> %1 - <b>Advertencia:</b> %1 + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Los archivos virtuales no son compatibles con la carpeta raíz de la partición de Windows como carpeta local. Por favor, elija una subcarpeta válida bajo la letra de la unidad. - - <b>Warning:</b> - <b>Advertencia:</b> + + Virtual files are not available for the selected folder + Los archivos virtuales no están disponibles para la carpeta seleccionada OCC::GETFileJob - + No E-Tag received from server, check Proxy/Gateway No se ha recibido ninguna E-Tag del servidor, revise el proxy/puerta de enlace - + We received a different E-Tag for resuming. Retrying next time. Se ha recibido una E-Tag distinta para reanudar. Se volverá a intentar. - + We received an unexpected download Content-Length. Hemos recibido una longitud inesperada de contenido de la descarga. - + Server returned wrong content-range El servidor ha devuelto un content-range erróneo - + Connection Timeout Tiempo de espera de conexión agotado @@ -2618,227 +2715,197 @@ Si esto ha sido un accidente, y decides mantener tus archivos, serán re-sincron OCC::GeneralSettings - + Advanced Avanzado - - - - About - Acerca de - - - - Ask for confirmation before synchronizing new folders larger than - Pedir confirmación antes de sincronizar carpetas nuevas mayores a - - - - Legal notice - Aviso legal - - - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB - - - - Use &Monochrome Icons - Usar iconos &monocromáticos - - - - &Launch on System Startup - &Ejecutar al iniciar el sistema - - - - Show Server &Notifications - Mostrar servidor y notificaciones - - Notify when synchronised folders grow larger than specified limit - Notificar cuando las carpetas sincronizadas aumenten su tamaño más allá del límite especificado + Updates + Actualizaciones - - Show Call Notifications - Mostrar notificaciones de llamadas + + Move removed files to trash + Mover archivos eliminados a la papelera - - Updates - Actualizaciones + + S&how crash reporter + M&ostrar el informe de fallos - - &Automatically check for Updates - &Comprobar actualizaciones automáticamente + + Edit &Ignored Files + Editar archivos &ignorados - - Automatically disable synchronisation of folders that overcome limit - Deshabilitar sincronización de manera automática para las carpetas que sobrepasen el límite + + + Create Debug Archive + Crear archivo de depuración - - &Channel - &Channel + + Desktop client x.x.x + Cliente de escritorio x.x.x - - Ask for confirmation before synchronizing external storages - Preguntar si se desea sincronizar carpetas de almacenamiento externo + + Update channel + Canal de actualización - - Move removed files to trash - Mover archivos eliminados a la papelera + + Ask for confirmation before + synchronizing new folders larger than + - - Show sync folders in &Explorer's navigation pane - Mostrar carpetas sincronizadas en el panel de navegación del &Explorador + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + - - S&how crash reporter - M&ostrar el informe de fallos + + Notify when synchronised folders grow + larger than specified limit + - - Edit &Ignored Files - Editar archivos &ignorados + + Automatically disable synchronisation of + folders that overcome limit + - - - Create Debug Archive - Crear archivo de depuración + + Ask for confirmation before synchronizing + external storages + - - &Check for Update now - &Comprobar ahora las actualizaciones + + Show sync folders in &Explorer's navigation + pane + - - Info - Información + + Data Protection + - - Ask for confirmation before synchronizing folders larger than - Preguntar si se desea sincronizar carpetas mayores de + + &Analysis data collection for needs-based design + - - Desktop client x.x.x - Cliente de escritorio x.x.x + + Privacy Policy + - - Update channel - Canal de actualización + + Open Source Software + - - + + stable stable - - + + beta beta - + &Restart && Update &Reiniciar && Actualizar - - Show sync folders in &Explorer's Navigation Pane - Mostrar carpetas sincronizadas en el panel de navegación del explorador + + More Information + - + &Automatically check for updates Comprobar &actualizaciones automáticamente - + Check Now Comprobar ahora - + Usage Documentation Documentación de uso - + Legal Notice Aviso Legal - + General Settings Ajustes generales - + For System Tray A la bandeja del sistema - + Use &monochrome icons Usar iconos &monocromáticos - + &Launch on system startup &Lanzar al iniciar el sistema - + Show server &notifications Mostrar &notificaciones del servidor - + Show call notifications Mostrar notificaciones de llamadas - + Server notifications that require attention. Notificaciones del servidor que requieren atención. - + Show call notification dialogs. Mostrar diálogos de notificación de llamadas. - + You cannot disable autostart because system-wide autostart is enabled. No puedes desactivar el inicio automático porque el inicio automático de todo el sistema está activado. - + Change update channel? ¿Cambiar el canal de actualización? - + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. @@ -2847,27 +2914,27 @@ Note that this selects only what pool upgrades are taken from, and that there ar Tenga en cuenta que esto sólo selecciona de qué grupo se tomarán las actualizaciones, y que no hay vuelta atrás: Por lo tanto volver del canal "beta" al canal "estable" normalmente no puede hacerse inmediatamente y significa esperar a una versión estable que sea más reciente que la versión beta instalada actualmente. - + Change update channel Cambiar canal de actualización - + Cancel Cancelar - + Zip Archives Archivos Zip - + Debug Archive Created Archivo de depuración creado - + Debug archive is created at %1 El archivo de depuración se ha creado en %1 @@ -2875,22 +2942,22 @@ Tenga en cuenta que esto sólo selecciona de qué grupo se tomarán las actualiz OCC::GetOrCreatePublicLinkShare - + Password for share required Se requiere contraseña para compartir - + Please enter a password for your link share: Por favor, introduce una contraseña para tu enlace compartido: - + Sharing error Error al compartir - + Could not retrieve or create the public link share. Error: %1 @@ -2902,22 +2969,22 @@ Tenga en cuenta que esto sólo selecciona de qué grupo se tomarán las actualiz OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> Por favor, introduzca la contraseña de %1:<br><br>Usuario: %2<br>Cuenta: %3<br> - + Reading from keychain failed with error: "%1" La lectura del keychain falló con el error "%1" - + Enter Password Introduzca la contraseña - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Haga clic aquí</a> para solicitar una contraseña de aplicación desde la interfaz web. @@ -2953,58 +3020,56 @@ Tenga en cuenta que esto sólo selecciona de qué grupo se tomarán las actualiz OCC::IgnoreListTableWidget - + Pattern Patrón - + Allow Deletion Permitir borrado - + Add Añadir - + Remove Eliminar - + Remove all Eliminar todos - - Files or folders matching a pattern will not be synchronized. + + Files or folders that match this pattern will not be synchronized. -Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Los archivos o carpetas que coincidan con un patrón no se sincronizarán. - -Los elementos que se permite su borrado se eliminarán si impiden que un directorio se elimine. Esto es útil para los metadatos. +Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. + - + Could not open file No se ha podido abrir el archivo - + Cannot write changes to "%1". No se pudo escribir los cambios a "%1". - - Add Ignore Pattern - Añadir patrón de ignorados + + Ignore Pattern + - - Add a new ignore pattern: - Añadir un nuevo patrón de archivos ignorados: + + Add New Ignore Pattern + @@ -3035,72 +3100,72 @@ Los elementos que se permite su borrado se eliminarán si impiden que un directo Nuevo nombre de archivo - + Rename file Renombrar archivo - + The file "%1" could not be synced because the name contains characters which are not allowed on this system. El archivo "%1" no pudo ser sincronizado porque el nombre contiene caracteres no permitidos en este sistema. - + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces Los siguientes caracteres no se permiten en el sistema: * " | & ? , ; : \ / ~ < > espacios de entrada/salida - + Checking rename permissions … Comprobando los permisos de renombramiento ... - + You don't have the permission to rename this file. Please ask the author of the file to rename it. No tienes permisos para renombrar este archivo. Por favor, dile al autor del archivo que lo renombre. - + Failed to fetch permissions with error %1 Fallo en la obtención de permisos con error %1 - + Filename contains leading and trailing spaces. El nombre del archivo contiene espacios iniciales y finales. - + Filename contains leading spaces. El nombre del archivo contiene espacios iniciales. - + Filename contains trailing spaces. El nombre del archivo contiene espacios finales. - + Use invalid name Nombre no válido - + Filename contains illegal characters: %1 El nombre del archivo contiene caracteres ilegales: %1 - + Could not rename file. Please make sure you are connected to the server. No se ha podido renombrar el archivo. Por favor, asegúrese de que está conectado al servidor. - + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. No se puede renombrar el archivo porque hay un archivo con el mismo nombre en el servidor. Por favor, elija otro nombre. - + Could not rename local file. %1 No se ha podido renombrar el archivo local. %1 @@ -3119,12 +3184,12 @@ Los elementos que se permite su borrado se eliminarán si impiden que un directo Cerrar - + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> <p>Bajo la Licencia Pública General de GNU (GPL) versión 2.0 o posterior.</p> @@ -3166,12 +3231,12 @@ Nótese que usar cualquier opción de toma de registros a través de línea de c OCC::Logger - + Error Error - + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> <nobr>El archivo "%1"<br/>no se puede abrir para escritura.<br/><br/>¡El archivo de registro <b>no se puede</b> guardar!</nobr> @@ -3227,112 +3292,102 @@ Nótese que usar cualquier opción de toma de registros a través de línea de c OCC::NetworkSettings - + Proxy Settings Configuración del proxy - - - No Proxy - Sin proxy - No proxy Sin proxy - + Use system proxy Usar proxy del sistema - - - Specify proxy manually as - Especificar manualmente un proxy como - Manually specify proxy Proxy especificado manualmente - + Host Servidor - + Proxy server requires authentication El servidor proxy requiere autenticación - + Note: proxy settings have no effects for accounts on localhost Nota: los ajustes de proxy no tienen efecto para cuentas en el sistema local. - + Download Bandwidth Velocidad de descarga - - + + No limit Ilimitado - - + + Limit to 3/4 of estimated bandwidth Limitar a 3/4 de la velocidad estimada - - + + Limit automatically Limitar automáticamente - - + + Limit to Limitar a - - + + KBytes/s KBytes/s - + Upload Bandwidth Velocidad de subida - + Hostname of proxy server Nombre del host para servidor proxy - + Username for proxy server Nombre de usuario para el servidor proxy - + Password for proxy server Contraseña para el servidor proxy - + HTTP(S) proxy Proxy HTTP(S) - + SOCKS5 proxy Proxy SOCKS5 @@ -3408,66 +3463,66 @@ Nótese que usar cualquier opción de toma de registros a través de línea de c OCC::OwncloudAdvancedSetupPage - + Connect Conectar - - + + Use &virtual files instead of downloading content immediately %1 Usa &archivos virtuales en vez de descargar el contenido inmediatamente %1 - - + + (experimental) (experimental) - + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. Los archivos virtuales no son compatibles con la carpeta raíz de la partición de Windows como carpeta local. Por favor, elija una subcarpeta válida bajo la letra de la unidad. - + %1 folder "%2" is synced to local folder "%3" %1 carpeta "%2" está sincronizada con la carpeta local "%3" - + Sync the folder "%1" Sincronizar la carpeta "%1" - + Warning: The local folder is not empty. Pick a resolution! Advertencia: La carpeta local no está vacía. ¡Elija una solución! - + %1 free space %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB %1 espacio libre - + Virtual files are not available for the selected folder Los archivos virtuales no están disponiblespara la carpeta seleccionada - + Local Sync Folder Carpeta local de sincronización - - + + (%1) (%1) - + There isn't enough free space in the local folder! ¡No hay suficiente espacio libre en la carpeta local! @@ -3500,7 +3555,7 @@ Nótese que usar cualquier opción de toma de registros a través de línea de c Configurar certificado TLS del cliente - + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> <html><head/><body><p>Fallo al conectar con la dirección del servidor seguro <em>%1</em>. ¿Cómo desea proceder?</p></body></html> @@ -3526,13 +3581,8 @@ Nótese que usar cualquier opción de toma de registros a través de línea de c OCC::OwncloudPropagator - - Error with the metadata. Getting unexpected metadata format. - Error con los metadatos. Se está obteniendo un formato inesperado de los metadatos. - - - - + + Impossible to get modification time for file in conflict %1 Es imposible leer la hora de modificación del archivo en conflicto %1 @@ -3551,12 +3601,12 @@ Nótese que usar cualquier opción de toma de registros a través de línea de c &Siguiente > - + Server address does not seem to be valid La dirección del servidor no es válida - + Could not load certificate. Maybe wrong password? No se ha podido guardar el certificado. ¿Quizás la contraseña sea incorrecta? @@ -3564,144 +3614,144 @@ Nótese que usar cualquier opción de toma de registros a través de línea de c OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Conectado con éxito a %1: versión %2 %3 (%4)</font><br/><br/> - + Invalid URL URL no válida. - + Failed to connect to %1 at %2:<br/>%3 Fallo al conectar %1 a %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Tiempo de espera agotado mientras se intentaba conectar a %1 en %2 - + Trying to connect to %1 at %2 … Intentando conectar a %1 desde %2 ... - + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. La petición autenticada al servidor ha sido redirigida a "%1". La URL es errónea, el servidor está mal configurado. - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Acceso denegado por el servidor. Para verificar que tiene acceso, <a href="%1">haga clic aquí</a> para acceder al servicio desde el navegador. - + There was an invalid response to an authenticated WebDAV request Ha habido una respuesta no válida a una solicitud autenticada de WebDAV - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> La carpeta de sincronización local %1 ya existe, configurándola para la sincronización.<br/><br/> - + Creating local sync folder %1 … Creando carpeta de sincronización local %1 ... - + OK OK - + failed. ha fallado. - + Could not create local folder %1 No se ha podido crear la carpeta local %1 - + No remote folder specified! ¡No se ha especificado ninguna carpeta remota! - + Error: %1 Error: %1 - + creating folder on Nextcloud: %1 Creando carpeta en Nextcloud: %1 - + Remote folder %1 created successfully. Carpeta remota %1 creado correctamente. - + The remote folder %1 already exists. Connecting it for syncing. La carpeta remota %1 ya existe. Conectándola para sincronizacion. - - + + The folder creation resulted in HTTP error code %1 La creación de la carpeta ha producido el código de error HTTP %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> ¡La creación de la carpeta remota ha fallado debido a que las credenciales proporcionadas son incorrectas!<br/>Por favor, vuelva atrás y compruebe sus credenciales</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">La creación de la carpeta remota ha fallado, probablemente porque las credenciales proporcionadas son incorrectas.</font><br/>Por favor, vuelva atrás y compruebe sus credenciales.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Creación %1 de carpeta remota ha fallado con el error <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Se ha configarado una conexión de sincronización desde %1 al directorio remoto %2 - + Successfully connected to %1! ¡Conectado con éxito a %1! - + Connection to %1 could not be established. Please check again. No se ha podido establecer la conexión con %1. Por favor, compruébelo de nuevo. - + Folder rename failed Error al renombrar la carpeta - + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. No se pudo eliminar y restaurar la carpeta porque ella o un archivo dentro de ella está abierto por otro programa. Por favor, cierre la carpeta o el archivo y pulsa en reintentar o cancelar la instalación. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Carpeta de sincronización local %1 creada con éxito</b></font> @@ -3709,27 +3759,27 @@ Nótese que usar cualquier opción de toma de registros a través de línea de c OCC::OwncloudWizard - + Add %1 account Añadir %1 cuenta - + Skip folders configuration Omitir la configuración de carpetas - + Cancel Cancelar - + Enable experimental feature? ¿Activar característica experimental? - + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. @@ -3746,12 +3796,12 @@ Cambiar a este modo interrumpirá cualquier sincronización en proceso. Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de cualquier tipo de problema que pueda surgir. - + Enable experimental placeholder mode Activar modo experimental de marcador de posición - + Stay safe Mantente a salvo @@ -3772,7 +3822,7 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PollJob - + Invalid JSON reply from the poll URL Respuesta JSON invalida de la poll URL @@ -3780,172 +3830,174 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::ProcessDirectoryJob - + Symbolic links are not supported in syncing. Los enlaces simbólicos no están soportados en la sincronización. - + File is listed on the ignore list. El archivo está en la lista de ignorados. - + File names ending with a period are not supported on this file system. Los nombres de archivo que terminan con un punto no son compatibles con este sistema de archivos. - + File names containing the character "%1" are not supported on this file system. Los nombres de archivo que contienen el carácter "%1" no son compatibles con este sistema de archivos. - + File name contains at least one invalid character El nombre del archivo contiene al menos un carácter no válido - + The file name is a reserved name on this file system. El nombre del archivo es una palabra reservada del sistema de archivos. - + Filename contains trailing spaces. El nombre del archivo contiene espacios finales. - + Filename contains leading spaces. El nombre del archivo contiene espacios iniciales. - + Filename contains leading and trailing spaces. El nombre del archivo contiene espacios iniciales y finales. - + Filename is too long. El nombre del archivo es demasiado largo. - + File/Folder is ignored because it's hidden. El archivo o carpeta es ignorado porque está oculto. - + Stat failed. Stat ha fallado. - + Conflict: Server version downloaded, local copy renamed and not uploaded. Conflicto: Versión del servidor descargada, la copia local ha sido renombrada pero no se ha podido subir. - + Case Clash Conflict: Server file downloaded and renamed to avoid clash. Conflicto de capitalización: Se descargó el archivo del servidor y se renombró para evitar el conflicto. - + The filename cannot be encoded on your file system. El nombre de archivo no se puede codificar en tu sistema de archivos. - + The filename is blacklisted on the server. El nombre del archivo está prohibido en el servidor. - + File has extension reserved for virtual files. El archivo tiene una extensión reservada para archivos virtuales. - + size tamaño - + permission permisos - + file id identificador de archivo - + Server reported no %1 El servidor informó de no %1 - + Cannot sync due to invalid modification time No se puede sincronizar debido a una hora de modificación no válida - + Could not upload file, because it is open in "%1". No es posible subir el archivo, porque está abierto en "%1". - + Error while deleting file record %1 from the database Error mientras se borraba el registro de archivo %1 de la base de datos - + Conflict when uploading a folder. It's going to get cleared! Se ha producido un conflicto al subir una carpeta. ¡Se eliminará! - + Conflict when uploading a file. It's going to get removed! Se ha producido un conflicto al subir un archivo. ¡Se eliminará! - + + Moved to invalid target, restoring Movido a un lugar no válido, restaurando - + Ignored because of the "choose what to sync" blacklist Ignorado porque se encuentra en la lista negra de «elija qué va a sincronizar» - + + Not allowed because you don't have permission to add subfolders to that folder No permitido porque no tienes permiso para añadir subcarpetas a esa carpeta. - + Not allowed because you don't have permission to add files in that folder No permitido porque no tienes permiso para añadir archivos a esa carpeta. - + Not allowed to upload this file because it is read-only on the server, restoring No está permitido subir este archivo porque es de solo lectura en el servidor, restaurando. - + Not allowed to remove, restoring No está permitido borrar, restaurando - + Error while reading the database Error mientras se leía la base de datos - + Server replied with an error while reading directory "%1" : %2 El servidor contestó con un error al leer el directorio "%1" : %2 @@ -3953,28 +4005,28 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PropagateDirectory - + could not delete file %1 from local DB no fue posible borrar el archivo %1 de la base de datos local - + Error updating metadata due to invalid modification time Error al actualizar los metadatos debido a una hora de modificación no válida - - + + The folder %1 cannot be made read-only: %2 La carpeta %1 no se puede hacer de sólo lectura: %2 - + Error updating metadata: %1 Error al actualizar los metadatos: %1 - + File is currently in use El archivo se encuentra en uso @@ -3982,75 +4034,75 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PropagateDownloadFile - + could not get file %1 from local DB no fue posible obtener el archivo %1 de la base de datos local - + File %1 cannot be downloaded because encryption information is missing. El archivo %1 no puede ser descargado porque falta la información de cifrado, - - + + File has changed since discovery El archivo ha cambiado desde que fue descubierto - - + + Could not delete file record %1 from local DB No fue posible borrar el registro del archivo %1 de la base de datos local - + File %1 can not be downloaded because of a local file name clash! ¡El archivo %1 no se puede descargar a causa de un conflicto con el nombre de un archivo local! - + The download would reduce free local disk space below the limit La descarga reducirá el espacio libre local por debajo del límite. - + Free space on disk is less than %1 El espacio libre en el disco es inferior a %1 - + File was deleted from server Se ha eliminado el archivo del servidor - + The file could not be downloaded completely. No se ha podido descargar el archivo completamente. - + The downloaded file is empty, but the server said it should have been %1. El archivo descargado está vacío, aunque el servidor dijo que debía ocupar %1. - - + + File %1 has invalid modified time reported by server. Do not save it. El servidor informa que el archivo %1 tiene una hora de modificación no válida. No lo guardes. - + File %1 downloaded but it resulted in a local file name clash! ¡El archivo %1 se descargó pero resultó en un conflicto con el nombre de un archivo local! - + Error updating metadata: %1 Error al actualizar los metadatos: %1 - + The file %1 is currently in use El archivo %1 se encuentra en uso @@ -4058,12 +4110,12 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PropagateItemJob - + ; Restoration Failed: %1 ; Fallo al restaurar: %1 - + A file or folder was removed from a read only share, but restoring failed: %1 Un archivo o directorio ha sido eliminado de una carpeta compartida de solo lectura pero la recuperación ha fallado: %1 @@ -4071,32 +4123,32 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PropagateLocalMkdir - + could not delete file %1, error: %2 no se ha podido borrar el archivo %1, error: %2 - + Folder %1 cannot be created because of a local file or folder name clash! ¡La carpeta %1 no se pudo crear a causa de un conflicto con el nombre de un archivo o carpeta local! - + Could not create folder %1 No se pudo crear la carpeta %1 - + The folder %1 cannot be made read-only: %2 La carpeta %1 no se puede hacer de sólo lectura: %2 - + Error updating metadata: %1 Error al actualizar los metadatos: %1 - + The file %1 is currently in use El archivo %1 se encuentra en uso @@ -4104,12 +4156,12 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PropagateLocalRemove - + Could not remove %1 because of a local file name clash No se ha podido eliminar %1 por causa de un conflicto con el nombre de un archivo local - + Could not delete file record %1 from local DB No fue posible borrar el registro del archivo %1 de la base de datos local @@ -4117,47 +4169,52 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PropagateLocalRename - + + Folder %1 cannot be renamed because of a local file or folder name clash! + + + + File %1 downloaded but it resulted in a local file name clash! ¡El archivo %1 se descargó pero resultó en un conflicto con el nombre de un archivo local! - - - + + + could not get file %1 from local DB no fue posible obtener el archivo %1 de la base de datos local - - + + Error setting pin state Error al configurar el estado fijado - - + + Error updating metadata: %1 Error al actualizar los metadatos: %1 - + The file %1 is currently in use El archivo %1 se encuentra en uso - - + + Could not delete file record %1 from local DB No fue posible borrar el registro del archivo %1 de la base de datos local - + Failed to propagate directory rename in hierarchy Fallo al propagar el renombrado de carpeta en la jerarquía - + Failed to rename file Fallo al renombrar el archivo @@ -4165,12 +4222,12 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PropagateRemoteDelete - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". El código HTTP devuelto por el servidor es erróneo. Se esperaba 204, pero se recibió "%1 %2". - + Could not delete file record %1 from local DB No fue posible borrar el registro del archivo %1 de la base de datos local @@ -4178,7 +4235,7 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PropagateRemoteDeleteEncryptedRootFolder - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". El código HTTP devuelto por el servidor es erróneo. Se esperaba 204, pero se recibió "%1 %2". @@ -4186,7 +4243,7 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". El código HTTP devuelto por el servidor es erróneo. Se esperaba 201, pero se recibió "%1 %2". @@ -4196,12 +4253,12 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c Fallo al cifrar una carpeta %1 - + Error writing metadata to the database: %1 Error al escribir los metadatos en la base de datos: %1 - + The file %1 is currently in use El archivo %1 se encuentra en uso @@ -4214,37 +4271,39 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c No se puede renombrar %1 a %2, error: %3 - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". El código HTTP devuelto por el servidor es erróneo. Esperado 201, pero recibido "%1 %2". - + could not get file %1 from local DB no fue posible obtener el archivo %1 de la base de datos local - + Could not delete file record %1 from local DB No fue posible borrar el registro del archivo %1 de la base de datos local - + + Error updating metadata: %1 Error al actualizar los metadatos: %1 - + + The file %1 is currently in use El archivo %1 se encuentra en uso - + Error setting pin state Error al configurar el estado fijado - + Error writing metadata to the database Error al escribir los metadatos en la base de datos @@ -4252,60 +4311,60 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PropagateUploadFileCommon - + Failed to upload encrypted file. Fallo al subir el archivo cifrado. - + File %1 cannot be uploaded because another file with the same name, differing only in case, exists El archivo %1 no se puede subir porque ya existe otro con el mismo nombre. Puede que sólo haya diferencias de mayúsculas/minúsculas - - + + Upload of %1 exceeds the quota for the folder La subida %1 excede el límite de tamaño de la carpeta - - - + + + File %1 has invalid modification time. Do not upload to the server. El archivo %1 tiene una hora de modificación no válida. No subir al servidor. - + File Removed (start upload) %1 Archivo eliminado (comenzar subida) %1 - + Local file changed during syncing. It will be resumed. Un archivo local ha cambiado durante la sincronización. Se reanudará. - + Local file changed during sync. Un archivo local ha sido modificado durante la sincronización. - + Failed to unlock encrypted folder. Fallo al desbloquear la carpeta cifrada. - + Unable to upload an item with invalid characters No se puede subir un elemento con caracteres no válidos - + Error updating metadata: %1 Error al actualizar los metadatos: %1 - + The file %1 is currently in use El archivo %1 se encuentra en uso @@ -4313,32 +4372,32 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PropagateUploadFileNG - + The local file was removed during sync. El archivo local ha sido eliminado durante la sincronización. - + Local file changed during sync. Un archivo local fue modificado durante la sincronización. - + Poll URL missing Falta la URL de la encuesta - + Unexpected return code from server (%1) Respuesta inesperada del servidor (%1) - + Missing File ID from server ID perdido del archivo del servidor - + Missing ETag from server Perdido ETag del servidor @@ -4346,22 +4405,22 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::PropagateUploadFileV1 - + Poll URL missing Falta la URL de la encuesta - + The local file was removed during sync. El archivo local ha sido eliminado durante la sincronización. - + Local file changed during sync. Un archivo local ha sido modificado durante la sincronización. - + The server did not acknowledge the last chunk. (No e-tag was present) El servidor no ha reconocido la última parte. (No había una e-tag presente) @@ -4397,7 +4456,7 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::SelectiveSyncDialog - + Choose What to Sync Escoja qué sincronizar @@ -4405,33 +4464,33 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::SelectiveSyncWidget - + Loading … Cargando ... - + Deselect remote folders you do not wish to synchronize. Deseleccione las carpetas remotas que no desea sincronizar. - + Name Nombre - + Size Tamaño - - + + No subfolders currently on the server. No hay subcarpetas actualmente en el servidor. - + An error occurred while loading the list of sub folders. Se ha producido un error al cargar la lista de carpetas. @@ -4443,11 +4502,6 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c Reply Responder - - - Dismiss - Descartar - OCC::SettingsDialog @@ -4457,23 +4511,23 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c Ajustes - + %1 Settings This name refers to the application name e.g Nextcloud %1 Configuración - - General - General + + New Account + - - Network - Red + + General + General - + Account Cuenta @@ -4489,40 +4543,35 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::ShareModel - + Secure file drop link Enlace para entrega de archivos segura - + Share link Compartir enlace - + Link share Compartición de enlace - + Internal link Enlace interno - + Secure file drop Entrega de archivos segura - + Could not find local folder for %1 No se ha podido encontrar una carpeta local para %1 - - - Enter a note for the recipient - Ingrese una nota para el destinatario - OCC::ShareeModel @@ -4552,22 +4601,22 @@ Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de c OCC::SocketApi - + Failed to encrypt folder at "%1" No se pudo cifrar carpeta en "%1" - + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. La cuenta %1 no tiene el cifrado de extremo a extremo configurado. Por favor configure esto en sus opciones de cuenta para habilitar el cifrado de carpetas. - + Failed to encrypt folder Fallo al cifrar la carpeta - + Could not encrypt the following folder: "%1". Server replied with error: %2 @@ -4576,151 +4625,154 @@ Server replied with error: %2 El servidor respondió con el error: %2 - + Folder encrypted successfully Se cifró la carpeta exitosamente - + The following folder was encrypted successfully: "%1" La siguiente carpeta se cifró con éxito: "%1" - + Context menu share Compartir en menú contextual - + Select new location … Seleccione nueva ubicación … - + I shared something with you He compartido algo contigo - - + + Share options Opciones de compartir - - + + Activity Actividad - + Copy private link to clipboard Copiar enlace privado al portapapeles - + Send private link by email … Enviar enlace privado por correo electrónico ... - + Leave this share Salir de este compartido - + Resharing this file is not allowed No está permitido compartir de nuevo - + Resharing this folder is not allowed No está permitido compartir de nuevo esta carpeta - + Copy secure file drop link Copiar enlace para entrega de archivos segura - - + + Copy public link Copiar enlace público - + Copy secure filedrop link Copiar enlace para entrega de archivos segura - + Copy internal link Copiar enlace interno - + Encrypt Cifrar - + Lock file Bloquear archivo - + Unlock file Desbloquear archivo - + Locked by %1 Bloqueado por %1 - + Expires in %1 minutes remaining time before lock expires - Expira en %1 minutoExpira en %1 minutosExpira en %1 minutos + + Expira en %1 minuto + Expira en %1 minutos + - + Edit Editar - + Open in browser Abrir en navegador - + Resolve conflict … Resolver conflicto … - + Move and rename … Mover y renombrar … - + Move, rename and upload … Mover, renombrar y subir … - + Delete local changes Borra cambios en local - + Move and upload … Mover y subir … - + Delete Eliminar @@ -4948,63 +5000,63 @@ El servidor respondió con el error: %2 No se pudo actualizar el archivo: %1 - + Could not update virtual file metadata: %1 No se ha podido actualizar los metadatos del archivo virtual: %1 - + Could not update file metadata: %1 No se pudo actualizar los metadatos del archivo: %1 - + Could not set file record to local DB: %1 No fue posible establecer el registro del archivo a la base de datos local: %1 - + Unresolved conflict. Conflicto sin resolver. - + Only %1 are available, need at least %2 to start Placeholders are postfixed with file sizes using Utility::octetsToString() Solo %1 disponible, se necesita por lo menos %2 para comenzar - + Unable to open or create the local sync database. Make sure you have write access in the sync folder. Imposible abrir o crear la BBDD local de sync. Asegurese de que tiene permisos de escritura en la carpeta de sync. - + Using virtual files with suffix, but suffix is not set Usando archivos virtuales con sufijo, pero el sufijo no está establecido - + Unable to read the blacklist from the local database No se pudo leer la lista de bloqueo de la base de datos local - + Unable to read from the sync journal. No se ha podido leer desde el registro de sincronización - + Cannot open the sync journal No es posible abrir el diario de sincronización - + Disk space is low: Downloads that would reduce free space below %1 were skipped. Poco espacio libre en disco: La descarga lo reducirá por debajo del %1, deberia abortar. - + There is insufficient space available on the server for some uploads. No hay suficiente espacio libre en el servidor para algunas subidas. @@ -5012,25 +5064,25 @@ El servidor respondió con el error: %2 OCC::SyncStatusSummary - - + + Offline No conectado - - - + + + All synced! ¡Todo está sincronizado! - + Some files couldn't be synced! ¡Algunos archivos no han podido ser sincronizados! - + See below for errors Comprueba abajo los errores @@ -5040,37 +5092,38 @@ El servidor respondió con el error: %2 Preparando sincronización - + + Syncing Sincronizando - + Sync paused Sincronización pausada - + Some files could not be synced! ¡Algunos archivos no pueden ser sincronizados! - + See below for warnings Comprueba abajo los avisos - + %1 of %2 · %3 left %1 de %2 · quedan %3 - + %1 of %2 %1 de %2 - + Syncing file %1 of %2 Sincronizando archivo %1 de %2 @@ -5078,59 +5131,59 @@ El servidor respondió con el error: %2 OCC::Systray - + Download Descargar - + Add account Agregar cuenta - + Open main dialog Abrir diálogo principal - - + + Pause sync Pausar sincronización - - + + Resume sync Continuar sincronización - + Settings Ajustes - + Help Ayuda - + Exit %1 Salir %1 - + Pause sync for all Pausar sincronización para todo - + Resume sync for all Continuar sincronización a todos - + %1: %2 %1: %2 @@ -5138,36 +5191,29 @@ El servidor respondió con el error: %2 OCC::Theme - + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 Cliente de Escritorio</p><p>Versión %1. Para más información, por favor pulsa <a href='%2'>aquí</a>.</p> - - <p>%1 Desktop Client</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 - Cliente de escritorio</p> - - - + <p><small>Using virtual files plugin: %1</small></p> <p><small>Usando el plugin de archivos virtuales: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 cliente de escritorio %2</p> - - + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> <p>Versión %1. Para obtener más información, haga clic <a href='%2'> aquí </a>.</p> - + <p>This release was supplied by %1.</p> <p>Esta versión ha sido suministrada por %1.</p> @@ -5240,8 +5286,8 @@ El servidor respondió con el error: %2 - Could not add or remove a folder user %1, for folder %2 - No se ha podido añadir o eliminar al usuario de la carpeta %1, para la carpeta %2 + Could not add or remove user %1 to access folder %2 + @@ -5252,13 +5298,18 @@ El servidor respondió con el error: %2 OCC::User - + + %1 notifications + + + + Retry all uploads Reintentar todas las subidas - - + + Resolve conflict Resolver conflicto @@ -5266,22 +5317,22 @@ El servidor respondió con el error: %2 OCC::UserModel - + Confirm Account Removal Confirma la eliminación de cuenta - + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> <p>¿De verdad quieres eliminar la conexión con la cuenta <i>%1</i>?</p><p><b>Aviso:</b> Esto <b>no eliminará</b> ningún archivo.</p> - + Remove connection Eliminar vinculación - + Cancel Cancelar @@ -5433,7 +5484,7 @@ El servidor respondió con el error: %2 OCC::VfsSuffix - + Error updating metadata due to invalid modification time Error al actualizar los metadatos debido a una fecha de modificación no válida. @@ -5442,7 +5493,7 @@ El servidor respondió con el error: %2 OCC::VfsXAttr - + Error updating metadata due to invalid modification time Error al actualizar los metadatos debido a una fecha de modificación no válida. @@ -5460,19 +5511,6 @@ El servidor respondió con el error: %2 El host "%1" ha entregado un certificado no válido. ¿Continuar? - - OCC::WebFlowCredentials - - - You have been logged out of your account %1 at %2. Please login again. - Ha sido cerrada la sesión de %1 como usuario %2. Por favor, inicie sesión de nuevo. - - - - Please login with the account: %1 - Por favor, entra con el usuario: %1 - - OCC::WelcomePage @@ -5481,37 +5519,22 @@ El servidor respondió con el error: %2 Formulario - + Log in Entrar - + Sign up with provider Registrarse con un proveedor - + Keep your data secure and under your control Mantén tus datos seguros y bajo tu control - - Secure collaboration & file exchange - Colaboración segura e intercambio de archivos - - - - Easy-to-use web mail, calendaring & contacts - Correo web, calendario y contactos fáciles de usar - - - - Screensharing, online meetings & web conferences - Compartir pantalla, reuniones online y conferencias web - - - + Host your own server Aloja tu propio servidor @@ -5519,123 +5542,123 @@ El servidor respondió con el error: %2 OCC::ownCloudGui - + Unsupported Server Version Versión del servidor no soportada - + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. El servidor en la cuenta %1 usa una versión no soportada %2. El uso de este cliente con versiones de servidor no soportadas no ha sido probado y es potencialmente peligroso. Continúa bajo tu propio riesgo. - + Disconnected Desconectado - + Disconnected from some accounts Desconectado desde varias cuentas - + Disconnected from %1 Desconectado de %1 - + Disconnected from accounts: Desconectado desde cuentas: - + Account %1: %2 Cuenta %1: %2 - + Please sign in Por favor, inicie sesión - + Signed out Cerrar sesión - + Account synchronization is disabled La sincronización está deshabilitada - - + + Synchronization is paused La sincronización se ha detenido - + Folder %1: %2 Archivo %1: %2 - + Unresolved conflicts Conflictos sin resolver - + Up to date Actualizado - + Error during synchronization Error durante la sincronización - + There are no sync folders configured. No hay carpetas configuradas para sincronizar. - + No sync folders configured No hay carpetas sincronizado configuradas - + Checking for changes in remote "%1" Buscando cambios en carpeta remota "%1" - + Checking for changes in local "%1" Buscando cambios en carpeta local "%1" - + Syncing %1 of %2 (%3 left) Sincronizando %1 de %2 (quedan %3) - + Syncing %1 of %2 Sincronizando %1 de %2 - + Syncing %1 (%2 left) Sincronizando %1 (quedan %2) - + Syncing %1 Sincronizando %1 - + %1 (%2, %3) %1 (%2, %3) @@ -5643,73 +5666,79 @@ El servidor respondió con el error: %2 OwncloudAdvancedSetupPage - + &Local Folder Carpeta &local - + Username Usuario - + Local Folder Carpeta Local - + Choose different folder Elegir una carpeta distinta - + Server address Nombre del servidor - + Sync Logo Sync Logo - + Synchronize everything from server Sincronizar todo desde el servidor - + Ask before syncing folders larger than Preguntar antes sincronizar carpetas mayores de - - MB + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" - MB + + + + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + + - + Ask before syncing external storages Preguntar antes sincronizar almacenamientos externos - + Choose what to sync Elija qué sincronizar - + Keep local data Mantener datos locales - - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Si esta casilla está marcada, el contenido existente en el directorio local será eliminado para comenzar una sincronización limpia desde el servidor.</p><p>No marque esta casilla si el contenido local debería subirse al directorio del servidor.</p></body></html> - - - + Erase local folder and start a clean sync Borrar carpeta local e iniciar una sincronización limpia @@ -5735,11 +5764,6 @@ El servidor respondió con el error: %2 TextLabel TextLabel - - - Logo - Logo - Server address @@ -5754,71 +5778,80 @@ El servidor respondió con el error: %2 QObject - + New folder Nueva carpeta - + You renamed %1 Has renombrado %1 - + You deleted %1 Has borrado %1 - + You created %1 Has creado %1 - + You changed %1 Has cambiado %1 - + Synced %1 Sincronizado %1 - + %nd delay in days after an activity - %nd%nd%nd + + %nd + %nd + - + in the future en el futuro - + %nh delay in hours after an activity - %nh%nh%nh + + %nh + %nh + - + now ahora - + 1m one minute after activity date and time 1min - + %nm delay in minutes after an activity - %nmin%nmin%nmin + + %nmin + %nmin + - + Some time ago Hace tiempo @@ -5833,6 +5866,21 @@ El servidor respondió con el error: %2 Paths beginning with '#' character are not supported in VFS mode. Las rutas que empiecen con el carácter '#' no son compatibles con el modo VFS. + + + Failed to create debug archive + + + + + Could not create debug archive in selected location! + + + + + The directory %1 cannot be part of your sync directory. Please choose another folder. + + ResolveConflictsDialog @@ -5845,7 +5893,10 @@ El servidor respondió con el error: %2 %1 files in conflict indicate the number of conflicts to resolve - %1 archivo en conflicto%1 archivos en conflicto%1 archivos en conflicto + + %1 archivo en conflicto + %1 archivos en conflicto + @@ -5853,22 +5904,22 @@ El servidor respondió con el error: %2 Escoja si quiere mantener la versión local, la versión del servidor, o ambas. Si escoge ambas, se le añadirá un número al nombre del archivo local. - + All local versions Todas las versiones locales - + All server versions Todas las versiones del servidor - + Resolve conflicts Resolver conflictos - + Cancel Cancelar @@ -5876,22 +5927,22 @@ El servidor respondió con el error: %2 ShareDelegate - + Create a new share link Crear un nuevo enlace de recurso compartido - + Copy share link location Copiar dirección del recurso compartido - + Copied! ¡Copiado! - + Share options Opciones del recurso compartido @@ -5899,83 +5950,83 @@ El servidor respondió con el error: %2 ShareDetailsPage - + An error occurred setting the share password. Ocurrió un error al establecer la contraseña del recurso compartido - - Edit share - Editar recurso compartido - - - + Dismiss Descartar - - Share label - Etiqueta del recurso compartido - - - - + + Allow upload and editing Permitir la subida y edición - + + Custom Permissions + + + + View only Solo lectura - + File drop (upload only) Soltar archivo (solo carga) - + Allow resharing Permitir que los otros compartan - + Hide download Ocultar descarga - + Password protect Proteger con contraseña - + Set expiration date Fijar fecha de caducidad - + Note to recipient Nota para el destinatario - + + Enter the note to recipient + + + + Unshare Dejar de compartir - + Add another link Añadir otro enlace - + Share link copied! ¡Enlace compartido copiado! - + Copy share link Copiar enlace de recurso compartido @@ -5983,27 +6034,27 @@ El servidor respondió con el error: %2 ShareView - + Password required for new share Se requiere una contraseña para la nueva compartición - + Share password Contraseña de la compartición - + Sharing is disabled Compartir está deshabilitado - + This item cannot be shared. Este ítem no puede ser compartido. - + Sharing is disabled. Compartir está deshabilitado. @@ -6011,7 +6062,7 @@ El servidor respondió con el error: %2 ShareeSearchField - + Search for users or groups… Buscar usuarios o grupos... @@ -6021,23 +6072,15 @@ El servidor respondió con el error: %2 Compartir no está disponible para esta carpeta - - SyncJournalDb - - - Failed to connect database. - Fallo en la conexión a la base de datos. - - SyncStatus - + Sync now Sincronizar ahora - + Resolve conflicts Resolver conflictos @@ -6058,47 +6101,47 @@ El servidor respondió con el error: %2 TrayFoldersMenuButton - + + Files + + + + Open local or group folders Abrir carpetas locales de de grupo - + Open local folder Abrir carpeta local - + Connected Conectado - + Disconnected Desconectado - - Group folder button - Botón de carpeta de grupo - - - + Open local folder "%1" Abrir carpeta local "%1" - + Open group folder "%1" Abrir carpeta de grupo "%1" - + Open %1 in file explorer Abrir "%1" en el explorador de archivos - + User group and local folders menu Menú de usuario de carpetas de grupo o locales @@ -6154,44 +6197,34 @@ El servidor respondió con el error: %2 UserLine - + Switch to account Cambiar a la cuenta - - Current account status is online - El estado actual del usuario es en línea - - - - Current account status is do not disturb - El estado actual del usuario es no molestar - - - + Account actions Acciones de la cuenta - + Set status Establecer estado - - + + Log out Cerrar sesión - - + + Log in Iniciar sesión - + Remove account Eliminar cuenta @@ -6267,7 +6300,7 @@ El servidor respondió con el error: %2 Utility - + %L1 B %L1 B @@ -6277,74 +6310,74 @@ El servidor respondió con el error: %2 %L1 TB - + %L1 GB %L1 GB - + %L1 MB %L1 MB - + %L1 KB %L1 KB - + %n year(s) - %n año%n año(s)%n año(s) + + %n año + %n año(s) + - + %n month(s) - %n Mes%n Mese(s)%n Mese(s) + + %n Mes + %n Mese(s) + - + %n day(s) - %n dia%n dia(s)%n dia(s) + + %n dia + %n dia(s) + - + %n hour(s) - %n hora%n hora(s)%n hora(s) + + %n hora + %n hora(s) + - + %n minute(s) - %n minuto%n minuto(s)%n minuto(s) + + %n minuto + %n minuto(s) + - + %n second(s) - %n segundo%n segundo(s)%n segundo(s) + + %n segundo + %n segundo(s) + - + %1 %2 %1 %2 - - ValidateChecksumHeader - - - The checksum header is malformed. - El encabezado de checksum está malformado. - - - - The checksum header contained an unknown checksum type "%1" - El encabezado del checksum contenía un tipo de comprobación desconocido: "%1" - - - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - El archivo descargado no coincide con la suma de comprobación (checksum), se reanudará. "%1" != "%2" - - Window @@ -6353,89 +6386,12 @@ El servidor respondió con el error: %2 Cuadro de diálogo principal de escritorio de Nextcloud - - Current account - Cuenta actual - - - - - Resume sync for all - Continuar sincronización para todos - - - - - Pause sync for all - Pausar sincronización para todo - - - - Add account - Agregar cuenta - - - - Add new account - Añadir cuenta nueva - - - - Settings - Ajustes - - - - Exit - Salir - - - - Current account avatar - Avatar del usuario actual - - - - Current account status is online - El estado actual del usuario es en línea - - - - Current account status is do not disturb - El estado actual del usuario es no molestar - - - - Account switcher and settings menu - Cambiador de cuentas y menú de configuración - - - - Open local or group folders - Abrir carpetas locales o de grupo - - - - Open Nextcloud Talk in browser - Abrir Nextcloud Talk en el navegador - - - - More apps - Más aplicaciones - - - - Open %1 in browser - Abrir %1 en el navegador - - - + Unified search results list Unificar la lista de resultados de la búsqueda - + New activities Nuevas actividades @@ -6443,12 +6399,12 @@ El servidor respondió con el error: %2 main.cpp - + System Tray not available La bandeja del sistema no está disponible - + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. %1 requiere una bandeja del sistema de trabajo. Si estás ejecutando XFCE, por favor, siga <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">estas instrucciones</a>. Por otro lado, instale una bandeja del sistema de aplicaciones como "trayer" e inténtelo de nuevo. @@ -6456,7 +6412,7 @@ El servidor respondió con el error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> <p><small>Creado desde la revisión Git <a href="%1">%2</a> en %3, %4 con Qt %5, %6</small></p> @@ -6524,46 +6480,56 @@ El servidor respondió con el error: %2 Actualizados metadatos locales - + + Updated local virtual files metadata + + + + Unknown Desconocido - + downloading descargando - + uploading subiendo - + deleting eliminando - + moving moviendo - + ignoring ignorando - + error error - + updating local metadata actualizando metadatos locales + + + updating local virtual files metadata + + theme @@ -6621,177 +6587,262 @@ El servidor respondió con el error: %2 utility - + Could not open browser No se ha podido abrir el navegador - + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? Se ha producido un error al lanzar el navegador para ir a la URL: %1 , ¿puede ser que no tenga ningún navegador por defecto? - + Could not open email client No se ha podido abrir el cliente de correo electrónico - + There was an error when launching the email client to create a new message. Maybe no default email client is configured? Se ha producido un error al lanzar el cliente de correo electrónico para crear un nuevo mensaje. ¿Puede ser que no haya ningún cliente de correo electrónico configurado? - + Always available locally Siempre disponible localmente - + Currently available locally Disponible localmente ahora - + Some available online only Algunos solo disponibles en línea - + Available online only Disponible solo en línea - + Make always available locally Hacer que esté siempre localmente disponible - + Free up local space Liberar espacio local - OCC::AbstractPropagateRemoteDeleteEncrypted + FolderWizardSelectiveSync - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - El código HTTP devuelto por el servidor es erróneo. Se esperaba 204, pero recibido "%1 %2". + + Add Folder Sync + - - "%1 Failed to unlock encrypted folder %2". - "%1 Falló al desbloquear la carpeta cifrada %2". + + Step 3 of 3: Selektive Synchronisation + - OCC::OAuth + FolderWizardSourcePage - - Error returned from the server: <em>%1</em> - Error devuelto desde el servidor: <em>%1</em> + + Add Folder Sync + - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Hubo un error accediendo al "token" endpoint: <br><em>%1</em> + + Step 1 of 3: Select local folder + - - Empty JSON from OAuth2 redirect - JSON vacío de la redirección de OAuth2 + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + - - Could not parse the JSON returned from the server: <br><em>%1</em> - No se puede procesar el código JSON recibido del servidor: <br><em>%1</em> + + &Choose + + + + SesErrorBox - - The reply from the server did not contain all expected fields - La respuesta del servidor no contiene todos los campos esperados + + Error + Error + + + SesTrayHeader - - <h1>Login Error</h1><p>%1</p> - <h1>Error al iniciar sesión</h1><p>%1</p> + + Website + - - <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> - <h1>Usuario incorrecto</h1><p>Se ha intentado iniciar sesión con el usuario: <em>%1</em>, pero debe iniciar sesión con el usuario: <em>%2</em>.<br>Por favor, cierre la sesión de %3 en otra pestaña, haga<a href='%4'>clic aquí</a> e inicie sesión como el usuario %2</p> + + Open Nextcloud in browser + + + + + Open local or group folders + - OCC::OwncloudOAuthCredsPage + TrayWindowAccountMenu - - Connect to %1 - Conectarse a %1 + + Current account + Cuenta actual - - Login in your browser - Inicia sesión en tu navegador Web + + Resume sync for all + + + + + Pause sync for all + Pausar sincronización para todo + + + + Add account + Agregar cuenta + + + + Settings + + + + + Exit + Salir + + + + Current account avatar + Avatar del usuario actual + + + + Current account status is online + El estado actual del usuario es en línea + + + + Current account status is do not disturb + El estado actual del usuario es no molestar + + + + Account switcher and settings menu + Cambiador de cuentas y menú de configuración - OCC::ShareUserLine + TrayWindowHeaderBar - - Username - Usuario + + Website + - - Can edit - Puede editar + + Open Nextcloud in browser + - - Note: - Nota: + + Open local or group folders + - - Password: - Contraseña: + + Open Nextcloud Talk in browser + Abrir Nextcloud Talk en el navegador - - Expires: - Caduca: + + More apps + Más aplicaciones + + + + Open %1 in browser + Abrir %1 en el navegador - OwncloudOAuthCredsPage + OCC::ValidateChecksumHeader - - Please switch to your browser to proceed. - Por favor vaya a su navegador para proceder. + + The checksum header is malformed. + El encabezado de checksum está malformado. - - An error occurred while connecting. Please try again. - Ha ocurrido un error al conectarse. Por favor, vuelve a intentarlo. + + The checksum header contained an unknown checksum type "%1" + El encabezado del checksum contenía un tipo de comprobación desconocido: "%1" - - Re-open Browser - Reabra el navegador + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + El archivo descargado no coincide con la suma de comprobación (checksum), se reanudará. "%1" != "%2" + + + OCC::SyncJournalDb - - Copy link - Copiar enlace + + Failed to connect database. + Fallo en la conexión a la base de datos. - nextcloudTheme::about() + OCC::WebFlowCredentials - - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Construido desde la revisión Git <a href="%1">%2</a> en %3, %4, usando Qt %5, %6</small></p> + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + + + + + OCC::FormatWarningsWizardPage + + + %1 + %1 + + + + OCC::sesSnackBar + + + Error + Error + + + + Warning + Aviso + + + + Success + - \ No newline at end of file + diff --git a/translations/client_fr.ts b/translations/client_fr.ts index 989641c2e7cf4..7a294e352dd49 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -1,6793 +1,7417 @@ - - + + + + ActivityItem - - Open %1 locally - Ouvrir %1 localement + + Open %1 locally + Ouvrir %1 localement - - In %1 - Dans %1 + + In %1 + Dans %1 - - + + ActivityItemContent - - Open file details - Ouvrir les détails du fichier + + Open file details + Ouvrir les détails du fichier - - Dismiss - Rejeter + + Dismiss + Rejeter - - + + ActivityList - - Activity list - Liste des activités + + Activity list + Liste des activités - - No activities yet - Pas encore d'activité + + No activities yet + Pas encore d'activité - - + + BasicComboBox - - Clear status message menu - Menu d'effacement du message de statut + + Clear status message menu + Menu d'effacement du message de statut - - + + CallNotificationDialog - - Talk notification caller avatar - Avatar de l'appelant de la notification Talk + + Talk notification caller avatar + Avatar de l'appelant de la notification Talk - - Answer Talk call notification - Répondre à la notification d'appel de Talk + + Answer Talk call notification + Répondre à la notification d'appel de Talk - - Decline - Décliner + + Decline + Décliner - - Decline Talk call notification - Décliner la notification d'appel de Talk + + Decline Talk call notification + Décliner la notification d'appel de Talk - - + + CloudProviderWrapper - - %1 (%2, %3) - %1 (%2, %3) + + %1 (%2, %3) + %1 (%2, %3) - - Checking for changes in "%1" - Vérification des modifications dans "%1" + + Checking for changes in "%1" + Vérification des modifications dans "%1" - - Syncing %1 of %2 (%3 left) - Synchronisation de %1 sur %2 (%3 restant) + + Syncing %1 of %2 (%3 left) + Synchronisation de %1 sur %2 (%3 restant) - - Syncing %1 of %2 - Synchronisation de %1 sur %2 + + Syncing %1 of %2 + Synchronisation de %1 sur %2 - - Syncing %1 (%2 left) - Synchronisation de %1 (%2 restant) + + Syncing %1 (%2 left) + Synchronisation de %1 (%2 restant) - - Syncing %1 - Synchronisation de %1 + + Syncing %1 + Synchronisation de %1 - - - No recently changed files - Aucun fichier modifié récemment + + + No recently changed files + Aucun fichier modifié récemment - - Sync paused - Synchronisation en pause + + Sync paused + Synchronisation en pause - - Syncing - Synchronisation en cours + + Syncing + Synchronisation en cours - - Open website - Consulter le site web + + Open website + Consulter le site web - - Recently changed - Modifié récemment + + Recently changed + Modifié récemment - - Pause synchronization - Suspendre la synchronisation + + Pause synchronization + Suspendre la synchronisation - - Help - Aide + + Help + Aide - - Settings - Paramètres + + Settings + Paramètres - - Log out - Se déconnecter + + Log out + Se déconnecter - - Quit sync client - Quitter le client de synchro + + Quit sync client + Quitter le client de synchro - - + + ConflictDelegate - - Local version - Version locale + + Local version + Version locale - - Server version - Version du serveur + + Server version + Version du serveur - - + + EditFileLocallyLoadingDialog - - Opening file for local editing - Ouverture du fichier pour édition locale + + Opening file for local editing + Ouverture du fichier pour édition locale - - + + EmojiPicker - - No recent emojis - Pas d'émojis récents + + No recent emojis + Pas d'émojis récents - - + + ErrorBox - - Error - Erreur + + Error + Erreur - - + + FileDetailsPage - - Dismiss - Rejeter + + Dismiss + Rejeter - - Activity - Activité + Activity + Activité - - Sharing - Partage + Sharing + Partage - - + + FileDetailsWindow - - File details of %1 · %2 - Détails du fichier de %1 · %2 + + File details of %1 · %2 + Détails du fichier de %1 · %2 - - + + FileProviderEvictionDialog - - Evict materialised files - Supprimer les fichiers matérialisés + + Evict materialised files + Supprimer les fichiers matérialisés - - Materialised items - Éléments matérialisés + + Materialised items + Éléments matérialisés - - Reload - Recharger + + Reload + Recharger - - + + FileProviderFastEnumerationSettings - - Enable fast sync - Activer la sync. rapide + + Enable fast sync + Activer la sync. rapide - - Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - La synchronisation rapide va uniquement synchroniser les modifications des fichiers et des dossiers dans les dossiers qui ont été explorés. Ceci peut significativement augmenter la réactivité sur la configuration initiale des fichiers virtuelles. Cependant, cela va causer des téléchargements redondants de fichiers déplacés dans un dossier non exploré. + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + La synchronisation rapide va uniquement synchroniser les modifications des fichiers et des dossiers dans les dossiers qui ont été explorés. Ceci peut significativement augmenter la réactivité sur la configuration initiale des fichiers virtuelles. Cependant, cela va causer des téléchargements redondants de fichiers déplacés dans un dossier non exploré. - - + + FileProviderFileDelegate - - Delete - Supprimer + + Delete + Supprimer - - + + FileProviderSettings - - Virtual files settings - Paramètres des fichiers virtuels + + Virtual files settings + Paramètres des fichiers virtuels - - General settings - Paramètres généraux + + General settings + Paramètres généraux - - Enable virtual files - Activer les fichiers virtuels + + Enable virtual files + Activer les fichiers virtuels - - Advanced - Avancés + + Advanced + Avancés - - Signal file provider domain - + + Signal file provider domain + Indiquer le domaine du fournisseur de fichiers - - Create debug archive - Créer l'archive de débogage + + Create debug archive + Créer l'archive de débogage - - + + FileProviderStorageInfo - - Local storage use - Utilisation du stockage local + + Local storage use + Utilisation du stockage local - - %1 GB of %2 GB remote files synced - %1 Go sur %2 Go de fichiers distants synchronisés + + %1 GB of %2 GB remote files synced + %1 Go sur %2 Go de fichiers distants synchronisés - - Evict local copies... - Supprimer les copies locales + + Evict local copies... + Supprimer les copies locales - - + + FileProviderSyncStatus - - Syncing - Synchronisation + + Syncing + Synchronisation - - All synced! - Tout est synchronisé ! + + All synced! + Tout est synchronisé ! - - + + FileSystem - - Error removing "%1": %2 - Erreur lors de la suppression de "%1" : %2 + + Error removing "%1": %2 + Erreur lors de la suppression de "%1" : %2 - - Could not remove folder "%1" - Impossible de supprimer le dossier "%1" + + Could not remove folder "%1" + Impossible de supprimer le dossier "%1" - - Could not make directories in trash - Impossible de créer des dossiers dans la corbeille + Could not make directories in trash + Impossible de créer des dossiers dans la corbeille - - - Could not move "%1" to "%2" - Impossible de déplacer "%1" vers "%2" + Could not move "%1" to "%2" + Impossible de déplacer "%1" vers "%2" - - Moving to the trash is not implemented on this platform - Mettre à la corbeille n'est pas disponible sur cette plateforme + Moving to the trash is not implemented on this platform + Mettre à la corbeille n'est pas disponible sur cette plateforme - - + + Flow2AuthWidget - - Browser Authentication - Authentification avec le navigateur Internet + + Browser Authentication + Authentification avec le navigateur Internet - - Logo - Logo + + Logo + Logo - - Switch to your browser to connect your account - Basculez sur votre navigateur pour connecter votre compte + + Switch to your browser to connect your account + Basculez sur votre navigateur pour connecter votre compte - - An error occurred while connecting. Please try again. - Une erreur s'est produite pendant la connexion. Veuillez ré-essayer. + + An error occurred while connecting. Please try again. + Une erreur s'est produite pendant la connexion. Veuillez ré-essayer. - - + + + Copy Link + Copier le lien + + + + Reopen Browser + Rouvrir le navigateur + + + + FolderWizardSelectiveSync + + + Add Folder Sync + Ajouter une synchronisation de dossiers + + + + Step 3 of 3: Selektive Synchronisation + Étape 3 sur 3 : synchronisation sélective + + + FolderWizardSourcePage - - Pick a local folder on your computer to sync - Sélectionnez un dossier local de votre ordinateur à synchroniser + Pick a local folder on your computer to sync + Sélectionnez un dossier local de votre ordinateur à synchroniser - - &Choose … - &Sélectionner … + &Choose … + &Sélectionner … - - + + + Add Folder Sync + Ajouter une synchronisation de dossiers + + + + Step 1 of 3: Select local folder + Étape 1 sur 3 : sélectionner un dossier local + + + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés + + + + &Choose + &Choisir + + + FolderWizardTargetPage - - Select a remote destination folder - Veuillez sélectionner un dossier distant + Select a remote destination folder + Veuillez sélectionner un dossier distant - - Create folder - Créer un dossier + + Create folder + Créer un dossier - - Refresh - Rafraîchir + + Refresh + Rafraîchir - - Folders - Dossiers + + Add Folder Sync + Ajouter une synchronisation de dossiers - - + + + Step 2 of 3: Directory in your %1 + Étape 2 sur 3 : répertoire dans votre %1 + + + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + À présent, sélectionnez ou créez dans votre %1 un dossier cible dans lequel le contenu doit être importé et synchronisé. + + + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. + + + + Folders + Dossiers + + + OCC::AbstractNetworkJob - - Connection timed out - Délai de connexion dépassé + + Connection timed out + Délai de connexion dépassé - - Unknown error: network reply was deleted - Erreur inconnue : La réponse du réseau a été supprimée + + Unknown error: network reply was deleted + Erreur inconnue : La réponse du réseau a été supprimée - - Server replied "%1 %2" to "%3 %4" - Le serveur a répondu "%1 %2" à "%3 %4" + + Server replied "%1 %2" to "%3 %4" + Le serveur a répondu "%1 %2" à "%3 %4" - - + + + OCC::AbstractPropagateRemoteDeleteEncrypted + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". + + + "%1 Failed to unlock encrypted folder %2". + "%1 Impossible de déverrouiller le dossier chiffré %2". + + + OCC::Account - - File %1 is already locked by %2. - Le fichier %1 est déjà verrouillé par %2. + + File %1 is already locked by %2. + Le fichier %1 est déjà verrouillé par %2. - - Lock operation on %1 failed with error %2 - L'opération de verrouillage de %1 a échoué avec l'erreur %2 + + Lock operation on %1 failed with error %2 + L'opération de verrouillage de %1 a échoué avec l'erreur %2 - - Unlock operation on %1 failed with error %2 - L'opération de déverrouillage de %1 a échoué avec l'erreur %2 + + Unlock operation on %1 failed with error %2 + L'opération de déverrouillage de %1 a échoué avec l'erreur %2 - - + + OCC::AccountManager - - An existing configuration from a legacy desktop client was detected. + An existing configuration from a legacy desktop client was detected. Should an account import be attempted? - Un configuration existante du client d'origine a été détectée -Est-ce qu'une tentative d'importation du compte doit être lancée ? + Un configuration existante du client d'origine a été détectée +Est-ce qu'une tentative d'importation du compte doit être lancée ? - - %1 accounts were detected from a legacy desktop client. + + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - %1 comptes ont été détectés à partir d'un ancien client de bureau. + %1 comptes ont été détectés à partir d'un ancien client de bureau. Doivent-ils être importés ? - - 1 account was detected from a legacy desktop client. + + 1 account was detected from a legacy desktop client. Should the account be imported? - 1 compte a été détecté à partir d'un ancien client de bureau. + 1 compte a été détecté à partir d'un ancien client de bureau. Le compte doit-il être importé ? - - - - Legacy import - Importation de l'héritage + + + Legacy import + Importation de l'héritage - - Import - Importer + + Import + Importer - - Skip - Ignorer + + Skip + Ignorer - - Successfully imported account from legacy client: %1 - Importation réussie du compte de l'ancien client : %1 + Successfully imported account from legacy client: %1 + Importation réussie du compte de l'ancien client : %1 - - Could not import accounts from legacy client configuration. - Impossible d'importer des comptes à partir de l'ancienne configuration client. + + Could not import accounts from legacy client configuration. + Impossible d'importer des comptes à partir de l'ancienne configuration client. - - + + OCC::AccountSettings - - Storage space: … - Espace de stockage : ... + + + Storage space: … + Espace de stockage : ... - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - Les dossiers décochés seront <b>supprimés</b> de votre disque local et ne seront plus synchronisés avec cet ordinateur. + + Expand Memory + Augmenter la mémoire - - - - Cancel - Annuler + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + Les dossiers décochés seront <b>supprimés</b> de votre système de fichiers local et ne seront plus synchronisés sur cet ordinateur - - Apply - Appliquer + + + + Cancel + Annuler - - Connected with <server> as <user> - Connecté au serveur <server> avec le compte <user> + + Apply + Appliquer - - Synchronize all - Tout synchroniser + + Connected with <server> as <user> + Connecté au serveur <server> avec le compte <user> - - Synchronize none - Ne rien synchroniser + + Synchronize all + Tout synchroniser - - Apply manual changes - Appliquer les changements manuels + + Synchronize none + Ne rien synchroniser - - Standard file sync - Synchronisation de fichiers standards + + Apply manual changes + Appliquer les changements manuels - - Virtual file sync - Synchronisation de fichiers virtuels + + Standard file sync + Synchronisation de fichiers standards - - End-to-end Encryption with Virtual Files - Chiffrement de bout en bout avec fichiers virtuels + + Virtual file sync + Synchronisation de fichiers virtuels - - You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - Il semble que la fonctionnalité des Fichiers Virtuels soit activée sur ce dossier. Pour l'instant, il n'est pas possible de télécharger implicitement des fichiers virtuels qui sont chiffrés de bout en bout. Pour bénéficier d'une expérience optimale avec les fichiers virtuels et le chiffrement de bout en bout, assurez-vous que le dossier chiffré soit marqué par l'option "Toujours rendre disponible localement". + + End-to-end Encryption with Virtual Files + Chiffrement de bout en bout avec fichiers virtuels - - Do not encrypt folder - Ne pas chiffrer le dossier + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". + Il semble que la fonctionnalité des Fichiers Virtuels soit activée sur ce dossier. Pour l'instant, il n'est pas possible de télécharger implicitement des fichiers virtuels qui sont chiffrés de bout en bout. Pour bénéficier d'une expérience optimale avec les fichiers virtuels et le chiffrement de bout en bout, assurez-vous que le dossier chiffré soit marqué par l'option "Toujours rendre disponible localement". - - Encrypt folder - Chiffrer le dossier + + + Do not encrypt folder + Ne pas chiffrer le dossier - - End-to-end Encryption - Chiffrement de bout en bout + + + Encrypt folder + Chiffrer le dossier - - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + + End-to-end Encryption + Chiffrement de bout en bout + + + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - Cela va chiffrer votre dossier et tous les fichiers qu'il contient. Ces fichiers ne seront plus accessibles sans votre clé de chiffrement mnémonique. -<b>Ce processus n'est pas réversible. Êtes-vous sûr de vouloir le faire ?</b> + Cela va chiffrer votre dossier et tous les fichiers qu'il contient. Ces fichiers ne seront plus accessibles sans votre clé de chiffrement mnémonique. +<b>Ce processus n'est pas réversible. Êtes-vous sûr de vouloir le faire ?</b> - - No account configured. - Aucun compte configuré. + + No account configured. + Aucun compte configuré. - - Disable encryption - Désactiver le chiffrement + + Disable encryption + Désactiver le chiffrement - - Display mnemonic - Afficher la phrase secrète + + Display mnemonic + Afficher la phrase secrète - - End-to-end encryption has been enabled for this account - Le chiffrement de bout en bout a été activé sur ce compte + + End-to-end encryption has been enabled for this account + Le chiffrement de bout en bout a été activé sur ce compte - - Warning - Attention + + Warning + Attention - - Please wait for the folder to sync before trying to encrypt it. - Merci d'attendre que le dossier soit synchronisé avant d'essayer de le chiffrer. + + Please wait for the folder to sync before trying to encrypt it. + Merci d'attendre que le dossier soit synchronisé avant d'essayer de le chiffrer. - - The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - Le dossier a un défaut de synchronisation mineur. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully + Le dossier a un défaut de synchronisation mineur. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. - - The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - Le dossier a une erreur de synchronisation. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully + Le dossier a une erreur de synchronisation. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. - - End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. Would you like to set up end-to-end encryption? - Le chiffrement de bout en bout n'est pas configuré sur cet appareil. Une fois qu'il sera configuré, vous serez en mesure de chiffrer ce dossier. + Le chiffrement de bout en bout n'est pas configuré sur cet appareil. Une fois qu'il sera configuré, vous serez en mesure de chiffrer ce dossier. Souhaitez-vous configurer le chiffrement de bout en bout ? - - You cannot encrypt a folder with contents, please remove the files. + + You cannot encrypt a folder with contents, please remove the files. Wait for the new sync, then encrypt it. - Vous ne pouvez pas chiffrer un dossier avec son contenu, veuillez enlever les fichiers. Attendez une nouvelle synchronisation puis chiffrez le dossier. + Vous ne pouvez pas chiffrer un dossier avec son contenu, veuillez enlever les fichiers. Attendez une nouvelle synchronisation puis chiffrez le dossier. - - Encryption failed - Le chiffrement a échoué + + Encryption failed + Le chiffrement a échoué - - Could not encrypt folder because the folder does not exist anymore - Impossible de chiffrer le dossier car il n'existe plus + + Could not encrypt folder because the folder does not exist anymore + Impossible de chiffrer le dossier car il n'existe plus - - - Open folder - Ouvrir le dossier + + + Open folder + Ouvrir le dossier - - Encrypt - Chiffrer + + Encrypt + Chiffrer - - - Edit Ignored Files - Modifier les fichiers ignorés + + + Edit Ignored Files + Modifier les fichiers ignorés - - - Create new folder - Créer un nouveau dossier + + + Create new folder + Créer un nouveau dossier - - - Availability - Disponibilités + + + Availability + Disponibilités - - Choose what to sync - Sélectionner le contenu à synchroniser + + Choose what to sync + Sélectionner le contenu à synchroniser - - Force sync now - Forcer la synchronisation maintenant + + Force sync now + Forcer la synchronisation maintenant - - Restart sync - Redémarrer la synchronisation + + Restart sync + Redémarrer la synchronisation - - Resume sync - Reprendre la synchronisation + + Resume sync + Reprendre la synchronisation - - Pause sync - Mettre en pause la synchronisation + + Pause sync + Mettre en pause la synchronisation - - Remove folder sync connection - Retirer la connexion de synchronisation de dossier + + Remove folder sync connection + Retirer la connexion de synchronisation de dossier - - Disable virtual file support … - Désactiver la prise en charge du fichier virtuel… + + Disable virtual file support … + Désactiver la prise en charge du fichier virtuel… - - Enable virtual file support %1 … - Activer la prise en charge du fichier virtuel %1 … + + Enable virtual file support %1 … + Activer la prise en charge du fichier virtuel %1 … - - (experimental) - (expérimental) + + (experimental) + (expérimental) - - Folder creation failed - Échec de la création du dossier + + Folder creation failed + Échec de la création du dossier - - <p>Could not create local folder <i>%1</i>.</p> - <p>Impossible de créer le dossier local <i>%1</i>.</p> + + <p>Could not create local folder <i>%1</i>.</p> + <p>Impossible de créer le dossier local <i>%1</i>.</p> - - Confirm Folder Sync Connection Removal - Confirmer le retrait de la synchronisation de dossier + + Confirm Folder Sync Connection Removal + Confirmer le retrait de la synchronisation de dossier - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Voulez-vous vraiment arrêter de synchroniser le dossier <i>%1</i> ?</p><p><b>Note :</b> Aucun fichier ne sera supprimé.</p> + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Voulez-vous vraiment arrêter de synchroniser le dossier <i>%1</i> ?</p><p><b>Note :</b> Aucun fichier ne sera supprimé.</p> - - Remove Folder Sync Connection - Retirer la synchronisation de ce dossier + + Remove Folder Sync Connection + Retirer la synchronisation de ce dossier - - Disable virtual file support? - Désactiver le support des fichiers virtuels ? + + Disable virtual file support? + Désactiver le support des fichiers virtuels ? - - This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. The only advantage of disabling virtual file support is that the selective sync feature will become available again. This action will abort any currently running synchronization. - Cette action désactivera la prise en charge du fichier virtuel. Par conséquent, les contenus des dossiers habituellement marqués comme "disponibles en ligne seulement" seront téléchargés. + Cette action désactivera la prise en charge du fichier virtuel. Par conséquent, les contenus des dossiers habituellement marqués comme "disponibles en ligne seulement" seront téléchargés. Le seul avantage de désactiver la prise en charge du fichier virtuel est que les fonctionnalités de synchronisation sélective seront de nouveau disponibles. -Cette action entraînera l'interruption de toute synchronisation en cours. +Cette action entraînera l'interruption de toute synchronisation en cours. + + + + Disable support + Désactiver le support - - Disable support - Désactiver le support + + End-to-end encryption mnemonic + Phrase secrète du chiffrement de bout en bout - - End-to-end encryption mnemonic - Phrase secrète du chiffrement de bout en bout + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + Pour protéger votre identité cryptographique, nous la chiffrons avec une phrase secrète de 12 mots du dictionnaire. Veuillez la noter et la garder en sécurité. Elle sera nécessaire pour ajouter d’autres appareils à votre compte (comme votre smartphone ou votre ordinateur portable). - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - Pour protéger votre identité cryptographique, nous la chiffrons avec une phrase secrète de 12 mots du dictionnaire. Veuillez la noter et la garder en sécurité. Elle sera nécessaire pour ajouter d’autres appareils à votre compte (comme votre smartphone ou votre ordinateur portable). + + Disable end-to-end encryption + Désactiver le chiffrement de bout en bout - - Disable end-to-end encryption - Désactiver le chiffrement de bout en bout + + Disable end-to-end encryption for %1? + Désactiver le chiffrement de bout en bout pour %1 ? - - Disable end-to-end encryption for %1? - Désactiver le chiffrement de bout en bout pour %1 ? + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. + Le retrait du chiffrage de bout en bout supprimera localement les fichiers chiffrés synchronisés.<br>Les fichiers chiffrés demeureront sur le serveur. - - Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - Le retrait du chiffrage de bout en bout supprimera localement les fichiers chiffrés synchronisés.<br>Les fichiers chiffrés demeureront sur le serveur. + + Sync Running + Synchronisation en cours - - Sync Running - Synchronisation en cours + + The syncing operation is running.<br/>Do you want to terminate it? + La synchronisation est en cours.<br/>Voulez-vous l'arrêter ? - - The syncing operation is running.<br/>Do you want to terminate it? - La synchronisation est en cours.<br/>Voulez-vous l'arrêter ? + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + %1 (%3%) utilisés sur %2. Certains dossiers, montés depuis le réseau ou partagés, peuvent avoir des limites différentes. - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - %1 (%3%) utilisés sur %2. Certains dossiers, montés depuis le réseau ou partagés, peuvent avoir des limites différentes. + + %1 of %2 in use + %1 utilisés sur %2 - - %1 of %2 in use - %1 utilisés sur %2 + + Storage space %1% occupied + Espace de stockage %1% occupé - - Currently there is no storage usage information available. - Actuellement aucune information d'utilisation de stockage n'est disponible. + + Currently there is no storage usage information available. + Actuellement aucune information d'utilisation de stockage n'est disponible. - - %1 in use - %1 utilisé(s) + + %1 in use + %1 utilisé(s) - - %1 as %2 - %1 avec le compte %2 + + %1 as %2 + %1 avec le compte %2 - - The server version %1 is unsupported! Proceed at your own risk. - La version %1 du serveur n'est pas maintenue ! + + The server version %1 is unsupported! Proceed at your own risk. + La version %1 du serveur n'est pas maintenue ! Vous prenez vos propres risques. - - Connected to %1. - Connecté au serveur %1. + + Connected to %1. + Connecté au serveur %1. - - Server %1 is temporarily unavailable. - Le serveur %1 est temporairement indisponible. + + Server %1 is temporarily unavailable. + Le serveur %1 est temporairement indisponible. - - Server %1 is currently in maintenance mode. - Le serveur %1 est en cours de maintenance. + + Server %1 is currently in maintenance mode. + Le serveur %1 est en cours de maintenance. - - Server %1 is currently being redirected, or your connection is behind a captive portal. - Le serveur %1 est actuellement redirigé ou votre connexion est derrière un portail captif. + + Server %1 is currently being redirected, or your connection is behind a captive portal. + Le serveur %1 est actuellement redirigé ou votre connexion est derrière un portail captif. - - Signed out from %1. - Session sur %1 fermée. + + Signed out from %1. + Session sur %1 fermée. - - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - En attente d'autorisation du navigateur. <a href='%1'>Cliquer ici</a> pour recharger le navigateur. + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + En attente d'autorisation du navigateur. <a href='%1'>Cliquer ici</a> pour recharger le navigateur. - - Connecting to %1 … - Connexion à %1 ... + + Connecting to %1 … + Connexion à %1 ... - - No connection to %1 at %2. - Aucune connexion au serveur %1 à l'adresse %2. + No connection to %1 at %2. + Aucune connexion au serveur %1 à l'adresse %2. - - Unable to connect to %1. - Impossible de se connecter à %1. + + Unable to connect to %1. + Impossible de se connecter à %1. - - Server configuration error: %1 at %2. - Erreur de configuration serveur : %1 à %2. + + Server configuration error: %1 at %2. + Erreur de configuration serveur : %1 à %2. - - No %1 connection configured. - Aucune connexion à %1 configurée + + No %1 connection configured. + Aucune connexion à %1 configurée - - There are folders that were not synchronized because they are too big: - Certains dossiers n'ont pas été synchronisés parce qu'ils sont de taille trop importante : + + https://wl.hidrive.com/easy/0057 + https://wl.hidrive.com/easy/0057 - - There are folders that were not synchronized because they are external storages: - Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe : + + There are folders that were not synchronized because they are too big: + Certains dossiers n'ont pas été synchronisés parce qu'ils sont de taille trop importante : - - There are folders that were not synchronized because they are too big or external storages: - Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe ou qu'ils sont de taille trop importante : + + There are folders that were not synchronized because they are external storages: + Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe : - - There are folders that have grown in size beyond %1MB: %2 - Il y a des dossiers qui ont augmenté de taille au-delà de %1MB: %2 + + There are folders that were not synchronized because they are too big or external storages: + Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe ou qu'ils sont de taille trop importante : - - End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - Le chiffrement de bout en bout a été activé sur ce compte avec un autre appareil.<br>Il peut être activé sur cet appareil en entrant votre phrase secrète.<br>Cela permettra la synchronisation des dossiers chiffrés existants. + + There are folders that have grown in size beyond %1MB: %2 + Il y a des dossiers qui ont augmenté de taille au-delà de %1MB: %2 - - This account supports end-to-end encryption - Ce compte prend en charge le chiffrement de bout en bout. + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. + Le chiffrement de bout en bout a été activé sur ce compte avec un autre appareil.<br>Il peut être activé sur cet appareil en entrant votre phrase secrète.<br>Cela permettra la synchronisation des dossiers chiffrés existants. - - Set up encryption - Configurer le chiffrement + + This account supports end-to-end encryption + Ce compte prend en charge le chiffrement de bout en bout. - - + + + Set up encryption + Configurer le chiffrement + + + OCC::AccountSetupFromCommandLineJob - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - La requête authentifiée au serveur a été redirigée vers « %1 ». L'URL est mauvaise, le serveur est mal configuré. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + La requête authentifiée au serveur a été redirigée vers « %1 ». L'URL est mauvaise, le serveur est mal configuré. - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Accès refusé par le serveur. Pour vérifier que vous disposez d'un accès approprié, <a href="%1">cliquez ici</a> pour accéder au service avec votre navigateur Web. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Accès refusé par le serveur. Pour vérifier que vous disposez d'un accès approprié, <a href="%1">cliquez ici</a> pour accéder au service avec votre navigateur Web. - - There was an invalid response to an authenticated WebDAV request - Réponse invalide reçue suite à une requête WebDav authentifiée. + + There was an invalid response to an authenticated WebDAV request + Réponse invalide reçue suite à une requête WebDav authentifiée. - - + + OCC::AccountState - - Signed out - Session fermée + + Signed out + Session fermée - - Disconnected - Déconnecté + + Disconnected + Déconnecté - - Connected - Connecté + + Connected + Connecté - - Service unavailable - Service indisponible + + Service unavailable + Service indisponible - - Maintenance mode - mode maintenance + + Maintenance mode + mode maintenance - - Redirect detected - Redirection détectée + + Redirect detected + Redirection détectée - - Network error - Erreur réseau + + Network error + Erreur réseau - - Configuration error - Erreur de configuration + + Configuration error + Erreur de configuration - - Asking Credentials - informations d'identification demandées + + Asking Credentials + informations d'identification demandées - - Unknown account state - État du compte inconnu + + Unknown account state + État du compte inconnu - - + + OCC::ActivityListModel - - For more activities please open the Activity app. - Pour plus d'activités veuillez lancer l'application Activité. + + For more activities please open the Activity app. + Pour plus d'activités veuillez lancer l'application Activité. - - Fetching activities … - Récupération des activités... + + Fetching activities … + Récupération des activités... - - Network error occurred: client will retry syncing. - Une erreur de réseau est survenue : le client va réessayer la synchronisation. + + Network error occurred: client will retry syncing. + Une erreur de réseau est survenue : le client va réessayer la synchronisation. - - Files from the ignore list as well as symbolic links are not synced. - Les fichiers présents dans la liste d'exclusion ainsi que les liens symboliques ne sont pas synchronisés. + + Files from the ignore list as well as symbolic links are not synced. + Les fichiers présents dans la liste d'exclusion ainsi que les liens symboliques ne sont pas synchronisés. - - + + OCC::AddCertificateDialog - - SSL client certificate authentication - Authentification par certificat SSL client + + SSL client certificate authentication + Authentification par certificat SSL client - - This server probably requires a SSL client certificate. - Ce serveur requiert probablement un certificat SSL client. + + This server probably requires a SSL client certificate. + Ce serveur requiert probablement un certificat SSL client. - - Certificate & Key (pkcs12): - Certificat & clé (pkcs12) : + + Certificate & Key (pkcs12): + Certificat & clé (pkcs12) : - - Browse … - Parcourir … + + Browse … + Parcourir … - - Certificate password: - Mot de passe du certificat : + + Certificate password: + Mot de passe du certificat : - - An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - Un paquet pkcs12 chiffré est vivement recommandé vu qu'une copie sera stockée dans le fichier de configuration. + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. + Un paquet pkcs12 chiffré est vivement recommandé vu qu'une copie sera stockée dans le fichier de configuration. - - Select a certificate - Sélectionner un certificat + + Select a certificate + Sélectionner un certificat - - Certificate files (*.p12 *.pfx) - Fichiers de certificats (*.p12 *.pfx) + + Certificate files (*.p12 *.pfx) + Fichiers de certificats (*.p12 *.pfx) - - + + OCC::Application - - Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - Des paramètres ont été configurés dans des versions %1 de ce client et utilisent des fonctionnalités non disponibles dans la version actuelle. <br><br>Continuer impliquera que <b>ces paramètres seront %2</b>.<br><br> Le fichier de configuration actuel a été sauvegardé dans <i>%3</i>. + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. + Des paramètres ont été configurés dans des versions %1 de ce client et utilisent des fonctionnalités non disponibles dans la version actuelle. <br><br>Continuer impliquera que <b>ces paramètres seront %2</b>.<br><br> Le fichier de configuration actuel a été sauvegardé dans <i>%3</i>. - - newer - newer software version - ultérieures + + newer + newer software version + ultérieures - - older - older software version - antérieures + + older + older software version + antérieures - - ignoring - ignorés + + ignoring + ignorés - - deleting - supprimés + + deleting + supprimés - - Quit - Quitter + + Quit + Quitter - - Continue - Continuer + + Continue + Continuer - - %1 accounts - number of accounts imported - %1 comptes + + %1 accounts + number of accounts imported + %1 comptes - - 1 account - 1 compte + + 1 account + 1 compte - - %1 folders - number of folders imported - %1 dossiers + + %1 folders + number of folders imported + %1 dossiers - - 1 folder - 1 dossier + + 1 folder + 1 dossier - - Legacy import - Importation héritée + + Legacy import + Importation héritée - - Imported %1 and %2 from a legacy desktop client. + + Imported %1 and %2 from a legacy desktop client. %3 - number of accounts and folders imported. list of users. - Import de %1 et %2 à partir d'un ancien client de bureau. + number of accounts and folders imported. list of users. + Import de %1 et %2 à partir d'un ancien client de bureau. %3 - - Error accessing the configuration file - Erreur lors de l'accès au fichier de configuration + + Error accessing the configuration file + Erreur lors de l'accès au fichier de configuration - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - Une erreur est survenue lors de l'accès au fichier de configuration à %1. Merci de vérifier que le fichier est accessible du compte système. + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + Une erreur est survenue lors de l'accès au fichier de configuration à %1. Merci de vérifier que le fichier est accessible du compte système. - - Quit %1 - Quitter %1 + + Quit %1 + Quitter %1 - - + + OCC::AuthenticationDialog - - Authentication Required - Authentification requise + + Authentication Required + Authentification requise - - Enter username and password for "%1" at %2. - Saisir le nom d’utilisateur et le mot de passe pour « %1 » sur %2. + + Enter username and password for "%1" at %2. + Saisir le nom d’utilisateur et le mot de passe pour « %1 » sur %2. - - &Username: - &Username: + + &Username: + &Username: - - &Password: - &Password: + + &Password: + &Password: - - + + OCC::BasePropagateRemoteDeleteEncrypted - - "%1 Failed to unlock encrypted folder %2". - « %1 Impossible de déverrouiller le dossier chiffré %2 ». + + "%1 Failed to unlock encrypted folder %2". + « %1 Impossible de déverrouiller le dossier chiffré %2 ». - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est « %1 %2 ». + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est « %1 %2 ». - - + + OCC::BulkPropagatorJob - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Le fichier %1 ne peut être téléversé parce qu'un autre fichier avec le même nom hormis la casse existe + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Le fichier %1 ne peut être téléversé parce qu'un autre fichier avec le même nom hormis la casse existe - - File %1 has invalid modified time. Do not upload to the server. - Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. + + File %1 has invalid modified time. Do not upload to the server. + Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. - - File Removed (start upload) %1 - Fichier supprimé (démarrer l'envoi) %1 + + File Removed (start upload) %1 + Fichier supprimé (démarrer l'envoi) %1 - - File %1 has invalid modification time. Do not upload to the server. - Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. + + File %1 has invalid modification time. Do not upload to the server. + Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. - - Local file changed during syncing. It will be resumed. - Fichier local modifié pendant la synchronisation. La synchronisation sera reprise. + + Local file changed during syncing. It will be resumed. + Fichier local modifié pendant la synchronisation. La synchronisation sera reprise. - - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. + + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. - - Network error: %1 - Erreur réseau : %1 + + Network error: %1 + Erreur réseau : %1 - - Error updating metadata: %1 - Erreur à la mise à jour des méta-données : %1 + + Error updating metadata: %1 + Erreur à la mise à jour des méta-données : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - The local file was removed during sync. - Le fichier local a été supprimé pendant la synchronisation. + + The local file was removed during sync. + Le fichier local a été supprimé pendant la synchronisation. - - Restoration failed: %1 - Échec de la restauration : %1 + + Restoration failed: %1 + Échec de la restauration : %1 - - + + OCC::CaseClashConflictSolver - - Cannot rename file because a file with the same name already exists on the server. Please pick another name. - Impossible de renommer le fichier parce qu'un fichier portant le même nom existe déjà sur le serveur. Veuillez choisir un autre nom. + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + Impossible de renommer le fichier parce qu'un fichier portant le même nom existe déjà sur le serveur. Veuillez choisir un autre nom. - - Could not rename file. Please make sure you are connected to the server. - Impossible de renommer le fichier. Assurez-vous de bien être connecté au serveur. + + Could not rename file. Please make sure you are connected to the server. + Impossible de renommer le fichier. Assurez-vous de bien être connecté au serveur. - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Vous n'avez pas les permissions de renommer ce fichier. Veuillez demander à son auteur de le renommer. + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Vous n'avez pas les permissions de renommer ce fichier. Veuillez demander à son auteur de le renommer. - - Failed to fetch permissions with error %1 - Échec de récupération de permissions avec l'erreur %1 + + Failed to fetch permissions with error %1 + Échec de récupération de permissions avec l'erreur %1 - - Filename contains leading and trailing spaces. - Le nom de fichier contient des espaces de début et de fin. + + Filename contains leading and trailing spaces. + Le nom de fichier contient des espaces de début et de fin. - - Filename contains leading spaces. - Le nom de fichier contient des espaces de début. + + Filename contains leading spaces. + Le nom de fichier contient des espaces de début. - - Filename contains trailing spaces. - Le nom de fichier contient des espaces de fin. + + Filename contains trailing spaces. + Le nom de fichier contient des espaces de fin. - - + + OCC::CaseClashFilenameDialog - - Case Clash Conflict - Conflit de casse + + Case Clash Conflict + Case Clash Conflict + - - The file could not be synced because it generates a case clash conflict with an existing file on this system. - Le fichier n'a pas pu être synchronisé parce qu'il génère un conflit de casse avec un fichier existant dans ce système. + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + Le fichier n'a pas pu être synchronisé car il génère un conflit de cas avec un fichier existant sur ce système. - - Error - Erreur + + Error + Erreur - - Existing file - Fichier existant + + Existing file + Dossier existant - - file A - fichier A + + file A + fichier A - - - today - aujourd'hui + + + today + aujourd'hui - - - 0 byte - 0 octets + + + 0 byte + 0 octets - - - Open existing file - Ouvrir un fichier existant + + + Open existing file + Ouvrir un fichier existant - - Case clashing file - Fichier avec conflit de casse + + Case clashing file + Fichier avec conflit de casse - - file B - fichier B + + file B + fichier B - - - Open clashing file - Ouvrir le fichier conflictuel + + + Open clashing file + Ouvrir le fichier conflictuel - - Please enter a new name for the clashing file: - Veuillez saisir un nouveau nom pour le fichier conflictuel : + + Please enter a new name for the clashing file: + Veuillez saisir un nouveau nom pour le fichier conflictuel : - - New filename - Nouveau nom de fichier + + New filename + Nouveau nom de fichier - - Rename file - Renomer le fichier + + Rename file + Renomer le fichier - - The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - Le fichier "%1" n'a pas pu être synchronisé à cause d'un conflit de casse avec un fichier existant dans ce système. + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + Le fichier "%1" n'a pas pu être synchronisé à cause d'un conflit de casse avec un fichier existant dans ce système. - - %1 does not support equal file names with only letter casing differences. - %1 ne supporte pas les noms de fichiers identiques avec seulement des différences de casse de caractère. + + %1 does not support equal file names with only letter casing differences. + %1 ne supporte pas les noms de fichiers identiques avec seulement des différences de casse de caractère. - - Filename contains leading and trailing spaces. - Le nom de fichier contient des espaces de début et de fin. + + Filename contains leading and trailing spaces. + Le nom de fichier contient des espaces de début et de fin. - - Filename contains leading spaces. - Le nom de fichier contient des espaces de début. + + Filename contains leading spaces. + Le nom de fichier contient des espaces de début. - - Filename contains trailing spaces. - Le nom de fichier contient des espaces de fin. + + Filename contains trailing spaces. + Le nom de fichier contient des espaces de fin. - - Use invalid name - Nom invalide + + Use invalid name + Nom invalide - - Filename contains illegal characters: %1 - Le nom du fichier contient des caractères illégaux : %1 + + Filename contains illegal characters: %1 + Le nom du fichier contient des caractères illégaux : %1 - - + + OCC::CleanupPollsJob - - Error writing metadata to the database - Erreur à l'écriture des métadonnées dans la base de données + + Error writing metadata to the database + Erreur à l'écriture des métadonnées dans la base de données - - + + OCC::ClientSideEncryption - - Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - Veuillez entrer votre phrase de passe de chiffrement de bout en bout :<br><br>Nom d'utilisateur : %2<br>Compte : %3<br> + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + Veuillez entrer votre phrase de passe de chiffrement de bout en bout :<br><br>Nom d'utilisateur : %2<br>Compte : %3<br> - - Enter E2E passphrase - Entrez la phrase secrète E2E + + Enter E2E passphrase + Entrez la phrase secrète E2E - - + + OCC::ConflictDialog - - Sync Conflict - Conflit de synchronisation + + Sync Conflict + Conflit de synchronisation - - - Conflicting versions of %1. - Versions en conflit de %1. + + + Conflicting versions of %1. + Versions en conflit de %1. - - Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. - Quelle version du fichier souhaitez-vous garder ?<br/>Si vous sélectionnez les deux versions, le fichier local aura un numéro ajouté à son nom. + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + Quelle version du fichier souhaitez-vous garder ?<br/>Si vous sélectionnez les deux versions, le fichier local aura un numéro ajouté à son nom. - - Local version - Version locale + + Local version + Version locale - - - Click to open the file - Cliquez pour ouvrir le fichier + + + Click to open the file + Cliquez pour ouvrir le fichier - - - today - aujourd'hui + + + today + aujourd'hui - - - 0 byte - 0 octet + + + 0 byte + 0 octet - - <a href="%1">Open local version</a> - <a href="%1">Ouvrir la version locale</a> + + <a href="%1">Open local version</a> + <a href="%1">Ouvrir la version locale</a> - - Server version - Version du serveur + + Server version + Version du serveur - - <a href="%1">Open server version</a> - <a href="%1">Ouvrir la version serveur</a> + + <a href="%1">Open server version</a> + <a href="%1">Ouvrir la version serveur</a> - - - Keep selected version - Conserver la version sélectionnée + + + Keep selected version + Conserver la version sélectionnée - - Open local version - Ouvrir la version locale + + Open local version + Ouvrir la version locale - - Open server version - Ouvrir la version serveur + + Open server version + Ouvrir la version serveur - - Keep both versions - Conserver les deux versions + + Keep both versions + Conserver les deux versions - - Keep local version - Conserver la version locale + + Keep local version + Conserver la version locale - - Keep server version - Conserver la version serveur + + Keep server version + Conserver la version serveur - - + + OCC::ConflictSolver - - Do you want to delete the directory <i>%1</i> and all its contents permanently? - Voulez-vous supprimer le dossier <i>%1</i> et tout son contenu définitivement ? + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + Voulez-vous supprimer le dossier <i>%1</i> et tout son contenu définitivement ? - - Do you want to delete the file <i>%1</i> permanently? - Voulez-vous supprimer le fichier <i>%1</i> définitivement ? + + Do you want to delete the file <i>%1</i> permanently? + Voulez-vous supprimer le fichier <i>%1</i> définitivement ? - - Confirm deletion - Confirmer la suppression + + Confirm deletion + Confirmer la suppression - - - Error - Erreur + + + Error + Erreur - - - Moving file failed: + + + Moving file failed: %1 - Déplacement du fichier échoué + Déplacement du fichier échoué %1 - - + + OCC::ConnectionValidator - - No Nextcloud account configured - Aucun compte Nextcloud n'est paramétré + + No Nextcloud account configured + Aucun compte Nextcloud n'est paramétré - - Authentication error: Either username or password are wrong. - Erreur d'authentification : nom d’utilisateur et/ou mot de passe incorrect(s). + + Authentication error: Either username or password are wrong. + Erreur d'authentification : nom d’utilisateur et/ou mot de passe incorrect(s). - - Timeout - Délai d'attente + + Timeout + Délai d'attente - - The provided credentials are not correct - Les informations d'identification fournies ne sont pas correctes + + The provided credentials are not correct + Les informations d'identification fournies ne sont pas correctes - - The configured server for this client is too old - Le serveur configuré pour ce client est trop vieux + + The configured server for this client is too old + Le serveur configuré pour ce client est trop vieux - - Please update to the latest server and restart the client. - Veuillez mettre à jour le serveur vers la dernière version et redémarrer le client. + + Please update to the latest server and restart the client. + Veuillez mettre à jour le serveur vers la dernière version et redémarrer le client. - - Connection issue - Problème de connexion + + Connection issue + Problème de connexion - - + + OCC::DiscoveryPhase - - Error while canceling deletion of a file - Erreur lors de l'annulation de la suppression d'un fichier + + Error while canceling deletion of a file + Erreur lors de l'annulation de la suppression d'un fichier - - Error while canceling deletion of %1 - Erreur lors de l'annulation de la suppression de %1 + + Error while canceling deletion of %1 + Erreur lors de l'annulation de la suppression de %1 - - + + OCC::DiscoverySingleDirectoryJob - - - Server error: PROPFIND reply is not XML formatted! - Erreur du serveur : La réponse PROPFIND n'est pas au format XML ! + + + Server error: PROPFIND reply is not XML formatted! + Erreur du serveur : La réponse PROPFIND n'est pas au format XML ! - - - Encrypted metadata setup error! - + + + Encrypted metadata setup error! + Erreur de configuration des métadonnées chiffrées ! - - + + OCC::DiscoverySingleLocalDirectoryJob - - Error while opening directory %1 - Erreur à l’ouverture du dossier %1 + + Error while opening directory %1 + Erreur à l’ouverture du dossier %1 - - Directory not accessible on client, permission denied - Dossier non accessible au client, permission refusée + + Directory not accessible on client, permission denied + Dossier non accessible au client, permission refusée - - Directory not found: %1 - Dossier non trouvé : %1 + + Directory not found: %1 + Dossier non trouvé : %1 - - Filename encoding is not valid - L’encodage du nom de fichier n’est pas valide + + Filename encoding is not valid + L’encodage du nom de fichier n’est pas valide - - Error while reading directory %1 - Erreur de lecture du dossier %1 + + Error while reading directory %1 + Erreur de lecture du dossier %1 - - + + OCC::EditLocallyJob - - Invalid token received. - Jeton invalide reçu. + + Invalid token received. + Jeton invalide reçu. - - - - - - - Please try again. - Merci de réessayer. + + + + + + + Please try again. + Merci de réessayer. - - Invalid file path was provided. - Un chemin d'accès au fichier invalide a été fourni. + + Invalid file path was provided. + Un chemin d'accès au fichier invalide a été fourni. - - Could not find an account for local editing. - Impossible de trouver un compte pour l'édition locale. + + Could not find an account for local editing. + Impossible de trouver un compte pour l'édition locale. - - - - - - - - - Could not start editing locally. - Impossible de démarrer l'édition localement. + + + + + + + + + Could not start editing locally. + Impossible de démarrer l'édition localement. - - An error occurred trying to verify the request to edit locally. - Une erreur est survenue pendant la vérification de la requête d'édition locale. + + An error occurred trying to verify the request to edit locally. + Une erreur est survenue pendant la vérification de la requête d'édition locale. - - - Could not validate the request to open a file from server. - Impossible de valider la requête pour ouvrir un fichier du serveur. + + + Could not validate the request to open a file from server. + Impossible de valider la requête pour ouvrir un fichier du serveur. - - - Could not find a file for local editing. Make sure its path is valid and it is synced locally. - Impossible de trouver le fichier pour l'édition locale. Assurez-vous que le chemin est valide et qu'il est synchronisé localement. + + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + Impossible de trouver le fichier pour l'édition locale. Assurez-vous que le chemin est valide et qu'il est synchronisé localement. - - - - - Could not find a file for local editing. Make sure it is not excluded via selective sync. - Impossible de trouver le fichier pour l'édition locale. Assurez-vous qu'il n'est pas exclus par un filtre de synchronisation. + + + + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + Impossible de trouver le fichier pour l'édition locale. Assurez-vous qu'il n'est pas exclus par un filtre de synchronisation. - - - - An error occurred during data retrieval. - Une erreur est survenue pendant le rapatriement des données. + + + + An error occurred during data retrieval. + Une erreur est survenue pendant le rapatriement des données. - - - An error occurred trying to synchronise the file to edit locally. - Une erreur s'est produite lors de la synchronisation du fichier à éditer localement. + + + An error occurred trying to synchronise the file to edit locally. + Une erreur s'est produite lors de la synchronisation du fichier à éditer localement. - - An error occurred during setup. - Une erreur est survenue pendant la configuration. + + An error occurred during setup. + Une erreur est survenue pendant la configuration. - - Server error: PROPFIND reply is not XML formatted! - Erreur de serveur : La réponse de PROPFIND n'est pas formatée en XML ! + + Server error: PROPFIND reply is not XML formatted! + Erreur de serveur : La réponse de PROPFIND n'est pas formatée en XML ! - - Could not find a remote file info for local editing. Make sure its path is valid. - Impossible de trouver une info fichier distante pour l'édition locale. Assurez-vous que son chemin est valide. + + Could not find a remote file info for local editing. Make sure its path is valid. + Impossible de trouver une info fichier distante pour l'édition locale. Assurez-vous que son chemin est valide. - - Invalid local file path. - Chemin d'accès au fichier local non valide. + + Invalid local file path. + Chemin d'accès au fichier local non valide. - - Could not open %1 - Impossible d'ouvrir %1 + + Could not open %1 + Impossible d'ouvrir %1 - - File %1 already locked. - Fichier %1 déjà verrouillé. + + File %1 already locked. + Fichier %1 déjà verrouillé. - - - Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - Le verrouillage durera %1 minutes. Vous pouvez également déverrouiller ce fichier manuellement une fois que vous avez terminé l'édition. + + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + Le verrouillage durera %1 minutes. Vous pouvez également déverrouiller ce fichier manuellement une fois que vous avez terminé l'édition. - - File %1 now locked. - Fichier %1 désormais verrouillé. + + File %1 now locked. + Fichier %1 désormais verrouillé. - - File %1 could not be locked. - Impossible de verrouiller le fichier %1. + + File %1 could not be locked. + Impossible de verrouiller le fichier %1. - - + + OCC::EncryptFolderJob - - Could not generate the metadata for encryption, Unlocking the folder. + + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. - Impossible de générer les métadonnées pour le chiffrement, déverrouillage du dossier. + Impossible de générer les métadonnées pour le chiffrement, déverrouillage du dossier. Cela peut être un problème avec vos bibliothèques OpenSSL. - - + + OCC::EncryptedFolderMetadataHandler - - - - - - - Error fetching metadata. - Erreur à la récupération des méta-données. + + + + + + + Error fetching metadata. + Erreur à la récupération des méta-données. - - - - Error locking folder. - Erreur de verrouillage du dossier. + + + + Error locking folder. + Erreur de verrouillage du dossier. - - Error fetching encrypted folder ID. - Erreur dans la récupération de l’ID du dossier chiffré. + + Error fetching encrypted folder ID. + Erreur dans la récupération de l’ID du dossier chiffré. - - Error parsing or decrypting metadata. - Erreur lors du parsing ou du déchiffrement des métadonnées. + + Error parsing or decrypting metadata. + Erreur lors du parsing ou du déchiffrement des métadonnées. - - Failed to upload metadata - Échec du téléversement des métadonnées + + Failed to upload metadata + Échec du téléversement des métadonnées - - + + OCC::FileDetails - - %1 second(s) ago - seconds elapsed since file last modified - Il y a %1 secondeIl y a %1 seconde(s)Il y a %1 seconde(s) + + %1 second(s) ago + seconds elapsed since file last modified + + Il y a %1 seconde + Il y a %1 seconde(s) + - - %1 minute(s) ago - minutes elapsed since file last modified - Il y a %1 minuteIl y a %1 minute(s)Il y a %1 minute(s) + + %1 minute(s) ago + minutes elapsed since file last modified + + Il y a %1 minute + Il y a %1 minute(s) + - - %1 hour(s) ago - hours elapsed since file last modified - Il y a %1 heureIl y a %1 heure(s)Il y a %1 heure(s) + + %1 hour(s) ago + hours elapsed since file last modified + + Il y a %1 heure + Il y a %1 heure(s) + - - %1 day(s) ago - days elapsed since file last modified - Il y a %1 jourIl y a %1 jour(s)Il y a %1 jour(s) + + %1 day(s) ago + days elapsed since file last modified + + Il y a %1 jour + Il y a %1 jour(s) + - - %1 month(s) ago - months elapsed since file last modified - Il y a %1 moisIl y a %1 moisIl y a %1 mois + + %1 month(s) ago + months elapsed since file last modified + + Il y a %1 mois + Il y a %1 mois + - - %1 year(s) ago - years elapsed since file last modified - Il y a %1 anIl y a %1 an(s)Il y a %1 an(s) + + %1 year(s) ago + years elapsed since file last modified + + Il y a %1 an + Il y a %1 an(s) + - - Locked by %1 - Expires in %2 minute(s) - remaining time before lock expires - Verrouillé par %1 - Expire dans %2 minuteVerrouillé par %1 - Expire dans %2 minute(s)Verrouillé par %1 - Expire dans %2 minute(s) - - - + + Locked by %1 - Expires in %2 minute(s) + remaining time before lock expires + + Verrouillé par %1 - Expire dans %2 minute + Verrouillé par %1 - Expire dans %2 minute(s) + + + + OCC::Flow2Auth - - The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - L'URL du sondage ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + L'URL du sondage ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. - - - Error returned from the server: <em>%1</em> - Erreur renvoyée par le serveur : <em>%1</em> + + + Error returned from the server: <em>%1</em> + Erreur renvoyée par le serveur : <em>%1</em> - - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> + + + There was an error accessing the "token" endpoint: <br><em>%1</em> + Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> - - - Could not parse the JSON returned from the server: <br><em>%1</em> - Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> + + + Could not parse the JSON returned from the server: <br><em>%1</em> + Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> - - - The reply from the server did not contain all expected fields - La réponse du serveur ne contient pas tous les champs attendus + + + The reply from the server did not contain all expected fields + La réponse du serveur ne contient pas tous les champs attendus - - The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - L'URL renvoyée par le serveur ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + L'URL renvoyée par le serveur ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. - - + + OCC::Flow2AuthWidget - - Unable to open the Browser, please copy the link to your Browser. - Impossible d'ouvrir le navigateur, veuillez copier le lien dans votre navigateur Web. + + Unable to open the Browser, please copy the link to your Browser. + Impossible d'ouvrir le navigateur, veuillez copier le lien dans votre navigateur Web. - - Waiting for authorization - En attente de l'autorisation + + + Error + Erreur - - Polling for authorization - En attente de l'autorisation + + Waiting for authorization + En attente de l'autorisation - - Starting authorization - Démarrage de l'autorisation + + Polling for authorization + En attente de l'autorisation - - Link copied to clipboard. - Lien copié dans le presse-papier + + Starting authorization + Démarrage de l'autorisation - - Reopen Browser - Rouvrir le navigateur + + Link copied to clipboard. + Lien copié dans le presse-papier - - Copy Link - Copier le lien + + Open Browser + Ouvrir le navigateur - - + + + Switch to your browser to connect your account + Basculez sur votre navigateur pour connecter votre compte + + + Reopen Browser + Rouvrir le navigateur + + + + Copy Link + Copier le lien + + + OCC::Folder - - Local folder %1 does not exist. - Le dossier local %1 n'existe pas. + + Local folder %1 does not exist. + Le dossier local %1 n'existe pas. - - %1 should be a folder but is not. - %1 devrait être un dossier mais ne l'est pas. + + %1 should be a folder but is not. + %1 devrait être un dossier mais ne l'est pas. - - %1 is not readable. - %1 ne peut pas être lu. + + %1 is not readable. + %1 ne peut pas être lu. - - %1 and %n other file(s) have been removed. - %1 a été supprimé.%1 et %n autres fichiers ont été supprimés.%1 et %n autres fichiers ont été supprimés. + + %1 and %n other file(s) have been removed. + + %1 a été supprimé. + %1 et %n autres fichiers ont été supprimés. + - - %1 has been removed. - %1 names a file. - %1 a été supprimé. + + %1 has been removed. + %1 names a file. + %1 a été supprimé. - - %1 and %n other file(s) have been added. - %1 et %n autre fichier ont été ajoutés.%1 et %n autres fichiers ont été ajoutés.%1 et %n autres fichiers ont été ajoutés. + + %1 and %n other file(s) have been added. + + %1 et %n autre fichier ont été ajoutés. + %1 et %n autres fichiers ont été ajoutés. + - - %1 has been added. - %1 names a file. - %1 a été ajouté. + + %1 has been added. + %1 names a file. + %1 a été ajouté. - - %1 and %n other file(s) have been updated. - %1 a été mis à jour.%1 et %n autres fichiers ont été mis à jour.%1 et %n autres fichiers ont été mis à jour. + + %1 and %n other file(s) have been updated. + + %1 a été mis à jour. + %1 et %n autres fichiers ont été mis à jour. + - - %1 has been updated. - %1 names a file. - %1 a été mis à jour. + + %1 has been updated. + %1 names a file. + %1 a été mis à jour. - - %1 has been renamed to %2 and %n other file(s) have been renamed. - %1 a été renommé en %2.%1 a été renommé en %2 et %n autres fichiers ont été renommés.%1 a été renommé en %2 et %n autres fichiers ont été renommés. + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + %1 a été renommé en %2. + %1 a été renommé en %2 et %n autres fichiers ont été renommés. + - - %1 has been renamed to %2. - %1 and %2 name files. - %1 a été renommé en %2. + + %1 has been renamed to %2. + %1 and %2 name files. + %1 a été renommé en %2. - - %1 has been moved to %2 and %n other file(s) have been moved. - %1 a été déplacé vers %2.%1 a été déplacé vers %2 et %n autres fichiers ont été déplacés.%1 a été déplacé vers %2 et %n autres fichiers ont été déplacés. + + %1 has been moved to %2 and %n other file(s) have been moved. + + %1 a été déplacé vers %2. + %1 a été déplacé vers %2 et %n autres fichiers ont été déplacés. + - - %1 has been moved to %2. - %1 a été déplacé vers %2. + + %1 has been moved to %2. + %1 a été déplacé vers %2. - - %1 has and %n other file(s) have sync conflicts. - %1 a un conflit de synchronisation.%1 et %n autres fichiers ont des problèmes de synchronisation.%1 et %n autres fichiers ont des problèmes de synchronisation. + + %1 has and %n other file(s) have sync conflicts. + + %1 a un conflit de synchronisation. + %1 et %n autres fichiers ont des problèmes de synchronisation. + - - %1 has a sync conflict. Please check the conflict file! - %1 a un problème de synchronisation. Merci de vérifier le fichier conflit ! + + %1 has a sync conflict. Please check the conflict file! + %1 a un problème de synchronisation. Merci de vérifier le fichier conflit ! - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - %1 ne peut pas être synchronisé en raison d'erreurs. Consultez les logs pour les détails.%1 et %n autres fichiers n'ont pas pu être synchronisés en raison d'erreurs. Consultez les logs pour les détails.%1 et %n autres fichiers n'ont pas pu être synchronisés en raison d'erreurs. Consultez les logs pour les détails. + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + %1 ne peut pas être synchronisé en raison d'erreurs. Consultez les logs pour les détails. + %1 et %n autres fichiers n'ont pas pu être synchronisés en raison d'erreurs. Consultez les logs pour les détails. + - - %1 could not be synced due to an error. See the log for details. - %1 n'a pu être synchronisé pour cause d'erreur. Consultez les logs pour les détails. + + %1 could not be synced due to an error. See the log for details. + %1 n'a pu être synchronisé pour cause d'erreur. Consultez les logs pour les détails. - - %1 and %n other file(s) are currently locked. - %1 et %n autre fichier sont verrouillés.%1 et %n autres fichiers sont verrouillés.%1 et %n autres fichiers sont verrouillés. + + %1 and %n other file(s) are currently locked. + + %1 et %n autre fichier sont verrouillés. + %1 et %n autres fichiers sont verrouillés. + - - %1 is currently locked. - %1 est actuellement verrouillé. + + %1 is currently locked. + %1 est actuellement verrouillé. - - Sync Activity - Activité de synchronisation + + Sync Activity + Activité de synchronisation - - Could not read system exclude file - Impossible de lire le fichier d'exclusion du système + + Could not read system exclude file + Impossible de lire le fichier d'exclusion du système - - A new folder larger than %1 MB has been added: %2. + + A new folder larger than %1 MB has been added: %2. - Un nouveau dossier de taille supérieure à %1 Mo a été ajouté : %2. + Un nouveau dossier de taille supérieure à %1 Mo a été ajouté : %2. - - A folder from an external storage has been added. + + A folder from an external storage has been added. - Un nouveau dossier localisé sur un stockage externe a été ajouté. + Un nouveau dossier localisé sur un stockage externe a été ajouté. - - Please go in the settings to select it if you wish to download it. - Merci d'aller dans les Paramètres pour indiquer si vous souhaitez le télécharger. + + Please go in the settings to select it if you wish to download it. + Merci d'aller dans les Paramètres pour indiquer si vous souhaitez le télécharger. - - A folder has surpassed the set folder size limit of %1MB: %2. + + A folder has surpassed the set folder size limit of %1MB: %2. %3 - Un dossier a dépassé la taille limite fixée de %1MB: %2. + Un dossier a dépassé la taille limite fixée de %1MB: %2. %3 - - Keep syncing - Continuer la synchronisation + + Keep syncing + Continuer la synchronisation - - Stop syncing - Arrêter la synchronisation + + Stop syncing + Arrêter la synchronisation - - The folder %1 has surpassed the set folder size limit of %2MB. - Le dossier %1 a dépassé la taille limite fixée de %2MB. + + The folder %1 has surpassed the set folder size limit of %2MB. + Le dossier %1 a dépassé la taille limite fixée de %2MB. - - Would you like to stop syncing this folder? - Voulez vous arrêter la synchronisation de ce dossier ? + + Would you like to stop syncing this folder? + Voulez vous arrêter la synchronisation de ce dossier ? - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. - Le dossier %1 a été créé mais il était exclu de la synchronisation auparavant. Les données qu'il contient ne seront pas synchronisées. + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + Le dossier %1 a été créé mais il était exclu de la synchronisation auparavant. Les données qu'il contient ne seront pas synchronisées. - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. - Le fichier %1 a été créé mais il était exclu de la synchronisation auparavant. Il ne sera pas synchronisé. + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + Le fichier %1 a été créé mais il était exclu de la synchronisation auparavant. Il ne sera pas synchronisé. - - Changes in synchronized folders could not be tracked reliably. + + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). %1 - Les modifications apportées aux dossiers synchronisés ne peuvent pas être suivies de manière fiable. + Les modifications apportées aux dossiers synchronisés ne peuvent pas être suivies de manière fiable. -Cela signifie que le client de synchronisation ne va pas téléverser immédiatement les modifications locales, mais va à la place rechercher et téléverser les modifications locales qu'occasionnellement (toutes les deux heures par défaut). +Cela signifie que le client de synchronisation ne va pas téléverser immédiatement les modifications locales, mais va à la place rechercher et téléverser les modifications locales qu'occasionnellement (toutes les deux heures par défaut). %1 - - Virtual file download failed with code "%1", status "%2" and error message "%3" - Le téléchargement du fichier virtuel a échoué avec le code « %1 », état « %2 » et le message d'erreur « %3 » + + Virtual file download failed with code "%1", status "%2" and error message "%3" + Le téléchargement du fichier virtuel a échoué avec le code « %1 », état « %2 » et le message d'erreur « %3 » + + + + All files in the server folder "%1" were deleted. + +If you restore the files, they will be uploaded again to the server. + "Tous les fichiers du dossier ""%1"" du serveur ont été supprimés. + +Si vous restaurez les fichiers, ils seront à nouveau téléchargés sur le serveur." + + + + + All files in the local folder "%1" were deleted. + +If you restore the files, they will be downloaded again from the server. + "Tous les fichiers du dossier local ""%1"" ont été supprimés. + +Si vous restaurez les fichiers, ils seront à nouveau téléchargés depuis le serveur. " + + + + + Remove all files? + Supprimer tous les fichiers ? + + + + Proceed to remove all files + Confirmer la suppression de tous les fichiers + + + + Restore files + Restaurer les fichiers - - All files in the sync folder "%1" folder were deleted on the server. -These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. + All files in the sync folder "%1" folder were deleted on the server. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Tous les fichiers du dossier de synchronisation "%1" ont été supprimés sur le serveur. + Tous les fichiers du dossier de synchronisation "%1" ont été supprimés sur le serveur. Ces suppressions seront synchronisées avec votre dossier local, ce qui rendra les fichiers non disponibles à moins que vous ayez les droits de les restaurer. Si vous décidez de garder ces fichiers, ils seront resynchronisés avec le serveur si vous avez les droits pour le faire. Si vous décidez de supprimer ces fichiers, ils ne vous seront plus accessibles à moins que vous en soyez le propriétaire. - - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - Tous les fichiers contenus dans le dossier synchronisé "%1" ont été supprimés. Ces suppressions seront synchronisées avec votre serveur, rendant ces fichiers inaccessibles sauf s'ils sont restaurés ultérieurement. + Tous les fichiers contenus dans le dossier synchronisé "%1" ont été supprimés. Ces suppressions seront synchronisées avec votre serveur, rendant ces fichiers inaccessibles sauf s'ils sont restaurés ultérieurement. Êtes-vous sûr de vouloir synchroniser ces actions avec le serveur ? -S'il s'agissait d'un accident et que vous choisissiez de conserver vos fichiers, ils seront synchronisés à nouveau depuis le serveur. +S'il s'agissait d'un accident et que vous choisissiez de conserver vos fichiers, ils seront synchronisés à nouveau depuis le serveur. - - Remove All Files? - Retirer tous les fichiers ? + Remove All Files? + Retirer tous les fichiers ? - - Remove all files - Retirer tous les fichiers + Remove all files + Retirer tous les fichiers - - Keep files - Conserver les fichiers + Keep files + Conserver les fichiers - - + + OCC::FolderCreationDialog - - Create new folder - Créer un nouveau dossier + + Create new folder + Créer un nouveau dossier - - Enter folder name - Saisissez le nom du dossier + + Enter folder name + Saisissez le nom du dossier - - Folder already exists - Le dossier existe déjà + + Folder already exists + Le dossier existe déjà - - Error - Erreur + + %1 Create new folder + %1 Créer un nouveau dossier - - Could not create a folder! Check your write permissions. - Impossible de créer le dossier ! Veuillez vérifier vos permissions d’écriture. + + Error + Erreur - - + + + Could not create a folder! Check your write permissions. + Impossible de créer le dossier ! Veuillez vérifier vos permissions d’écriture. + + + OCC::FolderMan - - Could not reset folder state - Impossible de réinitialiser l'état du dossier + + Could not reset folder state + Impossible de réinitialiser l'état du dossier - - An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. - Un ancien fichier journal "%1" a été trouvé, mais ne peut être supprimé. Veuillez vous assurer qu’aucune application ne l'utilise en ce moment. + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + Un ancien fichier journal "%1" a été trouvé, mais ne peut être supprimé. Veuillez vous assurer qu’aucune application ne l'utilise en ce moment. - - (backup) - (sauvegarde) + + (backup) + (sauvegarde) - - (backup %1) - (sauvegarde %1) + + (backup %1) + (sauvegarde %1) - - Undefined state. - Statut indéfini. + + Undefined state. + Statut indéfini. - - Waiting to start syncing. - En attente de synchronisation. + + Waiting to start syncing. + En attente de synchronisation. - - Preparing for sync. - Préparation de la synchronisation. + + Preparing for sync. + Préparation de la synchronisation. - - Sync is running. - Synchronisation en cours + + Sync is running. + Synchronisation en cours - - Sync finished with unresolved conflicts. - Synchronisation terminée avec des conflits non résolus. + + Sync finished with unresolved conflicts. + Synchronisation terminée avec des conflits non résolus. - - Last sync was successful. - Synchronisation terminée avec succès + + Last sync was successful. + Synchronisation terminée avec succès - - Setup error. - Erreur de paramétrage. + + Setup error. + Erreur de paramétrage. - - Sync request was cancelled. - La requête de synchronisation a été annulée. + + Sync request was cancelled. + La requête de synchronisation a été annulée. - - Sync is paused. - La synchronisation est en pause. + + Sync is paused. + La synchronisation est en pause. - - %1 (Sync is paused) - %1 (Synchronisation en pause) + + %1 (Sync is paused) + %1 (Synchronisation en pause) - - No valid folder selected! - Aucun dossier valable sélectionné ! + + No valid folder selected! + Aucun dossier valable sélectionné ! - - The selected path does not exist! - Le chemin sélectionné n'existe pas ! + + The selected path does not exist! + Le chemin sélectionné n'existe pas ! - - The selected path is not a folder! - Le chemin sélectionné n'est pas un dossier ! + + The selected path is not a folder! + Le chemin sélectionné n'est pas un dossier ! - - You have no permission to write to the selected folder! - Vous n'avez pas la permission d'écrire dans le dossier sélectionné ! + + + You have no permission to write to the selected folder! + Vous n'avez pas la permission d'écrire dans le dossier sélectionné ! - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! - Le dossier local %1 contient un dossier déjà utilisé pour une synchronisation de dossiers. Veuillez en choisir un autre ! + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + Le dossier local %1 contient un dossier déjà utilisé pour une synchronisation de dossiers. Veuillez en choisir un autre ! - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! - Le dossier local %1 se trouve dans un dossier déjà configuré pour une synchronisation de dossier. Veuillez en choisir un autre ! + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + Le dossier local %1 se trouve dans un dossier déjà configuré pour une synchronisation de dossier. Veuillez en choisir un autre ! - - There is already a sync from the server to this local folder. Please pick another local folder! - Il y a déjà une synchronisation depuis le serveur vers ce dossier local. Merci de choisir un autre dossier local ! + + There is already a sync from the server to this local folder. Please pick another local folder! + Il y a déjà une synchronisation depuis le serveur vers ce dossier local. Merci de choisir un autre dossier local ! - - + + OCC::FolderStatusDelegate - - Add Folder Sync Connection - Ajouter une synchronisation de dossier + Add Folder Sync Connection + Ajouter une synchronisation de dossier - - File - Fichier + + Add live backup + Ajouter une sauvegarde en temps réel - - + + + Synchronize any other local folder with your %1 + Synchronisez n’importe quel autre dossier local avec votre %1 + + + + File + Fichier + + + OCC::FolderStatusModel - - You need to be connected to add a folder - Vous devez être connecté pour ajouter un dossier + + You need to be connected to add a folder + Vous devez être connecté pour ajouter un dossier - - Click this button to add a folder to synchronize. - Cliquez ce bouton pour ajouter un dossier à synchroniser. + + Click this button to add a folder to synchronize. + Cliquez ce bouton pour ajouter un dossier à synchroniser. - - Could not decrypt! - Déchiffrage impossible ! + + Could not decrypt! + Déchiffrage impossible ! - - - %1 (%2) - %1 (%2) + + + %1 (%2) + %1 (%2) - - Error while loading the list of folders from the server. - Une erreur est survenue lors du chargement de la liste des dossiers depuis le serveur. + + Error while loading the list of folders from the server. + Une erreur est survenue lors du chargement de la liste des dossiers depuis le serveur. - - Fetching folder list from server … - Récupération de la liste des dossiers depuis le serveur... + + Fetching folder list from server … + Récupération de la liste des dossiers depuis le serveur... - - There are unresolved conflicts. Click for details. - Il y a des conflits non résolus. Cliquez pour plus de détails. + + There are unresolved conflicts. Click for details. + Il y a des conflits non résolus. Cliquez pour plus de détails. - - Virtual file support is enabled. - Support des fichiers virtuels activé. + + Virtual file support is enabled. + Support des fichiers virtuels activé. - - Signed out - Session fermée + + Signed out + Session fermée - - Synchronizing VirtualFiles with local folder - Synchronisation des fichiers virtuels avec le dossier local + + Synchronizing VirtualFiles with local folder + Synchronisation des fichiers virtuels avec le dossier local - - Synchronizing with local folder - Synchronisation avec le dossier local + + Synchronizing with local folder + Synchronisation avec le dossier local - - Checking for changes in remote "%1" - Vérification des modifications dans "%1" distant + + Checking for changes in remote "%1" + Vérification des modifications dans "%1" distant - - Checking for changes in local "%1" - Vérification des modifications dans "%1" local + + Checking for changes in local "%1" + Vérification des modifications dans "%1" local - - Reconciling changes - Rapprochement des modifications + + Reconciling changes + Rapprochement des modifications - - Syncing %1 - Example text: "Syncing 'foo.txt', 'bar.txt'" - Synchronisation de %1 + + Syncing %1 + Example text: "Syncing 'foo.txt', 'bar.txt'" + Synchronisation de %1 - - - , - , + + + , + , - - download %1/s - Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) - réception %1/s + + download %1/s + Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) + réception %1/s - - ↓ %1/s - ↓ %1/s + + ↓ %1/s + ↓ %1/s - - upload %1/s - Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) - Envoi %1/s + + upload %1/s + Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) + Envoi %1/s - - ↑ %1/s - ↑ %1/s + + ↑ %1/s + ↑ %1/s - - %1 %2 (%3 of %4) - Example text: "uploading foobar.png (2MB of 2MB)" - %1 %2 (%3 sur %4) + + %1 %2 (%3 of %4) + Example text: "uploading foobar.png (2MB of 2MB)" + %1 %2 (%3 sur %4) - - %1 %2 - Example text: "uploading foobar.png" - %1 %2 + + %1 %2 + Example text: "uploading foobar.png" + %1 %2 - - A few seconds left, %1 of %2, file %3 of %4 - Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" - Quelques secondes restantes, %1 de %2, fichier %3 parmi %4 + + A few seconds left, %1 of %2, file %3 of %4 + Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" + Quelques secondes restantes, %1 de %2, fichier %3 parmi %4 - - %5 left, %1 of %2, file %3 of %4 - %5 restantes, %1 sur %2, fichier %3 sur %4 + + %5 left, %1 of %2, file %3 of %4 + %5 restantes, %1 sur %2, fichier %3 sur %4 - - %1 of %2, file %3 of %4 - Example text: "12 MB of 345 MB, file 6 of 7" - %1 sur %2, fichier %3 sur %4 + + %1 of %2, file %3 of %4 + Example text: "12 MB of 345 MB, file 6 of 7" + %1 sur %2, fichier %3 sur %4 - - file %1 of %2 - fichier %1 sur %2 + + file %1 of %2 + fichier %1 sur %2 - - Waiting … - En attente ... + + Waiting … + En attente ... - - Waiting for %n other folder(s) … - En attente de %n autre dossier ...En attente de %n autres dossiers ...En attente de %n autres dossiers ... + + Waiting for %n other folder(s) … + + En attente de %n autre dossier ... + En attente de %n autres dossiers ... + - - Preparing to sync … - Préparation de la synchronisation ... + + Preparing to sync … + Préparation de la synchronisation ... - - + + OCC::FolderWatcher - - The watcher did not receive a test notification. - L'observateur n'a pas reçu de notification de test. + + The watcher did not receive a test notification. + L'observateur n'a pas reçu de notification de test. - - + + OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. - Ce problème survient généralement lorsque les points de surveillance inotify sont épuisés. Consultez la FAQ pour plus de détails. + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + Ce problème survient généralement lorsque les points de surveillance inotify sont épuisés. Consultez la FAQ pour plus de détails. - - + + OCC::FolderWizard - - Add Folder Sync Connection - Ajouter une synchronisation de dossier + + Add Folder Sync Connection + Ajouter une synchronisation de dossier - - Add Sync Connection - Ajouter la synchronisation + + Add Sync Connection + Ajouter la synchronisation - - + + OCC::FolderWizardLocalPath - - Click to select a local folder to sync. - Cliquez pour choisir un dossier local à synchroniser. + + Click to select a local folder to sync. + Cliquez pour choisir un dossier local à synchroniser. - - Enter the path to the local folder. - Entrez le chemin du dossier local. + + Enter the path to the local folder. + Entrez le chemin du dossier local. - - Select the source folder - Sélectionnez le dossier source + + Select the source folder + Sélectionnez le dossier source - - - OCC::FolderWizardRemotePath - - Create Remote Folder - Créer un dossier distant + + Add Folder Sync + Ajouter une synchronisation de dossiers - - Enter the name of the new folder to be created below "%1": - Entrez le nom du nouveau dossier à créer dans "%1" : + + Step 1 of 3: Select local folder + Étape 1 sur 3 : sélectionner un dossier local - - Folder was successfully created on %1. - Le dossier a été créé sur %1 + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés - - Authentication failed accessing %1 - Erreur d'authentification lors de l'accès à %1 + + Choose + Choisir + + + OCC::FolderWizardRemotePath - - Failed to create the folder on %1. Please check manually. - Échec à la création du dossier sur %1. Veuillez vérifier manuellement. + + Create Remote Folder + Créer un dossier distant - - Failed to list a folder. Error: %1 - Impossible de lister un dossier. Erreur : %1 + + Enter the name of the new folder to be created below "%1": + Entrez le nom du nouveau dossier à créer dans "%1" : - - Choose this to sync the entire account - Sélectionnez ceci pour synchroniser l'ensemble du compte + + Folder was successfully created on %1. + Le dossier a été créé sur %1 - - This folder is already being synced. - Ce dossier est déjà en cours de synchronisation. + + Authentication failed accessing %1 + Erreur d'authentification lors de l'accès à %1 - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - Vous synchronisez déjà <i>%1</i> qui est un dossier parent de <i>%2</i>. + + Failed to create the folder on %1. Please check manually. + Échec à la création du dossier sur %1. Veuillez vérifier manuellement. - - You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - Vous synchronisez déjà <i>%1</i> qui est un sous-dossier de <i>%2</i>. + + Failed to list a folder. Error: %1 + Impossible de lister un dossier. Erreur : %1 - - - OCC::FolderWizardSelectiveSync - - - Use virtual files instead of downloading content immediately %1 - Utiliser les fichiers virtuels au lieu de télécharger le contenu immédiatement %1 + + Choose this to sync the entire account + Sélectionnez ceci pour synchroniser l'ensemble du compte - - - (experimental) - (expérimental) + + This folder is already being synced. + Ce dossier est déjà en cours de synchronisation. - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Vous ne pouvez pas définir la racine d'une partition Windows pour votre dossier local. Veuillez choisir un (sous)dossier de la partition. + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + Vous synchronisez déjà <i>%1</i> qui est un dossier parent de <i>%2</i>. - - Virtual files are not available for the selected folder - Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + Vous synchronisez déjà <i>%1</i> qui est un sous-dossier de <i>%2</i>. - - - OCC::FormatWarningsWizardPage - - <b>Warning:</b> %1 - <b>Avertissement :</b> %1 + + Add Folder Sync + Ajouter une synchronisation de dossiers - - <b>Warning:</b> - <b>Avertissement :</b> + + Step 2 of 3: Directory in your %1 + Étape 2 sur 3 : répertoire dans votre %1 - - - OCC::GETFileJob - - No E-Tag received from server, check Proxy/Gateway - Aucun E-Tag reçu du serveur, vérifiez le proxy / la passerelle + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. - - We received a different E-Tag for resuming. Retrying next time. - Nous avons reçu un E-Tag différent pour reprendre le téléchargement. Nouvel essai la prochaine fois. + + Refresh + Rafraîchir - - We received an unexpected download Content-Length. - Nous avons reçu un téléchargement de Contenu-Longeur inattendu + + Create folder + Créer un dossier + + + OCC::FolderWizardSelectiveSync - - Server returned wrong content-range - Le serveur a retourné une gamme de contenu erronée + + + Use virtual files instead of downloading content immediately %1 + Utiliser les fichiers virtuels - - Connection Timeout - Délai d'attente de connexion dépassé + + + (experimental) + (expérimental) - - - OCC::GeneralSettings - - Advanced - Avancés + + Add Folder Sync + Ajouter une synchronisation de dossiers - - - About - À propos + + Step 3 of 3: Selektive Synchronisation + Étape 3 sur 3 : synchronisation sélective - - Ask for confirmation before synchronizing new folders larger than - Demander la confirmation avant de synchroniser les dossiers plus grands que + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Vous ne pouvez pas définir la racine d'une partition Windows pour votre dossier local. Veuillez choisir un (sous)dossier de la partition. - - Legal notice - Notice légale + + Virtual files are not available for the selected folder + Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné + + + OCC::FormatWarningsWizardPage - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - Mo + <b>Warning:</b> %1 + <b>Avertissement :</b> %1 - - Use &Monochrome Icons - Utiliser les icônes &monochromes + <b>Warning:</b> + <b>Avertissement :</b> - - &Launch on System Startup - &Lancer au démarrage du système + + %1 + %1 + + + OCC::GETFileJob - - Show Server &Notifications - Afficher les &notifications serveur + + No E-Tag received from server, check Proxy/Gateway + Aucun E-Tag reçu du serveur, vérifiez le proxy / la passerelle - - Notify when synchronised folders grow larger than specified limit - Notifier quand des dossiers synchronisés deviennent plus grand que la limite spécifiée + + We received a different E-Tag for resuming. Retrying next time. + Nous avons reçu un E-Tag différent pour reprendre le téléchargement. Nouvel essai la prochaine fois. - - Show Call Notifications - Afficher les notifications des appels + + We received an unexpected download Content-Length. + Nous avons reçu un téléchargement de Contenu-Longeur inattendu - - Updates - Mises à jour + + Server returned wrong content-range + Le serveur a retourné une gamme de contenu erronée - - &Automatically check for Updates - &Vérifier automatiquement la présence de nouvelles mises à jour + + Connection Timeout + Délai d'attente de connexion dépassé + + + OCC::GeneralSettings - - Automatically disable synchronisation of folders that overcome limit - Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite + + Advanced + Avancés - - &Channel - Canal + About + À propos - - Ask for confirmation before synchronizing external storages - Demander confirmation avant de synchroniser des stockages externes + Ask for confirmation before synchronizing new folders larger than + Demander la confirmation avant de synchroniser les dossiers plus grands que - - Move removed files to trash - Déplacer les fichiers supprimés vers la corbeille + Legal notice + Notice légale - - Show sync folders in &Explorer's navigation pane - Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers + MB + Trailing part of "Ask confirmation before syncing folder larger than" + Mo - - S&how crash reporter - Affic&her le rapport d'incident + Use &Monochrome Icons + Utiliser les icônes &monochromes - - Edit &Ignored Files - Modifier les fichiers exclus + &Launch on System Startup + &Lancer au démarrage du système - - - Create Debug Archive - Créer l’archive de débogage + Show Server &Notifications + Afficher les &notifications serveur - - &Check for Update now - &Vérifier la présence de mises à jour maintenant + Notify when synchronised folders grow larger than specified limit + Notifier quand des dossiers synchronisés deviennent plus grand que la limite spécifiée - - Info - Informations + Show Call Notifications + Afficher les notifications des appels - - Ask for confirmation before synchronizing folders larger than - Demander confirmation avant de synchroniser les dossiers de taille supérieure à + + Updates + Mises à jour - - Desktop client x.x.x - Client de bureau x.x.x + &Automatically check for Updates + &Vérifier automatiquement la présence de nouvelles mises à jour - - Update channel - Canal de mise à jour + Automatically disable synchronisation of folders that overcome limit + Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite - - - stable - stable + &Channel + Canal - - - beta - bêta + Ask for confirmation before synchronizing external storages + Confirmation avant de synchroniser des stockages externes - - &Restart && Update - Redémarrer et Mettre à jour + + Move removed files to trash + Déplacer les fichiers supprimés vers la corbeille - - Show sync folders in &Explorer's Navigation Pane - Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers + Show sync folders in &Explorer's navigation pane + Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers - - &Automatically check for updates - &Vérifier automatiquement les nouvelles mises à jour + + S&how crash reporter + Affic&her le rapport d'incident - - Check Now - Vérifier maintenant + + Edit &Ignored Files + Modifier les fichiers exclus - - Usage Documentation - Documentation d'utilisation + + + Create Debug Archive + Créer l’archive de débogage - - Legal Notice - Mentions légales + &Check for Update now + &Vérifier la présence de mises à jour maintenant - - General Settings - Paramètres généraux + Info + Informations - - For System Tray - Pour la zone de notification système + Ask for confirmation before synchronizing folders larger than + Demander confirmation avant de synchroniser les dossiers de taille supérieure à - - Use &monochrome icons - Utiliser les icônes &monochromes + + Desktop client x.x.x + Client de bureau x.x.x - - &Launch on system startup - &Lancer au démarrage du système + + Update channel + Canal de mise à jour - - Show server &notifications - Afficher les &notifications serveur + + Ask for confirmation before + synchronizing new folders larger than + + - - Show call notifications - Afficher les notifications des appels + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + MO +Dernière partie de « Demander confirmation avant de synchroniser un dossier plus grand que » + - - Server notifications that require attention. - Les notifications du serveur requérant votre attention. + + Notify when synchronised folders grow + larger than specified limit + + - - Show call notification dialogs. - Montre les fenêtres de notification d'appel. + + Automatically disable synchronisation of + folders that overcome limit + + - - You cannot disable autostart because system-wide autostart is enabled. - Vous ne pouvez pas désactiver le démarrage automatique parce que le démarrage automatique à l'échelle du système est activé. + + Ask for confirmation before synchronizing + external storages + + - - Change update channel? - Changer de canal de mise à jour ? + + Show sync folders in &Explorer's navigation + pane + + - - The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. - -Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. - Le canal de mise à jour détermine quelles mises à jour du client seront proposées pour l'installation. Le canal "stable" ne contient que les mises à jour considérées comme fiables, tandis que les versions du canal "bêta" peuvent contenir des fonctionnalités plus récentes et des corrections de bogues, mais n'ont pas encore été testées de manière approfondie. - -Notez que cela ne permet seulement que de sélectionner où sont récupérées les mises à jour et qu'il n'y a pas de possibilité de rétrograder : ainsi, le retour du canal "bêta" au canal "stable" ne peut généralement pas être fait immédiatement, et implique d'attendre une version stable plus récente que la version bêta actuellement installée. + + Data Protection + Protection des données - - Change update channel - Changer de canal de mise à jour + + &Analysis data collection for needs-based design + &Collecte des données d’analyse pour une conception basée sur les besoins - - Cancel - Annuler + + Privacy Policy + Politique de confidentialité - - Zip Archives - Archives Zip + + Open Source Software + Logiciel libre - - Debug Archive Created - Archive de déboggage créée + + + stable + stable - - Debug archive is created at %1 - Archive de déboggage créée à %1 + + + beta + bêta - - - OCC::GetOrCreatePublicLinkShare - - Password for share required - Mot de passe requis + + &Restart && Update + Redémarrer et Mettre à jour - - Please enter a password for your link share: - Veuillez saisir un mot de passe pour votre lien partagé : + + More Information + Plus d’informations - - Sharing error - Erreur de partage + Show sync folders in &Explorer's Navigation Pane + Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers - - Could not retrieve or create the public link share. Error: - -%1 - Impossible de récupérer ou de créer le lien public pour le partage. - -%1 + + &Automatically check for updates + &Vérifier automatiquement les nouvelles mises à jour - - - OCC::HttpCredentialsGui - - Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - Merci de saisir %1 mot de passe :<br><br>Identifiant : %2<br>Compte : %3<br> + + Check Now + Vérifier maintenant - - Reading from keychain failed with error: "%1" - La lecture à partir du trousseau a échoué avec l'erreur : "%1" + + Usage Documentation + Documentation d'utilisation - - Enter Password - Saisissez le mot de passe + + Legal Notice + Mentions légales - - <a href="%1">Click here</a> to request an app password from the web interface. - <a href="%1">Cliquez ici</a> pour demander un mot de passe d'application depuis l'interface web. + + General Settings + Paramètres généraux - - - OCC::IgnoreListEditor - - Ignored Files Editor - Éditeur d'exclusion de fichiers + + For System Tray + Pour la zone de notification système - - Global Ignore Settings - Paramètres globaux d'exclusion + + Use &monochrome icons + Utiliser les icônes &monochromes - - Sync hidden files - Synchroniser les fichiers masqués + + &Launch on system startup + &Lancer au démarrage du système - - Files Ignored by Patterns - Fichiers exclus sur motif de nom + + Show server &notifications + Afficher les &notifications serveur - - This entry is provided by the system at "%1" and cannot be modified in this view. - Cette entrée est fournie par le système dans "%1" et ne peut être modifiée dans cette vue. + + Show call notifications + Afficher les notifications des appels - - - OCC::IgnoreListTableWidget - - Pattern - Motif + + Server notifications that require attention. + Les notifications du serveur requérant votre attention. - - Allow Deletion - Autoriser la suppression + + Show call notification dialogs. + Montre les fenêtres de notification d'appel. - - Add - Ajouter + + You cannot disable autostart because system-wide autostart is enabled. + Vous ne pouvez pas désactiver le démarrage automatique parce que le démarrage automatique à l'échelle du système est activé. - - Remove - Supprimer + + Change update channel? + Changer de canal de mise à jour ? - - Remove all - Supprimer tout + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + +Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. + Le canal de mise à jour détermine quelles mises à jour du client seront proposées pour l'installation. Le canal "stable" ne contient que les mises à jour considérées comme fiables, tandis que les versions du canal "bêta" peuvent contenir des fonctionnalités plus récentes et des corrections de bogues, mais n'ont pas encore été testées de manière approfondie. + +Notez que cela ne permet seulement que de sélectionner où sont récupérées les mises à jour et qu'il n'y a pas de possibilité de rétrograder : ainsi, le retour du canal "bêta" au canal "stable" ne peut généralement pas être fait immédiatement, et implique d'attendre une version stable plus récente que la version bêta actuellement installée. - - Files or folders matching a pattern will not be synchronized. - -Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Les fichiers ou dossiers correspondant à un motif ne seront pas synchronisés. -Les éléments ayant l'option « Autoriser la suppression » pourront être supprimés pour ne pas bloquer la suppression d'un dossier. Utile pour les méta-données. + + Change update channel + Changer de canal de mise à jour - - Could not open file - Impossible d'ouvrir le fichier + + Cancel + Annuler - - Cannot write changes to "%1". - Impossible d'écrire les modifications sur "%1". + + Zip Archives + Archives Zip - - Add Ignore Pattern - Ajouter un motif d'exclusion + + Debug Archive Created + Archive de déboggage créée - - Add a new ignore pattern: - Ajouter un nouveau motif d'exclusion : + + Debug archive is created at %1 + Archive de déboggage créée à %1 - - - OCC::InvalidFilenameDialog + + + OCC::GetOrCreatePublicLinkShare - - Invalid filename - Nom de fichier invalide + + Password for share required + Mot de passe requis - - The file could not be synced because it contains characters which are not allowed on this system. - Le fichier n'a pas pu être synchronisé parce qu'il contiens des caractères invalides ou non-supportés par votre système. + + Please enter a password for your link share: + Veuillez saisir un mot de passe pour votre lien partagé : - - Error - Erreur + + Sharing error + Erreur de partage - - Please enter a new name for the file: - Veuillez saisir le nouveau nom du fichier : + + Could not retrieve or create the public link share. Error: + +%1 + Impossible de récupérer ou de créer le lien public pour le partage. + +%1 + + + OCC::HttpCredentialsGui - - New filename - Nouveau nom de fichier + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + Merci de saisir %1 mot de passe :<br><br>Identifiant : %2<br>Compte : %3<br> - - Rename file - Renommer le fichier + + Reading from keychain failed with error: "%1" + La lecture à partir du trousseau a échoué avec l'erreur : "%1" - - The file "%1" could not be synced because the name contains characters which are not allowed on this system. - Le fichier "%1" n'a pas pu être synchronisé car son nom contient des caractères qui ne sont pas autorisés sur ce système. + + Enter Password + Saisissez le mot de passe - - The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - Les caractères suivants ne sont pas autorisés dans les noms de fichier sur ce système : * " | & ? , ; : \ / ~ < > espaces en début et fin de chaîne + + <a href="%1">Click here</a> to request an app password from the web interface. + <a href="%1">Cliquez ici</a> pour demander un mot de passe d'application depuis l'interface web. + + + OCC::IgnoreListEditor - - Checking rename permissions … - Vérification des permissions de renommage... + + Ignored Files Editor + Éditeur d'exclusion de fichiers - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Vous n'avez pas la permission de renommer ce fichier. Veuillez demander à son auteur de le renommer. + + Global Ignore Settings + Paramètres globaux d'exclusion - - Failed to fetch permissions with error %1 - Erreur à la récupération des permissions : %1 + + Sync hidden files + Synchroniser les fichiers masqués - - Filename contains leading and trailing spaces. - Le nom de fichier contient des espaces en début ou en fin de chaîne. + + Files Ignored by Patterns + Fichiers exclus sur motif de nom - - Filename contains leading spaces. - Le nom du fichier contient des espaces au début. + + This entry is provided by the system at "%1" and cannot be modified in this view. + Cette entrée est fournie par le système dans "%1" et ne peut être modifiée dans cette vue. + + + OCC::IgnoreListTableWidget - - Filename contains trailing spaces. - Le nom de fichier contient des espaces à la fin. + + Pattern + Motif - - Use invalid name - Nom invalide + + Allow Deletion + Autoriser la suppression - - Filename contains illegal characters: %1 - Le nom du fichier contiens des caractères illégaux: %1 + + Add + Ajouter - - Could not rename file. Please make sure you are connected to the server. - Impossible de renommer le fichier. Veuillez vous certifier que vous êtes bien connecté au serveur. + + Remove + Supprimer - - Cannot rename file because a file with the same name does already exist on the server. Please pick another name. - Impossible de renommer le fichier parce qu'un fichier avec le même nom existe déjà sur le serveur. Merci de choisir un autre nom. + + Remove all + Supprimer tout - - Could not rename local file. %1 - Impossible de renommer le dossier local %1 + Files or folders matching a pattern will not be synchronized. + +Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. + Les fichiers ou dossiers correspondant à un motif ne seront pas synchronisés. +Les éléments ayant l'option « Autoriser la suppression » pourront être supprimés pour ne pas bloquer la suppression d'un dossier. Utile pour les méta-données. - - - OCC::LegalNotice - - - Legal notice - Notice légale + + Files or folders that match this pattern will not be synchronized. + +Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. + Les fichiers ou dossiers qui correspondent à ce modèle ne seront pas synchronisés. + +Les objets autorisés à être supprimés le seront s'ils empêchent la suppression d'un dossier. Ceci est utile pour les métadonnées. + - - Close - Fermer + + Could not open file + Impossible d'ouvrir le fichier - - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + + Cannot write changes to "%1". + Impossible d'écrire les modifications sur "%1". - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> - <p>Sous licence GNU General Public License (GPL) Version 2.0 ou supérieure.</p> + + Ignore Pattern + Ignorer le modèle - - - OCC::LogBrowser - - Log Output - Consigner la sortie dans des fichiers de log + + Add New Ignore Pattern + Ajouter nouveau Ignorer le modèle - - The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. -Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. -If enabled, logs will be written to %1 - Le client peut écrire des fichiers de log pour le déboguage dans un dossier temporaire. Ces logs sont très utiles pour diagnostiquer les problèmes. -Comme ces fichiers de log peuvent devenir lourds, le client en commence un nouveau à chaque synchronisation et compresse les anciens. Il supprime aussi les logs après quelques heures pour économiser l'espace disque. -Si activés, les logs seront écrits dans %1 + Add Ignore Pattern + Ajouter un motif d'exclusion - - Enable logging to temporary folder - Activer la journalisation dans le dossier temporaire + Add a new ignore pattern: + Ajouter un nouveau motif d'exclusion : + + + OCC::InvalidFilenameDialog - - This setting persists across client restarts. -Note that using any logging command line options will override this setting. - Ce paramètre persiste lors des redémarrages du client. -Notez que l'utilisation de toute option de ligne de commande de journalisation remplacera ce paramètre. + + Invalid filename + Nom de fichier invalide - - Open folder - Ouvrir le dossier + + The file could not be synced because it contains characters which are not allowed on this system. + Le fichier n'a pas pu être synchronisé parce qu'il contiens des caractères invalides ou non-supportés par votre système. - - - OCC::Logger - - Error - Erreur + + Error + Erreur - - <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> - <nobr>Le fichier "%1"<br/>ne peut pas être ouvert en écriture.<br/><br/>Le fichier journal <b>ne peut pas</b> être sauvegardé !</nobr> + + Please enter a new name for the file: + Veuillez saisir le nouveau nom du fichier : - - - OCC::NSISUpdater - - New Version Available - Nouvelle version disponible + + New filename + Nouveau nom de fichier - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - <p>Une nouvelle version du client %1 est disponible.</p><p><b>%2</b> est disponible en téléchargement. La version actuellement installée est %3.<p> + + Rename file + Renommer le fichier - - Skip this time - Ignorer pour cette fois + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + Le fichier "%1" n'a pas pu être synchronisé car son nom contient des caractères qui ne sont pas autorisés sur ce système. - - Get update - Télécharger la version + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + Les caractères suivants ne sont pas autorisés dans les noms de fichier sur ce système : * " | & ? , ; : \ / ~ < > espaces en début et fin de chaîne - - Update Failed - Échec de mise à jour + + Checking rename permissions … + Vérification des permissions de renommage... - - <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> - <p>Une nouvelle version du Client %1 est disponible mais la mise à jour a échoué.</p><p><b>%2</b> a été téléchargé. La version installée est %3. Si vous confirmez le redémarrage et la mise à jour, votre ordinateur peut redémarrer pour terminer l'installation.</p> + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Vous n'avez pas la permission de renommer ce fichier. Veuillez demander à son auteur de le renommer. - - Ask again later - Demander plus tard + + Failed to fetch permissions with error %1 + Erreur à la récupération des permissions : %1 - - Restart and update - Redémarrer et mettre à jour + + Filename contains leading and trailing spaces. + Le nom de fichier contient des espaces en début ou en fin de chaîne. - - Update manually - Mettre à jour manuellement + + Filename contains leading spaces. + Le nom du fichier contient des espaces au début. - - + + + Filename contains trailing spaces. + Le nom de fichier contient des espaces à la fin. + + + + Use invalid name + Nom invalide + + + + Filename contains illegal characters: %1 + Le nom du fichier contiens des caractères illégaux: %1 + + + + Could not rename file. Please make sure you are connected to the server. + Impossible de renommer le fichier. Veuillez vous certifier que vous êtes bien connecté au serveur. + + + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + Impossible de renommer le fichier parce qu'un fichier avec le même nom existe déjà sur le serveur. Merci de choisir un autre nom. + + + + Could not rename local file. %1 + Impossible de renommer le dossier local %1 + + + + OCC::LegalNotice + + + + Legal notice + Notice légale + + + + Close + Fermer + + + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + + + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + <p>Sous licence GNU General Public License (GPL) Version 2.0 ou supérieure.</p> + + + + OCC::LogBrowser + + + Log Output + Consigner la sortie dans des fichiers de log + + + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. +Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. +If enabled, logs will be written to %1 + Le client peut écrire des fichiers de log pour le déboguage dans un dossier temporaire. Ces logs sont très utiles pour diagnostiquer les problèmes. +Comme ces fichiers de log peuvent devenir lourds, le client en commence un nouveau à chaque synchronisation et compresse les anciens. Il supprime aussi les logs après quelques heures pour économiser l'espace disque. +Si activés, les logs seront écrits dans %1 + + + + Enable logging to temporary folder + Activer la journalisation dans le dossier temporaire + + + + This setting persists across client restarts. +Note that using any logging command line options will override this setting. + Ce paramètre persiste lors des redémarrages du client. +Notez que l'utilisation de toute option de ligne de commande de journalisation remplacera ce paramètre. + + + + Open folder + Ouvrir le dossier + + + + OCC::Logger + + + Error + Erreur + + + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + <nobr>Le fichier "%1"<br/>ne peut pas être ouvert en écriture.<br/><br/>Le fichier journal <b>ne peut pas</b> être sauvegardé !</nobr> + + + + OCC::NSISUpdater + + + New Version Available + Nouvelle version disponible + + + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + <p>Une nouvelle version du client %1 est disponible.</p><p><b>%2</b> est disponible en téléchargement. La version actuellement installée est %3.<p> + + + + Skip this time + Ignorer pour cette fois + + + + Get update + Télécharger la version + + + + Update Failed + Échec de mise à jour + + + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + <p>Une nouvelle version du Client %1 est disponible mais la mise à jour a échoué.</p><p><b>%2</b> a été téléchargé. La version installée est %3. Si vous confirmez le redémarrage et la mise à jour, votre ordinateur peut redémarrer pour terminer l'installation.</p> + + + + Ask again later + Demander plus tard + + + + Restart and update + Redémarrer et mettre à jour + + + + Update manually + Mettre à jour manuellement + + + OCC::NetworkSettings - - Proxy Settings - Paramètres de serveur proxy + + Proxy Settings + Paramètres de serveur proxy - - No Proxy - Aucun serveur proxy + No Proxy + Aucun serveur proxy - - No proxy - Aucun serveur proxy + + No proxy + Aucun serveur proxy - - Use system proxy - Utiliser les paramètres du système + + Use system proxy + Utiliser les paramètres du système - - Specify proxy manually as - Indiquer un proxy manuellement + Specify proxy manually as + Indiquer un proxy manuellement - - Manually specify proxy - Spécifier manuellement le serveur proxy + + Manually specify proxy + Spécifier manuellement le serveur proxy - - Host - Hôte + + Host + Hôte - - Proxy server requires authentication - Le serveur proxy requiert une authentification + + Proxy server requires authentication + Le serveur proxy requiert une authentification - - Note: proxy settings have no effects for accounts on localhost - Remarque: les paramètres de proxy n'ont aucun effet sur les comptes sur localhost + + Note: proxy settings have no effects for accounts on localhost + Remarque: les paramètres de proxy n'ont aucun effet sur les comptes sur localhost - - Download Bandwidth - Bande passante de réception + + Download Bandwidth + Bande passante de réception - - - No limit - Aucune limite + + + No limit + Aucune limite - - - Limit to 3/4 of estimated bandwidth - Limiter aux 3/4 de la bande passante estimée + + + Limit to 3/4 of estimated bandwidth + Limiter aux 3/4 de la bande passante estimée - - - Limit automatically - Limiter automatiquement + + + Limit automatically + Limiter automatiquement - - - Limit to - Limiter à + + + Limit to + Limiter à - - - KBytes/s - Ko/s + + + KBytes/s + Ko/s - - Upload Bandwidth - Bande passante d'émission + + Upload Bandwidth + Bande passante d'émission - - Hostname of proxy server - Nom d'hôte du serveur proxy + + Hostname of proxy server + Nom d'hôte du serveur proxy - - Username for proxy server - Nom d’utilisateur pour le serveur proxy + + Username for proxy server + Nom d’utilisateur pour le serveur proxy - - Password for proxy server - Mot de passe pour le serveur proxy + + Password for proxy server + Mot de passe pour le serveur proxy - - HTTP(S) proxy - Proxy HTTP(S) + + HTTP(S) proxy + Proxy HTTP(S) - - SOCKS5 proxy - Proxy SOCKS5 + + SOCKS5 proxy + Proxy SOCKS5 - - + + + OCC::OAuth + + Error returned from the server: <em>%1</em> + Erreur renvoyée par le serveur: <em>%1</em> + + + There was an error accessing the "token" endpoint: <br><em>%1</em> + Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> + + + Empty JSON from OAuth2 redirect + Vider le JSON de la redirection OAuth2 + + + Could not parse the JSON returned from the server: <br><em>%1</em> + Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> + + + The reply from the server did not contain all expected fields + La réponse du serveur ne contient pas tous les champs attendus + + + <h1>Login Error</h1><p>%1</p> + <h1>Erreur de connexion</h1><p>%1</p> + + + <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> + <h1>Erreur de compte</h1><p>Vous êtes connecté(e) avec le compte <em>%1</em>, mais devez vous connecter avec le compte <em>%2</em>.<br>Merci de vous déconnecter de %3 dans un autre onglet, puis <a href='%4'>cliquez ici</a> et connectez-vous avec %2.</p> + + + OCC::OCUpdater - - New %1 update ready - Une nouvelle mise à jour de %1 est disponible + + New %1 update ready + Une nouvelle mise à jour de %1 est disponible - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - Une nouvelle mise à jour pour %1 est sur le point d'être installée. Le dispositif de mise à jour peut demander des autorisations supplémentaires au cours du processus. Votre ordinateur peut nécessiter un redémarrage pour terminer l'installation. + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + Une nouvelle mise à jour pour %1 est sur le point d'être installée. Le dispositif de mise à jour peut demander des autorisations supplémentaires au cours du processus. Votre ordinateur peut nécessiter un redémarrage pour terminer l'installation. - - Downloading %1. Please wait … - Réception en cours de %1. Veuillez patienter... + + Downloading %1. Please wait … + Réception en cours de %1. Veuillez patienter... - - %1 available. Restart application to start the update. - %1 disponible. Redémarrez l'application pour effectuer la mise à jour. + + %1 available. Restart application to start the update. + %1 disponible. Redémarrez l'application pour effectuer la mise à jour. - - Could not download update. Please open <a href='%1'>%1</a> to download the update manually. - Impossible de télécharger la mise à jour. Merci d'ouvrir <a href='%1'>%1</a> pour télécharger la mise à jour manuellement. + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + Impossible de télécharger la mise à jour. Merci d'ouvrir <a href='%1'>%1</a> pour télécharger la mise à jour manuellement. - - Could not download update. Please open %1 to download the update manually. - Impossible de télécharger la mise à jour. Ouvrez %1 pour télécharger manuellement la mise à jour. + + Could not download update. Please open %1 to download the update manually. + Impossible de télécharger la mise à jour. Ouvrez %1 pour télécharger manuellement la mise à jour. - - Could not check for new updates. - Impossible de vérifier la présence de nouvelles mises à jour. + + Could not check for new updates. + Impossible de vérifier la présence de nouvelles mises à jour. - - New %1 is available. Please open <a href='%2'>%2</a> to download the update. - Un nouveau %1 est disponible. Merci d'ouvrir <a href='%2'>%2</a> pour télécharger la mise à jour. + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + Un nouveau %1 est disponible. Merci d'ouvrir <a href='%2'>%2</a> pour télécharger la mise à jour. - - New %1 is available. Please open %2 to download the update. - Un nouveau %1 est disponible. Merci d'ouvrir %2 pour télécharger la mise à jour. + + New %1 is available. Please open %2 to download the update. + Un nouveau %1 est disponible. Merci d'ouvrir %2 pour télécharger la mise à jour. - - Checking update server … - Vérification du serveur de mises à jour ... + + Checking update server … + Vérification du serveur de mises à jour ... - - Update status is unknown: Did not check for new updates. - L'état du processus de mise à jour est inconnu. Impossible de vérifier la présence de mises à jour. + + Update status is unknown: Did not check for new updates. + L'état du processus de mise à jour est inconnu. Impossible de vérifier la présence de mises à jour. - - No updates available. Your installation is at the latest version. - Aucune mise à jour disponible. Votre installation est à jour. + + No updates available. Your installation is at the latest version. + Aucune mise à jour disponible. Votre installation est à jour. - - Update Check - Recherche de mise à jour + + Update Check + Recherche de mise à jour - - + + OCC::OwncloudAdvancedSetupPage - - Connect - Connexion + + Connect + Connexion - - - Use &virtual files instead of downloading content immediately %1 - Utiliser les fichiers virtuels plutôt que de télécharger le contenu immédiatement %1 + + + Use &virtual files instead of downloading content immediately %1 + Utiliser les fichiers virtuels %1 - - - (experimental) - (expérimental) + + + (experimental) + (expérimental) - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Les fichiers virtuels ne sont pas pris en charge pour les racines de partition Windows en tant que dossier local. Veuillez choisir un sous-dossier valide sous la lettre du lecteur. + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Les fichiers virtuels ne sont pas pris en charge pour les racines de partition Windows en tant que dossier local. Veuillez choisir un sous-dossier valide sous la lettre du lecteur. - - %1 folder "%2" is synced to local folder "%3" - Le dossier %1 "%2" est synchronisé avec le dossier local "%3". + + %1 folder "%2" is synced to local folder "%3" + Le dossier %1 "%2" est synchronisé avec le dossier local "%3". - - Sync the folder "%1" - Synchroniser le dossier "%1" + + Sync the folder "%1" + Synchroniser le dossier "%1" - - Warning: The local folder is not empty. Pick a resolution! - Avertissement : Le dossier local n'est pas vide. Choisissez une option. + + Warning: The local folder is not empty. Pick a resolution! + Avertissement : Le dossier local n'est pas vide. Choisissez une option. - - %1 free space - %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB - espace libre %1 + + %1 free space + %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB + espace libre %1 - - Virtual files are not available for the selected folder - Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné + + Virtual files are not available for the selected folder + Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné - - Local Sync Folder - Dossier de synchronisation local + + Local Sync Folder + Dossier de synchronisation local - - - (%1) - (%1) + + + (%1) + (%1) - - There isn't enough free space in the local folder! - L'espace libre dans le dossier local est insuffisant ! + + There isn't enough free space in the local folder! + L'espace libre dans le dossier local est insuffisant ! - - + + OCC::OwncloudConnectionMethodDialog - - Connection failed - Échec de la connexion + + Connection failed + Échec de la connexion - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Impossible de se connecter au serveur via l'adresse sécurisée indiquée. Que souhaitez-vous faire ?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Impossible de se connecter au serveur via l'adresse sécurisée indiquée. Que souhaitez-vous faire ?</p></body></html> - - Select a different URL - Choisir une URL différente + + Select a different URL + Choisir une URL différente - - Retry unencrypted over HTTP (insecure) - Essayer en clair sur HTTP (non sécurisé) + + Retry unencrypted over HTTP (insecure) + Essayer en clair sur HTTP (non sécurisé) - - Configure client-side TLS certificate - Configurer le certificat TLS client + + Configure client-side TLS certificate + Configurer le certificat TLS client - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Impossible de se connecter à l'adresse sécurisée <em>%1</em>. Que souhaitez-vous faire ?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Impossible de se connecter à l'adresse sécurisée <em>%1</em>. Que souhaitez-vous faire ?</p></body></html> - - + + OCC::OwncloudHttpCredsPage - - &Email - &Adresse mail + + &Email + &Adresse mail - - Connect to %1 - Connexion à %1 + + Connect to %1 + Connexion à %1 - - Enter user credentials - Saisissez les identifiants de connexion de l'utilisateur + + Enter user credentials + Saisissez les identifiants de connexion de l'utilisateur - - + + + OCC::OwncloudOAuthCredsPage + + Connect to %1 + Connexion à %1 + + + Login in your browser + Connectez vous sur votre navigateur + + + OCC::OwncloudPropagator - - Error with the metadata. Getting unexpected metadata format. - Erreur avec la métadonnée. Le format de la métadonnée est inattendu. + Error with the metadata. Getting unexpected metadata format. + Erreur avec la métadonnée. Le format de la métadonnée est inattendu. - - - Impossible to get modification time for file in conflict %1 - Impossible de récupérer la date de modification du fichier en conflit %1 + + + Impossible to get modification time for file in conflict %1 + Impossible de récupérer la date de modification du fichier en conflit %1 - - + + OCC::OwncloudSetupPage - - The link to your %1 web interface when you open it in the browser. - %1 will be replaced with the application name - Adresse URL visible dans la barre d'adresse de votre navigateur Web lorsque vous êtes connecté à %1. + + The link to your %1 web interface when you open it in the browser. + %1 will be replaced with the application name + Adresse URL visible dans la barre d'adresse de votre navigateur Web lorsque vous êtes connecté à %1. - - &Next > - &Suivant > + + &Next > + &Suivant > - - Server address does not seem to be valid - L'adresse du serveur ne semble pas être valide + + Server address does not seem to be valid + L'adresse du serveur ne semble pas être valide - - Could not load certificate. Maybe wrong password? - Impossible de charger le certificat. Vérifiez le mot de passe saisi. + + Could not load certificate. Maybe wrong password? + Impossible de charger le certificat. Vérifiez le mot de passe saisi. - - + + OCC::OwncloudSetupWizard - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - <font color="green">Connecté avec succès à %1 : %2 version %3 (%4)</font><br/><br/> + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + <font color="green">Connecté avec succès à %1 : %2 version %3 (%4)</font><br/><br/> - - Invalid URL - URL invalide + + Invalid URL + URL invalide - - Failed to connect to %1 at %2:<br/>%3 - Échec de la connexion à %1 sur %2 :<br/>%3 + + Failed to connect to %1 at %2:<br/>%3 + Échec de la connexion à %1 sur %2 :<br/>%3 - - Timeout while trying to connect to %1 at %2. - Délai d'attente dépassé lors de la connexion à %1 sur %2. + + Timeout while trying to connect to %1 at %2. + Délai d'attente dépassé lors de la connexion à %1 sur %2. - - Trying to connect to %1 at %2 … - Tentative de connexion à %1 sur %2 ... + + Trying to connect to %1 at %2 … + Tentative de connexion à %1 sur %2 ... - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - La demande authentifiée au serveur a été redirigée vers "%1". L'URL est mauvaise, le serveur est mal configuré. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + La demande authentifiée au serveur a été redirigée vers "%1". L'URL est mauvaise, le serveur est mal configuré. - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Accès impossible. Afin de vérifier l'accès au serveur, <a href="%1">cliquez ici</a> et connectez-vous au service avec votre navigateur web. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Accès impossible. Afin de vérifier l'accès au serveur, <a href="%1">cliquez ici</a> et connectez-vous au service avec votre navigateur web. - - There was an invalid response to an authenticated WebDAV request - Il y a eu une réponse invalide à une demande WebDAV authentifiée + + There was an invalid response to an authenticated WebDAV request + Il y a eu une réponse invalide à une demande WebDAV authentifiée - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> - Le dossier de synchronisation local %1 existe déjà, configuration de la synchronisation.<br/><br/> + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + Le dossier de synchronisation local %1 existe déjà, configuration de la synchronisation.<br/><br/> - - Creating local sync folder %1 … - Création du dossier local de synchronisation %1 ... + + Creating local sync folder %1 … + Création du dossier local de synchronisation %1 ... - - OK - OK + + OK + OK - - failed. - échoué. + + failed. + échoué. - - Could not create local folder %1 - Impossible de créer le dossier local %1 + + Could not create local folder %1 + Impossible de créer le dossier local %1 - - No remote folder specified! - Aucun dossier distant spécifié ! + + No remote folder specified! + Aucun dossier distant spécifié ! - - Error: %1 - Erreur : %1 + + Error: %1 + Erreur : %1 - - creating folder on Nextcloud: %1 - Création du dossier sur Nextcloud : %1 + + creating folder on Nextcloud: %1 + Création du dossier sur Nextcloud : %1 - - Remote folder %1 created successfully. - Le dossier distant %1 a été créé avec succès. + + Remote folder %1 created successfully. + Le dossier distant %1 a été créé avec succès. - - The remote folder %1 already exists. Connecting it for syncing. - Le dossier distant %1 existe déjà. Connexion. + + The remote folder %1 already exists. Connecting it for syncing. + Le dossier distant %1 existe déjà. Connexion. - - - The folder creation resulted in HTTP error code %1 - La création du dossier a généré le code d'erreur HTTP %1 + + + The folder creation resulted in HTTP error code %1 + La création du dossier a généré le code d'erreur HTTP %1 - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - La création du dossier distant a échoué car les identifiants de connexion sont erronés !<br/>Veuillez revenir en arrière et vérifier ces derniers.</p> + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + La création du dossier distant a échoué car les identifiants de connexion sont erronés !<br/>Veuillez revenir en arrière et vérifier ces derniers.</p> - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - <p><font color="red">La création du dossier distant a échoué, probablement parce que les informations d'identification fournies sont fausses.</font><br/>Veuillez revenir en arrière et les vérifier.</p> + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + <p><font color="red">La création du dossier distant a échoué, probablement parce que les informations d'identification fournies sont fausses.</font><br/>Veuillez revenir en arrière et les vérifier.</p> - - - Remote folder %1 creation failed with error <tt>%2</tt>. - La création du dossier distant "%1" a échouée avec l'erreur <tt>%2</tt>. + + + Remote folder %1 creation failed with error <tt>%2</tt>. + La création du dossier distant "%1" a échouée avec l'erreur <tt>%2</tt>. - - A sync connection from %1 to remote directory %2 was set up. - Une synchronisation entre le dossier local %1 et le dossier distant %2 a été configurée. + + A sync connection from %1 to remote directory %2 was set up. + Une synchronisation entre le dossier local %1 et le dossier distant %2 a été configurée. - - Successfully connected to %1! - Connecté avec succès à %1 ! + + Successfully connected to %1! + Connecté avec succès à %1 ! - - Connection to %1 could not be established. Please check again. - La connexion à %1 n'a pu être établie. Veuillez réessayer. + + Connection to %1 could not be established. Please check again. + La connexion à %1 n'a pu être établie. Veuillez réessayer. - - Folder rename failed - Echec du renommage du dossier + + Folder rename failed + Echec du renommage du dossier - - Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - Impossible de supprimer et sauvegarder le dossier parce que le dossier ou un fichier qu'il contient est ouvert dans un autre programme. Merci de fermer le dossier ou le fichier et recommencer ou annuler la configuration. + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + Impossible de supprimer et sauvegarder le dossier parce que le dossier ou un fichier qu'il contient est ouvert dans un autre programme. Merci de fermer le dossier ou le fichier et recommencer ou annuler la configuration. - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> - <font color="green"><b>Dossier de synchronisation local %1 créé avec succès !</b></font> + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + <font color="green"><b>Dossier de synchronisation local %1 créé avec succès !</b></font> - - + + OCC::OwncloudWizard - - Add %1 account - Ajout du compte %1 + + Add %1 account + Ajout du compte %1 - - Skip folders configuration - Ignorer la configuration des dossiers + + Skip folders configuration + Ignorer la configuration des dossiers - - Cancel - Annuler + + Cancel + Annuler - - Enable experimental feature? - Activer la fonction expérimentale ? + + Enable experimental feature? + Activer la fonction expérimentale ? - - When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. Switching to this mode will abort any currently running synchronization. This is a new, experimental mode. If you decide to use it, please report any issues that come up. - Lorsque le mode « fichiers virtuels » est activé, aucun fichier ne sera téléchargé initialement. Au lieu de cela, un petit fichier "%1" sera créé pour chaque fichier existant sur le serveur. Le contenu peut être téléchargé en exécutant ces fichiers ou en utilisant leur menu contextuel. + Lorsque le mode « fichiers virtuels » est activé, aucun fichier ne sera téléchargé initialement. Au lieu de cela, un petit fichier "%1" sera créé pour chaque fichier existant sur le serveur. Le contenu peut être téléchargé en exécutant ces fichiers ou en utilisant leur menu contextuel. Le mode fichiers virtuels est mutuellement exclusif avec synchronisation sélective. Les dossiers actuellement non sélectionnés seront convertis en dossiers en ligne uniquement et vos paramètres de synchronisation sélective seront réinitialisés. Le passage à ce mode annulera toute synchronisation en cours. -Il s'agit d'un nouveau mode expérimental. Si vous décidez de l'utiliser, veuillez signaler tout problème qui surviendrait. +Il s'agit d'un nouveau mode expérimental. Si vous décidez de l'utiliser, veuillez signaler tout problème qui surviendrait. - - Enable experimental placeholder mode - Activer la fonction expérimentale de fichiers virtuels ? + + Enable experimental placeholder mode + Activer la fonction expérimentale de fichiers virtuels ? - - Stay safe - Restez en sécurité + + Stay safe + Restez en sécurité - - + + OCC::PasswordInputDialog - - Password for share required - Mot de passe requis pour le partage + + Password for share required + Mot de passe requis pour le partage - - Please enter a password for your share: - Veuillez saisir un mot de passe pour votre partage : + + Please enter a password for your share: + Veuillez saisir un mot de passe pour votre partage : - - + + OCC::PollJob - - Invalid JSON reply from the poll URL - L'URL de sondage a renvoyé une réponse JSON non valide + + Invalid JSON reply from the poll URL + L'URL de sondage a renvoyé une réponse JSON non valide - - + + OCC::ProcessDirectoryJob - - Symbolic links are not supported in syncing. - Les liens symboliques ne sont pas pris en charge par la synchronisation. + + Symbolic links are not supported in syncing. + Les liens symboliques ne sont pas pris en charge par la synchronisation. - - File is listed on the ignore list. - Le fichier est présent dans la liste des fichiers ignorés. + + File is listed on the ignore list. + Le fichier est présent dans la liste des fichiers ignorés. - - File names ending with a period are not supported on this file system. - Les noms de fichier se terminant par un point ne sont pas pris en charge sur votre système. + + File names ending with a period are not supported on this file system. + Les noms de fichier se terminant par un point ne sont pas pris en charge sur votre système. - - File names containing the character "%1" are not supported on this file system. - Les noms de fichiers contenant le caractère "%1" ne sont pas pris en charge par ce système de fichiers. + + File names containing the character "%1" are not supported on this file system. + Les noms de fichiers contenant le caractère "%1" ne sont pas pris en charge par ce système de fichiers. - - File name contains at least one invalid character - Le nom du fichier contient au moins un caractère interdit + + File name contains at least one invalid character + Le nom du fichier contient au moins un caractère interdit - - The file name is a reserved name on this file system. - Le nom du fichier est un nom réservé dans le système de fichier + + The file name is a reserved name on this file system. + Le nom du fichier est un nom réservé dans le système de fichier - - Filename contains trailing spaces. - Le nom du fichier finit par des espaces. + + Filename contains trailing spaces. + Le nom du fichier finit par des espaces. - - Filename contains leading spaces. - Nom de fichier contenant des espaces au début. + + Filename contains leading spaces. + Nom de fichier contenant des espaces au début. - - Filename contains leading and trailing spaces. - Nom de fichier contenant des espaces au début et à la fin. + + Filename contains leading and trailing spaces. + Nom de fichier contenant des espaces au début et à la fin. - - Filename is too long. - Le nom du fichier est trop long. + + Filename is too long. + Le nom du fichier est trop long. - - File/Folder is ignored because it's hidden. - Le fichier ou dossier a été ignoré car il est masqué. + + File/Folder is ignored because it's hidden. + Le fichier ou dossier a été ignoré car il est masqué. - - Stat failed. - Stat échoué. + + Stat failed. + Stat échoué. - - Conflict: Server version downloaded, local copy renamed and not uploaded. - Conflit : la version du serveur a été téléchargée, la version locale renommée et non téléversée. + + Conflict: Server version downloaded, local copy renamed and not uploaded. + Conflit : la version du serveur a été téléchargée, la version locale renommée et non téléversée. - - Case Clash Conflict: Server file downloaded and renamed to avoid clash. - Conflit de casse : fichier serveur téléchargé et renommé pour éviter le conflit. + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. + Conflit de casse : fichier serveur téléchargé et renommé pour éviter le conflit. - - The filename cannot be encoded on your file system. - Le nom de fichier ne peut pas être encodé sur votre système de fichiers. + + The filename cannot be encoded on your file system. + Le nom de fichier ne peut pas être encodé sur votre système de fichiers. - - The filename is blacklisted on the server. - Le nom du fichier est sur la liste noire du serveur. + + The filename is blacklisted on the server. + Le nom du fichier est sur la liste noire du serveur. - - File has extension reserved for virtual files. - Le fichier a une extension réservée pour les fichiers virtuels. + + File has extension reserved for virtual files. + Le fichier a une extension réservée pour les fichiers virtuels. - - size - taille + + size + taille - - permission - permission + + permission + permission - - file id - ID du fichier + + file id + ID du fichier - - Server reported no %1 - Le serveur n'a signalé aucun %1 + + Server reported no %1 + Le serveur n'a signalé aucun %1 - - Cannot sync due to invalid modification time - Impossible de synchroniser à cause d'une date de modification invalide + + Cannot sync due to invalid modification time + Impossible de synchroniser à cause d'une date de modification invalide - - Could not upload file, because it is open in "%1". - Impossible de téléverser le fichier, car il est ouvert dans « %1 ». + + Could not upload file, because it is open in "%1". + Impossible de téléverser le fichier, car il est ouvert dans « %1 ». - - Error while deleting file record %1 from the database - Erreur à la suppression de l'enregistrement du fichier %1 de la base de données + + Error while deleting file record %1 from the database + Erreur à la suppression de l'enregistrement du fichier %1 de la base de données - - Conflict when uploading a folder. It's going to get cleared! - Conflit lors de l'envoi d'un dossier. Il va être supprimé ! + + Conflict when uploading a folder. It's going to get cleared! + Conflit lors de l'envoi d'un dossier. Il va être supprimé ! - - Conflict when uploading a file. It's going to get removed! - Conflit lors de l'envoi d'un fichier. Il va être supprimé ! + + Conflict when uploading a file. It's going to get removed! + Conflit lors de l'envoi d'un fichier. Il va être supprimé ! - - Moved to invalid target, restoring - Déplacé vers une cible invalide, restauration + + + Moved to invalid target, restoring + Déplacé vers une cible invalide, restauration - - Ignored because of the "choose what to sync" blacklist - Ignoré en raison de la liste noire "Sélectionner le contenu à synchroniser". + + Ignored because of the "choose what to sync" blacklist + Ignoré en raison de la liste noire "Sélectionner le contenu à synchroniser". - - Not allowed because you don't have permission to add subfolders to that folder - Non autorisé car vous n'avez pas la permission d'ajouter des sous-dossiers dans ce dossier + + Not allowed because you don't have permission to add subfolders to that folder + Non autorisé car vous n'avez pas la permission d'ajouter des sous-dossiers dans ce dossier - - Not allowed because you don't have permission to add files in that folder - Non autorisé car vous n'avez pas la permission d'ajouter des fichiers dans ce dossier + + Not allowed because you don't have permission to add files in that folder + Non autorisé car vous n'avez pas la permission d'ajouter des fichiers dans ce dossier - - Not allowed to upload this file because it is read-only on the server, restoring - Non autorisé à téléverser ce fichier, car il est en lecture seule sur le serveur, restauration en cours + + Not allowed to upload this file because it is read-only on the server, restoring + Non autorisé à téléverser ce fichier, car il est en lecture seule sur le serveur, restauration en cours - - Not allowed to remove, restoring - Suppression non autorisée, restauration en cours + + Not allowed to remove, restoring + Suppression non autorisée, restauration en cours - - Error while reading the database - Erreur de lecture de la base de données + + Error while reading the database + Erreur de lecture de la base de données - - Server replied with an error while reading directory "%1" : %2 - Le serveur a répondu avec une erreur lors de la lecture du dossier "%1" : %2 + + Server replied with an error while reading directory "%1" : %2 + Le serveur a répondu avec une erreur lors de la lecture du dossier "%1" : %2 - - + + OCC::PropagateDirectory - - could not delete file %1 from local DB - Impossible de supprimer le fichier %1 de la base de données locale + + could not delete file %1 from local DB + Impossible de supprimer le fichier %1 de la base de données locale - - Error updating metadata due to invalid modification time - Erreur de mise à jour des métadonnées à cause d'une date de modification invalide + + Error updating metadata due to invalid modification time + Erreur de mise à jour des métadonnées à cause d'une date de modification invalide - - - The folder %1 cannot be made read-only: %2 - Le dossier %1 ne peut être rendu en lecture seule : %2 + + + The folder %1 cannot be made read-only: %2 + Le dossier %1 ne peut être rendu en lecture seule : %2 - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + Error updating metadata: %1 + Erreur lors de la mise à jour des métadonnées : %1 - - File is currently in use - Le fichier est actuellement en cours d'utilisation + + File is currently in use + Le fichier est actuellement en cours d'utilisation - - + + OCC::PropagateDownloadFile - - could not get file %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + could not get file %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - File %1 cannot be downloaded because encryption information is missing. - Le fichier %1 ne peut pas être téléchargé car les informations de chiffrement sont manquantes. + + File %1 cannot be downloaded because encryption information is missing. + Le fichier %1 ne peut pas être téléchargé car les informations de chiffrement sont manquantes. - - - File has changed since discovery - Le fichier a changé depuis sa découverte + + + File has changed since discovery + Le fichier a changé depuis sa découverte - - - Could not delete file record %1 from local DB - Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale + + + Could not delete file record %1 from local DB + Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale - - File %1 can not be downloaded because of a local file name clash! - Le fichier %1 ne peut pas être téléchargé en raison d'un conflit sur le nom de fichier local. + + File %1 can not be downloaded because of a local file name clash! + Le fichier %1 ne peut pas être téléchargé en raison d'un conflit sur le nom de fichier local. - - The download would reduce free local disk space below the limit - Le téléchargement réduira l'espace disque libre en dessous de la limite + + The download would reduce free local disk space below the limit + Le téléchargement réduira l'espace disque libre en dessous de la limite - - Free space on disk is less than %1 - Il y a moins de %1 d'espace libre sur le disque + + Free space on disk is less than %1 + Il y a moins de %1 d'espace libre sur le disque - - File was deleted from server - Le fichier a été supprimé du serveur + + File was deleted from server + Le fichier a été supprimé du serveur - - The file could not be downloaded completely. - Le fichier n'a pas pu être téléchargé intégralement. + + The file could not be downloaded completely. + Le fichier n'a pas pu être téléchargé intégralement. - - The downloaded file is empty, but the server said it should have been %1. - Le fichier téléchargé est vide bien que le serveur indique que sa taille devrait être de %1. + + The downloaded file is empty, but the server said it should have been %1. + Le fichier téléchargé est vide bien que le serveur indique que sa taille devrait être de %1. - - - File %1 has invalid modified time reported by server. Do not save it. - Le fichier %1 présente une date de modification invalide sur le serveur. Enregistrement impossible. + + + File %1 has invalid modified time reported by server. Do not save it. + Le fichier %1 présente une date de modification invalide sur le serveur. Enregistrement impossible. - - File %1 downloaded but it resulted in a local file name clash! - Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! + + File %1 downloaded but it resulted in a local file name clash! + Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + Error updating metadata: %1 + Erreur lors de la mise à jour des métadonnées : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - + + OCC::PropagateItemJob - - ; Restoration Failed: %1 - ; Échec de la restauration : %1 + + ; Restoration Failed: %1 + ; Échec de la restauration : %1 - - A file or folder was removed from a read only share, but restoring failed: %1 - Un fichier ou un dossier a été supprimé d'un partage en lecture seule, mais la restauration a échoué : %1 + + A file or folder was removed from a read only share, but restoring failed: %1 + Un fichier ou un dossier a été supprimé d'un partage en lecture seule, mais la restauration a échoué : %1 - - + + OCC::PropagateLocalMkdir - - could not delete file %1, error: %2 - impossible de supprimer le fichier %1. Erreur : %2 + + could not delete file %1, error: %2 + impossible de supprimer le fichier %1. Erreur : %2 - - Folder %1 cannot be created because of a local file or folder name clash! - Le dossier %1 n'a pu être créé à cause d'un conflit local de nom de fichier ou de dossier ! + + Folder %1 cannot be created because of a local file or folder name clash! + Le dossier %1 n'a pu être créé à cause d'un conflit local de nom de fichier ou de dossier ! - - Could not create folder %1 - Impossible de créer le dossier %1 + + Could not create folder %1 + Impossible de créer le dossier %1 - - The folder %1 cannot be made read-only: %2 - Le dossier %1 ne peut être rendu en lecture seule : %2 + + The folder %1 cannot be made read-only: %2 + Le dossier %1 ne peut être rendu en lecture seule : %2 - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + Error updating metadata: %1 + Erreur lors de la mise à jour des métadonnées : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - + + OCC::PropagateLocalRemove - - Could not remove %1 because of a local file name clash - Impossible de retirer %1 en raison d'un conflit de nom de fichier local + + Could not remove %1 because of a local file name clash + Impossible de retirer %1 en raison d'un conflit de nom de fichier local - - Could not delete file record %1 from local DB - Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale + + Could not delete file record %1 from local DB + Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale - - + + OCC::PropagateLocalRename - - File %1 downloaded but it resulted in a local file name clash! - Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! + + Folder %1 cannot be renamed because of a local file or folder name clash! + Le dossier %1 ne peut pas être renommé en raison d’un conflit de nom avec un fichier ou un dossier local ! - - - - could not get file %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + File %1 downloaded but it resulted in a local file name clash! + Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! - - - Error setting pin state - Erreur lors de la modification de l'état du fichier + + + + could not get file %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + + Error setting pin state + Erreur lors de la modification de l'état du fichier - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + + Error updating metadata: %1 + Erreur lors de la mise à jour des métadonnées : %1 - - - Could not delete file record %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - Failed to propagate directory rename in hierarchy - Impossible de propager le renommage du dossier dans la hiérarchie + + + Could not delete file record %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - Failed to rename file - Échec lors du changement de nom du fichier + + Failed to propagate directory rename in hierarchy + Impossible de propager le renommage du dossier dans la hiérarchie - - + + + Failed to rename file + Échec lors du changement de nom du fichier + + + OCC::PropagateRemoteDelete - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur reçue est "%1 %2". + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur reçue est "%1 %2". - - Could not delete file record %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + Could not delete file record %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - + + OCC::PropagateRemoteDeleteEncryptedRootFolder - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". - - + + OCC::PropagateRemoteMkdir - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". - - Failed to encrypt a folder %1 - Échec du chiffrement d'un dossier %1 + + Failed to encrypt a folder %1 + Échec du chiffrement d'un dossier %1 - - Error writing metadata to the database: %1 - Erreur d'écriture des métadonnées dans la base de données : %1 + + Error writing metadata to the database: %1 + Erreur d'écriture des métadonnées dans la base de données : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - + + OCC::PropagateRemoteMove - - Could not rename %1 to %2, error: %3 - Impossible de renommer %1 en %2, erreur: %3 + + Could not rename %1 to %2, error: %3 + Impossible de renommer %1 en %2, erreur: %3 - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". - - could not get file %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + could not get file %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - Could not delete file record %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + Could not delete file record %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + Error updating metadata: %1 + Erreur lors de la mise à jour des métadonnées : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - Error setting pin state - Erreur lors de la modification de l'état du fichier + + Error setting pin state + Erreur lors de la modification de l'état du fichier - - Error writing metadata to the database - Erreur à l'écriture des métadonnées dans la base de données + + Error writing metadata to the database + Erreur à l'écriture des métadonnées dans la base de données - - + + OCC::PropagateUploadFileCommon - - Failed to upload encrypted file. - Échec d'envoi du fichier chiffré. + + Failed to upload encrypted file. + Échec d'envoi du fichier chiffré. - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Impossible de téléverser le fichier %1 car un autre fichier de même nom existe, différent seulement par la casse. + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Impossible de téléverser le fichier %1 car un autre fichier de même nom existe, différent seulement par la casse. - - - Upload of %1 exceeds the quota for the folder - L'envoi de %1 amène un dépassement de quota pour le dossier + + + Upload of %1 exceeds the quota for the folder + L'envoi de %1 amène un dépassement de quota pour le dossier - - - - File %1 has invalid modification time. Do not upload to the server. - Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. + + + + File %1 has invalid modification time. Do not upload to the server. + Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. - - File Removed (start upload) %1 - Fichier supprimé (début du téléchargement) %1 + + File Removed (start upload) %1 + Fichier supprimé (début du téléchargement) %1 - - Local file changed during syncing. It will be resumed. - Fichier local modifié pendant la synchronisation. Elle va reprendre. + + Local file changed during syncing. It will be resumed. + Fichier local modifié pendant la synchronisation. Elle va reprendre. - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. - - Failed to unlock encrypted folder. - Impossible de déverrouiller le dossier chiffré. + + Failed to unlock encrypted folder. + Impossible de déverrouiller le dossier chiffré. - - Unable to upload an item with invalid characters - Impossible de téléverser un élément contenant des caractères non valides + + Unable to upload an item with invalid characters + Impossible de téléverser un élément contenant des caractères non valides - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + Error updating metadata: %1 + Erreur lors de la mise à jour des métadonnées : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - + + OCC::PropagateUploadFileNG - - The local file was removed during sync. - Fichier local supprimé pendant la synchronisation. + + The local file was removed during sync. + Fichier local supprimé pendant la synchronisation. - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. - - Poll URL missing - URL du sondage manquante + + Poll URL missing + URL du sondage manquante - - Unexpected return code from server (%1) - Le serveur a retourné un code inattendu (%1) + + Unexpected return code from server (%1) + Le serveur a retourné un code inattendu (%1) - - Missing File ID from server - L'identifiant de fichier est manquant sur le serveur + + Missing File ID from server + L'identifiant de fichier est manquant sur le serveur - - Missing ETag from server - L'information Etag de modification de fichier est manquante sur le serveur + + Missing ETag from server + L'information Etag de modification de fichier est manquante sur le serveur - - + + OCC::PropagateUploadFileV1 - - Poll URL missing - URL de sondage manquante + + Poll URL missing + URL de sondage manquante - - The local file was removed during sync. - Fichier local supprimé pendant la synchronisation. + + The local file was removed during sync. + Fichier local supprimé pendant la synchronisation. - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. - - The server did not acknowledge the last chunk. (No e-tag was present) - Le serveur n'a pas confirmé la réception du dernier morceau. (Aucun e-tag n'était présent). + + The server did not acknowledge the last chunk. (No e-tag was present) + Le serveur n'a pas confirmé la réception du dernier morceau. (Aucun e-tag n'était présent). - - + + OCC::ProxyAuthDialog - - Proxy authentication required - Authentification requise sur le proxy + + Proxy authentication required + Authentification requise sur le proxy - - Username: - Nom d’utilisateur : + + Username: + Nom d’utilisateur : - - Proxy: - Proxy : + + Proxy: + Proxy : - - The proxy server needs a username and password. - Le serveur proxy requiert un identifiant et un mot de passe. + + The proxy server needs a username and password. + Le serveur proxy requiert un identifiant et un mot de passe. - - Password: - Mot de passe : + + Password: + Mot de passe : - - + + OCC::SelectiveSyncDialog - - Choose What to Sync - Sélectionner le contenu à synchroniser + + Choose What to Sync + Sélectionner le contenu à synchroniser - - + + OCC::SelectiveSyncWidget - - Loading … - Chargement… + + Loading … + Chargement… - - Deselect remote folders you do not wish to synchronize. - Désélectionnez les sous-dossiers distants que vous ne souhaitez pas synchroniser. + + Deselect remote folders you do not wish to synchronize. + Désélectionnez les sous-dossiers distants que vous ne souhaitez pas synchroniser. - - Name - Nom + + Name + Nom - - Size - Taille + + Size + Taille - - - No subfolders currently on the server. - Aucun sous-dossier sur le serveur. + + + No subfolders currently on the server. + Aucun sous-dossier sur le serveur. - - An error occurred while loading the list of sub folders. - Une erreur est survenue lors du chargement de la liste des sous-dossiers. + + An error occurred while loading the list of sub folders. + Une erreur est survenue lors du chargement de la liste des sous-dossiers. - - + + OCC::ServerNotificationHandler - - Reply - Répondre + + Reply + Répondre - - Dismiss - Ignorer + Dismiss + Ignorer - - + + OCC::SettingsDialog - - Settings - Paramètres + + Settings + Paramètres - - %1 Settings - This name refers to the application name e.g Nextcloud - Paramètres %1 + + %1 Settings + This name refers to the application name e.g Nextcloud + Paramètres %1 - - General - Paramètres + + New Account + Nouveau compte - - Network - Réseau + + General + Paramètres - - Account - Compte + Network + Réseau - - + + + Account + Compte + + + OCC::ShareManager - - Error - Erreur + + Error + Erreur - - + + OCC::ShareModel - - Secure file drop link - Lien de dépôt sécurisé de fichier + + Secure file drop link + Lien de dépôt sécurisé de fichier - - Share link - Partager un lien + + Share link + Partager un lien - - Link share - Lien de partage + + Link share + Lien de partage - - Internal link - Lien interne + + Internal link + Lien interne - - Secure file drop - Dépôt de fichier sécurisé + + Secure file drop + Dépôt de fichier sécurisé - - Could not find local folder for %1 - Impossible de trouver le dossier local pour %1 + + Could not find local folder for %1 + Impossible de trouver le dossier local pour %1 - - Enter a note for the recipient - Saisissez un commentaire pour le destinataire + + + + + - - + + Enter a note for the recipient + Saisissez un commentaire pour le destinataire + + + + OCC::ShareUserLine + + Username + Nom d’utilisateur + + + Can edit + Peut modifier + + + Note: + Note : + + + Password: + Mot de passe : + + + Expires: + Expire le : + + + OCC::ShareeModel - - - Search globally - Rechercher globalement + + + Search globally + Rechercher globalement - - No results found - Aucun résultat trouvé + + No results found + Aucun résultat trouvé - - Global search results - Résultats de la recherche globale + + Global search results + Résultats de la recherche globale - - %1 (%2) - sharee (shareWithAdditionalInfo) - %1 (%2) + + %1 (%2) + sharee (shareWithAdditionalInfo) + %1 (%2) - - + + OCC::SocketApi - - Failed to encrypt folder at "%1" - Échec du chiffrement du dossier à "%1" + + Failed to encrypt folder at "%1" + Échec du chiffrement du dossier à "%1" - - The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - Le compte %1 n'a pas de chiffrement de bout en bout configuré. Veuillez le configurer dans les paramètres de votre compte pour activer le chiffrement des dossiers. + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. + Le compte %1 n'a pas de chiffrement de bout en bout configuré. Veuillez le configurer dans les paramètres de votre compte pour activer le chiffrement des dossiers. - - Failed to encrypt folder - Échec du chiffrement du dossier + + Failed to encrypt folder + Échec du chiffrement du dossier - - Could not encrypt the following folder: "%1". + + Could not encrypt the following folder: "%1". Server replied with error: %2 - Impossible de chiffrer le dossier suivant : "%1". + Impossible de chiffrer le dossier suivant : "%1". -Le serveur a répondu avec l'erreur : %2 +Le serveur a répondu avec l'erreur : %2 - - Folder encrypted successfully - Dossier chiffré avec succès + + Folder encrypted successfully + Dossier chiffré avec succès - - The following folder was encrypted successfully: "%1" - Le dossier suivant a été chiffré avec succès : "%1" + + The following folder was encrypted successfully: "%1" + Le dossier suivant a été chiffré avec succès : "%1" - - Context menu share - Partage du menu contextuel + + Context menu share + Partage du menu contextuel - - Select new location … - Sélectionnez le nouvel emplacement ... + + Select new location … + Sélectionnez le nouvel emplacement ... - - I shared something with you - J'ai partagé quelque chose avec vous + + I shared something with you + J'ai partagé quelque chose avec vous - - - Share options - Options de partage + + + Share options + Options de partage - - - Activity - Activité + + + Activity + Activité - - Copy private link to clipboard - Copier le lien privé dans le presse-papier + + Copy private link to clipboard + Copier le lien privé dans le presse-papier - - Send private link by email … - Envoyer le lien privé par e-mail ... + + Send private link by email … + Envoyer le lien privé par e-mail ... - - Leave this share - Quitter ce partage + + Leave this share + Quitter ce partage - - Resharing this file is not allowed - Repartager ce fichier est interdit + + Resharing this file is not allowed + Repartager ce fichier est interdit - - Resharing this folder is not allowed - Repartager ce dossier est interdit + + Resharing this folder is not allowed + Repartager ce dossier est interdit - - Copy secure file drop link - Copier le lien de dépôt sécurisé de fichier + + Copy secure file drop link + Copier le lien de dépôt sécurisé de fichier - - - Copy public link - Copier le lien public + + + Copy public link + Copier le lien public - - Copy secure filedrop link - Copier le lien de dépôt de fichier sécurisé + + Copy secure filedrop link + Copier le lien de dépôt de fichier sécurisé - - Copy internal link - Copier le lien interne + + Copy internal link + Copier le lien interne - - Encrypt - Chiffrer + + Encrypt + Chiffrer - - Lock file - Verrouiller le fichier + + Lock file + Verrouiller le fichier - - Unlock file - Déverrouiller le fichier + + Unlock file + Déverrouiller le fichier - - Locked by %1 - Verrouillé par %1 + + Locked by %1 + Verrouillé par %1 - - Expires in %1 minutes - remaining time before lock expires - Expire dans %1 minuteExpire dans %1 minutesExpire dans %1 minutes + + Expires in %1 minutes + remaining time before lock expires + + Expire dans %1 minute + Expire dans %1 minutes + - - Edit - Éditer + + Edit + Éditer - - Open in browser - Ouvrir dans le navigateur + + Open in browser + Ouvrir dans le navigateur - - Resolve conflict … - Résoudre le conflit… + + Resolve conflict … + Résoudre le conflit… - - Move and rename … - Déplacer et renommer... + + Move and rename … + Déplacer et renommer... - - Move, rename and upload … - Déplacer, renommer et téléverser… + + Move, rename and upload … + Déplacer, renommer et téléverser… - - Delete local changes - Supprimer les modifications locales + + Delete local changes + Supprimer les modifications locales - - Move and upload … - Déplacer et téléverser… + + Move and upload … + Déplacer et téléverser… - - Delete - Supprimer + + Delete + Supprimer - - + + OCC::SslButton - - <h3>Certificate Details</h3> - <h3>Détails du certificat</h3> + + <h3>Certificate Details</h3> + <h3>Détails du certificat</h3> - - Common Name (CN): - Nom commun (CN) : + + Common Name (CN): + Nom commun (CN) : - - Subject Alternative Names: - Noms alternatifs du sujet : + + Subject Alternative Names: + Noms alternatifs du sujet : - - Organization (O): - Organisation (O) : + + Organization (O): + Organisation (O) : - - Organizational Unit (OU): - Unité d'organisation (OU) : + + Organizational Unit (OU): + Unité d'organisation (OU) : - - State/Province: - État/Région : + + State/Province: + État/Région : - - Country: - Pays : + + Country: + Pays : - - Serial: - Numéro de série : + + Serial: + Numéro de série : - - <h3>Issuer</h3> - <h3>Émetteur</h3> + + <h3>Issuer</h3> + <h3>Émetteur</h3> - - Issuer: - Émetteur : + + Issuer: + Émetteur : - - Issued on: - Émis le : + + Issued on: + Émis le : - - Expires on: - Expire le : + + Expires on: + Expire le : - - <h3>Fingerprints</h3> - <h3>Empreintes numériques</h3> + + <h3>Fingerprints</h3> + <h3>Empreintes numériques</h3> - - SHA-256: - SHA-256 : + + SHA-256: + SHA-256 : - - SHA-1: - SHA-1 : + + SHA-1: + SHA-1 : - - <p><b>Note:</b> This certificate was manually approved</p> - <p><b>Note :</b> Ce certificat a été approuvé manuellement</p> + + <p><b>Note:</b> This certificate was manually approved</p> + <p><b>Note :</b> Ce certificat a été approuvé manuellement</p> - - %1 (self-signed) - %1 (auto-signé) + + %1 (self-signed) + %1 (auto-signé) - - %1 - %1 + + %1 + %1 - - This connection is encrypted using %1 bit %2. + + This connection is encrypted using %1 bit %2. - Cette connexion est chiffrée en utilisant %1 bit %2. + Cette connexion est chiffrée en utilisant %1 bit %2. - - This connection is NOT secure as it is not encrypted. + + This connection is NOT secure as it is not encrypted. - Cette connexion n'est PAS sécurisée car elle n'est pas chiffrée. + Cette connexion n'est PAS sécurisée car elle n'est pas chiffrée. - - Server version: %1 - Version du serveur : %1 + + Server version: %1 + Version du serveur : %1 - - No support for SSL session tickets/identifiers - Identifiants/tickets de sessions SSL non pris en charge + + No support for SSL session tickets/identifiers + Identifiants/tickets de sessions SSL non pris en charge - - Certificate information: - Informations du certificat : + + Certificate information: + Informations du certificat : - - The connection is not secure - La connexion n'est pas sécurisée + + The connection is not secure + La connexion n'est pas sécurisée - - + + OCC::SslErrorDialog - - Trust this certificate anyway - Faire confiance à ce certificat malgré tout + + Trust this certificate anyway + Faire confiance à ce certificat malgré tout - - Untrusted Certificate - Certificat non fiable + + Untrusted Certificate + Certificat non fiable - - Cannot connect securely to <i>%1</i>: - Impossible de se connecter de manière sécurisée à <i>%1</i> : + + Cannot connect securely to <i>%1</i>: + Impossible de se connecter de manière sécurisée à <i>%1</i> : - - Additional errors: - Erreurs supplémentaires : + + Additional errors: + Erreurs supplémentaires : - - with Certificate %1 - avec certificat %1 + + with Certificate %1 + avec certificat %1 - - - - &lt;not specified&gt; - &lt;non spécifié&gt; + + + + &lt;not specified&gt; + &lt;non spécifié&gt; - - - Organization: %1 - Organisation : %1 + + + Organization: %1 + Organisation : %1 - - - Unit: %1 - Unité : %1 + + + Unit: %1 + Unité : %1 - - - Country: %1 - Pays : %1 + + + Country: %1 + Pays : %1 - - Fingerprint (SHA1): <tt>%1</tt> - Empreinte (SHA1) : <tt>%1</tt> + + Fingerprint (SHA1): <tt>%1</tt> + Empreinte (SHA1) : <tt>%1</tt> - - Fingerprint (SHA-256): <tt>%1</tt> - Empreinte (SHA-256): <tt>%1</tt> + + Fingerprint (SHA-256): <tt>%1</tt> + Empreinte (SHA-256): <tt>%1</tt> - - Fingerprint (SHA-512): <tt>%1</tt> - Empreinte (SHA-512): <tt>%1</tt> + + Fingerprint (SHA-512): <tt>%1</tt> + Empreinte (SHA-512): <tt>%1</tt> - - Effective Date: %1 - Date de début de validité : %1 + + Effective Date: %1 + Date de début de validité : %1 - - Expiration Date: %1 - Date d'expiration : %1 + + Expiration Date: %1 + Date d'expiration : %1 - - Issuer: %1 - Émetteur : %1 + + Issuer: %1 + Émetteur : %1 - - + + OCC::SyncEngine - - %1 (skipped due to earlier error, trying again in %2) - %1 (ignoré à cause d'une précédente erreur, nouvel essai dans %2) + + %1 (skipped due to earlier error, trying again in %2) + %1 (ignoré à cause d'une précédente erreur, nouvel essai dans %2) - - Could not update file: %1 - Impossible de mettre à jour le fichier : %1 + + Could not update file: %1 + Impossible de mettre à jour le fichier : %1 - - Could not update virtual file metadata: %1 - Impossible de mettre à jour les métadonnées du fichier virutel : %1 + + Could not update virtual file metadata: %1 + Impossible de mettre à jour les métadonnées du fichier virutel : %1 - - Could not update file metadata: %1 - Impossible de mettre à jour les métadonnées du fichier : %1 + + Could not update file metadata: %1 + Impossible de mettre à jour les métadonnées du fichier : %1 - - Could not set file record to local DB: %1 - Impossible de définir l'enregistrement du fichier dans la base de données locale : %1 + + Could not set file record to local DB: %1 + Impossible de définir l'enregistrement du fichier dans la base de données locale : %1 - - Unresolved conflict. - conflit non résolu. + + Unresolved conflict. + conflit non résolu. - - Only %1 are available, need at least %2 to start - Placeholders are postfixed with file sizes using Utility::octetsToString() - Seulement %1 disponibles, il faut au moins %2 pour démarrer + + Only %1 are available, need at least %2 to start + Placeholders are postfixed with file sizes using Utility::octetsToString() + Seulement %1 disponibles, il faut au moins %2 pour démarrer - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. - Impossible d'accéder ou de créer une base de données locale de synchronisation. Assurez vous de disposer des droits d'écriture dans le dossier de synchronisation. + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. + Impossible d'accéder ou de créer une base de données locale de synchronisation. Assurez vous de disposer des droits d'écriture dans le dossier de synchronisation. - - Using virtual files with suffix, but suffix is not set - Utilisation de fichiers virtuels avec suffixe, mais le suffixe n'est pas défini + + Using virtual files with suffix, but suffix is not set + Utilisation de fichiers virtuels avec suffixe, mais le suffixe n'est pas défini - - Unable to read the blacklist from the local database - Impossible de lire la liste noire de la base de données locale + + Unable to read the blacklist from the local database + Impossible de lire la liste noire de la base de données locale - - Unable to read from the sync journal. - Impossible de lire le journal de synchronisation. + + Unable to read from the sync journal. + Impossible de lire le journal de synchronisation. - - Cannot open the sync journal - Impossible d'ouvrir le journal de synchronisation + + Cannot open the sync journal + Impossible d'ouvrir le journal de synchronisation - - Disk space is low: Downloads that would reduce free space below %1 were skipped. - L'espace disque est faible : les téléchargements qui amèneraient à réduire l'espace libre en dessous de %1 ont été ignorés. + + Disk space is low: Downloads that would reduce free space below %1 were skipped. + L'espace disque est faible : les téléchargements qui amèneraient à réduire l'espace libre en dessous de %1 ont été ignorés. - - There is insufficient space available on the server for some uploads. - Il n'y a pas suffisamment d’espace disponible sur le serveur pour certains envois. + + There is insufficient space available on the server for some uploads. + Il n'y a pas suffisamment d’espace disponible sur le serveur pour certains envois. - - + + + OCC::SyncJournalDb + + + Failed to connect database. + Impossible de connecter la base de données. + + + OCC::SyncStatusSummary - - - Offline - Hors ligne + + + Offline + Hors ligne - - - - All synced! - Tout est synchronisé ! + + + + All synced! + Tout est synchronisé ! - - Some files couldn't be synced! - Certains fichiers n’ont pas pu être synchronisés ! + + Some files couldn't be synced! + Certains fichiers n’ont pas pu être synchronisés ! - - See below for errors - Voir ci-dessous pour les erreurs + + See below for errors + Voir ci-dessous pour les erreurs - - Preparing sync - Préparation de la synchronisation + + Preparing sync + Préparation de la synchronisation - - Syncing - Synchronisation + + + Syncing + Synchronisation - - Sync paused - Synchronisation mise en pause + + Sync paused + Synchronisation mise en pause - - Some files could not be synced! - Certains fichiers n’ont pas pu être synchronisés ! + + Some files could not be synced! + Certains fichiers n’ont pas pu être synchronisés ! - - See below for warnings - Voir ci-dessous pour les avertissements + + See below for warnings + Voir ci-dessous pour les avertissements - - %1 of %2 · %3 left - %1 sur %2 · %3 restants + + %1 of %2 · %3 left + %1 sur %2 · %3 restants - - %1 of %2 - %1 sur 2% + + %1 of %2 + %1 sur 2% - - Syncing file %1 of %2 - Synchronisation du fichier %1 sur %2 + + Syncing file %1 of %2 + Synchronisation du fichier %1 sur %2 - - + + OCC::Systray - - Download - Télécharger + + Download + Télécharger - - Add account - Ajouter un compte + + Add account + Ajouter un compte - - Open main dialog - Ouvrir la boîte de dialogue principale + + Open main dialog + Ouvrir la boîte de dialogue principale - - - Pause sync - Suspendre la synchronisation + + + Pause sync + Suspendre la synchronisation - - - Resume sync - Relancer la synchro + + + Resume sync + Relancer la synchro - - Settings - Paramètres + + Settings + Paramètres - - Help - Aide + + Help + Aide - - Exit %1 - Quitter %1 + + Exit %1 + Quitter %1 - - Pause sync for all - Suspendre toutes les synchros + + Pause sync for all + Suspendre toutes les synchros - - Resume sync for all - Relancer toutes les synchros + + Resume sync for all + Relancer toutes les synchros - - %1: %2 - %1 : %2 + + %1: %2 + %1 : %2 - - + + OCC::Theme - - <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>Client de bureau %1</p> <p>Version %1. Pour plus d'informations, cliquez <a href='%2'>ici</a>.</p> + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + <p>Client de bureau %1</p> <p>Version %1. Pour plus d'informations, cliquez <a href='%2'>ici</a>.</p> - - <p>%1 Desktop Client</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>Client de bureau %1</p> + <p>%1 Desktop Client</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + <p>Client de bureau %1</p> - - <p><small>Using virtual files plugin: %1</small></p> - <p><small>Utilise l'extension de fichiers virtuels : %1</small></p> + + <p><small>Using virtual files plugin: %1</small></p> + <p><small>Utilise l'extension de fichiers virtuels : %1</small></p> - - <p>%1 desktop client %2</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>client de bureau %1 %2</p> + + <p>%1 desktop client %2</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + <p>%1 %2</p> - - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>Version %1. Pour plus d’informations, veuillez cliquer <a href='%2'>ici</a>.</p> + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>Version %1. Pour plus d’informations, veuillez cliquer <a href='%2'>ici</a>.</p> - - <p>This release was supplied by %1.</p> - <p>Cette version a été fournie par %1.</p> + + <p>This release was supplied by %1.</p> + <p>Cette version a été fournie par %1.</p> - - + + OCC::UnifiedSearchResultsListModel - - Failed to fetch providers. - Échec de la récupération des fournisseurs. + + Failed to fetch providers. + Échec de la récupération des fournisseurs. - - Failed to fetch search providers for '%1'. Error: %2 - Échec de la récupération des fournisseurs de recherche pour '%1'. Erreur : %2 + + Failed to fetch search providers for '%1'. Error: %2 + Échec de la récupération des fournisseurs de recherche pour '%1'. Erreur : %2 - - Search has failed for '%2'. - La recherche de '%2' a échoué. + + Search has failed for '%2'. + La recherche de '%2' a échoué. - - Search has failed for '%1'. Error: %2 - La recherche de '%1' a échoué. Erreur: %2 + + Search has failed for '%1'. Error: %2 + La recherche de '%1' a échoué. Erreur: %2 - - + + OCC::UpdateE2eeFolderMetadataJob - - Failed to update folder metadata. - Échec du téléversement du dossier des métadonnées. + + Failed to update folder metadata. + Échec du téléversement du dossier des métadonnées. - - Failed to unlock encrypted folder. - Échec du déverrouillage du dossier chiffré. + + Failed to unlock encrypted folder. + Échec du déverrouillage du dossier chiffré. - - Failed to finalize item. - + + Failed to finalize item. + Échec de finalisation de l’élément. - - + + OCC::UpdateE2eeFolderUsersMetadataJob - - - - - - - - - - Error updating metadata for a folder %1 - Erreur lors de la mise à jour des métadonnées pour un dossier %1 + + + + + + + + + + Error updating metadata for a folder %1 + Erreur lors de la mise à jour des métadonnées pour un dossier %1 - - Could not fetch public key for user %1 - Impossible de récupérer la clé publique pour l'utilisateur %1 + + Could not fetch public key for user %1 + Impossible de récupérer la clé publique pour l'utilisateur %1 - - Could not find root encrypted folder for folder %1 - Impossible de trouver le dossier racine chiffré pour le dossier %1 + + Could not find root encrypted folder for folder %1 + Impossible de trouver le dossier racine chiffré pour le dossier %1 - - Could not add or remove a folder user %1, for folder %2 - Impossible d'ajouter ou de supprimer un dossier utilisateur %1, pour le dossier %2. + + Could not add or remove user %1 to access folder %2 + Impossible de supprimer l’utilisateur %1 au dossier d’accès %2 ou de l’y ajouter - - Failed to unlock a folder. - Échec du déverrouillage d’un dossier. + Could not add or remove a folder user %1, for folder %2 + Impossible d'ajouter ou de supprimer un dossier utilisateur %1, pour le dossier %2. - - + + + Failed to unlock a folder. + Échec du déverrouillage d’un dossier. + + + OCC::User - - Retry all uploads - Relancer tous les envois + + Retry all uploads + Relancer tous les envois - - - Resolve conflict - Résoudre le conflit + + + Resolve conflict + Résoudre le conflit - - + + OCC::UserModel - - Confirm Account Removal - Confirmer le retrait du compte + + Confirm Account Removal + Confirmer le retrait du compte - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Êtes-vous certain de vouloir retirer la connexion au compte <i>%1</i> ?</p><p><b>Note :</b> cette opération <b>ne supprimera aucun de vos fichiers</b> et ne supprimera pas non plus votre compte du serveur.</p> + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Êtes-vous certain de vouloir retirer la connexion au compte <i>%1</i> ?</p><p><b>Note :</b> cette opération <b>ne supprimera aucun de vos fichiers</b> et ne supprimera pas non plus votre compte du serveur.</p> - - Remove connection - Supprimer la connexion + + Remove connection + Supprimer la connexion - - Cancel - Annuler + + Cancel + Annuler - - + + OCC::UserStatusSelectorModel - - Could not fetch predefined statuses. Make sure you are connected to the server. - Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. + + Could not fetch predefined statuses. Make sure you are connected to the server. + Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. - - Could not fetch status. Make sure you are connected to the server. - Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. + + Could not fetch status. Make sure you are connected to the server. + Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. - - Status feature is not supported. You will not be able to set your status. - La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. + + Status feature is not supported. You will not be able to set your status. + La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. - - Emojis are not supported. Some status functionality may not work. - Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. + + Emojis are not supported. Some status functionality may not work. + Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. - - Could not set status. Make sure you are connected to the server. - Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. + + Could not set status. Make sure you are connected to the server. + Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. - - Could not clear status message. Make sure you are connected to the server. - Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. + + Could not clear status message. Make sure you are connected to the server. + Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. - - - Don't clear - Ne pas effacer + + + Don't clear + Ne pas effacer - - 30 minutes - 30 minutes + + 30 minutes + 30 minutes - - - 1 hour - 1 heure + + + 1 hour + 1 heure - - 4 hours - 4 heures + + 4 hours + 4 heures - - - Today - Aujourd'hui + + + Today + Aujourd'hui - - - This week - Cette semaine + + + This week + Cette semaine - - Less than a minute - Il y a moins d'une minute + + Less than a minute + Il y a moins d'une minute - - 1 minute - 1 minute + + 1 minute + 1 minute - - %1 minutes - %1 minutes + + %1 minutes + %1 minutes - - %1 hours - %1 heures + + %1 hours + %1 heures - - 1 day - 1 jour + + 1 day + 1 jour - - %1 days - %1 jours + + %1 days + %1 jours - - + + + OCC::ValidateChecksumHeader + + + The checksum header is malformed. + L’en-tête de la somme de contrôle est mal formé. + + + + The checksum header contained an unknown checksum type "%1" + L’en-tête de la somme de contrôle contenait un type de somme de contrôle inconnu « "%1" » + + + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + Le fichier téléchargé ne correspond pas à la somme de contrôle, il sera repris. "%1" != "%2" + + + OCC::Vfs - - The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - La fonctionnalité système de fichiers virtuels requiert un système de fichiers de type NTFS alors que %1 utilise %2. + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 + La fonctionnalité système de fichiers virtuels requiert un système de fichiers de type NTFS alors que %1 utilise %2. - - + + OCC::VfsDownloadErrorDialog - - Download error - Erreur de téléchargement + + Download error + Erreur de téléchargement - - Error downloading - Erreur au téléchargement + + Error downloading + Erreur au téléchargement - - could not be downloaded - ne peut pas être téléchargé + + could not be downloaded + ne peut pas être téléchargé - - > More details - > Plus de détails + + > More details + > Plus de détails - - More details - Plus de détails + + More details + Plus de détails - - Error downloading %1 - Erreur au téléchargement %1 + + Error downloading %1 + Erreur au téléchargement %1 - - %1 could not be downloaded. - %1 ne peut pas être téléchargé. + + %1 could not be downloaded. + %1 ne peut pas être téléchargé. - - + + OCC::VfsSuffix - - - Error updating metadata due to invalid modification time - Erreur de mise à jour des métadonnées à cause d'une date de modification invalide + + + Error updating metadata due to invalid modification time + Erreur de mise à jour des métadonnées à cause d'une date de modification invalide - - + + OCC::VfsXAttr - - - Error updating metadata due to invalid modification time - Erreur de mise à jour des métadonnées à cause d'une date de modification invalide + + + Error updating metadata due to invalid modification time + Erreur de mise à jour des métadonnées à cause d'une date de modification invalide - - + + OCC::WebEnginePage - - Invalid certificate detected - Certificat invalide + + Invalid certificate detected + Certificat invalide - - The host "%1" provided an invalid certificate. Continue? - L’hôte "%1" utilise un certificat invalide. Continuer ? + + The host "%1" provided an invalid certificate. Continue? + L’hôte "%1" utilise un certificat invalide. Continuer ? - - + + OCC::WebFlowCredentials - - You have been logged out of your account %1 at %2. Please login again. - Vous avez été déconnecté de votre compte %1 à %2. Merci de vous reconnecter. + You have been logged out of your account %1 at %2. Please login again. + Vous avez été déconnecté de votre compte %1 à %2. Merci de vous reconnecter. - - Please login with the account: %1 - Veuillez vous connecter avec le compte : %1 + Please login with the account: %1 + Veuillez vous connecter avec le compte : %1 - - + + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + <b>Vous avez été déconnecté(e) de votre compte %1 à %2. Veuillez vous reconnecter.</b> + + + OCC::WelcomePage - - Form - Formulaire + + Form + Formulaire - - Log in - Se connecter + + Log in + Se connecter - - Sign up with provider - Se connecter avec un fournisseur + + Sign up with provider + Se connecter avec un fournisseur - - Keep your data secure and under your control - Gardez vos données en sécurité et sous votre contrôle + + Keep your data secure and under your control + Gardez vos données en sécurité et sous votre contrôle - - Secure collaboration & file exchange - Collaboration et échange de fichiers sécurisés + Secure collaboration & file exchange + Collaboration et échange de fichiers sécurisés - - Easy-to-use web mail, calendaring & contacts - Courrier électronique, calendrier et contacts en ligne faciles à utiliser + Easy-to-use web mail, calendaring & contacts + Courrier électronique, calendrier et contacts en ligne faciles à utiliser - - Screensharing, online meetings & web conferences - Partage d'écran, réunions en ligne et conférences Web + Screensharing, online meetings & web conferences + Partage d'écran, réunions en ligne et conférences Web - - Host your own server - Hébergez votre propre serveur + + Host your own server + Hébergez votre propre serveur - - + + OCC::ownCloudGui - - Unsupported Server Version - Version du Serveur non prise en charge + + Unsupported Server Version + Version du Serveur non prise en charge - - The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - Le serveur sur le compte %1 fonctionne avec une version non-supportée %2. Utiliser ce client avec des versions non-supportées du serveur n'est pas testé et est potentiellement dangereux. Procédez à vos risques et périls. + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + Le serveur sur le compte %1 fonctionne avec une version non-supportée %2. Utiliser ce client avec des versions non-supportées du serveur n'est pas testé et est potentiellement dangereux. Procédez à vos risques et périls. - - Disconnected - Déconnecté + + Disconnected + Déconnecté - - Disconnected from some accounts - Déconnecté de certains comptes + + Disconnected from some accounts + Déconnecté de certains comptes - - Disconnected from %1 - Déconnecté de %1 + + Disconnected from %1 + Déconnecté de %1 - - Disconnected from accounts: - Déconnecté des comptes : + + Disconnected from accounts: + Déconnecté des comptes : - - Account %1: %2 - Compte %1 : %2 + + Account %1: %2 + Compte %1 : %2 - - Please sign in - Veuillez vous connecter + + Please sign in + Veuillez vous connecter - - Signed out - Session fermée + + Signed out + Session fermée - - Account synchronization is disabled - La synchronisation est en pause + + Account synchronization is disabled + La synchronisation est en pause - - - Synchronization is paused - La synchronisation est en pause + + + Synchronization is paused + La synchronisation est en pause - - Folder %1: %2 - Dossier %1 : %2 + + Folder %1: %2 + Dossier %1 : %2 - - Unresolved conflicts - Conflits non résolus + + Unresolved conflicts + Conflits non résolus - - Up to date - À jour + + Up to date + À jour - - Error during synchronization - Erreur durant la synchronisation + + Error during synchronization + Erreur durant la synchronisation - - There are no sync folders configured. - Aucun dossier à synchroniser n'est configuré + + There are no sync folders configured. + Aucun dossier à synchroniser n'est configuré - - No sync folders configured - Aucun dossier de synchronisation configuré + + No sync folders configured + Aucun dossier de synchronisation configuré - - Checking for changes in remote "%1" - Vérification des modifications dans "%1" distant + + Checking for changes in remote "%1" + Vérification des modifications dans "%1" distant - - Checking for changes in local "%1" - Vérification des modifications dans "%1" local + + Checking for changes in local "%1" + Vérification des modifications dans "%1" local - - Syncing %1 of %2 (%3 left) - Synchronisation de %1 sur %2 (%3 restants) + + Syncing %1 of %2 (%3 left) + Synchronisation de %1 sur %2 (%3 restants) - - Syncing %1 of %2 - Synchronisation %1 sur %2 + + Syncing %1 of %2 + Synchronisation %1 sur %2 - - Syncing %1 (%2 left) - Synchronisation de %1 (%2 restants) + + Syncing %1 (%2 left) + Synchronisation de %1 (%2 restants) - - Syncing %1 - Synchronisation de %1 + + Syncing %1 + Synchronisation de %1 - - %1 (%2, %3) - %1 (%2, %3) + + %1 (%2, %3) + %1 (%2, %3) - - + + + OCC::sesSnackBar + + + Error + Erreur + + + + Warning + Attention + + + + Success + Réussite + + + OwncloudAdvancedSetupPage - - &Local Folder - &Dossier local + + &Local Folder + &Dossier local - - Username - Nom d’utilisateur + + Username + Nom d’utilisateur - - Local Folder - Dossier local + + Local Folder + Dossier local - - Choose different folder - Choisir un autre dossier + + Choose different folder + Choisir un autre dossier - - Server address - Adresse du serveur + + Server address + Adresse du serveur - - Sync Logo - Logo de synchronisation + + Sync Logo + Logo de synchronisation - - Synchronize everything from server - Tout synchroniser depuis le serveur + + Synchronize everything from server + Tout synchroniser depuis le serveur - - Ask before syncing folders larger than - Demander confirmation avant de synchroniser les dossiers de taille supérieure à + + Ask before syncing folders larger than + Demander confirmation avant de synchroniser les dossiers de taille supérieure à - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - Mo + + + MB + + Trailing part of "Ask confirmation before syncing folder larger than" + MO + - - Ask before syncing external storages - Demander confirmation avant de synchroniser des stockages externes + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + + <html><head/><body><p>Si cette case est cochée, le contenu existant dans le dossier local sera effacé pour commencer une synchronisation propre à partir du serveur.</p><p>Ne cochez pas cette case si le contenu local doit être téléchargé dans le dossier du serveur..</p></body></html> + + - - Choose what to sync - Sélectionner le contenu à synchroniser + MB + Trailing part of "Ask confirmation before syncing folder larger than" + Mo - - Keep local data - Conserver les données locales + + Ask before syncing external storages + Confirmation avant de synchroniser des stockages externes - - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Si cette case est cochée, le contenu existant du dossier local sera supprimé pour démarrer une synchronisation propre depuis le serveur.</p><p>Ne pas cocher si le contenu local doit être téléversé vers le serveur.</p></body></html> + + Choose what to sync + Sélectionner le contenu à synchroniser - - Erase local folder and start a clean sync - Effacer le dossier local et démarrer une synchronisation complète + + Keep local data + Conserver les données locales - - + + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Si cette case est cochée, le contenu existant du dossier local sera supprimé pour démarrer une synchronisation propre depuis le serveur.</p><p>Ne pas cocher si le contenu local doit être téléversé vers le serveur.</p></body></html> + + + + Erase local folder and start a clean sync + Effacer le dossier local et démarrer une synchronisation complète + + + OwncloudHttpCredsPage - - &Username - &Nom d’utilisateur + + &Username + &Nom d’utilisateur - - &Password - &Mot de passe + + &Password + &Mot de passe - - + + + OwncloudOAuthCredsPage + + Please switch to your browser to proceed. + Merci de basculer vers votre navigateur pour terminer. + + + An error occurred while connecting. Please try again. + Une erreur s'est produite lors de la connexion. Veuillez ré-essayer. + + + Re-open Browser + Redémarrez votre navigateur + + + Copy link + Copier le lien + + + OwncloudSetupPage - - - TextLabel - Étiquette de texte + + + TextLabel + Étiquette de texte - - Logo - Logo + Logo + Logo - - Server address - Adresse du serveur + + Server address + Adresse du serveur - - This is the link to your %1 web interface when you open it in the browser. - Il s'agit de l'adresse URL lorsque vous utilisez %1 dans un navigateur. + + This is the link to your %1 web interface when you open it in the browser. + Il s'agit de l'adresse URL lorsque vous utilisez %1 dans un navigateur. - - + + QObject - - New folder - Nouveau dossier + + New folder + Nouveau dossier - - You renamed %1 - Vous avez renommé %1 + + You renamed %1 + Vous avez renommé %1 - - You deleted %1 - Vous avez supprimé %1 + + You deleted %1 + Vous avez supprimé %1 - - You created %1 - Vous avez créé %1 + + You created %1 + Vous avez créé %1 - - You changed %1 - Vous avez modifié %1 + + You changed %1 + Vous avez modifié %1 - - Synced %1 - %1 a été synchronisé + + Synced %1 + %1 a été synchronisé - - %nd - delay in days after an activity - %nj.%njrs%njrs + + %nd + delay in days after an activity + + %nj. + %njrs + - - in the future - Dans le futur + + in the future + Dans le futur - - %nh - delay in hours after an activity - %nh%nh%nh + + %nh + delay in hours after an activity + + %nh + %nh + - - now - A l'instant + + now + A l'instant - - 1m - one minute after activity date and time - 1m + + 1m + one minute after activity date and time + 1m - - %nm - delay in minutes after an activity - %nmin%nmin%nmin + + %nm + delay in minutes after an activity + + %nmin + %nmin + + + + + Some time ago + Il y a quelque temps + + + + %1: %2 + this displays an error string (%2) for a file %1 + %1 : %2 + + + + Paths beginning with '#' character are not supported in VFS mode. + Les chemins commençant par le caractère « # » ne sont pas pris en charge dans le mode VFS. + + + + Failed to create debug archive + Échec de création de l’archive de débogage - - Some time ago - Il y a quelque temps + + Could not create debug archive in selected location! + Impossible de créer une archive de débogage à l’emplacement sélectionné ! - - %1: %2 - this displays an error string (%2) for a file %1 - %1 : %2 + + Reply + Répondre - - Paths beginning with '#' character are not supported in VFS mode. - Les chemins commençant par le caractère « # » ne sont pas pris en charge dans le mode VFS. + + The directory %1 cannot be part of your sync directory. Please choose another folder. + La répertoire %1 ne peut pas faire partie de votre répertoire de synchronisation. Veuillez choisir un autre dossier. ResolveConflictsDialog - - Solve sync conflicts - Résoudre les conflits de synchronisation + + Solve sync conflicts + Résoudre les conflits de synchronisation - - %1 files in conflict - indicate the number of conflicts to resolve - %1 fichier en conflit%1 fichiers en conflit%1 fichiers en conflit + + %1 files in conflict + indicate the number of conflicts to resolve + + %1 fichier en conflit + %1 fichiers en conflit + - - Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - Choisissez si vous souhaitez conserver la version locale, la version serveur, ou les deux. Si vous choisissez les deux, un numéro sera ajouté au nom du fichier local. + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. + Choisissez si vous souhaitez conserver la version locale, la version serveur, ou les deux. Si vous choisissez les deux, un numéro sera ajouté au nom du fichier local. - - All local versions - Toutes les versions locales + + All local versions + Toutes les versions locales - - All server versions - Toutes les versions serveur + + All server versions + Toutes les versions serveur - - Resolve conflicts - Résoudre les conflits + + Resolve conflicts + Résoudre les conflits - - Cancel - Annuler + + Cancel + Annuler - - + + + SesErrorBox + + + Error + Erreur + + + + SesTrayHeader + + + Website + Site Web + + + + Open Nextcloud in browser + Ouvrir Nextcloud dans le navigateur + + + + Open local or group folders + Ouvrir des dossiers locaux ou de groupe + + + ShareDelegate - - Create a new share link - Créer un nouveau lien de partage + + Create a new share link + Créer un nouveau lien de partage - - Copy share link location - Copier le lien de partage + + Copy share link location + Copier le lien de partage - - Copied! - Copié ! + + Copied! + Copié ! - - Share options - Options de partage + + Share options + Options de partage - - + + ShareDetailsPage - - An error occurred setting the share password. - Une erreur est survenue lors de la configuration du mot de passe de partage. + + An error occurred setting the share password. + Une erreur est survenue lors de la configuration du mot de passe de partage. - - Edit share - Modifier le partage + Edit share + Modifier le partage - - Dismiss - Révoquer + + Dismiss + Révoquer - - Share label - Libellé du partage + Share label + Libellé du partage - - - Allow upload and editing - Autoriser le téléversement et l'édition + + + Allow upload and editing + Autoriser le téléversement et l'édition - - View only - Afficher seulement + + Custom Permissions + Autorisations personnalisées - - File drop (upload only) - Dépôt de fichiers (envoi uniquement) + + View only + Afficher seulement - - Allow resharing - Permettre le repartage + + File drop (upload only) + Dépôt de fichiers (envoi uniquement) - - Hide download - Masquer le téléchargement + + Allow resharing + Permettre le repartage - - Password protect - Protéger par mot de passe + + Hide download + Masquer le téléchargement - - Set expiration date - Définir une date d'expiration + + Password protect + Protéger par mot de passe - - Note to recipient - Note au destinataire + + Set expiration date + Définir une date d'expiration - - Unshare - Cesser le partage + + Note to recipient + Note au destinataire - - Add another link - Ajouter un autre lien + + Enter the note to recipient + Saisir la remarque à l’attention du destinataire - - Share link copied! - Lien de partage copié ! + + Unshare + Cesser le partage - - Copy share link - Copier le lien de partage + + Add another link + Ajouter un autre lien - - + + + Share link copied! + Lien copié ! + + + + Copy share link + Copier le lien + + + ShareView - - Password required for new share - Mot de passe requis pour le nouveau partage + + Password required for new share + Mot de passe requis pour le nouveau partage - - Share password - Mot de passe du partage + + Share password + Mot de passe du partage - - Sharing is disabled - Le partage est désactivté + + Sharing is disabled + Le partage est désactivté - - This item cannot be shared. - L'élément ne peut pas être partagé. + + This item cannot be shared. + L'élément ne peut pas être partagé. - - Sharing is disabled. - Le partage est désactivé. + + Sharing is disabled. + Le partage est désactivé. - - + + ShareeSearchField - - Search for users or groups… - Rechercher des utilisateurs ou des groupes... + + Search for users or groups… + Rechercher des utilisateurs ou des groupes... - - Sharing is not available for this folder - Le partage n'est pas disponible pour ce dossier + + Sharing is not available for this folder + Le partage n'est pas disponible pour ce dossier - - + + SyncJournalDb - - Failed to connect database. - Impossible de connecter la base de données. + Failed to connect database. + Impossible de connecter la base de données. - - + + SyncStatus - - Sync now - Synchroniser maintenant + + Sync now + Synchroniser maintenant - - Resolve conflicts - Résoudre les conflits + + Resolve conflicts + Résoudre les conflits - - + + TalkReplyTextField - - Reply to … - Répondre à... + + Reply to … + Répondre à... - - Send reply to chat message - Envoyer la réponse dans la discussion + + Send reply to chat message + Envoyer la réponse dans la discussion - - - TrayFoldersMenuButton + + + TestSetUserStatusDialog - - Open local or group folders - Ouvrir des dossiers locaux ou de groupe + + + 1 day + 1 jour - - Open local folder - Ouvrir le dossier local + + + + + + Don't clear + Ne pas effacer - - Connected - Connecté + + + + + + 1 hour + 1 heure - - Disconnected - Déconnecté + + + + + 30 minutes + 30 minutes - - Group folder button - Bouton du dossier de groupes + + + + 4 hours + 4 heures - - Open local folder "%1" - Ouvrir le dossier local « %1 » + + + + Today + Aujourd'hui - - Open group folder "%1" - Ouvrir le dossier de groupes "%1" + + + + This week + Cette semaine - - Open %1 in file explorer - Ouvrir %1 dans l'explorateur de fichiers + + Less than a minute + Il y a moins d'une minute - - User group and local folders menu - Menu de groupe d'utilisateurs et dossiers locaux + + 1 minute + 1 minute - - - UnifiedSearchInputContainer - - Search files, messages, events … - Rechercher des fichiers, des messages, des événements … + + 7 days + + - - - UnifiedSearchResultFetchMoreTrigger - - Load more results - Charger plus de résultats + + Could not fetch predefined statuses. Make sure you are connected to the server. + Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. - - - UnifiedSearchResultItemSkeleton - - Search result skeleton. - Squelette de résultat de recherche. + + Could not fetch status. Make sure you are connected to the server. + Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. - - - UnifiedSearchResultListItem - - Load more results - Charger plus de résultats + + Status feature is not supported. You will not be able to set your status. + La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. - - - UnifiedSearchResultNothingFound - - No results for - Aucun résultat pour + + Could not set status. Make sure you are connected to the server. + Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. - - - UnifiedSearchResultSectionItem - - Search results section %1 - Section de résultats de recherche %1 + + Emojis are not supported. Some status functionality may not work. + Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. - - - UserLine - - Switch to account - Utiliser ce compte + + Could not clear status message. Make sure you are connected to the server. + Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. + + + TrayFoldersMenuButton - - Current account status is online - Le statut actuel du compte est "en ligne" + + Files + Fichiers - - Current account status is do not disturb - Le statut actuel du compte est "ne pas déranger" + + Open local or group folders + Ouvrir des dossiers locaux ou de groupe - - Account actions - Actions du compte + + Open local folder + Ouvrir le dossier local - - Set status - Définir le statut + + Connected + Connecté - - - Log out - Se déconnecter + + Disconnected + Déconnecté - - - Log in - Se connecter + Group folder button + Bouton du dossier de groupes - - Remove account - Retirer le compte + + Open local folder "%1" + Ouvrir le dossier local « %1 » - - - UserStatusSelector - - Online status - Statut en ligne + + Open group folder "%1" + Ouvrir le dossier de groupes "%1" - - Online - En ligne + + Open %1 in file explorer + Ouvrir %1 dans l'explorateur de fichiers - - Away - Absent(e) + + User group and local folders menu + Menu de groupe d'utilisateurs et dossiers locaux + + + TrayWindowAccountMenu - - Do not disturb - Ne pas déranger + + Current account + Compte actuel - - Mute all notifications - Désactiver toutes les notifications + + Resume sync for all + Reprendre toutes les synchros - - Invisible - Invisible + + Pause sync for all + Suspendre synchros - - Appear offline - Apparaitre hors-ligne + + Add account + Ajouter un compte - - Status message - Message de statut + + Settings + Paramètres - - What is your status? - Quel est votre statut ? + + Exit + Quitter - - Clear status message after - Effacer le message de statut après + + Current account avatar + Avatar actuel du compte - - Cancel - Annuler + + Current account status is online + Le statut du compte actuel est En ligne - - Clear status message - Effacer le message de statut + + Current account status is do not disturb + Le statut du compte actuel est Ne pas déranger - - Set status message - Définir le message de statut + + Account switcher and settings menu + Sélecteur de compte et menu des paramètres - - - Utility + + + TrayWindowHeaderBar - - %L1 B - %L1 octets + + Website + Site Web - - %L1 TB - %L1 To + + Open Nextcloud in browser + Ouvrir Nextcloud dans le navigateur - - %L1 GB - %L1 Go + + Open local or group folders + Ouvrir des dossiers locaux ou de groupe - - %L1 MB - %L1 Mo + + Open Nextcloud Talk in browser + Ouvrez Nextcloud Talk dans le navigateur - - %L1 KB - %L1 Ko + + More apps + Plus d’applications - - - %n year(s) - %n an%n ans%n ans + + + Open %1 in browser + Ouvrir %1 dans le navigateur - - - %n month(s) - %n mois%n mois%n mois + + + UnifiedSearchInputContainer + + + Search files, messages, events … + Rechercher des fichiers, des messages, des événements … - - - %n day(s) - %n jour%n jours%n jours + + + UnifiedSearchResultFetchMoreTrigger + + + Load more results + Charger plus de résultats - - - %n hour(s) - %n heure%n heures%n heures + + + UnifiedSearchResultItemSkeleton + + + Search result skeleton. + Squelette de résultat de recherche. - - - %n minute(s) - %n minute%n minutes%n minutes + + + UnifiedSearchResultListItem + + + Load more results + Charger plus de résultats - - - %n second(s) - %n seconde%n secondes%n secondes + + + UnifiedSearchResultNothingFound + + + No results for + Aucun résultat pour + + + UnifiedSearchResultSectionItem - - %1 %2 - %1 %2 + + Search results section %1 + Section de résultats de recherche %1 - - - ValidateChecksumHeader + + + UserLine - - The checksum header is malformed. - L’en-tête de la somme de contrôle est mal formé. + + Switch to account + Utiliser ce compte - - The checksum header contained an unknown checksum type "%1" - L’en-tête de somme de contrôle contenait un type de somme de contrôle inconnu « %1 » + Current account status is online + Le statut actuel du compte est "en ligne" - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Le fichier téléchargé ne correspond pas à la somme de contrôle, il sera repris. "%1" != "%2" + Current account status is do not disturb + Le statut actuel du compte est "ne pas déranger" - - - Window - - Nextcloud desktop main dialog - Boîte de dialogue principale du bureau Nextcloud + + Account actions + Actions du compte - - Current account - Compte actuel + + Set status + Définir le statut - - - Resume sync for all - Relancer toutes les synchronisations + + + Log out + Se déconnecter - - - Pause sync for all - Suspendre toutes les synchros + + + Log in + Se connecter - - Add account - Ajouter un compte + + Remove account + Retirer le compte + + + UserStatusSelector - - Add new account - Ajouter un nouveau compte + + Online status + Statut en ligne - - Settings - Paramètres + + Online + En ligne - - Exit - Quitter + + Away + Absent(e) - - Current account avatar - Avatar actuel du compte + + Do not disturb + Ne pas déranger - - Current account status is online - Le statut actuel du compte est "en ligne" + + Mute all notifications + Désactiver toutes les notifications - - Current account status is do not disturb - Le statut actuel du compte est "ne pas déranger" + + Invisible + Invisible - - Account switcher and settings menu - Sélecteur de compte et menu des paramètres + + Appear offline + Apparaitre hors-ligne - - Open local or group folders - Ouvrir des dossiers locaux ou de groupe + + Status message + Message de statut - - Open Nextcloud Talk in browser - Ouvrez Nextcloud Talk dans le navigateur + + What is your status? + Quel est votre statut ? - - More apps - Plus d'applications + + Clear status message after + Effacer le message de statut après - - Open %1 in browser - Ouvrir %1 dans le navigateur + + Cancel + Annuler - - Unified search results list - Liste de résultats de recherche unifiée + + Clear status message + Effacer le message de statut - - New activities - Nouvelles activités + + Set status message + Définir le message de statut - - - main.cpp + + + Utility - - System Tray not available - Zone de notification système non disponible + + %L1 B + %L1 octets - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - %1 nécessite une zone de notification système fonctionnelle. Si vous utiliser XFCE, veuillez suivre <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">ces instructions</a>. Sinon, installez une application de la barre d'état système telle que "trayer" et réessayez. + + %L1 TB + %L1 To - - - nextcloudTheme::aboutInfo() - - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> + + %L1 GB + %L1 Go + + + + %L1 MB + %L1 Mo + + + + %L1 KB + %L1 Ko + + + + %n year(s) + + %n an + %n ans + + + + + %n month(s) + + %n mois + %n mois + + + + + %n day(s) + + %n jour + %n jours + + + + + %n hour(s) + + %n heure + %n heures + + + + + %n minute(s) + + %n minute + %n minutes + + + + + %n second(s) + + %n seconde + %n secondes + - - - progress - - Virtual file created - Fichier virtuel créé + + %1 %2 + %1 %2 + + + ValidateChecksumHeader - - Replaced by virtual file - Remplacé par un fichier virtuel + The checksum header is malformed. + L’en-tête de la somme de contrôle est mal formé. - - Downloaded - Reçu + The checksum header contained an unknown checksum type "%1" + L’en-tête de somme de contrôle contenait un type de somme de contrôle inconnu « %1 » - - Uploaded - Envoyé + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + Le fichier téléchargé ne correspond pas à la somme de contrôle, il sera repris. "%1" != "%2" + + + Window - - Server version downloaded, copied changed local file into conflict file - La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier conflit. + + Nextcloud desktop main dialog + Boîte de dialogue principale du bureau Nextcloud - - Server version downloaded, copied changed local file into case conflict conflict file - La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier de conflit de casse. + Current account + Compte actuel - - Deleted - Supprimé + Resume sync for all + Relancer toutes les synchronisations - - Moved to %1 - Déplacé vers %1 + Pause sync for all + Suspendre toutes les synchros - - Ignored - Ignoré + Add account + Ajouter un compte - - Filesystem access error - Erreur d'accès au système de fichiers + Add new account + Ajouter un nouveau compte - - Error - Erreur + Settings + Paramètres - - Updated local metadata - Métadonnées locales mises à jour + Exit + Quitter - - - Unknown - Inconnu + Current account avatar + Avatar actuel du compte - - downloading - téléchargement de + Current account status is online + Le statut actuel du compte est "en ligne" - - uploading - envoi + Current account status is do not disturb + Le statut actuel du compte est "ne pas déranger" - - deleting - suppression + Account switcher and settings menu + Sélecteur de compte et menu des paramètres - - moving - déplacement + Open local or group folders + Ouvrir des dossiers locaux ou de groupe - - ignoring - Ignore + Open Nextcloud Talk in browser + Ouvrez Nextcloud Talk dans le navigateur - - error - erreur + More apps + Plus d'applications - - updating local metadata - Mise à jour des métadonnées locales + Open %1 in browser + Ouvrir %1 dans le navigateur - - - theme - - Status undefined - Statut indéfini + + Unified search results list + Liste de résultats de recherche unifiée - - Waiting to start sync - Synchronisation en attente + + New activities + Nouvelles activités + + + main.cpp - - Sync is running - Synchronisation en cours + + System Tray not available + Zone de notification système non disponible - - Sync Success - Synchronisation réussie + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. + %1 nécessite une zone de notification système fonctionnelle. Si vous utiliser XFCE, veuillez suivre <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">ces instructions</a>. Sinon, installez une application de la barre d'état système telle que "trayer" et réessayez. + + + nextcloudTheme::about() - - Sync Success, some files were ignored. - Synchronisation terminée avec succès, certains fichiers ont été ignorés. + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> + + + nextcloudTheme::aboutInfo() - - Sync Error - Erreur de synchronisation + + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> + + + progress - - Setup Error - Erreur de configuration + + Virtual file created + Fichier virtuel créé - - Preparing to sync - Préparation à la synchronisation + + Replaced by virtual file + Remplacé par un fichier virtuel - - Aborting … - Annulation... + + Downloaded + Reçu - - Sync is paused - La synchronisation est en pause + + Uploaded + Envoyé - - - utility - - Could not open browser - Impossible de démarrer le navigateur + + Server version downloaded, copied changed local file into conflict file + La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier conflit. - - There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - Une erreur est survenue au lancement du navigateur pour visiter l'adresse %1. Il est possible qu'aucun navigateur par défaut ne soit configuré. + + Server version downloaded, copied changed local file into case conflict conflict file + La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier de conflit de casse. - - Could not open email client - Impossible d'ouvrir le client de messagerie + + Deleted + Supprimé - - There was an error when launching the email client to create a new message. Maybe no default email client is configured? - Il y a eu une erreur lors du lancement du client de messagerie pour créer un nouveau message. Peut-être qu'aucun client de messagerie n'est configuré ? + + Moved to %1 + Déplacé vers %1 - - Always available locally - Toujours disponible localement + + Ignored + Ignoré - - Currently available locally - Actuellement disponible en local + + Filesystem access error + Erreur d'accès au système de fichiers - - Some available online only - Certains sont disponibles en ligne seulement + + Error + Erreur - - Available online only - Disponible seulement en ligne + + Updated local metadata + Métadonnées locales mises à jour - - Make always available locally - Toujours rendre disponible localement + + Updated local virtual files metadata + Métadonnées des fichiers virtuels locaux mises à jour - - Free up local space - Libérer de l'espace local + + + Unknown + Inconnu - - - OCC::AbstractPropagateRemoteDeleteEncrypted - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". + + downloading + téléchargement de - - "%1 Failed to unlock encrypted folder %2". - "%1 Impossible de déverrouiller le dossier chiffré %2". + + uploading + envoi - - - OCC::OAuth - - Error returned from the server: <em>%1</em> - Erreur renvoyée par le serveur: <em>%1</em> + + deleting + suppression - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> + + moving + déplacement - - Empty JSON from OAuth2 redirect - Vider le JSON de la redirection OAuth2 + + ignoring + Ignore - - Could not parse the JSON returned from the server: <br><em>%1</em> - Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> + + error + erreur - - The reply from the server did not contain all expected fields - La réponse du serveur ne contient pas tous les champs attendus + + updating local metadata + Mise à jour des métadonnées locales - - <h1>Login Error</h1><p>%1</p> - <h1>Erreur de connexion</h1><p>%1</p> + + updating local virtual files metadata + mise à jour des métadonnées des fichiers virtuels locaux + + + theme - - <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> - <h1>Erreur de compte</h1><p>Vous êtes connecté(e) avec le compte <em>%1</em>, mais devez vous connecter avec le compte <em>%2</em>.<br>Merci de vous déconnecter de %3 dans un autre onglet, puis <a href='%4'>cliquez ici</a> et connectez-vous avec %2.</p> + + Status undefined + Statut indéfini - - - OCC::OwncloudOAuthCredsPage - - Connect to %1 - Connexion à %1 + + Waiting to start sync + Synchronisation en attente - - Login in your browser - Connectez vous sur votre navigateur + + Sync is running + Synchronisation en cours - - - OCC::ShareUserLine - - Username - Nom d’utilisateur + + Sync Success + Synchronisation réussie - - Can edit - Peut modifier + + Sync Success, some files were ignored. + Synchronisation terminée avec succès, certains fichiers ont été ignorés. - - Note: - Note : + + Sync Error + Erreur de synchronisation - - Password: - Mot de passe : + + Setup Error + Erreur de configuration - - Expires: - Expire le : + + Preparing to sync + Préparation à la synchronisation - - - OwncloudOAuthCredsPage - - Please switch to your browser to proceed. - Merci de basculer vers votre navigateur pour terminer. + + Aborting … + Annulation... - - An error occurred while connecting. Please try again. - Une erreur s'est produite lors de la connexion. Veuillez ré-essayer. + + Sync is paused + La synchronisation est en pause + + + utility - - Re-open Browser - Redémarrez votre navigateur + + Could not open browser + Impossible de démarrer le navigateur - - Copy link - Copier le lien + + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? + Une erreur est survenue au lancement du navigateur pour visiter l'adresse %1. Il est possible qu'aucun navigateur par défaut ne soit configuré. - - - nextcloudTheme::about() - - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> + + Could not open email client + Impossible d'ouvrir le client de messagerie - + + + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + Il y a eu une erreur lors du lancement du client de messagerie pour créer un nouveau message. Peut-être qu'aucun client de messagerie n'est configuré ? + + + + Always available locally + Toujours disponible localement + + + + Currently available locally + Actuellement disponible en local + + + + Some available online only + Certains sont disponibles en ligne seulement + + + + Available online only + Disponible seulement en ligne + + + + Make always available locally + Toujours rendre disponible localement + + + + Free up local space + Libérer de l'espace local + + \ No newline at end of file From cc745ab93f6063a79248120ed0585df7ba67b8ea Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 15:36:45 +0100 Subject: [PATCH 025/104] add paths to old icons --- theme/Style/Style.qml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 2b2835ff579ae..6dd4ba5f31cf8 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -203,6 +203,27 @@ QtObject { return size * (1 + Math.min(pixelSize / 100, 1)); } + // SES + readonly property string sesWebsiteIcon: "qrc:///client/theme/ses/ses-website.svg" + readonly property string sesFilesIcon: "qrc:///client/theme/ses/ses-filesIcon.svg" + readonly property string sesIonosLogoIcon: "qrc:///client/theme/ses/ses-IONOS-Logo.svg" + + readonly property string sesAvatar: "qrc:///client/theme/ses/ses-settingsAvatar.svg" + + readonly property string sesAccountQuit: "qrc:///client/theme/ses/ses-accountQuit.svg" + readonly property string sesAccountPause: "qrc:///client/theme/ses/ses-accountPause.svg" + readonly property string sesDarkPlus: "qrc:///client/theme/ses/ses-darkPlus16.svg" + readonly property string sesLightPlus: "qrc:///client/theme/ses/ses-lightPlus16.svg" + readonly property string sesAccountSettings: "qrc:///client/theme/ses/ses-settings16.svg" + readonly property string sesAccountResume: "qrc:///client/theme/ses/ses-accountResume.svg" + readonly property string sesLogout: "qrc:///client/theme/ses/ses-accountLogout.svg" + readonly property string sesDelete: "qrc:///client/theme/ses/ses-accountDelete.svg" + readonly property string sesClipboard: "qrc:///client/theme/ses/ses-clipboard.svg" + readonly property string sesErrorIcon: "qrc:///client/theme/colored/state-error.svg" + readonly property string sesErrorBoxIcon: "qrc:///client/theme/ses/ses-snackBarErrorIcon.svg" + readonly property string sesGreenCheckmark: "qrc:///client/theme/ses/ses-green-Checkmark.svg" + readonly property string sesChevron: "qrc:///client/theme/ses/ses-chevron.svg" + readonly property color sesIconDarkColor: "#001B41" readonly property color sesIconColor: "#1474C4" From 0258e73ee52ada153e08ee532640fc0d3ce8c8d2 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 21 Nov 2024 16:31:38 +0100 Subject: [PATCH 026/104] replace all ses icons with some other icon from nextcloud --- src/gui/folderstatusdelegate.cpp | 2 +- src/gui/sesFileIconProvider.cpp | 4 ++-- src/gui/sessnackbar.cpp | 6 ++--- src/gui/settingsdialog.cpp | 6 ++--- src/gui/tray/activitylistmodel.cpp | 10 ++++----- src/gui/wizard/flow2authwidget.cpp | 2 +- src/libsync/ionostheme.h | 16 +++++++------- theme/Style/Style.qml | 32 +++++++++++++-------------- theme/ses/ses-IONOS-logo.svg | 35 ++++++++++++++++++++++++++++++ 9 files changed, 74 insertions(+), 39 deletions(-) create mode 100644 theme/ses/ses-IONOS-logo.svg diff --git a/src/gui/folderstatusdelegate.cpp b/src/gui/folderstatusdelegate.cpp index 52b73444dc457..a0f7f79ed023d 100644 --- a/src/gui/folderstatusdelegate.cpp +++ b/src/gui/folderstatusdelegate.cpp @@ -513,7 +513,7 @@ void FolderStatusDelegate::slotStyleChanged() void FolderStatusDelegate::customizeStyle() { - _iconMore = Theme::createColorAwareIcon(QLatin1String(":/client/theme/ses/ses-more.svg"), QSize(128, 128)); + _iconMore = Theme::createColorAwareIcon(QLatin1String(":/client/theme/more.svg"), QSize(128, 128)); } } // namespace OCC diff --git a/src/gui/sesFileIconProvider.cpp b/src/gui/sesFileIconProvider.cpp index 99f96001b2fb1..677c1491b0d27 100644 --- a/src/gui/sesFileIconProvider.cpp +++ b/src/gui/sesFileIconProvider.cpp @@ -9,12 +9,12 @@ QIcon SesFileIconProvider::icon(const QFileInfo &info) const if (info.isDir()) { - return QIcon(":/client/theme/ses/ses-filesIconBright.svg"); + return QIcon(":/client/theme/black/folder.svg"); } if (info.suffix().isEmpty()) { - return QIcon(":/client/theme/ses/ses-file.svg"); + return QIcon(":/client/theme/black/edit.svg"); } diff --git a/src/gui/sessnackbar.cpp b/src/gui/sessnackbar.cpp index abc508b4ba83c..c42c099b2ab4c 100644 --- a/src/gui/sessnackbar.cpp +++ b/src/gui/sessnackbar.cpp @@ -101,7 +101,7 @@ namespace OCC { void sesSnackBar::successStyle() { - const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/ses/ses-snackBarSuccessIcon.svg"); + const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/black/state-ok.svg"); m_iconLabel.setPixmap(logoIconFileName); updateStyleSheet(IonosTheme::successBorderColor(), IonosTheme::successColor(), IonosTheme::black(), IonosTheme::black()); @@ -109,7 +109,7 @@ namespace OCC { void sesSnackBar::warningStyle() { - const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/ses/ses-snackBarWarningIcon.svg"); + const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/black/state-info.svg"); m_iconLabel.setPixmap(logoIconFileName); updateStyleSheet(IonosTheme::warningBorderColor(), IonosTheme::warningColor(), IonosTheme::black(), IonosTheme::black()); @@ -117,7 +117,7 @@ namespace OCC { void sesSnackBar::errorStyle() { - const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/ses/ses-snackBarErrorIcon.svg"); + const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/black/state-error.svg"); m_iconLabel.setPixmap(logoIconFileName); updateStyleSheet(IonosTheme::errorBorderColor(), IonosTheme::errorColor(), IonosTheme::black(), IonosTheme::black()); diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index 076b5acee1494..1f48dc2172f74 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -118,12 +118,12 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) _actionGroup->setExclusive(true); connect(_actionGroup, &QActionGroup::triggered, this, &SettingsDialog::slotSwitchPage); - QAction *newAccountAction = createColorAwareAction(QLatin1String(":/client/theme/ses/ses-darkPlus16.svg"), tr("New Account")); + QAction *newAccountAction = createColorAwareAction(QLatin1String(":/client/theme/black/add.svg"), tr("New Account")); _actionGroup->addAction(newAccountAction); _toolBar->addAction(newAccountAction); connect(newAccountAction, &QAction::triggered, _gui, &ownCloudGui::slotNewAccountWizard); - QAction *generalAction = createColorAwareAction(QLatin1String(":/client/theme/ses/ses-settings24.svg"), tr("General")); + QAction *generalAction = createColorAwareAction(QLatin1String(":/client/theme/settings.svg"), tr("General")); _actionGroup->addAction(generalAction); _toolBar->addAction(generalAction); auto *generalSettings = new GeneralSettings; @@ -241,7 +241,7 @@ void SettingsDialog::accountAdded(AccountState *s) bool brandingSingleAccount = !Theme::instance()->multiAccount(); const auto actionText = brandingSingleAccount ? tr("Account") : s->account()->displayName(); - const auto accountAction = createColorAwareAction(QLatin1String(":/client/theme/ses/ses-settingsAvatar.svg"), actionText); + const auto accountAction = createColorAwareAction(QLatin1String(":/client/theme/account.svg"), actionText); if (!brandingSingleAccount) { accountAction->setToolTip(s->account()->displayName()); diff --git a/src/gui/tray/activitylistmodel.cpp b/src/gui/tray/activitylistmodel.cpp index 201ffa04169ff..4880b077e2fe5 100644 --- a/src/gui/tray/activitylistmodel.cpp +++ b/src/gui/tray/activitylistmodel.cpp @@ -228,18 +228,18 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const }; const auto generateIconPath = [&]() { - auto colorIconPath = QStringLiteral("qrc:///client/theme/ses/"); + auto colorIconPath = QStringLiteral("qrc:///client/theme/colored/"); if (a._type == Activity::NotificationType && !a._talkNotificationData.userAvatar.isEmpty()) { return QStringLiteral("qrc:///client/theme/colored/talk-bordered.svg"); } else if (a._type == Activity::SyncResultType) { - colorIconPath.append("ses-snackBarErrorIcon.svg"); + colorIconPath.append("state-error.svg"); return colorIconPath; } else if (a._type == Activity::SyncFileItemType) { if (a._syncFileItemStatus == SyncFileItem::NormalError || a._syncFileItemStatus == SyncFileItem::FatalError || a._syncFileItemStatus == SyncFileItem::DetailError || a._syncFileItemStatus == SyncFileItem::BlacklistedError) { - colorIconPath.append("ses-snackBarErrorIcon.svg"); + colorIconPath.append("state-error.svg"); return colorIconPath; } else if (a._syncFileItemStatus == SyncFileItem::SoftError || a._syncFileItemStatus == SyncFileItem::Conflict @@ -248,10 +248,10 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const || a._syncFileItemStatus == SyncFileItem::FileNameInvalid || a._syncFileItemStatus == SyncFileItem::FileNameInvalidOnServer || a._syncFileItemStatus == SyncFileItem::FileNameClash) { - colorIconPath.append("ses-warning.svg"); + colorIconPath.append("state-info.svg"); return colorIconPath; } else if (a._syncFileItemStatus == SyncFileItem::FileIgnored) { - colorIconPath.append("ses-info.svg"); + colorIconPath.append("state-info.svg"); return colorIconPath; } else { // File sync successful diff --git a/src/gui/wizard/flow2authwidget.cpp b/src/gui/wizard/flow2authwidget.cpp index 6db4af0fa810b..4e47608bf1642 100644 --- a/src/gui/wizard/flow2authwidget.cpp +++ b/src/gui/wizard/flow2authwidget.cpp @@ -58,7 +58,7 @@ Flow2AuthWidget::Flow2AuthWidget(QWidget *parent) void Flow2AuthWidget::setLogo() { - const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/ses/ses-external.svg"); + const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/black/external.svg"); _ui.logoLabel->setPixmap(logoIconFileName); } diff --git a/src/libsync/ionostheme.h b/src/libsync/ionostheme.h index 97d7e34670787..bfb96b43e30aa 100644 --- a/src/libsync/ionostheme.h +++ b/src/libsync/ionostheme.h @@ -12,35 +12,35 @@ class IonosTheme { //Icons static QString avatarIcon() { - return QString(Theme::themePrefix) + QStringLiteral("ses/ses-setupAvatar.svg"); + return QString(Theme::themePrefix) + QStringLiteral("colored/wizard-groupware.svg"); } static QString folderIcon() { - return QString(Theme::themePrefix) + QStringLiteral("ses/ses-folder32.svg"); + return QString(Theme::themePrefix) + QStringLiteral("black/folder.svg"); } static QString syncArrows() { - return QString(Theme::themePrefix) + QStringLiteral("ses/ses-syncArrows.svg"); + return QString(Theme::themePrefix) + QStringLiteral("sync-arrow.svg"); } static QString questionCircleIcon() { - return QString(Theme::themePrefix) + QStringLiteral("ses/ses-questionCircle.svg"); + return QString(Theme::themePrefix) + QStringLiteral("black/state-info.svg"); } static QString liveBackupPlusIcon() { - return QString(Theme::themePrefix) + QStringLiteral("ses/ses-addLiveBackupPlus.svg"); + return QString(Theme::themePrefix) + QStringLiteral("black/add.svg"); } static QString plusIcon() { - return QStringLiteral("qrc:///client/theme/ses/ses-darkPlus24.svg"); + return QStringLiteral("qrc:///client/theme/black/add.svg"); } static QString deleteIcon() { - return QStringLiteral("qrc:///client/theme/ses/ses-activityDelete.svg"); + return QStringLiteral("qrc:///client/theme/black/clear.svg"); } static QString refreshIcon() { - return QStringLiteral("qrc:///client/theme/ses/ses-refresh.svg"); + return QStringLiteral("qrc:///client/theme/black/change.svg"); } static int treeViewIconSize() { diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 6dd4ba5f31cf8..5b4f9ef65bf65 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -204,25 +204,25 @@ QtObject { } // SES - readonly property string sesWebsiteIcon: "qrc:///client/theme/ses/ses-website.svg" - readonly property string sesFilesIcon: "qrc:///client/theme/ses/ses-filesIcon.svg" + readonly property string sesWebsiteIcon: "qrc:///client/theme/external.svg" + readonly property string sesFilesIcon: "qrc:///client/theme/files.svg" readonly property string sesIonosLogoIcon: "qrc:///client/theme/ses/ses-IONOS-Logo.svg" - readonly property string sesAvatar: "qrc:///client/theme/ses/ses-settingsAvatar.svg" - - readonly property string sesAccountQuit: "qrc:///client/theme/ses/ses-accountQuit.svg" - readonly property string sesAccountPause: "qrc:///client/theme/ses/ses-accountPause.svg" - readonly property string sesDarkPlus: "qrc:///client/theme/ses/ses-darkPlus16.svg" - readonly property string sesLightPlus: "qrc:///client/theme/ses/ses-lightPlus16.svg" - readonly property string sesAccountSettings: "qrc:///client/theme/ses/ses-settings16.svg" - readonly property string sesAccountResume: "qrc:///client/theme/ses/ses-accountResume.svg" - readonly property string sesLogout: "qrc:///client/theme/ses/ses-accountLogout.svg" - readonly property string sesDelete: "qrc:///client/theme/ses/ses-accountDelete.svg" - readonly property string sesClipboard: "qrc:///client/theme/ses/ses-clipboard.svg" + readonly property string sesAvatar: "qrc:///client/theme/account.svg" + + readonly property string sesAccountQuit: "qrc:///client/theme/black/close.svg" + readonly property string sesAccountPause: "qrc:///client/theme/colored/state-pause.svg" + readonly property string sesDarkPlus: "qrc:///client/theme/black/add.svg" + readonly property string sesLightPlus: "qrc:///client/theme/white/add.svg" + readonly property string sesAccountSettings: "qrc:///client/theme/black/settings.svg" + readonly property string sesAccountResume: "qrc:///client/theme/black/state-sync.svg" + readonly property string sesLogout: "qrc:///client/theme/black/close.svg" + readonly property string sesDelete: "qrc:///client/theme/delete.svg" + readonly property string sesClipboard: "qrc:///client/theme/copy.svg" readonly property string sesErrorIcon: "qrc:///client/theme/colored/state-error.svg" - readonly property string sesErrorBoxIcon: "qrc:///client/theme/ses/ses-snackBarErrorIcon.svg" - readonly property string sesGreenCheckmark: "qrc:///client/theme/ses/ses-green-Checkmark.svg" - readonly property string sesChevron: "qrc:///client/theme/ses/ses-chevron.svg" + readonly property string sesErrorBoxIcon: "qrc:///client/theme/colored/state-error.svg" + readonly property string sesGreenCheckmark: "qrc:///client/theme/colored/state-ok.svg" + readonly property string sesChevron: "qrc:///client/theme/black/caret-down.svg" readonly property color sesIconDarkColor: "#001B41" readonly property color sesIconColor: "#1474C4" diff --git a/theme/ses/ses-IONOS-logo.svg b/theme/ses/ses-IONOS-logo.svg new file mode 100644 index 0000000000000..816faa83f14e7 --- /dev/null +++ b/theme/ses/ses-IONOS-logo.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 3cf3bb28fe880fb23c4c811db2ba7500f0dab9d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Mon, 25 Nov 2024 09:47:33 +0100 Subject: [PATCH 027/104] replaced link icons with simliar icon --- src/gui/filedetails/sharemodel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/filedetails/sharemodel.cpp b/src/gui/filedetails/sharemodel.cpp index 1c922fc8d4d08..82e7dffa5bcbd 100644 --- a/src/gui/filedetails/sharemodel.cpp +++ b/src/gui/filedetails/sharemodel.cpp @@ -674,11 +674,11 @@ QString ShareModel::iconUrlForShare(const SharePtr &share) const switch(share->getShareType()) { case Share::TypeInternalLink: - return QString(iconsPath + QStringLiteral("externalLink.svg")); + return QString(iconsPath + QStringLiteral("public.svg")); case Share::TypePlaceholderLink: case Share::TypeSecureFileDropPlaceholderLink: case Share::TypeLink: - return QString(iconsPath + QStringLiteral("link.svg")); + return QString(iconsPath + QStringLiteral("public.svg")); case Share::TypeEmail: return QString(iconsPath + QStringLiteral("email.svg")); case Share::TypeRoom: From a550b3420097ce356d45bc6605189bd2e1eda587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Mon, 25 Nov 2024 11:38:12 +0100 Subject: [PATCH 028/104] Ionos Logo in qrc.in --- theme.qrc.in | 1 + 1 file changed, 1 insertion(+) diff --git a/theme.qrc.in b/theme.qrc.in index 7d85a2da536b7..1f39b234c801b 100644 --- a/theme.qrc.in +++ b/theme.qrc.in @@ -240,6 +240,7 @@ theme/call-notification.wav theme/more-apps.svg theme/talk-app.svg + theme/ses/ses-IONOS-Logo.svg theme/colored/IONOS_logo_w_suffix_frontend.png theme/colored/IONOS_logo_w_suffix_frontend@2x.png theme/colored/IONOS_logo_w_suffix_frontend.svg From dbb0e514024c5245b3048bafd3bfa13539b2fffe Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Tue, 3 Dec 2024 14:29:47 +0100 Subject: [PATCH 029/104] SES-186 replace installer banner with white image --- admin/win/msi/gui/banner.bmp | Bin 114514 -> 85978 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/admin/win/msi/gui/banner.bmp b/admin/win/msi/gui/banner.bmp index fa483161f4a6ed96708261f7aeb1524da2cf73c2..5270a99dea084175b16de1eb879f42cbc2d9bea2 100644 GIT binary patch delta 398 zcmccgkL}icR&6KWTmFm;AkYQGH9-6p$h88}j0_S$l7S%rC@;j#z#z0yTaAs8VdKQ( KtfM5gLjV9St$wcn literal 114514 zcmeI)JBVCm9ER~(B7)io!8W9llwvv|5YmW+5Cd8XYO|dZuu=qV*1~4hLP!yl!p5Xf zQbe~gAr`UP*aX1@5(pTGh(r<6jq{wzJO1~}ncd0m$nJ*c;COD|?feGjJ-6(Umycao z7%+V@`g}0@{4rX6VKiSD>>unI&42n~VX*h9LH8N0-k*kp!T3McheuvK_U`hfe-6Cz z{k~`RE&aZ5@ZiC{i;IiTjy{i{IC0{MLr?y)=fLaB&!;x?$Lh*xdFZ5o0tzUgfC36A zpnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7>3Mim} z0tzUgfC36Apnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7>3Mim}0tzUgfC36Apnw7j zD4>7>3Mim}0tzUgfC36Apnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7>3Mim}0tzUg zfC36Apnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7>yISDxZ#Rbb{`zw+$FP~UsNtzi0+=tY@tG z&Nv>nCzn(2-rwVM1lFnZ)mzWi=3Q1m0Ru z>>MY#$oOLzYuc}$zIz7LOJ-9aQ?}v2bp2Asb*i_mde4Ay)QNU-JaxOv3Mim}0^2K) zjOntY+`G-Fl7aO;>78ri>p|*}4eeCh%sw)R@_g8zoXURY$u`Q+N2Z)3oO|zRHcjST z?vCzX*K+{2(MG+7om40b$!x}wPjWNGDAV2>ubE9b#+R|>*i)Z*jw|Ox^pW!x>QaX( zbx*#wf0z%)(e_8#II_%fc4HWwuP|pyW~UwI)TvpV`zKuA*QqU6_qnWq0tzUweFDh| zey5Wubu@kXSFdkt2BcnXGuy~C`XH;wh~!lEGf%d)W9b`1t=BH+dOkVY?$3JKrN8!5 z%WRa{w3G9L9D6+{$#KP(vT2ifo3p8#^PJSnn3ywO`l|P~Yg;+5N*?FFd-6Z^=sROi z`?THny=K321r$&~f$b4U#_&7cmkr6a`n&$HnN0>I6X}oVsLb0b+18GwZwzhStk*XB z`batEw9B<-_pF!ay`xX=SEn3hlCQa+oZL$p&O=fro@~R6?8}(&O%A7xWNX&RP(B#- z=qmU>1r$&~fgK@`jA?T+ zgX_!7{LWLS?|Q7ZNjqc)!pE>1|*_2_Ox_!2(7f-S`$Ju5!+w)EUZ88=n z#>{#q#+r5Jw9P#V>N+W)fC38a9D)2sw>g;+_T}ZQnVmdIzK|*DFBy@3m?tmWvGk3h z)@$q1Z}O=vSJyY2*||@UbCEXpYac9gUCX~$o97hMoKMhpo7tP~kG9u4U)XHB)>A+M z1r*qtKr*z=$+X&+m$POz_iWd;f1|tSN?-HLY_46&Y1(DZ`YaRg*O7B|;@vIY*UH58 zdY+4Oon7DQ!e*9h(VUCSIl9Q1?DfXHdAjt(7{$R zn`gDj(&P&nIM2-9Y+gTbpi?&FzVnpbGjE<(J2Q8<#e%zSyjwh6t1F;@0=q)s|H^DK zy0)F?we!yGyfgJM*Vnt^i*b+&D4>7>3N!*WSLgZO_^m7Bzlq8*+>cIH_C5E^yVEI?Yi#PTm)ZF{Ak?eRe)G3K@?1IN zV4gneb7kJkqHJxW)^S+@1r$&~f!!#uQD*1;DYB9Gq{+tQF5CK^d$KLhvFkN9KB-H; z?Nr}wqa1zb-E8`*xtzLr-cEn~8)M3(?>s|KS?3BUpnw7j>}G+DGMi&d&gPmn^S<1r zJh_=N^%}djHLY$PPugJ482Zi+YR=d4KHo;$NdW~EP~cG#$h+OsGLd5?E4gOP_3QW= z`1Di;?oCs+y~d_O{?1sN<+ZWyTK@ju$EF?nUhm&qa}2rOCbwB$uYB#xWd#&aKmi35 zP(T3%6i`3`1r$&~0R@~ From 6958ca6deaf55e530065bf9f7e495d326786f0c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 3 Dec 2024 14:57:15 +0100 Subject: [PATCH 030/104] SES-161 Use AppShortName for Update URL --- src/gui/updater/updater.cpp | 2 +- src/libsync/theme.cpp | 5 +++++ src/libsync/theme.h | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/gui/updater/updater.cpp b/src/gui/updater/updater.cpp index 4365ae5837ab4..45bfe19847141 100644 --- a/src/gui/updater/updater.cpp +++ b/src/gui/updater/updater.cpp @@ -97,7 +97,7 @@ QUrlQuery Updater::getQueryParams() query.addQueryItem(QStringLiteral("osRelease"), QSysInfo::productType()); query.addQueryItem(QStringLiteral("osVersion"), QSysInfo::productVersion()); query.addQueryItem(QStringLiteral("kernelVersion"), QSysInfo::kernelVersion()); - query.addQueryItem(QStringLiteral("oem"), theme->appName()); + query.addQueryItem(QStringLiteral("oem"), theme->appShortName()); query.addQueryItem(QStringLiteral("buildArch"), QSysInfo::buildCpuArchitecture()); query.addQueryItem(QStringLiteral("currentArch"), QSysInfo::currentCpuArchitecture()); diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index d71737ba5d60a..75b88f2d3068f 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -129,6 +129,11 @@ QString Theme::appName() const return APPLICATION_NAME; } +QString Theme::appShortName() const +{ + return APPLICATION_SHORTNAME; +} + QUrl Theme::stateOnlineImageSource() const { return imagePathToUrl(themeImagePath("state-ok")); diff --git a/src/libsync/theme.h b/src/libsync/theme.h index 7ebf5050c2227..cc609c7c2d9ec 100644 --- a/src/libsync/theme.h +++ b/src/libsync/theme.h @@ -41,6 +41,7 @@ class OWNCLOUDSYNC_EXPORT Theme : public QObject Q_PROPERTY(bool branded READ isBranded CONSTANT) Q_PROPERTY(QString appNameGUI READ appNameGUI CONSTANT) Q_PROPERTY(QString appName READ appName CONSTANT) + Q_PROPERTY(QString appShortName READ appShortName CONSTANT) Q_PROPERTY(QUrl stateOnlineImageSource READ stateOnlineImageSource CONSTANT) Q_PROPERTY(QUrl stateOfflineImageSource READ stateOfflineImageSource CONSTANT) Q_PROPERTY(QUrl statusOnlineImageSource READ statusOnlineImageSource CONSTANT) @@ -123,6 +124,24 @@ class OWNCLOUDSYNC_EXPORT Theme : public QObject */ [[nodiscard]] QString appName() const; + /** + * @brief appShortName - Application name (short and single word) + * + * Use and redefine this as an application name. Keep it straight as + * it is used for config files etc. If you need a more sophisticated + * name in the GUI, redefine appNameGUI. + * + * By default, the name is derived from the APPLICATION_SHORTNAME + * cmake variable, and should be the same. This method is only + * reimplementable for legacy reasons. + * + * Warning: Do not modify this value, as many things, e.g. settings + * depend on it! You most likely want to modify \ref appNameGUI(). + * + * @return QString with app name. + */ + [[nodiscard]] QString appShortName() const; + /** * @brief Returns full path to an online state icon * @return QUrl full path to an icon From b959dd8891581847e03795c97ff57bf7a810e5cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 3 Dec 2024 14:57:40 +0100 Subject: [PATCH 031/104] SES-161 Use correct Update Server --- IONOS.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IONOS.cmake b/IONOS.cmake index c6f81f9a00d80..1ccf59eff473c 100644 --- a/IONOS.cmake +++ b/IONOS.cmake @@ -4,7 +4,7 @@ set( APPLICATION_EXECUTABLE "HiDriveNext" ) set( APPLICATION_CONFIG_NAME "${APPLICATION_EXECUTABLE}" ) set( APPLICATION_DOMAIN "ionos.com" ) set( APPLICATION_VENDOR "IONOS SE" ) -set( APPLICATION_UPDATE_URL "https://updates.nextcloud.org/client/" CACHE STRING "URL for updater" ) +set( APPLICATION_UPDATE_URL "https://customerupdates.nextcloud.com/client/" CACHE STRING "URL for updater" ) set( APPLICATION_HELP_URL "" CACHE STRING "URL for the help menu" ) if(APPLE AND APPLICATION_NAME STREQUAL "Nextcloud" AND EXISTS "${CMAKE_SOURCE_DIR}/theme/colored/Nextcloud-macOS-icon.svg") From 34f93d2dc92d505d49cafe051b2b69b13e79d118 Mon Sep 17 00:00:00 2001 From: Boris Baltes Date: Thu, 12 Dec 2024 13:17:40 +0100 Subject: [PATCH 032/104] SES-228 validate manual input in FolderWizardLocalPath --- src/gui/folderwizard.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gui/folderwizard.cpp b/src/gui/folderwizard.cpp index 1969c48962a98..e99295721b981 100644 --- a/src/gui/folderwizard.cpp +++ b/src/gui/folderwizard.cpp @@ -121,6 +121,13 @@ bool FolderWizardLocalPath::isComplete() const const auto errorStr = FolderMan::instance()->checkPathValidityForNewFolder( QDir::fromNativeSeparators(_ui.localFolderLineEdit->text()), serverUrl).second; + SyncDirValidator syncDirValidator(QDir::fromNativeSeparators(_ui.localFolderLineEdit->text())); + if (!syncDirValidator.isValidDir()) { + _ui.sesSnackBar->show(); + _ui.sesSnackBar->setError(syncDirValidator.message()); + return false; + } + if(errorStr.isEmpty()) { _ui.sesSnackBar->hide(); From 8ae088995b8a31fe359d2abaca42f6937811d06f Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Thu, 12 Dec 2024 13:20:59 +0100 Subject: [PATCH 033/104] move build directory out of respository so we do not scan this directory while generating translation files --- .vscode/launch.json | 6 +++--- .vscode/settings.json | 2 +- .vscode/tasks.json | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 3fe60132e26b1..9d21d2a933254 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,7 +9,7 @@ "name": "(RelWithDebInfo) Launch HiDriveNext", "type": "cppvsdbg", "request": "launch", - "program": "${workspaceFolder}/build/win32-MSVC-x64/RelWithDebInfo/bin/HiDriveNext.exe", + "program": "${workspaceFolder}/../build/win32-MSVC-x64/RelWithDebInfo/bin/HiDriveNext.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", @@ -24,7 +24,7 @@ "name": "(RelWithDebInfo) Launch NextCloud", "type": "cppvsdbg", "request": "launch", - "program": "${workspaceFolder}/build/win32-MSVC-x64/RelWithDebInfo/bin/nextcloud.exe", + "program": "${workspaceFolder}/../build/win32-MSVC-x64/RelWithDebInfo/bin/nextcloud.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", @@ -39,7 +39,7 @@ "name": "(Release) Launch NextCloud", "type": "cppvsdbg", "request": "launch", - "program": "${workspaceFolder}/build/win32-MSVC-x64/Release/bin/nextcloud.exe", + "program": "${workspaceFolder}/../build/win32-MSVC-x64/Release/bin/nextcloud.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", diff --git a/.vscode/settings.json b/.vscode/settings.json index 0d75aa43d4575..957d14f2294df 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,5 +4,5 @@ "CMAKE_PREFIX_PATH": "C:/Craft64", "BUILD_TESTING":"OFF", }, - "cmake.buildDirectory": "${workspaceFolder}/build/${buildKitTargetOs}-${buildKitVendor}-${buildKitTargetArch}/${buildType}", + "cmake.buildDirectory": "${workspaceFolder}/../build/${buildKitTargetOs}-${buildKitVendor}-${buildKitTargetArch}/${buildType}", } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 988cc883ce738..153627d3103a2 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -8,7 +8,7 @@ "args": [ "-NoProfile", "-Command", - "Remove-Item -Recurse -Force .\\build\\win32-MSVC-x64\\RelWithDebInfo" + "Remove-Item -Recurse -Force ..\\build\\win32-MSVC-x64\\RelWithDebInfo" ], "problemMatcher": [], "group": { @@ -24,7 +24,7 @@ "args": [ "-NoProfile", "-Command", - "Remove-Item -Recurse -Force .\\build\\win32-MSVC-x64\\Release" + "Remove-Item -Recurse -Force ..\\build\\win32-MSVC-x64\\Release" ], "problemMatcher": [], "group": { From 21529ea76ce3eec8f387ea05271a59068af65f7f Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Thu, 12 Dec 2024 13:51:36 +0100 Subject: [PATCH 034/104] generate translation files --- translations/client_de.ts | 3056 ++++++++----- translations/client_en.ts | 6511 ++++++++++++++++++-------- translations/client_es.ts | 746 +-- translations/client_fr.ts | 9106 +++++++++++++++++++------------------ translations/client_nl.ts | 3647 +++++++++------ 5 files changed, 13849 insertions(+), 9217 deletions(-) diff --git a/translations/client_de.ts b/translations/client_de.ts index 9aaf673a81976..8f6aa71efa88d 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -1,13 +1,15 @@ - + + + ActivityItem - + Open %1 locally %1 lokal öffnen - + In %1 In %1 @@ -15,12 +17,12 @@ ActivityItemContent - + Open file details Dateidetails öffnen - + Dismiss Ablehnen @@ -28,12 +30,12 @@ ActivityList - + Activity list Aktivitätenliste - + No activities yet Noch keine Aktivitäten vorhanden @@ -54,17 +56,17 @@ Avatar zu Benachrichtigung über Talk-Anrufer - + Answer Talk call notification Benachrichtigung zu Talk-Anruf beantworten - + Decline Ablehnen - + Decline Talk call notification Benachrichtigung zu Talk-Anruf ablehnen @@ -166,6 +168,80 @@ Serverversion + + CrashReporter + + + Tomahawk Crash Reporter + + + + + <html><head/><body><p><br/></p></body></html> + + + + + Abort + + + + + Send this report + + + + + Don't send + + + + + You can disable sending crash reports in the configuration dialog. + + + + + + + We cannot gather useful debug information on your system. + + + + + + + + + Close + Schliessen + + + + Ready to send debug information (<a href="%1">view backtrace</a>). + + + + + Gathering debug information... + + + + + Uploaded %L1 of %L2 KB. + + + + + Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. + + + + + Failed to send crash info. + + + EditFileLocallyLoadingDialog @@ -190,22 +266,28 @@ Fehler + + FakeHangingReply + + + Operation canceled + + + FileDetailsPage - + Dismiss Ablehnen - Activity - Aktivität + Aktivität - Sharing - Teilen + Teilen @@ -229,7 +311,7 @@ Materialisierte Elemente - + Reload Neu laden @@ -237,12 +319,12 @@ FileProviderFastEnumerationSettings - + Enable fast sync Schnelle Synchronisierung altivieren - + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. Bei der schnellen Synchronisierung werden nur Änderungen an Dateien und Ordnern innerhalb der Ordner synchronisiert, die bereits untersucht wurden. Dies kann die Reaktionsfähigkeit bei der Ersteinrichtung virtueller Dateien erheblich erhöhen. Allerdings führt dies zu redundanten Downloads von Dateien, die in einen noch nicht erfassten Ordner verschoben wurden. @@ -268,22 +350,22 @@ Allgemeine Einstellungen - + Enable virtual files Virtuelle Dateien aktivieren - + Advanced Erweitert - + Signal file provider domain Domain des Signaldateianbieters - + Create debug archive Debug-Archiv erstellen @@ -322,30 +404,26 @@ FileSystem - + Error removing "%1": %2 Fehler beim Entfernen "%1": %2 - + Could not remove folder "%1" Der Ordner "%1" konnte nicht gelöscht werden - Could not make directories in trash - Verzeichnisse konnten im Papierkorb nicht erstellt werden + Verzeichnisse konnten im Papierkorb nicht erstellt werden - - Could not move "%1" to "%2" - Konnte "%1" nicht nach "%2" verschieben + Konnte "%1" nicht nach "%2" verschieben - Moving to the trash is not implemented on this platform - Verschieben in den Papierkorb ist auf dieser Plattform nicht möglich + Verschieben in den Papierkorb ist auf dieser Plattform nicht möglich @@ -361,84 +439,168 @@ Logo - + Switch to your browser to connect your account Wechseln Sie zu Ihrem Browser um Ihr Konto zu verbinden - + An error occurred while connecting. Please try again. Es ist ein Fehler beim Herstellen der Verbindung aufgetreten. Bitte erneut versuchen. + + + Copy Link + Link kopieren + + + + Reopen Browser + Browser erneut öffnen + + + + FolderWizardSelectiveSync + + + Add Folder Sync + + + + + Step 3 of 3: Selektive Synchronisation + + FolderWizardSourcePage - Pick a local folder on your computer to sync - Wählen Sie einen lokalen Ordner zum Synchronisieren aus + Wählen Sie einen lokalen Ordner zum Synchronisieren aus - &Choose … - &Wählen … + &Wählen … + + + + Add Folder Sync + + + + + Step 1 of 3: Select local folder + + + + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + + + + + &Choose + FolderWizardTargetPage - Select a remote destination folder - Einen entfernten Zielordner auswählen + Einen entfernten Zielordner auswählen - + Create folder Ordner erstellen - + Refresh Aktualisieren - + + Add Folder Sync + + + + + Step 2 of 3: Directory in your %1 + + + + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + + + + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + + + + Folders Ordner + + KMessageWidget + + + &Close + + + + + Close message + + + OCC::AbstractNetworkJob - + Connection timed out Zeitüberschreitung bei der Verbindung - + Unknown error: network reply was deleted Unbekannter Fehler: Netzwerk-Antwort wurde gelöscht - + Server replied "%1 %2" to "%3 %4" Server hat "%1 %2" auf "%3 %4" geantwortet + + OCC::AbstractPropagateRemoteDeleteEncrypted + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Falscher HTTP-Code vom Server zurückgegeben. 204 erwartet, aber "%1 %2" erhalten. + + + "%1 Failed to unlock encrypted folder %2". + "%1 Der verschlüsselte Ordner %2 konnte nicht entsperrt werden". + + OCC::Account - + File %1 is already locked by %2. Datei %1 ist bereits von %2 gesperrt. - + Lock operation on %1 failed with error %2 Das Sperren von %1 ist mit Fehler %2 fehlgeschlagen - + Unlock operation on %1 failed with error %2 Das Entsperren von %1 ist mit Fehler %2 fehlgeschlagen @@ -446,50 +608,47 @@ OCC::AccountManager - An existing configuration from a legacy desktop client was detected. Should an account import be attempted? - Es wurde eine vorhandene Konfiguration eines früheren Desktop-Clients erkannt. + Es wurde eine vorhandene Konfiguration eines früheren Desktop-Clients erkannt. Soll ein Kontoimport versucht werden? - + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? %1 Konten wurden von einem älteren Desktop-Client erkannt. Sollen die Konten importiert werden? - + 1 account was detected from a legacy desktop client. Should the account be imported? 1 Konto wurde von einem älteren Desktop-Client erkannt. Soll das Konto importiert werden? - - - + + Legacy import Import früherer Konfiguration - + Import Importieren - + Skip Überspringen - Successfully imported account from legacy client: %1 - Konto von älterem Client importiert: %1 + Konto von älterem Client importiert: %1 - + Could not import accounts from legacy client configuration. Konten von älterer Client-Konfiguration konnten nicht importiert werden. @@ -497,258 +656,266 @@ Soll das Konto importiert werden? OCC::AccountSettings - + + Storage space: … Speicherplatz: … - + + Expand Memory + + + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore Nicht markierte Ordner werden von Ihrem lokalen Dateisystem <b>entfernt</b> und werden auch nicht mehr auf diesem Rechner synchronisiert - - - + + + Cancel Abbrechen - + Apply Anwenden - + Connected with <server> as <user> Verbunden mit <server> als <user> - + Synchronize all Alles synchronisieren - + Synchronize none Nichts synchronisieren - + Apply manual changes Manuelle Änderungen anwenden - + Standard file sync Standard Dateisynchronisierung - + Virtual file sync Virtuelle Dateisynchronisierung - + End-to-end Encryption with Virtual Files Ende-zu-Ende-Verschlüsselung mit virtuellen Dateien - + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". Sie scheinen die Funktion "Virtuelle Dateien" für diesen Ordner aktiviert zu haben. Im Moment ist es nicht möglich, virtuelle Dateien, die Ende-zu-Ende-verschlüsselt sind, implizit herunterzuladen. Um die beste Erfahrung mit virtuellen Dateien und Ende-zu-Ende-Verschlüsselung zu machen, stellen Sie sicher, dass der verschlüsselte Ordner mit "Immer lokal verfügbar machen" markiert ist. - + + Do not encrypt folder Ordner nicht verschlüsseln - + + Encrypt folder Ordner verschlüsseln - + End-to-end Encryption Ende-zu-Ende-Verschlüsselung - + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> Dadurch werden Ihr Ordner und alle darin enthaltenen Dateien verschlüsselt. Auf diese Dateien kann ohne Ihren mnemonischen Verschlüsselungsschlüssel nicht mehr zugegriffen werden. <b>Dies kann nicht rückgängig gemacht werden. Sind Sie sicher, dass Sie fortfahren möchten?</b> - + No account configured. Kein Konto konfiguriert. - + Disable encryption Verschlüsselung deaktivieren - + Display mnemonic Gedächtnisstütze anzeigen - + End-to-end encryption has been enabled for this account Für dieses Konto wurde die Ende-zu-Ende-Verschlüsselung aktiviert - + Warning Warnung - + Please wait for the folder to sync before trying to encrypt it. Bitte warten Sie, bis der Ordner synchronisiert ist, bevor Sie versuchen, ihn zu verschlüsseln. - + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully Der Ordner weist ein geringfügiges Synchronisierungsproblem auf. Die Verschlüsselung dieses Ordners ist möglich, sobald er erfolgreich synchronisiert wurde - + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully Der Ordner weist einen Synchronisierungsfehler auf. Die Verschlüsselung dieses Ordners ist möglich, sobald er erfolgreich synchronisiert wurde - + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. Would you like to set up end-to-end encryption? Auf diesem Gerät ist keine Ende-zu-Ende-Verschlüsselung konfiguriert. Sobald sie konfiguriert ist, kann dieser Ordner verschlüsselt werden. Soll die Ende-zu-Ende-Verschlüsselung eingerichtet werden? - + You cannot encrypt a folder with contents, please remove the files. Wait for the new sync, then encrypt it. Sie können einen Ordner nicht mit Inhalten verschlüsseln, bitte Dateien entfernen. Warten Sie auf die neue Synchronisierung und verschlüsseln Sie sie dann. - + Encryption failed Verschlüsselung fehlgeschlagen - + Could not encrypt folder because the folder does not exist anymore Der Ordner konnte nicht verschlüsselt werden, da er nicht mehr existiert - - + + Open folder Ordner öffnen - + Encrypt Verschlüsseln - - + + Edit Ignored Files Ignorierte Dateien bearbeiten - - + + Create new folder Neuen Ordner erstellen - - + + Availability Verfügbarkeit - + Choose what to sync Zu synchronisierende Elemente auswählen - + Force sync now Synchronisierung jetzt erzwingen - + Restart sync Synchronisierung neustarten - + Resume sync Synchronisierung fortsetzen - + Pause sync Synchronisierung pausieren - + Remove folder sync connection Ordner-Synchronisierung entfernen - + Disable virtual file support … Unterstützung für virtuelle Dateien deaktivieren - + Enable virtual file support %1 … Unterstützung für virtuelle Dateien aktivieren %1 … - + (experimental) (experimentell) - + Folder creation failed Anlegen des Ordners fehlgeschlagen - + <p>Could not create local folder <i>%1</i>.</p> <p>Konnte lokalen Ordner <i>%1</i> nicht anle‏gen.‎</p> - + Confirm Folder Sync Connection Removal Bestätigen Sie die Löschung der Ordner-Synchronisierung - + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> <p>Möchten Sie den Ordner <i>%1</i> nicht mehr synchronisieren?</p><p><b>Anmerkung:</b> Dies wird <b>keine</b> Dateien löschen.</p> - + Remove Folder Sync Connection Ordner-Synchronisierung entfernen - + Disable virtual file support? Unterstützung für virtuelle Dateien deaktivieren? - + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. The only advantage of disabling virtual file support is that the selective sync feature will become available again. @@ -761,162 +928,170 @@ Der einzige Vorteil der Deaktivierung der Unterstützung für virtuelle Dateien Diese Aktion bricht jede derzeit laufende Synchronisierung ab. - + Disable support Unterstützung deaktivieren - + End-to-end encryption mnemonic Gedächtnisstütze für Ende-zu-Ende Verschlüsselung - + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). Um Ihre kryptografische Identität zu schützen, verschlüsseln wir sie mit einer Gedächtnisstütze von 12 Wörterbuchwörtern. Bitte notieren Sie sich diese und bewahren Sie sie auf. Sie werden benötigt, um Ihrem Konto weitere Geräte hinzuzufügen (z. B. Ihr Mobiltelefon oder Laptop). - + Disable end-to-end encryption Ende-zu-Ende-Verschlüsselung deaktivieren - + Disable end-to-end encryption for %1? Ende-zu-Ende-Verschlüsselung für %1 deaktivieren? - + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. Durch das Entfernen der Ende-zu-Ende-Verschlüsselung werden lokal synchronisierte Dateien entfernt, die verschlüsselt sind.<br>Verschlüsselte Dateien verbleiben auf dem Server. - + Sync Running Synchronisierung läuft - + The syncing operation is running.<br/>Do you want to terminate it? Die Synchronisierung läuft gerade.<br/>Wollen Sie diese beenden? - + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. %1 (%3%) von %2 Serverkapazität verwendet. Einige Ordner, einschließlich über das Netzwerk verbundene oder geteilte Ordner, können unterschiedliche Beschränkungen aufweisen. - + %1 of %2 in use %1 von %2 Serverkapazität verwendet - + + Storage space %1% occupied + + + + Currently there is no storage usage information available. Derzeit sind keine Speichernutzungsinformationen verfügbar. - + %1 in use %1 wird verwendet - + %1 as %2 %1 als %2 - + The server version %1 is unsupported! Proceed at your own risk. Die Serverversion %1 wird nicht unterstützt! Fortfahren auf eigenes Risiko. - + Connected to %1. Verbunden mit %1. - + Server %1 is temporarily unavailable. Server %1 ist derzeit nicht verfügbar. - + Server %1 is currently in maintenance mode. Server %1 befindet sich im Wartungsmodus. - + Server %1 is currently being redirected, or your connection is behind a captive portal. Server %1 wird derzeit umgeleitet oder Ihre Verbindung befindet sich hinter einem Captive-Portal. - + Signed out from %1. Abgemeldet von %1. - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - Berechtigung vom Browser einholen. <a href='%1'> Klicken Sie hier </a>, um den Browser erneut zu öffnen. + Berechtigung vom Browser einholen. <a href='%1'> Klicken Sie hier </a>, um den Browser erneut zu öffnen. - + Connecting to %1 … Verbinde zu %1 … - No connection to %1 at %2. - Keine Verbindung zu %1 auf %2 + Keine Verbindung zu %1 auf %2 - + Unable to connect to %1. Verbindung zu %1 kann nicht hergestellt werden. - + Server configuration error: %1 at %2. Konfigurationsfehler des Servers: %1 auf %2. - + No %1 connection configured. Keine %1-Verbindung konfiguriert. - + + https://wl.hidrive.com/easy/0057 + + + + There are folders that were not synchronized because they are too big: Einige Ordner konnten nicht synchronisiert werden, da sie zu groß sind: - + There are folders that were not synchronized because they are external storages: Es gibt Ordner, die nicht synchronisiert werden konnten, da sie externe Speicher sind: - + There are folders that were not synchronized because they are too big or external storages: Es gibt Ordner, die nicht synchronisiert werden konnten, da sie zu groß oder externe Speicher sind: - + There are folders that have grown in size beyond %1MB: %2 Es gibt Ordner, deren Größe über %1 MB hinaus gewachsen ist: %2 - + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. Die Ende-zu-Ende-Verschlüsselung wurde auf diesem Konto mit einem anderen Gerät aktiviert.<br>Sie kann auf diesem Gerät durch Eingabe Ihrer Mnemonik aktiviert werden.<br>Dadurch wird die Synchronisierung vorhandener verschlüsselter Ordner aktiviert. - + This account supports end-to-end encryption Dieses Konto unterstützt Ende-zu-Ende-Verschlüsselung - + Set up encryption Verschlüsselung einrichten @@ -942,52 +1117,52 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. OCC::AccountState - + Signed out Abgemeldet - + Disconnected Getrennt - + Connected Verbunden - + Service unavailable Dienst nicht verfügbar - + Maintenance mode Wartungsmodus - + Redirect detected Umleitung erkannt - + Network error Netzwerkfehler - + Configuration error Konfigurationsfehler - + Asking Credentials Zugangsdaten werden abgefragt - + Unknown account state Unbekannter Konto-Zustand @@ -995,22 +1170,22 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. OCC::ActivityListModel - + For more activities please open the Activity app. Um weitere Aktivitäten anzusehen bitte die Activity-App öffnen. - + Fetching activities … Aktivitäten abrufen… - + Network error occurred: client will retry syncing. Netzwerkfehler aufgetreten: Client startet die Synchronisation neu - + Files from the ignore list as well as symbolic links are not synced. Dateien aus der Ignorierliste sowie symbolische Links werden nicht synchronisiert. @@ -1048,12 +1223,12 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. Ein verschlüsseltes pkcs12-Bundle wird dringend empfohlen, da eine Kopie in der Konfigurationsdatei gespeichert wird. - + Select a certificate Zertifikat auswählen - + Certificate files (*.p12 *.pfx) Zertifikatsdateien (*.p12 *.pfx) @@ -1061,71 +1236,71 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. OCC::Application - + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. Einige Einstellungen wurden in %1-Versionen dieses Clients konfiguriert und verwenden Funktionen, die in dieser Version nicht verfügbar sind.<br><br>Fortfahren bedeutet <b>%2 dieser Einstellungen</b><br><br>Die aktuelle Konfigurationsdatei wurde bereits auf <i>%3</i> gesichert. - + newer newer software version Neuer - + older older software version Älter - + ignoring Ignoriere - + deleting Lösche - + Quit Beenden - + Continue Fortsetzen - + %1 accounts number of accounts imported %1 Konten - + 1 account 1 Konto - + %1 folders number of folders imported %1 Ordner - + 1 folder 1 Ordner - + Legacy import Import früherer Konfiguration - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. @@ -1133,17 +1308,17 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. %3 - + Error accessing the configuration file Fehler beim Zugriff auf die Konfigurationsdatei - + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. Beim Zugriff auf die Konfigurationsdatei unter %1 ist ein Fehler aufgetreten. Stellen Sie sicher, dass Ihr Systemkonto auf die Datei zugreifen kann. - + Quit %1 Beende %1 @@ -1213,32 +1388,32 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. - + Local file changed during sync. Lokale Datei wurde während der Synchronisierung geändert. - + Network error: %1 Netzwerkfehler: %1 - + Error updating metadata: %1 Fehler beim Aktualisieren der Metadaten: %1 - + The file %1 is currently in use Die Datei %1 wird aktuell verwendet - + The local file was removed during sync. Die lokale Datei wurde während der Synchronisierung gelöscht. - + Restoration failed: %1 Wiederherstellung fehlgeschlagen: %1 @@ -1310,85 +1485,85 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. - + today Heute - + 0 byte 0 Byte - + Open existing file Existierende Datei öffnen - + Case clashing file Datei mit dem Problem der Groß- und Kleinschreibung - + file B Datei B - - + + Open clashing file Datei mit dem Problem der Groß- und Kleinschreibung öffnen - + Please enter a new name for the clashing file: Bitte einen neuen Namen für die Datei mit dem Problem der Groß- und Kleinschreibung eingeben: - + New filename Neuer Dateiname - + Rename file Datei umbenennen - + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. Die Datei "%1" konnte aufgrund eines Konflikts (Groß- / Kleinschreibung) mit einer vorhandenen Datei auf diesem System nicht synchronisiert werden. - + %1 does not support equal file names with only letter casing differences. %1 unterstützt keine gleichen Dateinamen mit Unterschieden nur in der Groß- und Kleinschreibung. - + Filename contains leading and trailing spaces. Dateiname enthält Leerzeichen am Anfang und am Ende. - + Filename contains leading spaces. Dateiname enthält Leerzeichen am Anfang. - + Filename contains trailing spaces. Dateiname enthält Leerzeichen am Ende. - + Use invalid name Ungültigen Namen verwenden - + Filename contains illegal characters: %1 Dateiname enthält unzulässige Zeichen: %1 @@ -1396,7 +1571,7 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. OCC::CleanupPollsJob - + Error writing metadata to the database Fehler beim Schreiben der Metadaten in die Datenbank @@ -1404,12 +1579,12 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. OCC::ClientSideEncryption - + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> Geben Sie Ihre Passphrase für Ende-zu-Ende-Verschlüsselung ein:<br><br>Benutzername: %2<br>Konto: %3<br> - + Enter E2E passphrase E2E-Passphrase eingeben @@ -1423,7 +1598,7 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. - + Conflicting versions of %1. Konflikt-Versionen von %1. @@ -1471,33 +1646,33 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. <a href="%1">Serverversion öffnen</a> - - + + Keep selected version Ausgewählte Version behalten - + Open local version Lokale Version öffnen - + Open server version Serverversion öffnen - + Keep both versions Beide Versionen behalten - + Keep local version Lokale Version behalten - + Keep server version Serverversion behalten @@ -1539,32 +1714,32 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. OCC::ConnectionValidator - + No Nextcloud account configured Kein Nextcloud-Konto konfiguriert - + Authentication error: Either username or password are wrong. Authentifizierungsfehler: Benutzername oder Passwort ist falsch. - + Timeout Zeitüberschreitung - + The provided credentials are not correct Die zur Verfügung gestellten Anmeldeinformationen sind nicht korrekt - + The configured server for this client is too old Der konfigurierte Server ist für diesen Client zu alt - + Please update to the latest server and restart the client. Aktualisieren Sie auf die neueste Server-Version und starten Sie den Client neu. @@ -1577,12 +1752,12 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. OCC::DiscoveryPhase - + Error while canceling deletion of a file Fehler beim Abbrechen des Löschens einer Datei - + Error while canceling deletion of %1 Fehler beim Abbrechen des Löschens von %1 @@ -1590,42 +1765,47 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. OCC::DiscoverySingleDirectoryJob - - + + Server error: PROPFIND reply is not XML formatted! Serverantwort: PROPFIND-Antwort ist nicht im XML-Format! - - + + Encrypted metadata setup error! Einrichtungsfehler für verschlüsselte Metadaten! + + + Encrypted metadata setup error: initial signature from server is empty. + + OCC::DiscoverySingleLocalDirectoryJob - + Error while opening directory %1 Fehler beim Öffnen des Ordners %1 - + Directory not accessible on client, permission denied Verzeichnis auf dem Client nicht zugreifbar, Berechtigung verweigert - + Directory not found: %1 Ordner nicht gefunden: %1 - + Filename encoding is not valid Dateinamenkodierung ist ungültig - + Error while reading directory %1 Fehler beim Lesen des Ordners %1 @@ -1643,7 +1823,7 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. - + Please try again. Bitte erneut versuchen. @@ -1660,12 +1840,12 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. - - - - - - + + + + + + Could not start editing locally. Lokale Bearbeitung konnte nicht gestartet werden. @@ -1696,60 +1876,60 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. - - + + An error occurred during data retrieval. Es ist ein Fehler beim Datenabruf aufgetreten. - - + + An error occurred trying to synchronise the file to edit locally. Es ist ein Fehler beim Versuch, die Datei zu synchronisieren, um sie lokal zu bearbeiten, aufgetreten. - + An error occurred during setup. Es ist ein Fehler während der Einrichtung aufgetreten. - + Server error: PROPFIND reply is not XML formatted! Serverantwort: PROPFIND-Antwort ist nicht im XML-Format! - + Could not find a remote file info for local editing. Make sure its path is valid. Remote-Dateiinformationen für die lokale Bearbeitung konnten nicht gefunden werden. Stellen Sie sicher, dass der Pfad gültig ist. - + Invalid local file path. Ungültiger lokaler Dateipfad. - + Could not open %1 %1 konnte nicht geöffnet werden - + File %1 already locked. Datei %1 bereits gesperrt. - - + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. Die Sperre dauert noch %1 Minuten. Sie können diese Datei auch manuell entsperren, sobald Sie mit der Bearbeitung fertig sind. - + File %1 now locked. Datei %1 ist jetzt gesperrt. - + File %1 could not be locked. Datei %1 konnte nicht gesperrt werden. @@ -1757,7 +1937,7 @@ Diese Aktion bricht jede derzeit laufende Synchronisierung ab. OCC::EncryptFolderJob - + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. Die Metadaten für die Verschlüsselung konnten nicht generiert werden. Entsperren des Ordners. @@ -1805,43 +1985,64 @@ Dies kann ein Problem mit Ihren OpenSSL-Bibliotheken sein. %1 second(s) ago seconds elapsed since file last modified - Vor %1 SekundeVor %1 Sekunden + + Vor %1 Sekunde + Vor %1 Sekunden + %1 minute(s) ago minutes elapsed since file last modified - Vor %1 MinuteVor %1 Minuten + + Vor %1 Minute + Vor %1 Minuten + %1 hour(s) ago hours elapsed since file last modified - Vor %1 StundeVor %1 Stunden + + Vor %1 Stunde + Vor %1 Stunden + %1 day(s) ago days elapsed since file last modified - Vor %1 TagVor %1 Tagen + + Vor %1 Tag + Vor %1 Tagen + %1 month(s) ago months elapsed since file last modified - Vor %1 MonatVor %1 Monaten + + Vor %1 Monat + Vor %1 Monaten + %1 year(s) ago years elapsed since file last modified - Vor %1 JahrVor %1 Jahren + + Vor %1 Jahr + Vor %1 Jahren + Locked by %1 - Expires in %2 minute(s) remaining time before lock expires - Gesperrt von %1 - Läuft in %2 Minute abGesperrt von %1 - Läuft in %2 Minuten ab + + Gesperrt von %1 - Läuft in %2 Minute ab + Gesperrt von %1 - Läuft in %2 Minuten ab + @@ -1884,37 +2085,52 @@ Dies kann ein Problem mit Ihren OpenSSL-Bibliotheken sein. OCC::Flow2AuthWidget - + Unable to open the Browser, please copy the link to your Browser. Der Browser kann nicht geöffnet werden. Bitte kopieren Sie den Link in Ihren Browser. - + + + Error + Fehler + + + Waiting for authorization Warte auf Autorisierung - + Polling for authorization Abruf der Autorisierung - + Starting authorization Starte Autorisierung - + Link copied to clipboard. Link in die Zwischenablage kopiert. - + + Open Browser + + + + + Switch to your browser to connect your account + Wechseln Sie zu Ihrem Browser um Ihr Konto zu verbinden + + Reopen Browser - Browser erneut öffnen + Browser erneut öffnen - + Copy Link Link kopieren @@ -1922,172 +2138,196 @@ Dies kann ein Problem mit Ihren OpenSSL-Bibliotheken sein. OCC::Folder - + Local folder %1 does not exist. Lokaler Ordner %1 existiert nicht. - + %1 should be a folder but is not. %1 sollte ein Ordner sein, ist es aber nicht. - + %1 is not readable. %1 ist nicht lesbar. - + %1 and %n other file(s) have been removed. - %1 und %n andere Datei wurde gelöscht.%1 und %n andere Dateien wurden gelöscht. + + %1 und %n andere Datei wurde gelöscht. + %1 und %n andere Dateien wurden gelöscht. + - + %1 has been removed. %1 names a file. %1 wurde gelöscht. - + %1 and %n other file(s) have been added. - %1 und %n andere Datei wurden hinzugefügt.%1 und %n andere Dateien wurden hinzugefügt. + + %1 und %n andere Datei wurden hinzugefügt. + %1 und %n andere Dateien wurden hinzugefügt. + - + %1 has been added. %1 names a file. %1 wurde hinzugefügt. - + %1 and %n other file(s) have been updated. - %1 und %n andere Datei wurde aktualisiert.%1 und %n andere Dateien wurden aktualisiert. + + %1 und %n andere Datei wurde aktualisiert. + %1 und %n andere Dateien wurden aktualisiert. + - + %1 has been updated. %1 names a file. %1 wurde aktualisiert. - + %1 has been renamed to %2 and %n other file(s) have been renamed. - %1 wurde in %2 umbenannt und %n andere Datei wurde umbenannt.%1 wurde in %2 umbenannt und %n andere Dateien wurden umbenannt. + + %1 wurde in %2 umbenannt und %n andere Datei wurde umbenannt. + %1 wurde in %2 umbenannt und %n andere Dateien wurden umbenannt. + - + %1 has been renamed to %2. %1 and %2 name files. %1 wurde in %2 umbenannt. - + %1 has been moved to %2 and %n other file(s) have been moved. - %1 wurde in %2 verschoben und %n andere Datei wurde verschoben.%1 wurde in %2 verschoben und %n andere Dateien wurden verschoben. + + %1 wurde in %2 verschoben und %n andere Datei wurde verschoben. + %1 wurde in %2 verschoben und %n andere Dateien wurden verschoben. + - + %1 has been moved to %2. %1 wurde in %2 verschoben. - + %1 has and %n other file(s) have sync conflicts. - %1 und %n andere Datei haben Konflikte beim Abgleichen.%1 und %n andere Dateien haben Konflikte beim Abgleichen. + + %1 und %n andere Datei haben Konflikte beim Abgleichen. + %1 und %n andere Dateien haben Konflikte beim Abgleichen. + - + %1 has a sync conflict. Please check the conflict file! Es gab einen Konflikt bei der Synchronisierung von %1. Bitte prüfen Sie die Konfliktdatei! - + %1 and %n other file(s) could not be synced due to errors. See the log for details. - %1 und %n weitere Datei konnten aufgrund von Fehlern nicht synchronisiert werden. Schauen Sie in das Protokoll für Details.%1 und %n weitere Dateien konnten aufgrund von Fehlern nicht synchronisiert werden. Details finden Sie im Protokoll. + + %1 und %n weitere Datei konnten aufgrund von Fehlern nicht synchronisiert werden. Schauen Sie in das Protokoll für Details. + %1 und %n weitere Dateien konnten aufgrund von Fehlern nicht synchronisiert werden. Details finden Sie im Protokoll. + - + %1 could not be synced due to an error. See the log for details. %1 konnte aufgrund eines Fehlers nicht synchronisiert werden. Details finden Sie im Protokoll. - + %1 and %n other file(s) are currently locked. - %1 und %n andere Datei sind aktuell gesperrt.%1 und %n andere Dateien sind aktuell gesperrt. + + %1 und %n andere Datei sind aktuell gesperrt. + %1 und %n andere Dateien sind aktuell gesperrt. + - + %1 is currently locked. %1 ist aktuell gesperrt. - + Sync Activity Synchronisierungsaktivität - + Could not read system exclude file Systemeigene Ausschlussdatei kann nicht gelesen werden - + A new folder larger than %1 MB has been added: %2. Ein neuer Ordner größer als %1 MB wurde hinzugefügt: %2. - + A folder from an external storage has been added. Ein Ordner von einem externen Speicher wurde hinzugefügt. - + Please go in the settings to select it if you wish to download it. Bitte wechseln Sie zu den Einstellungen, falls Sie den Ordner herunterladen möchten. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 Ein Ordner hat die festgelegte Ordnergrößenbeschränkung von %1 MB überschritten: %2. %3 - + Keep syncing Weiterhin synchronisieren - + Stop syncing Synchronisation stoppen - + The folder %1 has surpassed the set folder size limit of %2MB. Der Ordner %1 hat die festgelegte Größenbeschränkung von %2 MB überschritten. - + Would you like to stop syncing this folder? Möchten Sie die Synchronisierung dieses Ordners stoppen? - + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. Der Ordner %1 wurde erstellt, wurde jedoch zuvor von der Synchronisierung ausgeschlossen. Die darin enthaltenen Daten werden nicht synchronisiert. - + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. Die Datei % 1 wurde erstellt, jedoch bereits zuvor von der Synchronisierung ausgeschlossen. Sie wird nicht synchronisiert werden. - + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). @@ -2100,70 +2340,104 @@ Dies bedeutet, dass der Synchronisierungs-Client lokale Änderungen möglicherwe %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" Der Download der virtuellen Datei ist mit dem Code "%1", dem Status "%2" und der Fehlermeldung "%3" fehlgeschlagen. - + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + + + + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by downloading them from the server. + + + + + Remove all files? + + + + + Proceed with Deletion + + + + + Restore Files to Server + + + + + Restore Files from Server + + + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Alle Dateien im Sync-Ordner "%1" wurden auf dem Server gelöscht. + Alle Dateien im Sync-Ordner "%1" wurden auf dem Server gelöscht. Diese Löschungen werden mit Ihrem lokalen Sync-Ordner synchronisiert, wodurch diese Dateien nicht verfügbar sind, es sei denn, Sie haben das Recht, sie wiederherzustellen. Wenn Sie sich entscheiden, die Dateien wiederherzustellen, werden sie erneut mit dem Server synchronisiert, wenn Sie das Recht dazu haben. Wenn Sie sich entscheiden, die Dateien zu löschen, sind sie für Sie nicht mehr verfügbar, es sei denn, Sie sind der Eigentümer. - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - Alle Dateien im lokalen Synchronisierungs-Ordner "%1" wurden gelöscht. Diese Löschung wird mit Ihrem Server synchronisiert, wodurch die Dateien nicht mehr verfügbar sind, es sei denn, diese werden wiederhergestellt. + Alle Dateien im lokalen Synchronisierungs-Ordner "%1" wurden gelöscht. Diese Löschung wird mit Ihrem Server synchronisiert, wodurch die Dateien nicht mehr verfügbar sind, es sei denn, diese werden wiederhergestellt. Sind Sie sich sicher, dass Sie diese Aktion mit Ihrem Server synchronisieren möchten? Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheiden, werden diese wieder vom Server synchronisiert. - Remove All Files? - Alle Dateien löschen? + Alle Dateien löschen? - Remove all files - Alle Dateien entfernen + Alle Dateien entfernen - Keep files - Dateien behalten + Dateien behalten OCC::FolderCreationDialog - + Create new folder Neuen Ordner erstellen - + Enter folder name Ordnernamen eingeben - + Folder already exists Ordner existiert bereits - + + %1 Create new folder + + + + Error Fehler - + Could not create a folder! Check your write permissions. Ordner konnte nicht erstellt werden! Prüfen Sie die Schreibberechtigungen. @@ -2171,107 +2445,108 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide OCC::FolderMan - + Could not reset folder state Konnte Ordner-Zustand nicht zurücksetzen - + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. Ein altes Synchronisierungsprotokoll "%1" wurde gefunden, konnte jedoch nicht entfernt werden. Bitte stellen Sie sicher, dass keine Anwendung es verwendet. - + (backup) (Sicherung) - + (backup %1) (Sicherung %1) - + Undefined state. Undefinierter Zustand. - + Waiting to start syncing. Wartet auf Beginn der Synchronisierung. - + Preparing for sync. Synchronisierung wird vorbereitet. - + Sync is running. Synchronisierung läuft. - + Sync finished with unresolved conflicts. Synchronisierung mit ungelösten Konflikten beendet. - + Last sync was successful. Die letzte Synchronisierung war erfolgreich. - + Setup error. Einrichtungsfehler. - + Sync request was cancelled. Synchronisierungsanfrage wurde abgebrochen. - + Sync is paused. Synchronisierung ist pausiert. - + %1 (Sync is paused) %1 (Synchronisierung ist pausiert) - + No valid folder selected! Kein gültiger Ordner gewählt! - + The selected path does not exist! Der gewählte Pfad existiert nicht! - + The selected path is not a folder! Der gewählte Pfad ist kein Ordner! - + + You have no permission to write to the selected folder! Sie haben keine Schreibberechtigung für den ausgewählten Ordner! - + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! Der lokale Ordner %1 liegt innerhalb eines synchronisierten Ordners. Bitte wählen Sie einen anderen aus! - + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! Der lokale Ordner %1 liegt in einem Ordner, der bereits synchronisiert wird. Bitte wählen Sie einen anderen aus! - + There is already a sync from the server to this local folder. Please pick another local folder! Es existiert bereits eine Synchronisierung vom Server zu diesem lokalen Ordner. Bitte wählen Sie einen anderen lokalen Ordner! @@ -2279,12 +2554,21 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide OCC::FolderStatusDelegate - Add Folder Sync Connection - Ordner-Synchronisierung hinzufügen + Ordner-Synchronisierung hinzufügen + + + + Add live backup + - + + Synchronize any other local folder with your %1 + + + + File Datei @@ -2292,156 +2576,159 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide OCC::FolderStatusModel - + You need to be connected to add a folder Sie müssen verbunden sein, um einen Ordner hinzuzufügen - + Click this button to add a folder to synchronize. Wählen Sie diese Schaltfläche, um einen zu synchronisierenden Ordner hinzuzufügen. - + Could not decrypt! Konnte nicht entschlüsseln! - - + + %1 (%2) %1 (%2) - + Error while loading the list of folders from the server. Fehler beim Empfang der Ordnerliste vom Server. - + Fetching folder list from server … Rufe Ordnerliste vom Server ab … - + There are unresolved conflicts. Click for details. Es existieren ungelöste Konflikte. Für Details klicken. - + Virtual file support is enabled. Unterstützung für virtuelle Dateien ist aktiviert. - + Signed out Abgemeldet - + Synchronizing VirtualFiles with local folder Synchronisiere VirtualFiles mit lokalem Ordner - + Synchronizing with local folder Synchronisiere mit lokalem Ordner - + Checking for changes in remote "%1" Nach Änderungen in entfernten "%1" suchen - + Checking for changes in local "%1" Nach Änderungen in lokalem "%1" suchen - + Reconciling changes Änderungen zusammenführen - + Syncing %1 - Example text: "Syncing 'foo.txt', 'bar.txt'" + Example text: "Syncing 'foo.txt', 'bar.txt'" Synchronisiere %1 - - + + , , - + download %1/s Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) Download %1/s - + ↓ %1/s ↓ %1/s - + upload %1/s Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) Upload %1/s - + ↑ %1/s ↑ %1/s - + %1 %2 (%3 of %4) Example text: "uploading foobar.png (2MB of 2MB)" %1 %2 (%3 von %4) - + %1 %2 Example text: "uploading foobar.png" %1 %2 - + A few seconds left, %1 of %2, file %3 of %4 Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" Noch ein paar Sekunden, %1 von %2, Datei %3 von %4 - + %5 left, %1 of %2, file %3 of %4 %5 übrig, %1 von %2, Datei %3 von %4 - + %1 of %2, file %3 of %4 Example text: "12 MB of 345 MB, file 6 of 7" %1 of %2, Datei %3 von %4 - + file %1 of %2 Datei %1 von %2 - + Waiting … Warte … - + Waiting for %n other folder(s) … - Warte auf %n anderen Ordner …Warte auf %n andere Ordner … + + Warte auf %n anderen Ordner … + Warte auf %n andere Ordner … + - + Preparing to sync … Synchronisierung wird vorbereitet … @@ -2449,7 +2736,7 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide OCC::FolderWatcher - + The watcher did not receive a test notification. Der Beobachter hat keine Testbenachrichtigung erhalten. @@ -2465,12 +2752,12 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide OCC::FolderWizard - + Add Folder Sync Connection Ordner-Synchronisierung hinzufügen - + Add Sync Connection Synchronisierung hinzufügen @@ -2478,95 +2765,155 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide OCC::FolderWizardLocalPath - + Click to select a local folder to sync. Hier klicken um einen lokalen Ordner zum Synchronisieren auszuwählen. - + Enter the path to the local folder. Pfad zum lokalen Ordner eingeben - + Select the source folder Quellordner auswählen + + + Add Folder Sync + + + + + Step 1 of 3: Select local folder + + + + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + + + + + Choose + + OCC::FolderWizardRemotePath - + Create Remote Folder Entfernten Ordner erstellen - + Enter the name of the new folder to be created below "%1": Geben Sie den Namen des neuen, unter "%1" zu erstellenden Ordners ein: - + Folder was successfully created on %1. Ordner auf %1 erstellt. - + Authentication failed accessing %1 Beim Zugriff auf %1 ist die Authentifizierung fehlgeschlagen - + Failed to create the folder on %1. Please check manually. Die Erstellung des Ordners auf %1 ist fehlgeschlagen. Bitte prüfen Sie dies manuell. - + Failed to list a folder. Error: %1 Konnte Ordner nicht listen. Fehler: %1 - + Choose this to sync the entire account Wählen Sie dies, um das gesamte Konto zu synchronisieren - + This folder is already being synced. Dieser Ordner wird bereits synchronisiert. - + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. Sie synchronisieren bereits <i>%1</i>, der ein übergeordneter Ordner von <i>%2</i> ist. - + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. Sie synchronisieren bereits <i>%1</i>, der ein Unterordner von <i>%2</i> ist. + + + Add Folder Sync + + + + + Step 2 of 3: Directory in your %1 + + + + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + + + + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + + + + + Refresh + Aktualisieren + + + + Create folder + Ordner erstellen + OCC::FolderWizardSelectiveSync - - + + Use virtual files instead of downloading content immediately %1 Virtuelle Dateien verwenden, anstatt den Inhalt sofort herunterzuladen %1 - - + + (experimental) (experimentell) - + + Add Folder Sync + + + + + Step 3 of 3: Selektive Synchronisation + + + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. Virtuelle Dateien werden für die Wurzel von Windows-Partitionen als lokaler Ordner nicht unterstützt. Bitte wählen Sie einen gültigen Unterordner unter dem Laufwerksbuchstaben. - + Virtual files are not available for the selected folder Virtuelle Dateien sind für den ausgewählten Ordner nicht verfügbar @@ -2574,40 +2921,43 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide OCC::FormatWarningsWizardPage - <b>Warning:</b> %1 - <b>Warnung:</b> %1 + <b>Warnung:</b> %1 - <b>Warning:</b> - <b>Warnung:</b> + <b>Warnung:</b> + + + + %1 + %1 OCC::GETFileJob - + No E-Tag received from server, check Proxy/Gateway Kein E-Tag vom Server empfangen, bitte Proxy/Gateway überprüfen - + We received a different E-Tag for resuming. Retrying next time. Es wurde ein unterschiedliches E-Tag zum Fortfahren empfangen. Bitte beim nächsten mal nochmal versuchen. - + We received an unexpected download Content-Length. Wir haben eine unerwartete Download-Content-Länge erhalten. - + Server returned wrong content-range Server hat falschen Bereich für den Inhalt zurückgegeben - + Connection Timeout Zeitüberschreitung der Verbindung @@ -2615,227 +2965,270 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide OCC::GeneralSettings - + Advanced Erweitert - - About - Über + Über - Ask for confirmation before synchronizing new folders larger than - Um eine Bestätigung bitten, bevor Sie neue Ordner synchronisieren, die größer sind als + Um eine Bestätigung bitten, bevor Sie neue Ordner synchronisieren, die größer sind als - Legal notice - Impressum + Impressum - MB Trailing part of "Ask confirmation before syncing folder larger than" - MB + MB - Use &Monochrome Icons - &Monochrome Symbole verwenden + &Monochrome Symbole verwenden - &Launch on System Startup - Beim &Systemstart starten + Beim &Systemstart starten - Show Server &Notifications - Server-&Benachrichtigungen anzeigen + Server-&Benachrichtigungen anzeigen - Notify when synchronised folders grow larger than specified limit - Benachrichtigen, wenn synchronisierte Ordner größer werden als die angegebene Grenze + Benachrichtigen, wenn synchronisierte Ordner größer werden als die angegebene Grenze - Show Call Notifications - Anrufbenachrichtigungen anzeigen + Anrufbenachrichtigungen anzeigen - + Updates Aktualisierungen - &Automatically check for Updates - &Automatisch auf Aktualisierungen prüfen + &Automatisch auf Aktualisierungen prüfen - Automatically disable synchronisation of folders that overcome limit - Automatisch die Synchronisierung von Ordnern beenden, die das Limit überschreiten + Automatisch die Synchronisierung von Ordnern beenden, die das Limit überschreiten - &Channel - &Kanal + &Kanal - Ask for confirmation before synchronizing external storages - Bestätigung erfragen, bevor externe Speicher synchronisiert werden + Bestätigung erfragen, bevor externe Speicher synchronisiert werden - + Move removed files to trash Gelöschte Dateien in den Papierkorb verschieben - Show sync folders in &Explorer's navigation pane - Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen + Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen - + S&how crash reporter &Crash-Reporter anzeigen - + Edit &Ignored Files I&gnorierte Dateien bearbeiten - - + + Create Debug Archive Debug-Archiv erstellen - &Check for Update now - &Jetzt auf Aktualisierungen prüfen + &Jetzt auf Aktualisierungen prüfen - Info - Info + Info - Ask for confirmation before synchronizing folders larger than - Bestätigung erfragen, bevor Ordner synchronisiert werden. Grenze: + Bestätigung erfragen, bevor Ordner synchronisiert werden. Grenze: - + Desktop client x.x.x Desktop-Client x.x.x - + Update channel Update-Kanal - - + + Ask for confirmation before + synchronizing new folders larger than + + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + + + + + Notify when synchronised folders grow + larger than specified limit + + + + + Automatically disable synchronisation of + folders that overcome limit + + + + + Ask for confirmation before synchronizing + external storages + + + + + Show sync folders in &Explorer's navigation + pane + + + + + Data Protection + + + + + &Analysis data collection for needs-based design + + + + + Privacy Policy + + + + + Open Source Software + + + + + stable Stabil - - + + beta Beta - + &Restart && Update &Neustarten && aktualisieren - + + More Information + + + Show sync folders in &Explorer's Navigation Pane - Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen + Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen - + &Automatically check for updates &Automatisch auf Aktualisierungen prüfen - + Check Now Jetzt prüfen - + Usage Documentation Nutzungsdokumentation - + Legal Notice Impressum - + General Settings Allgemeine Einstellungen - + For System Tray Für das Systembenachrichtungsfeld - + Use &monochrome icons &Monochrome Symbole verwenden - + &Launch on system startup Beim &Systemstart starten - + Show server &notifications Server-&Benachrichtigungen anzeigen - + Show call notifications Anrufbenachrichtigungen anzeigen - + Server notifications that require attention. Server-Benachrichtigungen, die Aufmerksamkeit erfordern. - + Show call notification dialogs. Dialog zu Anrufbenachrichtigungen anzeigen - + You cannot disable autostart because system-wide autostart is enabled. Sie können den Autostart nicht deaktivieren, da der systemweite Autostart aktiviert ist. - + Change update channel? Update-Kanal ändern? - + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. @@ -2844,27 +3237,27 @@ Note that this selects only what pool upgrades are taken from, and that there ar Beachten Sie bitte, dass hierdurch nur ausgewählt wird, aus welchem Pool Upgrades heruntergeladen werden und dass Downgrades nicht möglich sind. Die Rückkehr vom Beta- zum stabilen Kanal kann daher zumeist nicht sofort erfolgen, sondern es muss auf eine neue stabile Version gewartet werden, die neuer als die aktuell installierte Beta ist. - + Change update channel Update-Kanal ändern - + Cancel Abbrechen - + Zip Archives Zip-Archive - + Debug Archive Created Debug-Archiv erstellt - + Debug archive is created at %1 Debug-Archiv erstellt in %1 @@ -2872,22 +3265,22 @@ Beachten Sie bitte, dass hierdurch nur ausgewählt wird, aus welchem Pool Upgrad OCC::GetOrCreatePublicLinkShare - + Password for share required Passwort für die Freigabe erforderlich - + Please enter a password for your link share: Bitte Passwort für die Link-Freigabe eingeben: - + Sharing error Fehler beim Teilen - + Could not retrieve or create the public link share. Error: %1 @@ -2899,22 +3292,22 @@ Beachten Sie bitte, dass hierdurch nur ausgewählt wird, aus welchem Pool Upgrad OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> Bitte %1 Passwort:<br><br>Benutzername: %2<br>Konto: %3<br>eingeben - + Reading from keychain failed with error: "%1" Lesen vom Schlüsselbund fehlgeschlagen mit Fehler: "%1" - + Enter Password Passwort eingeben - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Hier klicken</a>, um von der Web-Oberfläche ein App-Passwort zu erhalten. @@ -2950,58 +3343,72 @@ Beachten Sie bitte, dass hierdurch nur ausgewählt wird, aus welchem Pool Upgrad OCC::IgnoreListTableWidget - + Pattern Muster - + Allow Deletion Löschen erlauben - + Add Hinzufügen - + Remove Entfernen - + Remove all Alle entfernen - Files or folders matching a pattern will not be synchronized. Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Dateien oder Ordner, die diesem Muster entsprechen, werden nicht synchronisiert. + Dateien oder Ordner, die diesem Muster entsprechen, werden nicht synchronisiert. Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn diese das Löschen eines Ordners verhindern würden. Dies ist für Metadaten nützlich. - + + Files or folders that match this pattern will not be synchronized. + +Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. + + + + Could not open file Datei konnte nicht geöffnet werden - + Cannot write changes to "%1". Konnte Änderungen nicht in "%1" schreiben. - + + Ignore Pattern + + + + + Add New Ignore Pattern + + + Add Ignore Pattern - Ignoriermuster hinzufügen + Ignoriermuster hinzufügen - Add a new ignore pattern: - Neues Ignoriermuster hinzufügen + Neues Ignoriermuster hinzufügen @@ -3032,72 +3439,72 @@ Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn diese das Lösch Neuer Dateiname - + Rename file Datei umbenennen - + The file "%1" could not be synced because the name contains characters which are not allowed on this system. Die Datei "%1" konnte nicht synchronisiert werden, da der Name Zeichen enthält, die auf diesem System nicht zulässig sind. - + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces Die folgenden Zeichen sind auf dem System nicht erlaubt: * " | & ? , ; : \ / ~ < > Leerzeichen am Anfang/Ende - + Checking rename permissions … Prüfe Umbenennungs-Rechte … - + You don't have the permission to rename this file. Please ask the author of the file to rename it. Sie haben nicht die Berechtigung, diese Datei umzubenennen. Bitte wenden Sie sich an den Autor der Datei, um sie umzubenennen. - + Failed to fetch permissions with error %1 Konnte Rechte nicht abrufen. Fehler %1 - + Filename contains leading and trailing spaces. Dateiname enthält Leerzeichen am Anfang und am Ende. - + Filename contains leading spaces. Dateiname enthält Leerzeichen am Anfang. - + Filename contains trailing spaces. Dateiname enthält Leerzeichen am Ende. - + Use invalid name Ungültigen Namen verwenden - + Filename contains illegal characters: %1 Dateiname enthält unzulässige Zeichen: %1 - + Could not rename file. Please make sure you are connected to the server. Datei konnte nicht umbenannt werden. Bitte stellen Sie sicher, dass Sie mit dem Server verbunden sind. - + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. Die Datei kann nicht umbenannt werden, da eine Datei mit demselben Namen bereits auf dem Server existiert. Bitte wählen Sie einen anderen Namen. - + Could not rename local file. %1 Lokale Datei konnte nicht umbenannt werden. %1 @@ -3116,12 +3523,12 @@ Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn diese das Lösch Schliessen - + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> <p>Lizensiert unter der GNU General Public License (GPL) Version 2.0 oder jeder neueren Version.</p> @@ -3163,12 +3570,12 @@ Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollie OCC::Logger - + Error Fehler - + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> <nobr>Datei "%1"<br/>kann nicht zum Schreiben geöffnet werden.<br/><br/>Die Protokolldatei kann <b>nicht</b> gespeichert werden!</nobr> @@ -3224,14 +3631,13 @@ Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollie OCC::NetworkSettings - + Proxy Settings Proxy-Einstellungen - No Proxy - Kein Proxy + Kein Proxy @@ -3239,14 +3645,13 @@ Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollie Kein Proxy - + Use system proxy System-Proxy verwenden - Specify proxy manually as - Proxy manuell definieren als + Proxy manuell definieren als @@ -3254,86 +3659,117 @@ Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollie Proxy manuell festlegen - + Host Host - + Proxy server requires authentication Proxy-Server erfordert eine Authentifizierung - + Note: proxy settings have no effects for accounts on localhost Hinweis: Proxy-Einstellungen haben keine Auswirkungen für Konten auf localhost - + Download Bandwidth Download-Bandbreite - - + + No limit Keine Begrenzung - - + + Limit to 3/4 of estimated bandwidth Auf 3/4 der geschätzten Bandbreite begrenzen - - + + Limit automatically Automatisch begrenzen - - + + Limit to Begrenzen auf - - + + KBytes/s KBytes/s - + Upload Bandwidth Upload-Bandbreite - + Hostname of proxy server Hostname des Proxy-Servers - + Username for proxy server Benutzername für den Proxy-Server - + Password for proxy server Passwort für den Proxy-Server - + HTTP(S) proxy HTTP(S)-Proxy - + SOCKS5 proxy SOCKS5-Proxy + + OCC::OAuth + + Error returned from the server: <em>%1</em> + Fehler vom Server zurückgegeben: <em>%1</em> + + + There was an error accessing the "token" endpoint: <br><em>%1</em> + Fehler beim Zugriff auf den "Token"-Endpunkt: <br><em>%1</em> + + + Empty JSON from OAuth2 redirect + Leeres JSON aus OAuth2-Redirect + + + Could not parse the JSON returned from the server: <br><em>%1</em> + Die JSON-Antwort des Servers konnte nicht geparst werden: <br><em>%1</em> + + + The reply from the server did not contain all expected fields + Die Antwort des Servers hat nicht alle erwarteten Felder beinhaltet + + + <h1>Login Error</h1><p>%1</p> + <h1>Anmeldefehler </h1><p>%1</p> + + + <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> + <h1>Falsches Konto</h1><p>Sie haben sich mit dem Konto <em>%1</em> angemeldet, müssen aber das Konto <em>%2</em> verwenden.<br>Bitte melden von %3 in einem anderen Tab abmelden und <a href='%4'>klicken Sie hier</a> um sich mit %2 anzumelden</p> + + OCC::OCUpdater @@ -3405,66 +3841,66 @@ Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollie OCC::OwncloudAdvancedSetupPage - + Connect Verbinden - - + + Use &virtual files instead of downloading content immediately %1 &Virtuelle Dateien verwenden, anstatt den Inhalt sofort herunterzuladen %1 - - + + (experimental) (experimentell) - + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. Virtuelle Dateien werden für die Wurzel von Windows-Partitionen als lokaler Ordner nicht unterstützt. Bitte wählen Sie einen gültigen Unterordner unter dem Laufwerksbuchstaben. - + %1 folder "%2" is synced to local folder "%3" %1 Ordner "%2" wird mit dem lokalen Ordner "%3" synchronisiert - + Sync the folder "%1" Ordner "%1" synchronisieren - + Warning: The local folder is not empty. Pick a resolution! Achtung: Der lokale Ordner ist nicht leer. Bitte wählen Sie eine entsprechende Lösung! - + %1 free space %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB %1 freier Platz - + Virtual files are not available for the selected folder Virtuelle Dateien sind für den ausgewählten Ordner nicht verfügbar - + Local Sync Folder Lokaler Ordner für die Synchronisierung - - + + (%1) (%1) - + There isn't enough free space in the local folder! Nicht genug freier Platz im lokalen Ordner vorhanden! @@ -3497,7 +3933,7 @@ Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollie Clientseitiges TLS-Zertifikat konfigurieren. - + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> <html><head/><body><p>Sichere Verbindung zur Serveradresse <em>%1</em> fehlgeschlagen. Wie wollen Sie fortfahren?</p></body></html> @@ -3521,17 +3957,27 @@ Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollie - OCC::OwncloudPropagator + OCC::OwncloudOAuthCredsPage - - Error with the metadata. Getting unexpected metadata format. - Fehler bei den Metadaten. Unerwartetes Metadatenformat erhalten. + Connect to %1 + Verbinden mit %1 - - - Impossible to get modification time for file in conflict %1 - Es ist nicht möglich, die Änderungszeit für die in Konflikt stehende Datei abzurufen %1 + Login in your browser + Melden Sie sich in Ihrem Browser an + + + + OCC::OwncloudPropagator + + Error with the metadata. Getting unexpected metadata format. + Fehler bei den Metadaten. Unerwartetes Metadatenformat erhalten. + + + + + Impossible to get modification time for file in conflict %1 + Es ist nicht möglich, die Änderungszeit für die in Konflikt stehende Datei abzurufen %1 @@ -3548,12 +3994,12 @@ Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollie &Weiter > - + Server address does not seem to be valid Serveradresse scheint nicht gültig zu sein - + Could not load certificate. Maybe wrong password? Das Zertifikat konnte nicht geladen werden. Vielleicht ein falsches Passwort? @@ -3561,144 +4007,144 @@ Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollie OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Erfolgreich mit %1 verbunden: %2 Version %3 (%4)</font><br/><br/> - + Invalid URL Ungültige URL - + Failed to connect to %1 at %2:<br/>%3 Die Verbindung zu %1 auf %2 konnte nicht hergestellt werden: <br/>%3 - + Timeout while trying to connect to %1 at %2. Zeitüberschreitung beim Verbindungsversuch mit %1 unter %2. - + Trying to connect to %1 at %2 … Verbindungsversuch mit %1 unter %2 … - + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. Die Authentifizierungs-Anfrage an den Server wurde weitergeleitet an "%1". Diese Adresse ist ungültig, der Server ist falsch konfiguriert. - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Zugang vom Server nicht erlaubt. <a href="%1">Klicken Sie hier</a> zum Zugriff auf den Dienst mithilfe Ihres Browsers, so dass Sie sicherstellen können, dass Ihr Zugang ordnungsgemäß funktioniert. - + There was an invalid response to an authenticated WebDAV request Ungültige Antwort auf eine WebDAV-Authentifizeriungs-Anfrage - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokaler Sync-Ordner %1 existiert bereits, aktiviere Synchronistation.<br/><br/> - + Creating local sync folder %1 … Lokaler Ordner %1 für die Synchronisierung wird erstellt … - + OK OK - + failed. fehlgeschlagen. - + Could not create local folder %1 Der lokale Ordner %1 konnte nicht erstellt werden - + No remote folder specified! Kein entfernter Ordner angegeben! - + Error: %1 Fehler: %1 - + creating folder on Nextcloud: %1 Erstelle Ordner auf Nextcloud: %1 - + Remote folder %1 created successfully. Entfernter Ordner %1 erfolgreich erstellt. - + The remote folder %1 already exists. Connecting it for syncing. Der Ordner %1 ist auf dem Server bereits vorhanden. Verbinde zur Synchronisierung. - - + + The folder creation resulted in HTTP error code %1 Das Erstellen des Ordners erzeugte den HTTP-Fehler-Code %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Die Erstellung des entfernten Ordners ist fehlgeschlagen, weil die angegebenen Zugangsdaten falsch sind. <br/>Bitte gehen Sie zurück und überprüfen Sie die Zugangsdaten.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Die Erstellung des entfernten Ordners ist fehlgeschlagen, vermutlich sind die angegebenen Zugangsdaten falsch.</font><br/>Bitte gehen Sie zurück und überprüfen Sie Ihre Zugangsdaten.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Entfernter Ordner %1 konnte mit folgendem Fehler nicht erstellt werden: <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Eine Synchronisierungsverbindung für Ordner %1 zum entfernten Ordner %2 wurde eingerichtet. - + Successfully connected to %1! Erfolgreich verbunden mit %1! - + Connection to %1 could not be established. Please check again. Die Verbindung zu %1 konnte nicht hergestellt werden. Bitte prüfen Sie die Einstellungen erneut. - + Folder rename failed Ordner umbenennen fehlgeschlagen. - + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Der Ordner kann nicht entfernt und gesichert werden, da der Ordner oder einer seiner Dateien in einem anderen Programm geöffnet ist. Bitte schließen Sie den Ordner oder die Datei und versuchen Sie es erneut oder beenden Sie die Installation. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Lokaler Sync-Ordner %1 erfolgreich erstellt!</b></font> @@ -3706,27 +4152,27 @@ Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollie OCC::OwncloudWizard - + Add %1 account %1 Konto hinzufügen - + Skip folders configuration Ordner-Konfiguration überspringen - + Cancel Abbrechen - + Enable experimental feature? Experimentelle Funktion aktivieren? - + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. @@ -3743,12 +4189,12 @@ Wenn Sie in diesen Modus wechseln, wird eine aktuell laufende Synchronisierung a Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu verwenden, melden Sie bitte alle auftretenden Probleme. - + Enable experimental placeholder mode Experimentellen Platzhaltermodus aktivieren - + Stay safe Bleiben Sie sicher @@ -3769,7 +4215,7 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PollJob - + Invalid JSON reply from the poll URL Ungültige JSON-Antwort von der Poll-URL @@ -3777,172 +4223,174 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::ProcessDirectoryJob - + Symbolic links are not supported in syncing. Symbolische Verknüpfungen werden bei der Synchronisierung nicht unterstützt. - + File is listed on the ignore list. Die Datei ist in der Ignorierliste aufgeführt. - + File names ending with a period are not supported on this file system. Dateinamen, die mit einem Punkt enden, werden von diesem Dateisystem nicht unterstützt. - + File names containing the character "%1" are not supported on this file system. Dateinamen, welche das Zeichen "%1" enthalten, werden von diesem Dateisystem nicht unterstützt. - + File name contains at least one invalid character Der Dateiname enthält mindestens ein ungültiges Zeichen - + The file name is a reserved name on this file system. Der Dateiname ist ein reservierter Name in diesem Dateisystem. - + Filename contains trailing spaces. Dateiname enthält Leerzeichen am Ende. - + Filename contains leading spaces. Dateiname enthält Leerzeichen am Anfang. - + Filename contains leading and trailing spaces. Dateiname enthält Leerzeichen am Anfang und am Ende. - + Filename is too long. Der Dateiname ist zu lang. - + File/Folder is ignored because it's hidden. Datei/Ordner wird ignoriert, weil sie unsichtbar ist. - + Stat failed. Stat fehlgeschlagen. - + Conflict: Server version downloaded, local copy renamed and not uploaded. Konflikt: Serverversion heruntergeladen, lokale Kopie umbenannt und nicht hochgeladen. - + Case Clash Conflict: Server file downloaded and renamed to avoid clash. Problem der Groß- und Kleinschreibung: Serverdatei heruntergeladen und umbenannt, um Konflikte zu vermeiden. - + The filename cannot be encoded on your file system. Der Dateiname kann auf Ihrem Dateisystem nicht entschlüsselt werden. - + The filename is blacklisted on the server. Der Dateiname steht auf dem Server auf einer schwarzen Liste. - + File has extension reserved for virtual files. Die Endung der Datei ist für virtuelle Dateien reserviert. - + size Größe - + permission Berechtigung - + file id Datei-ID - + Server reported no %1 Server meldet keine %1 - + Cannot sync due to invalid modification time Synchronisierung wegen ungültiger Änderungszeit nicht möglich - + Could not upload file, because it is open in "%1". Datei konnte nicht hochgeladen werden, da sie in "%1" geöffnet ist. - + Error while deleting file record %1 from the database Fehler beim Löschen des Dateisatzes %1 aus der Datenbank - + Conflict when uploading a folder. It's going to get cleared! Konflikt beim Hochladen eines Ordners. Er wird gelöscht! - + Conflict when uploading a file. It's going to get removed! Konflikt beim Hochladen einer Datei. Sie wird entfernt! - + + Moved to invalid target, restoring Auf ungültiges Ziel verschoben, wiederherstellen. - + Ignored because of the "choose what to sync" blacklist Ignoriert wegen der "Choose what to sync"-Blacklist - + + Not allowed because you don't have permission to add subfolders to that folder Nicht erlaubt, da Sie nicht die Berechtigung haben, Unterordner zu diesem Ordner hinzuzufügen. - + Not allowed because you don't have permission to add files in that folder Nicht erlaubt, da Sie keine Berechtigung zum Hinzufügen von Dateien in diesen Ordner haben. - + Not allowed to upload this file because it is read-only on the server, restoring Das Hochladen dieser Datei ist nicht erlaubt, da die Datei auf dem Server schreibgeschützt ist. Wiederherstellen. - + Not allowed to remove, restoring Entfernen nicht erlaubt, wiederherstellen. - + Error while reading the database Fehler beim Lesen der Datenbank - + Server replied with an error while reading directory "%1" : %2 Der Server hat während des Lesens des Verzeichnisses "%1" mit einem Fehler geantwortet: %2 @@ -3950,28 +4398,28 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PropagateDirectory - + could not delete file %1 from local DB Datei %1 konnte nicht aus lokaler Datenbank gelöscht werden - + Error updating metadata due to invalid modification time Fehler beim Aktualisieren der Metadaten aufgrund einer ungültigen Änderungszeit - - + + The folder %1 cannot be made read-only: %2 Der Ordner %1 kann nicht schreibgeschützt werden: %2 - + Error updating metadata: %1 Fehler beim Aktualisieren der Metadaten: %1 - + File is currently in use Datei ist aktuell in Benutzung @@ -3979,75 +4427,75 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PropagateDownloadFile - + could not get file %1 from local DB Datei %1 konnte nicht aus der lokalen Datenbank abgerufen werden - + File %1 cannot be downloaded because encryption information is missing. Die Datei %1 kann nicht heruntergeladen werden, da die Verschlüsselungsinformationen fehlen. - - + + File has changed since discovery Datei ist seit der Entdeckung geändert worden - - + + Could not delete file record %1 from local DB Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden - + File %1 can not be downloaded because of a local file name clash! Die Datei %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht herunter geladen werden! - + The download would reduce free local disk space below the limit Das Herunterladen würde den lokalen freien Speicherplatz unter die Grenze reduzieren - + Free space on disk is less than %1 Der freie Speicher auf der Festplatte ist weniger als %1 - + File was deleted from server Die Datei wurde vom Server gelöscht - + The file could not be downloaded completely. Die Datei konnte nicht vollständig heruntergeladen werden. - + The downloaded file is empty, but the server said it should have been %1. Die heruntergeladene Datei ist leer, obwohl der Server %1 als Größe übermittelt hat. - - + + File %1 has invalid modified time reported by server. Do not save it. Datei %1 hat eine ungültige Änderungszeit, die vom Server gemeldet wurde. Speichern Sie sie nicht. - + File %1 downloaded but it resulted in a local file name clash! Datei %1 heruntergeladen, aber dies führte zu einem lokalen Dateinamenskonflikt! - + Error updating metadata: %1 Fehler beim Aktualisieren der Metadaten: %1 - + The file %1 is currently in use Die Datei %1 ist aktuell in Benutzung @@ -4055,12 +4503,12 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PropagateItemJob - + ; Restoration Failed: %1 ; Wiederherstellung fehlgeschlagen: %1 - + A file or folder was removed from a read only share, but restoring failed: %1 Eine Datei oder ein Ordner wurde von einer Nur-Lese-Freigabe wiederhergestellt, aber die Wiederherstellung ist mit folgendem Fehler fehlgeschlagen: %1 @@ -4068,32 +4516,32 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PropagateLocalMkdir - + could not delete file %1, error: %2 Konnte Datei %1 nicht löschen. Fehler: %2 - + Folder %1 cannot be created because of a local file or folder name clash! Ordner %1 kann aufgrund einer lokalen Datei- oder Ordnernamenskollision nicht erstellt werden! - + Could not create folder %1 Ordner %1 konnte nicht erstellt werden - + The folder %1 cannot be made read-only: %2 Der Ordner %1 kann nicht schreibgeschützt werden: %2 - + Error updating metadata: %1 Fehler beim Aktualisieren der Metadaten: %1 - + The file %1 is currently in use Die Datei %1 ist aktuell in Benutzung @@ -4101,12 +4549,12 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PropagateLocalRemove - + Could not remove %1 because of a local file name clash %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht gelöscht werden - + Could not delete file record %1 from local DB Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden @@ -4114,47 +4562,52 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PropagateLocalRename - + + Folder %1 cannot be renamed because of a local file or folder name clash! + + + + File %1 downloaded but it resulted in a local file name clash! Datei %1 heruntergeladen, aber dies führte zu einem lokalen Dateinamenskonflikt! - - - + + + could not get file %1 from local DB Datei %1 konnte nicht aus der lokalen Datenbank abgerufen werden - - + + Error setting pin state Fehler beim Setzen des PIN-Status - - + + Error updating metadata: %1 Fehler beim Aktualisieren der Metadaten: %1 - + The file %1 is currently in use Die Datei %1 ist aktuell in Benutzung - - + + Could not delete file record %1 from local DB Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden - + Failed to propagate directory rename in hierarchy Die Umbenennung des Verzeichnisses in der Hierarchie konnte nicht weitergegeben werden - + Failed to rename file Konnte Datei nicht umbenennen @@ -4162,12 +4615,12 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PropagateRemoteDelete - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 204, aber gesendet wurde "%1 %2". - + Could not delete file record %1 from local DB Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden @@ -4175,7 +4628,7 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PropagateRemoteDeleteEncryptedRootFolder - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Falscher HTTP-Code vom Server zurückgegeben. 204 erwartet, aber "%1 %2" erhalten. @@ -4183,7 +4636,7 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 201, aber gesendet wurde "%1 %2". @@ -4193,12 +4646,12 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver Ordner konnte nicht verschlüsselt werden %1 - + Error writing metadata to the database: %1 Fehler beim Schreiben der Metadaten in die Datenbank: %1 - + The file %1 is currently in use Die Datei %1 ist aktuell in Benutzung @@ -4211,37 +4664,39 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver Konnte %1 nicht nach %2 umbenennen. Fehler: %3 - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 201, aber gesendet wurde "%1 %2". - + could not get file %1 from local DB Datei %1 konnte nicht aus der lokalen Datenbank abgerufen werden - + Could not delete file record %1 from local DB Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden - + + Error updating metadata: %1 Fehler beim Aktualisieren der Metadaten: %1 - + + The file %1 is currently in use Die Datei %1 ist aktuell in Benutzung - + Error setting pin state Fehler beim Setzen des PIN-Status - + Error writing metadata to the database Fehler beim Schreiben der Metadaten in die Datenbank @@ -4249,60 +4704,60 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PropagateUploadFileCommon - + Failed to upload encrypted file. Das Hochladen der verschlüsselten Datei ist fehlgeschlagen. - + File %1 cannot be uploaded because another file with the same name, differing only in case, exists Die Datei %1 kann nicht hochgeladen werden, da eine andere Datei mit dem selben Namen, nur unterschiedlicher Groß-/Kleinschreibung, existiert - - + + Upload of %1 exceeds the quota for the folder Das Hochladen von %1 überschreitet das Speicherkontingent des Ordners - - - + + + File %1 has invalid modification time. Do not upload to the server. Die Datei %1 hat eine ungültige Änderungszeit. Nicht auf den Server hochladen. - + File Removed (start upload) %1 Datei entfernt (starte Hochladen) %1 - + Local file changed during syncing. It will be resumed. Lokale Datei hat sich während der Synchronisierung geändert. Die Synchronisierung wird wiederaufgenommen. - + Local file changed during sync. Eine lokale Datei wurde während der Synchronisierung geändert. - + Failed to unlock encrypted folder. Der verschlüsselte Ordner konnte nicht entsperrt werden. - + Unable to upload an item with invalid characters Ein Element mit ungültigen Zeichen kann nicht hochgeladen werden - + Error updating metadata: %1 Fehler beim Aktualisieren der Metadaten: %1 - + The file %1 is currently in use Die Datei %1 ist aktuell in Benutzung @@ -4310,32 +4765,32 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PropagateUploadFileNG - + The local file was removed during sync. Die lokale Datei wurde während der Synchronisierung gelöscht. - + Local file changed during sync. Eine lokale Datei wurde während der Synchronisierung geändert. - + Poll URL missing Poll-URL fehlt - + Unexpected return code from server (%1) Unerwarteter Rückgabe-Code Antwort vom Server (%1) - + Missing File ID from server Fehlende Datei-ID vom Server - + Missing ETag from server Fehlender ETag vom Server @@ -4343,22 +4798,22 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::PropagateUploadFileV1 - + Poll URL missing Poll-URL fehlt - + The local file was removed during sync. Die lokale Datei wurde während der Synchronisierung gelöscht. - + Local file changed during sync. Eine lokale Datei wurde während der Synchronisierung geändert. - + The server did not acknowledge the last chunk. (No e-tag was present) Der Server hat den letzten Block nicht bestätigt. (Kein E-Tag vorhanden) @@ -4394,7 +4849,7 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::SelectiveSyncDialog - + Choose What to Sync Zu synchronisierende Elemente auswählen @@ -4402,33 +4857,33 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::SelectiveSyncWidget - + Loading … Lade … - + Deselect remote folders you do not wish to synchronize. Entfernte Ordner abwählen, die nicht synchronisiert werden sollen. - + Name Name - + Size Größe - - + + No subfolders currently on the server. Aktuell befinden sich keine Unterordner auf dem Server. - + An error occurred while loading the list of sub folders. Es ist ein Fehler während des Ladens der Liste der Unterordner aufgetreten. @@ -4441,9 +4896,8 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver Antworten - Dismiss - Ablehnen + Ablehnen @@ -4454,23 +4908,27 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver Einstellungen - + %1 Settings This name refers to the application name e.g Nextcloud %1-Einstellungen - + + New Account + + + + General Allgemein - Network - Netzwerk + Netzwerk - + Account Benutzerkonto @@ -4486,39 +4944,61 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::ShareModel - + Secure file drop link Sicherer Link zur Dateiablage - + Share link Freigabe-Link - + Link share Link teilen - + Internal link Interner Link - + Secure file drop Sichere Dateiablage - + Could not find local folder for %1 Lokaler Ordner für %1 nicht gefunden - Enter a note for the recipient - Geben Sie eine Notiz für den Empfänger ein + Geben Sie eine Notiz für den Empfänger ein + + + + OCC::ShareUserLine + + Username + Benutzername + + + Can edit + Kann bearbeiten + + + Note: + Notiz: + + + Password: + Passwort: + + + Expires: + Läuft ab: @@ -4549,22 +5029,22 @@ Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu ver OCC::SocketApi - + Failed to encrypt folder at "%1" Fehler beim Verschlüsseln des Ordners unter "%1" - + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. Für das Konto %1 ist keine Ende-zu-Ende-Verschlüsselung konfiguriert. Bitte konfigurieren Sie diese in Ihren Kontoeinstellungen, um die Ordnerverschlüsselung zu aktivieren. - + Failed to encrypt folder Ordner konnte nicht verschlüsselt werden - + Could not encrypt the following folder: "%1". Server replied with error: %2 @@ -4573,151 +5053,154 @@ Server replied with error: %2 Server antwortete mit Fehler: %2 - + Folder encrypted successfully Ordner erfolgreich verschlüsselt - + The following folder was encrypted successfully: "%1" Der folgende Ordner wurde erfolgreich verschlüsselt: "%1" - + Context menu share Kontextmenü Freigabe - + Select new location … Neuen Ort auswählen … - + I shared something with you Ich habe etwas mit Ihnen geteilt - - + + Share options Freigabeoptionen - - + + Activity Aktivität - + Copy private link to clipboard Privater Link in die Zwischenablage kopiert - + Send private link by email … Privaten Link als E-Mail verschicken … - + Leave this share Freigabe verlassen - + Resharing this file is not allowed Weiterteilen dieser Datei ist nicht erlaubt - + Resharing this folder is not allowed Weiterteilen dieses Ordners ist nicht erlaubt - + Copy secure file drop link Link zur sicheren Dateiablage kopieren - - + + Copy public link Öffentlichen Link kopieren - + Copy secure filedrop link Link zur sicheren Dateiablage kopieren - + Copy internal link Internen Link kopieren - + Encrypt Verschlüsseln - + Lock file Datei sperren - + Unlock file Datei entsperren - + Locked by %1 Gesperrt von %1 - + Expires in %1 minutes remaining time before lock expires - Läuft ab in %1 MinuteLäuft ab in %1 Minuten + + Läuft ab in %1 Minute + Läuft ab in %1 Minuten + - + Edit Bearbeiten - + Open in browser Im Browser öffnen - + Resolve conflict … Konflikt lösen… - + Move and rename … Verschieben und umbenennen … - + Move, rename and upload … Verschieben, umbenennen und hochladen … - + Delete local changes Lokale Änderungen löschen - + Move and upload … Verschieben und hochladen … - + Delete Löschen @@ -4945,89 +5428,97 @@ Server antwortete mit Fehler: %2 Datei konnte nicht aktualisiert werden: %1 - + Could not update virtual file metadata: %1 Metadaten der virtuellen Datei konnten nicht aktualisiert werden: %1 - + Could not update file metadata: %1 Die Metadaten der Datei konnten nicht aktualisiert werden: %1 - + Could not set file record to local DB: %1 Dateidatensatz konnte nicht auf lokale DB gesetzt werden: %1 - + Unresolved conflict. Ungelöster Konflikt. - + Only %1 are available, need at least %2 to start Placeholders are postfixed with file sizes using Utility::octetsToString() Nur %1 sind verfügbar. Zum Beginnen werden mindestens %2 benötigt. - + Unable to open or create the local sync database. Make sure you have write access in the sync folder. Öffnen oder erstellen der Sync-Datenbank nicht möglich. Bitte sicherstellen, dass Schreibrechte für den zu synchronisierenden Ordner existieren. - + Using virtual files with suffix, but suffix is not set Virtuelle Dateien mit Endung verwenden, aber Endung ist nicht gesetzt. - + Unable to read the blacklist from the local database Fehler beim Einlesen der Blacklist aus der lokalen Datenbank - + Unable to read from the sync journal. Fehler beim Einlesen des Synchronisierungsprotokolls. - + Cannot open the sync journal Synchronisierungsprotokoll kann nicht geöffnet werden - + Disk space is low: Downloads that would reduce free space below %1 were skipped. Der freie Speicherplatz wird knapp: Downloads, die den freien Speicher unter %1 reduzieren, wurden ausgelassen. - + There is insufficient space available on the server for some uploads. Auf dem Server ist für einige Dateien zum Hochladen nicht genug Platz. + + OCC::SyncJournalDb + + + Failed to connect database. + Fehler beim Verbinden mit der Datenbank. + + OCC::SyncStatusSummary - - + + Offline Offline - - - + + + All synced! Alles synchronisiert! - + Some files couldn't be synced! Einige Dateien konnten nicht synchronisiert werden! - + See below for errors Warnungen siehe unten @@ -5037,37 +5528,38 @@ Server antwortete mit Fehler: %2 Synchronisierung wird vorbereitet - + + Syncing Synchronisiere - + Sync paused Synchronisierung pausiert - + Some files could not be synced! Einige Dateien konnten nicht synchronisiert werden! - + See below for warnings Warnungen siehe unten - + %1 of %2 · %3 left %1 von %2 · %3 verbleiben - + %1 of %2 %1 von %2 - + Syncing file %1 of %2 Synchronisiere Datei %1 von %2 @@ -5075,7 +5567,7 @@ Server antwortete mit Fehler: %2 OCC::Systray - + Download Herunterladen @@ -5127,7 +5619,7 @@ Server antwortete mit Fehler: %2 Synchronisierung für alle fortsetzen - + %1: %2 %1: %2 @@ -5135,36 +5627,34 @@ Server antwortete mit Fehler: %2 OCC::Theme - + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 Desktop-Client</p><p>Version %1. Für weitere Informationen bitte <a href='%2'>hier</a> klicken.</p> - <p>%1 Desktop Client</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 Desktop-Client</p> + <p>%1 Desktop-Client</p> - + <p><small>Using virtual files plugin: %1</small></p> <p><small>Plugin für virtuelle Dateien: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 Desktop-Client %2</p> - - + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> <p>Version %1. Für weitere Informationen klicken Sie bitte <a href='%2'>hier</a>.</p> - + <p>This release was supplied by %1.</p> <p>Diese Version wird von %1 bereitgestellt</p>. @@ -5237,8 +5727,12 @@ Server antwortete mit Fehler: %2 + Could not add or remove user %1 to access folder %2 + + + Could not add or remove a folder user %1, for folder %2 - Ordner konnte nicht hinzugefügt oder entfernt werden. Benutzer %1 für Ordner %2 + Ordner konnte nicht hinzugefügt oder entfernt werden. Benutzer %1 für Ordner %2 @@ -5249,13 +5743,18 @@ Server antwortete mit Fehler: %2 OCC::User - + + %1 notifications + + + + Retry all uploads Alle Uploads neu starten - - + + Resolve conflict Konflikt lösen @@ -5263,22 +5762,22 @@ Server antwortete mit Fehler: %2 OCC::UserModel - + Confirm Account Removal Kontenentfernung bestätigen - + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> <p>Möchten Sie wirklich die Verbindung zum Konto <i>%1</i> entfernen?</p><p><b>Hinweis:</b> Es werden <b>keine</b> Dateien gelöscht.</p> - + Remove connection Verbindung entfernen - + Cancel Abbrechen @@ -5380,6 +5879,24 @@ Server antwortete mit Fehler: %2 %1 Tage + + OCC::ValidateChecksumHeader + + + The checksum header is malformed. + Der Prüfsummen-Header hat ein fehlerhaftes Format. + + + + The checksum header contained an unknown checksum type "%1" + Der Prüfsummen-Header enthielt einen unbekannten Prüfsummentyp "%1" + + + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + Die heruntergeladene Datei stimmt nicht mit der Prüfsumme überein, sie wird fortgesetzt. "%1" != "%2" + + OCC::Vfs @@ -5430,7 +5947,7 @@ Server antwortete mit Fehler: %2 OCC::VfsSuffix - + Error updating metadata due to invalid modification time Fehler beim Aktualisieren der Metadaten aufgrund einer ungültigen Änderungszeit @@ -5439,7 +5956,7 @@ Server antwortete mit Fehler: %2 OCC::VfsXAttr - + Error updating metadata due to invalid modification time Fehler beim Aktualisieren der Metadaten aufgrund einer ungültigen Änderungszeit @@ -5460,14 +5977,17 @@ Server antwortete mit Fehler: %2 OCC::WebFlowCredentials - You have been logged out of your account %1 at %2. Please login again. - Sie wurden von Ihrem Konto %1 als %2 abgemeldet. Bitte melden Sie sich erneut an. + Sie wurden von Ihrem Konto %1 als %2 abgemeldet. Bitte melden Sie sich erneut an. - Please login with the account: %1 - Bitte mit folgendem Konto anmelden: %1 + Bitte mit folgendem Konto anmelden: %1 + + + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + @@ -5478,37 +5998,34 @@ Server antwortete mit Fehler: %2 Formular - + Log in Anmelden - + Sign up with provider Mit Provider anmelden - + Keep your data secure and under your control Halten Sie Ihre Daten sicher und unter Ihrer Kontrolle - Secure collaboration & file exchange - Sichere Zusammenarbeit & Dateiaustausch + Sichere Zusammenarbeit & Dateiaustausch - Easy-to-use web mail, calendaring & contacts - Einfach zu bedienende Webmail, Kalender & Kontakte + Einfach zu bedienende Webmail, Kalender & Kontakte - Screensharing, online meetings & web conferences - Bildschirmfreigabe, Online-Meetings & Webkonferenzen + Bildschirmfreigabe, Online-Meetings & Webkonferenzen - + Host your own server Eigenen Server betreiben @@ -5516,197 +6033,230 @@ Server antwortete mit Fehler: %2 OCC::ownCloudGui - + Unsupported Server Version Nicht unterstütze Server-Version - + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. Der Server auf Konto %1 verwendet die nicht unterstützte Version %2. Die Verwendung dieses Clients mit nicht unterstützten Serverversionen ist ungetestet und potenziell gefährlich. Die Verwendung erfolgt auf eigene Gefahr. - + Disconnected Getrennt - + Disconnected from some accounts Verbindungen zu einigen Konten getrennt - + Disconnected from %1 Von %1 getrennt - + Disconnected from accounts: Verbindungen zu Konten getrennt: - + Account %1: %2 Konto %1: %2 - + Please sign in Bitte melden Sie sich an - + Signed out Abgemeldet - + Account synchronization is disabled Konto-Synchronisierung ist deaktiviert - - + + Synchronization is paused Synchronisierung ist pausiert - + Folder %1: %2 Ordner %1: %2 - + Unresolved conflicts Ungelöste Konflikte - + Up to date Aktuell - + Error during synchronization Fehler bei der Synchronisierung - + There are no sync folders configured. Es wurden keine Synchronisierungsordner konfiguriert. - + No sync folders configured Keine Ordner zur Synchronisierung konfiguriert - + Checking for changes in remote "%1" Nach Änderungen in entfernten "%1" suchen - + Checking for changes in local "%1" Nach Änderungen in lokalem "%1" suchen - + Syncing %1 of %2 (%3 left) Synchronisiere %1 von %2 (%3 übrig) - + Syncing %1 of %2 Synchronisiere %1 von %2 - + Syncing %1 (%2 left) Synchronisiere %1 (%2 übrig) - + Syncing %1 Synchronisiere %1 - + %1 (%2, %3) %1 (%2, %3) + + OCC::sesSnackBar + + + Error + Fehler + + + + Warning + Warnung + + + + Success + + + OwncloudAdvancedSetupPage - + &Local Folder &Lokaler Ordner - + Username Benutzername - + Local Folder Lokaler Ordner - + Choose different folder Anderen Ordner wählen - + Server address Serveradresse - + Sync Logo Sync-Logo - + Synchronize everything from server Alle Daten vom Server synchronisieren - + Ask before syncing folders larger than Fragen bevor Ordner synchronisiert werden. Grenze: - + + + MB + + Trailing part of "Ask confirmation before syncing folder larger than" + + + + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + + + + MB Trailing part of "Ask confirmation before syncing folder larger than" - MB + MB - + Ask before syncing external storages Fragen bevor externe Speicher synchronisiert werden - + Choose what to sync Zu synchronisierende Elemente auswählen - + Keep local data Lokale Daten behalten - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Wenn diese Option gesetzt ist, werden bestehende Inhalte im lokalen Ordner gelöscht, um eine saubere Synchronisierung nur der Serverdaten zu ermöglichen.</p><p>Wählen Sie diese Option nicht, wenn die lokalen Inhalte auf den Server übertragen werden sollen.</p></body></html> + <html><head/><body><p>Wenn diese Option gesetzt ist, werden bestehende Inhalte im lokalen Ordner gelöscht, um eine saubere Synchronisierung nur der Serverdaten zu ermöglichen.</p><p>Wählen Sie diese Option nicht, wenn die lokalen Inhalte auf den Server übertragen werden sollen.</p></body></html> - + Erase local folder and start a clean sync Lokalen Ordner löschen und eine saubere Synchronisierung starten @@ -5724,6 +6274,25 @@ Server antwortete mit Fehler: %2 &Passwort + + OwncloudOAuthCredsPage + + Please switch to your browser to proceed. + Bitte wechseln Sie zum Fortfahren in Ihren Browser. + + + An error occurred while connecting. Please try again. + Es ist ein Fehler während des Verbindungsaufbau aufgetreten. Bitte erneut versuchen. + + + Re-open Browser + Browser erneut öffnen + + + Copy link + Link kopieren + + OwncloudSetupPage @@ -5733,9 +6302,8 @@ Server antwortete mit Fehler: %2 TextLabel - Logo - Logo + Logo @@ -5751,71 +6319,80 @@ Server antwortete mit Fehler: %2 QObject - + New folder Neuer Ordner - + You renamed %1 Sie haben %1 umbenannt - + You deleted %1 Sie haben %1 gelöscht - + You created %1 Sie haben %1 erstellt - + You changed %1 Sie haben %1 geändert - + Synced %1 %1 synchronisiert - + %nd delay in days after an activity - %nd%nd + + %nd + %nd + - + in the future in der Zukunft - + %nh delay in hours after an activity - %nh%nh + + %nh + %nh + - + now jetzt - + 1m one minute after activity date and time 1m - + %nm delay in minutes after an activity - %nm%nm + + %nm + %nm + - + Some time ago Vor einiger Zeit @@ -5830,6 +6407,26 @@ Server antwortete mit Fehler: %2 Paths beginning with '#' character are not supported in VFS mode. Pfade, die mit dem Zeichen '#' beginnen, werden im VFS-Modus nicht unterstützt. + + + Failed to create debug archive + + + + + Could not create debug archive in selected location! + + + + + The directory %1 cannot be part of your sync directory. Please choose another folder. + + + + + Reply + Antworten + ResolveConflictsDialog @@ -5842,7 +6439,10 @@ Server antwortete mit Fehler: %2 %1 files in conflict indicate the number of conflicts to resolve - %1 Dateikonflikt%1 Dateikonflikte + + %1 Dateikonflikt + %1 Dateikonflikte + @@ -5850,45 +6450,71 @@ Server antwortete mit Fehler: %2 Wählen Sie, ob Sie die lokale Version, die Serverversion oder beide behalten möchten. Wenn Sie beide auswählen, wird dem Namen der lokalen Datei eine Nummer hinzugefügt. - + All local versions Alle lokalen Versionen - + All server versions Alle Serverversionen - + Resolve conflicts Konflikte lösen - + Cancel Abbrechen + + SesErrorBox + + + Error + Fehler + + + + SesTrayHeader + + + Website + + + + + Open Nextcloud in browser + + + + + Open local or group folders + + + ShareDelegate - + Create a new share link Neuen Freigabe-Link erstellen - + Copy share link location Standort des Freigabelinks kopieren - + Copied! Kopiert! - + Share options Freigabeoptionen @@ -5896,83 +6522,91 @@ Server antwortete mit Fehler: %2 ShareDetailsPage - + An error occurred setting the share password. Es ist ein Fehler beim Festlegen des Freigabekennworts aufgetreten. - Edit share - Freigabe bearbeiten + Freigabe bearbeiten - + Dismiss Verwerfen - Share label - Freigabe-Label + Freigabe-Label - - + + Allow upload and editing Hochladen und Bearbeiten erlauben - + + Custom Permissions + + + + View only Nur anzeigen - + File drop (upload only) Dateien ablegen (nur Hochladen) - + Allow resharing Weiterteilen erlauben - + Hide download Download verbergen - + Password protect Passwortschutz - + Set expiration date Ablaufdatum setzen - + Note to recipient Notiz an Empfänger - + + Enter the note to recipient + + + + Unshare Freigabe aufheben - + Add another link Weiteren Link hinzufügen - + Share link copied! Freigabelink kopiert! - + Copy share link Freigabe-Link kopieren @@ -5980,27 +6614,27 @@ Server antwortete mit Fehler: %2 ShareView - + Password required for new share Passwort für neue Freigabe erforderlich - + Share password Freigabe-Passwort - + Sharing is disabled Teilen ist deaktiviert - + This item cannot be shared. Dieses Element kann nicht geteilt werden - + Sharing is disabled. Teilen ist deaktiviert. @@ -6008,7 +6642,7 @@ Server antwortete mit Fehler: %2 ShareeSearchField - + Search for users or groups… Suche nach Benutzern oder Gruppen… @@ -6021,20 +6655,19 @@ Server antwortete mit Fehler: %2 SyncJournalDb - Failed to connect database. - Fehler beim Verbinden mit der Datenbank. + Fehler beim Verbinden mit der Datenbank. SyncStatus - + Sync now Jetzt synchronisieren - + Resolve conflicts Konflikte lösen @@ -6052,54 +6685,245 @@ Server antwortete mit Fehler: %2 Antwort auf Chat-Nachricht senden + + TestSetUserStatusDialog + + + + 1 day + 1 Tag + + + + + + + + Don't clear + Nicht löschen + + + + + + + + 1 hour + 1 Stunde + + + + + + + 30 minutes + 30 Minuten + + + + + + 4 hours + 4 Stunden + + + + + + Today + Heute + + + + + + This week + Diese Woche + + + + Less than a minute + Weniger als eine Minute + + + + 1 minute + 1 Minute + + + + 7 days + + + + + Could not fetch predefined statuses. Make sure you are connected to the server. + Vordefinierte Status konnten nicht abgerufen werden. Stellen Sie bitte sicher, dass Sie mit dem Server verbunden sind. + + + + Could not fetch status. Make sure you are connected to the server. + Benutzerstatus konnte nicht abgerufen werden. Bitte sicherstellen, dass Sie mit dem Server verbunden sind. + + + + Status feature is not supported. You will not be able to set your status. + Benutzerstatus-Funktion wird nicht unterstützt. Benutzerstatus kann nicht gesetzt werden. + + + + Could not set status. Make sure you are connected to the server. + Benutzerstatus konnte nicht gesetzt werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. + + + + Emojis are not supported. Some status functionality may not work. + Emoji-Funktion wird nicht unterstützt. Einige Benutzerstatus-Funktionen funktionieren unter Umständen nicht. + + + + Could not clear status message. Make sure you are connected to the server. + Statusnachricht konnte nicht gelöscht werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. + + TrayFoldersMenuButton - + + Files + + + + Open local or group folders Lokale- oder Gruppen-Ordner öffnen - + Open local folder Lokalen Ordner öffnen - + Connected Verbunden - + Disconnected Getrennt - Group folder button - Schaltfläche Gruppenordner + Schaltfläche Gruppenordner - + Open local folder "%1" Lokalen Ordner "%1" öffnen - + Open group folder "%1" Gruppenordner "%1" öffnen - + Open %1 in file explorer "%1" im Dateiexplorer öffnen - + User group and local folders menu Menü für Benutzergruppen und lokale Ordner + + TrayWindowAccountMenu + + + Current account + Aktuelles Konto + + + + Resume sync for all + Synchronisierung für alle fortsetzen + + + + Pause sync for all + Synchronisierung für alle pausieren + + + + Add account + Konto hinzufügen + + + + Settings + Einstellungen + + + + Exit + Beenden + + + + Current account avatar + Avatar des aktuellen Kontos + + + + Current account status is online + Aktueller Kontostatus ist online + + + + Current account status is do not disturb + Aktueller Kontostatus ist "Nicht stören" + + + + Account switcher and settings menu + Konto-Umschalter und Einstellungsmenü + + + + TrayWindowHeaderBar + + + Website + + + + + Open Nextcloud in browser + + + + + Open local or group folders + + + + + Open Nextcloud Talk in browser + Nextcloud Talk im Browser öffnen + + + + More apps + Weitere Apps + + + + Open %1 in browser + %1 im Browser öffnen + + UnifiedSearchInputContainer @@ -6151,44 +6975,42 @@ Server antwortete mit Fehler: %2 UserLine - + Switch to account Zu Konto wechseln - Current account status is online - Aktueller Kontostatus ist online + Aktueller Kontostatus ist online - Current account status is do not disturb - Aktueller Kontostatus ist "Nicht stören" + Aktueller Kontostatus ist "Nicht stören" - + Account actions Konto-Aktionen - + Set status Status setzen - - + + Log out Abmelden - - + + Log in Anmelden - + Remove account Konto löschen @@ -6264,7 +7086,7 @@ Server antwortete mit Fehler: %2 Utility - + %L1 B %L1 B @@ -6274,52 +7096,70 @@ Server antwortete mit Fehler: %2 %L1 TB - + %L1 GB %L1 GB - + %L1 MB %L1 MB - + %L1 KB %L1 KB - + %n year(s) - %n Jahr%n Jahre + + %n Jahr + %n Jahre + - + %n month(s) - %n Monat%n Monate + + %n Monat + %n Monate + - + %n day(s) - %n Tag%n Tage + + %n Tag + %n Tage + - + %n hour(s) - %n Stunde%n Stunden + + %n Stunde + %n Stunden + - + %n minute(s) - %n Minute%n Minuten + + %n Minute + %n Minuten + - + %n second(s) - %n Sekunde%n Sekunden + + %n Sekunde + %n Sekunden + - + %1 %2 %1 %2 @@ -6327,19 +7167,16 @@ Server antwortete mit Fehler: %2 ValidateChecksumHeader - The checksum header is malformed. - Der Prüfsummen-Header hat ein fehlerhaftes Format. + Der Prüfsummen-Header hat ein fehlerhaftes Format. - The checksum header contained an unknown checksum type "%1" - Der Prüfsummen-Header enthielt einen unbekannten Prüfsummentyp "%1" + Der Prüfsummen-Header enthielt einen unbekannten Prüfsummentyp "%1" - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Die heruntergeladene Datei stimmt nicht mit der Prüfsumme überein, sie wird fortgesetzt. "%1" != "%2" + Die heruntergeladene Datei stimmt nicht mit der Prüfsumme überein, sie wird fortgesetzt. "%1" != "%2" @@ -6350,89 +7187,72 @@ Server antwortete mit Fehler: %2 Nextcloud Desktop-Hauptdialog - Current account - Aktuelles Konto + Aktuelles Konto - - Resume sync for all - Synchronisierung für alle fortsetzen + Synchronisierung für alle fortsetzen - - Pause sync for all - Synchronisierung für alle pausieren + Synchronisierung für alle pausieren - Add account - Konto hinzufügen + Konto hinzufügen - Add new account - Neues Konto hinzufügen + Neues Konto hinzufügen - Settings - Einstellungen + Einstellungen - Exit - Beenden + Beenden - Current account avatar - Avatar des aktuellen Kontos + Avatar des aktuellen Kontos - Current account status is online - Aktueller Kontostatus ist online + Aktueller Kontostatus ist online - Current account status is do not disturb - Aktueller Kontostatus ist "Nicht stören" + Aktueller Kontostatus ist "Nicht stören" - Account switcher and settings menu - Konto-Umschalter und Einstellungsmenü + Konto-Umschalter und Einstellungsmenü - Open local or group folders - Lokalen oder Gruppenordner öffnen + Lokalen oder Gruppenordner öffnen - Open Nextcloud Talk in browser - Nextcloud Talk im Browser öffnen + Nextcloud Talk im Browser öffnen - More apps - Weitere Apps + Weitere Apps - Open %1 in browser - %1 im Browser öffnen + %1 im Browser öffnen - + Unified search results list Einheitliche Suchergebnisliste - + New activities Neue Aktivitäten @@ -6440,20 +7260,27 @@ Server antwortete mit Fehler: %2 main.cpp - + System Tray not available Benachrichtigungsfeld (Taskleiste) ist nicht verfügbar. - + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. %1 benötigt ein funktionierendes Benachrichtigungsfeld. Falls Sie XFCE einsetzen, dann folgen Sie bitte <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">diesen Anweisungen</a>. Andernfalls installieren Sie bitte ein Benachrichtigungsfeld wie zum Beispiel "Trayer“ und versuchen es nochmal. + + nextcloudTheme::about() + + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Gebaut von der git-Revision <a href="%1">%2</a> auf %3, %4 verwendet Qt %5, %6</small></p> + + nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> <p><small>Erstellt aus der Git-Revision <a href="%1">%2</a> auf %3, %4 unter Verwendung von Qt %5, %6</small></p> @@ -6521,46 +7348,56 @@ Server antwortete mit Fehler: %2 Lokale Metadaten aktualisiert - + + Updated local virtual files metadata + + + + Unknown Unbekannt - + downloading Herunterladen - + uploading Lade hoch - + deleting Lösche - + moving Verschiebe - + ignoring ignoriere - + error Fehler - + updating local metadata Aktualisiere lokale Metadaten + + + updating local virtual files metadata + + theme @@ -6618,177 +7455,54 @@ Server antwortete mit Fehler: %2 utility - + Could not open browser Konnte Browser nicht öffnen - + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? Die URL %1 konnte aufgrund eines Fehlers beim Start des Browsers nicht aufgerufen werden. Ist vielleicht kein Standardbrowser konfiguriert? - + Could not open email client Die E-Mail-Anwendung konnte nicht geöffnet werden - + There was an error when launching the email client to create a new message. Maybe no default email client is configured? Fehler beim Öffnen der E-Mail-Anwendung zum Erstellen einer neuen Nachricht. Vielleicht ist keine Standard-E-Mail Anwendung eingerichtet? - + Always available locally Immer lokal verfügbar - + Currently available locally Derzeit lokal verfügbar - + Some available online only Einige sind nur online abrufbar - + Available online only Nur online verfügbar - + Make always available locally Immer lokal verfügbar machen - + Free up local space Lokalen Speicherplatz freigeben - - OCC::AbstractPropagateRemoteDeleteEncrypted - - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Falscher HTTP-Code vom Server zurückgegeben. 204 erwartet, aber "%1 %2" erhalten. - - - - "%1 Failed to unlock encrypted folder %2". - "%1 Der verschlüsselte Ordner %2 konnte nicht entsperrt werden". - - - - OCC::OAuth - - - Error returned from the server: <em>%1</em> - Fehler vom Server zurückgegeben: <em>%1</em> - - - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Fehler beim Zugriff auf den "Token"-Endpunkt: <br><em>%1</em> - - - - Empty JSON from OAuth2 redirect - Leeres JSON aus OAuth2-Redirect - - - - Could not parse the JSON returned from the server: <br><em>%1</em> - Die JSON-Antwort des Servers konnte nicht geparst werden: <br><em>%1</em> - - - - The reply from the server did not contain all expected fields - Die Antwort des Servers hat nicht alle erwarteten Felder beinhaltet - - - - <h1>Login Error</h1><p>%1</p> - <h1>Anmeldefehler </h1><p>%1</p> - - - - <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> - <h1>Falsches Konto</h1><p>Sie haben sich mit dem Konto <em>%1</em> angemeldet, müssen aber das Konto <em>%2</em> verwenden.<br>Bitte melden von %3 in einem anderen Tab abmelden und <a href='%4'>klicken Sie hier</a> um sich mit %2 anzumelden</p> - - - - OCC::OwncloudOAuthCredsPage - - - Connect to %1 - Verbinden mit %1 - - - - Login in your browser - Melden Sie sich in Ihrem Browser an - - - - OCC::ShareUserLine - - - Username - Benutzername - - - - Can edit - Kann bearbeiten - - - - Note: - Notiz: - - - - Password: - Passwort: - - - - Expires: - Läuft ab: - - - - OwncloudOAuthCredsPage - - - Please switch to your browser to proceed. - Bitte wechseln Sie zum Fortfahren in Ihren Browser. - - - - An error occurred while connecting. Please try again. - Es ist ein Fehler während des Verbindungsaufbau aufgetreten. Bitte erneut versuchen. - - - - Re-open Browser - Browser erneut öffnen - - - - Copy link - Link kopieren - - - - nextcloudTheme::about() - - - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Gebaut von der git-Revision <a href="%1">%2</a> auf %3, %4 verwendet Qt %5, %6</small></p> - - - \ No newline at end of file + diff --git a/translations/client_en.ts b/translations/client_en.ts index b19ed6c250080..c7e1974c49c0b 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -1,3813 +1,6708 @@ + + ActivityItem + + + Open %1 locally + + + + + In %1 + + + + + ActivityItemContent + + + Open file details + + + + + Dismiss + + + + + ActivityList + + + Activity list + + + + + No activities yet + + + + + BasicComboBox + + + Clear status message menu + + + + + CallNotificationDialog + + + Talk notification caller avatar + + + + + Answer Talk call notification + + + + + Decline + + + + + Decline Talk call notification + + + CloudProviderWrapper - + %1 (%2, %3) - - Checking for changes in '%1' + + Checking for changes in "%1" - + Syncing %1 of %2 (%3 left) - + Syncing %1 of %2 - + Syncing %1 (%2 left) - + Syncing %1 - - + + No recently changed files - + Sync paused - + Syncing - + Open website - + Recently changed - + Pause synchronization - + Help - + Settings - + Log out - + Quit sync client - FileSystem - - - Could not make directories in trash - - + ConflictDelegate - - - Could not move '%1' to '%2' + + Local version - - Moving to the trash is not implemented on this platform + + Server version - Flow2AuthWidget - - - Browser Authentication - - + CrashReporter - - Please switch to your browser to proceed. + + Tomahawk Crash Reporter - - An error occurred while connecting. Please try again. + + <html><head/><body><p><br/></p></body></html> - - Re-open Browser + + Abort - - Copy link + + Send this report - - - FolderWizardSourcePage - - Pick a local folder on your computer to sync + + Don't send - - &Choose … + + You can disable sending crash reports in the configuration dialog. - - - FolderWizardTargetPage - - Select a remote destination folder + + + + We cannot gather useful debug information on your system. - - Create Folder + + + + + + Close - - Refresh + + Ready to send debug information (<a href="%1">view backtrace</a>). - - Folders + + Gathering debug information... - - - OCC::AbstractNetworkJob - - Connection timed out + + Uploaded %L1 of %L2 KB. - - Unknown error: network reply was deleted + + Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. - - Server replied "%1 %2" to "%3 %4" + + Failed to send crash info. - OCC::AccountManager + EditFileLocallyLoadingDialog - - End to end encryption mnemonic + + Opening file for local editing + + + EmojiPicker - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + + No recent emojis - OCC::AccountSettings + ErrorBox - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + + Error + + + FakeHangingReply - - Synchronize all + + Operation canceled + + + FileDetailsPage - - Synchronize none + + Dismiss + + + FileDetailsWindow - - Apply manual changes + + File details of %1 · %2 + + + FileProviderEvictionDialog - - Apply + + Evict materialised files - - Storage space: … + + Materialised items - - - - Cancel + + Reload + + + FileProviderFastEnumerationSettings - - Connected with <server> as <user> + + Enable fast sync - - No account configured. + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + + + FileProviderFileDelegate - - This account supports end-to-end encryption + + Delete + + + FileProviderSettings - - Enable encryption + + Virtual files settings - - Encrypt + + General settings - - - Edit Ignored Files + + Enable virtual files - - Choose what to sync + + Advanced - - Force sync now + + Signal file provider domain - - Restart sync + + Create debug archive + + + FileProviderStorageInfo - - Remove folder sync connection + + Local storage use - - Folder creation failed + + %1 GB of %2 GB remote files synced - - Confirm Folder Sync Connection Removal + + Evict local copies... + + + FileProviderSyncStatus - - Remove Folder Sync Connection + + Syncing - - Sync Running + + All synced! + + + FileSystem - - The syncing operation is running.<br/>Do you want to terminate it? + + Error removing "%1": %2 - - %1 in use + + Could not remove folder "%1" + + + Flow2AuthWidget - - %1 as <i>%2</i> + + Browser Authentication - - The server version %1 is old and unsupported! Proceed at your own risk. + + Logo - - Connected to %1. + + Switch to your browser to connect your account - - Server %1 is temporarily unavailable. + + Copy Link - - Server %1 is currently in maintenance mode. + + Reopen Browser - - Signed out from %1. + + An error occurred while connecting. Please try again. + + + FolderWizardSelectiveSync - - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + + Add Folder Sync - - No connection to %1 at %2. + + Step 3 of 3: Selektive Synchronisation + + + FolderWizardSourcePage - - There are folders that were not synchronized because they are too big: + + Add Folder Sync - - There are folders that were not synchronized because they are external storages: + + Step 1 of 3: Select local folder - - There are folders that were not synchronized because they are too big or external storages: + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - - Confirm Account Removal + + &Choose + + + FolderWizardTargetPage - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + + Add Folder Sync - - Remove connection + + Step 2 of 3: Directory in your %1 - - - Open folder + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - - Resume sync + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. - - Pause sync + + Refresh - - <p>Could not create local folder <i>%1</i>.</p> + + Create folder - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + + Folders + + + KMessageWidget - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + + &Close - - %1 of %2 in use + + Close message + + + OCC::AbstractNetworkJob - - Currently there is no storage usage information available. + + Connection timed out - - Connecting to %1 … + + Unknown error: network reply was deleted - - No %1 connection configured. + + Server replied "%1 %2" to "%3 %4" - OCC::AccountState + OCC::Account - - Signed out + + File %1 is already locked by %2. - - Disconnected + + Lock operation on %1 failed with error %2 - - Connected + + Unlock operation on %1 failed with error %2 + + + OCC::AccountManager - - Service unavailable + + %1 accounts were detected from a legacy desktop client. +Should the accounts be imported? - - Maintenance mode + + 1 account was detected from a legacy desktop client. +Should the account be imported? - - Network error + + + Legacy import - - Configuration error + + Import - - Asking Credentials + + Skip - - Unknown account state + + Could not import accounts from legacy client configuration. - OCC::ActivityListModel + OCC::AccountSettings - - Files from the ignore list as well as symbolic links are not synced. This includes: + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - - For more activities please open the Activity app. + + Synchronize all - - - OCC::AddCertificateDialog - - SSL client certificate authentication + + Synchronize none - - This server probably requires a SSL client certificate. + + Apply manual changes - - Certificate & Key (pkcs12) : + + Apply - - Browse … + + + Storage space: … - - Certificate password : + + Expand Memory - - Select a certificate + + + + Cancel - - Certificate files (*.p12 *.pfx) + + Connected with <server> as <user> - - - OCC::Application - - Error accessing the configuration file + + Standard file sync - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your user. + + Virtual file sync - - Quit %1 + + No account configured. - - - OCC::AuthenticationDialog - - Authentication Required + + https://wl.hidrive.com/easy/0057 - - Enter username and password for '%1' at %2. + + There are folders that have grown in size beyond %1MB: %2 - - &User: + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - - &Password: + + This account supports end-to-end encryption - - - OCC::CleanupPollsJob - - Error writing metadata to the database + + End-to-end Encryption with Virtual Files - - - OCC::ClientSideEncryption - - Please enter your end to end encryption passphrase:<br><br>User: %2<br>Account: %3<br> + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - - Enter E2E passphrase + + + Do not encrypt folder - - - OCC::ConnectionValidator - - The configured server for this client is too old + + + Encrypt folder - - Please update to the latest server and restart the client. + + End-to-end Encryption - - Authentication error: Either username or password are wrong. + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> - - No Nextcloud account configured + + Disable encryption - - timeout + + Display mnemonic - - The provided credentials are not correct + + End-to-end encryption has been enabled for this account - - - OCC::DiscoveryMainThread - - Aborted by the user + + Warning - - - OCC::DiscoverySingleDirectoryJob - - The server file discovery reply is missing data. + + Please wait for the folder to sync before trying to encrypt it. - - - OCC::Flow2Auth - - - Error returned from the server: <em>%1</em> + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - - - There was an error accessing the 'token' endpoint: <br><em>%1</em> + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - - - Could not parse the JSON returned from the server: <br><em>%1</em> + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. +Would you like to set up end-to-end encryption? - - - The reply from the server did not contain all expected fields + + You cannot encrypt a folder with contents, please remove the files. +Wait for the new sync, then encrypt it. - - - OCC::Flow2AuthCredsPage - - Connect to %1 + + Encryption failed - - Login in your browser (Login Flow v2) + + Could not encrypt folder because the folder does not exist anymore - - - OCC::Flow2AuthWidget - - Unable to open the Browser, please copy the link to your Browser. + + Encrypt - - Waiting for authorization + + + Edit Ignored Files - - Polling for authorization + + + Create new folder - - Starting authorization + + + Availability - - Link copied to clipboard. + + Choose what to sync - - - OCC::Folder - - Local folder %1 does not exist. + + Force sync now - - %1 should be a folder but is not. + + Restart sync - - %1 is not readable. + + Remove folder sync connection - - %1 has been removed. - %1 names a file. + + Disable virtual file support … - - %1 has been downloaded. - %1 names a file. + + Enable virtual file support %1 … - - %1 has been updated. - %1 names a file. + + (experimental) - - %1 has been renamed to %2. - %1 and %2 name files. + + Folder creation failed - - %1 has been moved to %2. + + Confirm Folder Sync Connection Removal - - - %1 and %n other file(s) have been removed. - - - - + + + Remove Folder Sync Connection + - - - %1 and %n other file(s) have been downloaded. - - - - + + + Disable virtual file support? + - - - %1 and %n other file(s) have been updated. - - - - + + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + +The only advantage of disabling virtual file support is that the selective sync feature will become available again. + +This action will abort any currently running synchronization. + - - - %1 has been renamed to %2 and %n other file(s) have been renamed. - - - - + + + Disable support + - - - %1 has been moved to %2 and %n other file(s) have been moved. - - - - + + + End-to-end encryption mnemonic + - - - %1 has and %n other file(s) have sync conflicts. - - - - + + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + - - %1 has a sync conflict. Please check the conflict file! + + Disable end-to-end encryption - - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - - - - + + + Disable end-to-end encryption for %1? + - - %1 could not be synced due to an error. See the log for details. + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - - - %1 and %n other file(s) are currently locked. - - - - + + + Sync Running + - - %1 is currently locked. + + The syncing operation is running.<br/>Do you want to terminate it? - - Sync Activity + + Storage space %1% occupied - - Could not read system exclude file + + %1 in use - - A new folder larger than %1 MB has been added: %2. - + + Set up encryption - - A folder from an external storage has been added. - + + Connected to %1. - - Please go in the settings to select it if you wish to download it. + + Server %1 is temporarily unavailable. - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + + Server %1 is currently in maintenance mode. - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + + Signed out from %1. - - Changes in synchronized folders could not be tracked reliably. - -This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). - -%1 + + There are folders that were not synchronized because they are too big: + + + + + There are folders that were not synchronized because they are external storages: - - All files in the sync folder '%1' were deleted on the server. -These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. -If you decide to restore the files, they will be re-synced with the server if you have rights to do so. -If you decide to delete the files, they will be unavailable to you, unless you are the owner. + + There are folders that were not synchronized because they are too big or external storages: - - All files got deleted from your local sync folder '%1'. -These files will be deleted from the server and will not be available on your other devices if they will not be restored. -If this action was unintended you can restore the lost data now. + + + Open folder - - Delete all files? + + Resume sync - - Delete all files + + Pause sync - - Restore deleted files + + <p>Could not create local folder <i>%1</i>.</p> - - This sync would reset the files to an earlier time in the sync folder '%1'. -This might be because a backup was restored on the server. -Continuing the sync as normal will cause all your files to be overwritten by an older file in an earlier state. Do you want to keep your local most recent files as conflict files? + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - - Backup detected + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - - Normal Synchronisation + + %1 of %2 in use - - Keep Local Files as Conflict + + Currently there is no storage usage information available. - - - OCC::FolderMan - - Could not reset folder state + + %1 as %2 - - An old sync journal '%1' was found, but could not be removed. Please make sure that no application is currently using it. + + The server version %1 is unsupported! Proceed at your own risk. - - (backup) + + Server %1 is currently being redirected, or your connection is behind a captive portal. - - (backup %1) + + Connecting to %1 … - - Undefined State. + + Unable to connect to %1. - - Waiting to start syncing. + + Server configuration error: %1 at %2. - - Preparing for sync. + + No %1 connection configured. + + + OCC::AccountSetupFromCommandLineJob - - Sync is running. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - - Sync was successful, unresolved conflicts. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - - Last Sync was successful. + + There was an invalid response to an authenticated WebDAV request + + + OCC::AccountState - - Setup Error. + + Signed out - - User Abort. + + Disconnected - - Sync is paused. + + Connected - - %1 (Sync is paused) + + Service unavailable - - No valid folder selected! + + Maintenance mode - - The selected path is not a folder! + + Redirect detected - - You have no permission to write to the selected folder! + + Network error - - There is already a sync from the server to this local folder. Please pick another local folder! + + Configuration error - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + + Asking Credentials - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + + Unknown account state - OCC::FolderStatusDelegate + OCC::ActivityListModel - - Add Folder Sync Connection + + For more activities please open the Activity app. - - Synchronized with local folder (%1) + + Fetching activities … - - File + + Network error occurred: client will retry syncing. + + + + + Files from the ignore list as well as symbolic links are not synced. - OCC::FolderStatusModel + OCC::AddCertificateDialog - - You need to be connected to add a folder + + SSL client certificate authentication - - Click this button to add a folder to synchronize. + + This server probably requires a SSL client certificate. - - - %1 (%2) - Example text: "File.txt (23KB)" + + Certificate & Key (pkcs12): - - Error while loading the list of folders from the server. + + Certificate password: - - Signed out + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - - There are unresolved conflicts. Click for details. + + Browse … - - Reconciling changes + + Select a certificate - - , '%1' - Build a list of file names + + Certificate files (*.p12 *.pfx) + + + OCC::Application - - '%1' - Argument is a file name + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - - Syncing %1 - Example text: "Syncing 'foo.txt', 'bar.txt'" + + newer + newer software version - - - , + + older + older software version - - download %1/s - Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) + + ignoring - - upload %1/s - Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) + + deleting - - Checking for changes in remote '%1' + + Quit - - Fetching folder list from server … + + Continue - - Checking for changes in local '%1' + + %1 accounts + number of accounts imported - - ↓ %1/s + + 1 account - - ↑ %1/s + + %1 folders + number of folders imported - - %1 %2 (%3 of %4) - Example text: "uploading foobar.png (2MB of 2MB)" + + 1 folder - - %1 %2 - Example text: "uploading foobar.png" + + Legacy import - - %5 left, %1 of %2, file %3 of %4 - Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" + + Imported %1 and %2 from a legacy desktop client. +%3 + number of accounts and folders imported. list of users. + + + + + Error accessing the configuration file + + + + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + + + + + Quit %1 + + + + + OCC::AuthenticationDialog + + + Authentication Required + + + + + Enter username and password for "%1" at %2. + + + + + &Username: + + + + + &Password: + + + + + OCC::BasePropagateRemoteDeleteEncrypted + + + "%1 Failed to unlock encrypted folder %2". + + + + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + + + + + OCC::BulkPropagatorJob + + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + + + + + File %1 has invalid modified time. Do not upload to the server. + + + + + File Removed (start upload) %1 + + + + + File %1 has invalid modification time. Do not upload to the server. + + + + + Local file changed during syncing. It will be resumed. + + + + + + Local file changed during sync. + + + + + Network error: %1 + + + + + Error updating metadata: %1 + + + + + The file %1 is currently in use + + + + + The local file was removed during sync. + + + + + Restoration failed: %1 + + + + + OCC::CaseClashConflictSolver + + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + + + + + Could not rename file. Please make sure you are connected to the server. + + + + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + + + + + Failed to fetch permissions with error %1 + + + + + Filename contains leading and trailing spaces. + + + + + Filename contains leading spaces. + + + + + Filename contains trailing spaces. + + + + + OCC::CaseClashFilenameDialog + + + Case Clash Conflict + + + + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + + + + + Error + + + + + Existing file + + + + + file A + + + + + + today + + + + + + 0 byte + + + + + + Open existing file + + + + + Case clashing file + + + + + file B + + + + + + Open clashing file + + + + + Please enter a new name for the clashing file: + + + + + New filename + + + + + Rename file + + + + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + + + + + %1 does not support equal file names with only letter casing differences. + + + + + Filename contains leading and trailing spaces. + + + + + Filename contains leading spaces. + + + + + Filename contains trailing spaces. + + + + + Use invalid name + + + + + Filename contains illegal characters: %1 + + + + + OCC::CleanupPollsJob + + + Error writing metadata to the database + + + + + OCC::ClientSideEncryption + + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + + + + + Enter E2E passphrase + + + + + OCC::ConflictDialog + + + Sync Conflict + + + + + + Conflicting versions of %1. + + + + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + + + + + Local version + + + + + + Click to open the file + + + + + + today + + + + + + 0 byte + + + + + <a href="%1">Open local version</a> + + + + + Server version + + + + + <a href="%1">Open server version</a> + + + + + + Keep selected version + + + + + Open local version + + + + + Open server version + + + + + Keep both versions + + + + + Keep local version + + + + + Keep server version + + + + + OCC::ConflictSolver + + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + + + + + Do you want to delete the file <i>%1</i> permanently? + + + + + Confirm deletion + + + + + + Error + + + + + + Moving file failed: + +%1 + + + + + OCC::ConnectionValidator + + + Timeout + + + + + The configured server for this client is too old + + + + + Please update to the latest server and restart the client. + + + + + Connection issue + + + + + Authentication error: Either username or password are wrong. + + + + + No Nextcloud account configured + + + + + The provided credentials are not correct + + + + + OCC::DiscoveryPhase + + + Error while canceling deletion of a file + + + + + Error while canceling deletion of %1 + + + + + OCC::DiscoverySingleDirectoryJob + + + + Server error: PROPFIND reply is not XML formatted! + + + + + + Encrypted metadata setup error! + + + + + Encrypted metadata setup error: initial signature from server is empty. + + + + + OCC::DiscoverySingleLocalDirectoryJob + + + Error while opening directory %1 + + + + + Directory not accessible on client, permission denied + + + + + Directory not found: %1 + + + + + Filename encoding is not valid + + + + + Error while reading directory %1 + + + + + OCC::EditLocallyJob + + + Invalid token received. + + + + + + + + + + Please try again. + + + + + Invalid file path was provided. + + + + + Could not find an account for local editing. + + + + + + + + + + + + Could not start editing locally. + + + + + An error occurred trying to verify the request to edit locally. + + + + + + Could not validate the request to open a file from server. + + + + + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + + + + + + + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + + + + + + + An error occurred during data retrieval. + + + + + + An error occurred trying to synchronise the file to edit locally. + + + + + An error occurred during setup. + + + + + Server error: PROPFIND reply is not XML formatted! + + + + + Could not find a remote file info for local editing. Make sure its path is valid. + + + + + Invalid local file path. + + + + + Could not open %1 + + + + + File %1 already locked. + + + + + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + + + + + File %1 now locked. + + + + + File %1 could not be locked. + + + + + OCC::EncryptFolderJob + + + Could not generate the metadata for encryption, Unlocking the folder. +This can be an issue with your OpenSSL libraries. + + + + + OCC::EncryptedFolderMetadataHandler + + + + + + + + Error fetching metadata. + + + + + + + Error locking folder. + + + + + Error fetching encrypted folder ID. + + + + + Error parsing or decrypting metadata. + + + + + Failed to upload metadata + + + + + OCC::FileDetails + + + %1 second(s) ago + seconds elapsed since file last modified + + + + + + + + %1 minute(s) ago + minutes elapsed since file last modified + + + + + + + + %1 hour(s) ago + hours elapsed since file last modified + + + + + + + + %1 day(s) ago + days elapsed since file last modified + + + + + + + + %1 month(s) ago + months elapsed since file last modified + + + + + + + + %1 year(s) ago + years elapsed since file last modified + + + + + + + + Locked by %1 - Expires in %2 minute(s) + remaining time before lock expires + + + + + + + + OCC::Flow2Auth + + + + Error returned from the server: <em>%1</em> + + + + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + + + + + + There was an error accessing the "token" endpoint: <br><em>%1</em> + + + + + + Could not parse the JSON returned from the server: <br><em>%1</em> + + + + + + The reply from the server did not contain all expected fields + + + + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + + + + + OCC::Flow2AuthWidget + + + Unable to open the Browser, please copy the link to your Browser. + + + + + + Error + + + + + Waiting for authorization + + + + + Polling for authorization + + + + + Starting authorization + + + + + Link copied to clipboard. + + + + + Open Browser + + + + + Copy Link + + + + + Switch to your browser to connect your account + + + + + OCC::Folder + + + Local folder %1 does not exist. + + + + + %1 should be a folder but is not. + + + + + %1 is not readable. + + + + + %1 has been removed. + %1 names a file. + + + + + %1 has been updated. + %1 names a file. + + + + + %1 has been renamed to %2. + %1 and %2 name files. + + + + + %1 has been moved to %2. + + + + + %1 and %n other file(s) have been removed. + + + + + + + + %1 and %n other file(s) have been added. + + + + + + + + %1 has been added. + %1 names a file. + + + + + %1 and %n other file(s) have been updated. + + + + + + + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + + + + + + + %1 has been moved to %2 and %n other file(s) have been moved. + + + + + + + + %1 has and %n other file(s) have sync conflicts. + + + + + + + + %1 has a sync conflict. Please check the conflict file! + + + + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + + + + + + + %1 could not be synced due to an error. See the log for details. + + + + + %1 and %n other file(s) are currently locked. + + + + + + + + %1 is currently locked. + + + + + Sync Activity + + + + + Could not read system exclude file + + + + + A new folder larger than %1 MB has been added: %2. + + + + + + A folder from an external storage has been added. + + + + + + Please go in the settings to select it if you wish to download it. + + + + + A folder has surpassed the set folder size limit of %1MB: %2. +%3 + + + + + Keep syncing + + + + + Stop syncing + + + + + The folder %1 has surpassed the set folder size limit of %2MB. + + + + + Would you like to stop syncing this folder? + + + + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + + + + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + + + + + Changes in synchronized folders could not be tracked reliably. + +This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). + +%1 + + + + + Virtual file download failed with code "%1", status "%2" and error message "%3" + + + + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + + + + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by downloading them from the server. + + + + + Remove all files? + + + + + Proceed with Deletion + + + + + Restore Files to Server + + + + + Restore Files from Server + + + + + OCC::FolderCreationDialog + + + Create new folder + + + + + Enter folder name + + + + + Folder already exists + + + + + %1 Create new folder + + + + + Error + + + + + Could not create a folder! Check your write permissions. + + + + + OCC::FolderMan + + + Could not reset folder state + + + + + (backup) + + + + + (backup %1) + + + + + Waiting to start syncing. + + + + + Preparing for sync. + + + + + Sync is running. + + + + + Sync is paused. + + + + + %1 (Sync is paused) + + + + + No valid folder selected! + + + + + The selected path is not a folder! + + + + + + You have no permission to write to the selected folder! + + + + + There is already a sync from the server to this local folder. Please pick another local folder! + + + + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + + + + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + + + + + Undefined state. + + + + + Sync finished with unresolved conflicts. + + + + + Last sync was successful. + + + + + Setup error. + + + + + Sync request was cancelled. + + + + + The selected path does not exist! + + + + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + + + + + OCC::FolderStatusDelegate + + + Add live backup + + + + + Synchronize any other local folder with your %1 + + + + + File + + + + + OCC::FolderStatusModel + + + You need to be connected to add a folder + + + + + Click this button to add a folder to synchronize. + + + + + Could not decrypt! + + + + + + %1 (%2) + + + + + Error while loading the list of folders from the server. + + + + + Virtual file support is enabled. + + + + + Signed out + + + + + There are unresolved conflicts. Click for details. + + + + + Synchronizing VirtualFiles with local folder + + + + + Synchronizing with local folder + + + + + Checking for changes in remote "%1" + + + + + Checking for changes in local "%1" + + + + + Reconciling changes + + + + + Syncing %1 + Example text: "Syncing 'foo.txt', 'bar.txt'" + + + + + + , + + + + + download %1/s + Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) + + + + + upload %1/s + Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) + + + + + Fetching folder list from server … + + + + + ↓ %1/s + + + + + ↑ %1/s + + + + + %1 %2 (%3 of %4) + Example text: "uploading foobar.png (2MB of 2MB)" + + + + + %1 %2 + Example text: "uploading foobar.png" + + + + + A few seconds left, %1 of %2, file %3 of %4 + Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" + + + + + %5 left, %1 of %2, file %3 of %4 + + + + + %1 of %2, file %3 of %4 + Example text: "12 MB of 345 MB, file 6 of 7" + + + + + file %1 of %2 + + + + + Waiting … + + + + + Waiting for %n other folder(s) … + + + + + + + + Preparing to sync … + + + + + OCC::FolderWatcher + + + The watcher did not receive a test notification. + + + + + OCC::FolderWatcherPrivate + + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + + + + + OCC::FolderWizard + + + Add Folder Sync Connection + + + + + Add Sync Connection + + + + + OCC::FolderWizardLocalPath + + + Click to select a local folder to sync. + + + + + Enter the path to the local folder. + + + + + Select the source folder + + + + + Add Folder Sync + + + + + Step 1 of 3: Select local folder + + + + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + + + + + Choose + + + + + OCC::FolderWizardRemotePath + + + Create Remote Folder + + + + + Enter the name of the new folder to be created below "%1": + + + + + Folder was successfully created on %1. + + + + + Authentication failed accessing %1 + + + + + Failed to create the folder on %1. Please check manually. + + + + + Failed to list a folder. Error: %1 + + + + + Choose this to sync the entire account + + + + + This folder is already being synced. + + + + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + + + + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + + + + + Add Folder Sync + + + + + Step 2 of 3: Directory in your %1 + + + + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + + + + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + + + + + Refresh + + + + + Create folder + + + + + OCC::FolderWizardSelectiveSync + + + + Use virtual files instead of downloading content immediately %1 + + + + + + (experimental) + + + + + Add Folder Sync + + + + + Step 3 of 3: Selektive Synchronisation + + + + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + + + + + Virtual files are not available for the selected folder + + + + + OCC::FormatWarningsWizardPage + + + %1 + + + + + OCC::GETFileJob + + + No E-Tag received from server, check Proxy/Gateway + + + + + We received a different E-Tag for resuming. Retrying next time. + + + + + We received an unexpected download Content-Length. + + + + + Server returned wrong content-range + + + + + Connection Timeout + + + + + OCC::GeneralSettings + + + General Settings + + + + + &Launch on system startup + + + + + Show server &notifications + + + + + For System Tray + + + + + Use &monochrome icons + + + + + Show call notifications + + + + + Advanced + + + + + Edit &Ignored Files + + + + + S&how crash reporter + + + + + Updates + + + + + &Automatically check for updates + + + + + Ask for confirmation before + synchronizing new folders larger than + + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + + + + + Notify when synchronised folders grow + larger than specified limit + + + + + Automatically disable synchronisation of + folders that overcome limit + + + + + Ask for confirmation before synchronizing + external storages + + + + + Move removed files to trash + + + + + Show sync folders in &Explorer's navigation + pane + + + + + + Create Debug Archive + + + + + Data Protection + + + + + &Analysis data collection for needs-based design + + + + + Legal Notice + + + + + Privacy Policy + + + + + Open Source Software + + + + + Update channel + + + + + + stable + + + + + + beta + + + + + &Restart && Update + + + + + Check Now + + + + + Usage Documentation + + + + + Desktop client x.x.x + + + + + More Information + + + + + Server notifications that require attention. + + + + + Show call notification dialogs. + + + + + You cannot disable autostart because system-wide autostart is enabled. + + + + + Change update channel? + + + + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + +Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. + + + + + Change update channel + + + + + Cancel + + + + + Zip Archives + + + + + Debug Archive Created + + + + + Debug archive is created at %1 + + + + + OCC::GetOrCreatePublicLinkShare + + + Password for share required + + + + + Please enter a password for your link share: + + + + + Sharing error + + + + + Could not retrieve or create the public link share. Error: + +%1 + + + + + OCC::HttpCredentialsGui + + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + + + + + Reading from keychain failed with error: "%1" + + + + + Enter Password + + + + + <a href="%1">Click here</a> to request an app password from the web interface. + + + + + OCC::IgnoreListEditor + + + Ignored Files Editor + + + + + Global Ignore Settings + + + + + Sync hidden files + + + + + Files Ignored by Patterns + + + + + This entry is provided by the system at "%1" and cannot be modified in this view. + + + + + OCC::IgnoreListTableWidget + + + Pattern + + + + + Allow Deletion + + + + + Add + + + + + Remove + + + + + Remove all + + + + + Files or folders that match this pattern will not be synchronized. + +Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. + + + + + Could not open file + + + + + Cannot write changes to "%1". + + + + + Ignore Pattern + + + + + Add New Ignore Pattern + + + + + OCC::InvalidFilenameDialog + + + Invalid filename + + + + + The file could not be synced because it contains characters which are not allowed on this system. + + + + + Error + + + + + Please enter a new name for the file: + + + + + New filename + + + + + Rename file + + + + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + + + + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + + + + + Checking rename permissions … + + + + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + + + + + Failed to fetch permissions with error %1 + + + + + Filename contains leading and trailing spaces. + + + + + Filename contains leading spaces. + + + + + Filename contains trailing spaces. + + + + + Use invalid name + + + + + Filename contains illegal characters: %1 + + + + + Could not rename file. Please make sure you are connected to the server. + + + + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + + + + + Could not rename local file. %1 + + + + + OCC::LegalNotice + + + + Legal notice + + + + + Close + + + + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + + + + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + + + + + OCC::LogBrowser + + + Log Output + + + + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. +Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. +If enabled, logs will be written to %1 + + + + + Enable logging to temporary folder + + + + + This setting persists across client restarts. +Note that using any logging command line options will override this setting. + + + + + Open folder + + + + + OCC::Logger + + + Error + + + + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + + + + + OCC::NSISUpdater + + + New Version Available + + + + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + + + + + Update Failed + + + + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + + + + + Ask again later + + + + + Restart and update + + + + + Update manually + + + + + Skip this time + + + + + Get update + + + + + OCC::NetworkSettings + + + Proxy Settings + + + + + Use system proxy + + + + + Host + + + + + Proxy server requires authentication + + + + + Download Bandwidth + + + + + + Limit to + + + + + + KBytes/s + + + + + + No limit + + + + + No proxy + + + + + Manually specify proxy + + + + + Note: proxy settings have no effects for accounts on localhost + + + + + + Limit to 3/4 of estimated bandwidth + + + + + Upload Bandwidth + + + + + + Limit automatically + + + + + Hostname of proxy server + + + + + Username for proxy server + + + + + Password for proxy server + + + + + HTTP(S) proxy + + + + + SOCKS5 proxy + + + + + OCC::OCUpdater + + + Could not check for new updates. + + + + + Checking update server … + + + + + New %1 update ready + + + + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + + + + + Downloading %1. Please wait … + + + + + %1 available. Restart application to start the update. + + + + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + + + + + Could not download update. Please open %1 to download the update manually. + + + + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + + + + + New %1 is available. Please open %2 to download the update. + + + + + Update status is unknown: Did not check for new updates. + + + + + No updates available. Your installation is at the latest version. + + + + + Update Check + + + + + OCC::OwncloudAdvancedSetupPage + + + Connect + + + + + + Use &virtual files instead of downloading content immediately %1 + + + + + + (experimental) + + + + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + + + + + %1 folder "%2" is synced to local folder "%3" + + + + + Sync the folder "%1" + + + + + Warning: The local folder is not empty. Pick a resolution! + + + + + %1 free space + %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB + + + + + Virtual files are not available for the selected folder + + + + + Local Sync Folder + + + + + + (%1) + + + + + There isn't enough free space in the local folder! + + + + + OCC::OwncloudConnectionMethodDialog + + + Connection failed + + + + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + + + + + Select a different URL + + + + + Retry unencrypted over HTTP (insecure) + + + + + Configure client-side TLS certificate + + + + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + + + + + OCC::OwncloudHttpCredsPage + + + &Email + + + + + Connect to %1 + + + + + Enter user credentials + + + + + OCC::OwncloudPropagator + + + + Impossible to get modification time for file in conflict %1 + + + + + OCC::OwncloudSetupPage + + + The link to your %1 web interface when you open it in the browser. + %1 will be replaced with the application name + + + + + &Next > + + + + + Server address does not seem to be valid + + + + + Could not load certificate. Maybe wrong password? + + + + + OCC::OwncloudSetupWizard + + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + + + + + Failed to connect to %1 at %2:<br/>%3 + + + + + Timeout while trying to connect to %1 at %2. + + + + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + + + + + Invalid URL + + + + + Trying to connect to %1 at %2 … + + + + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + + + + + There was an invalid response to an authenticated WebDAV request + + + + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + + + + + Creating local sync folder %1 … + + + + + OK + + + + + failed. + + + + + Could not create local folder %1 + + + + + No remote folder specified! + + + + + Error: %1 + + + + + creating folder on Nextcloud: %1 + + + + + Remote folder %1 created successfully. + + + + + The remote folder %1 already exists. Connecting it for syncing. + + + + + + The folder creation resulted in HTTP error code %1 + + + + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + + + + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + + + + + + Remote folder %1 creation failed with error <tt>%2</tt>. + + + + + A sync connection from %1 to remote directory %2 was set up. + + + + + Successfully connected to %1! + + + + + Connection to %1 could not be established. Please check again. + + + + + Folder rename failed + + + + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + + + + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + + + + + OCC::OwncloudWizard + + + Add %1 account + + + + + Skip folders configuration + + + + + Cancel + + + + + Enable experimental feature? + + + + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + +The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. + +Switching to this mode will abort any currently running synchronization. + +This is a new, experimental mode. If you decide to use it, please report any issues that come up. + + + + + Enable experimental placeholder mode + + + + + Stay safe + + + + + OCC::PasswordInputDialog + + + Password for share required + + + + + Please enter a password for your share: + + + + + OCC::PollJob + + + Invalid JSON reply from the poll URL + + + + + OCC::ProcessDirectoryJob + + + Symbolic links are not supported in syncing. + + + + + File is listed on the ignore list. + + + + + File names ending with a period are not supported on this file system. + + + + + File names containing the character "%1" are not supported on this file system. + + + + + File name contains at least one invalid character + + + + + The file name is a reserved name on this file system. + + + + + Filename contains trailing spaces. + + + + + Filename contains leading spaces. + + + + + Filename contains leading and trailing spaces. + + + + + Filename is too long. + + + + + File/Folder is ignored because it's hidden. + + + + + Stat failed. + + + + + Conflict: Server version downloaded, local copy renamed and not uploaded. - - %1 of %2, file %3 of %4 - Example text: "12 MB of 345 MB, file 6 of 7" + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. - - file %1 of %2 + + The filename cannot be encoded on your file system. - - Waiting … + + The filename is blacklisted on the server. - - - Waiting for %n other folder(s) … - - - - - - - Preparing to sync … + + File has extension reserved for virtual files. - - - OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + + size - - - OCC::FolderWizard - - Add Folder Sync Connection + + permission - - Add Sync Connection + + file id - - - OCC::FolderWizardLocalPath - - Click to select a local folder to sync. + + Server reported no %1 - - Enter the path to the local folder. + + Cannot sync due to invalid modification time - - Select the source folder + + Could not upload file, because it is open in "%1". - - - OCC::FolderWizardRemotePath - - Create Remote Folder + + Error while deleting file record %1 from the database - - Enter the name of the new folder to be created below '%1': + + Conflict when uploading a folder. It's going to get cleared! - - Folder was successfully created on %1. + + Conflict when uploading a file. It's going to get removed! - - Authentication failed accessing %1 + + + Moved to invalid target, restoring - - Failed to create the folder on %1. Please check manually. + + Ignored because of the "choose what to sync" blacklist - - Failed to list a folder. Error: %1 + + + Not allowed because you don't have permission to add subfolders to that folder - - Choose this to sync the entire account + + Not allowed because you don't have permission to add files in that folder - - This folder is already being synced. + + Not allowed to upload this file because it is read-only on the server, restoring - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + + Not allowed to remove, restoring - - - OCC::FormatWarningsWizardPage - - <b>Warning:</b> %1 + + Error while reading the database - - <b>Warning:</b> + + Server replied with an error while reading directory "%1" : %2 - OCC::GETFileJob + OCC::PropagateDirectory - - No E-Tag received from server, check Proxy/Gateway + + could not delete file %1 from local DB - - We received a different E-Tag for resuming. Retrying next time. + + Error updating metadata due to invalid modification time - - Server returned wrong content-range + + + The folder %1 cannot be made read-only: %2 - - Connection Timeout + + Error updating metadata: %1 - - - OCC::GeneralSettings - - Legal notice + + File is currently in use + + + OCC::PropagateDownloadFile - - General Settings + + could not get file %1 from local DB - - For System Tray + + File %1 cannot be downloaded because encryption information is missing. - - Show Server &Notifications + + + Could not delete file record %1 from local DB - - Advanced + + File %1 can not be downloaded because of a local file name clash! - - Ask for confirmation before synchronizing folders larger than + + The download would reduce free local disk space below the limit - - MB - Trailing part of "Ask confirmation before syncing folder larger than" + + Free space on disk is less than %1 - - Ask for confirmation before synchronizing external storages + + File was deleted from server - - &Launch on System Startup + + The file could not be downloaded completely. - - Use &Monochrome Icons + + The downloaded file is empty, but the server said it should have been %1. - - Edit &Ignored Files + + + File %1 has invalid modified time reported by server. Do not save it. - - Show sync folders in &Explorer's Navigation Pane + + File %1 downloaded but it resulted in a local file name clash! - - S&how crash reporter + + Error updating metadata: %1 - - - About + + The file %1 is currently in use - - Updates + + + File has changed since discovery + + + OCC::PropagateItemJob - - &Restart && Update + + ; Restoration Failed: %1 - - Server notifications that require attention. + + A file or folder was removed from a read only share, but restoring failed: %1 - OCC::GetOrCreatePublicLinkShare + OCC::PropagateLocalMkdir - - Password for share required + + could not delete file %1, error: %2 - - Please enter a password for your link share: + + Folder %1 cannot be created because of a local file or folder name clash! - - Sharing error + + Could not create folder %1 - - Could not retrieve or create the public link share. Error: - -%1 + + The folder %1 cannot be made read-only: %2 - - - OCC::HttpCredentialsGui - - Please enter %1 password:<br><br>User: %2<br>Account: %3<br> + + Error updating metadata: %1 - - Reading from keychain failed with error: '%1' + + The file %1 is currently in use + + + OCC::PropagateLocalRemove - - Enter Password + + Could not remove %1 because of a local file name clash - - <a href="%1">Click here</a> to request an app password from the web interface. + + Could not delete file record %1 from local DB - OCC::IgnoreListEditor + OCC::PropagateLocalRename - - Ignored Files Editor + + Folder %1 cannot be renamed because of a local file or folder name clash! - - Global Ignore Settings + + File %1 downloaded but it resulted in a local file name clash! - - Sync hidden files + + + + could not get file %1 from local DB - - Files Ignored by Patterns + + + Error setting pin state - - This entry is provided by the system at '%1' and cannot be modified in this view. + + + Error updating metadata: %1 - - - OCC::IgnoreListTableWidget - - Pattern + + The file %1 is currently in use - - Allow Deletion + + + Could not delete file record %1 from local DB - - Add + + Failed to propagate directory rename in hierarchy - - Remove + + Failed to rename file + + + OCC::PropagateRemoteDelete - - Remove all + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - - Files or folders matching a pattern will not be synchronized. - -Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. + + Could not delete file record %1 from local DB + + + OCC::PropagateRemoteDeleteEncryptedRootFolder - - Could not open file + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + + + + + OCC::PropagateRemoteMkdir + + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - - Cannot write changes to '%1'. + + Failed to encrypt a folder %1 - - Add Ignore Pattern + + Error writing metadata to the database: %1 - - Add a new ignore pattern: + + The file %1 is currently in use - OCC::LegalNotice + OCC::PropagateRemoteMove - - Legal notice + + Could not rename %1 to %2, error: %3 - - Close + + + Error updating metadata: %1 - - <p>Copyright 2017-2020 Nextcloud GmbH<br />Copyright 2012-2018 ownCloud GmbH</p> + + + The file %1 is currently in use - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - - - OCC::LogBrowser - - Log Output + + could not get file %1 from local DB - - &Search: + + Could not delete file record %1 from local DB - - &Find + + Error setting pin state - - &Capture debug messages + + Error writing metadata to the database + + + OCC::PropagateUploadFileCommon - - Permanently save logs + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists - - When this option is enabled and no other logging is configured, logs will be written to a temporary folder and expire after a few hours. This setting persists across client restarts. - -Logs will be written to %1 + + + + File %1 has invalid modification time. Do not upload to the server. - - Clear + + Local file changed during syncing. It will be resumed. - - Clear the log display. + + Local file changed during sync. - - S&ave + + Failed to unlock encrypted folder. - - Save the log file to a file on disk for debugging. + + Unable to upload an item with invalid characters - - Save log file + + Error updating metadata: %1 - - Error + + The file %1 is currently in use - - Could not write to log file %1 + + + Upload of %1 exceeds the quota for the folder - - - OCC::Logger - - Error + + Failed to upload encrypted file. - - <nobr>File '%1'<br/>cannot be opened for writing.<br/><br/>The log output can <b>not</b> be saved!</nobr> + + File Removed (start upload) %1 - OCC::NSISUpdater - - - New Version Available - - - - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - - + OCC::PropagateUploadFileNG - - Skip this version + + The local file was removed during sync. - - Skip this time + + Local file changed during sync. - - Get update + + Poll URL missing - - - OCC::NetworkSettings - - Proxy Settings + + Unexpected return code from server (%1) - - No Proxy + + Missing File ID from server - - Use system proxy + + Missing ETag from server + + + OCC::PropagateUploadFileV1 - - Specify proxy manually as + + Poll URL missing - - Host + + The local file was removed during sync. - - : + + Local file changed during sync. - - Proxy server requires authentication + + The server did not acknowledge the last chunk. (No e-tag was present) + + + OCC::ProxyAuthDialog - - Download Bandwidth + + Proxy authentication required - - - Limit to + + Username: - - - KBytes/s + + Proxy: - - - No limit + + The proxy server needs a username and password. - - - Limit to 3/4 of estimated bandwidth + + Password: + + + OCC::SelectiveSyncDialog - - Upload Bandwidth + + Choose What to Sync + + + OCC::SelectiveSyncWidget - - - Limit automatically + + Loading … - - Hostname of proxy server + + Deselect remote folders you do not wish to synchronize. - - Username for proxy server + + Name - - Password for proxy server + + Size - - HTTP(S) proxy + + + No subfolders currently on the server. - - SOCKS5 proxy + + An error occurred while loading the list of sub folders. - OCC::OAuth + OCC::ServerNotificationHandler - - Error returned from the server: <em>%1</em> + + Reply + + + OCC::SettingsDialog - - There was an error accessing the 'token' endpoint: <br><em>%1</em> + + Settings - - Could not parse the JSON returned from the server: <br><em>%1</em> + + %1 Settings + This name refers to the application name e.g Nextcloud - - The reply from the server did not contain all expected fields + + New Account - - <h1>Login Error</h1><p>%1</p> + + General - - <h1>Wrong user</h1><p>You logged-in with user <em>%1</em>, but must login with user <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in as user %2</p> + + Account - OCC::OCUpdater + OCC::ShareManager - - New %1 Update Ready + + Error + + + OCC::ShareModel - - A new update for %1 is about to be installed. The updater may ask -for additional privileges during the process. + + Secure file drop link - - Downloading version %1. Please wait … + + Share link - - Could not download update. Please click <a href='%1'>here</a> to download the update manually. + + Link share - - Could not check for new updates. + + Internal link - - New %1 version %2 is available. Please click <a href='%3'>here</a> to download the update. + + Secure file drop - - Checking update server … + + Could not find local folder for %1 + + + OCC::ShareeModel - - %1 version %2 available. Restart application to start the update. + + + Search globally - - Update status is unknown: Did not check for new updates. + + No results found - - No updates available. Your installation is at the latest version. + + Global search results - - Update Check + + %1 (%2) + sharee (shareWithAdditionalInfo) - OCC::OwncloudAdvancedSetupPage + OCC::SocketApi - - Connect to %1 + + Context menu share - - Setup local folder options + + I shared something with you - - Connect … + + + Share options - - %1 folder '%2' is synced to local folder '%3' + + Send private link by email … - - Sync the folder '%1' + + Copy private link to clipboard - - <p><small><strong>Warning:</strong> The local folder is not empty. Pick a resolution!</small></p> + + Failed to encrypt folder at "%1" - - Free space: %1 + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - - Local Sync Folder + + Failed to encrypt folder - - - (%1) + + Could not encrypt the following folder: "%1". + +Server replied with error: %2 - - There isn't enough free space in the local folder! + + Folder encrypted successfully - - - OCC::OwncloudConnectionMethodDialog - - Connection failed + + The following folder was encrypted successfully: "%1" - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + + Select new location … - - Select a different URL + + + Activity - - Retry unencrypted over HTTP (insecure) + + Leave this share - - Configure client-side TLS certificate + + Resharing this file is not allowed - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + + Resharing this folder is not allowed - - - OCC::OwncloudHttpCredsPage - - &Email + + Copy secure file drop link - - Connect to %1 + + + Copy public link - - Enter user credentials + + Copy secure filedrop link - - - OCC::OwncloudOAuthCredsPage - - Connect to %1 + + Copy internal link - - Login in your browser + + Encrypt - - - OCC::OwncloudSetupPage - - Connect to %1 + + Lock file - - Setup %1 server + + Unlock file - - Keep your data secure and under your control + + Locked by %1 + + + Expires in %1 minutes + remaining time before lock expires + + + + + - - Secure collaboration & file exchange + + Edit - - Easy-to-use web mail, calendaring & contacts + + Open in browser - - Screensharing, online meetings & web conferences + + Resolve conflict … - - This URL is NOT secure as it is not encrypted. -It is not advisable to use it. + + Move and rename … - - This URL is secure. You can use it. + + Move, rename and upload … - - &Next > + + Delete local changes - - Invalid URL + + Move and upload … - - Could not load certificate. Maybe wrong password? + + Delete - OCC::OwncloudSetupWizard - - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - - + OCC::SslButton - - Failed to connect to %1 at %2:<br/>%3 + + <h3>Certificate Details</h3> - - Timeout while trying to connect to %1 at %2. + + Common Name (CN): - - The authenticated request to the server was redirected to '%1'. The URL is bad, the server is misconfigured. + + Subject Alternative Names: - - There was an invalid response to an authenticated webdav request + + Organization (O): - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + + Organizational Unit (OU): - - Invalid URL + + State/Province: - - The server reported the following error: + + Country: - - Trying to connect to %1 at %2 … + + Serial: - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> + + <h3>Issuer</h3> - - Creating local sync folder %1 … + + Issuer: - - ok + + Issued on: - - failed. + + Expires on: - - Could not create local folder %1 + + <h3>Fingerprints</h3> - - No remote folder specified! + + SHA-256: - - Error: %1 + + SHA-1: - - creating folder on Nextcloud: %1 + + <p><b>Note:</b> This certificate was manually approved</p> - - Remote folder %1 created successfully. + + %1 (self-signed) - - The remote folder %1 already exists. Connecting it for syncing. + + %1 - - - The folder creation resulted in HTTP error code %1 + + This connection is encrypted using %1 bit %2. + - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + + Server version: %1 - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + + No support for SSL session tickets/identifiers - - - Remote folder %1 creation failed with error <tt>%2</tt>. + + Certificate information: - - A sync connection from %1 to remote directory %2 was set up. + + The connection is not secure - - Successfully connected to %1! + + This connection is NOT secure as it is not encrypted. + + + + OCC::SslErrorDialog - - Connection to %1 could not be established. Please check again. + + Trust this certificate anyway - - Folder rename failed + + Untrusted Certificate - - Can't remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + + Cannot connect securely to <i>%1</i>: - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> + + Additional errors: - - - OCC::OwncloudWizard - - %1 Connection Wizard + + with Certificate %1 - - Skip folders configuration + + + + &lt;not specified&gt; - - - OCC::OwncloudWizardResultPage - - Everything set up! + + + Organization: %1 - - Open Local Folder + + + Unit: %1 - - Open %1 in Browser + + + Country: %1 - - - OCC::PollJob - - Invalid JSON reply from the poll URL + + Fingerprint (SHA1): <tt>%1</tt> - - - OCC::PropagateDirectory - - Error writing metadata to the database + + Fingerprint (SHA-256): <tt>%1</tt> - - - OCC::PropagateDownloadFile - - File %1 can not be downloaded because encryption information is missing. + + Fingerprint (SHA-512): <tt>%1</tt> - - File %1 can not be downloaded because of a local file name clash! + + Effective Date: %1 - - The download would reduce free local disk space below the limit + + Expiration Date: %1 - - Free space on disk is less than %1 + + Issuer: %1 + + + OCC::SyncEngine - - File was deleted from server + + %1 (skipped due to earlier error, trying again in %2) - - The file could not be downloaded completely. + + Only %1 are available, need at least %2 to start + Placeholders are postfixed with file sizes using Utility::octetsToString() - - The downloaded file is empty despite that the server announced it should have been %1. + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. - - File %1 cannot be saved because of a local file name clash! + + Disk space is low: Downloads that would reduce free space below %1 were skipped. - - File has changed since discovery + + There is insufficient space available on the server for some uploads. - - Error writing metadata to the database + + Unresolved conflict. - - - OCC::PropagateItemJob - - ; Restoration Failed: %1 + + Could not update file: %1 - - A file or folder was removed from a read only share, but restoring failed: %1 + + Could not update virtual file metadata: %1 - - - OCC::PropagateLocalMkdir - - could not delete file %1, error: %2 + + Could not update file metadata: %1 - - Attention, possible case sensitivity clash with %1 + + Could not set file record to local DB: %1 - - could not create folder %1 + + Using virtual files with suffix, but suffix is not set - - Error writing metadata to the database + + Unable to read the blacklist from the local database - - - OCC::PropagateLocalRemove - - Error removing '%1': %2; + + Unable to read from the sync journal. - - Could not remove folder '%1' + + Cannot open the sync journal + + + OCC::SyncJournalDb - - Could not remove %1 because of a local file name clash + + Failed to connect database. - OCC::PropagateLocalRename + OCC::SyncStatusSummary - - File %1 can not be renamed to %2 because of a local file name clash + + + Offline - - - Error writing metadata to the database + + + + All synced! - - - OCC::PropagateRemoteDelete - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + + Some files couldn't be synced! - - - OCC::PropagateRemoteMkdir - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + + See below for errors - - Error writing metadata to the database + + Preparing sync - - - OCC::PropagateRemoteMove - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + + + Syncing - - - Error writing metadata to the database + + Sync paused - - - OCC::PropagateUploadFileCommon - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists + + Some files could not be synced! - - Local file changed during syncing. It will be resumed. + + See below for warnings - - Local file changed during sync. + + %1 of %2 · %3 left - - - Upload of %1 exceeds the quota for the folder + + %1 of %2 - - File Removed (start upload) %1 + + Syncing file %1 of %2 + + + OCC::Systray - - Error writing metadata to the database + + Download + + + + + Add account - - - OCC::PropagateUploadFileNG - - The local file was removed during sync. + + Open main dialog - - Local file changed during sync. + + + Pause sync - - Unexpected return code from server (%1) + + + Resume sync - - Missing File ID from server + + Settings - - Missing ETag from server + + Help - - - OCC::PropagateUploadFileV1 - - Poll URL missing + + Exit %1 - - The local file was removed during sync. + + Pause sync for all - - Local file changed during sync. + + Resume sync for all - - The server did not acknowledge the last chunk. (No e-tag was present) + + %1: %2 - OCC::ProxyAuthDialog + OCC::Theme - - Proxy authentication required + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - - Username: + + <p><small>Using virtual files plugin: %1</small></p> - - Proxy: + + <p>%1 desktop client %2</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - - The proxy server needs a username and password. + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - - Password: + + <p>This release was supplied by %1.</p> - OCC::SelectiveSyncDialog + OCC::UnifiedSearchResultsListModel - - Choose What to Sync + + Failed to fetch providers. - - - OCC::SelectiveSyncWidget - - Loading … + + Failed to fetch search providers for '%1'. Error: %2 - - Deselect remote folders you do not wish to synchronize. + + Search has failed for '%2'. - - Name + + Search has failed for '%1'. Error: %2 + + + OCC::UpdateE2eeFolderMetadataJob - - Size + + Failed to update folder metadata. - - - No subfolders currently on the server. + + Failed to unlock encrypted folder. - - An error occurred while loading the list of sub folders. + + Failed to finalize item. - OCC::ServerNotificationHandler + OCC::UpdateE2eeFolderUsersMetadataJob - - Dismiss + + + + + + + + + + Error updating metadata for a folder %1 - - - OCC::SettingsDialog - - Settings + + Could not fetch public key for user %1 - - General + + Could not find root encrypted folder for folder %1 - - Network + + Could not add or remove user %1 to access folder %2 - - Account + + Failed to unlock a folder. - OCC::ShareDialog - - - %1 Sharing - - - - - %1 - - + OCC::User - - Folder: %2 + + %1 notifications - - The file can not be shared because it was shared without sharing permission. + + Retry all uploads - - Password for share required + + + Resolve conflict + + + OCC::UserModel - - Please enter a password for your link share: + + Confirm Account Removal - - share label + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - - Nextcloud Path: + + Remove connection - - Icon + + Cancel - OCC::ShareLinkWidget + OCC::UserStatusSelectorModel - - Share link + + Could not fetch predefined statuses. Make sure you are connected to the server. - - Note: + + Could not fetch status. Make sure you are connected to the server. - - Password: + + Status feature is not supported. You will not be able to set your status. - - Expires: + + Emojis are not supported. Some status functionality may not work. - - Delete + + Could not set status. Make sure you are connected to the server. - - Allow Editing + + Could not clear status message. Make sure you are connected to the server. - - Read only + + + Don't clear - - Allow Upload && Editing + + 30 minutes - - File Drop (Upload Only) + + + 1 hour - - Add note to recipient + + 4 hours - - Password Protect + + + Today - - Expiration Date + + + This week - - Unshare + + Less than a minute - - Add another link + + 1 minute - - Confirm Link Share Deletion + + %1 minutes - - <p>Do you really want to delete the public link share <i>%1</i>?</p><p>Note: This action cannot be undone.</p> + + %1 hours - - Cancel + + 1 day - - Public link + + %1 days - OCC::ShareUserGroupWidget + OCC::ValidateChecksumHeader - - Copy link + + The checksum header is malformed. - - No results for '%1' + + The checksum header contained an unknown checksum type "%1" - - I shared something with you + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + + + OCC::Vfs - - Share with users or groups … + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - OCC::ShareUserLine + OCC::VfsDownloadErrorDialog - - Username + + Download error - - can edit + + Error downloading - - Can reshare + + could not be downloaded - - Unshare + + > More details - - Can create + + More details - - Can change + + Error downloading %1 - - Can delete + + %1 could not be downloaded. - OCC::ShibbolethCredentials + OCC::VfsSuffix - - Login Error + + + Error updating metadata due to invalid modification time + + + OCC::VfsXAttr - - You must sign in as user %1 + + + Error updating metadata due to invalid modification time - OCC::ShibbolethWebView + OCC::WebEnginePage - - %1 - Authenticate + + Invalid certificate detected - - SSL Cipher Debug View + + The host "%1" provided an invalid certificate. Continue? + + + OCC::WebFlowCredentials - - Reauthentication required + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + + + OCC::WelcomePage - - Your session has expired. You need to re-login to continue to use the client. + + Form - - - OCC::SocketApi - - Context menu share + + Log in - - I shared something with you + + Sign up with provider - - - Share options + + Keep your data secure and under your control - - Send private link by email … + + Host your own server + + + OCC::ownCloudGui - - Copy private link to clipboard + + Please sign in - - Resharing this file is not allowed + + Folder %1: %2 - - - Copy public link + + There are no sync folders configured. - - Copy internal link + + Disconnected from %1 - - Edit + + Unsupported Server Version - - Open in browser + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - - - OCC::SslButton - - <h3>Certificate Details</h3> + + Disconnected - - Common Name (CN): + + Disconnected from some accounts - - Subject Alternative Names: + + Disconnected from accounts: - - Organization (O): + + Account %1: %2 - - Organizational Unit (OU): + + Signed out - - State/Province: + + Account synchronization is disabled - - Country: + + + Synchronization is paused - - Serial: + + Unresolved conflicts - - <h3>Issuer</h3> + + Error during synchronization - - Issuer: + + No sync folders configured - - Issued on: + + Checking for changes in remote "%1" - - Expires on: + + Checking for changes in local "%1" - - <h3>Fingerprints</h3> + + Syncing %1 of %2 (%3 left) - - SHA-256: + + Syncing %1 of %2 - - SHA-1: + + Syncing %1 (%2 left) - - <p><b>Note:</b> This certificate was manually approved</p> + + Syncing %1 - - %1 (self-signed) + + %1 (%2, %3) - - %1 + + Up to date + + + OCC::sesSnackBar - - This connection is encrypted using %1 bit %2. - + + Error - - Server version: %1 + + Warning - - No support for SSL session tickets/identifiers + + Success + + + OwncloudAdvancedSetupPage - - Certificate information: + + Username - - The connection is not secure + + Server address - - This connection is NOT secure as it is not encrypted. - + + Sync Logo - - - OCC::SslErrorDialog - - Trust this certificate anyway + + Local Folder - - Untrusted Certificate + + Choose different folder - - Cannot connect securely to <i>%1</i>: + + Synchronize everything from server - - with Certificate %1 + + Ask before syncing folders larger than - - - - &lt;not specified&gt; + + + MB + + Trailing part of "Ask confirmation before syncing folder larger than" - - - Organization: %1 + + Ask before syncing external storages - - - Unit: %1 + + Choose what to sync - - - Country: %1 + + Keep local data - - Fingerprint (SHA1): <tt>%1</tt> + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + - - Fingerprint (SHA-256): <tt>%1</tt> + + Erase local folder and start a clean sync - - Fingerprint (SHA-512): <tt>%1</tt> + + &Local Folder + + + OwncloudHttpCredsPage - - Effective Date: %1 + + &Username - - Expiration Date: %1 + + &Password + + + OwncloudSetupPage - - Issuer: %1 + + + TextLabel + + + + + Server address + + + + + This is the link to your %1 web interface when you open it in the browser. + + + + + QObject + + + %nd + delay in days after an activity + + + + + + + + in the future - - - OCC::SyncEngine + + + %nh + delay in hours after an activity + + + + + - - Success. + + 1m + one minute after activity date and time + + + %nm + delay in minutes after an activity + + + + + - - A network connection timeout happened. + + now - - A HTTP transmission error happened. + + Some time ago - - The mounted folder is temporarily not available on the server + + %1: %2 + this displays an error string (%2) for a file %1 - - An error occurred while opening a folder + + New folder - - Error while reading folder. + + Failed to create debug archive - - %1 (skipped due to earlier error, trying again in %2) + + Could not create debug archive in selected location! - - File/Folder is ignored because it's hidden. + + The directory %1 cannot be part of your sync directory. Please choose another folder. - - Folder hierarchy is too deep + + You renamed %1 - - Conflict: Server version downloaded, local copy renamed and not uploaded. + + You deleted %1 - - Only %1 are available, need at least %2 to start - Placeholders are postfixed with file sizes using Utility::octetsToString() + + You created %1 - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. + + You changed %1 - - Not allowed because you don't have permission to add parent folder + + Synced %1 - - Not allowed because you don't have permission to add files in that folder + + Paths beginning with '#' character are not supported in VFS mode. - - Disk space is low: Downloads that would reduce free space below %1 were skipped. + + Reply + + + ResolveConflictsDialog - - There is insufficient space available on the server for some uploads. + + Solve sync conflicts + + + %1 files in conflict + indicate the number of conflicts to resolve + + + + + - - CSync unspecified error. + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - - Aborted by the user + + All local versions - - Failed to load or create the journal file. Make sure you have read and write permissions in the local sync folder. + + All server versions - - Discovery step failed. + + Resolve conflicts - - Permission denied. + + Cancel + + + SesErrorBox - - File or directory not found: + + Error + + + SesTrayHeader - - Tried to create a folder that already exists. + + Website - - No space on %1 server available. + + Open Nextcloud in browser - - The service is temporarily unavailable + + Open local or group folders + + + ShareDelegate - - Access is forbidden + + Create a new share link - - An internal error number %1 occurred. + + Copy share link location - - Symbolic links are not supported in syncing. + + Copied! - - File is listed on the ignore list. + + Share options + + + ShareDetailsPage - - File names ending with a period are not supported on this file system. + + An error occurred setting the share password. - - File names containing the character '%1' are not supported on this file system. + + Dismiss - - The file name is a reserved name on this file system. + + Password protect - - Filename contains trailing spaces. + + Set expiration date - - Filename is too long. + + Note to recipient - - The filename cannot be encoded on your file system. + + Enter the note to recipient - - Unresolved conflict. + + + Allow upload and editing - - Stat failed. + + Custom Permissions - - Filename encoding is not valid + + View only - - Invalid characters, please rename "%1" + + File drop (upload only) - - Unable to read the blacklist from the local database + + Allow resharing - - Unable to read from the sync journal. + + Hide download - - Cannot open the sync journal + + Add another link - - File name contains at least one invalid character + + Unshare - - - Ignored because of the "choose what to sync" blacklist + + Share link copied! - - Not allowed because you don't have permission to add subfolders to that folder + + Copy share link + + + ShareView - - Not allowed to upload this file because it is read-only on the server, restoring + + Password required for new share - - - Not allowed to remove, restoring + + Share password - - Local files and share folder removed. + + Sharing is disabled - - Move not allowed, item restored + + This item cannot be shared. - - Move not allowed because %1 is read-only + + Sharing is disabled. + + + ShareeSearchField - - the destination + + Search for users or groups… - - the source + + Sharing is not available for this folder - OCC::SyncLogDialog + SyncStatus - - Synchronisation Log + + Sync now - - - OCC::Systray - - %1: %2 + + Resolve conflicts - OCC::Theme + TalkReplyTextField - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + + Reply to … - - <p>This release was supplied by %1</p> + + Send reply to chat message - OCC::User + TestSetUserStatusDialog - - Retry all uploads + + + 1 day - - You renamed + + + + + + Don't clear - - You deleted + + + + + + 1 hour - - You created + + + + + 30 minutes - - You changed + + + + 4 hours - - - OCC::UserModel - - Confirm Account Removal + + + + Today - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + + + + This week - - Remove connection + + Less than a minute - - Cancel + + 1 minute - - - OCC::WebEnginePage - - Invalid certificate detected + + 7 days - - The host "%1" provided an invalid certificate. Continue? + + Could not fetch predefined statuses. Make sure you are connected to the server. - - - OCC::WebFlowCredentials - - You have been logged out of %1 as user %2. Please login again + + Could not fetch status. Make sure you are connected to the server. - - Please login with the user: %1 + + Status feature is not supported. You will not be able to set your status. - - - OCC::WebFlowCredentialsDialog - - Log in + + Could not set status. Make sure you are connected to the server. - - - OCC::ownCloudGui - - Please sign in + + Emojis are not supported. Some status functionality may not work. - - Folder %1: %2 + + Could not clear status message. Make sure you are connected to the server. + + + TrayFoldersMenuButton - - There are no sync folders configured. + + Files - - Disconnected from %1 + + Open local or group folders - - Unsupported Server Version + + Open local folder - - The server on account %1 runs an old and unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + + Connected - + Disconnected - - Disconnected from some accounts - - - - - Disconnected from accounts: + + Open local folder "%1" - - Account %1: %2 + + Open group folder "%1" - - Signed out + + Open %1 in file explorer - - Account synchronization is disabled + + User group and local folders menu + + + TrayWindowAccountMenu - - - Synchronization is paused + + Current account - - Unresolved conflicts + + Resume sync for all - - Error during synchronization + + Pause sync for all - - No sync folders configured + + Add account - - Syncing %1 of %2 (%3 left) + + Settings - - Syncing %1 of %2 + + Exit - - Syncing %1 (%2 left) + + Current account avatar - - Syncing %1 + + Current account status is online - - %1 (%2, %3) + + Current account status is do not disturb - - Up to date + + Account switcher and settings menu - OwncloudAdvancedSetupPage + TrayWindowHeaderBar - - Server + + Website - - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + + Open Nextcloud in browser - - Start a &clean sync (Erases the local folder!) + + Open local or group folders - - Ask for confirmation before synchroni&zing folders larger than + + Open Nextcloud Talk in browser - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - - - - - Ask for confirmation before synchronizing e&xternal storages + + More apps - - Choose what to sync + + Open %1 in browser + + + UnifiedSearchInputContainer - - &Local Folder + + Search files, messages, events … + + + UnifiedSearchResultFetchMoreTrigger - - &Keep local data + + Load more results + + + UnifiedSearchResultItemSkeleton - - S&ync everything from server + + Search result skeleton. - OwncloudHttpCredsPage + UnifiedSearchResultListItem - - &Username + + Load more results + + + UnifiedSearchResultNothingFound - - &Password + + No results for - OwncloudOAuthCredsPage + UnifiedSearchResultSectionItem - - Please switch to your browser to proceed. + + Search results section %1 + + + UserLine - - An error occurred while connecting. Please try again. + + Switch to account - - Re-open Browser + + Account actions - - Copy link + + Set status - - - OwncloudSetupPage - - Register with a provider + + + Log out - + + Log in - - Server Address + + Remove account - OwncloudWizardResultPage + UserStatusSelector - - Your entire account is synced to the local folder + + Online status - - - QObject - - in the future + + Online - - - %n day ago - - - - + + + Away + - - - %n days ago - - - - + + + Do not disturb + - - - %n hour ago - - - - + + + Mute all notifications + - - - %n hours ago - - - - + + + Invisible + - - now + + Appear offline - - Less than a minute ago + + Status message - - - %n minute ago - - - - + + + What is your status? + - - - %n minutes ago - - - - + + + Clear status message after + - - Some time ago + + Cancel - - %1: %2 - this displays an error string (%2) for a file %1 + + Clear status message + + + + + Set status message Utility - + %L1 GB - + %L1 MB - + %L1 KB - + %L1 B + + + %L1 TB + + - + %n year(s) @@ -3815,7 +6710,7 @@ It is not advisable to use it. - + %n month(s) @@ -3823,7 +6718,7 @@ It is not advisable to use it. - + %n day(s) @@ -3831,7 +6726,7 @@ It is not advisable to use it. - + %n hour(s) @@ -3839,7 +6734,7 @@ It is not advisable to use it. - + %n minute(s) @@ -3847,7 +6742,7 @@ It is not advisable to use it. - + %n second(s) @@ -3855,46 +6750,46 @@ It is not advisable to use it. - + %1 %2 - ValidateChecksumHeader + Window - - The checksum header is malformed. + + Nextcloud desktop main dialog - - The checksum header contained an unknown checksum type '%1' + + Unified search results list - - The downloaded file does not match the checksum, it will be resumed. + + New activities main.cpp - + System Tray not available - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as 'trayer' and try again. + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - nextcloudTheme::about() + nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> @@ -3902,142 +6797,166 @@ It is not advisable to use it. progress - + + Virtual file created + + + + + Replaced by virtual file + + + + Downloaded - + Uploaded - + Server version downloaded, copied changed local file into conflict file - + + Server version downloaded, copied changed local file into case conflict conflict file + + + + Deleted - + Moved to %1 - + Ignored - + Filesystem access error - + Error - + Updated local metadata - - + + Updated local virtual files metadata + + + + + Unknown - + downloading - + uploading - + deleting - + moving - + ignoring - - + error - + updating local metadata + + + updating local virtual files metadata + + theme - + Status undefined - + Waiting to start sync - + Sync is running - + Sync Success - + Sync Success, some files were ignored. - + Sync Error - + Setup Error - + Preparing to sync - + Aborting … - + Sync is paused @@ -4045,24 +6964,54 @@ It is not advisable to use it. utility - + Could not open browser - + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - + Could not open email client - + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + + + Always available locally + + + + + Currently available locally + + + + + Some available online only + + + + + Available online only + + + + + Make always available locally + + + + + Free up local space + + diff --git a/translations/client_es.ts b/translations/client_es.ts index 0699ecbc5289c..bcaef8f24c523 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -168,6 +168,80 @@ Versión del servidor + + CrashReporter + + + Tomahawk Crash Reporter + + + + + <html><head/><body><p><br/></p></body></html> + + + + + Abort + + + + + Send this report + + + + + Don't send + + + + + You can disable sending crash reports in the configuration dialog. + + + + + + + We cannot gather useful debug information on your system. + + + + + + + + + Close + Cerrar + + + + Ready to send debug information (<a href="%1">view backtrace</a>). + + + + + Gathering debug information... + + + + + Uploaded %L1 of %L2 KB. + + + + + Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. + + + + + Failed to send crash info. + + + EditFileLocallyLoadingDialog @@ -192,6 +266,14 @@ Error + + FakeHangingReply + + + Operation canceled + + + FileDetailsPage @@ -357,6 +439,42 @@ Reabrir el navegador + + FolderWizardSelectiveSync + + + Add Folder Sync + + + + + Step 3 of 3: Selektive Synchronisation + + + + + FolderWizardSourcePage + + + Add Folder Sync + + + + + Step 1 of 3: Select local folder + + + + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + + + + + &Choose + + + FolderWizardTargetPage @@ -395,6 +513,19 @@ Carpetas + + KMessageWidget + + + &Close + + + + + Close message + + + OCC::AbstractNetworkJob @@ -2523,12 +2654,12 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::FolderWizard - + Add Folder Sync Connection Añadir conexión para el directorio de sincronización - + Add Sync Connection Añadir conexión de sincronización @@ -2546,27 +2677,27 @@ Alternatively, you can restore all deleted files by downloading them from the se Introduzca la ubicación de la carpeta local. - + Select the source folder Seleccione la carpeta de origen - + Add Folder Sync - + Step 1 of 3: Select local folder - + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - + Choose @@ -2574,77 +2705,82 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::FolderWizardRemotePath - + Create Remote Folder Crear carpeta remota - + Enter the name of the new folder to be created below "%1": Introduce el nombre de la nueva carpeta que se creará debajo de "%1": - + Folder was successfully created on %1. La carpeta ha sido creada con éxito en %1. - + Authentication failed accessing %1 Fallo de autenticación al acceder a %1 - + Failed to create the folder on %1. Please check manually. Fallo al crear la carpeta %1. Por favor, revíselo manualmente. - + Failed to list a folder. Error: %1 Fallo al listar una carpeta. Error: %1 - + Choose this to sync the entire account Elija esto para sincronizar la cuenta entera - + This folder is already being synced. Esta carpeta ya se ha sincronizado. - + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. Ya ha sincronizado <i>%1</i>, el cual es la carpeta de <i>%2</i>. - + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. Ya estás sincronizando <i>%1</i>, que es una subcarpeta de <i>%2</i>. - + Add Folder Sync - + Step 2 of 3: Directory in your %1 - + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + + + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. - + Refresh Actualizar - + Create folder Crear carpeta @@ -2652,38 +2788,46 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::FolderWizardSelectiveSync - - + + Use virtual files instead of downloading content immediately %1 Usa archivos virtuales en vez de descargar el contenido inmediatamente %1 - - + + (experimental) (experimental) - + Add Folder Sync - + Step 3 of 3: Selektive Synchronisation - + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. Los archivos virtuales no son compatibles con la carpeta raíz de la partición de Windows como carpeta local. Por favor, elija una subcarpeta válida bajo la letra de la unidad. - + Virtual files are not available for the selected folder Los archivos virtuales no están disponibles para la carpeta seleccionada + + OCC::FormatWarningsWizardPage + + + %1 + %1 + + OCC::GETFileJob @@ -5061,6 +5205,14 @@ El servidor respondió con el error: %2 No hay suficiente espacio libre en el servidor para algunas subidas. + + OCC::SyncJournalDb + + + Failed to connect database. + Fallo en la conexión a la base de datos. + + OCC::SyncStatusSummary @@ -5136,54 +5288,54 @@ El servidor respondió con el error: %2 Descargar - + Add account Agregar cuenta - + Open main dialog Abrir diálogo principal - - + + Pause sync Pausar sincronización - - + + Resume sync Continuar sincronización - + Settings Ajustes - + Help Ayuda - + Exit %1 Salir %1 - + Pause sync for all Pausar sincronización para todo - + Resume sync for all Continuar sincronización a todos - + %1: %2 %1: %2 @@ -5191,29 +5343,29 @@ El servidor respondió con el error: %2 OCC::Theme - + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 Cliente de Escritorio</p><p>Versión %1. Para más información, por favor pulsa <a href='%2'>aquí</a>.</p> - + <p><small>Using virtual files plugin: %1</small></p> <p><small>Usando el plugin de archivos virtuales: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 cliente de escritorio %2</p> - + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> <p>Versión %1. Para obtener más información, haga clic <a href='%2'> aquí </a>.</p> - + <p>This release was supplied by %1.</p> <p>Esta versión ha sido suministrada por %1.</p> @@ -5434,6 +5586,24 @@ El servidor respondió con el error: %2 %1 días + + OCC::ValidateChecksumHeader + + + The checksum header is malformed. + El encabezado de checksum está malformado. + + + + The checksum header contained an unknown checksum type "%1" + El encabezado del checksum contenía un tipo de comprobación desconocido: "%1" + + + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + El archivo descargado no coincide con la suma de comprobación (checksum), se reanudará. "%1" != "%2" + + OCC::Vfs @@ -5511,6 +5681,14 @@ El servidor respondió con el error: %2 El host "%1" ha entregado un certificado no válido. ¿Continuar? + + OCC::WebFlowCredentials + + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + + + OCC::WelcomePage @@ -5663,6 +5841,24 @@ El servidor respondió con el error: %2 %1 (%2, %3) + + OCC::sesSnackBar + + + Error + Error + + + + Warning + Aviso + + + + Success + + + OwncloudAdvancedSetupPage @@ -5881,6 +6077,11 @@ El servidor respondió con el error: %2 The directory %1 cannot be part of your sync directory. Please choose another folder. + + + Reply + Responder + ResolveConflictsDialog @@ -5924,6 +6125,32 @@ El servidor respondió con el error: %2 Cancelar + + SesErrorBox + + + Error + Error + + + + SesTrayHeader + + + Website + + + + + Open Nextcloud in browser + + + + + Open local or group folders + Abrir carpetas locales de de grupo + + ShareDelegate @@ -6098,6 +6325,107 @@ El servidor respondió con el error: %2 Enviar respuesta al mensaje de chat + + TestSetUserStatusDialog + + + + 1 day + 1 día + + + + + + + + Don't clear + No borrar + + + + + + + + 1 hour + 1 hora + + + + + + + 30 minutes + 30 minutos + + + + + + 4 hours + 4 horas + + + + + + Today + Hoy + + + + + + This week + Esta semana + + + + Less than a minute + Hace menos de un minuto + + + + 1 minute + 1 minuto + + + + 7 days + + + + + Could not fetch predefined statuses. Make sure you are connected to the server. + No se han podido recuperar los estados predefinidos. Asegúrese de que está conectado al servidor. + + + + Could not fetch status. Make sure you are connected to the server. + No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. + + + + Status feature is not supported. You will not be able to set your status. + La función de estado no es compatible. No podrás establecer tu estado. + + + + Could not set status. Make sure you are connected to the server. + No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. + + + + Emojis are not supported. Some status functionality may not work. + La función de emojis no es compatible. Es posible que algunas funciones de estado del usuario no funcionen. + + + + Could not clear status message. Make sure you are connected to the server. + No se ha podido borrar el mensaje de estado. Asegúrese de que está conectado al servidor. + + TrayFoldersMenuButton @@ -6147,25 +6475,111 @@ El servidor respondió con el error: %2 - UnifiedSearchInputContainer + TrayWindowAccountMenu - - Search files, messages, events … - Buscando archivos, mensajes, eventos … + + Current account + Cuenta actual - - - UnifiedSearchResultFetchMoreTrigger - - Load more results - Cargar más resultados + + Resume sync for all + Continuar sincronización a todos - - - UnifiedSearchResultItemSkeleton - + + Pause sync for all + Pausar sincronización para todo + + + + Add account + Agregar cuenta + + + + Settings + + + + + Exit + Salir + + + + Current account avatar + Avatar del usuario actual + + + + Current account status is online + El estado actual del usuario es en línea + + + + Current account status is do not disturb + El estado actual del usuario es no molestar + + + + Account switcher and settings menu + Cambiador de cuentas y menú de configuración + + + + TrayWindowHeaderBar + + + Website + + + + + Open Nextcloud in browser + + + + + Open local or group folders + Abrir carpetas locales de de grupo + + + + Open Nextcloud Talk in browser + Abrir Nextcloud Talk en el navegador + + + + More apps + Más aplicaciones + + + + Open %1 in browser + Abrir %1 en el navegador + + + + UnifiedSearchInputContainer + + + Search files, messages, events … + Buscando archivos, mensajes, eventos … + + + + UnifiedSearchResultFetchMoreTrigger + + + Load more results + Cargar más resultados + + + + UnifiedSearchResultItemSkeleton + + Search result skeleton. Árbol de resultados de la búsqueda @@ -6412,7 +6826,7 @@ El servidor respondió con el error: %2 nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> <p><small>Creado desde la revisión Git <a href="%1">%2</a> en %3, %4 con Qt %5, %6</small></p> @@ -6637,212 +7051,4 @@ El servidor respondió con el error: %2 Liberar espacio local - - FolderWizardSelectiveSync - - - Add Folder Sync - - - - - Step 3 of 3: Selektive Synchronisation - - - - - FolderWizardSourcePage - - - Add Folder Sync - - - - - Step 1 of 3: Select local folder - - - - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - - - - - &Choose - - - - - SesErrorBox - - - Error - Error - - - - SesTrayHeader - - - Website - - - - - Open Nextcloud in browser - - - - - Open local or group folders - - - - - TrayWindowAccountMenu - - - Current account - Cuenta actual - - - - Resume sync for all - - - - - Pause sync for all - Pausar sincronización para todo - - - - Add account - Agregar cuenta - - - - Settings - - - - - Exit - Salir - - - - Current account avatar - Avatar del usuario actual - - - - Current account status is online - El estado actual del usuario es en línea - - - - Current account status is do not disturb - El estado actual del usuario es no molestar - - - - Account switcher and settings menu - Cambiador de cuentas y menú de configuración - - - - TrayWindowHeaderBar - - - Website - - - - - Open Nextcloud in browser - - - - - Open local or group folders - - - - - Open Nextcloud Talk in browser - Abrir Nextcloud Talk en el navegador - - - - More apps - Más aplicaciones - - - - Open %1 in browser - Abrir %1 en el navegador - - - - OCC::ValidateChecksumHeader - - - The checksum header is malformed. - El encabezado de checksum está malformado. - - - - The checksum header contained an unknown checksum type "%1" - El encabezado del checksum contenía un tipo de comprobación desconocido: "%1" - - - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - El archivo descargado no coincide con la suma de comprobación (checksum), se reanudará. "%1" != "%2" - - - - OCC::SyncJournalDb - - - Failed to connect database. - Fallo en la conexión a la base de datos. - - - - OCC::WebFlowCredentials - - - <b>You have been logged out of your account %1 at %2. Please login again.</b> - - - - - OCC::FormatWarningsWizardPage - - - %1 - %1 - - - - OCC::sesSnackBar - - - Error - Error - - - - Warning - Aviso - - - - Success - - - diff --git a/translations/client_fr.ts b/translations/client_fr.ts index 7a294e352dd49..009a1d9bfbddf 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -1,6337 +1,6479 @@ - + ActivityItem - - Open %1 locally - Ouvrir %1 localement + + Open %1 locally + Ouvrir %1 localement - - In %1 - Dans %1 + + In %1 + Dans %1 - - + + ActivityItemContent - - Open file details - Ouvrir les détails du fichier + + Open file details + Ouvrir les détails du fichier - - Dismiss - Rejeter + + Dismiss + Rejeter - - + + ActivityList - - Activity list - Liste des activités + + Activity list + Liste des activités - - No activities yet - Pas encore d'activité + + No activities yet + Pas encore d'activité - - + + BasicComboBox - - Clear status message menu - Menu d'effacement du message de statut + + Clear status message menu + Menu d'effacement du message de statut - - + + CallNotificationDialog - - Talk notification caller avatar - Avatar de l'appelant de la notification Talk + + Talk notification caller avatar + Avatar de l'appelant de la notification Talk - - Answer Talk call notification - Répondre à la notification d'appel de Talk + + Answer Talk call notification + Répondre à la notification d'appel de Talk - - Decline - Décliner + + Decline + Décliner - - Decline Talk call notification - Décliner la notification d'appel de Talk + + Decline Talk call notification + Décliner la notification d'appel de Talk - - + + CloudProviderWrapper - - %1 (%2, %3) - %1 (%2, %3) + + %1 (%2, %3) + %1 (%2, %3) - - Checking for changes in "%1" - Vérification des modifications dans "%1" + + Checking for changes in "%1" + Vérification des modifications dans "%1" - - Syncing %1 of %2 (%3 left) - Synchronisation de %1 sur %2 (%3 restant) + + Syncing %1 of %2 (%3 left) + Synchronisation de %1 sur %2 (%3 restant) - - Syncing %1 of %2 - Synchronisation de %1 sur %2 + + Syncing %1 of %2 + Synchronisation de %1 sur %2 - - Syncing %1 (%2 left) - Synchronisation de %1 (%2 restant) + + Syncing %1 (%2 left) + Synchronisation de %1 (%2 restant) - - Syncing %1 - Synchronisation de %1 + + Syncing %1 + Synchronisation de %1 - - - No recently changed files - Aucun fichier modifié récemment + + + No recently changed files + Aucun fichier modifié récemment - - Sync paused - Synchronisation en pause + + Sync paused + Synchronisation en pause - - Syncing - Synchronisation en cours + + Syncing + Synchronisation en cours - - Open website - Consulter le site web + + Open website + Consulter le site web - - Recently changed - Modifié récemment + + Recently changed + Modifié récemment - - Pause synchronization - Suspendre la synchronisation + + Pause synchronization + Suspendre la synchronisation - - Help - Aide + + Help + Aide - - Settings - Paramètres + + Settings + Paramètres - - Log out - Se déconnecter + + Log out + Se déconnecter - - Quit sync client - Quitter le client de synchro + + Quit sync client + Quitter le client de synchro - - + + ConflictDelegate - - Local version - Version locale + + Local version + Version locale + + + + Server version + Version du serveur + + + + CrashReporter + + + Tomahawk Crash Reporter + + + + + <html><head/><body><p><br/></p></body></html> + + + + + Abort + + + + + Send this report + + + + + Don't send + - - Server version - Version du serveur + + You can disable sending crash reports in the configuration dialog. + - - + + + + + We cannot gather useful debug information on your system. + + + + + + + + + Close + Fermer + + + + Ready to send debug information (<a href="%1">view backtrace</a>). + + + + + Gathering debug information... + + + + + Uploaded %L1 of %L2 KB. + + + + + Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. + + + + + Failed to send crash info. + + + + EditFileLocallyLoadingDialog - - Opening file for local editing - Ouverture du fichier pour édition locale + + Opening file for local editing + Ouverture du fichier pour édition locale - - + + EmojiPicker - - No recent emojis - Pas d'émojis récents + + No recent emojis + Pas d'émojis récents - - + + ErrorBox - - Error - Erreur + + Error + Erreur - - + + + FakeHangingReply + + + Operation canceled + + + + FileDetailsPage - - Dismiss - Rejeter + + Dismiss + Rejeter - Activity - Activité + Activity + Activité - Sharing - Partage + Sharing + Partage - - + + FileDetailsWindow - - File details of %1 · %2 - Détails du fichier de %1 · %2 + + File details of %1 · %2 + Détails du fichier de %1 · %2 - - + + FileProviderEvictionDialog - - Evict materialised files - Supprimer les fichiers matérialisés + + Evict materialised files + Supprimer les fichiers matérialisés - - Materialised items - Éléments matérialisés + + Materialised items + Éléments matérialisés - - Reload - Recharger + + Reload + Recharger - - + + FileProviderFastEnumerationSettings - - Enable fast sync - Activer la sync. rapide + + Enable fast sync + Activer la sync. rapide - - Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - La synchronisation rapide va uniquement synchroniser les modifications des fichiers et des dossiers dans les dossiers qui ont été explorés. Ceci peut significativement augmenter la réactivité sur la configuration initiale des fichiers virtuelles. Cependant, cela va causer des téléchargements redondants de fichiers déplacés dans un dossier non exploré. + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + La synchronisation rapide va uniquement synchroniser les modifications des fichiers et des dossiers dans les dossiers qui ont été explorés. Ceci peut significativement augmenter la réactivité sur la configuration initiale des fichiers virtuelles. Cependant, cela va causer des téléchargements redondants de fichiers déplacés dans un dossier non exploré. - - + + FileProviderFileDelegate - - Delete - Supprimer + + Delete + Supprimer - - + + FileProviderSettings - - Virtual files settings - Paramètres des fichiers virtuels + + Virtual files settings + Paramètres des fichiers virtuels - - General settings - Paramètres généraux + + General settings + Paramètres généraux - - Enable virtual files - Activer les fichiers virtuels + + Enable virtual files + Activer les fichiers virtuels - - Advanced - Avancés + + Advanced + Avancés - - Signal file provider domain - Indiquer le domaine du fournisseur de fichiers + + Signal file provider domain + Indiquer le domaine du fournisseur de fichiers - - Create debug archive - Créer l'archive de débogage + + Create debug archive + Créer l'archive de débogage - - + + FileProviderStorageInfo - - Local storage use - Utilisation du stockage local + + Local storage use + Utilisation du stockage local - - %1 GB of %2 GB remote files synced - %1 Go sur %2 Go de fichiers distants synchronisés + + %1 GB of %2 GB remote files synced + %1 Go sur %2 Go de fichiers distants synchronisés - - Evict local copies... - Supprimer les copies locales + + Evict local copies... + Supprimer les copies locales - - + + FileProviderSyncStatus - - Syncing - Synchronisation + + Syncing + Synchronisation - - All synced! - Tout est synchronisé ! + + All synced! + Tout est synchronisé ! - - + + FileSystem - - Error removing "%1": %2 - Erreur lors de la suppression de "%1" : %2 + + Error removing "%1": %2 + Erreur lors de la suppression de "%1" : %2 - - Could not remove folder "%1" - Impossible de supprimer le dossier "%1" + + Could not remove folder "%1" + Impossible de supprimer le dossier "%1" - Could not make directories in trash - Impossible de créer des dossiers dans la corbeille + Could not make directories in trash + Impossible de créer des dossiers dans la corbeille - Could not move "%1" to "%2" - Impossible de déplacer "%1" vers "%2" + Could not move "%1" to "%2" + Impossible de déplacer "%1" vers "%2" - Moving to the trash is not implemented on this platform - Mettre à la corbeille n'est pas disponible sur cette plateforme + Moving to the trash is not implemented on this platform + Mettre à la corbeille n'est pas disponible sur cette plateforme - - + + Flow2AuthWidget - - Browser Authentication - Authentification avec le navigateur Internet + + Browser Authentication + Authentification avec le navigateur Internet - - Logo - Logo + + Logo + Logo - - Switch to your browser to connect your account - Basculez sur votre navigateur pour connecter votre compte + + Switch to your browser to connect your account + Basculez sur votre navigateur pour connecter votre compte - - An error occurred while connecting. Please try again. - Une erreur s'est produite pendant la connexion. Veuillez ré-essayer. + + An error occurred while connecting. Please try again. + Une erreur s'est produite pendant la connexion. Veuillez ré-essayer. - - Copy Link - Copier le lien + + Copy Link + Copier le lien - - Reopen Browser - Rouvrir le navigateur + + Reopen Browser + Rouvrir le navigateur - - + + FolderWizardSelectiveSync - - Add Folder Sync - Ajouter une synchronisation de dossiers + + Add Folder Sync + Ajouter une synchronisation de dossiers - - Step 3 of 3: Selektive Synchronisation - Étape 3 sur 3 : synchronisation sélective + + Step 3 of 3: Selektive Synchronisation + Étape 3 sur 3 : synchronisation sélective - - + + FolderWizardSourcePage - Pick a local folder on your computer to sync - Sélectionnez un dossier local de votre ordinateur à synchroniser + Pick a local folder on your computer to sync + Sélectionnez un dossier local de votre ordinateur à synchroniser - &Choose … - &Sélectionner … + &Choose … + &Sélectionner … - - Add Folder Sync - Ajouter une synchronisation de dossiers + + Add Folder Sync + Ajouter une synchronisation de dossiers - - Step 1 of 3: Select local folder - Étape 1 sur 3 : sélectionner un dossier local + + Step 1 of 3: Select local folder + Étape 1 sur 3 : sélectionner un dossier local - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés - - &Choose - &Choisir + + &Choose + &Choisir - - + + FolderWizardTargetPage - Select a remote destination folder - Veuillez sélectionner un dossier distant + Select a remote destination folder + Veuillez sélectionner un dossier distant - - Create folder - Créer un dossier + + Create folder + Créer un dossier - - Refresh - Rafraîchir + + Refresh + Rafraîchir - - Add Folder Sync - Ajouter une synchronisation de dossiers + + Add Folder Sync + Ajouter une synchronisation de dossiers - - Step 2 of 3: Directory in your %1 - Étape 2 sur 3 : répertoire dans votre %1 + + Step 2 of 3: Directory in your %1 + Étape 2 sur 3 : répertoire dans votre %1 - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - À présent, sélectionnez ou créez dans votre %1 un dossier cible dans lequel le contenu doit être importé et synchronisé. + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + À présent, sélectionnez ou créez dans votre %1 un dossier cible dans lequel le contenu doit être importé et synchronisé. - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. - - Folders - Dossiers + + Folders + Dossiers - - + + + KMessageWidget + + + &Close + + + + + Close message + + + + OCC::AbstractNetworkJob - - Connection timed out - Délai de connexion dépassé + + Connection timed out + Délai de connexion dépassé - - Unknown error: network reply was deleted - Erreur inconnue : La réponse du réseau a été supprimée + + Unknown error: network reply was deleted + Erreur inconnue : La réponse du réseau a été supprimée - - Server replied "%1 %2" to "%3 %4" - Le serveur a répondu "%1 %2" à "%3 %4" + + Server replied "%1 %2" to "%3 %4" + Le serveur a répondu "%1 %2" à "%3 %4" - - + + OCC::AbstractPropagateRemoteDeleteEncrypted - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". - "%1 Failed to unlock encrypted folder %2". - "%1 Impossible de déverrouiller le dossier chiffré %2". + "%1 Failed to unlock encrypted folder %2". + "%1 Impossible de déverrouiller le dossier chiffré %2". - - + + OCC::Account - - File %1 is already locked by %2. - Le fichier %1 est déjà verrouillé par %2. + + File %1 is already locked by %2. + Le fichier %1 est déjà verrouillé par %2. - - Lock operation on %1 failed with error %2 - L'opération de verrouillage de %1 a échoué avec l'erreur %2 + + Lock operation on %1 failed with error %2 + L'opération de verrouillage de %1 a échoué avec l'erreur %2 - - Unlock operation on %1 failed with error %2 - L'opération de déverrouillage de %1 a échoué avec l'erreur %2 + + Unlock operation on %1 failed with error %2 + L'opération de déverrouillage de %1 a échoué avec l'erreur %2 - - + + OCC::AccountManager - An existing configuration from a legacy desktop client was detected. + An existing configuration from a legacy desktop client was detected. Should an account import be attempted? - Un configuration existante du client d'origine a été détectée -Est-ce qu'une tentative d'importation du compte doit être lancée ? + Un configuration existante du client d'origine a été détectée +Est-ce qu'une tentative d'importation du compte doit être lancée ? - - %1 accounts were detected from a legacy desktop client. + + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - %1 comptes ont été détectés à partir d'un ancien client de bureau. + %1 comptes ont été détectés à partir d'un ancien client de bureau. Doivent-ils être importés ? - - 1 account was detected from a legacy desktop client. + + 1 account was detected from a legacy desktop client. Should the account be imported? - 1 compte a été détecté à partir d'un ancien client de bureau. + 1 compte a été détecté à partir d'un ancien client de bureau. Le compte doit-il être importé ? - - - Legacy import - Importation de l'héritage + + + Legacy import + Importation de l'héritage - - Import - Importer + + Import + Importer - - Skip - Ignorer + + Skip + Ignorer - Successfully imported account from legacy client: %1 - Importation réussie du compte de l'ancien client : %1 + Successfully imported account from legacy client: %1 + Importation réussie du compte de l'ancien client : %1 - - Could not import accounts from legacy client configuration. - Impossible d'importer des comptes à partir de l'ancienne configuration client. + + Could not import accounts from legacy client configuration. + Impossible d'importer des comptes à partir de l'ancienne configuration client. - - + + OCC::AccountSettings - - - Storage space: … - Espace de stockage : ... + + + Storage space: … + Espace de stockage : ... - - Expand Memory - Augmenter la mémoire + + Expand Memory + Augmenter la mémoire - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - Les dossiers décochés seront <b>supprimés</b> de votre système de fichiers local et ne seront plus synchronisés sur cet ordinateur + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + Les dossiers décochés seront <b>supprimés</b> de votre système de fichiers local et ne seront plus synchronisés sur cet ordinateur - - - - Cancel - Annuler + + + + Cancel + Annuler - - Apply - Appliquer + + Apply + Appliquer - - Connected with <server> as <user> - Connecté au serveur <server> avec le compte <user> + + Connected with <server> as <user> + Connecté au serveur <server> avec le compte <user> - - Synchronize all - Tout synchroniser + + Synchronize all + Tout synchroniser - - Synchronize none - Ne rien synchroniser + + Synchronize none + Ne rien synchroniser - - Apply manual changes - Appliquer les changements manuels + + Apply manual changes + Appliquer les changements manuels - - Standard file sync - Synchronisation de fichiers standards + + Standard file sync + Synchronisation de fichiers standards - - Virtual file sync - Synchronisation de fichiers virtuels + + Virtual file sync + Synchronisation de fichiers virtuels - - End-to-end Encryption with Virtual Files - Chiffrement de bout en bout avec fichiers virtuels + + End-to-end Encryption with Virtual Files + Chiffrement de bout en bout avec fichiers virtuels - - You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - Il semble que la fonctionnalité des Fichiers Virtuels soit activée sur ce dossier. Pour l'instant, il n'est pas possible de télécharger implicitement des fichiers virtuels qui sont chiffrés de bout en bout. Pour bénéficier d'une expérience optimale avec les fichiers virtuels et le chiffrement de bout en bout, assurez-vous que le dossier chiffré soit marqué par l'option "Toujours rendre disponible localement". + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". + Il semble que la fonctionnalité des Fichiers Virtuels soit activée sur ce dossier. Pour l'instant, il n'est pas possible de télécharger implicitement des fichiers virtuels qui sont chiffrés de bout en bout. Pour bénéficier d'une expérience optimale avec les fichiers virtuels et le chiffrement de bout en bout, assurez-vous que le dossier chiffré soit marqué par l'option "Toujours rendre disponible localement". - - - Do not encrypt folder - Ne pas chiffrer le dossier + + + Do not encrypt folder + Ne pas chiffrer le dossier - - - Encrypt folder - Chiffrer le dossier + + + Encrypt folder + Chiffrer le dossier - - End-to-end Encryption - Chiffrement de bout en bout + + End-to-end Encryption + Chiffrement de bout en bout - - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - Cela va chiffrer votre dossier et tous les fichiers qu'il contient. Ces fichiers ne seront plus accessibles sans votre clé de chiffrement mnémonique. -<b>Ce processus n'est pas réversible. Êtes-vous sûr de vouloir le faire ?</b> + Cela va chiffrer votre dossier et tous les fichiers qu'il contient. Ces fichiers ne seront plus accessibles sans votre clé de chiffrement mnémonique. +<b>Ce processus n'est pas réversible. Êtes-vous sûr de vouloir le faire ?</b> - - No account configured. - Aucun compte configuré. + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> + + + + + No account configured. + Aucun compte configuré. - - Disable encryption - Désactiver le chiffrement + + Disable encryption + Désactiver le chiffrement - - Display mnemonic - Afficher la phrase secrète + + Display mnemonic + Afficher la phrase secrète - - End-to-end encryption has been enabled for this account - Le chiffrement de bout en bout a été activé sur ce compte + + End-to-end encryption has been enabled for this account + Le chiffrement de bout en bout a été activé sur ce compte - - Warning - Attention + + Warning + Attention - - Please wait for the folder to sync before trying to encrypt it. - Merci d'attendre que le dossier soit synchronisé avant d'essayer de le chiffrer. + + Please wait for the folder to sync before trying to encrypt it. + Merci d'attendre que le dossier soit synchronisé avant d'essayer de le chiffrer. - - The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - Le dossier a un défaut de synchronisation mineur. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully + Le dossier a un défaut de synchronisation mineur. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. - - The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - Le dossier a une erreur de synchronisation. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully + Le dossier a une erreur de synchronisation. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. - - End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. Would you like to set up end-to-end encryption? - Le chiffrement de bout en bout n'est pas configuré sur cet appareil. Une fois qu'il sera configuré, vous serez en mesure de chiffrer ce dossier. + Le chiffrement de bout en bout n'est pas configuré sur cet appareil. Une fois qu'il sera configuré, vous serez en mesure de chiffrer ce dossier. Souhaitez-vous configurer le chiffrement de bout en bout ? - - You cannot encrypt a folder with contents, please remove the files. + + You cannot encrypt a folder with contents, please remove the files. Wait for the new sync, then encrypt it. - Vous ne pouvez pas chiffrer un dossier avec son contenu, veuillez enlever les fichiers. Attendez une nouvelle synchronisation puis chiffrez le dossier. + Vous ne pouvez pas chiffrer un dossier avec son contenu, veuillez enlever les fichiers. Attendez une nouvelle synchronisation puis chiffrez le dossier. - - Encryption failed - Le chiffrement a échoué + + Encryption failed + Le chiffrement a échoué - - Could not encrypt folder because the folder does not exist anymore - Impossible de chiffrer le dossier car il n'existe plus + + Could not encrypt folder because the folder does not exist anymore + Impossible de chiffrer le dossier car il n'existe plus - - - Open folder - Ouvrir le dossier + + + Open folder + Ouvrir le dossier - - Encrypt - Chiffrer + + Encrypt + Chiffrer - - - Edit Ignored Files - Modifier les fichiers ignorés + + + Edit Ignored Files + Modifier les fichiers ignorés - - - Create new folder - Créer un nouveau dossier + + + Create new folder + Créer un nouveau dossier - - - Availability - Disponibilités + + + Availability + Disponibilités - - Choose what to sync - Sélectionner le contenu à synchroniser + + Choose what to sync + Sélectionner le contenu à synchroniser - - Force sync now - Forcer la synchronisation maintenant + + Force sync now + Forcer la synchronisation maintenant - - Restart sync - Redémarrer la synchronisation + + Restart sync + Redémarrer la synchronisation - - Resume sync - Reprendre la synchronisation + + Resume sync + Reprendre la synchronisation - - Pause sync - Mettre en pause la synchronisation + + Pause sync + Mettre en pause la synchronisation - - Remove folder sync connection - Retirer la connexion de synchronisation de dossier + + Remove folder sync connection + Retirer la connexion de synchronisation de dossier - - Disable virtual file support … - Désactiver la prise en charge du fichier virtuel… + + Disable virtual file support … + Désactiver la prise en charge du fichier virtuel… - - Enable virtual file support %1 … - Activer la prise en charge du fichier virtuel %1 … + + Enable virtual file support %1 … + Activer la prise en charge du fichier virtuel %1 … - - (experimental) - (expérimental) + + (experimental) + (expérimental) - - Folder creation failed - Échec de la création du dossier + + Folder creation failed + Échec de la création du dossier - - <p>Could not create local folder <i>%1</i>.</p> - <p>Impossible de créer le dossier local <i>%1</i>.</p> + + <p>Could not create local folder <i>%1</i>.</p> + <p>Impossible de créer le dossier local <i>%1</i>.</p> - - Confirm Folder Sync Connection Removal - Confirmer le retrait de la synchronisation de dossier + + Confirm Folder Sync Connection Removal + Confirmer le retrait de la synchronisation de dossier - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Voulez-vous vraiment arrêter de synchroniser le dossier <i>%1</i> ?</p><p><b>Note :</b> Aucun fichier ne sera supprimé.</p> + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Voulez-vous vraiment arrêter de synchroniser le dossier <i>%1</i> ?</p><p><b>Note :</b> Aucun fichier ne sera supprimé.</p> - - Remove Folder Sync Connection - Retirer la synchronisation de ce dossier + + Remove Folder Sync Connection + Retirer la synchronisation de ce dossier - - Disable virtual file support? - Désactiver le support des fichiers virtuels ? + + Disable virtual file support? + Désactiver le support des fichiers virtuels ? - - This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. The only advantage of disabling virtual file support is that the selective sync feature will become available again. This action will abort any currently running synchronization. - Cette action désactivera la prise en charge du fichier virtuel. Par conséquent, les contenus des dossiers habituellement marqués comme "disponibles en ligne seulement" seront téléchargés. + Cette action désactivera la prise en charge du fichier virtuel. Par conséquent, les contenus des dossiers habituellement marqués comme "disponibles en ligne seulement" seront téléchargés. Le seul avantage de désactiver la prise en charge du fichier virtuel est que les fonctionnalités de synchronisation sélective seront de nouveau disponibles. -Cette action entraînera l'interruption de toute synchronisation en cours. +Cette action entraînera l'interruption de toute synchronisation en cours. - - Disable support - Désactiver le support + + Disable support + Désactiver le support - - End-to-end encryption mnemonic - Phrase secrète du chiffrement de bout en bout + + End-to-end encryption mnemonic + Phrase secrète du chiffrement de bout en bout - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - Pour protéger votre identité cryptographique, nous la chiffrons avec une phrase secrète de 12 mots du dictionnaire. Veuillez la noter et la garder en sécurité. Elle sera nécessaire pour ajouter d’autres appareils à votre compte (comme votre smartphone ou votre ordinateur portable). + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + Pour protéger votre identité cryptographique, nous la chiffrons avec une phrase secrète de 12 mots du dictionnaire. Veuillez la noter et la garder en sécurité. Elle sera nécessaire pour ajouter d’autres appareils à votre compte (comme votre smartphone ou votre ordinateur portable). - - Disable end-to-end encryption - Désactiver le chiffrement de bout en bout + + Disable end-to-end encryption + Désactiver le chiffrement de bout en bout - - Disable end-to-end encryption for %1? - Désactiver le chiffrement de bout en bout pour %1 ? + + Disable end-to-end encryption for %1? + Désactiver le chiffrement de bout en bout pour %1 ? - - Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - Le retrait du chiffrage de bout en bout supprimera localement les fichiers chiffrés synchronisés.<br>Les fichiers chiffrés demeureront sur le serveur. + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. + Le retrait du chiffrage de bout en bout supprimera localement les fichiers chiffrés synchronisés.<br>Les fichiers chiffrés demeureront sur le serveur. - - Sync Running - Synchronisation en cours + + Sync Running + Synchronisation en cours - - The syncing operation is running.<br/>Do you want to terminate it? - La synchronisation est en cours.<br/>Voulez-vous l'arrêter ? + + The syncing operation is running.<br/>Do you want to terminate it? + La synchronisation est en cours.<br/>Voulez-vous l'arrêter ? - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - %1 (%3%) utilisés sur %2. Certains dossiers, montés depuis le réseau ou partagés, peuvent avoir des limites différentes. + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + %1 (%3%) utilisés sur %2. Certains dossiers, montés depuis le réseau ou partagés, peuvent avoir des limites différentes. - - %1 of %2 in use - %1 utilisés sur %2 + + %1 of %2 in use + %1 utilisés sur %2 - - Storage space %1% occupied - Espace de stockage %1% occupé + + Storage space %1% occupied + Espace de stockage %1% occupé - - Currently there is no storage usage information available. - Actuellement aucune information d'utilisation de stockage n'est disponible. + + Currently there is no storage usage information available. + Actuellement aucune information d'utilisation de stockage n'est disponible. - - %1 in use - %1 utilisé(s) + + %1 in use + %1 utilisé(s) - - %1 as %2 - %1 avec le compte %2 + + %1 as %2 + %1 avec le compte %2 - - The server version %1 is unsupported! Proceed at your own risk. - La version %1 du serveur n'est pas maintenue ! + + The server version %1 is unsupported! Proceed at your own risk. + La version %1 du serveur n'est pas maintenue ! Vous prenez vos propres risques. - - Connected to %1. - Connecté au serveur %1. + + Connected to %1. + Connecté au serveur %1. - - Server %1 is temporarily unavailable. - Le serveur %1 est temporairement indisponible. + + Server %1 is temporarily unavailable. + Le serveur %1 est temporairement indisponible. - - Server %1 is currently in maintenance mode. - Le serveur %1 est en cours de maintenance. + + Server %1 is currently in maintenance mode. + Le serveur %1 est en cours de maintenance. - - Server %1 is currently being redirected, or your connection is behind a captive portal. - Le serveur %1 est actuellement redirigé ou votre connexion est derrière un portail captif. + + Server %1 is currently being redirected, or your connection is behind a captive portal. + Le serveur %1 est actuellement redirigé ou votre connexion est derrière un portail captif. - - Signed out from %1. - Session sur %1 fermée. + + Signed out from %1. + Session sur %1 fermée. - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - En attente d'autorisation du navigateur. <a href='%1'>Cliquer ici</a> pour recharger le navigateur. + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + En attente d'autorisation du navigateur. <a href='%1'>Cliquer ici</a> pour recharger le navigateur. - - Connecting to %1 … - Connexion à %1 ... + + Connecting to %1 … + Connexion à %1 ... - No connection to %1 at %2. - Aucune connexion au serveur %1 à l'adresse %2. + No connection to %1 at %2. + Aucune connexion au serveur %1 à l'adresse %2. - - Unable to connect to %1. - Impossible de se connecter à %1. + + Unable to connect to %1. + Impossible de se connecter à %1. - - Server configuration error: %1 at %2. - Erreur de configuration serveur : %1 à %2. + + Server configuration error: %1 at %2. + Erreur de configuration serveur : %1 à %2. - - No %1 connection configured. - Aucune connexion à %1 configurée + + No %1 connection configured. + Aucune connexion à %1 configurée - - https://wl.hidrive.com/easy/0057 - https://wl.hidrive.com/easy/0057 + + https://wl.hidrive.com/easy/0057 + https://wl.hidrive.com/easy/0057 - - There are folders that were not synchronized because they are too big: - Certains dossiers n'ont pas été synchronisés parce qu'ils sont de taille trop importante : + + There are folders that were not synchronized because they are too big: + Certains dossiers n'ont pas été synchronisés parce qu'ils sont de taille trop importante : - - There are folders that were not synchronized because they are external storages: - Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe : + + There are folders that were not synchronized because they are external storages: + Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe : - - There are folders that were not synchronized because they are too big or external storages: - Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe ou qu'ils sont de taille trop importante : + + There are folders that were not synchronized because they are too big or external storages: + Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe ou qu'ils sont de taille trop importante : - - There are folders that have grown in size beyond %1MB: %2 - Il y a des dossiers qui ont augmenté de taille au-delà de %1MB: %2 + + There are folders that have grown in size beyond %1MB: %2 + Il y a des dossiers qui ont augmenté de taille au-delà de %1MB: %2 - - End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - Le chiffrement de bout en bout a été activé sur ce compte avec un autre appareil.<br>Il peut être activé sur cet appareil en entrant votre phrase secrète.<br>Cela permettra la synchronisation des dossiers chiffrés existants. + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. + Le chiffrement de bout en bout a été activé sur ce compte avec un autre appareil.<br>Il peut être activé sur cet appareil en entrant votre phrase secrète.<br>Cela permettra la synchronisation des dossiers chiffrés existants. - - This account supports end-to-end encryption - Ce compte prend en charge le chiffrement de bout en bout. + + This account supports end-to-end encryption + Ce compte prend en charge le chiffrement de bout en bout. - - Set up encryption - Configurer le chiffrement + + Set up encryption + Configurer le chiffrement - - + + OCC::AccountSetupFromCommandLineJob - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - La requête authentifiée au serveur a été redirigée vers « %1 ». L'URL est mauvaise, le serveur est mal configuré. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + La requête authentifiée au serveur a été redirigée vers « %1 ». L'URL est mauvaise, le serveur est mal configuré. - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Accès refusé par le serveur. Pour vérifier que vous disposez d'un accès approprié, <a href="%1">cliquez ici</a> pour accéder au service avec votre navigateur Web. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Accès refusé par le serveur. Pour vérifier que vous disposez d'un accès approprié, <a href="%1">cliquez ici</a> pour accéder au service avec votre navigateur Web. - - There was an invalid response to an authenticated WebDAV request - Réponse invalide reçue suite à une requête WebDav authentifiée. + + There was an invalid response to an authenticated WebDAV request + Réponse invalide reçue suite à une requête WebDav authentifiée. - - + + OCC::AccountState - - Signed out - Session fermée + + Signed out + Session fermée - - Disconnected - Déconnecté + + Disconnected + Déconnecté - - Connected - Connecté + + Connected + Connecté - - Service unavailable - Service indisponible + + Service unavailable + Service indisponible - - Maintenance mode - mode maintenance + + Maintenance mode + mode maintenance - - Redirect detected - Redirection détectée + + Redirect detected + Redirection détectée - - Network error - Erreur réseau + + Network error + Erreur réseau - - Configuration error - Erreur de configuration + + Configuration error + Erreur de configuration - - Asking Credentials - informations d'identification demandées + + Asking Credentials + informations d'identification demandées - - Unknown account state - État du compte inconnu + + Unknown account state + État du compte inconnu - - + + OCC::ActivityListModel - - For more activities please open the Activity app. - Pour plus d'activités veuillez lancer l'application Activité. + + For more activities please open the Activity app. + Pour plus d'activités veuillez lancer l'application Activité. - - Fetching activities … - Récupération des activités... + + Fetching activities … + Récupération des activités... - - Network error occurred: client will retry syncing. - Une erreur de réseau est survenue : le client va réessayer la synchronisation. + + Network error occurred: client will retry syncing. + Une erreur de réseau est survenue : le client va réessayer la synchronisation. - - Files from the ignore list as well as symbolic links are not synced. - Les fichiers présents dans la liste d'exclusion ainsi que les liens symboliques ne sont pas synchronisés. + + Files from the ignore list as well as symbolic links are not synced. + Les fichiers présents dans la liste d'exclusion ainsi que les liens symboliques ne sont pas synchronisés. - - + + OCC::AddCertificateDialog - - SSL client certificate authentication - Authentification par certificat SSL client + + SSL client certificate authentication + Authentification par certificat SSL client - - This server probably requires a SSL client certificate. - Ce serveur requiert probablement un certificat SSL client. + + This server probably requires a SSL client certificate. + Ce serveur requiert probablement un certificat SSL client. - - Certificate & Key (pkcs12): - Certificat & clé (pkcs12) : + + Certificate & Key (pkcs12): + Certificat & clé (pkcs12) : - - Browse … - Parcourir … + + Browse … + Parcourir … - - Certificate password: - Mot de passe du certificat : + + Certificate password: + Mot de passe du certificat : - - An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - Un paquet pkcs12 chiffré est vivement recommandé vu qu'une copie sera stockée dans le fichier de configuration. + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. + Un paquet pkcs12 chiffré est vivement recommandé vu qu'une copie sera stockée dans le fichier de configuration. - - Select a certificate - Sélectionner un certificat + + Select a certificate + Sélectionner un certificat - - Certificate files (*.p12 *.pfx) - Fichiers de certificats (*.p12 *.pfx) + + Certificate files (*.p12 *.pfx) + Fichiers de certificats (*.p12 *.pfx) - - + + OCC::Application - - Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - Des paramètres ont été configurés dans des versions %1 de ce client et utilisent des fonctionnalités non disponibles dans la version actuelle. <br><br>Continuer impliquera que <b>ces paramètres seront %2</b>.<br><br> Le fichier de configuration actuel a été sauvegardé dans <i>%3</i>. + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. + Des paramètres ont été configurés dans des versions %1 de ce client et utilisent des fonctionnalités non disponibles dans la version actuelle. <br><br>Continuer impliquera que <b>ces paramètres seront %2</b>.<br><br> Le fichier de configuration actuel a été sauvegardé dans <i>%3</i>. - - newer - newer software version - ultérieures + + newer + newer software version + ultérieures - - older - older software version - antérieures + + older + older software version + antérieures - - ignoring - ignorés + + ignoring + ignorés - - deleting - supprimés + + deleting + supprimés - - Quit - Quitter + + Quit + Quitter - - Continue - Continuer + + Continue + Continuer - - %1 accounts - number of accounts imported - %1 comptes + + %1 accounts + number of accounts imported + %1 comptes - - 1 account - 1 compte + + 1 account + 1 compte - - %1 folders - number of folders imported - %1 dossiers + + %1 folders + number of folders imported + %1 dossiers - - 1 folder - 1 dossier + + 1 folder + 1 dossier - - Legacy import - Importation héritée + + Legacy import + Importation héritée - - Imported %1 and %2 from a legacy desktop client. + + Imported %1 and %2 from a legacy desktop client. %3 - number of accounts and folders imported. list of users. - Import de %1 et %2 à partir d'un ancien client de bureau. + number of accounts and folders imported. list of users. + Import de %1 et %2 à partir d'un ancien client de bureau. %3 - - Error accessing the configuration file - Erreur lors de l'accès au fichier de configuration + + Error accessing the configuration file + Erreur lors de l'accès au fichier de configuration - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - Une erreur est survenue lors de l'accès au fichier de configuration à %1. Merci de vérifier que le fichier est accessible du compte système. + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + Une erreur est survenue lors de l'accès au fichier de configuration à %1. Merci de vérifier que le fichier est accessible du compte système. - - Quit %1 - Quitter %1 + + Quit %1 + Quitter %1 - - + + OCC::AuthenticationDialog - - Authentication Required - Authentification requise + + Authentication Required + Authentification requise - - Enter username and password for "%1" at %2. - Saisir le nom d’utilisateur et le mot de passe pour « %1 » sur %2. + + Enter username and password for "%1" at %2. + Saisir le nom d’utilisateur et le mot de passe pour « %1 » sur %2. - - &Username: - &Username: + + &Username: + &Username: - - &Password: - &Password: + + &Password: + &Password: - - + + OCC::BasePropagateRemoteDeleteEncrypted - - "%1 Failed to unlock encrypted folder %2". - « %1 Impossible de déverrouiller le dossier chiffré %2 ». + + "%1 Failed to unlock encrypted folder %2". + « %1 Impossible de déverrouiller le dossier chiffré %2 ». - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est « %1 %2 ». + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est « %1 %2 ». - - + + OCC::BulkPropagatorJob - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Le fichier %1 ne peut être téléversé parce qu'un autre fichier avec le même nom hormis la casse existe + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Le fichier %1 ne peut être téléversé parce qu'un autre fichier avec le même nom hormis la casse existe - - File %1 has invalid modified time. Do not upload to the server. - Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. + + File %1 has invalid modified time. Do not upload to the server. + Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. - - File Removed (start upload) %1 - Fichier supprimé (démarrer l'envoi) %1 + + File Removed (start upload) %1 + Fichier supprimé (démarrer l'envoi) %1 - - File %1 has invalid modification time. Do not upload to the server. - Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. + + File %1 has invalid modification time. Do not upload to the server. + Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. - - Local file changed during syncing. It will be resumed. - Fichier local modifié pendant la synchronisation. La synchronisation sera reprise. + + Local file changed during syncing. It will be resumed. + Fichier local modifié pendant la synchronisation. La synchronisation sera reprise. - - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. + + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. - - Network error: %1 - Erreur réseau : %1 + + Network error: %1 + Erreur réseau : %1 - - Error updating metadata: %1 - Erreur à la mise à jour des méta-données : %1 + + Error updating metadata: %1 + Erreur à la mise à jour des méta-données : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - The local file was removed during sync. - Le fichier local a été supprimé pendant la synchronisation. + + The local file was removed during sync. + Le fichier local a été supprimé pendant la synchronisation. - - Restoration failed: %1 - Échec de la restauration : %1 + + Restoration failed: %1 + Échec de la restauration : %1 - - + + OCC::CaseClashConflictSolver - - Cannot rename file because a file with the same name already exists on the server. Please pick another name. - Impossible de renommer le fichier parce qu'un fichier portant le même nom existe déjà sur le serveur. Veuillez choisir un autre nom. + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + Impossible de renommer le fichier parce qu'un fichier portant le même nom existe déjà sur le serveur. Veuillez choisir un autre nom. - - Could not rename file. Please make sure you are connected to the server. - Impossible de renommer le fichier. Assurez-vous de bien être connecté au serveur. + + Could not rename file. Please make sure you are connected to the server. + Impossible de renommer le fichier. Assurez-vous de bien être connecté au serveur. - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Vous n'avez pas les permissions de renommer ce fichier. Veuillez demander à son auteur de le renommer. + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Vous n'avez pas les permissions de renommer ce fichier. Veuillez demander à son auteur de le renommer. - - Failed to fetch permissions with error %1 - Échec de récupération de permissions avec l'erreur %1 + + Failed to fetch permissions with error %1 + Échec de récupération de permissions avec l'erreur %1 - - Filename contains leading and trailing spaces. - Le nom de fichier contient des espaces de début et de fin. + + Filename contains leading and trailing spaces. + Le nom de fichier contient des espaces de début et de fin. - - Filename contains leading spaces. - Le nom de fichier contient des espaces de début. + + Filename contains leading spaces. + Le nom de fichier contient des espaces de début. - - Filename contains trailing spaces. - Le nom de fichier contient des espaces de fin. + + Filename contains trailing spaces. + Le nom de fichier contient des espaces de fin. - - + + OCC::CaseClashFilenameDialog - - Case Clash Conflict - Case Clash Conflict + + Case Clash Conflict + Case Clash Conflict - - The file could not be synced because it generates a case clash conflict with an existing file on this system. - Le fichier n'a pas pu être synchronisé car il génère un conflit de cas avec un fichier existant sur ce système. + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + Le fichier n'a pas pu être synchronisé car il génère un conflit de cas avec un fichier existant sur ce système. - - Error - Erreur + + Error + Erreur - - Existing file - Dossier existant + + Existing file + Dossier existant - - file A - fichier A + + file A + fichier A - - - today - aujourd'hui + + + today + aujourd'hui - - - 0 byte - 0 octets + + + 0 byte + 0 octets - - - Open existing file - Ouvrir un fichier existant + + + Open existing file + Ouvrir un fichier existant - - Case clashing file - Fichier avec conflit de casse + + Case clashing file + Fichier avec conflit de casse - - file B - fichier B + + file B + fichier B - - - Open clashing file - Ouvrir le fichier conflictuel + + + Open clashing file + Ouvrir le fichier conflictuel - - Please enter a new name for the clashing file: - Veuillez saisir un nouveau nom pour le fichier conflictuel : + + Please enter a new name for the clashing file: + Veuillez saisir un nouveau nom pour le fichier conflictuel : - - New filename - Nouveau nom de fichier + + New filename + Nouveau nom de fichier - - Rename file - Renomer le fichier + + Rename file + Renomer le fichier - - The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - Le fichier "%1" n'a pas pu être synchronisé à cause d'un conflit de casse avec un fichier existant dans ce système. + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + Le fichier "%1" n'a pas pu être synchronisé à cause d'un conflit de casse avec un fichier existant dans ce système. - - %1 does not support equal file names with only letter casing differences. - %1 ne supporte pas les noms de fichiers identiques avec seulement des différences de casse de caractère. + + %1 does not support equal file names with only letter casing differences. + %1 ne supporte pas les noms de fichiers identiques avec seulement des différences de casse de caractère. - - Filename contains leading and trailing spaces. - Le nom de fichier contient des espaces de début et de fin. + + Filename contains leading and trailing spaces. + Le nom de fichier contient des espaces de début et de fin. - - Filename contains leading spaces. - Le nom de fichier contient des espaces de début. + + Filename contains leading spaces. + Le nom de fichier contient des espaces de début. - - Filename contains trailing spaces. - Le nom de fichier contient des espaces de fin. + + Filename contains trailing spaces. + Le nom de fichier contient des espaces de fin. - - Use invalid name - Nom invalide + + Use invalid name + Nom invalide - - Filename contains illegal characters: %1 - Le nom du fichier contient des caractères illégaux : %1 + + Filename contains illegal characters: %1 + Le nom du fichier contient des caractères illégaux : %1 - - + + OCC::CleanupPollsJob - - Error writing metadata to the database - Erreur à l'écriture des métadonnées dans la base de données + + Error writing metadata to the database + Erreur à l'écriture des métadonnées dans la base de données - - + + OCC::ClientSideEncryption - - Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - Veuillez entrer votre phrase de passe de chiffrement de bout en bout :<br><br>Nom d'utilisateur : %2<br>Compte : %3<br> + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + Veuillez entrer votre phrase de passe de chiffrement de bout en bout :<br><br>Nom d'utilisateur : %2<br>Compte : %3<br> - - Enter E2E passphrase - Entrez la phrase secrète E2E + + Enter E2E passphrase + Entrez la phrase secrète E2E - - + + OCC::ConflictDialog - - Sync Conflict - Conflit de synchronisation + + Sync Conflict + Conflit de synchronisation - - - Conflicting versions of %1. - Versions en conflit de %1. + + + Conflicting versions of %1. + Versions en conflit de %1. - - Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. - Quelle version du fichier souhaitez-vous garder ?<br/>Si vous sélectionnez les deux versions, le fichier local aura un numéro ajouté à son nom. + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + Quelle version du fichier souhaitez-vous garder ?<br/>Si vous sélectionnez les deux versions, le fichier local aura un numéro ajouté à son nom. - - Local version - Version locale + + Local version + Version locale - - - Click to open the file - Cliquez pour ouvrir le fichier + + + Click to open the file + Cliquez pour ouvrir le fichier - - - today - aujourd'hui + + + today + aujourd'hui - - - 0 byte - 0 octet + + + 0 byte + 0 octet - - <a href="%1">Open local version</a> - <a href="%1">Ouvrir la version locale</a> + + <a href="%1">Open local version</a> + <a href="%1">Ouvrir la version locale</a> - - Server version - Version du serveur + + Server version + Version du serveur - - <a href="%1">Open server version</a> - <a href="%1">Ouvrir la version serveur</a> + + <a href="%1">Open server version</a> + <a href="%1">Ouvrir la version serveur</a> - - - Keep selected version - Conserver la version sélectionnée + + + Keep selected version + Conserver la version sélectionnée - - Open local version - Ouvrir la version locale + + Open local version + Ouvrir la version locale - - Open server version - Ouvrir la version serveur + + Open server version + Ouvrir la version serveur - - Keep both versions - Conserver les deux versions + + Keep both versions + Conserver les deux versions - - Keep local version - Conserver la version locale + + Keep local version + Conserver la version locale - - Keep server version - Conserver la version serveur + + Keep server version + Conserver la version serveur - - + + OCC::ConflictSolver - - Do you want to delete the directory <i>%1</i> and all its contents permanently? - Voulez-vous supprimer le dossier <i>%1</i> et tout son contenu définitivement ? + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + Voulez-vous supprimer le dossier <i>%1</i> et tout son contenu définitivement ? - - Do you want to delete the file <i>%1</i> permanently? - Voulez-vous supprimer le fichier <i>%1</i> définitivement ? + + Do you want to delete the file <i>%1</i> permanently? + Voulez-vous supprimer le fichier <i>%1</i> définitivement ? - - Confirm deletion - Confirmer la suppression + + Confirm deletion + Confirmer la suppression - - - Error - Erreur + + + Error + Erreur - - - Moving file failed: + + + Moving file failed: %1 - Déplacement du fichier échoué + Déplacement du fichier échoué %1 - - + + OCC::ConnectionValidator - - No Nextcloud account configured - Aucun compte Nextcloud n'est paramétré + + No Nextcloud account configured + Aucun compte Nextcloud n'est paramétré - - Authentication error: Either username or password are wrong. - Erreur d'authentification : nom d’utilisateur et/ou mot de passe incorrect(s). + + Authentication error: Either username or password are wrong. + Erreur d'authentification : nom d’utilisateur et/ou mot de passe incorrect(s). - - Timeout - Délai d'attente + + Timeout + Délai d'attente - - The provided credentials are not correct - Les informations d'identification fournies ne sont pas correctes + + The provided credentials are not correct + Les informations d'identification fournies ne sont pas correctes - - The configured server for this client is too old - Le serveur configuré pour ce client est trop vieux + + The configured server for this client is too old + Le serveur configuré pour ce client est trop vieux - - Please update to the latest server and restart the client. - Veuillez mettre à jour le serveur vers la dernière version et redémarrer le client. + + Please update to the latest server and restart the client. + Veuillez mettre à jour le serveur vers la dernière version et redémarrer le client. - - Connection issue - Problème de connexion + + Connection issue + Problème de connexion - - + + OCC::DiscoveryPhase - - Error while canceling deletion of a file - Erreur lors de l'annulation de la suppression d'un fichier + + Error while canceling deletion of a file + Erreur lors de l'annulation de la suppression d'un fichier - - Error while canceling deletion of %1 - Erreur lors de l'annulation de la suppression de %1 + + Error while canceling deletion of %1 + Erreur lors de l'annulation de la suppression de %1 - - + + OCC::DiscoverySingleDirectoryJob - - - Server error: PROPFIND reply is not XML formatted! - Erreur du serveur : La réponse PROPFIND n'est pas au format XML ! + + + Server error: PROPFIND reply is not XML formatted! + Erreur du serveur : La réponse PROPFIND n'est pas au format XML ! - - - Encrypted metadata setup error! - Erreur de configuration des métadonnées chiffrées ! + + + Encrypted metadata setup error! + Erreur de configuration des métadonnées chiffrées ! - - + + + Encrypted metadata setup error: initial signature from server is empty. + + + + OCC::DiscoverySingleLocalDirectoryJob - - Error while opening directory %1 - Erreur à l’ouverture du dossier %1 + + Error while opening directory %1 + Erreur à l’ouverture du dossier %1 - - Directory not accessible on client, permission denied - Dossier non accessible au client, permission refusée + + Directory not accessible on client, permission denied + Dossier non accessible au client, permission refusée - - Directory not found: %1 - Dossier non trouvé : %1 + + Directory not found: %1 + Dossier non trouvé : %1 - - Filename encoding is not valid - L’encodage du nom de fichier n’est pas valide + + Filename encoding is not valid + L’encodage du nom de fichier n’est pas valide - - Error while reading directory %1 - Erreur de lecture du dossier %1 + + Error while reading directory %1 + Erreur de lecture du dossier %1 - - + + OCC::EditLocallyJob - - Invalid token received. - Jeton invalide reçu. + + Invalid token received. + Jeton invalide reçu. - - - - - - - Please try again. - Merci de réessayer. + + + + + + + Please try again. + Merci de réessayer. - - Invalid file path was provided. - Un chemin d'accès au fichier invalide a été fourni. + + Invalid file path was provided. + Un chemin d'accès au fichier invalide a été fourni. - - Could not find an account for local editing. - Impossible de trouver un compte pour l'édition locale. + + Could not find an account for local editing. + Impossible de trouver un compte pour l'édition locale. - - - - - - - - - Could not start editing locally. - Impossible de démarrer l'édition localement. + + + + + + + + + Could not start editing locally. + Impossible de démarrer l'édition localement. - - An error occurred trying to verify the request to edit locally. - Une erreur est survenue pendant la vérification de la requête d'édition locale. + + An error occurred trying to verify the request to edit locally. + Une erreur est survenue pendant la vérification de la requête d'édition locale. - - - Could not validate the request to open a file from server. - Impossible de valider la requête pour ouvrir un fichier du serveur. + + + Could not validate the request to open a file from server. + Impossible de valider la requête pour ouvrir un fichier du serveur. - - - Could not find a file for local editing. Make sure its path is valid and it is synced locally. - Impossible de trouver le fichier pour l'édition locale. Assurez-vous que le chemin est valide et qu'il est synchronisé localement. + + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + Impossible de trouver le fichier pour l'édition locale. Assurez-vous que le chemin est valide et qu'il est synchronisé localement. - - - - - Could not find a file for local editing. Make sure it is not excluded via selective sync. - Impossible de trouver le fichier pour l'édition locale. Assurez-vous qu'il n'est pas exclus par un filtre de synchronisation. + + + + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + Impossible de trouver le fichier pour l'édition locale. Assurez-vous qu'il n'est pas exclus par un filtre de synchronisation. - - - - An error occurred during data retrieval. - Une erreur est survenue pendant le rapatriement des données. + + + + An error occurred during data retrieval. + Une erreur est survenue pendant le rapatriement des données. - - - An error occurred trying to synchronise the file to edit locally. - Une erreur s'est produite lors de la synchronisation du fichier à éditer localement. + + + An error occurred trying to synchronise the file to edit locally. + Une erreur s'est produite lors de la synchronisation du fichier à éditer localement. - - An error occurred during setup. - Une erreur est survenue pendant la configuration. + + An error occurred during setup. + Une erreur est survenue pendant la configuration. - - Server error: PROPFIND reply is not XML formatted! - Erreur de serveur : La réponse de PROPFIND n'est pas formatée en XML ! + + Server error: PROPFIND reply is not XML formatted! + Erreur de serveur : La réponse de PROPFIND n'est pas formatée en XML ! - - Could not find a remote file info for local editing. Make sure its path is valid. - Impossible de trouver une info fichier distante pour l'édition locale. Assurez-vous que son chemin est valide. + + Could not find a remote file info for local editing. Make sure its path is valid. + Impossible de trouver une info fichier distante pour l'édition locale. Assurez-vous que son chemin est valide. - - Invalid local file path. - Chemin d'accès au fichier local non valide. + + Invalid local file path. + Chemin d'accès au fichier local non valide. - - Could not open %1 - Impossible d'ouvrir %1 + + Could not open %1 + Impossible d'ouvrir %1 - - File %1 already locked. - Fichier %1 déjà verrouillé. + + File %1 already locked. + Fichier %1 déjà verrouillé. - - - Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - Le verrouillage durera %1 minutes. Vous pouvez également déverrouiller ce fichier manuellement une fois que vous avez terminé l'édition. + + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + Le verrouillage durera %1 minutes. Vous pouvez également déverrouiller ce fichier manuellement une fois que vous avez terminé l'édition. - - File %1 now locked. - Fichier %1 désormais verrouillé. + + File %1 now locked. + Fichier %1 désormais verrouillé. - - File %1 could not be locked. - Impossible de verrouiller le fichier %1. + + File %1 could not be locked. + Impossible de verrouiller le fichier %1. - - + + OCC::EncryptFolderJob - - Could not generate the metadata for encryption, Unlocking the folder. + + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. - Impossible de générer les métadonnées pour le chiffrement, déverrouillage du dossier. + Impossible de générer les métadonnées pour le chiffrement, déverrouillage du dossier. Cela peut être un problème avec vos bibliothèques OpenSSL. - - + + OCC::EncryptedFolderMetadataHandler - - - - - - - Error fetching metadata. - Erreur à la récupération des méta-données. + + + + + + + Error fetching metadata. + Erreur à la récupération des méta-données. - - - - Error locking folder. - Erreur de verrouillage du dossier. + + + + Error locking folder. + Erreur de verrouillage du dossier. - - Error fetching encrypted folder ID. - Erreur dans la récupération de l’ID du dossier chiffré. + + Error fetching encrypted folder ID. + Erreur dans la récupération de l’ID du dossier chiffré. - - Error parsing or decrypting metadata. - Erreur lors du parsing ou du déchiffrement des métadonnées. + + Error parsing or decrypting metadata. + Erreur lors du parsing ou du déchiffrement des métadonnées. - - Failed to upload metadata - Échec du téléversement des métadonnées + + Failed to upload metadata + Échec du téléversement des métadonnées - - + + OCC::FileDetails - - %1 second(s) ago - seconds elapsed since file last modified - - Il y a %1 seconde - Il y a %1 seconde(s) - + + %1 second(s) ago + seconds elapsed since file last modified + + Il y a %1 seconde + Il y a %1 seconde(s) + - - %1 minute(s) ago - minutes elapsed since file last modified - - Il y a %1 minute - Il y a %1 minute(s) - + + %1 minute(s) ago + minutes elapsed since file last modified + + Il y a %1 minute + Il y a %1 minute(s) + - - %1 hour(s) ago - hours elapsed since file last modified - - Il y a %1 heure - Il y a %1 heure(s) - + + %1 hour(s) ago + hours elapsed since file last modified + + Il y a %1 heure + Il y a %1 heure(s) + - - %1 day(s) ago - days elapsed since file last modified - - Il y a %1 jour - Il y a %1 jour(s) - + + %1 day(s) ago + days elapsed since file last modified + + Il y a %1 jour + Il y a %1 jour(s) + - - %1 month(s) ago - months elapsed since file last modified - - Il y a %1 mois - Il y a %1 mois - + + %1 month(s) ago + months elapsed since file last modified + + Il y a %1 mois + Il y a %1 mois + - - %1 year(s) ago - years elapsed since file last modified - - Il y a %1 an - Il y a %1 an(s) - + + %1 year(s) ago + years elapsed since file last modified + + Il y a %1 an + Il y a %1 an(s) + - - Locked by %1 - Expires in %2 minute(s) - remaining time before lock expires - - Verrouillé par %1 - Expire dans %2 minute - Verrouillé par %1 - Expire dans %2 minute(s) - + + Locked by %1 - Expires in %2 minute(s) + remaining time before lock expires + + Verrouillé par %1 - Expire dans %2 minute + Verrouillé par %1 - Expire dans %2 minute(s) + - - + + OCC::Flow2Auth - - The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - L'URL du sondage ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + L'URL du sondage ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. - - - Error returned from the server: <em>%1</em> - Erreur renvoyée par le serveur : <em>%1</em> + + + Error returned from the server: <em>%1</em> + Erreur renvoyée par le serveur : <em>%1</em> - - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> + + + There was an error accessing the "token" endpoint: <br><em>%1</em> + Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> - - - Could not parse the JSON returned from the server: <br><em>%1</em> - Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> + + + Could not parse the JSON returned from the server: <br><em>%1</em> + Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> - - - The reply from the server did not contain all expected fields - La réponse du serveur ne contient pas tous les champs attendus + + + The reply from the server did not contain all expected fields + La réponse du serveur ne contient pas tous les champs attendus - - The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - L'URL renvoyée par le serveur ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + L'URL renvoyée par le serveur ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. - - + + OCC::Flow2AuthWidget - - Unable to open the Browser, please copy the link to your Browser. - Impossible d'ouvrir le navigateur, veuillez copier le lien dans votre navigateur Web. + + Unable to open the Browser, please copy the link to your Browser. + Impossible d'ouvrir le navigateur, veuillez copier le lien dans votre navigateur Web. - - - Error - Erreur + + + Error + Erreur - - Waiting for authorization - En attente de l'autorisation + + Waiting for authorization + En attente de l'autorisation - - Polling for authorization - En attente de l'autorisation + + Polling for authorization + En attente de l'autorisation - - Starting authorization - Démarrage de l'autorisation + + Starting authorization + Démarrage de l'autorisation - - Link copied to clipboard. - Lien copié dans le presse-papier + + Link copied to clipboard. + Lien copié dans le presse-papier - - Open Browser - Ouvrir le navigateur + + Open Browser + Ouvrir le navigateur - - Switch to your browser to connect your account - Basculez sur votre navigateur pour connecter votre compte + + Switch to your browser to connect your account + Basculez sur votre navigateur pour connecter votre compte - Reopen Browser - Rouvrir le navigateur + Reopen Browser + Rouvrir le navigateur - - Copy Link - Copier le lien + + Copy Link + Copier le lien - - + + OCC::Folder - - Local folder %1 does not exist. - Le dossier local %1 n'existe pas. + + Local folder %1 does not exist. + Le dossier local %1 n'existe pas. - - %1 should be a folder but is not. - %1 devrait être un dossier mais ne l'est pas. + + %1 should be a folder but is not. + %1 devrait être un dossier mais ne l'est pas. - - %1 is not readable. - %1 ne peut pas être lu. + + %1 is not readable. + %1 ne peut pas être lu. - - %1 and %n other file(s) have been removed. - - %1 a été supprimé. - %1 et %n autres fichiers ont été supprimés. - + + %1 and %n other file(s) have been removed. + + %1 a été supprimé. + %1 et %n autres fichiers ont été supprimés. + - - %1 has been removed. - %1 names a file. - %1 a été supprimé. + + %1 has been removed. + %1 names a file. + %1 a été supprimé. - - %1 and %n other file(s) have been added. - - %1 et %n autre fichier ont été ajoutés. - %1 et %n autres fichiers ont été ajoutés. - + + %1 and %n other file(s) have been added. + + %1 et %n autre fichier ont été ajoutés. + %1 et %n autres fichiers ont été ajoutés. + - - %1 has been added. - %1 names a file. - %1 a été ajouté. + + %1 has been added. + %1 names a file. + %1 a été ajouté. - - %1 and %n other file(s) have been updated. - - %1 a été mis à jour. - %1 et %n autres fichiers ont été mis à jour. - + + %1 and %n other file(s) have been updated. + + %1 a été mis à jour. + %1 et %n autres fichiers ont été mis à jour. + - - %1 has been updated. - %1 names a file. - %1 a été mis à jour. + + %1 has been updated. + %1 names a file. + %1 a été mis à jour. - - %1 has been renamed to %2 and %n other file(s) have been renamed. - - %1 a été renommé en %2. - %1 a été renommé en %2 et %n autres fichiers ont été renommés. - + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + %1 a été renommé en %2. + %1 a été renommé en %2 et %n autres fichiers ont été renommés. + - - %1 has been renamed to %2. - %1 and %2 name files. - %1 a été renommé en %2. + + %1 has been renamed to %2. + %1 and %2 name files. + %1 a été renommé en %2. - - %1 has been moved to %2 and %n other file(s) have been moved. - - %1 a été déplacé vers %2. - %1 a été déplacé vers %2 et %n autres fichiers ont été déplacés. - + + %1 has been moved to %2 and %n other file(s) have been moved. + + %1 a été déplacé vers %2. + %1 a été déplacé vers %2 et %n autres fichiers ont été déplacés. + - - %1 has been moved to %2. - %1 a été déplacé vers %2. + + %1 has been moved to %2. + %1 a été déplacé vers %2. - - %1 has and %n other file(s) have sync conflicts. - - %1 a un conflit de synchronisation. - %1 et %n autres fichiers ont des problèmes de synchronisation. - + + %1 has and %n other file(s) have sync conflicts. + + %1 a un conflit de synchronisation. + %1 et %n autres fichiers ont des problèmes de synchronisation. + - - %1 has a sync conflict. Please check the conflict file! - %1 a un problème de synchronisation. Merci de vérifier le fichier conflit ! + + %1 has a sync conflict. Please check the conflict file! + %1 a un problème de synchronisation. Merci de vérifier le fichier conflit ! - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - - %1 ne peut pas être synchronisé en raison d'erreurs. Consultez les logs pour les détails. - %1 et %n autres fichiers n'ont pas pu être synchronisés en raison d'erreurs. Consultez les logs pour les détails. - + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + %1 ne peut pas être synchronisé en raison d'erreurs. Consultez les logs pour les détails. + %1 et %n autres fichiers n'ont pas pu être synchronisés en raison d'erreurs. Consultez les logs pour les détails. + - - %1 could not be synced due to an error. See the log for details. - %1 n'a pu être synchronisé pour cause d'erreur. Consultez les logs pour les détails. + + %1 could not be synced due to an error. See the log for details. + %1 n'a pu être synchronisé pour cause d'erreur. Consultez les logs pour les détails. - - %1 and %n other file(s) are currently locked. - - %1 et %n autre fichier sont verrouillés. - %1 et %n autres fichiers sont verrouillés. - + + %1 and %n other file(s) are currently locked. + + %1 et %n autre fichier sont verrouillés. + %1 et %n autres fichiers sont verrouillés. + - - %1 is currently locked. - %1 est actuellement verrouillé. + + %1 is currently locked. + %1 est actuellement verrouillé. - - Sync Activity - Activité de synchronisation + + Sync Activity + Activité de synchronisation - - Could not read system exclude file - Impossible de lire le fichier d'exclusion du système + + Could not read system exclude file + Impossible de lire le fichier d'exclusion du système - - A new folder larger than %1 MB has been added: %2. + + A new folder larger than %1 MB has been added: %2. - Un nouveau dossier de taille supérieure à %1 Mo a été ajouté : %2. + Un nouveau dossier de taille supérieure à %1 Mo a été ajouté : %2. - - A folder from an external storage has been added. + + A folder from an external storage has been added. - Un nouveau dossier localisé sur un stockage externe a été ajouté. + Un nouveau dossier localisé sur un stockage externe a été ajouté. - - Please go in the settings to select it if you wish to download it. - Merci d'aller dans les Paramètres pour indiquer si vous souhaitez le télécharger. + + Please go in the settings to select it if you wish to download it. + Merci d'aller dans les Paramètres pour indiquer si vous souhaitez le télécharger. - - A folder has surpassed the set folder size limit of %1MB: %2. + + A folder has surpassed the set folder size limit of %1MB: %2. %3 - Un dossier a dépassé la taille limite fixée de %1MB: %2. + Un dossier a dépassé la taille limite fixée de %1MB: %2. %3 - - Keep syncing - Continuer la synchronisation + + Keep syncing + Continuer la synchronisation - - Stop syncing - Arrêter la synchronisation + + Stop syncing + Arrêter la synchronisation - - The folder %1 has surpassed the set folder size limit of %2MB. - Le dossier %1 a dépassé la taille limite fixée de %2MB. + + The folder %1 has surpassed the set folder size limit of %2MB. + Le dossier %1 a dépassé la taille limite fixée de %2MB. - - Would you like to stop syncing this folder? - Voulez vous arrêter la synchronisation de ce dossier ? + + Would you like to stop syncing this folder? + Voulez vous arrêter la synchronisation de ce dossier ? - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. - Le dossier %1 a été créé mais il était exclu de la synchronisation auparavant. Les données qu'il contient ne seront pas synchronisées. + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + Le dossier %1 a été créé mais il était exclu de la synchronisation auparavant. Les données qu'il contient ne seront pas synchronisées. - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. - Le fichier %1 a été créé mais il était exclu de la synchronisation auparavant. Il ne sera pas synchronisé. + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + Le fichier %1 a été créé mais il était exclu de la synchronisation auparavant. Il ne sera pas synchronisé. - - Changes in synchronized folders could not be tracked reliably. + + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). %1 - Les modifications apportées aux dossiers synchronisés ne peuvent pas être suivies de manière fiable. + Les modifications apportées aux dossiers synchronisés ne peuvent pas être suivies de manière fiable. -Cela signifie que le client de synchronisation ne va pas téléverser immédiatement les modifications locales, mais va à la place rechercher et téléverser les modifications locales qu'occasionnellement (toutes les deux heures par défaut). +Cela signifie que le client de synchronisation ne va pas téléverser immédiatement les modifications locales, mais va à la place rechercher et téléverser les modifications locales qu'occasionnellement (toutes les deux heures par défaut). %1 - - Virtual file download failed with code "%1", status "%2" and error message "%3" - Le téléchargement du fichier virtuel a échoué avec le code « %1 », état « %2 » et le message d'erreur « %3 » + + Virtual file download failed with code "%1", status "%2" and error message "%3" + Le téléchargement du fichier virtuel a échoué avec le code « %1 », état « %2 » et le message d'erreur « %3 » + + + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + + + + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by downloading them from the server. + + + + + Proceed with Deletion + + + + + Restore Files to Server + + + + + Restore Files from Server + - - All files in the server folder "%1" were deleted. + All files in the server folder "%1" were deleted. If you restore the files, they will be uploaded again to the server. - "Tous les fichiers du dossier ""%1"" du serveur ont été supprimés. + "Tous les fichiers du dossier ""%1"" du serveur ont été supprimés. -Si vous restaurez les fichiers, ils seront à nouveau téléchargés sur le serveur." +Si vous restaurez les fichiers, ils seront à nouveau téléchargés sur le serveur." - - All files in the local folder "%1" were deleted. + All files in the local folder "%1" were deleted. If you restore the files, they will be downloaded again from the server. - "Tous les fichiers du dossier local ""%1"" ont été supprimés. + "Tous les fichiers du dossier local ""%1"" ont été supprimés. -Si vous restaurez les fichiers, ils seront à nouveau téléchargés depuis le serveur. " +Si vous restaurez les fichiers, ils seront à nouveau téléchargés depuis le serveur. " - - Remove all files? - Supprimer tous les fichiers ? + + Remove all files? + Supprimer tous les fichiers ? - - Proceed to remove all files - Confirmer la suppression de tous les fichiers + Proceed to remove all files + Confirmer la suppression de tous les fichiers - - Restore files - Restaurer les fichiers + Restore files + Restaurer les fichiers - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Tous les fichiers du dossier de synchronisation "%1" ont été supprimés sur le serveur. + Tous les fichiers du dossier de synchronisation "%1" ont été supprimés sur le serveur. Ces suppressions seront synchronisées avec votre dossier local, ce qui rendra les fichiers non disponibles à moins que vous ayez les droits de les restaurer. Si vous décidez de garder ces fichiers, ils seront resynchronisés avec le serveur si vous avez les droits pour le faire. Si vous décidez de supprimer ces fichiers, ils ne vous seront plus accessibles à moins que vous en soyez le propriétaire. - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - Tous les fichiers contenus dans le dossier synchronisé "%1" ont été supprimés. Ces suppressions seront synchronisées avec votre serveur, rendant ces fichiers inaccessibles sauf s'ils sont restaurés ultérieurement. + Tous les fichiers contenus dans le dossier synchronisé "%1" ont été supprimés. Ces suppressions seront synchronisées avec votre serveur, rendant ces fichiers inaccessibles sauf s'ils sont restaurés ultérieurement. Êtes-vous sûr de vouloir synchroniser ces actions avec le serveur ? -S'il s'agissait d'un accident et que vous choisissiez de conserver vos fichiers, ils seront synchronisés à nouveau depuis le serveur. +S'il s'agissait d'un accident et que vous choisissiez de conserver vos fichiers, ils seront synchronisés à nouveau depuis le serveur. - Remove All Files? - Retirer tous les fichiers ? + Remove All Files? + Retirer tous les fichiers ? - Remove all files - Retirer tous les fichiers + Remove all files + Retirer tous les fichiers - Keep files - Conserver les fichiers + Keep files + Conserver les fichiers - - + + OCC::FolderCreationDialog - - Create new folder - Créer un nouveau dossier + + Create new folder + Créer un nouveau dossier - - Enter folder name - Saisissez le nom du dossier + + Enter folder name + Saisissez le nom du dossier - - Folder already exists - Le dossier existe déjà + + Folder already exists + Le dossier existe déjà - - %1 Create new folder - %1 Créer un nouveau dossier + + %1 Create new folder + %1 Créer un nouveau dossier - - Error - Erreur + + Error + Erreur - - Could not create a folder! Check your write permissions. - Impossible de créer le dossier ! Veuillez vérifier vos permissions d’écriture. + + Could not create a folder! Check your write permissions. + Impossible de créer le dossier ! Veuillez vérifier vos permissions d’écriture. - - + + OCC::FolderMan - - Could not reset folder state - Impossible de réinitialiser l'état du dossier + + Could not reset folder state + Impossible de réinitialiser l'état du dossier - - An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. - Un ancien fichier journal "%1" a été trouvé, mais ne peut être supprimé. Veuillez vous assurer qu’aucune application ne l'utilise en ce moment. + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + Un ancien fichier journal "%1" a été trouvé, mais ne peut être supprimé. Veuillez vous assurer qu’aucune application ne l'utilise en ce moment. - - (backup) - (sauvegarde) + + (backup) + (sauvegarde) - - (backup %1) - (sauvegarde %1) + + (backup %1) + (sauvegarde %1) - - Undefined state. - Statut indéfini. + + Undefined state. + Statut indéfini. - - Waiting to start syncing. - En attente de synchronisation. + + Waiting to start syncing. + En attente de synchronisation. - - Preparing for sync. - Préparation de la synchronisation. + + Preparing for sync. + Préparation de la synchronisation. - - Sync is running. - Synchronisation en cours + + Sync is running. + Synchronisation en cours - - Sync finished with unresolved conflicts. - Synchronisation terminée avec des conflits non résolus. + + Sync finished with unresolved conflicts. + Synchronisation terminée avec des conflits non résolus. - - Last sync was successful. - Synchronisation terminée avec succès + + Last sync was successful. + Synchronisation terminée avec succès - - Setup error. - Erreur de paramétrage. + + Setup error. + Erreur de paramétrage. - - Sync request was cancelled. - La requête de synchronisation a été annulée. + + Sync request was cancelled. + La requête de synchronisation a été annulée. - - Sync is paused. - La synchronisation est en pause. + + Sync is paused. + La synchronisation est en pause. - - %1 (Sync is paused) - %1 (Synchronisation en pause) + + %1 (Sync is paused) + %1 (Synchronisation en pause) - - No valid folder selected! - Aucun dossier valable sélectionné ! + + No valid folder selected! + Aucun dossier valable sélectionné ! - - The selected path does not exist! - Le chemin sélectionné n'existe pas ! + + The selected path does not exist! + Le chemin sélectionné n'existe pas ! - - The selected path is not a folder! - Le chemin sélectionné n'est pas un dossier ! + + The selected path is not a folder! + Le chemin sélectionné n'est pas un dossier ! - - - You have no permission to write to the selected folder! - Vous n'avez pas la permission d'écrire dans le dossier sélectionné ! + + + You have no permission to write to the selected folder! + Vous n'avez pas la permission d'écrire dans le dossier sélectionné ! - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! - Le dossier local %1 contient un dossier déjà utilisé pour une synchronisation de dossiers. Veuillez en choisir un autre ! + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + Le dossier local %1 contient un dossier déjà utilisé pour une synchronisation de dossiers. Veuillez en choisir un autre ! - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! - Le dossier local %1 se trouve dans un dossier déjà configuré pour une synchronisation de dossier. Veuillez en choisir un autre ! + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + Le dossier local %1 se trouve dans un dossier déjà configuré pour une synchronisation de dossier. Veuillez en choisir un autre ! - - There is already a sync from the server to this local folder. Please pick another local folder! - Il y a déjà une synchronisation depuis le serveur vers ce dossier local. Merci de choisir un autre dossier local ! + + There is already a sync from the server to this local folder. Please pick another local folder! + Il y a déjà une synchronisation depuis le serveur vers ce dossier local. Merci de choisir un autre dossier local ! - - + + OCC::FolderStatusDelegate - Add Folder Sync Connection - Ajouter une synchronisation de dossier + Add Folder Sync Connection + Ajouter une synchronisation de dossier - - Add live backup - Ajouter une sauvegarde en temps réel + + Add live backup + Ajouter une sauvegarde en temps réel - - Synchronize any other local folder with your %1 - Synchronisez n’importe quel autre dossier local avec votre %1 + + Synchronize any other local folder with your %1 + Synchronisez n’importe quel autre dossier local avec votre %1 - - File - Fichier + + File + Fichier - - + + OCC::FolderStatusModel - - You need to be connected to add a folder - Vous devez être connecté pour ajouter un dossier + + You need to be connected to add a folder + Vous devez être connecté pour ajouter un dossier - - Click this button to add a folder to synchronize. - Cliquez ce bouton pour ajouter un dossier à synchroniser. + + Click this button to add a folder to synchronize. + Cliquez ce bouton pour ajouter un dossier à synchroniser. - - Could not decrypt! - Déchiffrage impossible ! + + Could not decrypt! + Déchiffrage impossible ! - - - %1 (%2) - %1 (%2) + + + %1 (%2) + %1 (%2) - - Error while loading the list of folders from the server. - Une erreur est survenue lors du chargement de la liste des dossiers depuis le serveur. + + Error while loading the list of folders from the server. + Une erreur est survenue lors du chargement de la liste des dossiers depuis le serveur. - - Fetching folder list from server … - Récupération de la liste des dossiers depuis le serveur... + + Fetching folder list from server … + Récupération de la liste des dossiers depuis le serveur... - - There are unresolved conflicts. Click for details. - Il y a des conflits non résolus. Cliquez pour plus de détails. + + There are unresolved conflicts. Click for details. + Il y a des conflits non résolus. Cliquez pour plus de détails. - - Virtual file support is enabled. - Support des fichiers virtuels activé. + + Virtual file support is enabled. + Support des fichiers virtuels activé. - - Signed out - Session fermée + + Signed out + Session fermée - - Synchronizing VirtualFiles with local folder - Synchronisation des fichiers virtuels avec le dossier local + + Synchronizing VirtualFiles with local folder + Synchronisation des fichiers virtuels avec le dossier local - - Synchronizing with local folder - Synchronisation avec le dossier local + + Synchronizing with local folder + Synchronisation avec le dossier local - - Checking for changes in remote "%1" - Vérification des modifications dans "%1" distant + + Checking for changes in remote "%1" + Vérification des modifications dans "%1" distant - - Checking for changes in local "%1" - Vérification des modifications dans "%1" local + + Checking for changes in local "%1" + Vérification des modifications dans "%1" local - - Reconciling changes - Rapprochement des modifications + + Reconciling changes + Rapprochement des modifications - - Syncing %1 - Example text: "Syncing 'foo.txt', 'bar.txt'" - Synchronisation de %1 + + Syncing %1 + Example text: "Syncing 'foo.txt', 'bar.txt'" + Synchronisation de %1 - - - , - , + + + , + , - - download %1/s - Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) - réception %1/s + + download %1/s + Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) + réception %1/s - - ↓ %1/s - ↓ %1/s + + ↓ %1/s + ↓ %1/s - - upload %1/s - Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) - Envoi %1/s + + upload %1/s + Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) + Envoi %1/s - - ↑ %1/s - ↑ %1/s + + ↑ %1/s + ↑ %1/s - - %1 %2 (%3 of %4) - Example text: "uploading foobar.png (2MB of 2MB)" - %1 %2 (%3 sur %4) + + %1 %2 (%3 of %4) + Example text: "uploading foobar.png (2MB of 2MB)" + %1 %2 (%3 sur %4) - - %1 %2 - Example text: "uploading foobar.png" - %1 %2 + + %1 %2 + Example text: "uploading foobar.png" + %1 %2 - - A few seconds left, %1 of %2, file %3 of %4 - Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" - Quelques secondes restantes, %1 de %2, fichier %3 parmi %4 + + A few seconds left, %1 of %2, file %3 of %4 + Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" + Quelques secondes restantes, %1 de %2, fichier %3 parmi %4 - - %5 left, %1 of %2, file %3 of %4 - %5 restantes, %1 sur %2, fichier %3 sur %4 + + %5 left, %1 of %2, file %3 of %4 + %5 restantes, %1 sur %2, fichier %3 sur %4 - - %1 of %2, file %3 of %4 - Example text: "12 MB of 345 MB, file 6 of 7" - %1 sur %2, fichier %3 sur %4 + + %1 of %2, file %3 of %4 + Example text: "12 MB of 345 MB, file 6 of 7" + %1 sur %2, fichier %3 sur %4 - - file %1 of %2 - fichier %1 sur %2 + + file %1 of %2 + fichier %1 sur %2 - - Waiting … - En attente ... + + Waiting … + En attente ... - - Waiting for %n other folder(s) … - - En attente de %n autre dossier ... - En attente de %n autres dossiers ... - + + Waiting for %n other folder(s) … + + En attente de %n autre dossier ... + En attente de %n autres dossiers ... + - - Preparing to sync … - Préparation de la synchronisation ... + + Preparing to sync … + Préparation de la synchronisation ... - - + + OCC::FolderWatcher - - The watcher did not receive a test notification. - L'observateur n'a pas reçu de notification de test. + + The watcher did not receive a test notification. + L'observateur n'a pas reçu de notification de test. - - + + OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. - Ce problème survient généralement lorsque les points de surveillance inotify sont épuisés. Consultez la FAQ pour plus de détails. + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + Ce problème survient généralement lorsque les points de surveillance inotify sont épuisés. Consultez la FAQ pour plus de détails. - - + + OCC::FolderWizard - - Add Folder Sync Connection - Ajouter une synchronisation de dossier + + Add Folder Sync Connection + Ajouter une synchronisation de dossier - - Add Sync Connection - Ajouter la synchronisation + + Add Sync Connection + Ajouter la synchronisation - - + + OCC::FolderWizardLocalPath - - Click to select a local folder to sync. - Cliquez pour choisir un dossier local à synchroniser. + + Click to select a local folder to sync. + Cliquez pour choisir un dossier local à synchroniser. - - Enter the path to the local folder. - Entrez le chemin du dossier local. + + Enter the path to the local folder. + Entrez le chemin du dossier local. - - Select the source folder - Sélectionnez le dossier source + + Select the source folder + Sélectionnez le dossier source - - Add Folder Sync - Ajouter une synchronisation de dossiers + + Add Folder Sync + Ajouter une synchronisation de dossiers - - Step 1 of 3: Select local folder - Étape 1 sur 3 : sélectionner un dossier local + + Step 1 of 3: Select local folder + Étape 1 sur 3 : sélectionner un dossier local - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés - - Choose - Choisir + + Choose + Choisir - - + + OCC::FolderWizardRemotePath - - Create Remote Folder - Créer un dossier distant + + Create Remote Folder + Créer un dossier distant - - Enter the name of the new folder to be created below "%1": - Entrez le nom du nouveau dossier à créer dans "%1" : + + Enter the name of the new folder to be created below "%1": + Entrez le nom du nouveau dossier à créer dans "%1" : - - Folder was successfully created on %1. - Le dossier a été créé sur %1 + + Folder was successfully created on %1. + Le dossier a été créé sur %1 - - Authentication failed accessing %1 - Erreur d'authentification lors de l'accès à %1 + + Authentication failed accessing %1 + Erreur d'authentification lors de l'accès à %1 - - Failed to create the folder on %1. Please check manually. - Échec à la création du dossier sur %1. Veuillez vérifier manuellement. + + Failed to create the folder on %1. Please check manually. + Échec à la création du dossier sur %1. Veuillez vérifier manuellement. - - Failed to list a folder. Error: %1 - Impossible de lister un dossier. Erreur : %1 + + Failed to list a folder. Error: %1 + Impossible de lister un dossier. Erreur : %1 - - Choose this to sync the entire account - Sélectionnez ceci pour synchroniser l'ensemble du compte + + Choose this to sync the entire account + Sélectionnez ceci pour synchroniser l'ensemble du compte - - This folder is already being synced. - Ce dossier est déjà en cours de synchronisation. + + This folder is already being synced. + Ce dossier est déjà en cours de synchronisation. - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - Vous synchronisez déjà <i>%1</i> qui est un dossier parent de <i>%2</i>. + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + Vous synchronisez déjà <i>%1</i> qui est un dossier parent de <i>%2</i>. - - You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - Vous synchronisez déjà <i>%1</i> qui est un sous-dossier de <i>%2</i>. + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + Vous synchronisez déjà <i>%1</i> qui est un sous-dossier de <i>%2</i>. - - Add Folder Sync - Ajouter une synchronisation de dossiers + + Add Folder Sync + Ajouter une synchronisation de dossiers - - Step 2 of 3: Directory in your %1 - Étape 2 sur 3 : répertoire dans votre %1 + + Step 2 of 3: Directory in your %1 + Étape 2 sur 3 : répertoire dans votre %1 - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + À présent, sélectionnez ou créez dans votre %1 un dossier cible dans lequel le contenu doit être importé et synchronisé. - - Refresh - Rafraîchir + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. - - Create folder - Créer un dossier + + Refresh + Rafraîchir - - + + + Create folder + Créer un dossier + + + OCC::FolderWizardSelectiveSync - - - Use virtual files instead of downloading content immediately %1 - Utiliser les fichiers virtuels + + + Use virtual files instead of downloading content immediately %1 + Utiliser les fichiers virtuels - - - (experimental) - (expérimental) + + + (experimental) + (expérimental) - - Add Folder Sync - Ajouter une synchronisation de dossiers + + Add Folder Sync + Ajouter une synchronisation de dossiers - - Step 3 of 3: Selektive Synchronisation - Étape 3 sur 3 : synchronisation sélective + + Step 3 of 3: Selektive Synchronisation + Étape 3 sur 3 : synchronisation sélective - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Vous ne pouvez pas définir la racine d'une partition Windows pour votre dossier local. Veuillez choisir un (sous)dossier de la partition. + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Vous ne pouvez pas définir la racine d'une partition Windows pour votre dossier local. Veuillez choisir un (sous)dossier de la partition. - - Virtual files are not available for the selected folder - Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné + + Virtual files are not available for the selected folder + Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné - - + + OCC::FormatWarningsWizardPage - <b>Warning:</b> %1 - <b>Avertissement :</b> %1 + <b>Warning:</b> %1 + <b>Avertissement :</b> %1 - <b>Warning:</b> - <b>Avertissement :</b> + <b>Warning:</b> + <b>Avertissement :</b> - - %1 - %1 + + %1 + %1 - - + + OCC::GETFileJob - - No E-Tag received from server, check Proxy/Gateway - Aucun E-Tag reçu du serveur, vérifiez le proxy / la passerelle + + No E-Tag received from server, check Proxy/Gateway + Aucun E-Tag reçu du serveur, vérifiez le proxy / la passerelle - - We received a different E-Tag for resuming. Retrying next time. - Nous avons reçu un E-Tag différent pour reprendre le téléchargement. Nouvel essai la prochaine fois. + + We received a different E-Tag for resuming. Retrying next time. + Nous avons reçu un E-Tag différent pour reprendre le téléchargement. Nouvel essai la prochaine fois. - - We received an unexpected download Content-Length. - Nous avons reçu un téléchargement de Contenu-Longeur inattendu + + We received an unexpected download Content-Length. + Nous avons reçu un téléchargement de Contenu-Longeur inattendu - - Server returned wrong content-range - Le serveur a retourné une gamme de contenu erronée + + Server returned wrong content-range + Le serveur a retourné une gamme de contenu erronée - - Connection Timeout - Délai d'attente de connexion dépassé + + Connection Timeout + Délai d'attente de connexion dépassé - - + + OCC::GeneralSettings - - Advanced - Avancés + + Advanced + Avancés - About - À propos + About + À propos - Ask for confirmation before synchronizing new folders larger than - Demander la confirmation avant de synchroniser les dossiers plus grands que + Ask for confirmation before synchronizing new folders larger than + Demander la confirmation avant de synchroniser les dossiers plus grands que - Legal notice - Notice légale + Legal notice + Notice légale - MB - Trailing part of "Ask confirmation before syncing folder larger than" - Mo + MB + Trailing part of "Ask confirmation before syncing folder larger than" + Mo - Use &Monochrome Icons - Utiliser les icônes &monochromes + Use &Monochrome Icons + Utiliser les icônes &monochromes - &Launch on System Startup - &Lancer au démarrage du système + &Launch on System Startup + &Lancer au démarrage du système - Show Server &Notifications - Afficher les &notifications serveur + Show Server &Notifications + Afficher les &notifications serveur - Notify when synchronised folders grow larger than specified limit - Notifier quand des dossiers synchronisés deviennent plus grand que la limite spécifiée + Notify when synchronised folders grow larger than specified limit + Notifier quand des dossiers synchronisés deviennent plus grand que la limite spécifiée - Show Call Notifications - Afficher les notifications des appels + Show Call Notifications + Afficher les notifications des appels - - Updates - Mises à jour + + Updates + Mises à jour - &Automatically check for Updates - &Vérifier automatiquement la présence de nouvelles mises à jour + &Automatically check for Updates + &Vérifier automatiquement la présence de nouvelles mises à jour - Automatically disable synchronisation of folders that overcome limit - Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite + Automatically disable synchronisation of folders that overcome limit + Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite - &Channel - Canal + &Channel + Canal - Ask for confirmation before synchronizing external storages - Confirmation avant de synchroniser des stockages externes + Ask for confirmation before synchronizing external storages + Confirmation avant de synchroniser des stockages externes - - Move removed files to trash - Déplacer les fichiers supprimés vers la corbeille + + Move removed files to trash + Déplacer les fichiers supprimés vers la corbeille - Show sync folders in &Explorer's navigation pane - Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers + Show sync folders in &Explorer's navigation pane + Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers - - S&how crash reporter - Affic&her le rapport d'incident + + S&how crash reporter + Affic&her le rapport d'incident - - Edit &Ignored Files - Modifier les fichiers exclus + + Edit &Ignored Files + Modifier les fichiers exclus - - - Create Debug Archive - Créer l’archive de débogage + + + Create Debug Archive + Créer l’archive de débogage - &Check for Update now - &Vérifier la présence de mises à jour maintenant + &Check for Update now + &Vérifier la présence de mises à jour maintenant - Info - Informations + Info + Informations - Ask for confirmation before synchronizing folders larger than - Demander confirmation avant de synchroniser les dossiers de taille supérieure à + Ask for confirmation before synchronizing folders larger than + Demander confirmation avant de synchroniser les dossiers de taille supérieure à - - Desktop client x.x.x - Client de bureau x.x.x + + Desktop client x.x.x + Client de bureau x.x.x - - Update channel - Canal de mise à jour + + Update channel + Canal de mise à jour - - Ask for confirmation before + + Ask for confirmation before synchronizing new folders larger than - + - - + + MB - Trailing part of "Ask confirmation before syncing folder larger than" - MO + Trailing part of "Ask confirmation before syncing folder larger than" + MO Dernière partie de « Demander confirmation avant de synchroniser un dossier plus grand que » - - Notify when synchronised folders grow + + Notify when synchronised folders grow larger than specified limit - + - - Automatically disable synchronisation of + + Automatically disable synchronisation of folders that overcome limit - + - - Ask for confirmation before synchronizing + + Ask for confirmation before synchronizing external storages - + - - Show sync folders in &Explorer's navigation + + Show sync folders in &Explorer's navigation pane - + - - Data Protection - Protection des données + + Data Protection + Protection des données - - &Analysis data collection for needs-based design - &Collecte des données d’analyse pour une conception basée sur les besoins + + &Analysis data collection for needs-based design + &Collecte des données d’analyse pour une conception basée sur les besoins - - Privacy Policy - Politique de confidentialité + + Privacy Policy + Politique de confidentialité - - Open Source Software - Logiciel libre + + Open Source Software + Logiciel libre - - - stable - stable + + + stable + stable - - - beta - bêta + + + beta + bêta - - &Restart && Update - Redémarrer et Mettre à jour + + &Restart && Update + Redémarrer et Mettre à jour - - More Information - Plus d’informations + + More Information + Plus d’informations - Show sync folders in &Explorer's Navigation Pane - Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers + Show sync folders in &Explorer's Navigation Pane + Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers - - &Automatically check for updates - &Vérifier automatiquement les nouvelles mises à jour + + &Automatically check for updates + &Vérifier automatiquement les nouvelles mises à jour - - Check Now - Vérifier maintenant + + Check Now + Vérifier maintenant - - Usage Documentation - Documentation d'utilisation + + Usage Documentation + Documentation d'utilisation - - Legal Notice - Mentions légales + + Legal Notice + Mentions légales - - General Settings - Paramètres généraux + + General Settings + Paramètres généraux - - For System Tray - Pour la zone de notification système + + For System Tray + Pour la zone de notification système - - Use &monochrome icons - Utiliser les icônes &monochromes + + Use &monochrome icons + Utiliser les icônes &monochromes - - &Launch on system startup - &Lancer au démarrage du système + + &Launch on system startup + &Lancer au démarrage du système - - Show server &notifications - Afficher les &notifications serveur + + Show server &notifications + Afficher les &notifications serveur - - Show call notifications - Afficher les notifications des appels + + Show call notifications + Afficher les notifications des appels - - Server notifications that require attention. - Les notifications du serveur requérant votre attention. + + Server notifications that require attention. + Les notifications du serveur requérant votre attention. - - Show call notification dialogs. - Montre les fenêtres de notification d'appel. + + Show call notification dialogs. + Montre les fenêtres de notification d'appel. - - You cannot disable autostart because system-wide autostart is enabled. - Vous ne pouvez pas désactiver le démarrage automatique parce que le démarrage automatique à l'échelle du système est activé. + + You cannot disable autostart because system-wide autostart is enabled. + Vous ne pouvez pas désactiver le démarrage automatique parce que le démarrage automatique à l'échelle du système est activé. - - Change update channel? - Changer de canal de mise à jour ? + + Change update channel? + Changer de canal de mise à jour ? - - The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. - Le canal de mise à jour détermine quelles mises à jour du client seront proposées pour l'installation. Le canal "stable" ne contient que les mises à jour considérées comme fiables, tandis que les versions du canal "bêta" peuvent contenir des fonctionnalités plus récentes et des corrections de bogues, mais n'ont pas encore été testées de manière approfondie. + Le canal de mise à jour détermine quelles mises à jour du client seront proposées pour l'installation. Le canal "stable" ne contient que les mises à jour considérées comme fiables, tandis que les versions du canal "bêta" peuvent contenir des fonctionnalités plus récentes et des corrections de bogues, mais n'ont pas encore été testées de manière approfondie. -Notez que cela ne permet seulement que de sélectionner où sont récupérées les mises à jour et qu'il n'y a pas de possibilité de rétrograder : ainsi, le retour du canal "bêta" au canal "stable" ne peut généralement pas être fait immédiatement, et implique d'attendre une version stable plus récente que la version bêta actuellement installée. +Notez que cela ne permet seulement que de sélectionner où sont récupérées les mises à jour et qu'il n'y a pas de possibilité de rétrograder : ainsi, le retour du canal "bêta" au canal "stable" ne peut généralement pas être fait immédiatement, et implique d'attendre une version stable plus récente que la version bêta actuellement installée. - - Change update channel - Changer de canal de mise à jour + + Change update channel + Changer de canal de mise à jour - - Cancel - Annuler + + Cancel + Annuler - - Zip Archives - Archives Zip + + Zip Archives + Archives Zip - - Debug Archive Created - Archive de déboggage créée + + Debug Archive Created + Archive de déboggage créée - - Debug archive is created at %1 - Archive de déboggage créée à %1 + + Debug archive is created at %1 + Archive de déboggage créée à %1 - - + + OCC::GetOrCreatePublicLinkShare - - Password for share required - Mot de passe requis + + Password for share required + Mot de passe requis - - Please enter a password for your link share: - Veuillez saisir un mot de passe pour votre lien partagé : + + Please enter a password for your link share: + Veuillez saisir un mot de passe pour votre lien partagé : - - Sharing error - Erreur de partage + + Sharing error + Erreur de partage - - Could not retrieve or create the public link share. Error: + + Could not retrieve or create the public link share. Error: %1 - Impossible de récupérer ou de créer le lien public pour le partage. + Impossible de récupérer ou de créer le lien public pour le partage. %1 - - + + OCC::HttpCredentialsGui - - Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - Merci de saisir %1 mot de passe :<br><br>Identifiant : %2<br>Compte : %3<br> + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + Merci de saisir %1 mot de passe :<br><br>Identifiant : %2<br>Compte : %3<br> - - Reading from keychain failed with error: "%1" - La lecture à partir du trousseau a échoué avec l'erreur : "%1" + + Reading from keychain failed with error: "%1" + La lecture à partir du trousseau a échoué avec l'erreur : "%1" - - Enter Password - Saisissez le mot de passe + + Enter Password + Saisissez le mot de passe - - <a href="%1">Click here</a> to request an app password from the web interface. - <a href="%1">Cliquez ici</a> pour demander un mot de passe d'application depuis l'interface web. + + <a href="%1">Click here</a> to request an app password from the web interface. + <a href="%1">Cliquez ici</a> pour demander un mot de passe d'application depuis l'interface web. - - + + OCC::IgnoreListEditor - - Ignored Files Editor - Éditeur d'exclusion de fichiers + + Ignored Files Editor + Éditeur d'exclusion de fichiers - - Global Ignore Settings - Paramètres globaux d'exclusion + + Global Ignore Settings + Paramètres globaux d'exclusion - - Sync hidden files - Synchroniser les fichiers masqués + + Sync hidden files + Synchroniser les fichiers masqués - - Files Ignored by Patterns - Fichiers exclus sur motif de nom + + Files Ignored by Patterns + Fichiers exclus sur motif de nom - - This entry is provided by the system at "%1" and cannot be modified in this view. - Cette entrée est fournie par le système dans "%1" et ne peut être modifiée dans cette vue. + + This entry is provided by the system at "%1" and cannot be modified in this view. + Cette entrée est fournie par le système dans "%1" et ne peut être modifiée dans cette vue. - - + + OCC::IgnoreListTableWidget - - Pattern - Motif + + Pattern + Motif - - Allow Deletion - Autoriser la suppression + + Allow Deletion + Autoriser la suppression - - Add - Ajouter + + Add + Ajouter - - Remove - Supprimer + + Remove + Supprimer - - Remove all - Supprimer tout + + Remove all + Supprimer tout - Files or folders matching a pattern will not be synchronized. + Files or folders matching a pattern will not be synchronized. Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Les fichiers ou dossiers correspondant à un motif ne seront pas synchronisés. -Les éléments ayant l'option « Autoriser la suppression » pourront être supprimés pour ne pas bloquer la suppression d'un dossier. Utile pour les méta-données. + Les fichiers ou dossiers correspondant à un motif ne seront pas synchronisés. +Les éléments ayant l'option « Autoriser la suppression » pourront être supprimés pour ne pas bloquer la suppression d'un dossier. Utile pour les méta-données. - - Files or folders that match this pattern will not be synchronized. + + Files or folders that match this pattern will not be synchronized. Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - Les fichiers ou dossiers qui correspondent à ce modèle ne seront pas synchronisés. + Les fichiers ou dossiers qui correspondent à ce modèle ne seront pas synchronisés. -Les objets autorisés à être supprimés le seront s'ils empêchent la suppression d'un dossier. Ceci est utile pour les métadonnées. +Les objets autorisés à être supprimés le seront s'ils empêchent la suppression d'un dossier. Ceci est utile pour les métadonnées. - - Could not open file - Impossible d'ouvrir le fichier + + Could not open file + Impossible d'ouvrir le fichier - - Cannot write changes to "%1". - Impossible d'écrire les modifications sur "%1". + + Cannot write changes to "%1". + Impossible d'écrire les modifications sur "%1". - - Ignore Pattern - Ignorer le modèle + + Ignore Pattern + Ignorer le modèle - - Add New Ignore Pattern - Ajouter nouveau Ignorer le modèle + + Add New Ignore Pattern + Ajouter nouveau Ignorer le modèle - Add Ignore Pattern - Ajouter un motif d'exclusion + Add Ignore Pattern + Ajouter un motif d'exclusion - Add a new ignore pattern: - Ajouter un nouveau motif d'exclusion : + Add a new ignore pattern: + Ajouter un nouveau motif d'exclusion : - - + + OCC::InvalidFilenameDialog - - Invalid filename - Nom de fichier invalide + + Invalid filename + Nom de fichier invalide - - The file could not be synced because it contains characters which are not allowed on this system. - Le fichier n'a pas pu être synchronisé parce qu'il contiens des caractères invalides ou non-supportés par votre système. + + The file could not be synced because it contains characters which are not allowed on this system. + Le fichier n'a pas pu être synchronisé parce qu'il contiens des caractères invalides ou non-supportés par votre système. - - Error - Erreur + + Error + Erreur - - Please enter a new name for the file: - Veuillez saisir le nouveau nom du fichier : + + Please enter a new name for the file: + Veuillez saisir le nouveau nom du fichier : - - New filename - Nouveau nom de fichier + + New filename + Nouveau nom de fichier - - Rename file - Renommer le fichier + + Rename file + Renommer le fichier - - The file "%1" could not be synced because the name contains characters which are not allowed on this system. - Le fichier "%1" n'a pas pu être synchronisé car son nom contient des caractères qui ne sont pas autorisés sur ce système. + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + Le fichier "%1" n'a pas pu être synchronisé car son nom contient des caractères qui ne sont pas autorisés sur ce système. - - The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - Les caractères suivants ne sont pas autorisés dans les noms de fichier sur ce système : * " | & ? , ; : \ / ~ < > espaces en début et fin de chaîne + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + Les caractères suivants ne sont pas autorisés dans les noms de fichier sur ce système : * " | & ? , ; : \ / ~ < > espaces en début et fin de chaîne - - Checking rename permissions … - Vérification des permissions de renommage... + + Checking rename permissions … + Vérification des permissions de renommage... - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Vous n'avez pas la permission de renommer ce fichier. Veuillez demander à son auteur de le renommer. + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Vous n'avez pas la permission de renommer ce fichier. Veuillez demander à son auteur de le renommer. - - Failed to fetch permissions with error %1 - Erreur à la récupération des permissions : %1 + + Failed to fetch permissions with error %1 + Erreur à la récupération des permissions : %1 - - Filename contains leading and trailing spaces. - Le nom de fichier contient des espaces en début ou en fin de chaîne. + + Filename contains leading and trailing spaces. + Le nom de fichier contient des espaces en début ou en fin de chaîne. - - Filename contains leading spaces. - Le nom du fichier contient des espaces au début. + + Filename contains leading spaces. + Le nom du fichier contient des espaces au début. - - Filename contains trailing spaces. - Le nom de fichier contient des espaces à la fin. + + Filename contains trailing spaces. + Le nom de fichier contient des espaces à la fin. - - Use invalid name - Nom invalide + + Use invalid name + Nom invalide - - Filename contains illegal characters: %1 - Le nom du fichier contiens des caractères illégaux: %1 + + Filename contains illegal characters: %1 + Le nom du fichier contiens des caractères illégaux: %1 - - Could not rename file. Please make sure you are connected to the server. - Impossible de renommer le fichier. Veuillez vous certifier que vous êtes bien connecté au serveur. + + Could not rename file. Please make sure you are connected to the server. + Impossible de renommer le fichier. Veuillez vous certifier que vous êtes bien connecté au serveur. - - Cannot rename file because a file with the same name does already exist on the server. Please pick another name. - Impossible de renommer le fichier parce qu'un fichier avec le même nom existe déjà sur le serveur. Merci de choisir un autre nom. + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + Impossible de renommer le fichier parce qu'un fichier avec le même nom existe déjà sur le serveur. Merci de choisir un autre nom. - - Could not rename local file. %1 - Impossible de renommer le dossier local %1 + + Could not rename local file. %1 + Impossible de renommer le dossier local %1 - - + + OCC::LegalNotice - - - Legal notice - Notice légale + + + Legal notice + Notice légale - - Close - Fermer + + Close + Fermer - - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> - <p>Sous licence GNU General Public License (GPL) Version 2.0 ou supérieure.</p> + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + <p>Sous licence GNU General Public License (GPL) Version 2.0 ou supérieure.</p> - - + + OCC::LogBrowser - - Log Output - Consigner la sortie dans des fichiers de log + + Log Output + Consigner la sortie dans des fichiers de log - - The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. If enabled, logs will be written to %1 - Le client peut écrire des fichiers de log pour le déboguage dans un dossier temporaire. Ces logs sont très utiles pour diagnostiquer les problèmes. -Comme ces fichiers de log peuvent devenir lourds, le client en commence un nouveau à chaque synchronisation et compresse les anciens. Il supprime aussi les logs après quelques heures pour économiser l'espace disque. + Le client peut écrire des fichiers de log pour le déboguage dans un dossier temporaire. Ces logs sont très utiles pour diagnostiquer les problèmes. +Comme ces fichiers de log peuvent devenir lourds, le client en commence un nouveau à chaque synchronisation et compresse les anciens. Il supprime aussi les logs après quelques heures pour économiser l'espace disque. Si activés, les logs seront écrits dans %1 - - Enable logging to temporary folder - Activer la journalisation dans le dossier temporaire + + Enable logging to temporary folder + Activer la journalisation dans le dossier temporaire - - This setting persists across client restarts. + + This setting persists across client restarts. Note that using any logging command line options will override this setting. - Ce paramètre persiste lors des redémarrages du client. -Notez que l'utilisation de toute option de ligne de commande de journalisation remplacera ce paramètre. + Ce paramètre persiste lors des redémarrages du client. +Notez que l'utilisation de toute option de ligne de commande de journalisation remplacera ce paramètre. - - Open folder - Ouvrir le dossier + + Open folder + Ouvrir le dossier - - + + OCC::Logger - - Error - Erreur + + Error + Erreur - - <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> - <nobr>Le fichier "%1"<br/>ne peut pas être ouvert en écriture.<br/><br/>Le fichier journal <b>ne peut pas</b> être sauvegardé !</nobr> + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + <nobr>Le fichier "%1"<br/>ne peut pas être ouvert en écriture.<br/><br/>Le fichier journal <b>ne peut pas</b> être sauvegardé !</nobr> - - + + OCC::NSISUpdater - - New Version Available - Nouvelle version disponible + + New Version Available + Nouvelle version disponible - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - <p>Une nouvelle version du client %1 est disponible.</p><p><b>%2</b> est disponible en téléchargement. La version actuellement installée est %3.<p> + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + <p>Une nouvelle version du client %1 est disponible.</p><p><b>%2</b> est disponible en téléchargement. La version actuellement installée est %3.<p> - - Skip this time - Ignorer pour cette fois + + Skip this time + Ignorer pour cette fois - - Get update - Télécharger la version + + Get update + Télécharger la version - - Update Failed - Échec de mise à jour + + Update Failed + Échec de mise à jour - - <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> - <p>Une nouvelle version du Client %1 est disponible mais la mise à jour a échoué.</p><p><b>%2</b> a été téléchargé. La version installée est %3. Si vous confirmez le redémarrage et la mise à jour, votre ordinateur peut redémarrer pour terminer l'installation.</p> + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + <p>Une nouvelle version du Client %1 est disponible mais la mise à jour a échoué.</p><p><b>%2</b> a été téléchargé. La version installée est %3. Si vous confirmez le redémarrage et la mise à jour, votre ordinateur peut redémarrer pour terminer l'installation.</p> - - Ask again later - Demander plus tard + + Ask again later + Demander plus tard - - Restart and update - Redémarrer et mettre à jour + + Restart and update + Redémarrer et mettre à jour - - Update manually - Mettre à jour manuellement + + Update manually + Mettre à jour manuellement - - + + OCC::NetworkSettings - - Proxy Settings - Paramètres de serveur proxy + + Proxy Settings + Paramètres de serveur proxy - No Proxy - Aucun serveur proxy + No Proxy + Aucun serveur proxy - - No proxy - Aucun serveur proxy + + No proxy + Aucun serveur proxy - - Use system proxy - Utiliser les paramètres du système + + Use system proxy + Utiliser les paramètres du système - Specify proxy manually as - Indiquer un proxy manuellement + Specify proxy manually as + Indiquer un proxy manuellement - - Manually specify proxy - Spécifier manuellement le serveur proxy + + Manually specify proxy + Spécifier manuellement le serveur proxy - - Host - Hôte + + Host + Hôte - - Proxy server requires authentication - Le serveur proxy requiert une authentification + + Proxy server requires authentication + Le serveur proxy requiert une authentification - - Note: proxy settings have no effects for accounts on localhost - Remarque: les paramètres de proxy n'ont aucun effet sur les comptes sur localhost + + Note: proxy settings have no effects for accounts on localhost + Remarque: les paramètres de proxy n'ont aucun effet sur les comptes sur localhost - - Download Bandwidth - Bande passante de réception + + Download Bandwidth + Bande passante de réception - - - No limit - Aucune limite + + + No limit + Aucune limite - - - Limit to 3/4 of estimated bandwidth - Limiter aux 3/4 de la bande passante estimée + + + Limit to 3/4 of estimated bandwidth + Limiter aux 3/4 de la bande passante estimée - - - Limit automatically - Limiter automatiquement + + + Limit automatically + Limiter automatiquement - - - Limit to - Limiter à + + + Limit to + Limiter à - - - KBytes/s - Ko/s + + + KBytes/s + Ko/s - - Upload Bandwidth - Bande passante d'émission + + Upload Bandwidth + Bande passante d'émission - - Hostname of proxy server - Nom d'hôte du serveur proxy + + Hostname of proxy server + Nom d'hôte du serveur proxy - - Username for proxy server - Nom d’utilisateur pour le serveur proxy + + Username for proxy server + Nom d’utilisateur pour le serveur proxy - - Password for proxy server - Mot de passe pour le serveur proxy + + Password for proxy server + Mot de passe pour le serveur proxy - - HTTP(S) proxy - Proxy HTTP(S) + + HTTP(S) proxy + Proxy HTTP(S) - - SOCKS5 proxy - Proxy SOCKS5 + + SOCKS5 proxy + Proxy SOCKS5 - - + + OCC::OAuth - Error returned from the server: <em>%1</em> - Erreur renvoyée par le serveur: <em>%1</em> + Error returned from the server: <em>%1</em> + Erreur renvoyée par le serveur: <em>%1</em> - There was an error accessing the "token" endpoint: <br><em>%1</em> - Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> + There was an error accessing the "token" endpoint: <br><em>%1</em> + Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> - Empty JSON from OAuth2 redirect - Vider le JSON de la redirection OAuth2 + Empty JSON from OAuth2 redirect + Vider le JSON de la redirection OAuth2 - Could not parse the JSON returned from the server: <br><em>%1</em> - Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> + Could not parse the JSON returned from the server: <br><em>%1</em> + Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> - The reply from the server did not contain all expected fields - La réponse du serveur ne contient pas tous les champs attendus + The reply from the server did not contain all expected fields + La réponse du serveur ne contient pas tous les champs attendus - <h1>Login Error</h1><p>%1</p> - <h1>Erreur de connexion</h1><p>%1</p> + <h1>Login Error</h1><p>%1</p> + <h1>Erreur de connexion</h1><p>%1</p> - <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> - <h1>Erreur de compte</h1><p>Vous êtes connecté(e) avec le compte <em>%1</em>, mais devez vous connecter avec le compte <em>%2</em>.<br>Merci de vous déconnecter de %3 dans un autre onglet, puis <a href='%4'>cliquez ici</a> et connectez-vous avec %2.</p> + <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> + <h1>Erreur de compte</h1><p>Vous êtes connecté(e) avec le compte <em>%1</em>, mais devez vous connecter avec le compte <em>%2</em>.<br>Merci de vous déconnecter de %3 dans un autre onglet, puis <a href='%4'>cliquez ici</a> et connectez-vous avec %2.</p> - - + + OCC::OCUpdater - - New %1 update ready - Une nouvelle mise à jour de %1 est disponible + + New %1 update ready + Une nouvelle mise à jour de %1 est disponible - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - Une nouvelle mise à jour pour %1 est sur le point d'être installée. Le dispositif de mise à jour peut demander des autorisations supplémentaires au cours du processus. Votre ordinateur peut nécessiter un redémarrage pour terminer l'installation. + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + Une nouvelle mise à jour pour %1 est sur le point d'être installée. Le dispositif de mise à jour peut demander des autorisations supplémentaires au cours du processus. Votre ordinateur peut nécessiter un redémarrage pour terminer l'installation. - - Downloading %1. Please wait … - Réception en cours de %1. Veuillez patienter... + + Downloading %1. Please wait … + Réception en cours de %1. Veuillez patienter... - - %1 available. Restart application to start the update. - %1 disponible. Redémarrez l'application pour effectuer la mise à jour. + + %1 available. Restart application to start the update. + %1 disponible. Redémarrez l'application pour effectuer la mise à jour. - - Could not download update. Please open <a href='%1'>%1</a> to download the update manually. - Impossible de télécharger la mise à jour. Merci d'ouvrir <a href='%1'>%1</a> pour télécharger la mise à jour manuellement. + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + Impossible de télécharger la mise à jour. Merci d'ouvrir <a href='%1'>%1</a> pour télécharger la mise à jour manuellement. - - Could not download update. Please open %1 to download the update manually. - Impossible de télécharger la mise à jour. Ouvrez %1 pour télécharger manuellement la mise à jour. + + Could not download update. Please open %1 to download the update manually. + Impossible de télécharger la mise à jour. Ouvrez %1 pour télécharger manuellement la mise à jour. - - Could not check for new updates. - Impossible de vérifier la présence de nouvelles mises à jour. + + Could not check for new updates. + Impossible de vérifier la présence de nouvelles mises à jour. - - New %1 is available. Please open <a href='%2'>%2</a> to download the update. - Un nouveau %1 est disponible. Merci d'ouvrir <a href='%2'>%2</a> pour télécharger la mise à jour. + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + Un nouveau %1 est disponible. Merci d'ouvrir <a href='%2'>%2</a> pour télécharger la mise à jour. - - New %1 is available. Please open %2 to download the update. - Un nouveau %1 est disponible. Merci d'ouvrir %2 pour télécharger la mise à jour. + + New %1 is available. Please open %2 to download the update. + Un nouveau %1 est disponible. Merci d'ouvrir %2 pour télécharger la mise à jour. - - Checking update server … - Vérification du serveur de mises à jour ... + + Checking update server … + Vérification du serveur de mises à jour ... - - Update status is unknown: Did not check for new updates. - L'état du processus de mise à jour est inconnu. Impossible de vérifier la présence de mises à jour. + + Update status is unknown: Did not check for new updates. + L'état du processus de mise à jour est inconnu. Impossible de vérifier la présence de mises à jour. - - No updates available. Your installation is at the latest version. - Aucune mise à jour disponible. Votre installation est à jour. + + No updates available. Your installation is at the latest version. + Aucune mise à jour disponible. Votre installation est à jour. - - Update Check - Recherche de mise à jour + + Update Check + Recherche de mise à jour - - + + OCC::OwncloudAdvancedSetupPage - - Connect - Connexion + + Connect + Connexion - - - Use &virtual files instead of downloading content immediately %1 - Utiliser les fichiers virtuels %1 + + + Use &virtual files instead of downloading content immediately %1 + Utiliser les fichiers virtuels %1 - - - (experimental) - (expérimental) + + + (experimental) + (expérimental) - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Les fichiers virtuels ne sont pas pris en charge pour les racines de partition Windows en tant que dossier local. Veuillez choisir un sous-dossier valide sous la lettre du lecteur. + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Les fichiers virtuels ne sont pas pris en charge pour les racines de partition Windows en tant que dossier local. Veuillez choisir un sous-dossier valide sous la lettre du lecteur. - - %1 folder "%2" is synced to local folder "%3" - Le dossier %1 "%2" est synchronisé avec le dossier local "%3". + + %1 folder "%2" is synced to local folder "%3" + Le dossier %1 "%2" est synchronisé avec le dossier local "%3". - - Sync the folder "%1" - Synchroniser le dossier "%1" + + Sync the folder "%1" + Synchroniser le dossier "%1" - - Warning: The local folder is not empty. Pick a resolution! - Avertissement : Le dossier local n'est pas vide. Choisissez une option. + + Warning: The local folder is not empty. Pick a resolution! + Avertissement : Le dossier local n'est pas vide. Choisissez une option. - - %1 free space - %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB - espace libre %1 + + %1 free space + %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB + espace libre %1 - - Virtual files are not available for the selected folder - Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné + + Virtual files are not available for the selected folder + Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné - - Local Sync Folder - Dossier de synchronisation local + + Local Sync Folder + Dossier de synchronisation local - - - (%1) - (%1) + + + (%1) + (%1) - - There isn't enough free space in the local folder! - L'espace libre dans le dossier local est insuffisant ! + + There isn't enough free space in the local folder! + L'espace libre dans le dossier local est insuffisant ! - - + + OCC::OwncloudConnectionMethodDialog - - Connection failed - Échec de la connexion + + Connection failed + Échec de la connexion - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Impossible de se connecter au serveur via l'adresse sécurisée indiquée. Que souhaitez-vous faire ?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Impossible de se connecter au serveur via l'adresse sécurisée indiquée. Que souhaitez-vous faire ?</p></body></html> - - Select a different URL - Choisir une URL différente + + Select a different URL + Choisir une URL différente - - Retry unencrypted over HTTP (insecure) - Essayer en clair sur HTTP (non sécurisé) + + Retry unencrypted over HTTP (insecure) + Essayer en clair sur HTTP (non sécurisé) - - Configure client-side TLS certificate - Configurer le certificat TLS client + + Configure client-side TLS certificate + Configurer le certificat TLS client - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Impossible de se connecter à l'adresse sécurisée <em>%1</em>. Que souhaitez-vous faire ?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Impossible de se connecter à l'adresse sécurisée <em>%1</em>. Que souhaitez-vous faire ?</p></body></html> - - + + OCC::OwncloudHttpCredsPage - - &Email - &Adresse mail + + &Email + &Adresse mail - - Connect to %1 - Connexion à %1 + + Connect to %1 + Connexion à %1 - - Enter user credentials - Saisissez les identifiants de connexion de l'utilisateur + + Enter user credentials + Saisissez les identifiants de connexion de l'utilisateur - - + + OCC::OwncloudOAuthCredsPage - Connect to %1 - Connexion à %1 + Connect to %1 + Connexion à %1 - Login in your browser - Connectez vous sur votre navigateur + Login in your browser + Connectez vous sur votre navigateur - - + + OCC::OwncloudPropagator - Error with the metadata. Getting unexpected metadata format. - Erreur avec la métadonnée. Le format de la métadonnée est inattendu. + Error with the metadata. Getting unexpected metadata format. + Erreur avec la métadonnée. Le format de la métadonnée est inattendu. - - - Impossible to get modification time for file in conflict %1 - Impossible de récupérer la date de modification du fichier en conflit %1 + + + Impossible to get modification time for file in conflict %1 + Impossible de récupérer la date de modification du fichier en conflit %1 - - + + OCC::OwncloudSetupPage - - The link to your %1 web interface when you open it in the browser. - %1 will be replaced with the application name - Adresse URL visible dans la barre d'adresse de votre navigateur Web lorsque vous êtes connecté à %1. + + The link to your %1 web interface when you open it in the browser. + %1 will be replaced with the application name + Adresse URL visible dans la barre d'adresse de votre navigateur Web lorsque vous êtes connecté à %1. - - &Next > - &Suivant > + + &Next > + &Suivant > - - Server address does not seem to be valid - L'adresse du serveur ne semble pas être valide + + Server address does not seem to be valid + L'adresse du serveur ne semble pas être valide - - Could not load certificate. Maybe wrong password? - Impossible de charger le certificat. Vérifiez le mot de passe saisi. + + Could not load certificate. Maybe wrong password? + Impossible de charger le certificat. Vérifiez le mot de passe saisi. - - + + OCC::OwncloudSetupWizard - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - <font color="green">Connecté avec succès à %1 : %2 version %3 (%4)</font><br/><br/> + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + <font color="green">Connecté avec succès à %1 : %2 version %3 (%4)</font><br/><br/> - - Invalid URL - URL invalide + + Invalid URL + URL invalide - - Failed to connect to %1 at %2:<br/>%3 - Échec de la connexion à %1 sur %2 :<br/>%3 + + Failed to connect to %1 at %2:<br/>%3 + Échec de la connexion à %1 sur %2 :<br/>%3 - - Timeout while trying to connect to %1 at %2. - Délai d'attente dépassé lors de la connexion à %1 sur %2. + + Timeout while trying to connect to %1 at %2. + Délai d'attente dépassé lors de la connexion à %1 sur %2. - - Trying to connect to %1 at %2 … - Tentative de connexion à %1 sur %2 ... + + Trying to connect to %1 at %2 … + Tentative de connexion à %1 sur %2 ... - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - La demande authentifiée au serveur a été redirigée vers "%1". L'URL est mauvaise, le serveur est mal configuré. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + La demande authentifiée au serveur a été redirigée vers "%1". L'URL est mauvaise, le serveur est mal configuré. - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Accès impossible. Afin de vérifier l'accès au serveur, <a href="%1">cliquez ici</a> et connectez-vous au service avec votre navigateur web. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Accès impossible. Afin de vérifier l'accès au serveur, <a href="%1">cliquez ici</a> et connectez-vous au service avec votre navigateur web. - - There was an invalid response to an authenticated WebDAV request - Il y a eu une réponse invalide à une demande WebDAV authentifiée + + There was an invalid response to an authenticated WebDAV request + Il y a eu une réponse invalide à une demande WebDAV authentifiée - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> - Le dossier de synchronisation local %1 existe déjà, configuration de la synchronisation.<br/><br/> + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + Le dossier de synchronisation local %1 existe déjà, configuration de la synchronisation.<br/><br/> - - Creating local sync folder %1 … - Création du dossier local de synchronisation %1 ... + + Creating local sync folder %1 … + Création du dossier local de synchronisation %1 ... - - OK - OK + + OK + OK - - failed. - échoué. + + failed. + échoué. - - Could not create local folder %1 - Impossible de créer le dossier local %1 + + Could not create local folder %1 + Impossible de créer le dossier local %1 - - No remote folder specified! - Aucun dossier distant spécifié ! + + No remote folder specified! + Aucun dossier distant spécifié ! - - Error: %1 - Erreur : %1 + + Error: %1 + Erreur : %1 - - creating folder on Nextcloud: %1 - Création du dossier sur Nextcloud : %1 + + creating folder on Nextcloud: %1 + Création du dossier sur Nextcloud : %1 - - Remote folder %1 created successfully. - Le dossier distant %1 a été créé avec succès. + + Remote folder %1 created successfully. + Le dossier distant %1 a été créé avec succès. - - The remote folder %1 already exists. Connecting it for syncing. - Le dossier distant %1 existe déjà. Connexion. + + The remote folder %1 already exists. Connecting it for syncing. + Le dossier distant %1 existe déjà. Connexion. - - - The folder creation resulted in HTTP error code %1 - La création du dossier a généré le code d'erreur HTTP %1 + + + The folder creation resulted in HTTP error code %1 + La création du dossier a généré le code d'erreur HTTP %1 - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - La création du dossier distant a échoué car les identifiants de connexion sont erronés !<br/>Veuillez revenir en arrière et vérifier ces derniers.</p> + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + La création du dossier distant a échoué car les identifiants de connexion sont erronés !<br/>Veuillez revenir en arrière et vérifier ces derniers.</p> - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - <p><font color="red">La création du dossier distant a échoué, probablement parce que les informations d'identification fournies sont fausses.</font><br/>Veuillez revenir en arrière et les vérifier.</p> + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + <p><font color="red">La création du dossier distant a échoué, probablement parce que les informations d'identification fournies sont fausses.</font><br/>Veuillez revenir en arrière et les vérifier.</p> - - - Remote folder %1 creation failed with error <tt>%2</tt>. - La création du dossier distant "%1" a échouée avec l'erreur <tt>%2</tt>. + + + Remote folder %1 creation failed with error <tt>%2</tt>. + La création du dossier distant "%1" a échouée avec l'erreur <tt>%2</tt>. - - A sync connection from %1 to remote directory %2 was set up. - Une synchronisation entre le dossier local %1 et le dossier distant %2 a été configurée. + + A sync connection from %1 to remote directory %2 was set up. + Une synchronisation entre le dossier local %1 et le dossier distant %2 a été configurée. - - Successfully connected to %1! - Connecté avec succès à %1 ! + + Successfully connected to %1! + Connecté avec succès à %1 ! - - Connection to %1 could not be established. Please check again. - La connexion à %1 n'a pu être établie. Veuillez réessayer. + + Connection to %1 could not be established. Please check again. + La connexion à %1 n'a pu être établie. Veuillez réessayer. - - Folder rename failed - Echec du renommage du dossier + + Folder rename failed + Echec du renommage du dossier - - Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - Impossible de supprimer et sauvegarder le dossier parce que le dossier ou un fichier qu'il contient est ouvert dans un autre programme. Merci de fermer le dossier ou le fichier et recommencer ou annuler la configuration. + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + Impossible de supprimer et sauvegarder le dossier parce que le dossier ou un fichier qu'il contient est ouvert dans un autre programme. Merci de fermer le dossier ou le fichier et recommencer ou annuler la configuration. - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> - <font color="green"><b>Dossier de synchronisation local %1 créé avec succès !</b></font> + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + <font color="green"><b>Dossier de synchronisation local %1 créé avec succès !</b></font> - - + + OCC::OwncloudWizard - - Add %1 account - Ajout du compte %1 + + Add %1 account + Ajout du compte %1 - - Skip folders configuration - Ignorer la configuration des dossiers + + Skip folders configuration + Ignorer la configuration des dossiers - - Cancel - Annuler + + Cancel + Annuler - - Enable experimental feature? - Activer la fonction expérimentale ? + + Enable experimental feature? + Activer la fonction expérimentale ? - - When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. Switching to this mode will abort any currently running synchronization. This is a new, experimental mode. If you decide to use it, please report any issues that come up. - Lorsque le mode « fichiers virtuels » est activé, aucun fichier ne sera téléchargé initialement. Au lieu de cela, un petit fichier "%1" sera créé pour chaque fichier existant sur le serveur. Le contenu peut être téléchargé en exécutant ces fichiers ou en utilisant leur menu contextuel. + Lorsque le mode « fichiers virtuels » est activé, aucun fichier ne sera téléchargé initialement. Au lieu de cela, un petit fichier "%1" sera créé pour chaque fichier existant sur le serveur. Le contenu peut être téléchargé en exécutant ces fichiers ou en utilisant leur menu contextuel. Le mode fichiers virtuels est mutuellement exclusif avec synchronisation sélective. Les dossiers actuellement non sélectionnés seront convertis en dossiers en ligne uniquement et vos paramètres de synchronisation sélective seront réinitialisés. Le passage à ce mode annulera toute synchronisation en cours. -Il s'agit d'un nouveau mode expérimental. Si vous décidez de l'utiliser, veuillez signaler tout problème qui surviendrait. +Il s'agit d'un nouveau mode expérimental. Si vous décidez de l'utiliser, veuillez signaler tout problème qui surviendrait. - - Enable experimental placeholder mode - Activer la fonction expérimentale de fichiers virtuels ? + + Enable experimental placeholder mode + Activer la fonction expérimentale de fichiers virtuels ? - - Stay safe - Restez en sécurité + + Stay safe + Restez en sécurité - - + + OCC::PasswordInputDialog - - Password for share required - Mot de passe requis pour le partage + + Password for share required + Mot de passe requis pour le partage - - Please enter a password for your share: - Veuillez saisir un mot de passe pour votre partage : + + Please enter a password for your share: + Veuillez saisir un mot de passe pour votre partage : - - + + OCC::PollJob - - Invalid JSON reply from the poll URL - L'URL de sondage a renvoyé une réponse JSON non valide + + Invalid JSON reply from the poll URL + L'URL de sondage a renvoyé une réponse JSON non valide - - + + OCC::ProcessDirectoryJob - - Symbolic links are not supported in syncing. - Les liens symboliques ne sont pas pris en charge par la synchronisation. + + Symbolic links are not supported in syncing. + Les liens symboliques ne sont pas pris en charge par la synchronisation. - - File is listed on the ignore list. - Le fichier est présent dans la liste des fichiers ignorés. + + File is listed on the ignore list. + Le fichier est présent dans la liste des fichiers ignorés. - - File names ending with a period are not supported on this file system. - Les noms de fichier se terminant par un point ne sont pas pris en charge sur votre système. + + File names ending with a period are not supported on this file system. + Les noms de fichier se terminant par un point ne sont pas pris en charge sur votre système. - - File names containing the character "%1" are not supported on this file system. - Les noms de fichiers contenant le caractère "%1" ne sont pas pris en charge par ce système de fichiers. + + File names containing the character "%1" are not supported on this file system. + Les noms de fichiers contenant le caractère "%1" ne sont pas pris en charge par ce système de fichiers. - - File name contains at least one invalid character - Le nom du fichier contient au moins un caractère interdit + + File name contains at least one invalid character + Le nom du fichier contient au moins un caractère interdit - - The file name is a reserved name on this file system. - Le nom du fichier est un nom réservé dans le système de fichier + + The file name is a reserved name on this file system. + Le nom du fichier est un nom réservé dans le système de fichier - - Filename contains trailing spaces. - Le nom du fichier finit par des espaces. + + Filename contains trailing spaces. + Le nom du fichier finit par des espaces. - - Filename contains leading spaces. - Nom de fichier contenant des espaces au début. + + Filename contains leading spaces. + Nom de fichier contenant des espaces au début. - - Filename contains leading and trailing spaces. - Nom de fichier contenant des espaces au début et à la fin. + + Filename contains leading and trailing spaces. + Nom de fichier contenant des espaces au début et à la fin. - - Filename is too long. - Le nom du fichier est trop long. + + Filename is too long. + Le nom du fichier est trop long. - - File/Folder is ignored because it's hidden. - Le fichier ou dossier a été ignoré car il est masqué. + + File/Folder is ignored because it's hidden. + Le fichier ou dossier a été ignoré car il est masqué. - - Stat failed. - Stat échoué. + + Stat failed. + Stat échoué. - - Conflict: Server version downloaded, local copy renamed and not uploaded. - Conflit : la version du serveur a été téléchargée, la version locale renommée et non téléversée. + + Conflict: Server version downloaded, local copy renamed and not uploaded. + Conflit : la version du serveur a été téléchargée, la version locale renommée et non téléversée. - - Case Clash Conflict: Server file downloaded and renamed to avoid clash. - Conflit de casse : fichier serveur téléchargé et renommé pour éviter le conflit. + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. + Conflit de casse : fichier serveur téléchargé et renommé pour éviter le conflit. - - The filename cannot be encoded on your file system. - Le nom de fichier ne peut pas être encodé sur votre système de fichiers. + + The filename cannot be encoded on your file system. + Le nom de fichier ne peut pas être encodé sur votre système de fichiers. - - The filename is blacklisted on the server. - Le nom du fichier est sur la liste noire du serveur. + + The filename is blacklisted on the server. + Le nom du fichier est sur la liste noire du serveur. - - File has extension reserved for virtual files. - Le fichier a une extension réservée pour les fichiers virtuels. + + File has extension reserved for virtual files. + Le fichier a une extension réservée pour les fichiers virtuels. - - size - taille + + size + taille - - permission - permission + + permission + permission - - file id - ID du fichier + + file id + ID du fichier - - Server reported no %1 - Le serveur n'a signalé aucun %1 + + Server reported no %1 + Le serveur n'a signalé aucun %1 - - Cannot sync due to invalid modification time - Impossible de synchroniser à cause d'une date de modification invalide + + Cannot sync due to invalid modification time + Impossible de synchroniser à cause d'une date de modification invalide - - Could not upload file, because it is open in "%1". - Impossible de téléverser le fichier, car il est ouvert dans « %1 ». + + Could not upload file, because it is open in "%1". + Impossible de téléverser le fichier, car il est ouvert dans « %1 ». - - Error while deleting file record %1 from the database - Erreur à la suppression de l'enregistrement du fichier %1 de la base de données + + Error while deleting file record %1 from the database + Erreur à la suppression de l'enregistrement du fichier %1 de la base de données - - Conflict when uploading a folder. It's going to get cleared! - Conflit lors de l'envoi d'un dossier. Il va être supprimé ! + + Conflict when uploading a folder. It's going to get cleared! + Conflit lors de l'envoi d'un dossier. Il va être supprimé ! - - Conflict when uploading a file. It's going to get removed! - Conflit lors de l'envoi d'un fichier. Il va être supprimé ! + + Conflict when uploading a file. It's going to get removed! + Conflit lors de l'envoi d'un fichier. Il va être supprimé ! - - - Moved to invalid target, restoring - Déplacé vers une cible invalide, restauration + + + Moved to invalid target, restoring + Déplacé vers une cible invalide, restauration - - Ignored because of the "choose what to sync" blacklist - Ignoré en raison de la liste noire "Sélectionner le contenu à synchroniser". + + Ignored because of the "choose what to sync" blacklist + Ignoré en raison de la liste noire "Sélectionner le contenu à synchroniser". - - Not allowed because you don't have permission to add subfolders to that folder - Non autorisé car vous n'avez pas la permission d'ajouter des sous-dossiers dans ce dossier + + + Not allowed because you don't have permission to add subfolders to that folder + Non autorisé car vous n'avez pas la permission d'ajouter des sous-dossiers dans ce dossier - - Not allowed because you don't have permission to add files in that folder - Non autorisé car vous n'avez pas la permission d'ajouter des fichiers dans ce dossier + + Not allowed because you don't have permission to add files in that folder + Non autorisé car vous n'avez pas la permission d'ajouter des fichiers dans ce dossier - - Not allowed to upload this file because it is read-only on the server, restoring - Non autorisé à téléverser ce fichier, car il est en lecture seule sur le serveur, restauration en cours + + Not allowed to upload this file because it is read-only on the server, restoring + Non autorisé à téléverser ce fichier, car il est en lecture seule sur le serveur, restauration en cours - - Not allowed to remove, restoring - Suppression non autorisée, restauration en cours + + Not allowed to remove, restoring + Suppression non autorisée, restauration en cours - - Error while reading the database - Erreur de lecture de la base de données + + Error while reading the database + Erreur de lecture de la base de données - - Server replied with an error while reading directory "%1" : %2 - Le serveur a répondu avec une erreur lors de la lecture du dossier "%1" : %2 + + Server replied with an error while reading directory "%1" : %2 + Le serveur a répondu avec une erreur lors de la lecture du dossier "%1" : %2 - - + + OCC::PropagateDirectory - - could not delete file %1 from local DB - Impossible de supprimer le fichier %1 de la base de données locale + + could not delete file %1 from local DB + Impossible de supprimer le fichier %1 de la base de données locale - - Error updating metadata due to invalid modification time - Erreur de mise à jour des métadonnées à cause d'une date de modification invalide + + Error updating metadata due to invalid modification time + Erreur de mise à jour des métadonnées à cause d'une date de modification invalide - - - The folder %1 cannot be made read-only: %2 - Le dossier %1 ne peut être rendu en lecture seule : %2 + + + The folder %1 cannot be made read-only: %2 + Le dossier %1 ne peut être rendu en lecture seule : %2 - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + Error updating metadata: %1 + Erreur lors de la mise à jour des métadonnées : %1 - - File is currently in use - Le fichier est actuellement en cours d'utilisation + + File is currently in use + Le fichier est actuellement en cours d'utilisation - - + + OCC::PropagateDownloadFile - - could not get file %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + could not get file %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - File %1 cannot be downloaded because encryption information is missing. - Le fichier %1 ne peut pas être téléchargé car les informations de chiffrement sont manquantes. + + File %1 cannot be downloaded because encryption information is missing. + Le fichier %1 ne peut pas être téléchargé car les informations de chiffrement sont manquantes. - - - File has changed since discovery - Le fichier a changé depuis sa découverte + + + File has changed since discovery + Le fichier a changé depuis sa découverte - - - Could not delete file record %1 from local DB - Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale + + + Could not delete file record %1 from local DB + Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale - - File %1 can not be downloaded because of a local file name clash! - Le fichier %1 ne peut pas être téléchargé en raison d'un conflit sur le nom de fichier local. + + File %1 can not be downloaded because of a local file name clash! + Le fichier %1 ne peut pas être téléchargé en raison d'un conflit sur le nom de fichier local. - - The download would reduce free local disk space below the limit - Le téléchargement réduira l'espace disque libre en dessous de la limite + + The download would reduce free local disk space below the limit + Le téléchargement réduira l'espace disque libre en dessous de la limite - - Free space on disk is less than %1 - Il y a moins de %1 d'espace libre sur le disque + + Free space on disk is less than %1 + Il y a moins de %1 d'espace libre sur le disque - - File was deleted from server - Le fichier a été supprimé du serveur + + File was deleted from server + Le fichier a été supprimé du serveur - - The file could not be downloaded completely. - Le fichier n'a pas pu être téléchargé intégralement. + + The file could not be downloaded completely. + Le fichier n'a pas pu être téléchargé intégralement. - - The downloaded file is empty, but the server said it should have been %1. - Le fichier téléchargé est vide bien que le serveur indique que sa taille devrait être de %1. + + The downloaded file is empty, but the server said it should have been %1. + Le fichier téléchargé est vide bien que le serveur indique que sa taille devrait être de %1. - - - File %1 has invalid modified time reported by server. Do not save it. - Le fichier %1 présente une date de modification invalide sur le serveur. Enregistrement impossible. + + + File %1 has invalid modified time reported by server. Do not save it. + Le fichier %1 présente une date de modification invalide sur le serveur. Enregistrement impossible. - - File %1 downloaded but it resulted in a local file name clash! - Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! + + File %1 downloaded but it resulted in a local file name clash! + Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + Error updating metadata: %1 + Erreur lors de la mise à jour des métadonnées : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - + + OCC::PropagateItemJob - - ; Restoration Failed: %1 - ; Échec de la restauration : %1 + + ; Restoration Failed: %1 + ; Échec de la restauration : %1 - - A file or folder was removed from a read only share, but restoring failed: %1 - Un fichier ou un dossier a été supprimé d'un partage en lecture seule, mais la restauration a échoué : %1 + + A file or folder was removed from a read only share, but restoring failed: %1 + Un fichier ou un dossier a été supprimé d'un partage en lecture seule, mais la restauration a échoué : %1 - - + + OCC::PropagateLocalMkdir - - could not delete file %1, error: %2 - impossible de supprimer le fichier %1. Erreur : %2 + + could not delete file %1, error: %2 + impossible de supprimer le fichier %1. Erreur : %2 - - Folder %1 cannot be created because of a local file or folder name clash! - Le dossier %1 n'a pu être créé à cause d'un conflit local de nom de fichier ou de dossier ! + + Folder %1 cannot be created because of a local file or folder name clash! + Le dossier %1 n'a pu être créé à cause d'un conflit local de nom de fichier ou de dossier ! - - Could not create folder %1 - Impossible de créer le dossier %1 + + Could not create folder %1 + Impossible de créer le dossier %1 - - The folder %1 cannot be made read-only: %2 - Le dossier %1 ne peut être rendu en lecture seule : %2 + + The folder %1 cannot be made read-only: %2 + Le dossier %1 ne peut être rendu en lecture seule : %2 - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + Error updating metadata: %1 + Erreur lors de la mise à jour des métadonnées : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - + + OCC::PropagateLocalRemove - - Could not remove %1 because of a local file name clash - Impossible de retirer %1 en raison d'un conflit de nom de fichier local + + Could not remove %1 because of a local file name clash + Impossible de retirer %1 en raison d'un conflit de nom de fichier local - - Could not delete file record %1 from local DB - Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale + + Could not delete file record %1 from local DB + Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale - - + + OCC::PropagateLocalRename - - Folder %1 cannot be renamed because of a local file or folder name clash! - Le dossier %1 ne peut pas être renommé en raison d’un conflit de nom avec un fichier ou un dossier local ! + + Folder %1 cannot be renamed because of a local file or folder name clash! + Le dossier %1 ne peut pas être renommé en raison d’un conflit de nom avec un fichier ou un dossier local ! - - File %1 downloaded but it resulted in a local file name clash! - Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! + + File %1 downloaded but it resulted in a local file name clash! + Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! - - - - could not get file %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + + + could not get file %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - - Error setting pin state - Erreur lors de la modification de l'état du fichier + + + Error setting pin state + Erreur lors de la modification de l'état du fichier - - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + + Error updating metadata: %1 + Erreur lors de la mise à jour des métadonnées : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - - Could not delete file record %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + + Could not delete file record %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - Failed to propagate directory rename in hierarchy - Impossible de propager le renommage du dossier dans la hiérarchie + + Failed to propagate directory rename in hierarchy + Impossible de propager le renommage du dossier dans la hiérarchie - - Failed to rename file - Échec lors du changement de nom du fichier + + Failed to rename file + Échec lors du changement de nom du fichier - - + + OCC::PropagateRemoteDelete - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur reçue est "%1 %2". + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur reçue est "%1 %2". - - Could not delete file record %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + Could not delete file record %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - + + OCC::PropagateRemoteDeleteEncryptedRootFolder - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". - - + + OCC::PropagateRemoteMkdir - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". - - Failed to encrypt a folder %1 - Échec du chiffrement d'un dossier %1 + + Failed to encrypt a folder %1 + Échec du chiffrement d'un dossier %1 - - Error writing metadata to the database: %1 - Erreur d'écriture des métadonnées dans la base de données : %1 + + Error writing metadata to the database: %1 + Erreur d'écriture des métadonnées dans la base de données : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - + + OCC::PropagateRemoteMove - - Could not rename %1 to %2, error: %3 - Impossible de renommer %1 en %2, erreur: %3 + + Could not rename %1 to %2, error: %3 + Impossible de renommer %1 en %2, erreur: %3 - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". - - could not get file %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + could not get file %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - Could not delete file record %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + Could not delete file record %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + + Error updating metadata: %1 + Erreur lors de la mise à jour des métadonnées : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - Error setting pin state - Erreur lors de la modification de l'état du fichier + + Error setting pin state + Erreur lors de la modification de l'état du fichier - - Error writing metadata to the database - Erreur à l'écriture des métadonnées dans la base de données + + Error writing metadata to the database + Erreur à l'écriture des métadonnées dans la base de données - - + + OCC::PropagateUploadFileCommon - - Failed to upload encrypted file. - Échec d'envoi du fichier chiffré. + + Failed to upload encrypted file. + Échec d'envoi du fichier chiffré. - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Impossible de téléverser le fichier %1 car un autre fichier de même nom existe, différent seulement par la casse. + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Impossible de téléverser le fichier %1 car un autre fichier de même nom existe, différent seulement par la casse. - - - Upload of %1 exceeds the quota for the folder - L'envoi de %1 amène un dépassement de quota pour le dossier + + + Upload of %1 exceeds the quota for the folder + L'envoi de %1 amène un dépassement de quota pour le dossier - - - - File %1 has invalid modification time. Do not upload to the server. - Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. + + + + File %1 has invalid modification time. Do not upload to the server. + Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. - - File Removed (start upload) %1 - Fichier supprimé (début du téléchargement) %1 + + File Removed (start upload) %1 + Fichier supprimé (début du téléchargement) %1 - - Local file changed during syncing. It will be resumed. - Fichier local modifié pendant la synchronisation. Elle va reprendre. + + Local file changed during syncing. It will be resumed. + Fichier local modifié pendant la synchronisation. Elle va reprendre. - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. - - Failed to unlock encrypted folder. - Impossible de déverrouiller le dossier chiffré. + + Failed to unlock encrypted folder. + Impossible de déverrouiller le dossier chiffré. - - Unable to upload an item with invalid characters - Impossible de téléverser un élément contenant des caractères non valides + + Unable to upload an item with invalid characters + Impossible de téléverser un élément contenant des caractères non valides - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + Error updating metadata: %1 + Erreur lors de la mise à jour des métadonnées : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - + + OCC::PropagateUploadFileNG - - The local file was removed during sync. - Fichier local supprimé pendant la synchronisation. + + The local file was removed during sync. + Fichier local supprimé pendant la synchronisation. - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. - - Poll URL missing - URL du sondage manquante + + Poll URL missing + URL du sondage manquante - - Unexpected return code from server (%1) - Le serveur a retourné un code inattendu (%1) + + Unexpected return code from server (%1) + Le serveur a retourné un code inattendu (%1) - - Missing File ID from server - L'identifiant de fichier est manquant sur le serveur + + Missing File ID from server + L'identifiant de fichier est manquant sur le serveur - - Missing ETag from server - L'information Etag de modification de fichier est manquante sur le serveur + + Missing ETag from server + L'information Etag de modification de fichier est manquante sur le serveur - - + + OCC::PropagateUploadFileV1 - - Poll URL missing - URL de sondage manquante + + Poll URL missing + URL de sondage manquante - - The local file was removed during sync. - Fichier local supprimé pendant la synchronisation. + + The local file was removed during sync. + Fichier local supprimé pendant la synchronisation. - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. - - The server did not acknowledge the last chunk. (No e-tag was present) - Le serveur n'a pas confirmé la réception du dernier morceau. (Aucun e-tag n'était présent). + + The server did not acknowledge the last chunk. (No e-tag was present) + Le serveur n'a pas confirmé la réception du dernier morceau. (Aucun e-tag n'était présent). - - + + OCC::ProxyAuthDialog - - Proxy authentication required - Authentification requise sur le proxy + + Proxy authentication required + Authentification requise sur le proxy - - Username: - Nom d’utilisateur : + + Username: + Nom d’utilisateur : - - Proxy: - Proxy : + + Proxy: + Proxy : - - The proxy server needs a username and password. - Le serveur proxy requiert un identifiant et un mot de passe. + + The proxy server needs a username and password. + Le serveur proxy requiert un identifiant et un mot de passe. - - Password: - Mot de passe : + + Password: + Mot de passe : - - + + OCC::SelectiveSyncDialog - - Choose What to Sync - Sélectionner le contenu à synchroniser + + Choose What to Sync + Sélectionner le contenu à synchroniser - - + + OCC::SelectiveSyncWidget - - Loading … - Chargement… + + Loading … + Chargement… - - Deselect remote folders you do not wish to synchronize. - Désélectionnez les sous-dossiers distants que vous ne souhaitez pas synchroniser. + + Deselect remote folders you do not wish to synchronize. + Désélectionnez les sous-dossiers distants que vous ne souhaitez pas synchroniser. - - Name - Nom + + Name + Nom - - Size - Taille + + Size + Taille - - - No subfolders currently on the server. - Aucun sous-dossier sur le serveur. + + + No subfolders currently on the server. + Aucun sous-dossier sur le serveur. - - An error occurred while loading the list of sub folders. - Une erreur est survenue lors du chargement de la liste des sous-dossiers. + + An error occurred while loading the list of sub folders. + Une erreur est survenue lors du chargement de la liste des sous-dossiers. - - + + OCC::ServerNotificationHandler - - Reply - Répondre + + Reply + Répondre - Dismiss - Ignorer + Dismiss + Ignorer - - + + OCC::SettingsDialog - - Settings - Paramètres + + Settings + Paramètres - - %1 Settings - This name refers to the application name e.g Nextcloud - Paramètres %1 + + %1 Settings + This name refers to the application name e.g Nextcloud + Paramètres %1 - - New Account - Nouveau compte + + New Account + Nouveau compte - - General - Paramètres + + General + Paramètres - Network - Réseau + Network + Réseau - - Account - Compte + + Account + Compte - - + + OCC::ShareManager - - Error - Erreur + + Error + Erreur - - + + OCC::ShareModel - - Secure file drop link - Lien de dépôt sécurisé de fichier + + Secure file drop link + Lien de dépôt sécurisé de fichier - - Share link - Partager un lien + + Share link + Partager un lien - - Link share - Lien de partage + + Link share + Lien de partage - - Internal link - Lien interne + + Internal link + Lien interne - - Secure file drop - Dépôt de fichier sécurisé + + Secure file drop + Dépôt de fichier sécurisé - - Could not find local folder for %1 - Impossible de trouver le dossier local pour %1 + + Could not find local folder for %1 + Impossible de trouver le dossier local pour %1 - - + - + - Enter a note for the recipient - Saisissez un commentaire pour le destinataire + Enter a note for the recipient + Saisissez un commentaire pour le destinataire - - + + OCC::ShareUserLine - Username - Nom d’utilisateur + Username + Nom d’utilisateur - Can edit - Peut modifier + Can edit + Peut modifier - Note: - Note : + Note: + Note : - Password: - Mot de passe : + Password: + Mot de passe : - Expires: - Expire le : + Expires: + Expire le : - - + + OCC::ShareeModel - - - Search globally - Rechercher globalement + + + Search globally + Rechercher globalement - - No results found - Aucun résultat trouvé + + No results found + Aucun résultat trouvé - - Global search results - Résultats de la recherche globale + + Global search results + Résultats de la recherche globale - - %1 (%2) - sharee (shareWithAdditionalInfo) - %1 (%2) + + %1 (%2) + sharee (shareWithAdditionalInfo) + %1 (%2) - - + + OCC::SocketApi - - Failed to encrypt folder at "%1" - Échec du chiffrement du dossier à "%1" + + Failed to encrypt folder at "%1" + Échec du chiffrement du dossier à "%1" - - The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - Le compte %1 n'a pas de chiffrement de bout en bout configuré. Veuillez le configurer dans les paramètres de votre compte pour activer le chiffrement des dossiers. + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. + Le compte %1 n'a pas de chiffrement de bout en bout configuré. Veuillez le configurer dans les paramètres de votre compte pour activer le chiffrement des dossiers. - - Failed to encrypt folder - Échec du chiffrement du dossier + + Failed to encrypt folder + Échec du chiffrement du dossier - - Could not encrypt the following folder: "%1". + + Could not encrypt the following folder: "%1". Server replied with error: %2 - Impossible de chiffrer le dossier suivant : "%1". + Impossible de chiffrer le dossier suivant : "%1". -Le serveur a répondu avec l'erreur : %2 +Le serveur a répondu avec l'erreur : %2 - - Folder encrypted successfully - Dossier chiffré avec succès + + Folder encrypted successfully + Dossier chiffré avec succès - - The following folder was encrypted successfully: "%1" - Le dossier suivant a été chiffré avec succès : "%1" + + The following folder was encrypted successfully: "%1" + Le dossier suivant a été chiffré avec succès : "%1" - - Context menu share - Partage du menu contextuel + + Context menu share + Partage du menu contextuel - - Select new location … - Sélectionnez le nouvel emplacement ... + + Select new location … + Sélectionnez le nouvel emplacement ... - - I shared something with you - J'ai partagé quelque chose avec vous + + I shared something with you + J'ai partagé quelque chose avec vous - - - Share options - Options de partage + + + Share options + Options de partage - - - Activity - Activité + + + Activity + Activité - - Copy private link to clipboard - Copier le lien privé dans le presse-papier + + Copy private link to clipboard + Copier le lien privé dans le presse-papier - - Send private link by email … - Envoyer le lien privé par e-mail ... + + Send private link by email … + Envoyer le lien privé par e-mail ... - - Leave this share - Quitter ce partage + + Leave this share + Quitter ce partage - - Resharing this file is not allowed - Repartager ce fichier est interdit + + Resharing this file is not allowed + Repartager ce fichier est interdit - - Resharing this folder is not allowed - Repartager ce dossier est interdit + + Resharing this folder is not allowed + Repartager ce dossier est interdit - - Copy secure file drop link - Copier le lien de dépôt sécurisé de fichier + + Copy secure file drop link + Copier le lien de dépôt sécurisé de fichier - - - Copy public link - Copier le lien public + + + Copy public link + Copier le lien public - - Copy secure filedrop link - Copier le lien de dépôt de fichier sécurisé + + Copy secure filedrop link + Copier le lien de dépôt de fichier sécurisé - - Copy internal link - Copier le lien interne + + Copy internal link + Copier le lien interne - - Encrypt - Chiffrer + + Encrypt + Chiffrer - - Lock file - Verrouiller le fichier + + Lock file + Verrouiller le fichier - - Unlock file - Déverrouiller le fichier + + Unlock file + Déverrouiller le fichier - - Locked by %1 - Verrouillé par %1 + + Locked by %1 + Verrouillé par %1 - - Expires in %1 minutes - remaining time before lock expires - - Expire dans %1 minute - Expire dans %1 minutes - + + Expires in %1 minutes + remaining time before lock expires + + Expire dans %1 minute + Expire dans %1 minutes + - - Edit - Éditer + + Edit + Éditer - - Open in browser - Ouvrir dans le navigateur + + Open in browser + Ouvrir dans le navigateur - - Resolve conflict … - Résoudre le conflit… + + Resolve conflict … + Résoudre le conflit… - - Move and rename … - Déplacer et renommer... + + Move and rename … + Déplacer et renommer... - - Move, rename and upload … - Déplacer, renommer et téléverser… + + Move, rename and upload … + Déplacer, renommer et téléverser… - - Delete local changes - Supprimer les modifications locales + + Delete local changes + Supprimer les modifications locales - - Move and upload … - Déplacer et téléverser… + + Move and upload … + Déplacer et téléverser… - - Delete - Supprimer + + Delete + Supprimer - - + + OCC::SslButton - - <h3>Certificate Details</h3> - <h3>Détails du certificat</h3> + + <h3>Certificate Details</h3> + <h3>Détails du certificat</h3> - - Common Name (CN): - Nom commun (CN) : + + Common Name (CN): + Nom commun (CN) : - - Subject Alternative Names: - Noms alternatifs du sujet : + + Subject Alternative Names: + Noms alternatifs du sujet : - - Organization (O): - Organisation (O) : + + Organization (O): + Organisation (O) : - - Organizational Unit (OU): - Unité d'organisation (OU) : + + Organizational Unit (OU): + Unité d'organisation (OU) : - - State/Province: - État/Région : + + State/Province: + État/Région : - - Country: - Pays : + + Country: + Pays : - - Serial: - Numéro de série : + + Serial: + Numéro de série : - - <h3>Issuer</h3> - <h3>Émetteur</h3> + + <h3>Issuer</h3> + <h3>Émetteur</h3> - - Issuer: - Émetteur : + + Issuer: + Émetteur : - - Issued on: - Émis le : + + Issued on: + Émis le : - - Expires on: - Expire le : + + Expires on: + Expire le : - - <h3>Fingerprints</h3> - <h3>Empreintes numériques</h3> + + <h3>Fingerprints</h3> + <h3>Empreintes numériques</h3> - - SHA-256: - SHA-256 : + + SHA-256: + SHA-256 : - - SHA-1: - SHA-1 : + + SHA-1: + SHA-1 : - - <p><b>Note:</b> This certificate was manually approved</p> - <p><b>Note :</b> Ce certificat a été approuvé manuellement</p> + + <p><b>Note:</b> This certificate was manually approved</p> + <p><b>Note :</b> Ce certificat a été approuvé manuellement</p> - - %1 (self-signed) - %1 (auto-signé) + + %1 (self-signed) + %1 (auto-signé) - - %1 - %1 + + %1 + %1 - - This connection is encrypted using %1 bit %2. + + This connection is encrypted using %1 bit %2. - Cette connexion est chiffrée en utilisant %1 bit %2. + Cette connexion est chiffrée en utilisant %1 bit %2. - - This connection is NOT secure as it is not encrypted. + + This connection is NOT secure as it is not encrypted. - Cette connexion n'est PAS sécurisée car elle n'est pas chiffrée. + Cette connexion n'est PAS sécurisée car elle n'est pas chiffrée. - - Server version: %1 - Version du serveur : %1 + + Server version: %1 + Version du serveur : %1 - - No support for SSL session tickets/identifiers - Identifiants/tickets de sessions SSL non pris en charge + + No support for SSL session tickets/identifiers + Identifiants/tickets de sessions SSL non pris en charge - - Certificate information: - Informations du certificat : + + Certificate information: + Informations du certificat : - - The connection is not secure - La connexion n'est pas sécurisée + + The connection is not secure + La connexion n'est pas sécurisée - - + + OCC::SslErrorDialog - - Trust this certificate anyway - Faire confiance à ce certificat malgré tout + + Trust this certificate anyway + Faire confiance à ce certificat malgré tout - - Untrusted Certificate - Certificat non fiable + + Untrusted Certificate + Certificat non fiable - - Cannot connect securely to <i>%1</i>: - Impossible de se connecter de manière sécurisée à <i>%1</i> : + + Cannot connect securely to <i>%1</i>: + Impossible de se connecter de manière sécurisée à <i>%1</i> : - - Additional errors: - Erreurs supplémentaires : + + Additional errors: + Erreurs supplémentaires : - - with Certificate %1 - avec certificat %1 + + with Certificate %1 + avec certificat %1 - - - - &lt;not specified&gt; - &lt;non spécifié&gt; + + + + &lt;not specified&gt; + &lt;non spécifié&gt; - - - Organization: %1 - Organisation : %1 + + + Organization: %1 + Organisation : %1 - - - Unit: %1 - Unité : %1 + + + Unit: %1 + Unité : %1 - - - Country: %1 - Pays : %1 + + + Country: %1 + Pays : %1 - - Fingerprint (SHA1): <tt>%1</tt> - Empreinte (SHA1) : <tt>%1</tt> + + Fingerprint (SHA1): <tt>%1</tt> + Empreinte (SHA1) : <tt>%1</tt> - - Fingerprint (SHA-256): <tt>%1</tt> - Empreinte (SHA-256): <tt>%1</tt> + + Fingerprint (SHA-256): <tt>%1</tt> + Empreinte (SHA-256): <tt>%1</tt> - - Fingerprint (SHA-512): <tt>%1</tt> - Empreinte (SHA-512): <tt>%1</tt> + + Fingerprint (SHA-512): <tt>%1</tt> + Empreinte (SHA-512): <tt>%1</tt> - - Effective Date: %1 - Date de début de validité : %1 + + Effective Date: %1 + Date de début de validité : %1 - - Expiration Date: %1 - Date d'expiration : %1 + + Expiration Date: %1 + Date d'expiration : %1 - - Issuer: %1 - Émetteur : %1 + + Issuer: %1 + Émetteur : %1 - - + + OCC::SyncEngine - - %1 (skipped due to earlier error, trying again in %2) - %1 (ignoré à cause d'une précédente erreur, nouvel essai dans %2) + + %1 (skipped due to earlier error, trying again in %2) + %1 (ignoré à cause d'une précédente erreur, nouvel essai dans %2) - - Could not update file: %1 - Impossible de mettre à jour le fichier : %1 + + Could not update file: %1 + Impossible de mettre à jour le fichier : %1 - - Could not update virtual file metadata: %1 - Impossible de mettre à jour les métadonnées du fichier virutel : %1 + + Could not update virtual file metadata: %1 + Impossible de mettre à jour les métadonnées du fichier virutel : %1 - - Could not update file metadata: %1 - Impossible de mettre à jour les métadonnées du fichier : %1 + + Could not update file metadata: %1 + Impossible de mettre à jour les métadonnées du fichier : %1 - - Could not set file record to local DB: %1 - Impossible de définir l'enregistrement du fichier dans la base de données locale : %1 + + Could not set file record to local DB: %1 + Impossible de définir l'enregistrement du fichier dans la base de données locale : %1 - - Unresolved conflict. - conflit non résolu. + + Unresolved conflict. + conflit non résolu. - - Only %1 are available, need at least %2 to start - Placeholders are postfixed with file sizes using Utility::octetsToString() - Seulement %1 disponibles, il faut au moins %2 pour démarrer + + Only %1 are available, need at least %2 to start + Placeholders are postfixed with file sizes using Utility::octetsToString() + Seulement %1 disponibles, il faut au moins %2 pour démarrer - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. - Impossible d'accéder ou de créer une base de données locale de synchronisation. Assurez vous de disposer des droits d'écriture dans le dossier de synchronisation. + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. + Impossible d'accéder ou de créer une base de données locale de synchronisation. Assurez vous de disposer des droits d'écriture dans le dossier de synchronisation. - - Using virtual files with suffix, but suffix is not set - Utilisation de fichiers virtuels avec suffixe, mais le suffixe n'est pas défini + + Using virtual files with suffix, but suffix is not set + Utilisation de fichiers virtuels avec suffixe, mais le suffixe n'est pas défini - - Unable to read the blacklist from the local database - Impossible de lire la liste noire de la base de données locale + + Unable to read the blacklist from the local database + Impossible de lire la liste noire de la base de données locale - - Unable to read from the sync journal. - Impossible de lire le journal de synchronisation. + + Unable to read from the sync journal. + Impossible de lire le journal de synchronisation. - - Cannot open the sync journal - Impossible d'ouvrir le journal de synchronisation + + Cannot open the sync journal + Impossible d'ouvrir le journal de synchronisation - - Disk space is low: Downloads that would reduce free space below %1 were skipped. - L'espace disque est faible : les téléchargements qui amèneraient à réduire l'espace libre en dessous de %1 ont été ignorés. + + Disk space is low: Downloads that would reduce free space below %1 were skipped. + L'espace disque est faible : les téléchargements qui amèneraient à réduire l'espace libre en dessous de %1 ont été ignorés. - - There is insufficient space available on the server for some uploads. - Il n'y a pas suffisamment d’espace disponible sur le serveur pour certains envois. + + There is insufficient space available on the server for some uploads. + Il n'y a pas suffisamment d’espace disponible sur le serveur pour certains envois. - - + + OCC::SyncJournalDb - - Failed to connect database. - Impossible de connecter la base de données. + + Failed to connect database. + Impossible de connecter la base de données. - - + + OCC::SyncStatusSummary - - - Offline - Hors ligne + + + Offline + Hors ligne - - - - All synced! - Tout est synchronisé ! + + + + All synced! + Tout est synchronisé ! - - Some files couldn't be synced! - Certains fichiers n’ont pas pu être synchronisés ! + + Some files couldn't be synced! + Certains fichiers n’ont pas pu être synchronisés ! - - See below for errors - Voir ci-dessous pour les erreurs + + See below for errors + Voir ci-dessous pour les erreurs - - Preparing sync - Préparation de la synchronisation + + Preparing sync + Préparation de la synchronisation - - - Syncing - Synchronisation + + + Syncing + Synchronisation - - Sync paused - Synchronisation mise en pause + + Sync paused + Synchronisation mise en pause - - Some files could not be synced! - Certains fichiers n’ont pas pu être synchronisés ! + + Some files could not be synced! + Certains fichiers n’ont pas pu être synchronisés ! - - See below for warnings - Voir ci-dessous pour les avertissements + + See below for warnings + Voir ci-dessous pour les avertissements - - %1 of %2 · %3 left - %1 sur %2 · %3 restants + + %1 of %2 · %3 left + %1 sur %2 · %3 restants - - %1 of %2 - %1 sur 2% + + %1 of %2 + %1 sur 2% - - Syncing file %1 of %2 - Synchronisation du fichier %1 sur %2 + + Syncing file %1 of %2 + Synchronisation du fichier %1 sur %2 - - + + OCC::Systray - - Download - Télécharger + + Download + Télécharger - - Add account - Ajouter un compte + + Add account + Ajouter un compte - - Open main dialog - Ouvrir la boîte de dialogue principale + + Open main dialog + Ouvrir la boîte de dialogue principale - - - Pause sync - Suspendre la synchronisation + + + Pause sync + Suspendre la synchronisation - - - Resume sync - Relancer la synchro + + + Resume sync + Relancer la synchro - - Settings - Paramètres + + Settings + Paramètres - - Help - Aide + + Help + Aide - - Exit %1 - Quitter %1 + + Exit %1 + Quitter %1 - - Pause sync for all - Suspendre toutes les synchros + + Pause sync for all + Suspendre toutes les synchros - - Resume sync for all - Relancer toutes les synchros + + Resume sync for all + Relancer toutes les synchros - - %1: %2 - %1 : %2 + + %1: %2 + %1 : %2 - - + + OCC::Theme - - <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>Client de bureau %1</p> <p>Version %1. Pour plus d'informations, cliquez <a href='%2'>ici</a>.</p> + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + <p>Client de bureau %1</p> <p>Version %1. Pour plus d'informations, cliquez <a href='%2'>ici</a>.</p> - <p>%1 Desktop Client</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>Client de bureau %1</p> + <p>%1 Desktop Client</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + <p>Client de bureau %1</p> - - <p><small>Using virtual files plugin: %1</small></p> - <p><small>Utilise l'extension de fichiers virtuels : %1</small></p> + + <p><small>Using virtual files plugin: %1</small></p> + <p><small>Utilise l'extension de fichiers virtuels : %1</small></p> - - <p>%1 desktop client %2</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 %2</p> + + <p>%1 desktop client %2</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + <p>%1 %2</p> - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>Version %1. Pour plus d’informations, veuillez cliquer <a href='%2'>ici</a>.</p> + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>Version %1. Pour plus d’informations, veuillez cliquer <a href='%2'>ici</a>.</p> - - <p>This release was supplied by %1.</p> - <p>Cette version a été fournie par %1.</p> + + <p>This release was supplied by %1.</p> + <p>Cette version a été fournie par %1.</p> - - + + OCC::UnifiedSearchResultsListModel - - Failed to fetch providers. - Échec de la récupération des fournisseurs. + + Failed to fetch providers. + Échec de la récupération des fournisseurs. - - Failed to fetch search providers for '%1'. Error: %2 - Échec de la récupération des fournisseurs de recherche pour '%1'. Erreur : %2 + + Failed to fetch search providers for '%1'. Error: %2 + Échec de la récupération des fournisseurs de recherche pour '%1'. Erreur : %2 - - Search has failed for '%2'. - La recherche de '%2' a échoué. + + Search has failed for '%2'. + La recherche de '%2' a échoué. - - Search has failed for '%1'. Error: %2 - La recherche de '%1' a échoué. Erreur: %2 + + Search has failed for '%1'. Error: %2 + La recherche de '%1' a échoué. Erreur: %2 - - + + OCC::UpdateE2eeFolderMetadataJob - - Failed to update folder metadata. - Échec du téléversement du dossier des métadonnées. + + Failed to update folder metadata. + Échec du téléversement du dossier des métadonnées. - - Failed to unlock encrypted folder. - Échec du déverrouillage du dossier chiffré. + + Failed to unlock encrypted folder. + Échec du déverrouillage du dossier chiffré. - - Failed to finalize item. - Échec de finalisation de l’élément. + + Failed to finalize item. + Échec de finalisation de l’élément. - - + + OCC::UpdateE2eeFolderUsersMetadataJob - - - - - - - - - - Error updating metadata for a folder %1 - Erreur lors de la mise à jour des métadonnées pour un dossier %1 + + + + + + + + + + Error updating metadata for a folder %1 + Erreur lors de la mise à jour des métadonnées pour un dossier %1 - - Could not fetch public key for user %1 - Impossible de récupérer la clé publique pour l'utilisateur %1 + + Could not fetch public key for user %1 + Impossible de récupérer la clé publique pour l'utilisateur %1 - - Could not find root encrypted folder for folder %1 - Impossible de trouver le dossier racine chiffré pour le dossier %1 + + Could not find root encrypted folder for folder %1 + Impossible de trouver le dossier racine chiffré pour le dossier %1 - - Could not add or remove user %1 to access folder %2 - Impossible de supprimer l’utilisateur %1 au dossier d’accès %2 ou de l’y ajouter + + Could not add or remove user %1 to access folder %2 + Impossible de supprimer l’utilisateur %1 au dossier d’accès %2 ou de l’y ajouter - Could not add or remove a folder user %1, for folder %2 - Impossible d'ajouter ou de supprimer un dossier utilisateur %1, pour le dossier %2. + Could not add or remove a folder user %1, for folder %2 + Impossible d'ajouter ou de supprimer un dossier utilisateur %1, pour le dossier %2. - - Failed to unlock a folder. - Échec du déverrouillage d’un dossier. + + Failed to unlock a folder. + Échec du déverrouillage d’un dossier. - - + + OCC::User - - Retry all uploads - Relancer tous les envois + + %1 notifications + + + + + Retry all uploads + Relancer tous les envois - - - Resolve conflict - Résoudre le conflit + + + Resolve conflict + Résoudre le conflit - - + + OCC::UserModel - - Confirm Account Removal - Confirmer le retrait du compte + + Confirm Account Removal + Confirmer le retrait du compte - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Êtes-vous certain de vouloir retirer la connexion au compte <i>%1</i> ?</p><p><b>Note :</b> cette opération <b>ne supprimera aucun de vos fichiers</b> et ne supprimera pas non plus votre compte du serveur.</p> + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Êtes-vous certain de vouloir retirer la connexion au compte <i>%1</i> ?</p><p><b>Note :</b> cette opération <b>ne supprimera aucun de vos fichiers</b> et ne supprimera pas non plus votre compte du serveur.</p> - - Remove connection - Supprimer la connexion + + Remove connection + Supprimer la connexion - - Cancel - Annuler + + Cancel + Annuler - - + + OCC::UserStatusSelectorModel - - Could not fetch predefined statuses. Make sure you are connected to the server. - Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. + + Could not fetch predefined statuses. Make sure you are connected to the server. + Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. - - Could not fetch status. Make sure you are connected to the server. - Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. + + Could not fetch status. Make sure you are connected to the server. + Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. - - Status feature is not supported. You will not be able to set your status. - La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. + + Status feature is not supported. You will not be able to set your status. + La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. - - Emojis are not supported. Some status functionality may not work. - Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. + + Emojis are not supported. Some status functionality may not work. + Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. - - Could not set status. Make sure you are connected to the server. - Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. + + Could not set status. Make sure you are connected to the server. + Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. - - Could not clear status message. Make sure you are connected to the server. - Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. + + Could not clear status message. Make sure you are connected to the server. + Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. - - - Don't clear - Ne pas effacer + + + Don't clear + Ne pas effacer - - 30 minutes - 30 minutes + + 30 minutes + 30 minutes - - - 1 hour - 1 heure + + + 1 hour + 1 heure - - 4 hours - 4 heures + + 4 hours + 4 heures - - - Today - Aujourd'hui + + + Today + Aujourd'hui - - - This week - Cette semaine + + + This week + Cette semaine - - Less than a minute - Il y a moins d'une minute + + Less than a minute + Il y a moins d'une minute - - 1 minute - 1 minute + + 1 minute + 1 minute - - %1 minutes - %1 minutes + + %1 minutes + %1 minutes - - %1 hours - %1 heures + + %1 hours + %1 heures - - 1 day - 1 jour + + 1 day + 1 jour - - %1 days - %1 jours + + %1 days + %1 jours - - + + OCC::ValidateChecksumHeader - - The checksum header is malformed. - L’en-tête de la somme de contrôle est mal formé. + + The checksum header is malformed. + L’en-tête de la somme de contrôle est mal formé. - - The checksum header contained an unknown checksum type "%1" - L’en-tête de la somme de contrôle contenait un type de somme de contrôle inconnu « "%1" » + + The checksum header contained an unknown checksum type "%1" + L’en-tête de la somme de contrôle contenait un type de somme de contrôle inconnu « "%1" » - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Le fichier téléchargé ne correspond pas à la somme de contrôle, il sera repris. "%1" != "%2" + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + Le fichier téléchargé ne correspond pas à la somme de contrôle, il sera repris. "%1" != "%2" - - + + OCC::Vfs - - The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - La fonctionnalité système de fichiers virtuels requiert un système de fichiers de type NTFS alors que %1 utilise %2. + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 + La fonctionnalité système de fichiers virtuels requiert un système de fichiers de type NTFS alors que %1 utilise %2. - - + + OCC::VfsDownloadErrorDialog - - Download error - Erreur de téléchargement + + Download error + Erreur de téléchargement - - Error downloading - Erreur au téléchargement + + Error downloading + Erreur au téléchargement - - could not be downloaded - ne peut pas être téléchargé + + could not be downloaded + ne peut pas être téléchargé - - > More details - > Plus de détails + + > More details + > Plus de détails - - More details - Plus de détails + + More details + Plus de détails - - Error downloading %1 - Erreur au téléchargement %1 + + Error downloading %1 + Erreur au téléchargement %1 - - %1 could not be downloaded. - %1 ne peut pas être téléchargé. + + %1 could not be downloaded. + %1 ne peut pas être téléchargé. - - + + OCC::VfsSuffix - - - Error updating metadata due to invalid modification time - Erreur de mise à jour des métadonnées à cause d'une date de modification invalide + + + Error updating metadata due to invalid modification time + Erreur de mise à jour des métadonnées à cause d'une date de modification invalide - - + + OCC::VfsXAttr - - - Error updating metadata due to invalid modification time - Erreur de mise à jour des métadonnées à cause d'une date de modification invalide + + + Error updating metadata due to invalid modification time + Erreur de mise à jour des métadonnées à cause d'une date de modification invalide - - + + OCC::WebEnginePage - - Invalid certificate detected - Certificat invalide + + Invalid certificate detected + Certificat invalide - - The host "%1" provided an invalid certificate. Continue? - L’hôte "%1" utilise un certificat invalide. Continuer ? + + The host "%1" provided an invalid certificate. Continue? + L’hôte "%1" utilise un certificat invalide. Continuer ? - - + + OCC::WebFlowCredentials - You have been logged out of your account %1 at %2. Please login again. - Vous avez été déconnecté de votre compte %1 à %2. Merci de vous reconnecter. + You have been logged out of your account %1 at %2. Please login again. + Vous avez été déconnecté de votre compte %1 à %2. Merci de vous reconnecter. - Please login with the account: %1 - Veuillez vous connecter avec le compte : %1 + Please login with the account: %1 + Veuillez vous connecter avec le compte : %1 - - <b>You have been logged out of your account %1 at %2. Please login again.</b> - <b>Vous avez été déconnecté(e) de votre compte %1 à %2. Veuillez vous reconnecter.</b> + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + <b>Vous avez été déconnecté(e) de votre compte %1 à %2. Veuillez vous reconnecter.</b> - - + + OCC::WelcomePage - - Form - Formulaire + + Form + Formulaire - - Log in - Se connecter + + Log in + Se connecter - - Sign up with provider - Se connecter avec un fournisseur + + Sign up with provider + Se connecter avec un fournisseur - - Keep your data secure and under your control - Gardez vos données en sécurité et sous votre contrôle + + Keep your data secure and under your control + Gardez vos données en sécurité et sous votre contrôle - Secure collaboration & file exchange - Collaboration et échange de fichiers sécurisés + Secure collaboration & file exchange + Collaboration et échange de fichiers sécurisés - Easy-to-use web mail, calendaring & contacts - Courrier électronique, calendrier et contacts en ligne faciles à utiliser + Easy-to-use web mail, calendaring & contacts + Courrier électronique, calendrier et contacts en ligne faciles à utiliser - Screensharing, online meetings & web conferences - Partage d'écran, réunions en ligne et conférences Web + Screensharing, online meetings & web conferences + Partage d'écran, réunions en ligne et conférences Web - - Host your own server - Hébergez votre propre serveur + + Host your own server + Hébergez votre propre serveur - - + + OCC::ownCloudGui - - Unsupported Server Version - Version du Serveur non prise en charge + + Unsupported Server Version + Version du Serveur non prise en charge - - The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - Le serveur sur le compte %1 fonctionne avec une version non-supportée %2. Utiliser ce client avec des versions non-supportées du serveur n'est pas testé et est potentiellement dangereux. Procédez à vos risques et périls. + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + Le serveur sur le compte %1 fonctionne avec une version non-supportée %2. Utiliser ce client avec des versions non-supportées du serveur n'est pas testé et est potentiellement dangereux. Procédez à vos risques et périls. - - Disconnected - Déconnecté + + Disconnected + Déconnecté - - Disconnected from some accounts - Déconnecté de certains comptes + + Disconnected from some accounts + Déconnecté de certains comptes - - Disconnected from %1 - Déconnecté de %1 + + Disconnected from %1 + Déconnecté de %1 - - Disconnected from accounts: - Déconnecté des comptes : + + Disconnected from accounts: + Déconnecté des comptes : - - Account %1: %2 - Compte %1 : %2 + + Account %1: %2 + Compte %1 : %2 - - Please sign in - Veuillez vous connecter + + Please sign in + Veuillez vous connecter - - Signed out - Session fermée + + Signed out + Session fermée - - Account synchronization is disabled - La synchronisation est en pause + + Account synchronization is disabled + La synchronisation est en pause - - - Synchronization is paused - La synchronisation est en pause + + + Synchronization is paused + La synchronisation est en pause - - Folder %1: %2 - Dossier %1 : %2 + + Folder %1: %2 + Dossier %1 : %2 - - Unresolved conflicts - Conflits non résolus + + Unresolved conflicts + Conflits non résolus - - Up to date - À jour + + Up to date + À jour - - Error during synchronization - Erreur durant la synchronisation + + Error during synchronization + Erreur durant la synchronisation - - There are no sync folders configured. - Aucun dossier à synchroniser n'est configuré + + There are no sync folders configured. + Aucun dossier à synchroniser n'est configuré - - No sync folders configured - Aucun dossier de synchronisation configuré + + No sync folders configured + Aucun dossier de synchronisation configuré - - Checking for changes in remote "%1" - Vérification des modifications dans "%1" distant + + Checking for changes in remote "%1" + Vérification des modifications dans "%1" distant - - Checking for changes in local "%1" - Vérification des modifications dans "%1" local + + Checking for changes in local "%1" + Vérification des modifications dans "%1" local - - Syncing %1 of %2 (%3 left) - Synchronisation de %1 sur %2 (%3 restants) + + Syncing %1 of %2 (%3 left) + Synchronisation de %1 sur %2 (%3 restants) - - Syncing %1 of %2 - Synchronisation %1 sur %2 + + Syncing %1 of %2 + Synchronisation %1 sur %2 - - Syncing %1 (%2 left) - Synchronisation de %1 (%2 restants) + + Syncing %1 (%2 left) + Synchronisation de %1 (%2 restants) - - Syncing %1 - Synchronisation de %1 + + Syncing %1 + Synchronisation de %1 - - %1 (%2, %3) - %1 (%2, %3) + + %1 (%2, %3) + %1 (%2, %3) - - + + OCC::sesSnackBar - - Error - Erreur + + Error + Erreur - - Warning - Attention + + Warning + Attention - - Success - Réussite + + Success + Réussite - - + + OwncloudAdvancedSetupPage - - &Local Folder - &Dossier local + + &Local Folder + &Dossier local - - Username - Nom d’utilisateur + + Username + Nom d’utilisateur - - Local Folder - Dossier local + + Local Folder + Dossier local - - Choose different folder - Choisir un autre dossier + + Choose different folder + Choisir un autre dossier - - Server address - Adresse du serveur + + Server address + Adresse du serveur - - Sync Logo - Logo de synchronisation + + Sync Logo + Logo de synchronisation - - Synchronize everything from server - Tout synchroniser depuis le serveur + + Synchronize everything from server + Tout synchroniser depuis le serveur - - Ask before syncing folders larger than - Demander confirmation avant de synchroniser les dossiers de taille supérieure à + + Ask before syncing folders larger than + Demander confirmation avant de synchroniser les dossiers de taille supérieure à - - + + MB - Trailing part of "Ask confirmation before syncing folder larger than" - MO + Trailing part of "Ask confirmation before syncing folder larger than" + MO - - <html><head/><body><p>If this box is checked, + + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Si cette case est cochée, le contenu existant dans le dossier local sera effacé pour commencer une synchronisation propre à partir du serveur.</p><p>Ne cochez pas cette case si le contenu local doit être téléchargé dans le dossier du serveur..</p></body></html> + <html><head/><body><p>Si cette case est cochée, le contenu existant dans le dossier local sera effacé pour commencer une synchronisation propre à partir du serveur.</p><p>Ne cochez pas cette case si le contenu local doit être téléchargé dans le dossier du serveur..</p></body></html> - MB - Trailing part of "Ask confirmation before syncing folder larger than" - Mo + MB + Trailing part of "Ask confirmation before syncing folder larger than" + Mo - - Ask before syncing external storages - Confirmation avant de synchroniser des stockages externes + + Ask before syncing external storages + Confirmation avant de synchroniser des stockages externes - - Choose what to sync - Sélectionner le contenu à synchroniser + + Choose what to sync + Sélectionner le contenu à synchroniser - - Keep local data - Conserver les données locales + + Keep local data + Conserver les données locales - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Si cette case est cochée, le contenu existant du dossier local sera supprimé pour démarrer une synchronisation propre depuis le serveur.</p><p>Ne pas cocher si le contenu local doit être téléversé vers le serveur.</p></body></html> + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Si cette case est cochée, le contenu existant du dossier local sera supprimé pour démarrer une synchronisation propre depuis le serveur.</p><p>Ne pas cocher si le contenu local doit être téléversé vers le serveur.</p></body></html> - - Erase local folder and start a clean sync - Effacer le dossier local et démarrer une synchronisation complète + + Erase local folder and start a clean sync + Effacer le dossier local et démarrer une synchronisation complète - - + + OwncloudHttpCredsPage - - &Username - &Nom d’utilisateur + + &Username + &Nom d’utilisateur - - &Password - &Mot de passe + + &Password + &Mot de passe - - + + OwncloudOAuthCredsPage - Please switch to your browser to proceed. - Merci de basculer vers votre navigateur pour terminer. + Please switch to your browser to proceed. + Merci de basculer vers votre navigateur pour terminer. - An error occurred while connecting. Please try again. - Une erreur s'est produite lors de la connexion. Veuillez ré-essayer. + An error occurred while connecting. Please try again. + Une erreur s'est produite lors de la connexion. Veuillez ré-essayer. - Re-open Browser - Redémarrez votre navigateur + Re-open Browser + Redémarrez votre navigateur - Copy link - Copier le lien + Copy link + Copier le lien - - + + OwncloudSetupPage - - - TextLabel - Étiquette de texte + + + TextLabel + Étiquette de texte - Logo - Logo + Logo + Logo - - Server address - Adresse du serveur + + Server address + Adresse du serveur - - This is the link to your %1 web interface when you open it in the browser. - Il s'agit de l'adresse URL lorsque vous utilisez %1 dans un navigateur. + + This is the link to your %1 web interface when you open it in the browser. + Il s'agit de l'adresse URL lorsque vous utilisez %1 dans un navigateur. - - + + QObject - - New folder - Nouveau dossier + + New folder + Nouveau dossier - - You renamed %1 - Vous avez renommé %1 + + You renamed %1 + Vous avez renommé %1 - - You deleted %1 - Vous avez supprimé %1 + + You deleted %1 + Vous avez supprimé %1 - - You created %1 - Vous avez créé %1 + + You created %1 + Vous avez créé %1 - - You changed %1 - Vous avez modifié %1 + + You changed %1 + Vous avez modifié %1 - - Synced %1 - %1 a été synchronisé + + Synced %1 + %1 a été synchronisé - - %nd - delay in days after an activity - - %nj. - %njrs - + + %nd + delay in days after an activity + + %nj. + %njrs + - - in the future - Dans le futur + + in the future + Dans le futur - - %nh - delay in hours after an activity - - %nh - %nh - + + %nh + delay in hours after an activity + + %nh + %nh + - - now - A l'instant + + now + A l'instant - - 1m - one minute after activity date and time - 1m + + 1m + one minute after activity date and time + 1m - - %nm - delay in minutes after an activity - - %nmin - %nmin - + + %nm + delay in minutes after an activity + + %nmin + %nmin + - - Some time ago - Il y a quelque temps + + Some time ago + Il y a quelque temps - - %1: %2 - this displays an error string (%2) for a file %1 - %1 : %2 + + %1: %2 + this displays an error string (%2) for a file %1 + %1 : %2 - - Paths beginning with '#' character are not supported in VFS mode. - Les chemins commençant par le caractère « # » ne sont pas pris en charge dans le mode VFS. + + Paths beginning with '#' character are not supported in VFS mode. + Les chemins commençant par le caractère « # » ne sont pas pris en charge dans le mode VFS. - - Failed to create debug archive - Échec de création de l’archive de débogage + + Failed to create debug archive + Échec de création de l’archive de débogage - - Could not create debug archive in selected location! - Impossible de créer une archive de débogage à l’emplacement sélectionné ! + + Could not create debug archive in selected location! + Impossible de créer une archive de débogage à l’emplacement sélectionné ! - - Reply - Répondre + + Reply + Répondre - + The directory %1 cannot be part of your sync directory. Please choose another folder. La répertoire %1 ne peut pas faire partie de votre répertoire de synchronisation. Veuillez choisir un autre dossier. @@ -6339,1079 +6481,1079 @@ Le serveur a répondu avec l'erreur : %2 ResolveConflictsDialog - - Solve sync conflicts - Résoudre les conflits de synchronisation + + Solve sync conflicts + Résoudre les conflits de synchronisation - - %1 files in conflict - indicate the number of conflicts to resolve - - %1 fichier en conflit - %1 fichiers en conflit - + + %1 files in conflict + indicate the number of conflicts to resolve + + %1 fichier en conflit + %1 fichiers en conflit + - - Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - Choisissez si vous souhaitez conserver la version locale, la version serveur, ou les deux. Si vous choisissez les deux, un numéro sera ajouté au nom du fichier local. + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. + Choisissez si vous souhaitez conserver la version locale, la version serveur, ou les deux. Si vous choisissez les deux, un numéro sera ajouté au nom du fichier local. - - All local versions - Toutes les versions locales + + All local versions + Toutes les versions locales - - All server versions - Toutes les versions serveur + + All server versions + Toutes les versions serveur - - Resolve conflicts - Résoudre les conflits + + Resolve conflicts + Résoudre les conflits - - Cancel - Annuler + + Cancel + Annuler - - + + SesErrorBox - - Error - Erreur + + Error + Erreur - - + + SesTrayHeader - - Website - Site Web + + Website + Site Web - - Open Nextcloud in browser - Ouvrir Nextcloud dans le navigateur + + Open Nextcloud in browser + Ouvrir Nextcloud dans le navigateur - - Open local or group folders - Ouvrir des dossiers locaux ou de groupe + + Open local or group folders + Ouvrir des dossiers locaux ou de groupe - - + + ShareDelegate - - Create a new share link - Créer un nouveau lien de partage + + Create a new share link + Créer un nouveau lien de partage - - Copy share link location - Copier le lien de partage + + Copy share link location + Copier le lien de partage - - Copied! - Copié ! + + Copied! + Copié ! - - Share options - Options de partage + + Share options + Options de partage - - + + ShareDetailsPage - - An error occurred setting the share password. - Une erreur est survenue lors de la configuration du mot de passe de partage. + + An error occurred setting the share password. + Une erreur est survenue lors de la configuration du mot de passe de partage. - Edit share - Modifier le partage + Edit share + Modifier le partage - - Dismiss - Révoquer + + Dismiss + Révoquer - Share label - Libellé du partage + Share label + Libellé du partage - - - Allow upload and editing - Autoriser le téléversement et l'édition + + + Allow upload and editing + Autoriser le téléversement et l'édition - - Custom Permissions - Autorisations personnalisées + + Custom Permissions + Autorisations personnalisées - - View only - Afficher seulement + + View only + Afficher seulement - - File drop (upload only) - Dépôt de fichiers (envoi uniquement) + + File drop (upload only) + Dépôt de fichiers (envoi uniquement) - - Allow resharing - Permettre le repartage + + Allow resharing + Permettre le repartage - - Hide download - Masquer le téléchargement + + Hide download + Masquer le téléchargement - - Password protect - Protéger par mot de passe + + Password protect + Protéger par mot de passe - - Set expiration date - Définir une date d'expiration + + Set expiration date + Définir une date d'expiration - - Note to recipient - Note au destinataire + + Note to recipient + Note au destinataire - - Enter the note to recipient - Saisir la remarque à l’attention du destinataire + + Enter the note to recipient + Saisir la remarque à l’attention du destinataire - - Unshare - Cesser le partage + + Unshare + Cesser le partage - - Add another link - Ajouter un autre lien + + Add another link + Ajouter un autre lien - - Share link copied! - Lien copié ! + + Share link copied! + Lien copié ! - - Copy share link - Copier le lien + + Copy share link + Copier le lien - - + + ShareView - - Password required for new share - Mot de passe requis pour le nouveau partage + + Password required for new share + Mot de passe requis pour le nouveau partage - - Share password - Mot de passe du partage + + Share password + Mot de passe du partage - - Sharing is disabled - Le partage est désactivté + + Sharing is disabled + Le partage est désactivté - - This item cannot be shared. - L'élément ne peut pas être partagé. + + This item cannot be shared. + L'élément ne peut pas être partagé. - - Sharing is disabled. - Le partage est désactivé. + + Sharing is disabled. + Le partage est désactivé. - - + + ShareeSearchField - - Search for users or groups… - Rechercher des utilisateurs ou des groupes... + + Search for users or groups… + Rechercher des utilisateurs ou des groupes... - - Sharing is not available for this folder - Le partage n'est pas disponible pour ce dossier + + Sharing is not available for this folder + Le partage n'est pas disponible pour ce dossier - - + + SyncJournalDb - Failed to connect database. - Impossible de connecter la base de données. + Failed to connect database. + Impossible de connecter la base de données. - - + + SyncStatus - - Sync now - Synchroniser maintenant + + Sync now + Synchroniser maintenant - - Resolve conflicts - Résoudre les conflits + + Resolve conflicts + Résoudre les conflits - - + + TalkReplyTextField - - Reply to … - Répondre à... + + Reply to … + Répondre à... - - Send reply to chat message - Envoyer la réponse dans la discussion + + Send reply to chat message + Envoyer la réponse dans la discussion - - + + TestSetUserStatusDialog - - - 1 day - 1 jour + + + 1 day + 1 jour - - - - - - Don't clear - Ne pas effacer + + + + + + Don't clear + Ne pas effacer - - - - - - 1 hour - 1 heure + + + + + + 1 hour + 1 heure - - - - - 30 minutes - 30 minutes + + + + + 30 minutes + 30 minutes - - - - 4 hours - 4 heures + + + + 4 hours + 4 heures - - - - Today - Aujourd'hui + + + + Today + Aujourd'hui - - - - This week - Cette semaine + + + + This week + Cette semaine - - Less than a minute - Il y a moins d'une minute + + Less than a minute + Il y a moins d'une minute - - 1 minute - 1 minute + + 1 minute + 1 minute - - 7 days - + + 7 days + - - Could not fetch predefined statuses. Make sure you are connected to the server. - Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. + + Could not fetch predefined statuses. Make sure you are connected to the server. + Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. - - Could not fetch status. Make sure you are connected to the server. - Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. + + Could not fetch status. Make sure you are connected to the server. + Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. - - Status feature is not supported. You will not be able to set your status. - La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. + + Status feature is not supported. You will not be able to set your status. + La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. - - Could not set status. Make sure you are connected to the server. - Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. + + Could not set status. Make sure you are connected to the server. + Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. - - Emojis are not supported. Some status functionality may not work. - Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. + + Emojis are not supported. Some status functionality may not work. + Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. - - Could not clear status message. Make sure you are connected to the server. - Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. + + Could not clear status message. Make sure you are connected to the server. + Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. - - + + TrayFoldersMenuButton - - Files - Fichiers + + Files + Fichiers - - Open local or group folders - Ouvrir des dossiers locaux ou de groupe + + Open local or group folders + Ouvrir des dossiers locaux ou de groupe - - Open local folder - Ouvrir le dossier local + + Open local folder + Ouvrir le dossier local - - Connected - Connecté + + Connected + Connecté - - Disconnected - Déconnecté + + Disconnected + Déconnecté - Group folder button - Bouton du dossier de groupes + Group folder button + Bouton du dossier de groupes - - Open local folder "%1" - Ouvrir le dossier local « %1 » + + Open local folder "%1" + Ouvrir le dossier local « %1 » - - Open group folder "%1" - Ouvrir le dossier de groupes "%1" + + Open group folder "%1" + Ouvrir le dossier de groupes "%1" - - Open %1 in file explorer - Ouvrir %1 dans l'explorateur de fichiers + + Open %1 in file explorer + Ouvrir %1 dans l'explorateur de fichiers - - User group and local folders menu - Menu de groupe d'utilisateurs et dossiers locaux + + User group and local folders menu + Menu de groupe d'utilisateurs et dossiers locaux - - + + TrayWindowAccountMenu - - Current account - Compte actuel + + Current account + Compte actuel - - Resume sync for all - Reprendre toutes les synchros + + Resume sync for all + Reprendre toutes les synchros - - Pause sync for all - Suspendre synchros + + Pause sync for all + Suspendre synchros - - Add account - Ajouter un compte + + Add account + Ajouter un compte - - Settings - Paramètres + + Settings + Paramètres - - Exit - Quitter + + Exit + Quitter - - Current account avatar - Avatar actuel du compte + + Current account avatar + Avatar actuel du compte - - Current account status is online - Le statut du compte actuel est En ligne + + Current account status is online + Le statut du compte actuel est En ligne - - Current account status is do not disturb - Le statut du compte actuel est Ne pas déranger + + Current account status is do not disturb + Le statut du compte actuel est Ne pas déranger - - Account switcher and settings menu - Sélecteur de compte et menu des paramètres + + Account switcher and settings menu + Sélecteur de compte et menu des paramètres - - + + TrayWindowHeaderBar - - Website - Site Web + + Website + Site Web - - Open Nextcloud in browser - Ouvrir Nextcloud dans le navigateur + + Open Nextcloud in browser + Ouvrir Nextcloud dans le navigateur - - Open local or group folders - Ouvrir des dossiers locaux ou de groupe + + Open local or group folders + Ouvrir des dossiers locaux ou de groupe - - Open Nextcloud Talk in browser - Ouvrez Nextcloud Talk dans le navigateur + + Open Nextcloud Talk in browser + Ouvrez Nextcloud Talk dans le navigateur - - More apps - Plus d’applications + + More apps + Plus d’applications - - Open %1 in browser - Ouvrir %1 dans le navigateur + + Open %1 in browser + Ouvrir %1 dans le navigateur - - + + UnifiedSearchInputContainer - - Search files, messages, events … - Rechercher des fichiers, des messages, des événements … + + Search files, messages, events … + Rechercher des fichiers, des messages, des événements … - - + + UnifiedSearchResultFetchMoreTrigger - - Load more results - Charger plus de résultats + + Load more results + Charger plus de résultats - - + + UnifiedSearchResultItemSkeleton - - Search result skeleton. - Squelette de résultat de recherche. + + Search result skeleton. + Squelette de résultat de recherche. - - + + UnifiedSearchResultListItem - - Load more results - Charger plus de résultats + + Load more results + Charger plus de résultats - - + + UnifiedSearchResultNothingFound - - No results for - Aucun résultat pour + + No results for + Aucun résultat pour - - + + UnifiedSearchResultSectionItem - - Search results section %1 - Section de résultats de recherche %1 + + Search results section %1 + Section de résultats de recherche %1 - - + + UserLine - - Switch to account - Utiliser ce compte + + Switch to account + Utiliser ce compte - Current account status is online - Le statut actuel du compte est "en ligne" + Current account status is online + Le statut actuel du compte est "en ligne" - Current account status is do not disturb - Le statut actuel du compte est "ne pas déranger" + Current account status is do not disturb + Le statut actuel du compte est "ne pas déranger" - - Account actions - Actions du compte + + Account actions + Actions du compte - - Set status - Définir le statut + + Set status + Définir le statut - - - Log out - Se déconnecter + + + Log out + Se déconnecter - - - Log in - Se connecter + + + Log in + Se connecter - - Remove account - Retirer le compte + + Remove account + Retirer le compte - - + + UserStatusSelector - - Online status - Statut en ligne + + Online status + Statut en ligne - - Online - En ligne + + Online + En ligne - - Away - Absent(e) + + Away + Absent(e) - - Do not disturb - Ne pas déranger + + Do not disturb + Ne pas déranger - - Mute all notifications - Désactiver toutes les notifications + + Mute all notifications + Désactiver toutes les notifications - - Invisible - Invisible + + Invisible + Invisible - - Appear offline - Apparaitre hors-ligne + + Appear offline + Apparaitre hors-ligne - - Status message - Message de statut + + Status message + Message de statut - - What is your status? - Quel est votre statut ? + + What is your status? + Quel est votre statut ? - - Clear status message after - Effacer le message de statut après + + Clear status message after + Effacer le message de statut après - - Cancel - Annuler + + Cancel + Annuler - - Clear status message - Effacer le message de statut + + Clear status message + Effacer le message de statut - - Set status message - Définir le message de statut + + Set status message + Définir le message de statut - - + + Utility - - %L1 B - %L1 octets + + %L1 B + %L1 octets - - %L1 TB - %L1 To + + %L1 TB + %L1 To - - %L1 GB - %L1 Go + + %L1 GB + %L1 Go - - %L1 MB - %L1 Mo + + %L1 MB + %L1 Mo - - %L1 KB - %L1 Ko + + %L1 KB + %L1 Ko - - %n year(s) - - %n an - %n ans - + + %n year(s) + + %n an + %n ans + - - %n month(s) - - %n mois - %n mois - + + %n month(s) + + %n mois + %n mois + - - %n day(s) - - %n jour - %n jours - + + %n day(s) + + %n jour + %n jours + - - %n hour(s) - - %n heure - %n heures - + + %n hour(s) + + %n heure + %n heures + - - %n minute(s) - - %n minute - %n minutes - + + %n minute(s) + + %n minute + %n minutes + - - %n second(s) - - %n seconde - %n secondes - + + %n second(s) + + %n seconde + %n secondes + - - %1 %2 - %1 %2 + + %1 %2 + %1 %2 - - + + ValidateChecksumHeader - The checksum header is malformed. - L’en-tête de la somme de contrôle est mal formé. + The checksum header is malformed. + L’en-tête de la somme de contrôle est mal formé. - The checksum header contained an unknown checksum type "%1" - L’en-tête de somme de contrôle contenait un type de somme de contrôle inconnu « %1 » + The checksum header contained an unknown checksum type "%1" + L’en-tête de somme de contrôle contenait un type de somme de contrôle inconnu « %1 » - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Le fichier téléchargé ne correspond pas à la somme de contrôle, il sera repris. "%1" != "%2" + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + Le fichier téléchargé ne correspond pas à la somme de contrôle, il sera repris. "%1" != "%2" - - + + Window - - Nextcloud desktop main dialog - Boîte de dialogue principale du bureau Nextcloud + + Nextcloud desktop main dialog + Boîte de dialogue principale du bureau Nextcloud - Current account - Compte actuel + Current account + Compte actuel - Resume sync for all - Relancer toutes les synchronisations + Resume sync for all + Relancer toutes les synchronisations - Pause sync for all - Suspendre toutes les synchros + Pause sync for all + Suspendre toutes les synchros - Add account - Ajouter un compte + Add account + Ajouter un compte - Add new account - Ajouter un nouveau compte + Add new account + Ajouter un nouveau compte - Settings - Paramètres + Settings + Paramètres - Exit - Quitter + Exit + Quitter - Current account avatar - Avatar actuel du compte + Current account avatar + Avatar actuel du compte - Current account status is online - Le statut actuel du compte est "en ligne" + Current account status is online + Le statut actuel du compte est "en ligne" - Current account status is do not disturb - Le statut actuel du compte est "ne pas déranger" + Current account status is do not disturb + Le statut actuel du compte est "ne pas déranger" - Account switcher and settings menu - Sélecteur de compte et menu des paramètres + Account switcher and settings menu + Sélecteur de compte et menu des paramètres - Open local or group folders - Ouvrir des dossiers locaux ou de groupe + Open local or group folders + Ouvrir des dossiers locaux ou de groupe - Open Nextcloud Talk in browser - Ouvrez Nextcloud Talk dans le navigateur + Open Nextcloud Talk in browser + Ouvrez Nextcloud Talk dans le navigateur - More apps - Plus d'applications + More apps + Plus d'applications - Open %1 in browser - Ouvrir %1 dans le navigateur + Open %1 in browser + Ouvrir %1 dans le navigateur - - Unified search results list - Liste de résultats de recherche unifiée + + Unified search results list + Liste de résultats de recherche unifiée - - New activities - Nouvelles activités + + New activities + Nouvelles activités - - + + main.cpp - - System Tray not available - Zone de notification système non disponible + + System Tray not available + Zone de notification système non disponible - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - %1 nécessite une zone de notification système fonctionnelle. Si vous utiliser XFCE, veuillez suivre <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">ces instructions</a>. Sinon, installez une application de la barre d'état système telle que "trayer" et réessayez. + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. + %1 nécessite une zone de notification système fonctionnelle. Si vous utiliser XFCE, veuillez suivre <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">ces instructions</a>. Sinon, installez une application de la barre d'état système telle que "trayer" et réessayez. - - + + nextcloudTheme::about() - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> - - + + nextcloudTheme::aboutInfo() - - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> + + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> - - + + progress - - Virtual file created - Fichier virtuel créé + + Virtual file created + Fichier virtuel créé - - Replaced by virtual file - Remplacé par un fichier virtuel + + Replaced by virtual file + Remplacé par un fichier virtuel - - Downloaded - Reçu + + Downloaded + Reçu - - Uploaded - Envoyé + + Uploaded + Envoyé - - Server version downloaded, copied changed local file into conflict file - La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier conflit. + + Server version downloaded, copied changed local file into conflict file + La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier conflit. - - Server version downloaded, copied changed local file into case conflict conflict file - La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier de conflit de casse. + + Server version downloaded, copied changed local file into case conflict conflict file + La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier de conflit de casse. - - Deleted - Supprimé + + Deleted + Supprimé - - Moved to %1 - Déplacé vers %1 + + Moved to %1 + Déplacé vers %1 - - Ignored - Ignoré + + Ignored + Ignoré - - Filesystem access error - Erreur d'accès au système de fichiers + + Filesystem access error + Erreur d'accès au système de fichiers - - Error - Erreur + + Error + Erreur - - Updated local metadata - Métadonnées locales mises à jour + + Updated local metadata + Métadonnées locales mises à jour - - Updated local virtual files metadata - Métadonnées des fichiers virtuels locaux mises à jour + + Updated local virtual files metadata + Métadonnées des fichiers virtuels locaux mises à jour - - - Unknown - Inconnu + + + Unknown + Inconnu - - downloading - téléchargement de + + downloading + téléchargement de - - uploading - envoi + + uploading + envoi - - deleting - suppression + + deleting + suppression - - moving - déplacement + + moving + déplacement - - ignoring - Ignore + + ignoring + Ignore - - error - erreur + + error + erreur - - updating local metadata - Mise à jour des métadonnées locales + + updating local metadata + Mise à jour des métadonnées locales - - updating local virtual files metadata - mise à jour des métadonnées des fichiers virtuels locaux + + updating local virtual files metadata + mise à jour des métadonnées des fichiers virtuels locaux - - + + theme - - Status undefined - Statut indéfini + + Status undefined + Statut indéfini - - Waiting to start sync - Synchronisation en attente + + Waiting to start sync + Synchronisation en attente - - Sync is running - Synchronisation en cours + + Sync is running + Synchronisation en cours - - Sync Success - Synchronisation réussie + + Sync Success + Synchronisation réussie - - Sync Success, some files were ignored. - Synchronisation terminée avec succès, certains fichiers ont été ignorés. + + Sync Success, some files were ignored. + Synchronisation terminée avec succès, certains fichiers ont été ignorés. - - Sync Error - Erreur de synchronisation + + Sync Error + Erreur de synchronisation - - Setup Error - Erreur de configuration + + Setup Error + Erreur de configuration - - Preparing to sync - Préparation à la synchronisation + + Preparing to sync + Préparation à la synchronisation - - Aborting … - Annulation... + + Aborting … + Annulation... - - Sync is paused - La synchronisation est en pause + + Sync is paused + La synchronisation est en pause - - + + utility - - Could not open browser - Impossible de démarrer le navigateur + + Could not open browser + Impossible de démarrer le navigateur - - There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - Une erreur est survenue au lancement du navigateur pour visiter l'adresse %1. Il est possible qu'aucun navigateur par défaut ne soit configuré. + + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? + Une erreur est survenue au lancement du navigateur pour visiter l'adresse %1. Il est possible qu'aucun navigateur par défaut ne soit configuré. - - Could not open email client - Impossible d'ouvrir le client de messagerie + + Could not open email client + Impossible d'ouvrir le client de messagerie - - There was an error when launching the email client to create a new message. Maybe no default email client is configured? - Il y a eu une erreur lors du lancement du client de messagerie pour créer un nouveau message. Peut-être qu'aucun client de messagerie n'est configuré ? + + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + Il y a eu une erreur lors du lancement du client de messagerie pour créer un nouveau message. Peut-être qu'aucun client de messagerie n'est configuré ? - - Always available locally - Toujours disponible localement + + Always available locally + Toujours disponible localement - - Currently available locally - Actuellement disponible en local + + Currently available locally + Actuellement disponible en local - - Some available online only - Certains sont disponibles en ligne seulement + + Some available online only + Certains sont disponibles en ligne seulement - - Available online only - Disponible seulement en ligne + + Available online only + Disponible seulement en ligne - - Make always available locally - Toujours rendre disponible localement + + Make always available locally + Toujours rendre disponible localement - - Free up local space - Libérer de l'espace local + + Free up local space + Libérer de l'espace local - - \ No newline at end of file + + diff --git a/translations/client_nl.ts b/translations/client_nl.ts index 6560b7206a8d7..2693e94f5d5ec 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -1,13 +1,15 @@ - + + + ActivityItem - + Open %1 locally %1 lokaal openen - + In %1 In %1 @@ -15,12 +17,12 @@ ActivityItemContent - + Open file details Bestandsdetails openen - + Dismiss Negeren @@ -28,12 +30,12 @@ ActivityList - + Activity list Activiteitenlijst - + No activities yet Nog geen activiteiten @@ -43,7 +45,7 @@ Clear status message menu - + @@ -51,22 +53,22 @@ Talk notification caller avatar - + - + Answer Talk call notification - + - + Decline Afwijzen - + Decline Talk call notification - + @@ -158,12 +160,86 @@ Local version - + Lokale versie Server version - + Serverversie + + + + CrashReporter + + + Tomahawk Crash Reporter + + + + + <html><head/><body><p><br/></p></body></html> + + + + + Abort + + + + + Send this report + + + + + Don't send + + + + + You can disable sending crash reports in the configuration dialog. + + + + + + + We cannot gather useful debug information on your system. + + + + + + + + + Close + Sluiten + + + + Ready to send debug information (<a href="%1">view backtrace</a>). + + + + + Gathering debug information... + + + + + Uploaded %L1 of %L2 KB. + + + + + Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. + + + + + Failed to send crash info. + @@ -171,7 +247,7 @@ Opening file for local editing - + @@ -179,7 +255,7 @@ No recent emojis - + @@ -190,22 +266,28 @@ Fout + + FakeHangingReply + + + Operation canceled + + + FileDetailsPage - + Dismiss Negeren - Activity - Activiteit + Activiteit - Sharing - Delen + Delen @@ -213,7 +295,7 @@ File details of %1 · %2 - + @@ -221,30 +303,30 @@ Evict materialised files - + Materialised items - + - + Reload - + FileProviderFastEnumerationSettings - + Enable fast sync - + - + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - + @@ -252,7 +334,7 @@ Delete - + Verwijderen @@ -260,32 +342,32 @@ Virtual files settings - + General settings - + - + Enable virtual files - + - + Advanced - + Geavanceerd - + Signal file provider domain - + - + Create debug archive - + @@ -293,17 +375,17 @@ Local storage use - + %1 GB of %2 GB remote files synced - + Evict local copies... - + @@ -311,41 +393,37 @@ Syncing - + Synchroniseren All synced! - + Alles gesynchroniseerd! FileSystem - + Error removing "%1": %2 Fout bij verwijderen '%1': %2 - + Could not remove folder "%1" Kan map "%1" niet verwijderen - Could not make directories in trash - Kan geen mappen maken in de prullenbak + Kan geen mappen maken in de prullenbak - - Could not move "%1" to "%2" - Kan "%1" niet verplaatsen naar "%2" + Kan "%1" niet verplaatsen naar "%2" - Moving to the trash is not implemented on this platform - Verplaatsen naar de prullenbak wordt niet ondersteund op dit platform + Verplaatsen naar de prullenbak wordt niet ondersteund op dit platform @@ -361,389 +439,469 @@ Logo - + Switch to your browser to connect your account Schakel over naar je browser om je account te verbinden - + An error occurred while connecting. Please try again. Er is een fout opgetreden tijdens het verbinden. Probeer het opnieuw. + + + Copy Link + Kopiëren link + + + + Reopen Browser + Heropen browser + + + + FolderWizardSelectiveSync + + + Add Folder Sync + + + + + Step 3 of 3: Selektive Synchronisation + + FolderWizardSourcePage - Pick a local folder on your computer to sync - Kies een map op je computer om te synchroniseren + Kies een map op je computer om te synchroniseren - &Choose … - &Kies ... + &Kies ... + + + + Add Folder Sync + + + + + Step 1 of 3: Select local folder + + + + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + + + + + &Choose + FolderWizardTargetPage - Select a remote destination folder - Kies een externe doelmap + Kies een externe doelmap - + Create folder Maak map - + Refresh Vernieuwen - + + Add Folder Sync + + + + + Step 2 of 3: Directory in your %1 + + + + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + + + + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + + + + Folders Mappen + + KMessageWidget + + + &Close + + + + + Close message + + + OCC::AbstractNetworkJob - + Connection timed out De verbindingstijd is verstreken - + Unknown error: network reply was deleted Onbekende fout: netwerkantwoord verwijderd - + Server replied "%1 %2" to "%3 %4" Server antwoordde "%1 %2" naar "%3 %4" + + OCC::AbstractPropagateRemoteDeleteEncrypted + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". + + + "%1 Failed to unlock encrypted folder %2". + "%1 kon versleutelde map %2" niet ontgrendelen. + + OCC::Account - + File %1 is already locked by %2. - + - + Lock operation on %1 failed with error %2 - + - + Unlock operation on %1 failed with error %2 - + OCC::AccountManager - - An existing configuration from a legacy desktop client was detected. -Should an account import be attempted? - - - - + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - + - + 1 account was detected from a legacy desktop client. Should the account be imported? - + - - - + + Legacy import - + - + Import - + - + Skip - - - - - Successfully imported account from legacy client: %1 - + - + Could not import accounts from legacy client configuration. - + OCC::AccountSettings - + + Storage space: … Opslagruimte: ... - + + Expand Memory + + + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore Niet-geselecteerde mappen worden <b>verwijderd</b> van je lokale bestandssysteem en zullen niet meer met deze computer worden gesynchroniseerd - - - + + + Cancel Annuleren - + Apply Toepassen - + Connected with <server> as <user> Verbonden met <server> als <user> - + Synchronize all Alles synchroniseren - + Synchronize none Niets synchroniseren - + Apply manual changes Handmatige wijzigingen toepassen - + Standard file sync - + - + Virtual file sync - + - + End-to-end Encryption with Virtual Files - + - + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - + - + + Do not encrypt folder Map niet versleutelen - + + Encrypt folder Versleutel map - + End-to-end Encryption - + - + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - + - + No account configured. Geen account ingesteld. - + Disable encryption Encryptie deactiveren - + Display mnemonic Geheugensteun weergeven - + End-to-end encryption has been enabled for this account - + - + Warning Waarschuwing - + Please wait for the folder to sync before trying to encrypt it. - + - + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - + - + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - + - + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. Would you like to set up end-to-end encryption? - + - + You cannot encrypt a folder with contents, please remove the files. Wait for the new sync, then encrypt it. Je kunt een map met inhoud niet versleutelen, verwijder de bestanden. Wacht op de nieuwe synchronisatie en versleutel ze vervolgens. - + Encryption failed Versleuteling mislukt - + Could not encrypt folder because the folder does not exist anymore Kon map niet versleutelen omdat de map niet meer bestaat - - + + Open folder Map openen - + Encrypt Versleutelen - - + + Edit Ignored Files Genegeerde bestanden bewerken - - + + Create new folder Maak nieuwe map aan - - + + Availability Beschikbaarheid - + Choose what to sync Kies wat je wilt synchroniseren - + Force sync now Synchronisatie nu forceren - + Restart sync Synchronisatie herstarten - + Resume sync Synchronisatie hervatten - + Pause sync Synchronisatie pauzeren - + Remove folder sync connection Verwijder verbinding voor mapsynchronisatie - + Disable virtual file support … Ondersteuning voor virtuele bestanden uitschakelen... - + Enable virtual file support %1 … Virtuele bestandsondersteuning inschakelen %1... - + (experimental) (experimenteel) - + Folder creation failed Map maken mislukt - + <p>Could not create local folder <i>%1</i>.</p> <p>Kan lokale map <i>%1</i> niet maken.</p> - + Confirm Folder Sync Connection Removal Bevestig het verwijderen van de verbinding voor mapsynchronisatie - + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> <p>Weet je zeker dat je het synchroniseren van map <i>%1</i> wilt stoppen?</p><p><b>Opmerking:</b> Dit zal <b>geen</b> bestanden verwijderen.</p> - + Remove Folder Sync Connection Verwijder verbinding voor mapsynchronisatie - + Disable virtual file support? Ondersteuning voor virtuele bestanden uitschakelen? - + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. The only advantage of disabling virtual file support is that the selective sync feature will become available again. @@ -756,164 +914,172 @@ Het enige voordeel van het uitschakelen van ondersteuning voor virtuele bestande Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. - + Disable support Ondersteuning uitschakelen - + End-to-end encryption mnemonic - + - + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - + - + Disable end-to-end encryption - + - + Disable end-to-end encryption for %1? - + - + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - + - + Sync Running Bezig met synchroniseren - + The syncing operation is running.<br/>Do you want to terminate it? Bezig met synchroniseren.<br/>Wil je stoppen met synchroniseren? - + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. %1 (%3%) van %2 in gebruik. Sommige mappen, inclusief netwerkmappen en gedeelde mappen, kunnen andere limieten hebben. - + %1 of %2 in use %1 van %2 in gebruik - + + Storage space %1% occupied + + + + Currently there is no storage usage information available. Er is nu geen informatie over het gebruik van de opslagruimte beschikbaar. - + %1 in use %1 in gebruik - + %1 as %2 %1 als %2 - + The server version %1 is unsupported! Proceed at your own risk. De serverversie %1 wordt niet ondersteund! Verdergaan is op eigen risico. - + Connected to %1. Verbonden met %1. - + Server %1 is temporarily unavailable. Server %1 is tijdelijk niet beschikbaar. - + Server %1 is currently in maintenance mode. Server %1 is momenteel in onderhoudsmodus. - + Server %1 is currently being redirected, or your connection is behind a captive portal. - + - + Signed out from %1. Uitgelogd van %1. - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - Autorisatie van de browser wordt verkregen. <a href='%1'>Klik hier</a> om de browser te heropenen. + Autorisatie van de browser wordt verkregen. <a href='%1'>Klik hier</a> om de browser te heropenen. - + Connecting to %1 … Verbinden met %1 ... - No connection to %1 at %2. - Geen verbinding met %1 op %2. + Geen verbinding met %1 op %2. - + Unable to connect to %1. - + - + Server configuration error: %1 at %2. Serverconfiguratiefout: %1 op %2. - + No %1 connection configured. Geen %1 connectie geconfigureerd. - + + https://wl.hidrive.com/easy/0057 + + + + There are folders that were not synchronized because they are too big: Er zijn mappen die niet gesynchroniseerd zijn, omdat ze te groot zijn: - + There are folders that were not synchronized because they are external storages: Er zijn mappen die niet gesynchroniseerd zijn, omdat ze op externe opslag staan: - + There are folders that were not synchronized because they are too big or external storages: Er zijn mappen die niet gesynchroniseerd zijn, omdat ze te groot zijn of op externe opslag staan: - + There are folders that have grown in size beyond %1MB: %2 - + - + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - + - + This account supports end-to-end encryption Dit account ondersteunt end-to-end-versleuteling - + Set up encryption - + @@ -921,68 +1087,68 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - + De geauthentiseerde aanvraag voor de server werd omgeleid naar "%1". De URL is onjuist, de server is verkeerd geconfigureerd. Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + Toegang door server verboden. Om te verifiëren dat je toegang mag hebben, <a href="%1">klik hier</a> om met je browser toegang tot de service te krijgen. There was an invalid response to an authenticated WebDAV request - + Er is een ongeldig antwoord ontvangen op een geauthenticeerde WebDAV opvraging OCC::AccountState - + Signed out Afgemeld - + Disconnected Niet verbonden - + Connected Verbonden - + Service unavailable Dienst niet beschikbaar - + Maintenance mode Onderhoudsmodus - + Redirect detected - + - + Network error Netwerkfout - + Configuration error Configuratiefout - + Asking Credentials Vragen naar inloggegevens - + Unknown account state Onbekende account-status @@ -990,22 +1156,22 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. OCC::ActivityListModel - + For more activities please open the Activity app. Voor meer activiteiten open de Activiteit app. - + Fetching activities … - + - + Network error occurred: client will retry syncing. - + - + Files from the ignore list as well as symbolic links are not synced. Bestanden op de negeerlijst en symbolische links worden niet gesynchroniseerd. @@ -1043,12 +1209,12 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken.Een versleutelde pkcs12-bundel wordt sterk aanbevolen, aangezien er een kopie wordt opgeslagen in het configuratiebestand. - + Select a certificate Selecteer een certificaat - + Certificate files (*.p12 *.pfx) Certificaat bestanden (*.p12 *.pfx) @@ -1056,88 +1222,88 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. OCC::Application - + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - + - + newer newer software version recenter - + older older software version ouder - + ignoring - + negerend - + deleting - + verwijderen - + Quit Stoppen - + Continue Doorgaan - + %1 accounts number of accounts imported - + - + 1 account - + - + %1 folders number of folders imported - + - + 1 folder - + - + Legacy import - + - + Imported %1 and %2 from a legacy desktop client. %3 number of accounts and folders imported. list of users. - + - + Error accessing the configuration file Fout bij benaderen configuratiebestand - + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - + - + Quit %1 Afsluiten %1 @@ -1157,7 +1323,7 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. &Username: - + @@ -1170,12 +1336,12 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. "%1 Failed to unlock encrypted folder %2". - + "%1 kon versleutelde map %2" niet ontgrendelen. Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - + Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". @@ -1207,32 +1373,32 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. - + Local file changed during sync. Lokaal bestand gewijzigd tijdens synchronisatie. - + Network error: %1 Netwerkfout: %1 - + Error updating metadata: %1 Fout bij bijwerken metadata: %1 - + The file %1 is currently in use Bestand %1 is momenteel in gebruik - + The local file was removed during sync. Het lokale bestand werd verwijderd tijdens synchronisatie. - + Restoration failed: %1 Herstellen mislukt: %1 @@ -1242,37 +1408,37 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. Cannot rename file because a file with the same name already exists on the server. Please pick another name. - + Could not rename file. Please make sure you are connected to the server. - + Kan het bestand niet hernoemen. Zorg ervoor dat je verbonden bent met de server. You don't have the permission to rename this file. Please ask the author of the file to rename it. - + Je bent niet gemachtigd om dit bestand te hernoemen. Vraag de auteur van het bestand om het te hernoemen. Failed to fetch permissions with error %1 - + Filename contains leading and trailing spaces. - + De bestandsnaam bevat spaties vooraan en achteraan. Filename contains leading spaces. - + De bestandsnaam bevat spaties vooraan. Filename contains trailing spaces. - + De bestandsnaam bevat spaties achteraan. @@ -1280,12 +1446,12 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. Case Clash Conflict - + The file could not be synced because it generates a case clash conflict with an existing file on this system. - + @@ -1304,93 +1470,93 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. - + today vandaag - + 0 byte 0 bytes - + Open existing file - + - + Case clashing file - + - + file B bestand B - - + + Open clashing file - + - + Please enter a new name for the clashing file: - + - + New filename Nieuwe bestandsnaam - + Rename file Bestand hernoemen - + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - + - + %1 does not support equal file names with only letter casing differences. - + - + Filename contains leading and trailing spaces. - + De bestandsnaam bevat spaties vooraan en achteraan. - + Filename contains leading spaces. - + De bestandsnaam bevat spaties vooraan. - + Filename contains trailing spaces. - + De bestandsnaam bevat spaties achteraan. - + Use invalid name Gebruik ongeldige naam - + Filename contains illegal characters: %1 - + Bestandsnaam bevat ongeldige tekens: %1 OCC::CleanupPollsJob - + Error writing metadata to the database Fout bij schrijven van metadata naar de database @@ -1398,12 +1564,12 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. OCC::ClientSideEncryption - + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - + - + Enter E2E passphrase Invoeren E2E wachtwoord @@ -1417,7 +1583,7 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. - + Conflicting versions of %1. Conflicterende versies van %1. @@ -1465,33 +1631,33 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken.<a href="%1">Open serverversie</a> - - + + Keep selected version Bewaar geselecteerde versie - + Open local version Open lokale versie - + Open server version Open serverversie - + Keep both versions Bewaar beide versies - + Keep local version Bewaar lokale versie - + Keep server version Bewaar serverversie @@ -1533,50 +1699,50 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. OCC::ConnectionValidator - + No Nextcloud account configured Geen Nextcloud-account geconfigureerd - + Authentication error: Either username or password are wrong. Authenticatiefout: Gebruikersnaam of wachtwoord onjuist. - + Timeout Time-out - + The provided credentials are not correct De verstrekte inloggegevens zijn niet juist - + The configured server for this client is too old De voor dit programma ingestelde server is te oud - + Please update to the latest server and restart the client. Werk de server bij naar de nieuwste versie en herstart het programma. Connection issue - + OCC::DiscoveryPhase - + Error while canceling deletion of a file Fout bij het annuleren van verwijdering van een bestand - + Error while canceling deletion of %1 Fout bij annuleren verwijderen van %1 @@ -1584,42 +1750,47 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. OCC::DiscoverySingleDirectoryJob - - + + Server error: PROPFIND reply is not XML formatted! Serverfout: PROPFIND-antwoord heeft geen XML-opmaak! - - + + Encrypted metadata setup error! - + + + + + Encrypted metadata setup error: initial signature from server is empty. + OCC::DiscoverySingleLocalDirectoryJob - + Error while opening directory %1 Fout bij het openen van map %1 - + Directory not accessible on client, permission denied Map niet toegankelijk op client, toegang geweigerd - + Directory not found: %1 Map niet gevonden: %1 - + Filename encoding is not valid Bestandsnaamcodering is niet geldig - + Error while reading directory %1 Fout tijdens lezen van map %1 @@ -1629,7 +1800,7 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. Invalid token received. - + @@ -1637,9 +1808,9 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. - + Please try again. - + @@ -1649,30 +1820,30 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. Could not find an account for local editing. - + - - - - - - + + + + + + Could not start editing locally. - + An error occurred trying to verify the request to edit locally. - + Could not validate the request to open a file from server. - + @@ -1686,72 +1857,72 @@ Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. Could not find a file for local editing. Make sure it is not excluded via selective sync. - + - - + + An error occurred during data retrieval. - + - - + + An error occurred trying to synchronise the file to edit locally. - + - + An error occurred during setup. - + - + Server error: PROPFIND reply is not XML formatted! - + Serverfout: PROPFIND-antwoord heeft geen XML-opmaak! - + Could not find a remote file info for local editing. Make sure its path is valid. - + - + Invalid local file path. - + - + Could not open %1 - + - + File %1 already locked. - + - - + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - + - + File %1 now locked. - + - + File %1 could not be locked. - + OCC::EncryptFolderJob - + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. Kan de metadata voor versleuteling niet genereren, de map wordt ontgrendeld. @@ -1768,29 +1939,29 @@ Dit kan een probleem zijn met je OpenSSL-bibliotheken. Error fetching metadata. - + Error locking folder. - + Error fetching encrypted folder ID. - + Error parsing or decrypting metadata. - + Failed to upload metadata - + @@ -1799,43 +1970,64 @@ Dit kan een probleem zijn met je OpenSSL-bibliotheken. %1 second(s) ago seconds elapsed since file last modified - + + + + %1 minute(s) ago minutes elapsed since file last modified - + + + + %1 hour(s) ago hours elapsed since file last modified - + + + + %1 day(s) ago days elapsed since file last modified - + + + + %1 month(s) ago months elapsed since file last modified - + + + + %1 year(s) ago years elapsed since file last modified - + + + + Locked by %1 - Expires in %2 minute(s) remaining time before lock expires - + + + + @@ -1878,37 +2070,52 @@ Dit kan een probleem zijn met je OpenSSL-bibliotheken. OCC::Flow2AuthWidget - + Unable to open the Browser, please copy the link to your Browser. Kan de browser niet openen, kopieer de link naar je browser. - + + + Error + Fout + + + Waiting for authorization Wachten op autorisatie - + Polling for authorization Controleren op autorisatie - + Starting authorization Starten autorisatie - + Link copied to clipboard. Link gekopieerd naar het klembord. - + + Open Browser + + + + + Switch to your browser to connect your account + Schakel over naar je browser om je account te verbinden + + Reopen Browser - Heropen browser + Heropen browser - + Copy Link Kopiëren link @@ -1916,171 +2123,195 @@ Dit kan een probleem zijn met je OpenSSL-bibliotheken. OCC::Folder - + Local folder %1 does not exist. Lokale map %1 bestaat niet. - + %1 should be a folder but is not. %1 zou een map moeten zijn, maar is dat niet. - + %1 is not readable. %1 is niet leesbaar. - + %1 and %n other file(s) have been removed. - %1 en %n ander bestand(en) zijn verwijderd.%1 en %n andere bestand(en) zijn verwijderd. + + %1 en %n ander bestand(en) zijn verwijderd. + %1 en %n andere bestand(en) zijn verwijderd. + - + %1 has been removed. %1 names a file. %1 is verwijderd. - + %1 and %n other file(s) have been added. - %1 en %n andere bestand zijn toegevoegd.%1 en %n andere bestanden zijn toegevoegd. + + %1 en %n andere bestand zijn toegevoegd. + %1 en %n andere bestanden zijn toegevoegd. + - + %1 has been added. %1 names a file. %1 is toegevoegd. - + %1 and %n other file(s) have been updated. - %1 en %n ander bestand(en) zijn bijgewerkt.%1 en %n andere bestand(en) zijn bijgewerkt. + + %1 en %n ander bestand(en) zijn bijgewerkt. + %1 en %n andere bestand(en) zijn bijgewerkt. + - + %1 has been updated. %1 names a file. %1 is bijgewerkt. - + %1 has been renamed to %2 and %n other file(s) have been renamed. - %1 is hernoemd naar %2 en %n ander bestand(en) is hernoemd.%1 is hernoemd naar %2 en %n andere bestand(en) zijn hernoemd. + + %1 is hernoemd naar %2 en %n ander bestand(en) is hernoemd. + %1 is hernoemd naar %2 en %n andere bestand(en) zijn hernoemd. + - + %1 has been renamed to %2. %1 and %2 name files. %1 is hernoemd naar %2. - + %1 has been moved to %2 and %n other file(s) have been moved. - %1 is verplaatst naar %2 en %n ander bestand(en) is verplaatst.%1 is verplaatst naar %2 en %n andere bestand(en) zijn verplaatst. + + %1 is verplaatst naar %2 en %n ander bestand(en) is verplaatst. + %1 is verplaatst naar %2 en %n andere bestand(en) zijn verplaatst. + - + %1 has been moved to %2. %1 is verplaatst naar %2. - + %1 has and %n other file(s) have sync conflicts. - %1 en %n ander bestand(en) hebben een sync conflict.%1 en %n andere bestand(en) hebben synchronisatie-conflicten. + + %1 en %n ander bestand(en) hebben een sync conflict. + %1 en %n andere bestand(en) hebben synchronisatie-conflicten. + - + %1 has a sync conflict. Please check the conflict file! %1 heeft een synchronisatie-conflict. Controleer het conflictbestand! - + %1 and %n other file(s) could not be synced due to errors. See the log for details. - %1 en %n ander bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details.%1 en %n andere bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details. + + %1 en %n ander bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details. + %1 en %n andere bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details. + - + %1 could not be synced due to an error. See the log for details. %1 kon niet worden gesynchroniseerd door een fout. Bekijk het log voor details. - + %1 and %n other file(s) are currently locked. - %1 en %n ander bestand zijn momenteel op slot.%1 en %n ander(e) bestand(en) zijn momenteel op slot. + + %1 en %n ander bestand zijn momenteel op slot. + %1 en %n ander(e) bestand(en) zijn momenteel op slot. + - + %1 is currently locked. %1 is momenteel op slot. - + Sync Activity Synchronisatie-activiteit - + Could not read system exclude file Kon het systeem-uitsluitingsbestand niet lezen - + A new folder larger than %1 MB has been added: %2. Er is een nieuwe map groter dan %1 MB toegevoegd: %2. - + A folder from an external storage has been added. Er is een map op externe opslag toegevoegd. - + Please go in the settings to select it if you wish to download it. Ga naar de instellingen om het te selecteren als u deze wilt downloaden. - + A folder has surpassed the set folder size limit of %1MB: %2. %3 - + - + Keep syncing - + - + Stop syncing - + - + The folder %1 has surpassed the set folder size limit of %2MB. - + - + Would you like to stop syncing this folder? - + - + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. Map %1 is gecreëerd, maar eerder uitgesloten van synchronisatie. Bestanden erin worden niet gesynchroniseerd. - + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. Bestand %1 is gecreëerd, maar eerder uitgesloten van synchronisatie. Het wordt niet gesynchroniseerd. - + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). @@ -2093,69 +2324,103 @@ Dit betekent dat de synchronisatieclient misschien niet meteen lokale wijziginge %1 - + Virtual file download failed with code "%1", status "%2" and error message "%3" - + + + + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + + + + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by downloading them from the server. + + + + + Remove all files? + + + + + Proceed with Deletion + + + + + Restore Files to Server + + + + + Restore Files from Server + - All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Alle bestanden in de syncmap"'%1" map werden verwijderd van de server. + Alle bestanden in de syncmap"'%1" map werden verwijderd van de server. Deze verwijderingen worden gesynchroniseerd naar je lokale syncmap, waardoor deze bestanden niet meer beschikbaar zijn, tenzij je het recht hebt om ze te herstellen. Als je de bestanden wilt behouden, worden ze opnieuw gesynchroniseerd met de server als je die autorisatie hebt. Als je de bestanden wilt verwijderen, worden ze niet beschikbaar, tenzij je de eigenaar bent. - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - Alle bestanden in je lokale syncmap "%1" werden verwijderd. Deze verwijderingen worden gesynchroniseerd naar je server, waardoor de bestanden niet beschikbaar zijn, tenzij ze worden teruggezet. Weet je zeker dat je deze acties wilt synchroniseren met de server? + Alle bestanden in je lokale syncmap "%1" werden verwijderd. Deze verwijderingen worden gesynchroniseerd naar je server, waardoor de bestanden niet beschikbaar zijn, tenzij ze worden teruggezet. Weet je zeker dat je deze acties wilt synchroniseren met de server? Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw gesynchroniseerd met de server. - Remove All Files? - Alle bestanden verwijderen? + Alle bestanden verwijderen? - Remove all files - Alle bestanden verwijderen + Alle bestanden verwijderen - Keep files - Bestanden bewaren + Bestanden bewaren OCC::FolderCreationDialog - + Create new folder Maak nieuwe map aan - + Enter folder name Geef mapnaam op - + Folder already exists Map bestaat al - + + %1 Create new folder + + + + Error Fout - + Could not create a folder! Check your write permissions. Kan map niet aanmaken! Controleer je schrijfmachtiging. @@ -2163,107 +2428,108 @@ Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw ge OCC::FolderMan - + Could not reset folder state Kan de beginstaat van de map niet terugzetten - + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. Een oud synchronisatieverslag "%1" is gevonden maar kan niet worden verwijderd. Zorg ervoor dat geen applicatie dit bestand gebruikt. - + (backup) (backup) - + (backup %1) (backup %1) - + Undefined state. - + - + Waiting to start syncing. In afwachting van synchronisatie. - + Preparing for sync. Synchronisatie wordt voorbereid - + Sync is running. Bezig met synchroniseren. - + Sync finished with unresolved conflicts. Synchronisatie beëindigd met niet opgeloste conflicten. - + Last sync was successful. - + - + Setup error. - + - + Sync request was cancelled. - + - + Sync is paused. Synchronisatie gepauzeerd. - + %1 (Sync is paused) %1 (Synchronisatie onderbroken) - + No valid folder selected! Geen geldige map geselecteerd! - + The selected path does not exist! Het geselecteerde pad bestaat niet! - + The selected path is not a folder! Het geselecteerde pad is geen map! - + + You have no permission to write to the selected folder! U heeft geen machtiging om te schrijven naar de geselecteerde map! - + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! Lokale map %1 bevat al een map die wordt gebruikt voor een mapsync verbinding. Kies een andere! - + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! Lokale map %1 zit al in een map die wordt gebruikt voor een mapsync verbinding. Kies een andere! - + There is already a sync from the server to this local folder. Please pick another local folder! Er wordt vanaf de server al naar deze lokale map gesynchroniseerd. Kies een andere lokale map! @@ -2271,12 +2537,21 @@ Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw ge OCC::FolderStatusDelegate - Add Folder Sync Connection - Toevoegen mapsynchronisatie verbinding + Toevoegen mapsynchronisatie verbinding + + + + Add live backup + - + + Synchronize any other local folder with your %1 + + + + File Bestand @@ -2284,157 +2559,160 @@ Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw ge OCC::FolderStatusModel - + You need to be connected to add a folder U moet verbonden zijn om een map toe te voegen - + Click this button to add a folder to synchronize. Klik op deze knop om een te synchroniseren map toe te voegen. - + Could not decrypt! - + - - + + %1 (%2) %1 (%2) - + Error while loading the list of folders from the server. Fout bij ophalen mappenlijst van de server. - + Fetching folder list from server … Mappenlijst ophalen van de server ... - + There are unresolved conflicts. Click for details. Er zijn nog niet-opgehelderde conflicten. Klik voor details. - + Virtual file support is enabled. Virtuele bestandsondersteuning is ingeschakeld. - + Signed out Afgemeld - + Synchronizing VirtualFiles with local folder Synchroniseren VirtualFiles met lokale map - + Synchronizing with local folder Synchroniseren met lokale map - + Checking for changes in remote "%1" Controleren op wijzigingen in externe "%1" - + Checking for changes in local "%1" Controleren op wijzigingen in lokale "%1" - + Reconciling changes Wijzigingen in overeenstemming brengen - + Syncing %1 - Example text: "Syncing 'foo.txt', 'bar.txt'" + Example text: "Syncing 'foo.txt', 'bar.txt'" Synchroniseren %1 - - + + , , - + download %1/s Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) download %1/s - + ↓ %1/s ↓ %1/s - + upload %1/s Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) upload %1/s - + ↑ %1/s ↑ %1/s - + %1 %2 (%3 of %4) Example text: "uploading foobar.png (2MB of 2MB)" %1 %2 (%3 van %4) - + %1 %2 Example text: "uploading foobar.png" %1 %2 - + A few seconds left, %1 of %2, file %3 of %4 Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" - + - + %5 left, %1 of %2, file %3 of %4 %5 over, %1 van %2, bestand %3 van %4 - + %1 of %2, file %3 of %4 Example text: "12 MB of 345 MB, file 6 of 7" %1 van %2, bestand %3 van %4 - + file %1 of %2 bestand %1 van %2 - + Waiting … Wachten ... - + Waiting for %n other folder(s) … - Wacht op %n andere map ...Wacht op %n andere mappen ... + + Wacht op %n andere map ... + Wacht op %n andere mappen ... + - + Preparing to sync … Voorbereiden synchronisatie ... @@ -2442,7 +2720,7 @@ Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw ge OCC::FolderWatcher - + The watcher did not receive a test notification. De kijker ontving geen testmelding. @@ -2458,12 +2736,12 @@ Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw ge OCC::FolderWizard - + Add Folder Sync Connection Toevoegen mapsynchronisatie verbinding - + Add Sync Connection Toevoegen Sync verbinding @@ -2471,95 +2749,155 @@ Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw ge OCC::FolderWizardLocalPath - + Click to select a local folder to sync. Klikken om een lokale map te selecteren voor synchronisatie - + Enter the path to the local folder. Geef het pad op naar de lokale map. - + Select the source folder Selecteer de bronmap + + + Add Folder Sync + + + + + Step 1 of 3: Select local folder + + + + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + + + + + Choose + + OCC::FolderWizardRemotePath - + Create Remote Folder Externe map aanmaken - + Enter the name of the new folder to be created below "%1": Voer de naam van de hieronder te maken nieuwe map in "%1": - + Folder was successfully created on %1. Map is succesvol aangemaakt op %1. - + Authentication failed accessing %1 Authenticatie mislukt bij benaderen %1 - + Failed to create the folder on %1. Please check manually. Aanmaken van de map op %1 mislukt. Controleer handmatig. - + Failed to list a folder. Error: %1 Tonen mappenlijst mislukt. Fout: %1 - + Choose this to sync the entire account Kies dit om je volledige account te synchroniseren - + This folder is already being synced. Deze map is al gesynchroniseerd. - + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. U synchroniseert <i>%1</i> al, dat is de bovenliggende map van <i>%2</i>. - + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. Je synchroniseert <i>%1</i> al, dat is de bovenliggende map van <i>%2</i>. + + + Add Folder Sync + + + + + Step 2 of 3: Directory in your %1 + + + + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + + + + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + + + + + Refresh + Vernieuwen + + + + Create folder + Maak map + OCC::FolderWizardSelectiveSync - - + + Use virtual files instead of downloading content immediately %1 Gebruik virtuele bestanden in plaats van de content direct te downloaden %1 - - + + (experimental) (experimenteel) - + + Add Folder Sync + + + + + Step 3 of 3: Selektive Synchronisation + + + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. Virtuele bestanden worden niet ondersteund voor Windows-partitie-hoofdmappen als lokale map. Kies een geldige submap onder de stationsletter. - + Virtual files are not available for the selected folder Virtuele bestanden zijn niet beschikbaar voor de geselecteerde map @@ -2567,40 +2905,43 @@ Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw ge OCC::FormatWarningsWizardPage - <b>Warning:</b> %1 - <b>Waarschuwing:</b> %1 + <b>Waarschuwing:</b> %1 - <b>Warning:</b> - <b>Waarschuwing:</b> + <b>Waarschuwing:</b> + + + + %1 + %1 OCC::GETFileJob - + No E-Tag received from server, check Proxy/Gateway Geen E-Tag ontvangen van de server, controleer Proxy/Gateway - + We received a different E-Tag for resuming. Retrying next time. We ontvingen een afwijkende E-Tag om door te gaan. We proberen het later opnieuw. - + We received an unexpected download Content-Length. We ontvingen een onverwachte download Content-Lengte. - + Server returned wrong content-range Server retourneerde verkeerde content-bandbreedte - + Connection Timeout Verbindingstime-out @@ -2608,227 +2949,246 @@ Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw ge OCC::GeneralSettings - + Advanced Geavanceerd - - About - Over - - - - Ask for confirmation before synchronizing new folders larger than - + Over - Legal notice - Juridische bepalingen + Juridische bepalingen - MB Trailing part of "Ask confirmation before syncing folder larger than" - MB + MB - Use &Monochrome Icons - Gebruik &monochrome pictogrammen + Gebruik &monochrome pictogrammen - &Launch on System Startup - &Starten bij systeemstart + &Starten bij systeemstart - Show Server &Notifications - Tonen server&meldingen - - - - Notify when synchronised folders grow larger than specified limit - + Tonen server&meldingen - Show Call Notifications - - - - Updates Updates - &Automatically check for Updates - &Controleer automatisch op updates - - - - Automatically disable synchronisation of folders that overcome limit - + &Controleer automatisch op updates - &Channel - &Kanaal + &Kanaal - Ask for confirmation before synchronizing external storages - Vraag bevestiging voor synchronisatie van mappen op externe opslag + Vraag bevestiging voor synchronisatie van mappen op externe opslag - + Move removed files to trash - + - - Show sync folders in &Explorer's navigation pane - - - - + S&how crash reporter T&onen crash reporter - + Edit &Ignored Files Bewerken &genegeerde bestanden - - + + Create Debug Archive Debugarchief maken - &Check for Update now - &Controleer nu op update - - - - Info - + &Controleer nu op update - Ask for confirmation before synchronizing folders larger than - Vraag bevestiging voordat mappen worden gedownload groter dan + Vraag bevestiging voordat mappen worden gedownload groter dan - + Desktop client x.x.x - + - + Update channel - + + + + + Ask for confirmation before + synchronizing new folders larger than + + + + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + + + + + Notify when synchronised folders grow + larger than specified limit + + + + + Automatically disable synchronisation of + folders that overcome limit + + + + + Ask for confirmation before synchronizing + external storages + + + + + Show sync folders in &Explorer's navigation + pane + + + + + Data Protection + + + + + &Analysis data collection for needs-based design + + + + + Privacy Policy + + + + + Open Source Software + - - + + stable stabiel - - + + beta beta - + &Restart && Update &Herstarten && Bijwerken - + + More Information + + + Show sync folders in &Explorer's Navigation Pane - Toon sync-mappen in het &Verkenner navigatievenster + Toon sync-mappen in het &Verkenner navigatievenster - + &Automatically check for updates - + - + Check Now - + - + Usage Documentation - + - + Legal Notice - + - + General Settings Algemene instellingen - + For System Tray Voor systeemvak - + Use &monochrome icons - + - + &Launch on system startup - + - + Show server &notifications - + - + Show call notifications - + - + Server notifications that require attention. Servermeldingen die aandacht nodig hebben. - + Show call notification dialogs. - + - + You cannot disable autostart because system-wide autostart is enabled. Je kunt autostart niet uitschakelen omdat systeem-brede autostart is ingeschakeld. - + Change update channel? Wijzigen bijwerkkanaal? - + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. @@ -2837,27 +3197,27 @@ Note that this selects only what pool upgrades are taken from, and that there ar Merk op dat dit alleen selecteert van welke pool upgrades worden overgenomen en dat er geen downgrades zijn: teruggaan van het betakanaal naar het stabiele kanaal kan meestal niet onmiddellijk worden gedaan en dat betekent wachten op een stabiele versie die nieuwer is dan de momenteel geïnstalleerde betaversie. - + Change update channel Wijzigen bijwerkkanaal - + Cancel Annuleren - + Zip Archives Zip Archieven - + Debug Archive Created Debugarchief Aangemaakt - + Debug archive is created at %1 Debugarchief is gemaakt op %1 @@ -2865,22 +3225,22 @@ Merk op dat dit alleen selecteert van welke pool upgrades worden overgenomen en OCC::GetOrCreatePublicLinkShare - + Password for share required Wachtwoord voor deellink vereist - + Please enter a password for your link share: Voer het wachtwoord in voor je deellink: - + Sharing error Fout bij delen - + Could not retrieve or create the public link share. Error: %1 @@ -2892,22 +3252,22 @@ Merk op dat dit alleen selecteert van welke pool upgrades worden overgenomen en OCC::HttpCredentialsGui - + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - + - + Reading from keychain failed with error: "%1" Het lezen van de sleutelketen is mislukt met fout: "%1" - + Enter Password Vul het wachtwoord in - + <a href="%1">Click here</a> to request an app password from the web interface. <a href="%1">Klik hier</a> om een nieuw app wachtwoord via de web interface op te vragen. @@ -2943,58 +3303,72 @@ Merk op dat dit alleen selecteert van welke pool upgrades worden overgenomen en OCC::IgnoreListTableWidget - + Pattern Patroon - + Allow Deletion Verwijderen toestaan - + Add Toevoegen - + Remove Verwijderen - + Remove all Alles verwijderen - Files or folders matching a pattern will not be synchronized. Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Bestanden of mappen die overeenkomen met een patroon zullen niet worden gesynchroniseerd. + Bestanden of mappen die overeenkomen met een patroon zullen niet worden gesynchroniseerd. Onderdelen die gewist mogen worden, worden verwijderd als ze verhinderen dat een map verdwijnt. Dit is nuttig voor metadata. - + + Files or folders that match this pattern will not be synchronized. + +Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. + + + + Could not open file Kan het bestand niet openen - + Cannot write changes to "%1". Kan geen wijzigingen wegschrijven naar "%1". - + + Ignore Pattern + + + + + Add New Ignore Pattern + + + Add Ignore Pattern - Toevoegen negeerpatroon + Toevoegen negeerpatroon - Add a new ignore pattern: - Voeg nieuw negeerpatroon toe: + Voeg nieuw negeerpatroon toe: @@ -3025,74 +3399,74 @@ Onderdelen die gewist mogen worden, worden verwijderd als ze verhinderen dat een Nieuwe bestandsnaam - + Rename file Bestand hernoemen - + The file "%1" could not be synced because the name contains characters which are not allowed on this system. Het bestand %1 kan niet worden gesynchroniseerd omdat de naam tekens bevat die niet zijn toegestaan op dit systeem. - + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - + - + Checking rename permissions … - + - + You don't have the permission to rename this file. Please ask the author of the file to rename it. Je bent niet gemachtigd om dit bestand te hernoemen. Vraag de auteur van het bestand om het te hernoemen. - + Failed to fetch permissions with error %1 - + - + Filename contains leading and trailing spaces. De bestandsnaam bevat spaties vooraan en achteraan. - + Filename contains leading spaces. De bestandsnaam bevat spaties vooraan. - + Filename contains trailing spaces. De bestandsnaam bevat spaties achteraan. - + Use invalid name Gebruik ongeldige naam - + Filename contains illegal characters: %1 Bestandsnaam bevat ongeldige tekens: %1 - + Could not rename file. Please make sure you are connected to the server. Kan het bestand niet hernoemen. Zorg ervoor dat je verbonden bent met de server. - + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. Kan het bestand niet hernoemen omdat er al een bestand met dezelfde naam op de server bestaat. Kies een andere naam. - + Could not rename local file. %1 - + @@ -3109,12 +3483,12 @@ Onderdelen die gewist mogen worden, worden verwijderd als ze verhinderen dat een Sluiten - + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - + - + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> <p>Gelicenseerd onder de GNU General Public License (GPL) Versie 2.0 of later</p> @@ -3156,12 +3530,12 @@ Merk op dat het gebruik van logging-opdrachtregel opties deze instelling zal ove OCC::Logger - + Error Fout - + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> <nobr>Bestand "%1"<br/>kan niet voor schrijven worden geopend.<br/><br/>De log output kan <b>niet</b> opgeslagen worden!</nobr> @@ -3217,132 +3591,157 @@ Merk op dat het gebruik van logging-opdrachtregel opties deze instelling zal ove OCC::NetworkSettings - + Proxy Settings Proxy Instellingen - No Proxy - Geen Proxy + Geen Proxy No proxy - + - + Use system proxy Gebruik systeem proxy - Specify proxy manually as - Specificeer proxy handmatig als + Specificeer proxy handmatig als Manually specify proxy - + - + Host Server - + Proxy server requires authentication Proxyserver heeft verificatie nodig - + Note: proxy settings have no effects for accounts on localhost Let op: proxy-instellingen hebben geen effect voor accounts op localhost - + Download Bandwidth Download bandbreedte - - + + No limit Geen beperking - - + + Limit to 3/4 of estimated bandwidth Beperk tot 3/4 van de geschatte bandbreedte - - + + Limit automatically Beperk automatisch - - + + Limit to Beperkt tot - - + + KBytes/s KBytes/s - + Upload Bandwidth Upload bandbreedte - + Hostname of proxy server Hostnaam van proxyserver - + Username for proxy server Gebruikersnaam voor proxyserver - + Password for proxy server Wachtwoord voor proxyserver - + HTTP(S) proxy HTTP(S) proxy - + SOCKS5 proxy SOCKS5 proxy - OCC::OCUpdater + OCC::OAuth - - New %1 update ready - Nieuwe %1 update is klaar + Error returned from the server: <em>%1</em> + Fout gemeld door de server: <em>%1</em> - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - Een nieuwe update voor %1 wordt geïnstalleerd. De updater kan om extra privileges vragen tijdens het update proces. Je computer kan herstart worden om de installatie te voltooien. + There was an error accessing the "token" endpoint: <br><em>%1</em> + Er treedt een fout op bij het benaderen van het "token" endpoint: <br><em>%1</em> - - Downloading %1. Please wait … - Downloaden %1. Even geduld … + Empty JSON from OAuth2 redirect + Lege JSON van OAuth2 redirect + + + Could not parse the JSON returned from the server: <br><em>%1</em> + Kon de van de server ontvangen JSON niet verwerken: <br><em>%1</em> + + + The reply from the server did not contain all expected fields + Het antwoord van de server bevat niet alle verwachte velden + + + <h1>Login Error</h1><p>%1</p> + <h1>Inlog fout<p>%1</p> + + + + OCC::OCUpdater + + + New %1 update ready + Nieuwe %1 update is klaar + + + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + Een nieuwe update voor %1 wordt geïnstalleerd. De updater kan om extra privileges vragen tijdens het update proces. Je computer kan herstart worden om de installatie te voltooien. + + + + Downloading %1. Please wait … + Downloaden %1. Even geduld … @@ -3398,66 +3797,66 @@ Merk op dat het gebruik van logging-opdrachtregel opties deze instelling zal ove OCC::OwncloudAdvancedSetupPage - + Connect Verbinden - - + + Use &virtual files instead of downloading content immediately %1 Gebruik &virtuele bestanden in plaats van direct downloaden content%1 - - + + (experimental) (experimenteel) - + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. Virtuele bestanden worden niet ondersteund voor Windows-partitie-hoofdmappen als lokale map. Kies een geldige submap onder de stationsletter. - + %1 folder "%2" is synced to local folder "%3" %1 map "%2" is gesynchroniseerd naar de lokale map "%3" - + Sync the folder "%1" Synchroniseer de map "%1" - + Warning: The local folder is not empty. Pick a resolution! Waarschuwing: De lokale map is niet leeg. Maak een keuze! - + %1 free space %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB %1 vrije ruimte - + Virtual files are not available for the selected folder Virtuele bestanden zijn niet beschikbaar voor de geselecteerde map - + Local Sync Folder Lokale synchronisatiemap - - + + (%1) (%1) - + There isn't enough free space in the local folder! Er is niet genoeg ruimte beschikbaar in de lokale map! @@ -3490,7 +3889,7 @@ Merk op dat het gebruik van logging-opdrachtregel opties deze instelling zal ove Configureer het client-side TLS-certificaat - + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> <html><head/><body><p>Kan niet verbinden met het opgegeven beveiligde serveradres <em>%1</em>.Hoe wilt u verder gaan?</p></body></html> @@ -3514,15 +3913,21 @@ Merk op dat het gebruik van logging-opdrachtregel opties deze instelling zal ove - OCC::OwncloudPropagator + OCC::OwncloudOAuthCredsPage - - Error with the metadata. Getting unexpected metadata format. - + Connect to %1 + Verbinden met %1 - - + Login in your browser + Login in je browser + + + + OCC::OwncloudPropagator + + + Impossible to get modification time for file in conflict %1 Onmogelijk om wijzigingstijd te krijgen voor bestand in conflict %1) @@ -3541,12 +3946,12 @@ Merk op dat het gebruik van logging-opdrachtregel opties deze instelling zal ove &Volgende > - + Server address does not seem to be valid Het serveradres lijkt niet geldig - + Could not load certificate. Maybe wrong password? Kan certificaat niet laden. Misschien is het wachtwoord onjuist? @@ -3554,144 +3959,144 @@ Merk op dat het gebruik van logging-opdrachtregel opties deze instelling zal ove OCC::OwncloudSetupWizard - + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> <font color="green">Succesvol verbonden met %1: %2 versie %3 (%4)</font><br/><br/> - + Invalid URL Ongeldige URL - + Failed to connect to %1 at %2:<br/>%3 Kon geen verbinding maken met %1 op %2:<br/>%3 - + Timeout while trying to connect to %1 at %2. Time-out bij verbinden met %1 op %2. - + Trying to connect to %1 at %2 … Probeer te verbinden met %1 om %2 ... - + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. De geauthentiseerde aanvraag voor de server werd omgeleid naar "%1". De URL is onjuist, de server is verkeerd geconfigureerd. - + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. Toegang door server verboden. Om te verifiëren dat je toegang mag hebben, <a href="%1">klik hier</a> om met je browser toegang tot de service te krijgen. - + There was an invalid response to an authenticated WebDAV request Er is een ongeldig antwoord ontvangen op een geauthenticeerde WebDAV opvraging - + Local sync folder %1 already exists, setting it up for sync.<br/><br/> Lokale synchronisatie map %1 bestaat al, deze wordt ingesteld voor synchronisatie.<br/><br/> - + Creating local sync folder %1 … Creëren lokale synchronisatie map %1 ... - + OK OK - + failed. mislukt. - + Could not create local folder %1 Kan lokale map %1 niet aanmaken - + No remote folder specified! Geen externe map opgegeven! - + Error: %1 Fout: %1 - + creating folder on Nextcloud: %1 aanmaken map op Nextcloud: %1 - + Remote folder %1 created successfully. Externe map %1 succesvol gecreëerd. - + The remote folder %1 already exists. Connecting it for syncing. De externe map %1 bestaat al. Verbinden voor synchroniseren. - - + + The folder creation resulted in HTTP error code %1 Het aanmaken van de map resulteerde in HTTP foutcode %1 - + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> Het aanmaken van de externe map is mislukt, waarschijnlijk omdat je inloggegevens fout waren.<br/>Ga terug en controleer je inloggegevens.</p> - + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> <p><font color="red">Het aanmaken van de externe map is mislukt, waarschijnlijk omdat je inloggegevens fout waren.</font><br/>ga terug en controleer je inloggevens.</p> - - + + Remote folder %1 creation failed with error <tt>%2</tt>. Aanmaken van externe map %1 mislukt met fout <tt>%2</tt>. - + A sync connection from %1 to remote directory %2 was set up. Er is een synchronisatie verbinding van %1 naar externe map %2 opgezet. - + Successfully connected to %1! Succesvol verbonden met %1! - + Connection to %1 could not be established. Please check again. Er kan geen verbinding worden gemaakt met %1. Probeer het nog eens. - + Folder rename failed Hernoemen map mislukt - + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. Kan de map niet verwijderen en back-uppen, omdat de map of een bestand daarin, geopend is in een ander programma. Sluit de map of het bestand en drup op Opnieuw of annuleer de installatie. - + <font color="green"><b>Local sync folder %1 successfully created!</b></font> <font color="green"><b>Lokale synch map %1 is succesvol aangemaakt!</b></font> @@ -3699,27 +4104,27 @@ Merk op dat het gebruik van logging-opdrachtregel opties deze instelling zal ove OCC::OwncloudWizard - + Add %1 account Toevoegen %1 account - + Skip folders configuration Sla configuratie van mappen over - + Cancel Annuleren - + Enable experimental feature? Inschakelen experimentele functies? - + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. @@ -3736,12 +4141,12 @@ Als je naar deze modus overschakelt, wordt elke momenteel lopende synchronisatie Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen we je om eventuele problemen te melden. - + Enable experimental placeholder mode Inschakelen experimentele aanduider modus - + Stay safe Blijf veilig @@ -3751,18 +4156,18 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen Password for share required - + Wachtwoord voor deellink vereist Please enter a password for your share: - + OCC::PollJob - + Invalid JSON reply from the poll URL Ongeldig JSON antwoord van de opgegeven URL @@ -3770,172 +4175,174 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::ProcessDirectoryJob - + Symbolic links are not supported in syncing. Symbolische links worden niet ondersteund bij het synchroniseren. - + File is listed on the ignore list. Het bestand is opgenomen op de negeerlijst. - + File names ending with a period are not supported on this file system. Bestandsnamen die eindigen met een punt worden niet ondersteund door het bestandssysteem. - + File names containing the character "%1" are not supported on this file system. Bestandsnamen met een "%1" symbool worden niet ondersteund door het bestandssysteem. - + File name contains at least one invalid character De bestandsnaam bevat ten minste één ongeldig teken - + The file name is a reserved name on this file system. De bestandsnaam is een gereserveerde naam op dit bestandssysteem. - + Filename contains trailing spaces. De bestandsnaam bevat spaties achteraan. - + Filename contains leading spaces. De bestandsnaam bevat spaties vooraan. - + Filename contains leading and trailing spaces. De bestandsnaam bevat spaties vooraan en achteraan. - + Filename is too long. De bestandsnaam is te lang. - + File/Folder is ignored because it's hidden. Bestand/Map is genegeerd omdat het verborgen is. - + Stat failed. Stat mislukt. - + Conflict: Server version downloaded, local copy renamed and not uploaded. Bestandsconflict: serverversie is gedownload, de lokale kopie is hernoemd en niet geüpload - + Case Clash Conflict: Server file downloaded and renamed to avoid clash. - + - + The filename cannot be encoded on your file system. De bestandsnaam kan op je bestandssysteem niet worden gecodeerd. - + The filename is blacklisted on the server. De bestandsnaam staat op de negeerlijst van de server. - + File has extension reserved for virtual files. Bestand heeft een extensie gereserveerd voor virtuele bestanden. - + size omvang - + permission machtiging - + file id bestand id - + Server reported no %1 Server rapporteerde nr %1 - + Cannot sync due to invalid modification time - + - + Could not upload file, because it is open in "%1". - + - + Error while deleting file record %1 from the database - + - + Conflict when uploading a folder. It's going to get cleared! Conflict bij het uploaden van een map. Het wordt opgeruimd! - + Conflict when uploading a file. It's going to get removed! Conflict bij het uploaden van een bestand. Het wordt verwijderd! - + + Moved to invalid target, restoring Verplaatst naar ongeldig doel, herstellen - + Ignored because of the "choose what to sync" blacklist Genegeerd vanwege de "wat synchroniseren" negeerlijst - + + Not allowed because you don't have permission to add subfolders to that folder Niet toegestaan, omdat je geen machtiging hebt om submappen aan die map toe te voegen - + Not allowed because you don't have permission to add files in that folder Niet toegestaan omdat je geen machtiging hebt om bestanden in die map toe te voegen - + Not allowed to upload this file because it is read-only on the server, restoring Niet toegestaan om dit bestand te uploaden, omdat het alleen-lezen is op de server, herstellen - + Not allowed to remove, restoring Niet toegestaan om te verwijderen, herstellen - + Error while reading the database Fout bij lezen database - + Server replied with an error while reading directory "%1" : %2 Server gaf een foutmelding bij lezen directory "%1'": %2 @@ -3943,28 +4350,28 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::PropagateDirectory - + could not delete file %1 from local DB - + - + Error updating metadata due to invalid modification time Fout bij bijwerken metadata door ongeldige laatste wijziging datum - - + + The folder %1 cannot be made read-only: %2 - + - + Error updating metadata: %1 Fout bij bijwerken metadata: %1 - + File is currently in use Bestand is al in gebruik @@ -3972,75 +4379,75 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::PropagateDownloadFile - + could not get file %1 from local DB - + - + File %1 cannot be downloaded because encryption information is missing. Bestand %1 kan niet worden gedownload, omdat crypto informatie ontbreekt. - - + + File has changed since discovery Het bestand is gewijzigd sinds het is gevonden - - + + Could not delete file record %1 from local DB - + - + File %1 can not be downloaded because of a local file name clash! Bestand %1 kan niet worden gedownload, omdat de naam conflicteert met een lokaal bestand - + The download would reduce free local disk space below the limit De download zou de vrije lokale schijfruimte beperken tot onder de limiet - + Free space on disk is less than %1 Vrije schijfruimte is minder dan %1 - + File was deleted from server Bestand was verwijderd van de server - + The file could not be downloaded completely. Het bestand kon niet volledig worden gedownload. - + The downloaded file is empty, but the server said it should have been %1. Het gedownloade bestand is leeg, maar de server meldde dat het %1 zou moeten zijn. - - + + File %1 has invalid modified time reported by server. Do not save it. Bestand %1 heeft een ongeldige wijzigingstijd gerapporteerd door de server. Bewaar het niet. - + File %1 downloaded but it resulted in a local file name clash! - + - + Error updating metadata: %1 Fout bij bijwerken metadata: %1 - + The file %1 is currently in use Bestand %1 is al in gebruik @@ -4048,12 +4455,12 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::PropagateItemJob - + ; Restoration Failed: %1 ; Herstellen mislukt: %1 - + A file or folder was removed from a read only share, but restoring failed: %1 Er is een bestand of map verwijderd van een alleen-lezen share, maar herstellen is mislukt: %1 @@ -4061,32 +4468,32 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::PropagateLocalMkdir - + could not delete file %1, error: %2 kon bestand file %1 niet verwijderen, fout: %2 - + Folder %1 cannot be created because of a local file or folder name clash! - + - + Could not create folder %1 Kon map %1 niet maken - + The folder %1 cannot be made read-only: %2 - + - + Error updating metadata: %1 Fout bij bijwerken metadata: %1 - + The file %1 is currently in use Bestand %1 is al in gebruik @@ -4094,60 +4501,65 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::PropagateLocalRemove - + Could not remove %1 because of a local file name clash Bestand %1 kon niet worden verwijderd, omdat de naam conflicteert met een lokaal bestand - + Could not delete file record %1 from local DB - + OCC::PropagateLocalRename - + + Folder %1 cannot be renamed because of a local file or folder name clash! + + + + File %1 downloaded but it resulted in a local file name clash! - + - - - + + + could not get file %1 from local DB - + - - + + Error setting pin state Fout bij instellen pin status - - + + Error updating metadata: %1 Fout bij bijwerken metadata: %1 - + The file %1 is currently in use Bestand %1 is al in gebruik - - + + Could not delete file record %1 from local DB - + - + Failed to propagate directory rename in hierarchy - + - + Failed to rename file Kon bestand niet hernoemen @@ -4155,20 +4567,20 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::PropagateRemoteDelete - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". - + Could not delete file record %1 from local DB - + OCC::PropagateRemoteDeleteEncryptedRootFolder - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". @@ -4176,22 +4588,22 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::PropagateRemoteMkdir - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Foutieve HTTP code ontvangen van de server. Verwacht was 201, maar ontvangen "%1 %2". Failed to encrypt a folder %1 - + - + Error writing metadata to the database: %1 Fout bij schrijven van metadata naar de database: %1 - + The file %1 is currently in use Bestand %1 is al in gebruik @@ -4204,37 +4616,39 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen Kon niet %1 hernoemen naar %2, fout: %3 - + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". Foutieve HTTP code ontvangen van de server. Verwacht werd 201, maar ontvangen "%1 %2". - + could not get file %1 from local DB - + - + Could not delete file record %1 from local DB - + - + + Error updating metadata: %1 Fout bij bijwerken metadata: %1 - + + The file %1 is currently in use Bestand %1 is al in gebruik - + Error setting pin state Fout bij instellen pin status - + Error writing metadata to the database Fout bij schrijven van Metadata naar de database @@ -4242,60 +4656,60 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::PropagateUploadFileCommon - + Failed to upload encrypted file. Kon versleuteld bestand niet uploaden. - + File %1 cannot be uploaded because another file with the same name, differing only in case, exists Bestand %1 kan niet worden geüpload omdat er al een ander bestand met dezelfde naam bestaat, al verschillen hoofd/kleine letters - - + + Upload of %1 exceeds the quota for the folder Upload van %1 overschrijdt het quotum voor de map - - - + + + File %1 has invalid modification time. Do not upload to the server. Bestand %1 heeft een ongeldige laatste wijziging datum. Upload niet naar de server. - + File Removed (start upload) %1 Bestand verwijderd (start upload) %1 - + Local file changed during syncing. It will be resumed. Lokaal bestand gewijzigd gedurende sync. Wordt opnieuw meegenomen. - + Local file changed during sync. Lokaal bestand gewijzigd tijdens sync. - + Failed to unlock encrypted folder. Kon versleutelde map niet ontgrendelen. - + Unable to upload an item with invalid characters - + - + Error updating metadata: %1 Fout bij bijwerken metadata: %1 - + The file %1 is currently in use Bestand %1 is al in gebruik @@ -4303,32 +4717,32 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::PropagateUploadFileNG - + The local file was removed during sync. Het lokale bestand werd verwijderd tijdens sync. - + Local file changed during sync. Lokaal bestand gewijzigd tijdens sync. - + Poll URL missing Peilingen-URL ontbreekt - + Unexpected return code from server (%1) Onverwachte reactie van server (%1) - + Missing File ID from server Ontbrekende File ID van de server - + Missing ETag from server Ontbrekende ETag van de server @@ -4336,22 +4750,22 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::PropagateUploadFileV1 - + Poll URL missing URL opvraag ontbreekt - + The local file was removed during sync. Het lokale bestand werd verwijderd tijdens sync. - + Local file changed during sync. Lokaal bestand gewijzigd tijdens sync. - + The server did not acknowledge the last chunk. (No e-tag was present) De server heeft het laatste deel niet bevestigd (er was geen e-tag aanwezig) @@ -4387,7 +4801,7 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::SelectiveSyncDialog - + Choose What to Sync Kies wat te synchroniseren @@ -4395,33 +4809,33 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::SelectiveSyncWidget - + Loading … Laden ... - + Deselect remote folders you do not wish to synchronize. Deselecteer de externe mappen die u niet wenst te synchroniseren. - + Name Naam - + Size Grootte - - + + No subfolders currently on the server. Momenteel geen submappen op de server. - + An error occurred while loading the list of sub folders. Er trad een fout op bij het laden van de lijst met submappen. @@ -4434,9 +4848,8 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen Antwoord - Dismiss - Terzijde leggen + Terzijde leggen @@ -4447,23 +4860,27 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen Instellingen - + %1 Settings This name refers to the application name e.g Nextcloud %1 Instellingen - + + New Account + + + + General Algemeen - Network - Netwerk + Netwerk - + Account Account @@ -4473,45 +4890,63 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen Error - + Fout OCC::ShareModel - + Secure file drop link - + - + Share link - + - + Link share - + - + Internal link - + - + Secure file drop - + - + Could not find local folder for %1 - + + + + + OCC::ShareUserLine + + Username + Gebruikersnaam - - Enter a note for the recipient - + Can edit + Kan bewerken + + + Note: + Opmerking: + + + Password: + Wachtwoord: + + + Expires: + Verloopt: @@ -4520,17 +4955,17 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen Search globally - + No results found - + Global search results - + @@ -4542,173 +4977,176 @@ Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen OCC::SocketApi - + Failed to encrypt folder at "%1" - + - + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - + - + Failed to encrypt folder - + - + Could not encrypt the following folder: "%1". Server replied with error: %2 - + - + Folder encrypted successfully - + - + The following folder was encrypted successfully: "%1" - + - + Context menu share Contextmenu delen - + Select new location … Selecteer nieuwe locatie ... - + I shared something with you Ik deelde iets met u - - + + Share options Deelopties - - + + Activity Activiteit - + Copy private link to clipboard Kopieer privé-link naar klembord - + Send private link by email … Verstuur privélink per e-mail --- - + Leave this share - + - + Resharing this file is not allowed Verder delen van dit bestand is niet toegestaan - + Resharing this folder is not allowed Verder delen van deze map is niet toegestaan - + Copy secure file drop link - + - - + + Copy public link Kopieer openbare link - + Copy secure filedrop link - + - + Copy internal link Kopieer interne link - + Encrypt - + Versleutelen - + Lock file - + - + Unlock file - + - + Locked by %1 - + - + Expires in %1 minutes remaining time before lock expires - + + + + - + Edit Bewerken - + Open in browser Openen in browser - + Resolve conflict … Oplossen conflict ... - + Move and rename … Verplaatsen en hernoemen ... - + Move, rename and upload … Verplaatsen, hernoemen en uploaden ... - + Delete local changes Verwijder lokale aanpassingen - + Move and upload … Verplaatsen en uploaden ... - + Delete Verwijderen @@ -4936,129 +5374,138 @@ Server replied with error: %2 Kon bestand niet bijwerken: %1 - + Could not update virtual file metadata: %1 Kon virtuele bestand metadata niet bijwerken: %1 - + Could not update file metadata: %1 - + - + Could not set file record to local DB: %1 - + - + Unresolved conflict. Bestandsconflict - + Only %1 are available, need at least %2 to start Placeholders are postfixed with file sizes using Utility::octetsToString() Slechts %1 beschikbaar, maar heeft minimaal %2 nodig om te starten - + Unable to open or create the local sync database. Make sure you have write access in the sync folder. Kon de lokale sync-database niet openen of aanmaken. Zorg ervoor dat je schrijf-toegang hebt in de sync-map - + Using virtual files with suffix, but suffix is not set gebruik maken van virtuele bestanden met achtervoegsel, maar achtervoegsel niet ingesteld - + Unable to read the blacklist from the local database Kan de blacklist niet lezen uit de lokale database - + Unable to read from the sync journal. Niet mogelijk om te lezen uit het synchronisatie verslag. - + Cannot open the sync journal Kan het sync transactielog niet openen - + Disk space is low: Downloads that would reduce free space below %1 were skipped. Schijfruimte laag: Downloads die de vrije ruimte tot onder %1 zouden reduceren, zijn overgeslagen. - + There is insufficient space available on the server for some uploads. Onvoldoende schijfruimte op de server voor sommige uploads. + + OCC::SyncJournalDb + + + Failed to connect database. + Kon niet verbinden met database. + + OCC::SyncStatusSummary - - + + Offline Offline - - - + + + All synced! Alles gesynchroniseerd! - + Some files couldn't be synced! Sommige bestanden konden niet gesynchroniseerd worden! - + See below for errors Zie hieronder voor fouten Preparing sync - + - + + Syncing Synchroniseren - + Sync paused Synchronisatie gepauzeerd - + Some files could not be synced! Sommige bestanden konden niet gesynchroniseerd worden! - + See below for warnings Zie hieronder voor waarschuwingen - + %1 of %2 · %3 left %1 van %2 · %3 resterend - + %1 of %2 %1 van %2 - + Syncing file %1 of %2 Bestand %1 van %2 synchroniseren @@ -5066,7 +5513,7 @@ Server replied with error: %2 OCC::Systray - + Download Download @@ -5118,7 +5565,7 @@ Server replied with error: %2 Vervolg sync voor iedereen - + %1: %2 %1: %2 @@ -5126,38 +5573,36 @@ Server replied with error: %2 OCC::Theme - + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - + - <p>%1 Desktop Client</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 Desktop Client</p> + <p>%1 Desktop Client</p> - + <p><small>Using virtual files plugin: %1</small></p> <p><small>Gebruik makend van virtuele bestanden plugin: %1</small></p> - + <p>%1 desktop client %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - + - - + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> <p>Versie %1. Voor meer informatie klik <a href='%2'>hier</a>.</p> - + <p>This release was supplied by %1.</p> - + @@ -5188,17 +5633,17 @@ Server replied with error: %2 Failed to update folder metadata. - + Failed to unlock encrypted folder. - + Kon versleutelde map niet ontgrendelen. Failed to finalize item. - + @@ -5214,62 +5659,67 @@ Server replied with error: %2 Error updating metadata for a folder %1 - + Could not fetch public key for user %1 - + Could not find root encrypted folder for folder %1 - + - Could not add or remove a folder user %1, for folder %2 - + Could not add or remove user %1 to access folder %2 + Failed to unlock a folder. - + OCC::User - + + %1 notifications + + + + Retry all uploads Probeer alle uploads opnieuw - - + + Resolve conflict - + OCC::UserModel - + Confirm Account Removal Bevestig verwijderen account - + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> <p>Wilt je echt de verbinding met het account <i>%1</i> verbreken?</p><p><b>Let op:</b> Hierdoor verwijder je <b>geen</b> bestanden.</p> - + Remove connection Verwijderen verbinding - + Cancel Annuleren @@ -5284,27 +5734,27 @@ Server replied with error: %2 Could not fetch status. Make sure you are connected to the server. - + Status feature is not supported. You will not be able to set your status. - + Emojis are not supported. Some status functionality may not work. - + Could not set status. Make sure you are connected to the server. - + Could not clear status message. Make sure you are connected to the server. - + @@ -5371,6 +5821,24 @@ Server replied with error: %2 %1 dagen + + OCC::ValidateChecksumHeader + + + The checksum header is malformed. + De header van het controlegetal is misvormd. + + + + The checksum header contained an unknown checksum type "%1" + Het header controlegetal bevat een onbekend controlegetal type "%1" + + + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + Het gedownloade bestand komt niet overeen met het controlegetal. Het wordt opnieuw verwerkt. "%1" != "%2" + + OCC::Vfs @@ -5384,44 +5852,44 @@ Server replied with error: %2 Download error - + Error downloading - + could not be downloaded - + > More details - + More details - + Error downloading %1 - + %1 could not be downloaded. - + OCC::VfsSuffix - + Error updating metadata due to invalid modification time Fout bij bijwerken metadata door ongeldige laatste wijziging datum @@ -5430,7 +5898,7 @@ Server replied with error: %2 OCC::VfsXAttr - + Error updating metadata due to invalid modification time Fout bij bijwerken metadata door ongeldige laatste wijziging datum @@ -5452,13 +5920,8 @@ Server replied with error: %2 OCC::WebFlowCredentials - You have been logged out of your account %1 at %2. Please login again. - - - - - Please login with the account: %1 - + <b>You have been logged out of your account %1 at %2. Please login again.</b> + @@ -5469,37 +5932,34 @@ Server replied with error: %2 Formulier - + Log in - + Meld u aan - + Sign up with provider - + - + Keep your data secure and under your control Hou je gegevens veilig en in eigen beheer - Secure collaboration & file exchange - Veilige samenwerking & bestandsuitwisseling + Veilige samenwerking & bestandsuitwisseling - Easy-to-use web mail, calendaring & contacts - Eenvoudig te gebruiken webmail, agenda & contacten + Eenvoudig te gebruiken webmail, agenda & contacten - Screensharing, online meetings & web conferences - Schermdelen, online afspraken & web conferenties + Schermdelen, online afspraken & web conferenties - + Host your own server Host je eigen server @@ -5507,197 +5967,230 @@ Server replied with error: %2 OCC::ownCloudGui - + Unsupported Server Version Niet-ondersteunde server versie - + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. De server van account %1 gebruikt een niet ondersteunde versie %2. Het gebruik van deze clientsoftware met niet-ondersteunde server versies is niet getest en mogelijk gevaarlijk. Verdergaan is op eigen risico. - + Disconnected Niet verbonden - + Disconnected from some accounts Niet verbonden met sommige accounts - + Disconnected from %1 Losgekoppeld van %1 - + Disconnected from accounts: Losgekoppeld van account: - + Account %1: %2 Account %1: %2 - + Please sign in Log alstublieft in - + Signed out Afgemeld - + Account synchronization is disabled Account synchronisatie is uitgeschakeld - - + + Synchronization is paused Synchronisatie is gepauzeerd - + Folder %1: %2 Map %1: %2 - + Unresolved conflicts Niet opgeloste conflicten - + Up to date Bijgewerkt - + Error during synchronization Fout bij synchronisatie - + There are no sync folders configured. Er zijn geen synchronisatie-mappen geconfigureerd. - + No sync folders configured Geen syncmappen geconfigureerd - + Checking for changes in remote "%1" Controleren op wijzigingen in externe "%1" - + Checking for changes in local "%1" Controleren op wijzigingen in lokale "%1" - + Syncing %1 of %2 (%3 left) Sync %1 van %2 (%3 over) - + Syncing %1 of %2 Synchroniseren %1 van %2 - + Syncing %1 (%2 left) Sync %1 (%2 over) - + Syncing %1 Synchroniseren %1 - + %1 (%2, %3) %1 (%2, %3) + + OCC::sesSnackBar + + + Error + Fout + + + + Warning + Waarschuwing + + + + Success + + + OwncloudAdvancedSetupPage - + &Local Folder &Lokale map - + Username Gebruikersnaam - + Local Folder Lokale map - + Choose different folder - + - + Server address Serveradres - + Sync Logo Sync Logo - + Synchronize everything from server Synchroniseer alles vanaf de server - + Ask before syncing folders larger than Vraag bevestiging voor synchronisatie van mappen groter dan - + + + MB + + Trailing part of "Ask confirmation before syncing folder larger than" + + + + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + + + + MB Trailing part of "Ask confirmation before syncing folder larger than" - MB + MB - + Ask before syncing external storages Vraag bevestiging voor synchronisatie externe opslag - + Choose what to sync Selectieve synchronisatie - + Keep local data Bewaar de lokale gegevens - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Als deze checkbox is aangevinkt zullen bestaande bestanden in de lokale map worden gewist om een schone sync vanaf de server te starten.</p><p>Vink dit niet aan als de lokale bestanden naar de map op de server zouden moeten worden geüploadet.</p></body></html> + <html><head/><body><p>Als deze checkbox is aangevinkt zullen bestaande bestanden in de lokale map worden gewist om een schone sync vanaf de server te starten.</p><p>Vink dit niet aan als de lokale bestanden naar de map op de server zouden moeten worden geüploadet.</p></body></html> - + Erase local folder and start a clean sync Wis de map op je computer en start een schone sync @@ -5715,6 +6208,25 @@ Server replied with error: %2 &Wachtwoord + + OwncloudOAuthCredsPage + + Please switch to your browser to proceed. + Schakel om naar je browser om door te gaan. + + + An error occurred while connecting. Please try again. + Er trad een verbindingsfout op. Probeer nogmaals. + + + Re-open Browser + Heropen browser + + + Copy link + Link kopiëren + + OwncloudSetupPage @@ -5724,9 +6236,8 @@ Server replied with error: %2 TextLabel - Logo - Logo + Logo @@ -5742,71 +6253,80 @@ Server replied with error: %2 QObject - + New folder Nieuwe map - + You renamed %1 Je hernoemde %1 - + You deleted %1 Je verwijderde %1 - + You created %1 Je creëerde %1 - + You changed %1 Je wijzigde %1 - + Synced %1 Gesynchroniseerd %1 - + %nd delay in days after an activity - + + + + - + in the future in de toekomst - + %nh delay in hours after an activity - + + + + - + now nu - + 1m one minute after activity date and time - + - + %nm delay in minutes after an activity - + + + + - + Some time ago Even geleden @@ -5819,7 +6339,27 @@ Server replied with error: %2 Paths beginning with '#' character are not supported in VFS mode. - + + + + + Failed to create debug archive + + + + + Could not create debug archive in selected location! + + + + + The directory %1 cannot be part of your sync directory. Please choose another folder. + + + + + Reply + Antwoord @@ -5827,207 +6367,235 @@ Server replied with error: %2 Solve sync conflicts - + %1 files in conflict indicate the number of conflicts to resolve - + + + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - + - + All local versions - + - + All server versions - + - + Resolve conflicts - + - + Cancel - + Annuleren + + + + SesErrorBox + + + Error + Fout + + + + SesTrayHeader + + + Website + + + + + Open Nextcloud in browser + + + + + Open local or group folders + ShareDelegate - + Create a new share link - + - + Copy share link location - + - + Copied! - + - + Share options - + Deelopties ShareDetailsPage - + An error occurred setting the share password. - - - - - Edit share - + - + Dismiss - + - - Share label - + + + Allow upload and editing + - - - Allow upload and editing - + + Custom Permissions + - + View only - + - + File drop (upload only) - + - + Allow resharing - + - + Hide download - + - + Password protect Beveiligen met wachtwoord - + Set expiration date - + - + Note to recipient - + + + + + Enter the note to recipient + - + Unshare - + - + Add another link - + - + Share link copied! - + - + Copy share link - + ShareView - + Password required for new share - + - + Share password - + - + Sharing is disabled - + - + This item cannot be shared. - + - + Sharing is disabled. - + ShareeSearchField - + Search for users or groups… - + Sharing is not available for this folder - + SyncJournalDb - Failed to connect database. - Kon niet verbinden met database. + Kon niet verbinden met database. SyncStatus - + Sync now - + - + Resolve conflicts - + @@ -6040,55 +6608,242 @@ Server replied with error: %2 Send reply to chat message - + + + + + TestSetUserStatusDialog + + + + 1 day + 1 dag + + + + + + + + Don't clear + Niet wissen + + + + + + + + 1 hour + 1 uur + + + + + + + 30 minutes + 30 minuten + + + + + + 4 hours + 4 uren + + + + + + Today + Vandaag + + + + + + This week + Deze week + + + + Less than a minute + Minder dan een minuut + + + + 1 minute + 1 minuut + + + + 7 days + + + + + Could not fetch predefined statuses. Make sure you are connected to the server. + Kan vooraf gedefinieerde statussen niet ophalen. Zorg ervoor dat je verbonden bent met de server. + + + + Could not fetch status. Make sure you are connected to the server. + + + + + Status feature is not supported. You will not be able to set your status. + + + + + Could not set status. Make sure you are connected to the server. + + + + + Emojis are not supported. Some status functionality may not work. + + + + + Could not clear status message. Make sure you are connected to the server. + TrayFoldersMenuButton - + + Files + + + + Open local or group folders - + - + Open local folder - + - + Connected - + Verbonden - + Disconnected - - - - - Group folder button - + Niet verbonden - + Open local folder "%1" - + - + Open group folder "%1" - + - + Open %1 in file explorer - + - + User group and local folders menu - + + + + + TrayWindowAccountMenu + + + Current account + Huidige account + + + + Resume sync for all + + + + + Pause sync for all + + + + + Add account + Account toevoegen + + + + Settings + Instellingen + + + + Exit + Afsluiten + + + + Current account avatar + + + + + Current account status is online + + + + + Current account status is do not disturb + + + + + Account switcher and settings menu + Accountswitcher en instellingenmenu + + + + TrayWindowHeaderBar + + + Website + + + + + Open Nextcloud in browser + + + + + Open local or group folders + + + + + Open Nextcloud Talk in browser + Open Nextcloud Talk in browser + + + + More apps + Meer apps + + + + Open %1 in browser + Open %1 in browser @@ -6128,7 +6883,7 @@ Server replied with error: %2 No results for - + @@ -6136,50 +6891,40 @@ Server replied with error: %2 Search results section %1 - + UserLine - + Switch to account Omschakelen naar account - - Current account status is online - - - - - Current account status is do not disturb - - - - + Account actions Accountacties - + Set status Status instellen - - + + Log out Afmelden - - + + Log in Meld u aan - + Remove account Verwijder account @@ -6209,7 +6954,7 @@ Server replied with error: %2 Mute all notifications - + @@ -6219,7 +6964,7 @@ Server replied with error: %2 Appear offline - + @@ -6239,7 +6984,7 @@ Server replied with error: %2 Cancel - + Annuleren @@ -6255,62 +7000,80 @@ Server replied with error: %2 Utility - + %L1 B %L1 B %L1 TB - + - + %L1 GB %L1 GB - + %L1 MB %L1 MB - + %L1 KB %L1 KB - + %n year(s) - %n jaar%n jaar + + %n jaar + %n jaar + - + %n month(s) - %n maand%n maanden + + %n maand + %n maanden + - + %n day(s) - %n dag%n dagen + + %n dag + %n dagen + - + %n hour(s) - %n uur%n uur + + %n uur + %n uur + - + %n minute(s) - %n minuut%n minuten + + %n minuut + %n minuten + - + %n second(s) - %n seconde%n seconde(n) + + %n seconde + %n seconde(n) + - + %1 %2 %1 %2 @@ -6318,19 +7081,16 @@ Server replied with error: %2 ValidateChecksumHeader - The checksum header is malformed. - De header van het controlegetal is misvormd. + De header van het controlegetal is misvormd. - The checksum header contained an unknown checksum type "%1" - Het header controlegetal bevat een onbekend controlegetal type "%1" + Het header controlegetal bevat een onbekend controlegetal type "%1" - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Het gedownloade bestand komt niet overeen met het controlegetal. Het wordt opnieuw verwerkt. "%1" != "%2" + Het gedownloade bestand komt niet overeen met het controlegetal. Het wordt opnieuw verwerkt. "%1" != "%2" @@ -6341,112 +7101,86 @@ Server replied with error: %2 Nextcloud desktop hoofddialoog - Current account - Huidige account + Huidige account - - Resume sync for all - Hervat de synchronisatie voor iedereen + Hervat de synchronisatie voor iedereen - - Pause sync for all - Synchronisatie voor iedereen onderbreken + Synchronisatie voor iedereen onderbreken - Add account - Account toevoegen + Account toevoegen - Add new account - Nieuw account toevoegen + Nieuw account toevoegen - Settings - Instellingen + Instellingen - Exit - Afsluiten - - - - Current account avatar - + Afsluiten - - Current account status is online - - - - - Current account status is do not disturb - - - - Account switcher and settings menu - Accountswitcher en instellingenmenu - - - - Open local or group folders - + Accountswitcher en instellingenmenu - Open Nextcloud Talk in browser - Open Nextcloud Talk in browser + Open Nextcloud Talk in browser - More apps - Meer apps + Meer apps - Open %1 in browser - Open %1 in browser + Open %1 in browser - + Unified search results list Samengevoegde zoekresultaten lijst - + New activities - + main.cpp - + System Tray not available Systeemvak niet beschikbaar - + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. %1 heeft een werkend systeemvak nodig. Als je XFCE draait volg je <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">deze instructies</a>. Installeer anders een systeemvak applicatie zoals "trayer" en probeer het opnieuw. + + nextcloudTheme::about() + + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Gebouwd vanaf Git revisie <a href="%1">%2</a> op %3, %4 gebruik makend van Qt %5, %6</small></p> + + nextcloudTheme::aboutInfo() - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - + <p><small>Gebouwd vanaf Git revisie <a href="%1">%2</a> op %3, %4 gebruik makend van Qt %5, %6</small></p> @@ -6479,7 +7213,7 @@ Server replied with error: %2 Server version downloaded, copied changed local file into case conflict conflict file - + @@ -6512,46 +7246,56 @@ Server replied with error: %2 Lokale metadata geüploaded - + + Updated local virtual files metadata + + + + Unknown Onbekend - + downloading downloaden - + uploading uploaden - + deleting verwijderen - + moving verplaatsen - + ignoring negerend - + error fout - + updating local metadata Bijwerken lokale metadata + + + updating local virtual files metadata + + theme @@ -6609,177 +7353,54 @@ Server replied with error: %2 utility - + Could not open browser Kon browser niet openen - + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? Er trad een fout op bij het starten van de browser om naar URL %1 te gaan. Misschien is er geen standaardbrowser geconfigureerd? - + Could not open email client Kon e-mailclient niet openen - + There was an error when launching the email client to create a new message. Maybe no default email client is configured? Er trad een fout op bij het starten van de e-mailclient om een nieuw bericht te maken. Misschien is er geen e-mailclient gedefinieerd? - + Always available locally Altijd lokaal beschikbaar - + Currently available locally Momenteel lokaal beschikbaar - + Some available online only Sommige alleen online beschikbaar - + Available online only Alleen online beschikbaar - + Make always available locally Maak altijd lokaal beschikbaar - + Free up local space Lokale ruimte vrijmaken - - OCC::AbstractPropagateRemoteDeleteEncrypted - - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". - - - - "%1 Failed to unlock encrypted folder %2". - "%1 kon versleutelde map %2" niet ontgrendelen. - - - - OCC::OAuth - - - Error returned from the server: <em>%1</em> - Fout gemeld door de server: <em>%1</em> - - - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Er treedt een fout op bij het benaderen van het "token" endpoint: <br><em>%1</em> - - - - Empty JSON from OAuth2 redirect - Lege JSON van OAuth2 redirect - - - - Could not parse the JSON returned from the server: <br><em>%1</em> - Kon de van de server ontvangen JSON niet verwerken: <br><em>%1</em> - - - - The reply from the server did not contain all expected fields - Het antwoord van de server bevat niet alle verwachte velden - - - - <h1>Login Error</h1><p>%1</p> - <h1>Inlog fout<p>%1</p> - - - - <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> - - - - - OCC::OwncloudOAuthCredsPage - - - Connect to %1 - Verbinden met %1 - - - - Login in your browser - Login in je browser - - - - OCC::ShareUserLine - - - Username - Gebruikersnaam - - - - Can edit - Kan bewerken - - - - Note: - Opmerking: - - - - Password: - Wachtwoord: - - - - Expires: - Verloopt: - - - - OwncloudOAuthCredsPage - - - Please switch to your browser to proceed. - Schakel om naar je browser om door te gaan. - - - - An error occurred while connecting. Please try again. - Er trad een verbindingsfout op. Probeer nogmaals. - - - - Re-open Browser - Heropen browser - - - - Copy link - Link kopiëren - - - - nextcloudTheme::about() - - - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Gebouwd vanaf Git revisie <a href="%1">%2</a> op %3, %4 gebruik makend van Qt %5, %6</small></p> - - - \ No newline at end of file + From 9a8ab9b1607f327f68648dc7fb4fe9155f460eae Mon Sep 17 00:00:00 2001 From: Boris Baltes Date: Thu, 12 Dec 2024 13:50:59 +0100 Subject: [PATCH 035/104] SES-228 cleanup - moved validation one step up --- src/gui/folderwizard.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/folderwizard.cpp b/src/gui/folderwizard.cpp index e99295721b981..8d2c7142c9b42 100644 --- a/src/gui/folderwizard.cpp +++ b/src/gui/folderwizard.cpp @@ -118,9 +118,6 @@ bool FolderWizardLocalPath::isComplete() const QUrl serverUrl = _account->url(); serverUrl.setUserName(_account->credentials()->user()); - const auto errorStr = FolderMan::instance()->checkPathValidityForNewFolder( - QDir::fromNativeSeparators(_ui.localFolderLineEdit->text()), serverUrl).second; - SyncDirValidator syncDirValidator(QDir::fromNativeSeparators(_ui.localFolderLineEdit->text())); if (!syncDirValidator.isValidDir()) { _ui.sesSnackBar->show(); @@ -128,6 +125,9 @@ bool FolderWizardLocalPath::isComplete() const return false; } + const auto errorStr = FolderMan::instance()->checkPathValidityForNewFolder( + QDir::fromNativeSeparators(_ui.localFolderLineEdit->text()), serverUrl).second; + if(errorStr.isEmpty()) { _ui.sesSnackBar->hide(); From a02c85258ed7a30e852e6c8d7ffd0247c12a73ff Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Thu, 12 Dec 2024 16:40:08 +0100 Subject: [PATCH 036/104] SES-213 replace nextcloud with hidrivenext in logfile names --- src/csync/csync_exclude.cpp | 2 +- src/gui/folder.cpp | 2 +- src/libsync/logger.cpp | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/csync/csync_exclude.cpp b/src/csync/csync_exclude.cpp index 5c3ab723cedac..5206def1a8d64 100644 --- a/src/csync/csync_exclude.cpp +++ b/src/csync/csync_exclude.cpp @@ -151,7 +151,7 @@ static CSYNC_EXCLUDE_TYPE _csync_excluded_common(const QString &path, bool exclu if (bname.startsWith(QLatin1String(".owncloudsync.log"), Qt::CaseInsensitive)) { // ".owncloudsync.log*" return CSYNC_FILE_SILENTLY_EXCLUDED; } - if (bname.startsWith(QLatin1String(".nextcloudsync.log"), Qt::CaseInsensitive)) { // ".nextcloudsync.log*" + if (bname.startsWith(QLatin1String(".hidrivenextsync.log"), Qt::CaseInsensitive)) { // ".hidrivenextsync.log*" return CSYNC_FILE_SILENTLY_EXCLUDED; } } diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index d63f5980b0c15..e444ad5f81312 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -1604,7 +1604,7 @@ void Folder::registerFolderWatcher() } connect(_folderWatcher.data(), &FolderWatcher::filesLockImposed, this, &Folder::slotFilesLockImposed, Qt::UniqueConnection); _folderWatcher->init(path()); - _folderWatcher->startNotificatonTest(path() + QLatin1String(".nextcloudsync.log")); + _folderWatcher->startNotificatonTest(path() + QLatin1String(".hidrivenextsync.log")); connect(_engine.data(), &SyncEngine::lockFileDetected, _folderWatcher.data(), &FolderWatcher::slotLockFileDetectedExternally); } diff --git a/src/libsync/logger.cpp b/src/libsync/logger.cpp index 2bfaa8aaf6147..9d168cc150995 100644 --- a/src/libsync/logger.cpp +++ b/src/libsync/logger.cpp @@ -219,7 +219,7 @@ void Logger::setLogFlush(bool flush) void Logger::setLogDebug(bool debug) { - const QSet rules = {debug ? QStringLiteral("nextcloud.*.debug=true") : QString()}; + const QSet rules = {debug ? QStringLiteral("hidrivenext.*.debug=true") : QString()}; if (debug) { addLogRule(rules); } else { @@ -291,12 +291,12 @@ void Logger::enterNextLogFileNoLock() // Tentative new log name, will be adjusted if one like this already exists const auto now = QDateTime::currentDateTime(); const auto cLocale = QLocale::c(); // Some system locales generate strings that are incompatible with filesystem - QString newLogName = cLocale.toString(now, QStringLiteral("yyyyMMdd_HHmm")) + QStringLiteral("_nextcloud.log"); + QString newLogName = cLocale.toString(now, QStringLiteral("yyyyMMdd_HHmm")) + QStringLiteral("hidrivenext.log"); // Expire old log files and deal with conflicts QStringList files = dir.entryList(QStringList("*owncloud.log.*"), QDir::Files, QDir::Name) + - dir.entryList(QStringList("*nextcloud.log.*"), QDir::Files, QDir::Name); - static const QRegularExpression rx(QRegularExpression::anchoredPattern(R"(.*(next|own)cloud\.log\.(\d+).*)")); + dir.entryList(QStringList("*hidrivenext.log.*"), QDir::Files, QDir::Name); + static const QRegularExpression rx(QRegularExpression::anchoredPattern(R"(.*(hidrivenext|owncloud)\.log\.(\d+).*)")); int maxNumber = -1; foreach (const QString &s, files) { if (_logExpire > 0) { From 7f7ceece1463686c9be4ae3b5529faca00da1c5d Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Fri, 13 Dec 2024 16:16:10 +0100 Subject: [PATCH 037/104] SES-212 style buttons in conflict dialog according to Tray Menu Style --- src/gui/ResolveConflictsDialog.qml | 32 ++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/gui/ResolveConflictsDialog.qml b/src/gui/ResolveConflictsDialog.qml index 61d7cb454d6f1..eb674d430cdce 100644 --- a/src/gui/ResolveConflictsDialog.qml +++ b/src/gui/ResolveConflictsDialog.qml @@ -200,15 +200,39 @@ ApplicationWindow { } DialogButtonBox { + id: buttonBox Layout.fillWidth: true - Button { + readonly property int pixelSize: Style.sesFontPixelSize + readonly property int fontWeight: Style.sesFontNormalWeight + + SesCustomButton { + font.pixelSize: pixelSize + font.weight: fontWeight text: qsTr("Resolve conflicts") - DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole + textColor: palette.brightText + + bgColor: Style.sesActionPressed + bgNormalOpacity: 1.0 + bgHoverOpacity: Style.hoverOpacity + + onClicked: buttonBox.onRejected() } - Button { + + SesCustomButton { + font.pixelSize: pixelSize + font.weight: fontWeight text: qsTr("Cancel") - DialogButtonBox.buttonRole: DialogButtonBox.RejectRole + textColor: Style.sesActionPressed + + bgColor: palette.highlight + bgNormalOpacity: 1.0 + + bgBorderWidth: 2 + bgBorderColor: Style.sesActionPressed + bgHoverOpacity: Style.hoverOpacity + + onClicked: buttonBox.onRejected() } onAccepted: function() { From c644b4143ad6118b7723cd06258817240444d798 Mon Sep 17 00:00:00 2001 From: Boris Baltes Date: Mon, 16 Dec 2024 14:23:54 +0100 Subject: [PATCH 038/104] SES-226 adjusted key and translation --- src/gui/folderstatusdelegate.cpp | 2 +- translations/client_de.ts | 2 +- translations/client_en.ts | 2 +- translations/client_es.ts | 2 +- translations/client_fr.ts | 4 ++-- translations/client_nl.ts | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gui/folderstatusdelegate.cpp b/src/gui/folderstatusdelegate.cpp index a0f7f79ed023d..fd91d5de54ef2 100644 --- a/src/gui/folderstatusdelegate.cpp +++ b/src/gui/folderstatusdelegate.cpp @@ -57,7 +57,7 @@ FolderStatusDelegate::FolderStatusDelegate() QString FolderStatusDelegate::addFolderText() { - return tr("Add live backup"); + return tr("Add Folder Sync"); } QString FolderStatusDelegate::addInfoText() diff --git a/translations/client_de.ts b/translations/client_de.ts index 8f6aa71efa88d..26e8532302626 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -2559,7 +2559,7 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide - Add live backup + Add Folder Sync diff --git a/translations/client_en.ts b/translations/client_en.ts index c7e1974c49c0b..e274afd3b7e0a 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -2441,7 +2441,7 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::FolderStatusDelegate - Add live backup + Add Folder Sync diff --git a/translations/client_es.ts b/translations/client_es.ts index bcaef8f24c523..292659f08b72c 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -2461,7 +2461,7 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::FolderStatusDelegate - Add live backup + Add Folder Sync diff --git a/translations/client_fr.ts b/translations/client_fr.ts index 009a1d9bfbddf..5a0fa2cf487fe 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -2591,8 +2591,8 @@ S'il s'agissait d'un accident et que vous choisissiez de conserve - Add live backup - Ajouter une sauvegarde en temps réel + Add Folder Sync + Ajouter une synchronisation de dossiers diff --git a/translations/client_nl.ts b/translations/client_nl.ts index 2693e94f5d5ec..8abb06155a555 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -2542,7 +2542,7 @@ Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw ge - Add live backup + Add Folder Sync From f3da3a80c3d5cf880d4b1e0764212d977fffb2b7 Mon Sep 17 00:00:00 2001 From: Boris Baltes Date: Mon, 16 Dec 2024 14:44:47 +0100 Subject: [PATCH 039/104] SES-225 prevent error message if folderpicker was canceled --- src/gui/folderwizard.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/folderwizard.cpp b/src/gui/folderwizard.cpp index 8d2c7142c9b42..ba557bd128b59 100644 --- a/src/gui/folderwizard.cpp +++ b/src/gui/folderwizard.cpp @@ -160,7 +160,7 @@ void FolderWizardLocalPath::slotChooseLocalFolder() sf); SyncDirValidator syncDirValidator(dir); - if (!syncDirValidator.isValidDir()) { + if (!syncDirValidator.isValidDir() && !dir.isEmpty()) { _ui.sesSnackBar->show(); _ui.sesSnackBar->setError(syncDirValidator.message()); return; From 175d5ed55f4536ee7c433418de3d227be3bd1d2f Mon Sep 17 00:00:00 2001 From: Boris Baltes Date: Tue, 17 Dec 2024 09:42:42 +0100 Subject: [PATCH 040/104] SES-227 do not show context menu on text input fields --- src/gui/foldercreationdialog.ui | 3 +++ src/gui/folderwizardsourcepage.ui | 6 +++++- src/gui/folderwizardtargetpage.ui | 3 +++ src/gui/invalidfilenamedialog.ui | 3 +++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/gui/foldercreationdialog.ui b/src/gui/foldercreationdialog.ui index 314ef6cffab97..de849b09215cd 100644 --- a/src/gui/foldercreationdialog.ui +++ b/src/gui/foldercreationdialog.ui @@ -11,6 +11,9 @@ Enter folder name + + Qt::NoContextMenu + diff --git a/src/gui/folderwizardsourcepage.ui b/src/gui/folderwizardsourcepage.ui index 4175c0c13519a..81762d63d6a43 100644 --- a/src/gui/folderwizardsourcepage.ui +++ b/src/gui/folderwizardsourcepage.ui @@ -112,7 +112,11 @@ - + + + Qt::NoContextMenu + + diff --git a/src/gui/folderwizardtargetpage.ui b/src/gui/folderwizardtargetpage.ui index 937956c683747..1d93d3c65d58d 100644 --- a/src/gui/folderwizardtargetpage.ui +++ b/src/gui/folderwizardtargetpage.ui @@ -146,6 +146,9 @@ 0 + + Qt::NoContextMenu + diff --git a/src/gui/invalidfilenamedialog.ui b/src/gui/invalidfilenamedialog.ui index 91ff3f7386bc5..6815f301c9ed8 100644 --- a/src/gui/invalidfilenamedialog.ui +++ b/src/gui/invalidfilenamedialog.ui @@ -70,6 +70,9 @@ New filename + + Qt::NoContextMenu + From 0e8e28f443b153b45be6e6ec94b982ec4bd9b1dc Mon Sep 17 00:00:00 2001 From: Boris Baltes Date: Wed, 18 Dec 2024 08:27:30 +0100 Subject: [PATCH 041/104] SES-223 do not turn path seperator into slashes for communication reason --- src/gui/SesComponents/syncdirvalidation.cpp | 2 +- src/gui/folderwizard.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gui/SesComponents/syncdirvalidation.cpp b/src/gui/SesComponents/syncdirvalidation.cpp index ca95f334d088e..eddb9f3932c8e 100644 --- a/src/gui/SesComponents/syncdirvalidation.cpp +++ b/src/gui/SesComponents/syncdirvalidation.cpp @@ -6,7 +6,7 @@ #ifdef Q_OS_WIN bool SyncDirValidator::isValidDir() { QString appDataPath = SyncDirValidator::appDataPath(); - return !_path.startsWith(appDataPath) && !appDataPath.startsWith(_path); + return !QDir::fromNativeSeparators(_path).startsWith(appDataPath) && !appDataPath.startsWith(QDir::fromNativeSeparators(_path)); } diff --git a/src/gui/folderwizard.cpp b/src/gui/folderwizard.cpp index ba557bd128b59..63412a240707e 100644 --- a/src/gui/folderwizard.cpp +++ b/src/gui/folderwizard.cpp @@ -118,7 +118,8 @@ bool FolderWizardLocalPath::isComplete() const QUrl serverUrl = _account->url(); serverUrl.setUserName(_account->credentials()->user()); - SyncDirValidator syncDirValidator(QDir::fromNativeSeparators(_ui.localFolderLineEdit->text())); + + SyncDirValidator syncDirValidator(_ui.localFolderLineEdit->text()); if (!syncDirValidator.isValidDir()) { _ui.sesSnackBar->show(); _ui.sesSnackBar->setError(syncDirValidator.message()); @@ -159,7 +160,8 @@ void FolderWizardLocalPath::slotChooseLocalFolder() tr("Select the source folder"), sf); - SyncDirValidator syncDirValidator(dir); + SyncDirValidator syncDirValidator(QDir::fromNativeSeparators("\\ //")); + // SyncDirValidator syncDirValidator(QDir::fromNativeSeparators(_ui.localFolderLineEdit->text())); if (!syncDirValidator.isValidDir() && !dir.isEmpty()) { _ui.sesSnackBar->show(); _ui.sesSnackBar->setError(syncDirValidator.message()); From 91bb83db33a674698fb544b3f774a54a9846c3f6 Mon Sep 17 00:00:00 2001 From: Boris Baltes Date: Wed, 18 Dec 2024 09:59:59 +0100 Subject: [PATCH 042/104] SES-223 reworked path validation --- src/gui/SesComponents/syncdirvalidation.cpp | 18 +++++++++++++++--- src/gui/folderwizard.cpp | 3 +-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/gui/SesComponents/syncdirvalidation.cpp b/src/gui/SesComponents/syncdirvalidation.cpp index eddb9f3932c8e..df358e2f54ffe 100644 --- a/src/gui/SesComponents/syncdirvalidation.cpp +++ b/src/gui/SesComponents/syncdirvalidation.cpp @@ -5,13 +5,25 @@ #ifdef Q_OS_WIN bool SyncDirValidator::isValidDir() { - QString appDataPath = SyncDirValidator::appDataPath(); - return !QDir::fromNativeSeparators(_path).startsWith(appDataPath) && !appDataPath.startsWith(QDir::fromNativeSeparators(_path)); + QString appDataPath = SyncDirValidator::appDataPath().replace("/", QDir::separator()); + QStringList pathComponents = _path.replace("/", QDir::separator()).split(QDir::separator(), QString::SkipEmptyParts); + QStringList appDataPathComponents = appDataPath.split(QDir::separator(), QString::SkipEmptyParts); + /* + If path is shorter than appDataPath and one path component is different, then path cannot be a real subset and is sowith valid + If appDataPath is shorter than path, we need to check, if the last appDataPath component is different from the related path component, then path is valid. + Otherwise path is a subpath from appDataPath and invalid + */ + for(int i = 0; i < qMin(pathComponents.size(), appDataPathComponents.size()); i++) { + if(pathComponents[i] != appDataPathComponents[i]) { + return true; + } + } + return false; } QString SyncDirValidator::message() { - return QObject::tr("The directory %1 cannot be part of your sync directory. Please choose another folder.").arg(_path); + return QObject::tr("The directory %1 cannot be part of your sync directory. Please choose another folder.").arg(_path.replace("/", QDir::separator())); } QString SyncDirValidator::appDataPath() { diff --git a/src/gui/folderwizard.cpp b/src/gui/folderwizard.cpp index 63412a240707e..bef8377342108 100644 --- a/src/gui/folderwizard.cpp +++ b/src/gui/folderwizard.cpp @@ -160,8 +160,7 @@ void FolderWizardLocalPath::slotChooseLocalFolder() tr("Select the source folder"), sf); - SyncDirValidator syncDirValidator(QDir::fromNativeSeparators("\\ //")); - // SyncDirValidator syncDirValidator(QDir::fromNativeSeparators(_ui.localFolderLineEdit->text())); + SyncDirValidator syncDirValidator(_ui.localFolderLineEdit->text()); if (!syncDirValidator.isValidDir() && !dir.isEmpty()) { _ui.sesSnackBar->show(); _ui.sesSnackBar->setError(syncDirValidator.message()); From 266f268d736f333be40e5f08c8fccfd1ab895a54 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Wed, 18 Dec 2024 14:41:13 +0100 Subject: [PATCH 043/104] SES-218 style toolbar overflow menu --- src/gui/settingsdialog.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index 1f48dc2172f74..058f3634e8b2f 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -52,6 +52,10 @@ const QString TOOLBAR_CSS() "QToolBar QToolButton:pressed { background: %6; color: %4; }" "QToolBar::separator { height: 100%; width: 1px; background: %2; margin-left: 12px; } " // Style for the separator "QToolBarExtension#qt_toolbar_ext_button {margin: 0 0 7px 0; padding: 0;}" // Style overflow button + "QMenu { background: %1; color: %4; }" // Style overflow menu + "QMenu::item::checked { background: %7; color: %4; }" + "QMenu::item::selected { background: %3; color: %4; }" + "QMenu::item::pressed { background: %6; color: %4; }" ); } From d6f9fb5186445c77fb2c854474ad7e10ded44fc2 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Wed, 18 Dec 2024 14:42:42 +0100 Subject: [PATCH 044/104] SES-218 set font color for checkbox labels to black --- src/gui/conflictdialog.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/gui/conflictdialog.cpp b/src/gui/conflictdialog.cpp index 75c8c7d2304b3..58170cf8b84f9 100644 --- a/src/gui/conflictdialog.cpp +++ b/src/gui/conflictdialog.cpp @@ -205,6 +205,14 @@ void ConflictDialog::customizeStyle() #ifdef Q_OS_MAC _ui->buttonBox->layout()->setSpacing(24); _ui->buttonBox->setLayoutDirection(Qt::LeftToRight); + + _ui->localVersionRadio->setStyleSheet( + QStringLiteral("QCheckBox {color: %1;}").arg(IonosTheme::black()) + ); + + _ui->remoteVersionRadio->setStyleSheet( + QStringLiteral("QCheckBox {color: %1;}").arg(IonosTheme::black()) + ); #endif } From a86a69b2f013dfdb5309c189f772004d7c811487 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Wed, 18 Dec 2024 14:43:47 +0100 Subject: [PATCH 045/104] SES-218 prevent highlighting of ExpandMemoryButton --- src/gui/accountsettings.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index f4b21bea17b24..b3cf5846a7181 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -229,6 +229,7 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent) #ifdef Q_OS_MAC _ui->expandMemoryButton->setAutoDefault(false); + _ui->expandMemoryButton->setFocusPolicy(Qt::NoFocus); #endif connect(this, &AccountSettings::removeAccountFolders, AccountManager::instance(), &AccountManager::removeAccountFolders); From 404e1ab031621e469b47a650e35c90642a0b9721 Mon Sep 17 00:00:00 2001 From: Boris Baltes Date: Thu, 19 Dec 2024 08:13:57 +0100 Subject: [PATCH 046/104] SES-214 made help link target ionos with respect to redirect params --- src/libsync/theme.cpp | 2 +- translations/client_de.ts | 6 ++++++ translations/client_en.ts | 6 ++++++ translations/client_es.ts | 6 ++++++ translations/client_fr.ts | 6 ++++++ 5 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 75b88f2d3068f..2e416c2e81d92 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -428,7 +428,7 @@ QString Theme::helpUrl() const #ifdef APPLICATION_HELP_URL return QString::fromLatin1(APPLICATION_HELP_URL); #else - return QString::fromLatin1("https://docs.nextcloud.com/desktop/%1.%2/").arg(MIRALL_VERSION_MAJOR).arg(MIRALL_VERSION_MINOR); + return QString::fromLatin1("https://www.ionos.fr/assistance/hidrive-next/%1").arg(tr("easy/0118", "Redirect URL Parameter")); #endif } diff --git a/translations/client_de.ts b/translations/client_de.ts index 26e8532302626..10c2b9cbd96e1 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -5637,6 +5637,12 @@ Server antwortete mit Fehler: %2 Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 Desktop-Client</p> + + + easy/0118 + Redirect URL Parameter + easy/0108 + <p><small>Using virtual files plugin: %1</small></p> diff --git a/translations/client_en.ts b/translations/client_en.ts index e274afd3b7e0a..9a09fcb1791c3 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -5305,6 +5305,12 @@ Server replied with error: %2 OCC::Theme + + + easy/0118 + Redirect URL Parameter + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> diff --git a/translations/client_es.ts b/translations/client_es.ts index 292659f08b72c..1719fcbe30b6a 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -5342,6 +5342,12 @@ El servidor respondió con el error: %2 OCC::Theme + + + easy/0118 + Redirect URL Parameter + easy/0138 + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> diff --git a/translations/client_fr.ts b/translations/client_fr.ts index 5a0fa2cf487fe..ed080a8e478eb 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -5684,6 +5684,12 @@ Le serveur a répondu avec l'erreur : %2 Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>Client de bureau %1</p> + + + easy/0118 + Redirect URL Parameter + easy/0128 + <p><small>Using virtual files plugin: %1</small></p> From bd62fa9a0cdd862962ceb97a43d3079874e2dad8 Mon Sep 17 00:00:00 2001 From: Boris Baltes Date: Thu, 19 Dec 2024 08:15:48 +0100 Subject: [PATCH 047/104] SES-214 updated .ts files --- translations/client_de.ts | 84 +++++++++++++++++++-------------------- translations/client_en.ts | 78 ++++++++++++++++++------------------ translations/client_es.ts | 82 +++++++++++++++++++------------------- translations/client_fr.ts | 80 ++++++++++++++++++------------------- 4 files changed, 162 insertions(+), 162 deletions(-) diff --git a/translations/client_de.ts b/translations/client_de.ts index 10c2b9cbd96e1..eee9d0bfa2f6b 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -498,7 +498,7 @@ - + &Choose @@ -510,12 +510,12 @@ Einen entfernten Zielordner auswählen - + Create folder Ordner erstellen - + Refresh Aktualisieren @@ -540,7 +540,7 @@ - + Folders Ordner @@ -742,7 +742,7 @@ Soll das Konto importiert werden? - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> Dadurch werden Ihr Ordner und alle darin enthaltenen Dateien verschlüsselt. Auf diese Dateien kann ohne Ihren mnemonischen Verschlüsselungsschlüssel nicht mehr zugegriffen werden. <b>Dies kann nicht rückgängig gemacht werden. Sind Sie sicher, dass Sie fortfahren möchten?</b> @@ -2380,11 +2380,11 @@ Alternatively, you can restore all deleted files by downloading them from the se All files in the sync folder "%1" folder were deleted on the server. -These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. Alle Dateien im Sync-Ordner "%1" wurden auf dem Server gelöscht. -Diese Löschungen werden mit Ihrem lokalen Sync-Ordner synchronisiert, wodurch diese Dateien nicht verfügbar sind, es sei denn, Sie haben das Recht, sie wiederherzustellen. +Diese Löschungen werden mit Ihrem lokalen Sync-Ordner synchronisiert, wodurch diese Dateien nicht verfügbar sind, es sei denn, Sie haben das Recht, sie wiederherzustellen. Wenn Sie sich entscheiden, die Dateien wiederherzustellen, werden sie erneut mit dem Server synchronisiert, wenn Sie das Recht dazu haben. Wenn Sie sich entscheiden, die Dateien zu löschen, sind sie für Sie nicht mehr verfügbar, es sei denn, Sie sind der Eigentümer. @@ -2422,7 +2422,7 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide Ordnernamen eingeben - + Folder already exists Ordner existiert bereits @@ -2752,12 +2752,12 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide OCC::FolderWizard - + Add Folder Sync Connection Ordner-Synchronisierung hinzufügen - + Add Sync Connection Synchronisierung hinzufügen @@ -2775,27 +2775,27 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide Pfad zum lokalen Ordner eingeben - + Select the source folder Quellordner auswählen - + Add Folder Sync - + Step 1 of 3: Select local folder - + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - + Choose @@ -2803,82 +2803,82 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide OCC::FolderWizardRemotePath - + Create Remote Folder Entfernten Ordner erstellen - + Enter the name of the new folder to be created below "%1": Geben Sie den Namen des neuen, unter "%1" zu erstellenden Ordners ein: - + Folder was successfully created on %1. Ordner auf %1 erstellt. - + Authentication failed accessing %1 Beim Zugriff auf %1 ist die Authentifizierung fehlgeschlagen - + Failed to create the folder on %1. Please check manually. Die Erstellung des Ordners auf %1 ist fehlgeschlagen. Bitte prüfen Sie dies manuell. - + Failed to list a folder. Error: %1 Konnte Ordner nicht listen. Fehler: %1 - + Choose this to sync the entire account Wählen Sie dies, um das gesamte Konto zu synchronisieren - + This folder is already being synced. Dieser Ordner wird bereits synchronisiert. - + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. Sie synchronisieren bereits <i>%1</i>, der ein übergeordneter Ordner von <i>%2</i> ist. - + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. Sie synchronisieren bereits <i>%1</i>, der ein Unterordner von <i>%2</i> ist. - + Add Folder Sync - + Step 2 of 3: Directory in your %1 - + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - + Both folders are permanently linked and the respective contents are automatically synchronized and updated. - + Refresh Aktualisieren - + Create folder Ordner erstellen @@ -2886,34 +2886,34 @@ Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheide OCC::FolderWizardSelectiveSync - - + + Use virtual files instead of downloading content immediately %1 Virtuelle Dateien verwenden, anstatt den Inhalt sofort herunterzuladen %1 - - + + (experimental) (experimentell) - + Add Folder Sync - + Step 3 of 3: Selektive Synchronisation - + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. Virtuelle Dateien werden für die Wurzel von Windows-Partitionen als lokaler Ordner nicht unterstützt. Bitte wählen Sie einen gültigen Unterordner unter dem Laufwerksbuchstaben. - + Virtual files are not available for the selected folder Virtuelle Dateien sind für den ausgewählten Ordner nicht verfügbar @@ -6424,7 +6424,7 @@ Server antwortete mit Fehler: %2 - + The directory %1 cannot be part of your sync directory. Please choose another folder. @@ -6466,12 +6466,12 @@ Server antwortete mit Fehler: %2 Alle Serverversionen - + Resolve conflicts Konflikte lösen - + Cancel Abbrechen diff --git a/translations/client_en.ts b/translations/client_en.ts index 9a09fcb1791c3..53ac724f2c5af 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -470,7 +470,7 @@ - + &Choose @@ -498,17 +498,17 @@ - + Refresh - + Create folder - + Folders @@ -2308,7 +2308,7 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Folder already exists @@ -2634,12 +2634,12 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::FolderWizard - + Add Folder Sync Connection - + Add Sync Connection @@ -2657,27 +2657,27 @@ Alternatively, you can restore all deleted files by downloading them from the se - + Select the source folder - + Add Folder Sync - + Step 1 of 3: Select local folder - + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - + Choose @@ -2685,82 +2685,82 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::FolderWizardRemotePath - + Create Remote Folder - + Enter the name of the new folder to be created below "%1": - + Folder was successfully created on %1. - + Authentication failed accessing %1 - + Failed to create the folder on %1. Please check manually. - + Failed to list a folder. Error: %1 - + Choose this to sync the entire account - + This folder is already being synced. - + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - + Add Folder Sync - + Step 2 of 3: Directory in your %1 - + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - + Both folders are permanently linked and the respective contents are automatically synchronized and updated. - + Refresh - + Create folder @@ -2768,34 +2768,34 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::FolderWizardSelectiveSync - - + + Use virtual files instead of downloading content immediately %1 - - + + (experimental) - + Add Folder Sync - + Step 3 of 3: Selektive Synchronisation - + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - + Virtual files are not available for the selected folder @@ -6012,7 +6012,7 @@ Server replied with error: %2 - + The directory %1 cannot be part of your sync directory. Please choose another folder. @@ -6084,12 +6084,12 @@ Server replied with error: %2 - + Resolve conflicts - + Cancel diff --git a/translations/client_es.ts b/translations/client_es.ts index 1719fcbe30b6a..377633b440e1c 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -470,7 +470,7 @@ - + &Choose @@ -478,12 +478,12 @@ FolderWizardTargetPage - + Create folder Crear carpeta - + Refresh Actualizar @@ -508,7 +508,7 @@ - + Folders Carpetas @@ -689,9 +689,9 @@ Should the account be imported? - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - Esto cifrará su carpeta y todos los archivos contenidos en ella. Ya no se podrá acceder a estos archivos sin su clave de cifrado. + Esto cifrará su carpeta y todos los archivos contenidos en ella. Ya no se podrá acceder a estos archivos sin su clave de cifrado. <b>Este proceso no es reversible. ¿Seguro que quiere continuar?</b> @@ -2328,7 +2328,7 @@ Alternatively, you can restore all deleted files by downloading them from the se Escriba el nombre de la carpeta - + Folder already exists Ya existe la carpeta @@ -2654,12 +2654,12 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::FolderWizard - + Add Folder Sync Connection Añadir conexión para el directorio de sincronización - + Add Sync Connection Añadir conexión de sincronización @@ -2677,27 +2677,27 @@ Alternatively, you can restore all deleted files by downloading them from the se Introduzca la ubicación de la carpeta local. - + Select the source folder Seleccione la carpeta de origen - + Add Folder Sync - + Step 1 of 3: Select local folder - + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - + Choose @@ -2705,82 +2705,82 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::FolderWizardRemotePath - + Create Remote Folder Crear carpeta remota - + Enter the name of the new folder to be created below "%1": Introduce el nombre de la nueva carpeta que se creará debajo de "%1": - + Folder was successfully created on %1. La carpeta ha sido creada con éxito en %1. - + Authentication failed accessing %1 Fallo de autenticación al acceder a %1 - + Failed to create the folder on %1. Please check manually. Fallo al crear la carpeta %1. Por favor, revíselo manualmente. - + Failed to list a folder. Error: %1 Fallo al listar una carpeta. Error: %1 - + Choose this to sync the entire account Elija esto para sincronizar la cuenta entera - + This folder is already being synced. Esta carpeta ya se ha sincronizado. - + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. Ya ha sincronizado <i>%1</i>, el cual es la carpeta de <i>%2</i>. - + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. Ya estás sincronizando <i>%1</i>, que es una subcarpeta de <i>%2</i>. - + Add Folder Sync - + Step 2 of 3: Directory in your %1 - + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - + Both folders are permanently linked and the respective contents are automatically synchronized and updated. - + Refresh Actualizar - + Create folder Crear carpeta @@ -2788,34 +2788,34 @@ Alternatively, you can restore all deleted files by downloading them from the se OCC::FolderWizardSelectiveSync - - + + Use virtual files instead of downloading content immediately %1 Usa archivos virtuales en vez de descargar el contenido inmediatamente %1 - - + + (experimental) (experimental) - + Add Folder Sync - + Step 3 of 3: Selektive Synchronisation - + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. Los archivos virtuales no son compatibles con la carpeta raíz de la partición de Windows como carpeta local. Por favor, elija una subcarpeta válida bajo la letra de la unidad. - + Virtual files are not available for the selected folder Los archivos virtuales no están disponibles para la carpeta seleccionada @@ -6079,7 +6079,7 @@ El servidor respondió con el error: %2 - + The directory %1 cannot be part of your sync directory. Please choose another folder. @@ -6121,12 +6121,12 @@ El servidor respondió con el error: %2 Todas las versiones del servidor - + Resolve conflicts Resolver conflictos - + Cancel Cancelar diff --git a/translations/client_fr.ts b/translations/client_fr.ts index ed080a8e478eb..daf15eeb4ce76 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -498,7 +498,7 @@ Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés - + &Choose &Choisir @@ -510,12 +510,12 @@ Veuillez sélectionner un dossier distant - + Create folder Créer un dossier - + Refresh Rafraîchir @@ -540,7 +540,7 @@ Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. - + Folders Dossiers @@ -748,7 +748,7 @@ Le compte doit-il être importé ? - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> @@ -2454,7 +2454,7 @@ S'il s'agissait d'un accident et que vous choisissiez de conserve Saisissez le nom du dossier - + Folder already exists Le dossier existe déjà @@ -2784,12 +2784,12 @@ S'il s'agissait d'un accident et que vous choisissiez de conserve OCC::FolderWizard - + Add Folder Sync Connection Ajouter une synchronisation de dossier - + Add Sync Connection Ajouter la synchronisation @@ -2807,27 +2807,27 @@ S'il s'agissait d'un accident et que vous choisissiez de conserve Entrez le chemin du dossier local. - + Select the source folder Sélectionnez le dossier source - + Add Folder Sync Ajouter une synchronisation de dossiers - + Step 1 of 3: Select local folder Étape 1 sur 3 : sélectionner un dossier local - + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés - + Choose Choisir @@ -2835,82 +2835,82 @@ S'il s'agissait d'un accident et que vous choisissiez de conserve OCC::FolderWizardRemotePath - + Create Remote Folder Créer un dossier distant - + Enter the name of the new folder to be created below "%1": Entrez le nom du nouveau dossier à créer dans "%1" : - + Folder was successfully created on %1. Le dossier a été créé sur %1 - + Authentication failed accessing %1 Erreur d'authentification lors de l'accès à %1 - + Failed to create the folder on %1. Please check manually. Échec à la création du dossier sur %1. Veuillez vérifier manuellement. - + Failed to list a folder. Error: %1 Impossible de lister un dossier. Erreur : %1 - + Choose this to sync the entire account Sélectionnez ceci pour synchroniser l'ensemble du compte - + This folder is already being synced. Ce dossier est déjà en cours de synchronisation. - + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. Vous synchronisez déjà <i>%1</i> qui est un dossier parent de <i>%2</i>. - + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. Vous synchronisez déjà <i>%1</i> qui est un sous-dossier de <i>%2</i>. - + Add Folder Sync Ajouter une synchronisation de dossiers - + Step 2 of 3: Directory in your %1 Étape 2 sur 3 : répertoire dans votre %1 - + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. À présent, sélectionnez ou créez dans votre %1 un dossier cible dans lequel le contenu doit être importé et synchronisé. - + Both folders are permanently linked and the respective contents are automatically synchronized and updated. Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. - + Refresh Rafraîchir - + Create folder Créer un dossier @@ -2918,34 +2918,34 @@ S'il s'agissait d'un accident et que vous choisissiez de conserve OCC::FolderWizardSelectiveSync - - + + Use virtual files instead of downloading content immediately %1 Utiliser les fichiers virtuels - - + + (experimental) (expérimental) - + Add Folder Sync Ajouter une synchronisation de dossiers - + Step 3 of 3: Selektive Synchronisation Étape 3 sur 3 : synchronisation sélective - + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. Vous ne pouvez pas définir la racine d'une partition Windows pour votre dossier local. Veuillez choisir un (sous)dossier de la partition. - + Virtual files are not available for the selected folder Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné @@ -6479,7 +6479,7 @@ Le serveur a répondu avec l'erreur : %2 Répondre - + The directory %1 cannot be part of your sync directory. Please choose another folder. La répertoire %1 ne peut pas faire partie de votre répertoire de synchronisation. Veuillez choisir un autre dossier. @@ -6516,12 +6516,12 @@ Le serveur a répondu avec l'erreur : %2 Toutes les versions serveur - + Resolve conflicts Résoudre les conflits - + Cancel Annuler From ec6af654517117545313cce1e2219748e08be920 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Thu, 19 Dec 2024 09:43:20 +0100 Subject: [PATCH 048/104] SES-211 import translations --- translations/client_de.ts | 9008 ++++++++++++++++-------------------- translations/client_en.ts | 8581 ++++++++++++++++------------------- translations/client_es.ts | 8581 ++++++++++++++++------------------- translations/client_fr.ts | 9024 ++++++++++++++++--------------------- translations/client_nl.ts | 8881 ++++++++++++++++-------------------- 5 files changed, 19457 insertions(+), 24618 deletions(-) diff --git a/translations/client_de.ts b/translations/client_de.ts index eee9d0bfa2f6b..251e6fb6041af 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -1,7514 +1,6276 @@ - - - - - ActivityItem - - - Open %1 locally - %1 lokal öffnen - - - - In %1 - In %1 - - - - ActivityItemContent - - - Open file details - Dateidetails öffnen - + + + - - Dismiss - Ablehnen + &Automatically check for Updates + &Automatisch auf Aktualisierungen prüfen - - - ActivityList - - Activity list - Aktivitätenliste + &Launch on System Startup + Beim &Systemstart starten - - No activities yet - Noch keine Aktivitäten vorhanden + Copy link + Link kopieren - - - BasicComboBox - - Clear status message menu - Statusmeldungs-Menü löschen + No Proxy + Kein Proxy - - - CallNotificationDialog - - Talk notification caller avatar - Avatar zu Benachrichtigung über Talk-Anrufer + Remove All Files? + Alle Dateien löschen? - - Answer Talk call notification - Benachrichtigung zu Talk-Anruf beantworten + Show Call Notifications + Anrufbenachrichtigungen anzeigen - - Decline - Ablehnen + Show Server &Notifications + Server-&Benachrichtigungen anzeigen - - Decline Talk call notification - Benachrichtigung zu Talk-Anruf ablehnen + Show sync folders in &Explorer's navigation pane + Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen - - - CloudProviderWrapper - - %1 (%2, %3) - %1 (%2, %3) + Use &Monochrome Icons + &Monochrome Symbole verwenden + + + ActivityItem - - Checking for changes in "%1" - Nach Änderungen suchen in "%1" + + In %1 + In %1 - - Syncing %1 of %2 (%3 left) - Synchronisiere %1 von %2 (%3 übrig) + + Open %1 locally + %1 lokal öffnen + + + ActivityItemContent - - Syncing %1 of %2 - Synchronisiere %1 von %2 + + Dismiss + Ablehnen - - Syncing %1 (%2 left) - Synchronisiere %1 (%2 übrig) + + Open file details + Dateidetails öffnen + + + ActivityList - - Syncing %1 - Synchronisiere %1 + + Activity list + Aktivitätenliste - - - No recently changed files - Keine kürzlich geänderte Dateien + + No activities yet + Noch keine Aktivitäten vorhanden + + + BasicComboBox - - Sync paused - Synchronisierung pausiert + + Clear status message menu + Statusmeldungs-Menü löschen + + + CallNotificationDialog - - Syncing - Synchronisiere + + Answer Talk call notification + Benachrichtigung zu Talk-Anruf beantworten - - Open website - Webseite öffnen + + Decline + Ablehnen - - Recently changed - Zuletzt geändert + + Decline Talk call notification + Benachrichtigung zu Talk-Anruf ablehnen - - Pause synchronization - Synchronisierung pausieren + + Talk notification caller avatar + Avatar zu Benachrichtigung über Talk-Anrufer + + + CloudProviderWrapper - - Help - Hilfe + + %1 (%2, %3) + %1 (%2, %3) - - Settings - Einstellungen + + Checking for changes in "%1" + Nach Änderungen suchen in "%1" - - Log out - Abmelden + + Help + Hilfe - - Quit sync client - Sync-Client beenden + + Log out + Abmelden - - - ConflictDelegate - - Local version - Lokale Version + + No recently changed files + Keine kürzlich geänderte Dateien - - Server version - Serverversion + + Open website + Webseite öffnen - - - CrashReporter - - Tomahawk Crash Reporter - + + Pause synchronization + Synchronisierung pausieren - - <html><head/><body><p><br/></p></body></html> - + + Quit sync client + Sync-Client beenden - - Abort - + + Recently changed + Zuletzt geändert - - Send this report - + + Settings + Einstellungen - - Don't send - + + Sync paused + Synchronisierung pausiert - - You can disable sending crash reports in the configuration dialog. - + + Syncing + Synchronisiere - - - - We cannot gather useful debug information on your system. - + + Syncing %1 + Synchronisiere %1 - - - - - - Close - Schliessen + + Syncing %1 (%2 left) + Synchronisiere %1 (%2 übrig) - - Ready to send debug information (<a href="%1">view backtrace</a>). - + + Syncing %1 of %2 + Synchronisiere %1 von %2 - - Gathering debug information... - + + Syncing %1 of %2 (%3 left) + Synchronisiere %1 von %2 (%3 übrig) + + + ConflictDelegate - - Uploaded %L1 of %L2 KB. - + + Local version + Lokale Version - - Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. - + + Server version + Serverversion + + + CrashReporter - - Failed to send crash info. - + + Close + Schliessen - - + + EditFileLocallyLoadingDialog - - Opening file for local editing - Datei wird für die lokale Bearbeitung geöffnet + + Opening file for local editing + Datei wird für die lokale Bearbeitung geöffnet - - + + EmojiPicker - - No recent emojis - Keine aktuellen Emojis + + No recent emojis + Keine aktuellen Emojis - - + + ErrorBox - - Error - Fehler + + Error + Fehler - - + + FakeHangingReply - - Operation canceled - + + Operation canceled + Vorgang abgebrochen - - + + FileDetailsPage - - Dismiss - Ablehnen - - - Activity - Aktivität + Sharing + Teilen - - Sharing - Teilen - - - + + FileDetailsWindow - - File details of %1 · %2 - Dateidetails von %1 · %2 + + File details of %1 · %2 + Dateidetails von %1 · %2 - - + + FileProviderEvictionDialog - - Evict materialised files - Materialisierte Dateien löschen + + Evict materialised files + Materialisierte Dateien löschen - - Materialised items - Materialisierte Elemente + + Materialised items + Materialisierte Elemente - - Reload - Neu laden + + Reload + Neu laden - - + + FileProviderFastEnumerationSettings - - Enable fast sync - Schnelle Synchronisierung altivieren + + Enable fast sync + Schnelle Synchronisierung altivieren - - Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - Bei der schnellen Synchronisierung werden nur Änderungen an Dateien und Ordnern innerhalb der Ordner synchronisiert, die bereits untersucht wurden. Dies kann die Reaktionsfähigkeit bei der Ersteinrichtung virtueller Dateien erheblich erhöhen. Allerdings führt dies zu redundanten Downloads von Dateien, die in einen noch nicht erfassten Ordner verschoben wurden. + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + Bei der schnellen Synchronisierung werden nur Änderungen an Dateien und Ordnern innerhalb der Ordner synchronisiert, die bereits untersucht wurden. Dies kann die Reaktionsfähigkeit bei der Ersteinrichtung virtueller Dateien erheblich erhöhen. Allerdings führt dies zu redundanten Downloads von Dateien, die in einen noch nicht erfassten Ordner verschoben wurden. - - + + FileProviderFileDelegate - - Delete - Löschen + + Delete + Löschen - - + + FileProviderSettings - - Virtual files settings - Einstellungen für virtuelle Dateien + + Advanced + Erweitert - - General settings - Allgemeine Einstellungen + + Create debug archive + Debug-Archiv erstellen - - Enable virtual files - Virtuelle Dateien aktivieren + + Enable virtual files + Virtuelle Dateien aktivieren - - Advanced - Erweitert + + General settings + Allgemeine Einstellungen - - Signal file provider domain - Domain des Signaldateianbieters + + Signal file provider domain + Domain des Signaldateianbieters - - Create debug archive - Debug-Archiv erstellen + + Virtual files settings + Einstellungen für virtuelle Dateien - - + + FileProviderStorageInfo - - Local storage use - Lokaler Speicher verwenden + + %1 GB of %2 GB remote files synced + %1 GB von %2 GB der entfernten Dateien synchronisiert - - %1 GB of %2 GB remote files synced - %1 GB von %2 GB der entfernten Dateien synchronisiert + + Evict local copies... + Lokale Kopien entfernen... - - Evict local copies... - Lokale Kopien entfernen... + + Local storage use + Lokaler Speicher verwenden - - + + FileProviderSyncStatus - - Syncing - Synchronisiere - - - - All synced! - Alles synchronisiert! + + All synced! + Alles synchronisiert! - - + + FileSystem - - Error removing "%1": %2 - Fehler beim Entfernen "%1": %2 + Could not make directories in trash + Verzeichnisse konnten im Papierkorb nicht erstellt werden - - Could not remove folder "%1" - Der Ordner "%1" konnte nicht gelöscht werden + Could not move "%1" to "%2" + Konnte "%1" nicht nach "%2" verschieben - Could not make directories in trash - Verzeichnisse konnten im Papierkorb nicht erstellt werden + + Could not remove folder "%1" + Der Ordner "%1" konnte nicht gelöscht werden - Could not move "%1" to "%2" - Konnte "%1" nicht nach "%2" verschieben + + Error removing "%1": %2 + Fehler beim Entfernen "%1": %2 - Moving to the trash is not implemented on this platform - Verschieben in den Papierkorb ist auf dieser Plattform nicht möglich + Moving to the trash is not implemented on this platform + Verschieben in den Papierkorb ist auf dieser Plattform nicht möglich - - + + Flow2AuthWidget - - Browser Authentication - Browser-Authentifizierung + + An error occurred while connecting. Please try again. + Es ist ein Fehler beim Herstellen der Verbindung aufgetreten. Bitte erneut versuchen. - - Logo - Logo + + Browser Authentication + Browser-Authentifizierung - - Switch to your browser to connect your account - Wechseln Sie zu Ihrem Browser um Ihr Konto zu verbinden + + Copy Link + Link kopieren - - An error occurred while connecting. Please try again. - Es ist ein Fehler beim Herstellen der Verbindung aufgetreten. Bitte erneut versuchen. + + Logo + Logo - - Copy Link - Link kopieren + + Reopen Browser + Browser erneut öffnen - - Reopen Browser - Browser erneut öffnen + + Switch to your browser to connect your account + Wechseln Sie zu Ihrem Browser um Ihr Konto zu verbinden - - + + FolderWizardSelectiveSync - - Add Folder Sync - + + Add Folder Sync + Ordner Sync hinzufügen - - Step 3 of 3: Selektive Synchronisation - + + Step 3 of 3: Selektive Synchronisation + Schritt 3 von 3: Selektive Synchronisierung - - + + FolderWizardSourcePage - Pick a local folder on your computer to sync - Wählen Sie einen lokalen Ordner zum Synchronisieren aus + + &Choose + &Wählen - &Choose … - &Wählen … + &Choose … + &Wählen … - - Add Folder Sync - + Pick a local folder on your computer to sync + Wählen Sie einen lokalen Ordner zum Synchronisieren aus - - Step 1 of 3: Select local folder - + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Wählen Sie einen Ordner auf Ihrer Festplatte, der dauerhaft mit Ihrem %1 verbunden sein soll. Alle Dateien und Unterordner werden automatisch hochgeladen und synchronisiert. - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - + + Step 1 of 3: Select local folder + Schritt 1 von 3: Lokalen Ordner auswählen - - - &Choose - - - - + + FolderWizardTargetPage - Select a remote destination folder - Einen entfernten Zielordner auswählen - - - - Create folder - Ordner erstellen + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Beide Ordner sind dauerhaft miteinander verknüpft und die jeweiligen Inhalte werden automatisch synchronisiert und aktualisiert. - - Refresh - Aktualisieren + + Create folder + Ordner erstellen - - Add Folder Sync - + + Folders + Ordner - - Step 2 of 3: Directory in your %1 - + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + Bitte wählen oder erstellen Sie nun einen Zielordner in Ihrem %1, in den der Inhalt hochgeladen und synchronisiert werden soll. - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - + + Refresh + Aktualisieren - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - + Select a remote destination folder + Einen entfernten Zielordner auswählen - - Folders - Ordner + + Step 2 of 3: Directory in your %1 + Schritt 2 von 3: Verzeichnis in Ihrem %1 - - - KMessageWidget - - - &Close - - - - - Close message - - - - + + OCC::AbstractNetworkJob - - Connection timed out - Zeitüberschreitung bei der Verbindung - - - - Unknown error: network reply was deleted - Unbekannter Fehler: Netzwerk-Antwort wurde gelöscht - - - - Server replied "%1 %2" to "%3 %4" - Server hat "%1 %2" auf "%3 %4" geantwortet + + Connection timed out + Zeitüberschreitung bei der Verbindung - - - OCC::AbstractPropagateRemoteDeleteEncrypted - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Falscher HTTP-Code vom Server zurückgegeben. 204 erwartet, aber "%1 %2" erhalten. + + Server replied "%1 %2" to "%3 %4" + Server hat "%1 %2" auf "%3 %4" geantwortet - "%1 Failed to unlock encrypted folder %2". - "%1 Der verschlüsselte Ordner %2 konnte nicht entsperrt werden". + + Unknown error: network reply was deleted + Unbekannter Fehler: Netzwerk-Antwort wurde gelöscht - - + + OCC::Account - - File %1 is already locked by %2. - Datei %1 ist bereits von %2 gesperrt. + + File %1 is already locked by %2. + Datei %1 ist bereits von %2 gesperrt. - - Lock operation on %1 failed with error %2 - Das Sperren von %1 ist mit Fehler %2 fehlgeschlagen + + Lock operation on %1 failed with error %2 + Das Sperren von %1 ist mit Fehler %2 fehlgeschlagen - - Unlock operation on %1 failed with error %2 - Das Entsperren von %1 ist mit Fehler %2 fehlgeschlagen + + Unlock operation on %1 failed with error %2 + Das Entsperren von %1 ist mit Fehler %2 fehlgeschlagen - - + + OCC::AccountManager - An existing configuration from a legacy desktop client was detected. -Should an account import be attempted? - Es wurde eine vorhandene Konfiguration eines früheren Desktop-Clients erkannt. -Soll ein Kontoimport versucht werden? - - - - %1 accounts were detected from a legacy desktop client. + + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - %1 Konten wurden von einem älteren Desktop-Client erkannt. + %1 Konten wurden von einem älteren Desktop-Client erkannt. Sollen die Konten importiert werden? - - 1 account was detected from a legacy desktop client. + + 1 account was detected from a legacy desktop client. Should the account be imported? - 1 Konto wurde von einem älteren Desktop-Client erkannt. + 1 Konto wurde von einem älteren Desktop-Client erkannt. Soll das Konto importiert werden? - - - Legacy import - Import früherer Konfiguration + An existing configuration from a legacy desktop client was detected. +Should an account import be attempted? + Es wurde eine vorhandene Konfiguration eines früheren Desktop-Clients erkannt. +Soll ein Kontoimport versucht werden? + + + + Could not import accounts from legacy client configuration. + Konten von älterer Client-Konfiguration konnten nicht importiert werden. - - Import - Importieren + + Import + Importieren - - Skip - Überspringen + + Legacy import + Import früherer Konfiguration - Successfully imported account from legacy client: %1 - Konto von älterem Client importiert: %1 + + Skip + Überspringen - - Could not import accounts from legacy client configuration. - Konten von älterer Client-Konfiguration konnten nicht importiert werden. + Successfully imported account from legacy client: %1 + Konto von älterem Client importiert: %1 - - + + OCC::AccountSettings - - - Storage space: … - Speicherplatz: … + + (experimental) + (experimentell) - - Expand Memory - + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + %1 (%3%) von %2 Serverkapazität verwendet. Einige Ordner, einschließlich über das Netzwerk verbundene oder geteilte Ordner, können unterschiedliche Beschränkungen aufweisen. - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - Nicht markierte Ordner werden von Ihrem lokalen Dateisystem <b>entfernt</b> und werden auch nicht mehr auf diesem Rechner synchronisiert + + %1 as %2 + %1 als %2 - - - - Cancel - Abbrechen + + %1 in use + %1 wird verwendet - - Apply - Anwenden + + %1 of %2 in use + %1 von %2 Serverkapazität verwendet - - Connected with <server> as <user> - Verbunden mit <server> als <user> + + <p>Could not create local folder <i>%1</i>.</p> + <p>Konnte lokalen Ordner <i>%1</i> nicht anle‏gen.‎</p> - - Synchronize all - Alles synchronisieren + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Möchten Sie den Ordner <i>%1</i> nicht mehr synchronisieren?</p><p><b>Anmerkung:</b> Dies wird <b>keine</b> Dateien löschen.</p> - - Synchronize none - Nichts synchronisieren + + Apply + Anwenden - - Apply manual changes - Manuelle Änderungen anwenden + + Apply manual changes + Manuelle Änderungen anwenden - - Standard file sync - Standard Dateisynchronisierung + + Availability + Verfügbarkeit - - Virtual file sync - Virtuelle Dateisynchronisierung + + Cancel + Abbrechen - - End-to-end Encryption with Virtual Files - Ende-zu-Ende-Verschlüsselung mit virtuellen Dateien + + Choose what to sync + Zu synchronisierende Elemente auswählen - - You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - Sie scheinen die Funktion "Virtuelle Dateien" für diesen Ordner aktiviert zu haben. Im Moment ist es nicht möglich, virtuelle Dateien, die Ende-zu-Ende-verschlüsselt sind, implizit herunterzuladen. Um die beste Erfahrung mit virtuellen Dateien und Ende-zu-Ende-Verschlüsselung zu machen, stellen Sie sicher, dass der verschlüsselte Ordner mit "Immer lokal verfügbar machen" markiert ist. + + Confirm Folder Sync Connection Removal + Bestätigen Sie die Löschung der Ordner-Synchronisierung - - - Do not encrypt folder - Ordner nicht verschlüsseln + + Connected to %1. + Verbunden mit %1. - - - Encrypt folder - Ordner verschlüsseln + + Connected with <server> as <user> + Verbunden mit <server> als <user> - - End-to-end Encryption - Ende-zu-Ende-Verschlüsselung + + Connecting to %1 … + Verbinde zu %1 … - - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. -<b>This process is not reversible. Are you sure you want to proceed?</b> - Dadurch werden Ihr Ordner und alle darin enthaltenen Dateien verschlüsselt. Auf diese Dateien kann ohne Ihren mnemonischen Verschlüsselungsschlüssel nicht mehr zugegriffen werden. -<b>Dies kann nicht rückgängig gemacht werden. Sind Sie sicher, dass Sie fortfahren möchten?</b> + + Could not encrypt folder because the folder does not exist anymore + Der Ordner konnte nicht verschlüsselt werden, da er nicht mehr existiert - - No account configured. - Kein Konto konfiguriert. + + Create new folder + Neuen Ordner erstellen - - Disable encryption - Verschlüsselung deaktivieren + + Currently there is no storage usage information available. + Derzeit sind keine Speichernutzungsinformationen verfügbar. - - Display mnemonic - Gedächtnisstütze anzeigen + + Disable encryption + Verschlüsselung deaktivieren - - End-to-end encryption has been enabled for this account - Für dieses Konto wurde die Ende-zu-Ende-Verschlüsselung aktiviert + + Disable end-to-end encryption + Ende-zu-Ende-Verschlüsselung deaktivieren - - Warning - Warnung + + Disable end-to-end encryption for %1? + Ende-zu-Ende-Verschlüsselung für %1 deaktivieren? - - Please wait for the folder to sync before trying to encrypt it. - Bitte warten Sie, bis der Ordner synchronisiert ist, bevor Sie versuchen, ihn zu verschlüsseln. + + Disable support + Unterstützung deaktivieren - - The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - Der Ordner weist ein geringfügiges Synchronisierungsproblem auf. Die Verschlüsselung dieses Ordners ist möglich, sobald er erfolgreich synchronisiert wurde + + Disable virtual file support … + Unterstützung für virtuelle Dateien deaktivieren - - The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - Der Ordner weist einen Synchronisierungsfehler auf. Die Verschlüsselung dieses Ordners ist möglich, sobald er erfolgreich synchronisiert wurde + + Disable virtual file support? + Unterstützung für virtuelle Dateien deaktivieren? - - End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. -Would you like to set up end-to-end encryption? - Auf diesem Gerät ist keine Ende-zu-Ende-Verschlüsselung konfiguriert. Sobald sie konfiguriert ist, kann dieser Ordner verschlüsselt werden. Soll die Ende-zu-Ende-Verschlüsselung eingerichtet werden? + + Display mnemonic + Gedächtnisstütze anzeigen - - You cannot encrypt a folder with contents, please remove the files. -Wait for the new sync, then encrypt it. - Sie können einen Ordner nicht mit Inhalten verschlüsseln, bitte Dateien entfernen. -Warten Sie auf die neue Synchronisierung und verschlüsseln Sie sie dann. + + Do not encrypt folder + Ordner nicht verschlüsseln - - Encryption failed - Verschlüsselung fehlgeschlagen + + Edit Ignored Files + Ignorierte Dateien bearbeiten - - Could not encrypt folder because the folder does not exist anymore - Der Ordner konnte nicht verschlüsselt werden, da er nicht mehr existiert + + Enable virtual file support %1 … + Unterstützung für virtuelle Dateien aktivieren %1 … - - - Open folder - Ordner öffnen + + Encrypt + Verschlüsseln - - Encrypt - Verschlüsseln + + Encrypt folder + Ordner verschlüsseln - - - Edit Ignored Files - Ignorierte Dateien bearbeiten + + Encryption failed + Verschlüsselung fehlgeschlagen - - - Create new folder - Neuen Ordner erstellen + + End-to-end Encryption + Ende-zu-Ende-Verschlüsselung - - - Availability - Verfügbarkeit + + End-to-end encryption has been enabled for this account + Für dieses Konto wurde die Ende-zu-Ende-Verschlüsselung aktiviert - - Choose what to sync - Zu synchronisierende Elemente auswählen + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. + Die Ende-zu-Ende-Verschlüsselung wurde auf diesem Konto mit einem anderen Gerät aktiviert.<br>Sie kann auf diesem Gerät durch Eingabe Ihrer Mnemonik aktiviert werden.<br>Dadurch wird die Synchronisierung vorhandener verschlüsselter Ordner aktiviert. - - Force sync now - Synchronisierung jetzt erzwingen + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. +Would you like to set up end-to-end encryption? + Auf diesem Gerät ist keine Ende-zu-Ende-Verschlüsselung konfiguriert. Sobald sie konfiguriert ist, kann dieser Ordner verschlüsselt werden. Soll die Ende-zu-Ende-Verschlüsselung eingerichtet werden? - - Restart sync - Synchronisierung neustarten + + End-to-end encryption mnemonic + Gedächtnisstütze für Ende-zu-Ende Verschlüsselung - - Resume sync - Synchronisierung fortsetzen + + End-to-end Encryption with Virtual Files + Ende-zu-Ende-Verschlüsselung mit virtuellen Dateien - - Pause sync - Synchronisierung pausieren + + Expand Memory + Speicher erweitern - - Remove folder sync connection - Ordner-Synchronisierung entfernen + + Folder creation failed + Anlegen des Ordners fehlgeschlagen - - Disable virtual file support … - Unterstützung für virtuelle Dateien deaktivieren + + Force sync now + Synchronisierung jetzt erzwingen - - Enable virtual file support %1 … - Unterstützung für virtuelle Dateien aktivieren %1 … + + https://wl.hidrive.com/easy/0057 + https://wl.hidrive.com/easy/0067 - - (experimental) - (experimentell) + + No %1 connection configured. + Keine %1-Verbindung konfiguriert. - - Folder creation failed - Anlegen des Ordners fehlgeschlagen + + No account configured. + Kein Konto konfiguriert. - - <p>Could not create local folder <i>%1</i>.</p> - <p>Konnte lokalen Ordner <i>%1</i> nicht anle‏gen.‎</p> + No connection to %1 at %2. + Keine Verbindung zu %1 auf %2 - - Confirm Folder Sync Connection Removal - Bestätigen Sie die Löschung der Ordner-Synchronisierung + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + Berechtigung vom Browser einholen. <a href='%1'> Klicken Sie hier </a>, um den Browser erneut zu öffnen. - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Möchten Sie den Ordner <i>%1</i> nicht mehr synchronisieren?</p><p><b>Anmerkung:</b> Dies wird <b>keine</b> Dateien löschen.</p> + + Open folder + Ordner öffnen - - Remove Folder Sync Connection - Ordner-Synchronisierung entfernen + + Pause sync + Synchronisierung pausieren - - Disable virtual file support? - Unterstützung für virtuelle Dateien deaktivieren? + + Please wait for the folder to sync before trying to encrypt it. + Bitte warten Sie, bis der Ordner synchronisiert ist, bevor Sie versuchen, ihn zu verschlüsseln. - - This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. - -The only advantage of disabling virtual file support is that the selective sync feature will become available again. - -This action will abort any currently running synchronization. - Durch diese Aktion wird die Unterstützung für virtuelle Dateien deaktiviert. Infolgedessen werden Inhalte von Ordnern, die derzeit als "nur online verfügbar" markiert sind, heruntergeladen. - -Der einzige Vorteil der Deaktivierung der Unterstützung für virtuelle Dateien besteht darin, dass die ausgewählte Synchronisierungsfunktion wieder verfügbar wird. - -Diese Aktion bricht jede derzeit laufende Synchronisierung ab. + + Remove folder sync connection + Ordner-Synchronisierung entfernen + + + + Remove Folder Sync Connection + Ordner-Synchronisierung entfernen - - Disable support - Unterstützung deaktivieren + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. + Durch das Entfernen der Ende-zu-Ende-Verschlüsselung werden lokal synchronisierte Dateien entfernt, die verschlüsselt sind.<br>Verschlüsselte Dateien verbleiben auf dem Server. - - End-to-end encryption mnemonic - Gedächtnisstütze für Ende-zu-Ende Verschlüsselung + + Restart sync + Synchronisierung neustarten - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - Um Ihre kryptografische Identität zu schützen, verschlüsseln wir sie mit einer Gedächtnisstütze von 12 Wörterbuchwörtern. Bitte notieren Sie sich diese und bewahren Sie sie auf. Sie werden benötigt, um Ihrem Konto weitere Geräte hinzuzufügen (z. B. Ihr Mobiltelefon oder Laptop). + + Resume sync + Synchronisierung fortsetzen - - Disable end-to-end encryption - Ende-zu-Ende-Verschlüsselung deaktivieren + + Server %1 is currently being redirected, or your connection is behind a captive portal. + Server %1 wird derzeit umgeleitet oder Ihre Verbindung befindet sich hinter einem Captive-Portal. - - Disable end-to-end encryption for %1? - Ende-zu-Ende-Verschlüsselung für %1 deaktivieren? + + Server %1 is currently in maintenance mode. + Server %1 befindet sich im Wartungsmodus. - - Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - Durch das Entfernen der Ende-zu-Ende-Verschlüsselung werden lokal synchronisierte Dateien entfernt, die verschlüsselt sind.<br>Verschlüsselte Dateien verbleiben auf dem Server. + + Server %1 is temporarily unavailable. + Server %1 ist derzeit nicht verfügbar. - - Sync Running - Synchronisierung läuft + + Server configuration error: %1 at %2. + Konfigurationsfehler des Servers: %1 auf %2. - - The syncing operation is running.<br/>Do you want to terminate it? - Die Synchronisierung läuft gerade.<br/>Wollen Sie diese beenden? + + Set up encryption + Verschlüsselung einrichten - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - %1 (%3%) von %2 Serverkapazität verwendet. Einige Ordner, einschließlich über das Netzwerk verbundene oder geteilte Ordner, können unterschiedliche Beschränkungen aufweisen. + + Signed out from %1. + Abgemeldet von %1. - - %1 of %2 in use - %1 von %2 Serverkapazität verwendet + + Standard file sync + Standard Dateisynchronisierung - - Storage space %1% occupied - + + Storage space %1% occupied + Speicherplatz %1% belegt - - Currently there is no storage usage information available. - Derzeit sind keine Speichernutzungsinformationen verfügbar. + + Storage space: … + Speicherplatz: … - - %1 in use - %1 wird verwendet + + Sync Running + Synchronisierung läuft - - %1 as %2 - %1 als %2 + + Synchronize all + Alles synchronisieren - - The server version %1 is unsupported! Proceed at your own risk. - Die Serverversion %1 wird nicht unterstützt! Fortfahren auf eigenes Risiko. + + Synchronize none + Nichts synchronisieren - - Connected to %1. - Verbunden mit %1. + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully + Der Ordner weist ein geringfügiges Synchronisierungsproblem auf. Die Verschlüsselung dieses Ordners ist möglich, sobald er erfolgreich synchronisiert wurde - - Server %1 is temporarily unavailable. - Server %1 ist derzeit nicht verfügbar. + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully + Der Ordner weist einen Synchronisierungsfehler auf. Die Verschlüsselung dieses Ordners ist möglich, sobald er erfolgreich synchronisiert wurde - - Server %1 is currently in maintenance mode. - Server %1 befindet sich im Wartungsmodus. + + The server version %1 is unsupported! Proceed at your own risk. + Die Serverversion %1 wird nicht unterstützt! Fortfahren auf eigenes Risiko. - - Server %1 is currently being redirected, or your connection is behind a captive portal. - Server %1 wird derzeit umgeleitet oder Ihre Verbindung befindet sich hinter einem Captive-Portal. + + The syncing operation is running.<br/>Do you want to terminate it? + Die Synchronisierung läuft gerade.<br/>Wollen Sie diese beenden? - - Signed out from %1. - Abgemeldet von %1. + + There are folders that have grown in size beyond %1MB: %2 + Es gibt Ordner, deren Größe über %1 MB hinaus gewachsen ist: %2 - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - Berechtigung vom Browser einholen. <a href='%1'> Klicken Sie hier </a>, um den Browser erneut zu öffnen. + + There are folders that were not synchronized because they are external storages: + Es gibt Ordner, die nicht synchronisiert werden konnten, da sie externe Speicher sind: - - Connecting to %1 … - Verbinde zu %1 … + + There are folders that were not synchronized because they are too big or external storages: + Es gibt Ordner, die nicht synchronisiert werden konnten, da sie zu groß oder externe Speicher sind: - No connection to %1 at %2. - Keine Verbindung zu %1 auf %2 + + There are folders that were not synchronized because they are too big: + Einige Ordner konnten nicht synchronisiert werden, da sie zu groß sind: - - Unable to connect to %1. - Verbindung zu %1 kann nicht hergestellt werden. + + This account supports end-to-end encryption + Dieses Konto unterstützt Ende-zu-Ende-Verschlüsselung - - Server configuration error: %1 at %2. - Konfigurationsfehler des Servers: %1 auf %2. + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + +The only advantage of disabling virtual file support is that the selective sync feature will become available again. + +This action will abort any currently running synchronization. + Durch diese Aktion wird die Unterstützung für virtuelle Dateien deaktiviert. Infolgedessen werden Inhalte von Ordnern, die derzeit als "nur online verfügbar" markiert sind, heruntergeladen. + +Der einzige Vorteil der Deaktivierung der Unterstützung für virtuelle Dateien besteht darin, dass die ausgewählte Synchronisierungsfunktion wieder verfügbar wird. + +Diese Aktion bricht jede derzeit laufende Synchronisierung ab. - - No %1 connection configured. - Keine %1-Verbindung konfiguriert. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> + Dadurch werden Ihr Ordner und alle darin enthaltenen Dateien verschlüsselt. Diese Dateien sind ohne Ihren Schlüssel nicht mehr zugänglich. +<b>Dieser Vorgang ist nicht umkehrbar. Sind Sie sicher, dass Sie fortfahren möchten?</b> - - https://wl.hidrive.com/easy/0057 - + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> + Dadurch werden Ihr Ordner und alle darin enthaltenen Dateien verschlüsselt. Auf diese Dateien kann ohne Ihren Verschlüsselungsschlüssel nicht mehr zugegriffen werden. +<b>Dies kann nicht rückgängig gemacht werden. Sind Sie sicher, dass Sie fortfahren möchten?</b> - - There are folders that were not synchronized because they are too big: - Einige Ordner konnten nicht synchronisiert werden, da sie zu groß sind: + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + Um Ihre kryptografische Identität zu schützen, verschlüsseln wir sie mit einer Gedächtnisstütze von 12 Wörterbuchwörtern. Bitte notieren Sie sich diese und bewahren Sie sie auf. Sie werden benötigt, um Ihrem Konto weitere Geräte hinzuzufügen (z. B. Ihr Mobiltelefon oder Laptop). - - There are folders that were not synchronized because they are external storages: - Es gibt Ordner, die nicht synchronisiert werden konnten, da sie externe Speicher sind: + + Unable to connect to %1. + Verbindung zu %1 kann nicht hergestellt werden. - - There are folders that were not synchronized because they are too big or external storages: - Es gibt Ordner, die nicht synchronisiert werden konnten, da sie zu groß oder externe Speicher sind: + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + Nicht markierte Ordner werden von Ihrem lokalen Dateisystem <b>entfernt</b> und werden auch nicht mehr auf diesem Rechner synchronisiert - - There are folders that have grown in size beyond %1MB: %2 - Es gibt Ordner, deren Größe über %1 MB hinaus gewachsen ist: %2 + + Virtual file sync + Virtuelle Dateisynchronisierung - - End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - Die Ende-zu-Ende-Verschlüsselung wurde auf diesem Konto mit einem anderen Gerät aktiviert.<br>Sie kann auf diesem Gerät durch Eingabe Ihrer Mnemonik aktiviert werden.<br>Dadurch wird die Synchronisierung vorhandener verschlüsselter Ordner aktiviert. + + Warning + Warnung - - This account supports end-to-end encryption - Dieses Konto unterstützt Ende-zu-Ende-Verschlüsselung + + You cannot encrypt a folder with contents, please remove the files. +Wait for the new sync, then encrypt it. + Sie können einen Ordner nicht mit Inhalten verschlüsseln, bitte Dateien entfernen. +Warten Sie auf die neue Synchronisierung und verschlüsseln Sie sie dann. - - Set up encryption - Verschlüsselung einrichten + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". + Sie scheinen die Funktion "Virtuelle Dateien" für diesen Ordner aktiviert zu haben. Im Moment ist es nicht möglich, virtuelle Dateien, die Ende-zu-Ende-verschlüsselt sind, implizit herunterzuladen. Um die beste Erfahrung mit virtuellen Dateien und Ende-zu-Ende-Verschlüsselung zu machen, stellen Sie sicher, dass der verschlüsselte Ordner mit "Immer lokal verfügbar machen" markiert ist. - - + + OCC::AccountSetupFromCommandLineJob - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - Die genehmigte Anfrage an den Server wurde an "%1“ umgeleitet. Die URL ist fehlerhaft, der Server ist falsch konfiguriert. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Zugriff durch Server verboten. Um zu überprüfen, ob Sie über den richtigen Zugriff verfügen, <a href="%1">klicken Sie hier</a>, um mit Ihrem Browser auf den Dienst zuzugreifen. - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Zugriff durch Server verboten. Um zu überprüfen, ob Sie über den richtigen Zugriff verfügen, <a href="%1">klicken Sie hier</a>, um mit Ihrem Browser auf den Dienst zuzugreifen. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + Die genehmigte Anfrage an den Server wurde an "%1“ umgeleitet. Die URL ist fehlerhaft, der Server ist falsch konfiguriert. - - There was an invalid response to an authenticated WebDAV request - Es gab eine ungültige Antwort auf eine authentifizierte WebDAV-Anfrage + + There was an invalid response to an authenticated WebDAV request + Es gab eine ungültige Antwort auf eine authentifizierte WebDAV-Anfrage - - + + OCC::AccountState - - Signed out - Abgemeldet + + Asking Credentials + Zugangsdaten werden abgefragt - - Disconnected - Getrennt + + Configuration error + Konfigurationsfehler - - Connected - Verbunden + + Connected + Verbunden - - Service unavailable - Dienst nicht verfügbar + + Disconnected + Getrennt - - Maintenance mode - Wartungsmodus + + Maintenance mode + Wartungsmodus - - Redirect detected - Umleitung erkannt + + Network error + Netzwerkfehler - - Network error - Netzwerkfehler + + Redirect detected + Umleitung erkannt - - Configuration error - Konfigurationsfehler + + Service unavailable + Dienst nicht verfügbar - - Asking Credentials - Zugangsdaten werden abgefragt + + Signed out + Abgemeldet - - Unknown account state - Unbekannter Konto-Zustand + + Unknown account state + Unbekannter Konto-Zustand - - + + OCC::ActivityListModel - - For more activities please open the Activity app. - Um weitere Aktivitäten anzusehen bitte die Activity-App öffnen. + + Fetching activities … + Aktivitäten abrufen… - - Fetching activities … - Aktivitäten abrufen… + + Files from the ignore list as well as symbolic links are not synced. + Dateien aus der Ignorierliste sowie symbolische Links werden nicht synchronisiert. - - Network error occurred: client will retry syncing. - Netzwerkfehler aufgetreten: Client startet die Synchronisation neu + + For more activities please open the Activity app. + Um weitere Aktivitäten anzusehen bitte die Activity-App öffnen. - - Files from the ignore list as well as symbolic links are not synced. - Dateien aus der Ignorierliste sowie symbolische Links werden nicht synchronisiert. + + Network error occurred: client will retry syncing. + Netzwerkfehler aufgetreten: Client startet die Synchronisation neu - - + + OCC::AddCertificateDialog - - SSL client certificate authentication - SSL-Client-Zertifikat-Authentifizierung + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. + Ein verschlüsseltes pkcs12-Bundle wird dringend empfohlen, da eine Kopie in der Konfigurationsdatei gespeichert wird. - - This server probably requires a SSL client certificate. - Der Server benötigt vermutlich ein SSL-Client-Zertifikat + + Browse … + Durchsuchen … - - Certificate & Key (pkcs12): - Zertifikat & Schlüssel (pkcs12): + + Certificate & Key (pkcs12): + Zertifikat & Schlüssel (pkcs12): - - Browse … - Durchsuchen … + + Certificate files (*.p12 *.pfx) + Zertifikatsdateien (*.p12 *.pfx) - - Certificate password: - Zertifikatspasswort: + + Certificate password: + Zertifikatspasswort: - - An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - Ein verschlüsseltes pkcs12-Bundle wird dringend empfohlen, da eine Kopie in der Konfigurationsdatei gespeichert wird. + + Select a certificate + Zertifikat auswählen - - Select a certificate - Zertifikat auswählen + + SSL client certificate authentication + SSL-Client-Zertifikat-Authentifizierung - - Certificate files (*.p12 *.pfx) - Zertifikatsdateien (*.p12 *.pfx) + + This server probably requires a SSL client certificate. + Der Server benötigt vermutlich ein SSL-Client-Zertifikat - - + + OCC::Application - - Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - Einige Einstellungen wurden in %1-Versionen dieses Clients konfiguriert und verwenden Funktionen, die in dieser Version nicht verfügbar sind.<br><br>Fortfahren bedeutet <b>%2 dieser Einstellungen</b><br><br>Die aktuelle Konfigurationsdatei wurde bereits auf <i>%3</i> gesichert. - - - - newer - newer software version - Neuer + + %1 accounts + %1 Konten - - older - older software version - Älter + + %1 folders + %1 Ordner - - ignoring - Ignoriere + + 1 account + 1 Konto - - deleting - Lösche + + 1 folder + 1 Ordner - - Quit - Beenden + + Continue + Fortsetzen - - Continue - Fortsetzen + + deleting + Lösche - - %1 accounts - number of accounts imported - %1 Konten + + Error accessing the configuration file + Fehler beim Zugriff auf die Konfigurationsdatei - - 1 account - 1 Konto + + ignoring + Ignoriere - - %1 folders - number of folders imported - %1 Ordner + + Imported %1 and %2 from a legacy desktop client. +%3 + %1 und %2 wurden von einem älteren Desktop-Client importiert. +%3 - - 1 folder - 1 Ordner + + newer + Neuer - - Legacy import - Import früherer Konfiguration + + older + Älter - - Imported %1 and %2 from a legacy desktop client. -%3 - number of accounts and folders imported. list of users. - %1 und %2 wurden von einem älteren Desktop-Client importiert. -%3 + + Quit + Beenden - - Error accessing the configuration file - Fehler beim Zugriff auf die Konfigurationsdatei + + Quit %1 + Beende %1 - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - Beim Zugriff auf die Konfigurationsdatei unter %1 ist ein Fehler aufgetreten. Stellen Sie sicher, dass Ihr Systemkonto auf die Datei zugreifen kann. + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. + Einige Einstellungen wurden in %1-Versionen dieses Clients konfiguriert und verwenden Funktionen, die in dieser Version nicht verfügbar sind.<br><br>Fortfahren bedeutet <b>%2 dieser Einstellungen</b><br><br>Die aktuelle Konfigurationsdatei wurde bereits auf <i>%3</i> gesichert. - - Quit %1 - Beende %1 + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + Beim Zugriff auf die Konfigurationsdatei unter %1 ist ein Fehler aufgetreten. Stellen Sie sicher, dass Ihr Systemkonto auf die Datei zugreifen kann. - - + + OCC::AuthenticationDialog - - Authentication Required - Authentifizierung erforderlich + + &Password: + &Passwort: - - Enter username and password for "%1" at %2. - Benutzername und Passwort für "%1" auf %2 eingeben. + + &Username: + &Benutzername: - - &Username: - &Benutzername: + + Authentication Required + Authentifizierung erforderlich - - &Password: - &Passwort: + + Enter username and password for "%1" at %2. + Benutzername und Passwort für "%1" auf %2 eingeben. - - + + OCC::BasePropagateRemoteDeleteEncrypted - - "%1 Failed to unlock encrypted folder %2". - "%1 Der verschlüsselte Ordner %2 konnte nicht entsperrt werden". + "%1 Failed to unlock encrypted folder %2". + "%1 Der verschlüsselte Ordner %2 konnte nicht entsperrt werden". - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Falscher HTTP-Code vom Server zurückgegeben. Erwartet wird 204, jedoch "%1 %2" erhalten. + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Falscher HTTP-Code vom Server zurückgegeben. 204 erwartet, aber "%1 %2" erhalten. - - + + OCC::BulkPropagatorJob - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Die Datei %1 kann nicht hochgeladen werden, da eine andere Datei mit dem selben Namen, nur unterschiedlicher Groß-/Kleinschreibung, existiert + + Error updating metadata: %1 + Fehler beim Aktualisieren der Metadaten: %1 - - File %1 has invalid modified time. Do not upload to the server. - Die Datei %1 hat eine ungültige Änderungszeit. Nicht auf den Server hochladen. + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Die Datei %1 kann nicht hochgeladen werden, da eine andere Datei mit dem selben Namen, nur unterschiedlicher Groß-/Kleinschreibung, existiert - - File Removed (start upload) %1 - Datei entfernt (starte das Hochladen) %1 + + File %1 has invalid modification time. Do not upload to the server. + Die Datei %1 hat eine ungültige Änderungszeit. Nicht auf den Server hochladen. - - File %1 has invalid modification time. Do not upload to the server. - Die Datei %1 hat eine ungültige Änderungszeit. Nicht auf den Server hochladen. + + File %1 has invalid modified time. Do not upload to the server. + Die Datei %1 hat eine ungültige Änderungszeit. Nicht auf den Server hochladen. - - Local file changed during syncing. It will be resumed. - Lokale Datei hat sich während der Synchronisierung geändert. Die Synchronisierung wird wieder aufgenommen. + + File Removed (start upload) %1 + Datei entfernt (starte das Hochladen) %1 - - - Local file changed during sync. - Lokale Datei wurde während der Synchronisierung geändert. + + Local file changed during sync. + Lokale Datei wurde während der Synchronisierung geändert. - - Network error: %1 - Netzwerkfehler: %1 + + Local file changed during syncing. It will be resumed. + Lokale Datei hat sich während der Synchronisierung geändert. Die Synchronisierung wird wieder aufgenommen. - - Error updating metadata: %1 - Fehler beim Aktualisieren der Metadaten: %1 + + Network error: %1 + Netzwerkfehler: %1 - - The file %1 is currently in use - Die Datei %1 wird aktuell verwendet + + Restoration failed: %1 + Wiederherstellung fehlgeschlagen: %1 - - The local file was removed during sync. - Die lokale Datei wurde während der Synchronisierung gelöscht. + + The file %1 is currently in use + Die Datei %1 wird aktuell verwendet - - Restoration failed: %1 - Wiederherstellung fehlgeschlagen: %1 + + The local file was removed during sync. + Die lokale Datei wurde während der Synchronisierung gelöscht. - - + + OCC::CaseClashConflictSolver - - Cannot rename file because a file with the same name already exists on the server. Please pick another name. - Die Datei kann nicht umbenannt werden, da eine Datei mit selben Namen bereits auf dem Server existiert. Bitte einen anderen Namen wählen. + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + Die Datei kann nicht umbenannt werden, da eine Datei mit selben Namen bereits auf dem Server existiert. Bitte einen anderen Namen wählen. - - Could not rename file. Please make sure you are connected to the server. - Datei konnte nicht umbenannt werden. Bitte stellen Sie sicher, dass Sie mit dem Server verbunden sind. + + Could not rename file. Please make sure you are connected to the server. + Datei konnte nicht umbenannt werden. Bitte stellen Sie sicher, dass Sie mit dem Server verbunden sind. - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Sie haben nicht die Berechtigung, diese Datei umzubenennen. Bitte wenden Sie sich zum Umbenennen der Datei an dereren Ersteller. + + Failed to fetch permissions with error %1 + Fehler beim Abrufen der Berechtigungen. Fehler %1 - - Failed to fetch permissions with error %1 - Fehler beim Abrufen der Berechtigungen. Fehler %1 + + Filename contains leading and trailing spaces. + Dateiname enthält Leerzeichen am Anfang und am Ende. - - Filename contains leading and trailing spaces. - Dateiname enthält Leerzeichen am Anfang und am Ende. + + Filename contains leading spaces. + Dateiname enthält Leerzeichen am Anfang. - - Filename contains leading spaces. - Dateiname enthält Leerzeichen am Anfang. + + Filename contains trailing spaces. + Dateiname enthält Leerzeichen am Ende. - - Filename contains trailing spaces. - Dateiname enthält Leerzeichen am Ende. + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Sie haben nicht die Berechtigung, diese Datei umzubenennen. Bitte wenden Sie sich zum Umbenennen der Datei an dereren Ersteller. - - + + OCC::CaseClashFilenameDialog - - Case Clash Conflict - Konflikt mit der Groß- und Kleinschreibung - - - - The file could not be synced because it generates a case clash conflict with an existing file on this system. - Die Datei konnte nicht synchronisiert werden, da diese einen Konflikt bezüglich Groß- und Kleinschreibung mit einer vorhandenen Datei auf diesem System erzeugt. - - - - Error - Fehler - - - - Existing file - Vorhandene Datei - - - - file A - Datei A + + %1 does not support equal file names with only letter casing differences. + %1 unterstützt keine gleichen Dateinamen mit Unterschieden nur in der Groß- und Kleinschreibung. - - - today - Heute + + 0 byte + 0 Byte - - - 0 byte - 0 Byte + + Case Clash Conflict + Konflikt mit der Groß- und Kleinschreibung - - - Open existing file - Existierende Datei öffnen + + Case clashing file + Datei mit dem Problem der Groß- und Kleinschreibung - - Case clashing file - Datei mit dem Problem der Groß- und Kleinschreibung + + Existing file + Vorhandene Datei - - file B - Datei B + + file A + Datei A - - - Open clashing file - Datei mit dem Problem der Groß- und Kleinschreibung öffnen + + file B + Datei B - - Please enter a new name for the clashing file: - Bitte einen neuen Namen für die Datei mit dem Problem der Groß- und Kleinschreibung eingeben: + + Filename contains illegal characters: %1 + Dateiname enthält unzulässige Zeichen: %1 - - New filename - Neuer Dateiname + + New filename + Neuer Dateiname - - Rename file - Datei umbenennen + + Open clashing file + Datei mit dem Problem der Groß- und Kleinschreibung öffnen - - The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - Die Datei "%1" konnte aufgrund eines Konflikts (Groß- / Kleinschreibung) mit einer vorhandenen Datei auf diesem System nicht synchronisiert werden. + + Open existing file + Existierende Datei öffnen - - %1 does not support equal file names with only letter casing differences. - %1 unterstützt keine gleichen Dateinamen mit Unterschieden nur in der Groß- und Kleinschreibung. + + Please enter a new name for the clashing file: + Bitte einen neuen Namen für die Datei mit dem Problem der Groß- und Kleinschreibung eingeben: - - Filename contains leading and trailing spaces. - Dateiname enthält Leerzeichen am Anfang und am Ende. + + Rename file + Datei umbenennen - - Filename contains leading spaces. - Dateiname enthält Leerzeichen am Anfang. + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + Die Datei "%1" konnte aufgrund eines Konflikts (Groß- / Kleinschreibung) mit einer vorhandenen Datei auf diesem System nicht synchronisiert werden. - - Filename contains trailing spaces. - Dateiname enthält Leerzeichen am Ende. + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + Die Datei konnte nicht synchronisiert werden, da diese einen Konflikt bezüglich Groß- und Kleinschreibung mit einer vorhandenen Datei auf diesem System erzeugt. - - Use invalid name - Ungültigen Namen verwenden + + today + Heute - - Filename contains illegal characters: %1 - Dateiname enthält unzulässige Zeichen: %1 + + Use invalid name + Ungültigen Namen verwenden - - + + OCC::CleanupPollsJob - - Error writing metadata to the database - Fehler beim Schreiben der Metadaten in die Datenbank + + Error writing metadata to the database + Fehler beim Schreiben der Metadaten in die Datenbank - - + + OCC::ClientSideEncryption - - Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - Geben Sie Ihre Passphrase für Ende-zu-Ende-Verschlüsselung ein:<br><br>Benutzername: %2<br>Konto: %3<br> + + Enter E2E passphrase + E2E-Passphrase eingeben - - Enter E2E passphrase - E2E-Passphrase eingeben + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + Geben Sie Ihre Passphrase für Ende-zu-Ende-Verschlüsselung ein:<br><br>Benutzername: %2<br>Konto: %3<br> - - + + OCC::ConflictDialog - - Sync Conflict - Synchronisations-Konflikt - - - - - Conflicting versions of %1. - Konflikt-Versionen von %1. - - - - Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. - Welche Version der Datei soll behalten werden?<br/>Wenn Sie beide Versionen wählen, wird der lokalen Datei eine Zahl am Ende des Dateinamens angefügt. - - - - Local version - Lokale Version - - - - - Click to open the file - Klicken um die Datei zu öffnen + + <a href="%1">Open local version</a> + <a href="%1">Lokale Version öffnen</a> - - - today - Heute + + <a href="%1">Open server version</a> + <a href="%1">Serverversion öffnen</a> - - - 0 byte - 0 Byte + + Click to open the file + Klicken um die Datei zu öffnen - - <a href="%1">Open local version</a> - <a href="%1">Lokale Version öffnen</a> + + Conflicting versions of %1. + Konflikt-Versionen von %1. - - Server version - Serverversion + + Keep both versions + Beide Versionen behalten - - <a href="%1">Open server version</a> - <a href="%1">Serverversion öffnen</a> + + Keep local version + Lokale Version behalten - - - Keep selected version - Ausgewählte Version behalten + + Keep selected version + Ausgewählte Version behalten - - Open local version - Lokale Version öffnen + + Keep server version + Serverversion behalten - - Open server version - Serverversion öffnen + + Open local version + Lokale Version öffnen - - Keep both versions - Beide Versionen behalten + + Open server version + Serverversion öffnen - - Keep local version - Lokale Version behalten + + Sync Conflict + Synchronisations-Konflikt - - Keep server version - Serverversion behalten + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + Welche Version der Datei soll behalten werden?<br/>Wenn Sie beide Versionen wählen, wird der lokalen Datei eine Zahl am Ende des Dateinamens angefügt. - - + + OCC::ConflictSolver - - Do you want to delete the directory <i>%1</i> and all its contents permanently? - Möchten Sie den Ordner <i>%1</i> und dessen Inhalte dauerhaft löschen? - - - - Do you want to delete the file <i>%1</i> permanently? - Möchten Sie die Datei <i>%1</i> dauerhaft löschen? + + Confirm deletion + Löschen bestätigen - - Confirm deletion - Löschen bestätigen + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + Möchten Sie den Ordner <i>%1</i> und dessen Inhalte dauerhaft löschen? - - - Error - Fehler + + Do you want to delete the file <i>%1</i> permanently? + Möchten Sie die Datei <i>%1</i> dauerhaft löschen? - - - Moving file failed: + + Moving file failed: %1 - Verschieben der Datei fehlgeschlagen: + Verschieben der Datei fehlgeschlagen: %1 - - + + OCC::ConnectionValidator - - No Nextcloud account configured - Kein Nextcloud-Konto konfiguriert + + Authentication error: Either username or password are wrong. + Authentifizierungsfehler: Benutzername oder Passwort ist falsch. - - Authentication error: Either username or password are wrong. - Authentifizierungsfehler: Benutzername oder Passwort ist falsch. + + Connection issue + Verbindungsproblem - - Timeout - Zeitüberschreitung + + No Nextcloud account configured + Kein Nextcloud-Konto konfiguriert - - The provided credentials are not correct - Die zur Verfügung gestellten Anmeldeinformationen sind nicht korrekt + + Please update to the latest server and restart the client. + Aktualisieren Sie auf die neueste Server-Version und starten Sie den Client neu. - - The configured server for this client is too old - Der konfigurierte Server ist für diesen Client zu alt + + The configured server for this client is too old + Der konfigurierte Server ist für diesen Client zu alt - - Please update to the latest server and restart the client. - Aktualisieren Sie auf die neueste Server-Version und starten Sie den Client neu. + + The provided credentials are not correct + Die zur Verfügung gestellten Anmeldeinformationen sind nicht korrekt - - Connection issue - Verbindungsproblem + + Timeout + Zeitüberschreitung - - + + OCC::DiscoveryPhase - - Error while canceling deletion of a file - Fehler beim Abbrechen des Löschens einer Datei + + Error while canceling deletion of %1 + Fehler beim Abbrechen des Löschens von %1 - - Error while canceling deletion of %1 - Fehler beim Abbrechen des Löschens von %1 + + Error while canceling deletion of a file + Fehler beim Abbrechen des Löschens einer Datei - - + + OCC::DiscoverySingleDirectoryJob - - - Server error: PROPFIND reply is not XML formatted! - Serverantwort: PROPFIND-Antwort ist nicht im XML-Format! + + Encrypted metadata setup error: initial signature from server is empty. + Fehler bei der Einrichtung der verschlüsselten Metadaten: Die ursprüngliche Signatur vom Server ist leer. - - - Encrypted metadata setup error! - Einrichtungsfehler für verschlüsselte Metadaten! + + Encrypted metadata setup error! + Einrichtungsfehler für verschlüsselte Metadaten! - - Encrypted metadata setup error: initial signature from server is empty. - + + Server error: PROPFIND reply is not XML formatted! + Serverantwort: PROPFIND-Antwort ist nicht im XML-Format! - - + + OCC::DiscoverySingleLocalDirectoryJob - - Error while opening directory %1 - Fehler beim Öffnen des Ordners %1 + + Directory not accessible on client, permission denied + Verzeichnis auf dem Client nicht zugreifbar, Berechtigung verweigert - - Directory not accessible on client, permission denied - Verzeichnis auf dem Client nicht zugreifbar, Berechtigung verweigert + + Directory not found: %1 + Ordner nicht gefunden: %1 - - Directory not found: %1 - Ordner nicht gefunden: %1 + + Error while opening directory %1 + Fehler beim Öffnen des Ordners %1 - - Filename encoding is not valid - Dateinamenkodierung ist ungültig + + Error while reading directory %1 + Fehler beim Lesen des Ordners %1 - - Error while reading directory %1 - Fehler beim Lesen des Ordners %1 + + Filename encoding is not valid + Dateinamenkodierung ist ungültig - - + + OCC::EditLocallyJob - - Invalid token received. - Ungültiges Token empfangen. - - - - - - - - - Please try again. - Bitte erneut versuchen. + + An error occurred during data retrieval. + Es ist ein Fehler beim Datenabruf aufgetreten. - - Invalid file path was provided. - Ungültiger Dateipfad wurde angegeben. + + An error occurred during setup. + Es ist ein Fehler während der Einrichtung aufgetreten. - - Could not find an account for local editing. - Es konnte kein Konto für die lokale Bearbeitung gefunden werden. + + An error occurred trying to synchronise the file to edit locally. + Es ist ein Fehler beim Versuch, die Datei zu synchronisieren, um sie lokal zu bearbeiten, aufgetreten. - - - - - - - - - Could not start editing locally. - Lokale Bearbeitung konnte nicht gestartet werden. + + An error occurred trying to verify the request to edit locally. + Es ist ein Fehler beim Versuch, die Anfrage zur lokalen Bearbeitung zu überprüfen, aufgetreten. - - An error occurred trying to verify the request to edit locally. - Es ist ein Fehler beim Versuch, die Anfrage zur lokalen Bearbeitung zu überprüfen, aufgetreten. + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + Datei zur lokalen Bearbeitung konnte nicht gefunden werden. Stellen Sie sicher, dass sie nicht durch die selektive Synchronisierung ausgeschlossen wird. - - - Could not validate the request to open a file from server. - Die Anforderung zum Öffnen einer Datei vom Server konnte nicht validiert werden. + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + Datei zur lokalen Bearbeitung konnte nicht gefunden werden. Stellen Sie sicher, dass der Pfad gültig ist und lokal synchronisiert wird. - - - Could not find a file for local editing. Make sure its path is valid and it is synced locally. - Datei zur lokalen Bearbeitung konnte nicht gefunden werden. Stellen Sie sicher, dass der Pfad gültig ist und lokal synchronisiert wird. + + Could not find a remote file info for local editing. Make sure its path is valid. + Remote-Dateiinformationen für die lokale Bearbeitung konnten nicht gefunden werden. Stellen Sie sicher, dass der Pfad gültig ist. - - - - - Could not find a file for local editing. Make sure it is not excluded via selective sync. - Datei zur lokalen Bearbeitung konnte nicht gefunden werden. Stellen Sie sicher, dass sie nicht durch die selektive Synchronisierung ausgeschlossen wird. + + Could not find an account for local editing. + Es konnte kein Konto für die lokale Bearbeitung gefunden werden. - - - - An error occurred during data retrieval. - Es ist ein Fehler beim Datenabruf aufgetreten. + + Could not open %1 + %1 konnte nicht geöffnet werden - - - An error occurred trying to synchronise the file to edit locally. - Es ist ein Fehler beim Versuch, die Datei zu synchronisieren, um sie lokal zu bearbeiten, aufgetreten. + + Could not start editing locally. + Lokale Bearbeitung konnte nicht gestartet werden. - - An error occurred during setup. - Es ist ein Fehler während der Einrichtung aufgetreten. + + Could not validate the request to open a file from server. + Die Anforderung zum Öffnen einer Datei vom Server konnte nicht validiert werden. - - Server error: PROPFIND reply is not XML formatted! - Serverantwort: PROPFIND-Antwort ist nicht im XML-Format! + + File %1 already locked. + Datei %1 bereits gesperrt. - - Could not find a remote file info for local editing. Make sure its path is valid. - Remote-Dateiinformationen für die lokale Bearbeitung konnten nicht gefunden werden. Stellen Sie sicher, dass der Pfad gültig ist. + + File %1 could not be locked. + Datei %1 konnte nicht gesperrt werden. - - Invalid local file path. - Ungültiger lokaler Dateipfad. + + File %1 now locked. + Datei %1 ist jetzt gesperrt. - - Could not open %1 - %1 konnte nicht geöffnet werden + + Invalid file path was provided. + Ungültiger Dateipfad wurde angegeben. - - File %1 already locked. - Datei %1 bereits gesperrt. + + Invalid local file path. + Ungültiger lokaler Dateipfad. - - - Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - Die Sperre dauert noch %1 Minuten. Sie können diese Datei auch manuell entsperren, sobald Sie mit der Bearbeitung fertig sind. + + Invalid token received. + Ungültiges Token empfangen. - - File %1 now locked. - Datei %1 ist jetzt gesperrt. + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + Die Sperre dauert noch %1 Minuten. Sie können diese Datei auch manuell entsperren, sobald Sie mit der Bearbeitung fertig sind. - - File %1 could not be locked. - Datei %1 konnte nicht gesperrt werden. + + Please try again. + Bitte erneut versuchen. - - + + OCC::EncryptFolderJob - - Could not generate the metadata for encryption, Unlocking the folder. + + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. - Die Metadaten für die Verschlüsselung konnten nicht generiert werden. Entsperren des Ordners. + Die Metadaten für die Verschlüsselung konnten nicht generiert werden. Entsperren des Ordners. Dies kann ein Problem mit Ihren OpenSSL-Bibliotheken sein. - - + + OCC::EncryptedFolderMetadataHandler - - - - - - - Error fetching metadata. - Fehler beim Abrufen der Metadaten. + + Error fetching encrypted folder ID. + Fehler beim Abrufen der verschlüsselten Ordner-ID. - - - - Error locking folder. - Fehler beim Sperren des Ordners. + + Error fetching metadata. + Fehler beim Abrufen der Metadaten. - - Error fetching encrypted folder ID. - Fehler beim Abrufen der verschlüsselten Ordner-ID. + + Error locking folder. + Fehler beim Sperren des Ordners. - - Error parsing or decrypting metadata. - Fehler beim Lesen oder Entschlüsseln von Metadaten. + + Error parsing or decrypting metadata. + Fehler beim Lesen oder Entschlüsseln von Metadaten. - - Failed to upload metadata - Fehler beim Hochladen der Metadaten + + Failed to upload metadata + Fehler beim Hochladen der Metadaten - - + + OCC::FileDetails - - %1 second(s) ago - seconds elapsed since file last modified - - Vor %1 Sekunde - Vor %1 Sekunden - + + %1 day(s) ago + + + + vor %1 Tag(e) + - - %1 minute(s) ago - minutes elapsed since file last modified - - Vor %1 Minute - Vor %1 Minuten - + + %1 hour(s) ago + + + + vor %1 Stunde(n) + - - %1 hour(s) ago - hours elapsed since file last modified - - Vor %1 Stunde - Vor %1 Stunden - + + %1 minute(s) ago + + + + vor %1 Minute(n) + - - %1 day(s) ago - days elapsed since file last modified - - Vor %1 Tag - Vor %1 Tagen - + + %1 month(s) ago + + + + vor %1 Monat(en) + - - %1 month(s) ago - months elapsed since file last modified - - Vor %1 Monat - Vor %1 Monaten - + + %1 second(s) ago + + + + vor %1 Sekunde(n) + - - %1 year(s) ago - years elapsed since file last modified - - Vor %1 Jahr - Vor %1 Jahren - + + %1 year(s) ago + + + + vor %1 Jahr(en) + - - Locked by %1 - Expires in %2 minute(s) - remaining time before lock expires - - Gesperrt von %1 - Läuft in %2 Minute ab - Gesperrt von %1 - Läuft in %2 Minuten ab - - - - + + Locked by %1 - Expires in %2 minute(s) + + + + Gesperrt durch %1 - Läuft in %2 Minute(n) ab + + + + OCC::Flow2Auth - - The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - Die Polling-URL beginnt nicht mit HTTPS, obwohl die Anmelde-URL mit HTTPS beginnt. Die Anmeldung ist nicht möglich, da dies ein Sicherheitsproblem darstellen könnte. Bitte wenden Sie sich an Ihren Administrator. + + Could not parse the JSON returned from the server: <br><em>%1</em> + Der vom Server zurückgegebene JSON-Code konnte nicht verarbeitet werden: <br><em>%1</em> - - - Error returned from the server: <em>%1</em> - Vom Server zurückgegebener Fehler: <em>%1</em> + + Error returned from the server: <em>%1</em> + Vom Server zurückgegebener Fehler: <em>%1</em> - - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Fehler beim Zugriff auf den "Token"-Endpunkt: <br><em>%1</em> + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + Die Polling-URL beginnt nicht mit HTTPS, obwohl die Anmelde-URL mit HTTPS beginnt. Die Anmeldung ist nicht möglich, da dies ein Sicherheitsproblem darstellen könnte. Bitte wenden Sie sich an Ihren Administrator. - - - Could not parse the JSON returned from the server: <br><em>%1</em> - Der vom Server zurückgegebene JSON-Code konnte nicht verarbeitet werden: <br><em>%1</em> + + The reply from the server did not contain all expected fields + Die Antwort des Servers enthielt nicht alle erwarteten Felder - - - The reply from the server did not contain all expected fields - Die Antwort des Servers enthielt nicht alle erwarteten Felder + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + Die zurückgegebene Server-URL beginnt nicht mit HTTPS, obwohl die Anmelde-URL mit HTTPS beginnt. Die Anmeldung ist nicht möglich, da dies ein Sicherheitsproblem darstellen könnte. Bitte wenden Sie sich an Ihren Administrator. - - The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - Die zurückgegebene Server-URL beginnt nicht mit HTTPS, obwohl die Anmelde-URL mit HTTPS beginnt. Die Anmeldung ist nicht möglich, da dies ein Sicherheitsproblem darstellen könnte. Bitte wenden Sie sich an Ihren Administrator. + + There was an error accessing the "token" endpoint: <br><em>%1</em> + Fehler beim Zugriff auf den "Token"-Endpunkt: <br><em>%1</em> - - + + OCC::Flow2AuthWidget - - Unable to open the Browser, please copy the link to your Browser. - Der Browser kann nicht geöffnet werden. Bitte kopieren Sie den Link in Ihren Browser. - - - - - Error - Fehler - - - - Waiting for authorization - Warte auf Autorisierung - - - - Polling for authorization - Abruf der Autorisierung - - - - Starting authorization - Starte Autorisierung + + Link copied to clipboard. + Link in die Zwischenablage kopiert. - - Link copied to clipboard. - Link in die Zwischenablage kopiert. + + Open Browser + Im Browser öffnen - - Open Browser - + + Polling for authorization + Abruf der Autorisierung - - Switch to your browser to connect your account - Wechseln Sie zu Ihrem Browser um Ihr Konto zu verbinden + + Starting authorization + Starte Autorisierung - Reopen Browser - Browser erneut öffnen + + Unable to open the Browser, please copy the link to your Browser. + Der Browser kann nicht geöffnet werden. Bitte kopieren Sie den Link in Ihren Browser. - - Copy Link - Link kopieren + + Waiting for authorization + Warte auf Autorisierung - - + + OCC::Folder - - - Local folder %1 does not exist. - Lokaler Ordner %1 existiert nicht. - - - - %1 should be a folder but is not. - %1 sollte ein Ordner sein, ist es aber nicht. - - - - %1 is not readable. - %1 ist nicht lesbar. - - - %1 and %n other file(s) have been removed. - - %1 und %n andere Datei wurde gelöscht. - %1 und %n andere Dateien wurden gelöscht. - + + %1 and %n other file(s) are currently locked. + + + + + - - - %1 has been removed. - %1 names a file. - %1 wurde gelöscht. + + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + + + + - - %1 and %n other file(s) have been added. - - %1 und %n andere Datei wurden hinzugefügt. - %1 und %n andere Dateien wurden hinzugefügt. - + + %1 and %n other file(s) have been added. + + + + + - - - %1 has been added. - %1 names a file. - %1 wurde hinzugefügt. + + + %1 and %n other file(s) have been removed. + + + + + - - %1 and %n other file(s) have been updated. - - %1 und %n andere Datei wurde aktualisiert. - %1 und %n andere Dateien wurden aktualisiert. - + + %1 and %n other file(s) have been updated. + + + + + - - %1 has been updated. - %1 names a file. - %1 wurde aktualisiert. - - - - %1 has been renamed to %2 and %n other file(s) have been renamed. - - %1 wurde in %2 umbenannt und %n andere Datei wurde umbenannt. - %1 wurde in %2 umbenannt und %n andere Dateien wurden umbenannt. - + + %1 could not be synced due to an error. See the log for details. + %1 konnte aufgrund eines Fehlers nicht synchronisiert werden. Details finden Sie im Protokoll. - - %1 has been renamed to %2. - %1 and %2 name files. - %1 wurde in %2 umbenannt. + + %1 has a sync conflict. Please check the conflict file! + Es gab einen Konflikt bei der Synchronisierung von %1. Bitte prüfen Sie die Konfliktdatei! - - %1 has been moved to %2 and %n other file(s) have been moved. - - %1 wurde in %2 verschoben und %n andere Datei wurde verschoben. - %1 wurde in %2 verschoben und %n andere Dateien wurden verschoben. - + + %1 has and %n other file(s) have sync conflicts. + + + + + - - %1 has been moved to %2. - %1 wurde in %2 verschoben. + + %1 has been added. + %1 wurde hinzugefügt. - - %1 has and %n other file(s) have sync conflicts. - - %1 und %n andere Datei haben Konflikte beim Abgleichen. - %1 und %n andere Dateien haben Konflikte beim Abgleichen. - + + %1 has been moved to %2 and %n other file(s) have been moved. + + + + + - - %1 has a sync conflict. Please check the conflict file! - Es gab einen Konflikt bei der Synchronisierung von %1. Bitte prüfen Sie die Konfliktdatei! - - - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - - %1 und %n weitere Datei konnten aufgrund von Fehlern nicht synchronisiert werden. Schauen Sie in das Protokoll für Details. - %1 und %n weitere Dateien konnten aufgrund von Fehlern nicht synchronisiert werden. Details finden Sie im Protokoll. - + + %1 has been moved to %2. + %1 wurde in %2 verschoben. - - %1 could not be synced due to an error. See the log for details. - %1 konnte aufgrund eines Fehlers nicht synchronisiert werden. Details finden Sie im Protokoll. + + %1 has been removed. + %1 wurde gelöscht. - - %1 and %n other file(s) are currently locked. - - %1 und %n andere Datei sind aktuell gesperrt. - %1 und %n andere Dateien sind aktuell gesperrt. - + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + + + + - - %1 is currently locked. - %1 ist aktuell gesperrt. + + %1 has been renamed to %2. + %1 wurde in %2 umbenannt. - - Sync Activity - Synchronisierungsaktivität + + %1 has been updated. + %1 wurde aktualisiert. - - Could not read system exclude file - Systemeigene Ausschlussdatei kann nicht gelesen werden + + %1 is currently locked. + %1 ist aktuell gesperrt. - - A new folder larger than %1 MB has been added: %2. - - Ein neuer Ordner größer als %1 MB wurde hinzugefügt: %2. - + + %1 is not readable. + %1 ist nicht lesbar. - - A folder from an external storage has been added. - - Ein Ordner von einem externen Speicher wurde hinzugefügt. - + + %1 should be a folder but is not. + %1 sollte ein Ordner sein, ist es aber nicht. - - Please go in the settings to select it if you wish to download it. - Bitte wechseln Sie zu den Einstellungen, falls Sie den Ordner herunterladen möchten. + + A folder from an external storage has been added. + Ein Ordner von einem externen Speicher wurde hinzugefügt. - - A folder has surpassed the set folder size limit of %1MB: %2. + + A folder has surpassed the set folder size limit of %1MB: %2. %3 - Ein Ordner hat die festgelegte Ordnergrößenbeschränkung von %1 MB überschritten: %2. + Ein Ordner hat die festgelegte Ordnergrößenbeschränkung von %1 MB überschritten: %2. %3 - - Keep syncing - Weiterhin synchronisieren + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + Eine große Anzahl von Dateien wurde auf dem Server gelöscht. +Bitte bestätigen Sie, ob Sie mit diesen Löschungen fortfahren möchten. +Alternativ können Sie alle gelöschten Dateien wiederherstellen, indem Sie sie aus dem Ordner "%1" auf den Server hochladen. + + + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by downloading them from the server. + Eine große Anzahl von Dateien in Ihrem lokalen Ordner "%1" wurde gelöscht. +Bitte bestätigen Sie, ob Sie mit diesen Löschungen fortfahren möchten. +Alternativ können Sie alle gelöschten Dateien wiederherstellen, indem Sie sie vom Server herunterladen. + + + + A new folder larger than %1 MB has been added: %2. + Ein neuer Ordner größer als %1 MB wurde hinzugefügt: %2. - - Stop syncing - Synchronisation stoppen + All files in the local folder "%1" were deleted. + +If you restore the files, they will be downloaded again from the server. + Alle Dateien im lokalen Ordner "%1" wurden gelöscht. + +Wenn Sie die Dateien wiederherstellen, werden sie erneut vom Server heruntergeladen. - - The folder %1 has surpassed the set folder size limit of %2MB. - Der Ordner %1 hat die festgelegte Größenbeschränkung von %2 MB überschritten. + All files in the server folder "%1" were deleted. + +If you restore the files, they will be uploaded again to the server. + Alle Dateien im Serverordner "%1" wurden gelöscht. + +Wenn Sie die Dateien wiederherstellen, werden sie erneut auf den Server hochgeladen. - - Would you like to stop syncing this folder? - Möchten Sie die Synchronisierung dieses Ordners stoppen? + All files in the sync folder "%1" folder were deleted on the server. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. +If you decide to restore the files, they will be re-synced with the server if you have rights to do so. +If you decide to delete the files, they will be unavailable to you, unless you are the owner. + Alle Dateien im Synchronisationsordner "%1" wurden auf dem Server gelöscht. +Diese Löschungen werden mit Ihrem lokalen Synchronisationsordner synchronisiert, so dass diese Dateien nicht mehr verfügbar sind, es sei denn, Sie haben das Recht, sie wiederherzustellen. +Wenn Sie sich entscheiden, die Dateien wiederherzustellen, werden sie erneut mit dem Server synchronisiert, sofern Sie dazu berechtigt sind. +Wenn Sie sich entscheiden, die Dateien zu löschen, sind sie für Sie nicht mehr verfügbar, es sei denn, Sie sind der Eigentümer. - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. - Der Ordner %1 wurde erstellt, wurde jedoch zuvor von der Synchronisierung ausgeschlossen. Die darin enthaltenen Daten werden nicht synchronisiert. + All files in the sync folder "%1" folder were deleted on the server. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. +If you decide to restore the files, they will be re-synced with the server if you have rights to do so. +If you decide to delete the files, they will be unavailable to you, unless you are the owner. + Alle Dateien im Synchronisationsordner "%1" wurden auf dem Server gelöscht. +Diese Löschungen werden mit Ihrem lokalen Synchronisationsordner synchronisiert, so dass diese Dateien nicht mehr verfügbar sind, es sei denn, Sie haben das Recht, sie wiederherzustellen. +Wenn Sie sich entscheiden, die Dateien wiederherzustellen, werden sie erneut mit dem Server synchronisiert, sofern Sie dazu berechtigt sind. +Wenn Sie sich entscheiden, die Dateien zu löschen, sind sie für Sie nicht mehr verfügbar, es sei denn, Sie sind der Eigentümer. - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. - Die Datei % 1 wurde erstellt, jedoch bereits zuvor von der Synchronisierung ausgeschlossen. Sie wird nicht synchronisiert werden. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. +Are you sure you want to sync those actions with the server? +If this was an accident and you decide to keep your files, they will be re-synced from the server. + Alle Dateien im lokalen Synchronisierungs-Ordner "%1" wurden gelöscht. Diese Löschung wird mit Ihrem Server synchronisiert, wodurch die Dateien nicht mehr verfügbar sind, es sei denn, diese werden wiederhergestellt. +Sind Sie sich sicher, dass Sie diese Aktion mit Ihrem Server synchronisieren möchten? +Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheiden, werden diese wieder vom Server synchronisiert. - - Changes in synchronized folders could not be tracked reliably. + + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). %1 - Änderungen in synchronisierten Ordnern konnten nicht zuverlässig nachverfolgt werden. + Änderungen in synchronisierten Ordnern konnten nicht zuverlässig nachverfolgt werden. Dies bedeutet, dass der Synchronisierungs-Client lokale Änderungen möglicherweise nicht sofort hochlädt, sondern nur nach lokalen Änderungen sucht und diese gelegentlich hochlädt (standardmäßig alle zwei Stunden). %1 - - Virtual file download failed with code "%1", status "%2" and error message "%3" - Der Download der virtuellen Datei ist mit dem Code "%1", dem Status "%2" und der Fehlermeldung "%3" fehlgeschlagen. + + Could not read system exclude file + Systemeigene Ausschlussdatei kann nicht gelesen werden - - A large number of files in the server have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. - + Keep files + Dateien behalten - - A large number of files in your local '%1' folder have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by downloading them from the server. - + + Keep syncing + Weiterhin synchronisieren - - Remove all files? - + + Local folder %1 does not exist. + Lokaler Ordner %1 existiert nicht. - - Proceed with Deletion - + + Please go in the settings to select it if you wish to download it. + Bitte wechseln Sie zu den Einstellungen, falls Sie den Ordner herunterladen möchten. - - Restore Files to Server - + Proceed to remove all files + Entfernen Sie alle Dateien - - Restore Files from Server - + + Proceed with Deletion + Mit der Löschung fortfahren - All files in the sync folder "%1" folder were deleted on the server. -These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. -If you decide to restore the files, they will be re-synced with the server if you have rights to do so. -If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Alle Dateien im Sync-Ordner "%1" wurden auf dem Server gelöscht. -Diese Löschungen werden mit Ihrem lokalen Sync-Ordner synchronisiert, wodurch diese Dateien nicht verfügbar sind, es sei denn, Sie haben das Recht, sie wiederherzustellen. -Wenn Sie sich entscheiden, die Dateien wiederherzustellen, werden sie erneut mit dem Server synchronisiert, wenn Sie das Recht dazu haben. -Wenn Sie sich entscheiden, die Dateien zu löschen, sind sie für Sie nicht mehr verfügbar, es sei denn, Sie sind der Eigentümer. + Remove all files + Alle Dateien entfernen - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. -Are you sure you want to sync those actions with the server? -If this was an accident and you decide to keep your files, they will be re-synced from the server. - Alle Dateien im lokalen Synchronisierungs-Ordner "%1" wurden gelöscht. Diese Löschung wird mit Ihrem Server synchronisiert, wodurch die Dateien nicht mehr verfügbar sind, es sei denn, diese werden wiederhergestellt. -Sind Sie sich sicher, dass Sie diese Aktion mit Ihrem Server synchronisieren möchten? -Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheiden, werden diese wieder vom Server synchronisiert. + + Remove all files? + Alle Dateien entfernen? - Remove All Files? - Alle Dateien löschen? + Restore files + Dateien wiederherstellen - Remove all files - Alle Dateien entfernen + + Restore Files from Server + Dateien vom Server wiederherstellen - Keep files - Dateien behalten + + Restore Files to Server + Dateien auf dem Server wiederherstellen - - - OCC::FolderCreationDialog - - Create new folder - Neuen Ordner erstellen + + Stop syncing + Synchronisation stoppen - - Enter folder name - Ordnernamen eingeben + + Sync Activity + Synchronisierungsaktivität - - Folder already exists - Ordner existiert bereits + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + Die Datei % 1 wurde erstellt, jedoch bereits zuvor von der Synchronisierung ausgeschlossen. Sie wird nicht synchronisiert werden. - - %1 Create new folder - + + The folder %1 has surpassed the set folder size limit of %2MB. + Der Ordner %1 hat die festgelegte Größenbeschränkung von %2 MB überschritten. - - Error - Fehler + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + Der Ordner %1 wurde erstellt, wurde jedoch zuvor von der Synchronisierung ausgeschlossen. Die darin enthaltenen Daten werden nicht synchronisiert. - - Could not create a folder! Check your write permissions. - Ordner konnte nicht erstellt werden! Prüfen Sie die Schreibberechtigungen. + + Virtual file download failed with code "%1", status "%2" and error message "%3" + Der Download der virtuellen Datei ist mit dem Code "%1", dem Status "%2" und der Fehlermeldung "%3" fehlgeschlagen. - - - OCC::FolderMan - - Could not reset folder state - Konnte Ordner-Zustand nicht zurücksetzen + + Would you like to stop syncing this folder? + Möchten Sie die Synchronisierung dieses Ordners stoppen? + + + OCC::FolderCreationDialog - - An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. - Ein altes Synchronisierungsprotokoll "%1" wurde gefunden, konnte jedoch nicht entfernt werden. Bitte stellen Sie sicher, dass keine Anwendung es verwendet. + + %1 Create new folder + %1 Neuen Ordner erstellen - - (backup) - (Sicherung) + + Could not create a folder! Check your write permissions. + Ordner konnte nicht erstellt werden! Prüfen Sie die Schreibberechtigungen. - - (backup %1) - (Sicherung %1) + + Enter folder name + Ordnernamen eingeben - - Undefined state. - Undefinierter Zustand. + + Folder already exists + Ordner existiert bereits + + + OCC::FolderMan - - Waiting to start syncing. - Wartet auf Beginn der Synchronisierung. + + (backup %1) + (Sicherung %1) - - Preparing for sync. - Synchronisierung wird vorbereitet. + + (backup) + (Sicherung) - - Sync is running. - Synchronisierung läuft. + + %1 (Sync is paused) + %1 (Synchronisierung ist pausiert) - - Sync finished with unresolved conflicts. - Synchronisierung mit ungelösten Konflikten beendet. + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + Ein altes Synchronisierungsprotokoll "%1" wurde gefunden, konnte jedoch nicht entfernt werden. Bitte stellen Sie sicher, dass keine Anwendung es verwendet. - - Last sync was successful. - Die letzte Synchronisierung war erfolgreich. + + Could not reset folder state + Konnte Ordner-Zustand nicht zurücksetzen - - Setup error. - Einrichtungsfehler. + + Last sync was successful. + Die letzte Synchronisierung war erfolgreich. - - Sync request was cancelled. - Synchronisierungsanfrage wurde abgebrochen. + + No valid folder selected! + Kein gültiger Ordner gewählt! - - Sync is paused. - Synchronisierung ist pausiert. + + Preparing for sync. + Synchronisierung wird vorbereitet. - - %1 (Sync is paused) - %1 (Synchronisierung ist pausiert) + + Setup error. + Einrichtungsfehler. - - No valid folder selected! - Kein gültiger Ordner gewählt! + + Sync finished with unresolved conflicts. + Synchronisierung mit ungelösten Konflikten beendet. - - The selected path does not exist! - Der gewählte Pfad existiert nicht! + + Sync is paused. + Synchronisierung ist pausiert. - - The selected path is not a folder! - Der gewählte Pfad ist kein Ordner! + + Sync is running. + Synchronisierung läuft. - - - You have no permission to write to the selected folder! - Sie haben keine Schreibberechtigung für den ausgewählten Ordner! + + Sync request was cancelled. + Synchronisierungsanfrage wurde abgebrochen. - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! - Der lokale Ordner %1 liegt innerhalb eines synchronisierten Ordners. Bitte wählen Sie einen anderen aus! + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + Der lokale Ordner %1 liegt innerhalb eines synchronisierten Ordners. Bitte wählen Sie einen anderen aus! - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! - Der lokale Ordner %1 liegt in einem Ordner, der bereits synchronisiert wird. Bitte wählen Sie einen anderen aus! + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + Der lokale Ordner %1 liegt in einem Ordner, der bereits synchronisiert wird. Bitte wählen Sie einen anderen aus! - - There is already a sync from the server to this local folder. Please pick another local folder! - Es existiert bereits eine Synchronisierung vom Server zu diesem lokalen Ordner. Bitte wählen Sie einen anderen lokalen Ordner! + + The selected path does not exist! + Der gewählte Pfad existiert nicht! - - - OCC::FolderStatusDelegate - Add Folder Sync Connection - Ordner-Synchronisierung hinzufügen + + The selected path is not a folder! + Der gewählte Pfad ist kein Ordner! - - Add Folder Sync - + + There is already a sync from the server to this local folder. Please pick another local folder! + Es existiert bereits eine Synchronisierung vom Server zu diesem lokalen Ordner. Bitte wählen Sie einen anderen lokalen Ordner! - - Synchronize any other local folder with your %1 - + + Undefined state. + Undefinierter Zustand. - - File - Datei + + Waiting to start syncing. + Wartet auf Beginn der Synchronisierung. - - - OCC::FolderStatusModel - - You need to be connected to add a folder - Sie müssen verbunden sein, um einen Ordner hinzuzufügen + + You have no permission to write to the selected folder! + Sie haben keine Schreibberechtigung für den ausgewählten Ordner! + + + + OCC::FolderStatusDelegate + + + Add live backup + Ordner-Synchronisierung hinzufügen + + + + File + Datei - - Click this button to add a folder to synchronize. - Wählen Sie diese Schaltfläche, um einen zu synchronisierenden Ordner hinzuzufügen. + + Synchronize any other local folder with your %1 + Synchronisieren Sie jeden anderen lokalen Ordner mit Ihrem %1 + + + OCC::FolderStatusModel - - Could not decrypt! - Konnte nicht entschlüsseln! + + , + , - - - %1 (%2) - %1 (%2) + + %1 (%2) + %1 (%2) - - Error while loading the list of folders from the server. - Fehler beim Empfang der Ordnerliste vom Server. + + %1 %2 + %1 %2 - - Fetching folder list from server … - Rufe Ordnerliste vom Server ab … + + %1 %2 (%3 of %4) + %1 %2 (%3 von %4) - - There are unresolved conflicts. Click for details. - Es existieren ungelöste Konflikte. Für Details klicken. + + %1 of %2, file %3 of %4 + %1 of %2, Datei %3 von %4 - - Virtual file support is enabled. - Unterstützung für virtuelle Dateien ist aktiviert. + + %5 left, %1 of %2, file %3 of %4 + %5 übrig, %1 von %2, Datei %3 von %4 - - Signed out - Abgemeldet + + ↑ %1/s + ↑ %1/s - - Synchronizing VirtualFiles with local folder - Synchronisiere VirtualFiles mit lokalem Ordner + + ↓ %1/s + ↓ %1/s - - Synchronizing with local folder - Synchronisiere mit lokalem Ordner + + A few seconds left, %1 of %2, file %3 of %4 + Noch ein paar Sekunden, %1 von %2, Datei %3 von %4 - - Checking for changes in remote "%1" - Nach Änderungen in entfernten "%1" suchen + + Checking for changes in local "%1" + Nach Änderungen in lokalem "%1" suchen - - Checking for changes in local "%1" - Nach Änderungen in lokalem "%1" suchen + + Checking for changes in remote "%1" + Nach Änderungen in entfernten "%1" suchen - - Reconciling changes - Änderungen zusammenführen + + Click this button to add a folder to synchronize. + Wählen Sie diese Schaltfläche, um einen zu synchronisierenden Ordner hinzuzufügen. - - Syncing %1 - Example text: "Syncing 'foo.txt', 'bar.txt'" - Synchronisiere %1 + + Could not decrypt! + Konnte nicht entschlüsseln! - - - , - , + + download %1/s + Download %1/s - - download %1/s - Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) - Download %1/s + + Error while loading the list of folders from the server. + Fehler beim Empfang der Ordnerliste vom Server. - - ↓ %1/s - ↓ %1/s + + Fetching folder list from server … + Rufe Ordnerliste vom Server ab … - - upload %1/s - Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) - Upload %1/s + + file %1 of %2 + Datei %1 von %2 - - ↑ %1/s - ↑ %1/s + + Preparing to sync … + Synchronisierung wird vorbereitet … - - %1 %2 (%3 of %4) - Example text: "uploading foobar.png (2MB of 2MB)" - %1 %2 (%3 von %4) + + Reconciling changes + Änderungen zusammenführen - - %1 %2 - Example text: "uploading foobar.png" - %1 %2 + + Synchronizing VirtualFiles with local folder + Synchronisiere VirtualFiles mit lokalem Ordner - - A few seconds left, %1 of %2, file %3 of %4 - Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" - Noch ein paar Sekunden, %1 von %2, Datei %3 von %4 + + Synchronizing with local folder + Synchronisiere mit lokalem Ordner - - %5 left, %1 of %2, file %3 of %4 - %5 übrig, %1 von %2, Datei %3 von %4 + + There are unresolved conflicts. Click for details. + Es existieren ungelöste Konflikte. Für Details klicken. - - %1 of %2, file %3 of %4 - Example text: "12 MB of 345 MB, file 6 of 7" - %1 of %2, Datei %3 von %4 + + upload %1/s + Upload %1/s - - file %1 of %2 - Datei %1 von %2 + + Virtual file support is enabled. + Unterstützung für virtuelle Dateien ist aktiviert. - - Waiting … - Warte … + + Waiting … + Warte … - - Waiting for %n other folder(s) … - - Warte auf %n anderen Ordner … - Warte auf %n andere Ordner … - + + Waiting for %n other folder(s) … + + + + + - - Preparing to sync … - Synchronisierung wird vorbereitet … + + You need to be connected to add a folder + Sie müssen verbunden sein, um einen Ordner hinzuzufügen - - + + OCC::FolderWatcher - - The watcher did not receive a test notification. - Der Beobachter hat keine Testbenachrichtigung erhalten. + + The watcher did not receive a test notification. + Der Beobachter hat keine Testbenachrichtigung erhalten. - - + + OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. - Dieses Problem tritt zumeist auf, wenn die Inotify-Zähler voll sind. Details finden Sie im FAQ. + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + Dieses Problem tritt zumeist auf, wenn die Inotify-Zähler voll sind. Details finden Sie im FAQ. - - + + OCC::FolderWizard - - Add Folder Sync Connection - Ordner-Synchronisierung hinzufügen + Add Folder Sync Connection + Ordner-Synchronisierung hinzufügen - - Add Sync Connection - Synchronisierung hinzufügen + + Add Sync Connection + Synchronisierung hinzufügen - - + + OCC::FolderWizardLocalPath - - Click to select a local folder to sync. - Hier klicken um einen lokalen Ordner zum Synchronisieren auszuwählen. + + Choose + Wählen Sie - - Enter the path to the local folder. - Pfad zum lokalen Ordner eingeben + + Click to select a local folder to sync. + Hier klicken um einen lokalen Ordner zum Synchronisieren auszuwählen. - - Select the source folder - Quellordner auswählen + + Enter the path to the local folder. + Pfad zum lokalen Ordner eingeben - - Add Folder Sync - + + Select the source folder + Quellordner auswählen + + + OCC::FolderWizardRemotePath - - Step 1 of 3: Select local folder - + + Authentication failed accessing %1 + Beim Zugriff auf %1 ist die Authentifizierung fehlgeschlagen - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - + + Choose this to sync the entire account + Wählen Sie dies, um das gesamte Konto zu synchronisieren - - Choose - + + Create Remote Folder + Entfernten Ordner erstellen - - - OCC::FolderWizardRemotePath - - Create Remote Folder - Entfernten Ordner erstellen + + Enter the name of the new folder to be created below "%1": + Geben Sie den Namen des neuen, unter "%1" zu erstellenden Ordners ein: - - Enter the name of the new folder to be created below "%1": - Geben Sie den Namen des neuen, unter "%1" zu erstellenden Ordners ein: + + Failed to create the folder on %1. Please check manually. + Die Erstellung des Ordners auf %1 ist fehlgeschlagen. Bitte prüfen Sie dies manuell. - - Folder was successfully created on %1. - Ordner auf %1 erstellt. + + Failed to list a folder. Error: %1 + Konnte Ordner nicht listen. Fehler: %1 - - Authentication failed accessing %1 - Beim Zugriff auf %1 ist die Authentifizierung fehlgeschlagen + + Folder was successfully created on %1. + Ordner auf %1 erstellt. - - Failed to create the folder on %1. Please check manually. - Die Erstellung des Ordners auf %1 ist fehlgeschlagen. Bitte prüfen Sie dies manuell. + + This folder is already being synced. + Dieser Ordner wird bereits synchronisiert. - - Failed to list a folder. Error: %1 - Konnte Ordner nicht listen. Fehler: %1 + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + Sie synchronisieren bereits <i>%1</i>, der ein übergeordneter Ordner von <i>%2</i> ist. - - Choose this to sync the entire account - Wählen Sie dies, um das gesamte Konto zu synchronisieren + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + Sie synchronisieren bereits <i>%1</i>, der ein Unterordner von <i>%2</i> ist. + + + OCC::FolderWizardSelectiveSync - - This folder is already being synced. - Dieser Ordner wird bereits synchronisiert. + + Use virtual files instead of downloading content immediately %1 + Virtuelle Dateien verwenden, anstatt den Inhalt sofort herunterzuladen %1 - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - Sie synchronisieren bereits <i>%1</i>, der ein übergeordneter Ordner von <i>%2</i> ist. + + Virtual files are not available for the selected folder + Virtuelle Dateien sind für den ausgewählten Ordner nicht verfügbar - - You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - Sie synchronisieren bereits <i>%1</i>, der ein Unterordner von <i>%2</i> ist. + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Virtuelle Dateien werden für die Wurzel von Windows-Partitionen als lokaler Ordner nicht unterstützt. Bitte wählen Sie einen gültigen Unterordner unter dem Laufwerksbuchstaben. + + + OCC::FormatWarningsWizardPage - - Add Folder Sync - + + %1 + %1 - - Step 2 of 3: Directory in your %1 - + <b>Warning:</b> + <b>Warnung:</b> - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - + <b>Warning:</b> %1 + <b>Warnung:</b> %1 + + + OCC::GETFileJob - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - + + Connection Timeout + Zeitüberschreitung der Verbindung - - Refresh - Aktualisieren + + No E-Tag received from server, check Proxy/Gateway + Kein E-Tag vom Server empfangen, bitte Proxy/Gateway überprüfen - - Create folder - Ordner erstellen + + Server returned wrong content-range + Server hat falschen Bereich für den Inhalt zurückgegeben - - - OCC::FolderWizardSelectiveSync - - - Use virtual files instead of downloading content immediately %1 - Virtuelle Dateien verwenden, anstatt den Inhalt sofort herunterzuladen %1 + + We received a different E-Tag for resuming. Retrying next time. + Es wurde ein unterschiedliches E-Tag zum Fortfahren empfangen. Bitte beim nächsten mal nochmal versuchen. - - - (experimental) - (experimentell) + + We received an unexpected download Content-Length. + Wir haben eine unerwartete Download-Content-Länge erhalten. + + + OCC::GeneralSettings - - Add Folder Sync - + + &Analysis data collection for needs-based design + &Analyse der Datenerhebung für bedarfsgerechte Gestaltung - - Step 3 of 3: Selektive Synchronisation - + + &Automatically check for updates + &Automatisch auf Aktualisierungen prüfen - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Virtuelle Dateien werden für die Wurzel von Windows-Partitionen als lokaler Ordner nicht unterstützt. Bitte wählen Sie einen gültigen Unterordner unter dem Laufwerksbuchstaben. + &Channel + &Kanal - - Virtual files are not available for the selected folder - Virtuelle Dateien sind für den ausgewählten Ordner nicht verfügbar + &Check for Update now + &Jetzt auf Aktualisierungen prüfen - - - OCC::FormatWarningsWizardPage - <b>Warning:</b> %1 - <b>Warnung:</b> %1 + + &Launch on system startup + Beim &Systemstart starten - <b>Warning:</b> - <b>Warnung:</b> + + &Restart && Update + &Neustarten && aktualisieren - - %1 - %1 + About + Über - - - OCC::GETFileJob - - No E-Tag received from server, check Proxy/Gateway - Kein E-Tag vom Server empfangen, bitte Proxy/Gateway überprüfen + + Ask for confirmation before + synchronizing new folders larger than + Fragen Sie nach einer Bestätigung, bevor Sie neue Ordner synchronisieren, die größer sind als - - We received a different E-Tag for resuming. Retrying next time. - Es wurde ein unterschiedliches E-Tag zum Fortfahren empfangen. Bitte beim nächsten mal nochmal versuchen. + + Ask for confirmation before synchronizing + external storages + Vor der Synchronisierung externer Speicher nach einer Bestätigung fragen - - We received an unexpected download Content-Length. - Wir haben eine unerwartete Download-Content-Länge erhalten. + Ask for confirmation before synchronizing external storages + Bestätigung erfragen, bevor externe Speicher synchronisiert werden - - Server returned wrong content-range - Server hat falschen Bereich für den Inhalt zurückgegeben + Ask for confirmation before synchronizing folders larger than + Bestätigung erfragen, bevor Ordner synchronisiert werden. Grenze: - - Connection Timeout - Zeitüberschreitung der Verbindung + Ask for confirmation before synchronizing new folders larger than + Um eine Bestätigung bitten, bevor Sie neue Ordner synchronisieren, die größer sind als - - - OCC::GeneralSettings - - Advanced - Erweitert + + Automatically disable synchronisation of + folders that overcome limit + Automatisches Deaktivieren der Synchronisierung von Ordnern, die das Limit überschreiten - About - Über + Automatically disable synchronisation of folders that overcome limit + Automatisch die Synchronisierung von Ordnern beenden, die das Limit überschreiten - Ask for confirmation before synchronizing new folders larger than - Um eine Bestätigung bitten, bevor Sie neue Ordner synchronisieren, die größer sind als + + beta + Beta - Legal notice - Impressum + + Change update channel + Update-Kanal ändern - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB + + Change update channel? + Update-Kanal ändern? - Use &Monochrome Icons - &Monochrome Symbole verwenden + + Check Now + Jetzt prüfen - &Launch on System Startup - Beim &Systemstart starten + + Create Debug Archive + Debug-Archiv erstellen - Show Server &Notifications - Server-&Benachrichtigungen anzeigen + + Data Protection + Datenschutzbestimmungen - Notify when synchronised folders grow larger than specified limit - Benachrichtigen, wenn synchronisierte Ordner größer werden als die angegebene Grenze + + Debug Archive Created + Debug-Archiv erstellt - Show Call Notifications - Anrufbenachrichtigungen anzeigen + + Debug archive is created at %1 + Debug-Archiv erstellt in %1 - - Updates - Aktualisierungen + + Desktop client x.x.x + Desktop-Client x.x.x - &Automatically check for Updates - &Automatisch auf Aktualisierungen prüfen + + Edit &Ignored Files + I&gnorierte Dateien bearbeiten - Automatically disable synchronisation of folders that overcome limit - Automatisch die Synchronisierung von Ordnern beenden, die das Limit überschreiten + + For System Tray + Für das Systembenachrichtungsfeld - &Channel - &Kanal + + General Settings + Allgemeine Einstellungen - Ask for confirmation before synchronizing external storages - Bestätigung erfragen, bevor externe Speicher synchronisiert werden + Info + Info - - Move removed files to trash - Gelöschte Dateien in den Papierkorb verschieben + + Legal Notice + Impressum - Show sync folders in &Explorer's navigation pane - Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen + MB + MB - - S&how crash reporter - &Crash-Reporter anzeigen + + More Information + Mehr Informationen - - Edit &Ignored Files - I&gnorierte Dateien bearbeiten + + Move removed files to trash + Gelöschte Dateien in den Papierkorb verschieben - - - Create Debug Archive - Debug-Archiv erstellen + + Notify when synchronised folders grow + larger than specified limit + Benachrichtigung, wenn synchronisierte Ordner größer als die angegebene Grenze werden. - &Check for Update now - &Jetzt auf Aktualisierungen prüfen + Notify when synchronised folders grow larger than specified limit + Benachrichtigen, wenn synchronisierte Ordner größer werden als die angegebene Grenze - Info - Info + + Open Source Software + Open-Source-Software - Ask for confirmation before synchronizing folders larger than - Bestätigung erfragen, bevor Ordner synchronisiert werden. Grenze: + + Privacy Policy + Datenschutzerklärung - - Desktop client x.x.x - Desktop-Client x.x.x + + S&how crash reporter + &Crash-Reporter anzeigen - - Update channel - Update-Kanal + + Server notifications that require attention. + Server-Benachrichtigungen, die Aufmerksamkeit erfordern. - - Ask for confirmation before - synchronizing new folders larger than - + + Show call notification dialogs. + Dialog zu Anrufbenachrichtigungen anzeigen - - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - + + Show call notifications + Anrufbenachrichtigungen anzeigen - - Notify when synchronised folders grow - larger than specified limit - + + Show server &notifications + Server-&Benachrichtigungen anzeigen - - Automatically disable synchronisation of - folders that overcome limit - + + Show sync folders in &Explorer's navigation + pane + Sync-Ordner im Navigationsbereich von &Explorer anzeigen - - Ask for confirmation before synchronizing - external storages - + Show sync folders in &Explorer's Navigation Pane + Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen - - Show sync folders in &Explorer's navigation - pane - + + stable + Stabil - - Data Protection - + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + +Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. + Der Update-Kanal bestimmt, welche Client-Updates zur Installation angeboten werden. Der "stabile" Kanal enthält nur Upgrades, die als zuverlässig gelten, während die Versionen im "Beta" -Kanal unter Umständen neuere Funktionen und Bugfixes enthalten, die jedoch noch nicht gründlich getestet wurden. + +Beachten Sie bitte, dass hierdurch nur ausgewählt wird, aus welchem Pool Upgrades heruntergeladen werden und dass Downgrades nicht möglich sind. Die Rückkehr vom Beta- zum stabilen Kanal kann daher zumeist nicht sofort erfolgen, sondern es muss auf eine neue stabile Version gewartet werden, die neuer als die aktuell installierte Beta ist. - - &Analysis data collection for needs-based design - + + Update channel + Update-Kanal - - Privacy Policy - + + Updates + Aktualisierungen - - Open Source Software - + + Usage Documentation + Nutzungsdokumentation - - - stable - Stabil + + Use &monochrome icons + &Monochrome Symbole verwenden - - - beta - Beta + + You cannot disable autostart because system-wide autostart is enabled. + Sie können den Autostart nicht deaktivieren, da der systemweite Autostart aktiviert ist. - - &Restart && Update - &Neustarten && aktualisieren + + Zip Archives + Zip-Archive + + + OCC::GetOrCreatePublicLinkShare - - More Information - + + Could not retrieve or create the public link share. Error: + +%1 + Der Link für das öffentliche Teilen konnte nicht erstellt oder empfangen werden. Fehler: + +%1 - Show sync folders in &Explorer's Navigation Pane - Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen + + Password for share required + Passwort für die Freigabe erforderlich - - &Automatically check for updates - &Automatisch auf Aktualisierungen prüfen + + Please enter a password for your link share: + Bitte Passwort für die Link-Freigabe eingeben: - - Check Now - Jetzt prüfen + + Sharing error + Fehler beim Teilen + + + OCC::HttpCredentialsGui - - Usage Documentation - Nutzungsdokumentation + + <a href="%1">Click here</a> to request an app password from the web interface. + <a href="%1">Hier klicken</a>, um von der Web-Oberfläche ein App-Passwort zu erhalten. - - Legal Notice - Impressum + + Enter Password + Passwort eingeben - - General Settings - Allgemeine Einstellungen + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + Bitte %1 Passwort:<br><br>Benutzername: %2<br>Konto: %3<br>eingeben - - For System Tray - Für das Systembenachrichtungsfeld + + Reading from keychain failed with error: "%1" + Lesen vom Schlüsselbund fehlgeschlagen mit Fehler: "%1" + + + OCC::IgnoreListEditor - - Use &monochrome icons - &Monochrome Symbole verwenden + + Files Ignored by Patterns + Nach Muster ignorierte Dateien - - &Launch on system startup - Beim &Systemstart starten + + Global Ignore Settings + Globale Ignorier-Einstellungen - - Show server &notifications - Server-&Benachrichtigungen anzeigen + + Ignored Files Editor + Editor für ignorierte Dateien - - Show call notifications - Anrufbenachrichtigungen anzeigen + + Sync hidden files + Synchronisiere versteckte Dateien - - Server notifications that require attention. - Server-Benachrichtigungen, die Aufmerksamkeit erfordern. + + This entry is provided by the system at "%1" and cannot be modified in this view. + Dieser Eintrag wird vom System auf "%1" bereitgestellt und kann in dieser Ansicht nicht geändert werden. + + + OCC::IgnoreListTableWidget - - Show call notification dialogs. - Dialog zu Anrufbenachrichtigungen anzeigen + + Add + Hinzufügen - - You cannot disable autostart because system-wide autostart is enabled. - Sie können den Autostart nicht deaktivieren, da der systemweite Autostart aktiviert ist. + Add a new ignore pattern: + Neues Ignoriermuster hinzufügen - - Change update channel? - Update-Kanal ändern? + Add Ignore Pattern + Ignoriermuster hinzufügen - - The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. - -Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. - Der Update-Kanal bestimmt, welche Client-Updates zur Installation angeboten werden. Der "stabile" Kanal enthält nur Upgrades, die als zuverlässig gelten, während die Versionen im "Beta" -Kanal unter Umständen neuere Funktionen und Bugfixes enthalten, die jedoch noch nicht gründlich getestet wurden. - -Beachten Sie bitte, dass hierdurch nur ausgewählt wird, aus welchem Pool Upgrades heruntergeladen werden und dass Downgrades nicht möglich sind. Die Rückkehr vom Beta- zum stabilen Kanal kann daher zumeist nicht sofort erfolgen, sondern es muss auf eine neue stabile Version gewartet werden, die neuer als die aktuell installierte Beta ist. + + Add New Ignore Pattern + Neues Ignorieren-Muster hinzufügen - - Change update channel - Update-Kanal ändern + + Allow Deletion + Löschen erlauben - - Cancel - Abbrechen + + Cannot write changes to "%1". + Konnte Änderungen nicht in "%1" schreiben. - - Zip Archives - Zip-Archive + + Could not open file + Datei konnte nicht geöffnet werden - - Debug Archive Created - Debug-Archiv erstellt + Files or folders matching a pattern will not be synchronized. + +Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. + Dateien oder Ordner, die diesem Muster entsprechen, werden nicht synchronisiert. + +Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn diese das Löschen eines Ordners verhindern würden. Dies ist für Metadaten nützlich. - - Debug archive is created at %1 - Debug-Archiv erstellt in %1 + + Files or folders that match this pattern will not be synchronized. + +Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. + Dateien oder Ordner, die diesem Muster entsprechen, werden nicht synchronisiert. + +Objekte, die gelöscht werden dürfen, werden gelöscht, wenn sie das Löschen eines Ordners verhindern würden. Dies ist nützlich für Metadaten. - - - OCC::GetOrCreatePublicLinkShare - - Password for share required - Passwort für die Freigabe erforderlich + + Ignore Pattern + Muster ignorieren - - Please enter a password for your link share: - Bitte Passwort für die Link-Freigabe eingeben: + + Pattern + Muster - - Sharing error - Fehler beim Teilen + + Remove + Entfernen - - Could not retrieve or create the public link share. Error: - -%1 - Der Link für das öffentliche Teilen konnte nicht erstellt oder empfangen werden. Fehler: - -%1 + + Remove all + Alle entfernen - - - OCC::HttpCredentialsGui + + + OCC::InvalidFilenameDialog - - Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - Bitte %1 Passwort:<br><br>Benutzername: %2<br>Konto: %3<br>eingeben + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + Die Datei kann nicht umbenannt werden, da eine Datei mit demselben Namen bereits auf dem Server existiert. Bitte wählen Sie einen anderen Namen. - - Reading from keychain failed with error: "%1" - Lesen vom Schlüsselbund fehlgeschlagen mit Fehler: "%1" + + Checking rename permissions … + Prüfe Umbenennungs-Rechte … - - Enter Password - Passwort eingeben + + Could not rename local file. %1 + Lokale Datei konnte nicht umbenannt werden. %1 - - <a href="%1">Click here</a> to request an app password from the web interface. - <a href="%1">Hier klicken</a>, um von der Web-Oberfläche ein App-Passwort zu erhalten. + + Invalid filename + Ungültiger Dateiname - - - OCC::IgnoreListEditor - - Ignored Files Editor - Editor für ignorierte Dateien + + Please enter a new name for the file: + Bitte geben Sie einen neuen Namen für die Datei ein: - - Global Ignore Settings - Globale Ignorier-Einstellungen + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + Die Datei "%1" konnte nicht synchronisiert werden, da der Name Zeichen enthält, die auf diesem System nicht zulässig sind. - - Sync hidden files - Synchronisiere versteckte Dateien + + The file could not be synced because it contains characters which are not allowed on this system. + Die Datei konnte nicht synchronisiert werden, da der Name Zeichen enthält, die auf diesem System nicht zulässig sind. - - Files Ignored by Patterns - Nach Muster ignorierte Dateien + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + Die folgenden Zeichen sind auf dem System nicht erlaubt: * " | & ? , ; : \ / ~ < > Leerzeichen am Anfang/Ende + + + OCC::LegalNotice - - This entry is provided by the system at "%1" and cannot be modified in this view. - Dieser Eintrag wird vom System auf "%1" bereitgestellt und kann in dieser Ansicht nicht geändert werden. + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - - - OCC::IgnoreListTableWidget - - Pattern - Muster + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + <p>Lizensiert unter der GNU General Public License (GPL) Version 2.0 oder jeder neueren Version.</p> - - Allow Deletion - Löschen erlauben + Legal notice + Impressum + + + OCC::LogBrowser - - Add - Hinzufügen + + Enable logging to temporary folder + Protokollierung in temporären Ordner aktivieren - - Remove - Entfernen + + Log Output + Protokoll-Ausgabe - - Remove all - Alle entfernen + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. +Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. +If enabled, logs will be written to %1 + Der Client kann Debug-Protokolle in einen temporären Ordner schreiben. Diese Protokolle sind sehr hilfreich bei der Diagnose von Problemen. +Da die Protokolldateien sehr groß werden können, erstellt der Client für jeden Synchronisierungslauf eine neue Datei und komprimiert ältere. Außerdem werden die Protokolldateien nach ein paar Stunden gelöscht, um nicht zu viel Speicherplatz zu verbrauchen. +Wenn aktiviert, werden die Protokolle nach %1 geschrieben. - Files or folders matching a pattern will not be synchronized. - -Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Dateien oder Ordner, die diesem Muster entsprechen, werden nicht synchronisiert. - -Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn diese das Löschen eines Ordners verhindern würden. Dies ist für Metadaten nützlich. + + This setting persists across client restarts. +Note that using any logging command line options will override this setting. + Diese Einstellung bleibt über Client-Neustarts hinweg bestehen. +Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollierung diese Einstellung außer Kraft setzt. + + + OCC::Logger - - Files or folders that match this pattern will not be synchronized. - -Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + <nobr>Datei "%1"<br/>kann nicht zum Schreiben geöffnet werden.<br/><br/>Die Protokolldatei kann <b>nicht</b> gespeichert werden!</nobr> + + + OCC::NSISUpdater - - Could not open file - Datei konnte nicht geöffnet werden + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + <p>Eine neue Version des %1 - Clients ist verfügbar, aber die Aktualisierung ist fehlgeschlagen.</p><p><b>%2</b> wurde heruntergeladen. Die installierte Version ist %3. Wenn Sie Neustart und Aktualisieren bestätigen, wird Ihr Computer möglicherweise neu gestartet, um die Installation abzuschließen.</p> - - Cannot write changes to "%1". - Konnte Änderungen nicht in "%1" schreiben. + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + <p>Eine neue Version des %1 - Clients ist verfügbar.</p><p><b>%2</b> steht zum Herunterladen bereit. Die installierte Version ist %3.</p> - - Ignore Pattern - + + Ask again later + Versuchen Sie es später erneut - - Add New Ignore Pattern - + + Get update + Aktualisierung durchführen - Add Ignore Pattern - Ignoriermuster hinzufügen + + New Version Available + Eine neue Version ist verfügbar - Add a new ignore pattern: - Neues Ignoriermuster hinzufügen + + Restart and update + Neustarten und aktualisieren - - - OCC::InvalidFilenameDialog - - Invalid filename - Ungültiger Dateiname + + Skip this time + Dieses Mal überspringen - - The file could not be synced because it contains characters which are not allowed on this system. - Die Datei konnte nicht synchronisiert werden, da der Name Zeichen enthält, die auf diesem System nicht zulässig sind. + + Update Failed + Aktualisierung fehlgeschlagen - - Error - Fehler + + Update manually + Manuell aktualisieren + + + OCC::NetworkSettings - - Please enter a new name for the file: - Bitte geben Sie einen neuen Namen für die Datei ein: + + Download Bandwidth + Download-Bandbreite - - New filename - Neuer Dateiname + + Host + Host - - Rename file - Datei umbenennen + + Hostname of proxy server + Hostname des Proxy-Servers - - The file "%1" could not be synced because the name contains characters which are not allowed on this system. - Die Datei "%1" konnte nicht synchronisiert werden, da der Name Zeichen enthält, die auf diesem System nicht zulässig sind. + + HTTP(S) proxy + HTTP(S)-Proxy - - The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - Die folgenden Zeichen sind auf dem System nicht erlaubt: * " | & ? , ; : \ / ~ < > Leerzeichen am Anfang/Ende + + KBytes/s + KBytes/s - - Checking rename permissions … - Prüfe Umbenennungs-Rechte … + + Limit automatically + Automatisch begrenzen - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Sie haben nicht die Berechtigung, diese Datei umzubenennen. Bitte wenden Sie sich an den Autor der Datei, um sie umzubenennen. + + Limit to + Begrenzen auf - - Failed to fetch permissions with error %1 - Konnte Rechte nicht abrufen. Fehler %1 + + Limit to 3/4 of estimated bandwidth + Auf 3/4 der geschätzten Bandbreite begrenzen - - Filename contains leading and trailing spaces. - Dateiname enthält Leerzeichen am Anfang und am Ende. + + Manually specify proxy + Proxy manuell festlegen - - Filename contains leading spaces. - Dateiname enthält Leerzeichen am Anfang. + + No limit + Keine Begrenzung - - Filename contains trailing spaces. - Dateiname enthält Leerzeichen am Ende. + + No proxy + Kein Proxy - - Use invalid name - Ungültigen Namen verwenden + + Note: proxy settings have no effects for accounts on localhost + Hinweis: Proxy-Einstellungen haben keine Auswirkungen für Konten auf localhost - - Filename contains illegal characters: %1 - Dateiname enthält unzulässige Zeichen: %1 + + Password for proxy server + Passwort für den Proxy-Server - - Could not rename file. Please make sure you are connected to the server. - Datei konnte nicht umbenannt werden. Bitte stellen Sie sicher, dass Sie mit dem Server verbunden sind. + + Proxy server requires authentication + Proxy-Server erfordert eine Authentifizierung - - Cannot rename file because a file with the same name does already exist on the server. Please pick another name. - Die Datei kann nicht umbenannt werden, da eine Datei mit demselben Namen bereits auf dem Server existiert. Bitte wählen Sie einen anderen Namen. + + Proxy Settings + Proxy-Einstellungen - - Could not rename local file. %1 - Lokale Datei konnte nicht umbenannt werden. %1 + + SOCKS5 proxy + SOCKS5-Proxy - - - OCC::LegalNotice - - - Legal notice - Impressum + Specify proxy manually as + Proxy manuell definieren als - - Close - Schliessen + + Upload Bandwidth + Upload-Bandbreite - - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + + Use system proxy + System-Proxy verwenden - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> - <p>Lizensiert unter der GNU General Public License (GPL) Version 2.0 oder jeder neueren Version.</p> + + Username for proxy server + Benutzername für den Proxy-Server - - - OCC::LogBrowser + + + OCC::OAuth - - Log Output - Protokoll-Ausgabe + <h1>Login Error</h1><p>%1</p> + <h1>Anmeldefehler </h1><p>%1</p> - - The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. -Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. -If enabled, logs will be written to %1 - Der Client kann Debug-Protokolle in einen temporären Ordner schreiben. Diese Protokolle sind sehr hilfreich bei der Diagnose von Problemen. -Da die Protokolldateien sehr groß werden können, erstellt der Client für jeden Synchronisierungslauf eine neue Datei und komprimiert ältere. Außerdem werden die Protokolldateien nach ein paar Stunden gelöscht, um nicht zu viel Speicherplatz zu verbrauchen. -Wenn aktiviert, werden die Protokolle nach %1 geschrieben. + <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> + <h1>Falsches Konto</h1><p>Sie haben sich mit dem Konto <em>%1</em> angemeldet, müssen aber das Konto <em>%2</em> verwenden.<br>Bitte melden von %3 in einem anderen Tab abmelden und <a href='%4'>klicken Sie hier</a> um sich mit %2 anzumelden</p> - - Enable logging to temporary folder - Protokollierung in temporären Ordner aktivieren + Empty JSON from OAuth2 redirect + Leeres JSON aus OAuth2-Redirect + + + OCC::OCUpdater - - This setting persists across client restarts. -Note that using any logging command line options will override this setting. - Diese Einstellung bleibt über Client-Neustarts hinweg bestehen. -Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollierung diese Einstellung außer Kraft setzt. + + %1 available. Restart application to start the update. + %1-Version verfügbar. Anwendung zum Start der Aktualisierung neustarten. - - Open folder - Ordner öffnen + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + Eine neue Aktualisierung für %1 wird installiert. Während des Aktualisierungsvorgangs werden Sie eventuell aufgefordert, zusätzliche Berechtigungen zu gewähren. Ihr Computer wird möglicherweise neu gestartet, um die Installation abzuschließen. - - - OCC::Logger - - Error - Fehler + + Checking update server … + Aktualisierungsserver wird überprüft … - - <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> - <nobr>Datei "%1"<br/>kann nicht zum Schreiben geöffnet werden.<br/><br/>Die Protokolldatei kann <b>nicht</b> gespeichert werden!</nobr> + + Could not check for new updates. + Auf neue Aktualisierungen kann nicht geprüft werden. - - - OCC::NSISUpdater - - New Version Available - Eine neue Version ist verfügbar + + Could not download update. Please open %1 to download the update manually. + Aktualisierung kann nicht herunter geladen werden. Bitte öffnen Sie %1 um die Aktualisierung manuell herunterzuladen. - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - <p>Eine neue Version des %1 - Clients ist verfügbar.</p><p><b>%2</b> steht zum Herunterladen bereit. Die installierte Version ist %3.</p> + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + Aktualisierung kann nicht herunter geladen werden. Bitte öffnen Sie <a href='%1'>%1</a>, um die Aktualisierung manuell herunterzuladen. - - Skip this time - Dieses Mal überspringen + + Downloading %1. Please wait … + Lade %1 herunter. Bitte warten … - - Get update - Aktualisierung durchführen + + New %1 is available. Please open %2 to download the update. + Neue Version von %1 vorhanden. Bitte öffnen Sie %2 um die Aktualisierung herunterzuladen. - - Update Failed - Aktualisierung fehlgeschlagen + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + Neue Version von %1 vorhanden. Bitte öffnen Sie <a href='%2'>%2</a> um die Aktualisierung herunterzuladen. - - <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> - <p>Eine neue Version des %1 - Clients ist verfügbar, aber die Aktualisierung ist fehlgeschlagen.</p><p><b>%2</b> wurde heruntergeladen. Die installierte Version ist %3. Wenn Sie Neustart und Aktualisieren bestätigen, wird Ihr Computer möglicherweise neu gestartet, um die Installation abzuschließen.</p> + + New %1 update ready + Neue %1 Aktualisierung verfügbar - - Ask again later - Versuchen Sie es später erneut + + No updates available. Your installation is at the latest version. + Keine Aktualisierungen verfügbar. Ihre Installation ist die aktuelle Version. - - Restart and update - Neustarten und aktualisieren + + Update Check + Aktualitätsprüfung - - Update manually - Manuell aktualisieren + + Update status is unknown: Did not check for new updates. + Aktualisierungsstatus unbekannt: Auf neue Aktualisierungen wurde nicht geprüft. - - - OCC::NetworkSettings + + + OCC::OwncloudAdvancedSetupPage - - Proxy Settings - Proxy-Einstellungen + + (%1) + (%1) - No Proxy - Kein Proxy + + %1 folder "%2" is synced to local folder "%3" + %1 Ordner "%2" wird mit dem lokalen Ordner "%3" synchronisiert - - No proxy - Kein Proxy + + %1 free space + %1 freier Platz - - Use system proxy - System-Proxy verwenden + + Connect + Verbinden - Specify proxy manually as - Proxy manuell definieren als + + Local Sync Folder + Lokaler Ordner für die Synchronisierung - - Manually specify proxy - Proxy manuell festlegen + + Sync the folder "%1" + Ordner "%1" synchronisieren - - Host - Host + + There isn't enough free space in the local folder! + Nicht genug freier Platz im lokalen Ordner vorhanden! - - Proxy server requires authentication - Proxy-Server erfordert eine Authentifizierung + + Use &virtual files instead of downloading content immediately %1 + &Virtuelle Dateien verwenden, anstatt den Inhalt sofort herunterzuladen %1 - - Note: proxy settings have no effects for accounts on localhost - Hinweis: Proxy-Einstellungen haben keine Auswirkungen für Konten auf localhost + + Warning: The local folder is not empty. Pick a resolution! + Achtung: Der lokale Ordner ist nicht leer. Bitte wählen Sie eine entsprechende Lösung! + + + OCC::OwncloudConnectionMethodDialog - - Download Bandwidth - Download-Bandbreite + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Sichere Verbindung zur Serveradresse <em>%1</em> fehlgeschlagen. Wie wollen Sie fortfahren?</p></body></html> - - - No limit - Keine Begrenzung + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Verbindung mit der angegebenen sicheren Serveradresse fehlgeschlagen. Wie möchten Sie fortfahren?</p></body></html> - - - Limit to 3/4 of estimated bandwidth - Auf 3/4 der geschätzten Bandbreite begrenzen + + Configure client-side TLS certificate + Clientseitiges TLS-Zertifikat konfigurieren. - - - Limit automatically - Automatisch begrenzen + + Connection failed + Verbindung fehlgeschlagen - - - Limit to - Begrenzen auf + + Retry unencrypted over HTTP (insecure) + Unverschlüsselt über HTTP versuchen (unsicher) - - - KBytes/s - KBytes/s + + Select a different URL + Andere URL wählen + + + OCC::OwncloudHttpCredsPage - - Upload Bandwidth - Upload-Bandbreite + + &Email + &E-Mail - - Hostname of proxy server - Hostname des Proxy-Servers + + Connect to %1 + Verbinden mit %1 - - Username for proxy server - Benutzername für den Proxy-Server + + Enter user credentials + Geben Sie Ihre Benutzer-Anmeldeinformationen ein + + + OCC::OwncloudOAuthCredsPage - - Password for proxy server - Passwort für den Proxy-Server + Login in your browser + Melden Sie sich in Ihrem Browser an + + + OCC::OwncloudPropagator - - HTTP(S) proxy - HTTP(S)-Proxy + Error with the metadata. Getting unexpected metadata format. + Fehler bei den Metadaten. Unerwartetes Metadatenformat erhalten. - - SOCKS5 proxy - SOCKS5-Proxy + + Impossible to get modification time for file in conflict %1 + Es ist nicht möglich, die Änderungszeit für die in Konflikt stehende Datei abzurufen %1 - - - OCC::OAuth + + + OCC::OwncloudSetupPage - Error returned from the server: <em>%1</em> - Fehler vom Server zurückgegeben: <em>%1</em> + + &Next > + &Weiter > - There was an error accessing the "token" endpoint: <br><em>%1</em> - Fehler beim Zugriff auf den "Token"-Endpunkt: <br><em>%1</em> + + Could not load certificate. Maybe wrong password? + Das Zertifikat konnte nicht geladen werden. Vielleicht ein falsches Passwort? - Empty JSON from OAuth2 redirect - Leeres JSON aus OAuth2-Redirect + + Server address does not seem to be valid + Serveradresse scheint nicht gültig zu sein - Could not parse the JSON returned from the server: <br><em>%1</em> - Die JSON-Antwort des Servers konnte nicht geparst werden: <br><em>%1</em> + + The link to your %1 web interface when you open it in the browser. + Der Link zu Ihrer %1 Webseite, wenn Sie diese im Browser öffnen. - - The reply from the server did not contain all expected fields - Die Antwort des Servers hat nicht alle erwarteten Felder beinhaltet - - - <h1>Login Error</h1><p>%1</p> - <h1>Anmeldefehler </h1><p>%1</p> - - - <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> - <h1>Falsches Konto</h1><p>Sie haben sich mit dem Konto <em>%1</em> angemeldet, müssen aber das Konto <em>%2</em> verwenden.<br>Bitte melden von %3 in einem anderen Tab abmelden und <a href='%4'>klicken Sie hier</a> um sich mit %2 anzumelden</p> - - - - OCC::OCUpdater - - - New %1 update ready - Neue %1 Aktualisierung verfügbar - - - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - Eine neue Aktualisierung für %1 wird installiert. Während des Aktualisierungsvorgangs werden Sie eventuell aufgefordert, zusätzliche Berechtigungen zu gewähren. Ihr Computer wird möglicherweise neu gestartet, um die Installation abzuschließen. - - - - Downloading %1. Please wait … - Lade %1 herunter. Bitte warten … - - - - %1 available. Restart application to start the update. - %1-Version verfügbar. Anwendung zum Start der Aktualisierung neustarten. - - - - Could not download update. Please open <a href='%1'>%1</a> to download the update manually. - Aktualisierung kann nicht herunter geladen werden. Bitte öffnen Sie <a href='%1'>%1</a>, um die Aktualisierung manuell herunterzuladen. - - - - Could not download update. Please open %1 to download the update manually. - Aktualisierung kann nicht herunter geladen werden. Bitte öffnen Sie %1 um die Aktualisierung manuell herunterzuladen. - - - - Could not check for new updates. - Auf neue Aktualisierungen kann nicht geprüft werden. - - - - New %1 is available. Please open <a href='%2'>%2</a> to download the update. - Neue Version von %1 vorhanden. Bitte öffnen Sie <a href='%2'>%2</a> um die Aktualisierung herunterzuladen. - - - - New %1 is available. Please open %2 to download the update. - Neue Version von %1 vorhanden. Bitte öffnen Sie %2 um die Aktualisierung herunterzuladen. - - - - Checking update server … - Aktualisierungsserver wird überprüft … - - - - Update status is unknown: Did not check for new updates. - Aktualisierungsstatus unbekannt: Auf neue Aktualisierungen wurde nicht geprüft. - - - - No updates available. Your installation is at the latest version. - Keine Aktualisierungen verfügbar. Ihre Installation ist die aktuelle Version. - - - - Update Check - Aktualitätsprüfung - - - - OCC::OwncloudAdvancedSetupPage - - - Connect - Verbinden - - - - - Use &virtual files instead of downloading content immediately %1 - &Virtuelle Dateien verwenden, anstatt den Inhalt sofort herunterzuladen %1 - - - - - (experimental) - (experimentell) - - - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Virtuelle Dateien werden für die Wurzel von Windows-Partitionen als lokaler Ordner nicht unterstützt. Bitte wählen Sie einen gültigen Unterordner unter dem Laufwerksbuchstaben. - - - - %1 folder "%2" is synced to local folder "%3" - %1 Ordner "%2" wird mit dem lokalen Ordner "%3" synchronisiert - - - - Sync the folder "%1" - Ordner "%1" synchronisieren - - - - Warning: The local folder is not empty. Pick a resolution! - Achtung: Der lokale Ordner ist nicht leer. Bitte wählen Sie eine entsprechende Lösung! - - - - %1 free space - %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB - %1 freier Platz - - - - Virtual files are not available for the selected folder - Virtuelle Dateien sind für den ausgewählten Ordner nicht verfügbar - - - - Local Sync Folder - Lokaler Ordner für die Synchronisierung - - - - - (%1) - (%1) - - - - There isn't enough free space in the local folder! - Nicht genug freier Platz im lokalen Ordner vorhanden! - - - - OCC::OwncloudConnectionMethodDialog - - - Connection failed - Verbindung fehlgeschlagen - - - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Verbindung mit der angegebenen sicheren Serveradresse fehlgeschlagen. Wie möchten Sie fortfahren?</p></body></html> - - - - Select a different URL - Andere URL wählen - - - - Retry unencrypted over HTTP (insecure) - Unverschlüsselt über HTTP versuchen (unsicher) - - - - Configure client-side TLS certificate - Clientseitiges TLS-Zertifikat konfigurieren. - - - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Sichere Verbindung zur Serveradresse <em>%1</em> fehlgeschlagen. Wie wollen Sie fortfahren?</p></body></html> - - - - OCC::OwncloudHttpCredsPage - - - &Email - &E-Mail - - - - Connect to %1 - Verbinden mit %1 - - - - Enter user credentials - Geben Sie Ihre Benutzer-Anmeldeinformationen ein - - - - OCC::OwncloudOAuthCredsPage - - Connect to %1 - Verbinden mit %1 - - - Login in your browser - Melden Sie sich in Ihrem Browser an - - - - OCC::OwncloudPropagator - - Error with the metadata. Getting unexpected metadata format. - Fehler bei den Metadaten. Unerwartetes Metadatenformat erhalten. - - - - - Impossible to get modification time for file in conflict %1 - Es ist nicht möglich, die Änderungszeit für die in Konflikt stehende Datei abzurufen %1 - - - - OCC::OwncloudSetupPage - - - The link to your %1 web interface when you open it in the browser. - %1 will be replaced with the application name - Der Link zu Ihrer %1 Webseite, wenn Sie diese im Browser öffnen. - - - - &Next > - &Weiter > - - - - Server address does not seem to be valid - Serveradresse scheint nicht gültig zu sein - - - - Could not load certificate. Maybe wrong password? - Das Zertifikat konnte nicht geladen werden. Vielleicht ein falsches Passwort? - - - + + OCC::OwncloudSetupWizard - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - <font color="green">Erfolgreich mit %1 verbunden: %2 Version %3 (%4)</font><br/><br/> - - - - Invalid URL - Ungültige URL + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + <font color="green"><b>Lokaler Sync-Ordner %1 erfolgreich erstellt!</b></font> - - Failed to connect to %1 at %2:<br/>%3 - Die Verbindung zu %1 auf %2 konnte nicht hergestellt werden: <br/>%3 + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + <font color="green">Erfolgreich mit %1 verbunden: %2 Version %3 (%4)</font><br/><br/> - - Timeout while trying to connect to %1 at %2. - Zeitüberschreitung beim Verbindungsversuch mit %1 unter %2. + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + <p><font color="red">Die Erstellung des entfernten Ordners ist fehlgeschlagen, vermutlich sind die angegebenen Zugangsdaten falsch.</font><br/>Bitte gehen Sie zurück und überprüfen Sie Ihre Zugangsdaten.</p> - - Trying to connect to %1 at %2 … - Verbindungsversuch mit %1 unter %2 … + + A sync connection from %1 to remote directory %2 was set up. + Eine Synchronisierungsverbindung für Ordner %1 zum entfernten Ordner %2 wurde eingerichtet. - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - Die Authentifizierungs-Anfrage an den Server wurde weitergeleitet an "%1". Diese Adresse ist ungültig, der Server ist falsch konfiguriert. + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + Der Ordner kann nicht entfernt und gesichert werden, da der Ordner oder einer seiner Dateien in einem anderen Programm geöffnet ist. Bitte schließen Sie den Ordner oder die Datei und versuchen Sie es erneut oder beenden Sie die Installation. - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Zugang vom Server nicht erlaubt. <a href="%1">Klicken Sie hier</a> zum Zugriff auf den Dienst mithilfe Ihres Browsers, so dass Sie sicherstellen können, dass Ihr Zugang ordnungsgemäß funktioniert. + + Connection to %1 could not be established. Please check again. + Die Verbindung zu %1 konnte nicht hergestellt werden. Bitte prüfen Sie die Einstellungen erneut. - - There was an invalid response to an authenticated WebDAV request - Ungültige Antwort auf eine WebDAV-Authentifizeriungs-Anfrage + + Could not create local folder %1 + Der lokale Ordner %1 konnte nicht erstellt werden - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> - Lokaler Sync-Ordner %1 existiert bereits, aktiviere Synchronistation.<br/><br/> + + creating folder on Nextcloud: %1 + Erstelle Ordner auf Nextcloud: %1 - - Creating local sync folder %1 … - Lokaler Ordner %1 für die Synchronisierung wird erstellt … + + Creating local sync folder %1 … + Lokaler Ordner %1 für die Synchronisierung wird erstellt … - - OK - OK + + Error: %1 + Fehler: %1 - - failed. - fehlgeschlagen. + + Failed to connect to %1 at %2:<br/>%3 + Die Verbindung zu %1 auf %2 konnte nicht hergestellt werden: <br/>%3 - - Could not create local folder %1 - Der lokale Ordner %1 konnte nicht erstellt werden + + failed. + fehlgeschlagen. - - No remote folder specified! - Kein entfernter Ordner angegeben! + + Folder rename failed + Ordner umbenennen fehlgeschlagen. - - Error: %1 - Fehler: %1 + + Invalid URL + Ungültige URL - - creating folder on Nextcloud: %1 - Erstelle Ordner auf Nextcloud: %1 + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + Lokaler Sync-Ordner %1 existiert bereits, aktiviere Synchronistation.<br/><br/> - - Remote folder %1 created successfully. - Entfernter Ordner %1 erfolgreich erstellt. + + No remote folder specified! + Kein entfernter Ordner angegeben! - - The remote folder %1 already exists. Connecting it for syncing. - Der Ordner %1 ist auf dem Server bereits vorhanden. Verbinde zur Synchronisierung. + + OK + OK - - - The folder creation resulted in HTTP error code %1 - Das Erstellen des Ordners erzeugte den HTTP-Fehler-Code %1 + + Remote folder %1 created successfully. + Entfernter Ordner %1 erfolgreich erstellt. - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - Die Erstellung des entfernten Ordners ist fehlgeschlagen, weil die angegebenen Zugangsdaten falsch sind. <br/>Bitte gehen Sie zurück und überprüfen Sie die Zugangsdaten.</p> + + Remote folder %1 creation failed with error <tt>%2</tt>. + Entfernter Ordner %1 konnte mit folgendem Fehler nicht erstellt werden: <tt>%2</tt>. - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - <p><font color="red">Die Erstellung des entfernten Ordners ist fehlgeschlagen, vermutlich sind die angegebenen Zugangsdaten falsch.</font><br/>Bitte gehen Sie zurück und überprüfen Sie Ihre Zugangsdaten.</p> + + Successfully connected to %1! + Erfolgreich verbunden mit %1! - - - Remote folder %1 creation failed with error <tt>%2</tt>. - Entfernter Ordner %1 konnte mit folgendem Fehler nicht erstellt werden: <tt>%2</tt>. + + The folder creation resulted in HTTP error code %1 + Das Erstellen des Ordners erzeugte den HTTP-Fehler-Code %1 - - A sync connection from %1 to remote directory %2 was set up. - Eine Synchronisierungsverbindung für Ordner %1 zum entfernten Ordner %2 wurde eingerichtet. + + The remote folder %1 already exists. Connecting it for syncing. + Der Ordner %1 ist auf dem Server bereits vorhanden. Verbinde zur Synchronisierung. - - Successfully connected to %1! - Erfolgreich verbunden mit %1! + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + Die Erstellung des entfernten Ordners ist fehlgeschlagen, weil die angegebenen Zugangsdaten falsch sind. <br/>Bitte gehen Sie zurück und überprüfen Sie die Zugangsdaten.</p> - - Connection to %1 could not be established. Please check again. - Die Verbindung zu %1 konnte nicht hergestellt werden. Bitte prüfen Sie die Einstellungen erneut. + + Timeout while trying to connect to %1 at %2. + Zeitüberschreitung beim Verbindungsversuch mit %1 unter %2. - - Folder rename failed - Ordner umbenennen fehlgeschlagen. + + Trying to connect to %1 at %2 … + Verbindungsversuch mit %1 unter %2 … + + + OCC::OwncloudWizard - - Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - Der Ordner kann nicht entfernt und gesichert werden, da der Ordner oder einer seiner Dateien in einem anderen Programm geöffnet ist. Bitte schließen Sie den Ordner oder die Datei und versuchen Sie es erneut oder beenden Sie die Installation. + + Add %1 account + %1 Konto hinzufügen - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> - <font color="green"><b>Lokaler Sync-Ordner %1 erfolgreich erstellt!</b></font> + + Enable experimental feature? + Experimentelle Funktion aktivieren? - - - OCC::OwncloudWizard - - Add %1 account - %1 Konto hinzufügen + + Enable experimental placeholder mode + Experimentellen Platzhaltermodus aktivieren - - Skip folders configuration - Ordner-Konfiguration überspringen + + Skip folders configuration + Ordner-Konfiguration überspringen - - Cancel - Abbrechen + + Stay safe + Bleiben Sie sicher - - Enable experimental feature? - Experimentelle Funktion aktivieren? - - - - When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. Switching to this mode will abort any currently running synchronization. This is a new, experimental mode. If you decide to use it, please report any issues that come up. - Wenn der Modus "virtuelle Dateien" aktiviert ist, werden zunächst keine Dateien heruntergeladen. Stattdessen wird für jede Datei, die auf dem Server existiert, eine winzige "%1"-Datei erstellt. Der Inhalt kann heruntergeladen werden, indem diese Dateien ausgeführt werden oder indem deren Kontextmenü verwendet wird. + Wenn der Modus "virtuelle Dateien" aktiviert ist, werden zunächst keine Dateien heruntergeladen. Stattdessen wird für jede Datei, die auf dem Server existiert, eine winzige "%1"-Datei erstellt. Der Inhalt kann heruntergeladen werden, indem diese Dateien ausgeführt werden oder indem deren Kontextmenü verwendet wird. -Der Modus "Virtuelle Dateien" schließt sich mit der ausgewählten Synchronisierung gegenseitig aus. Derzeit nicht ausgewählte Ordner werden in reine Online-Ordner umgewandelt und Ihre Einstellungen für die selektive Synchronisierung werden zurückgesetzt. +Der Modus "Virtuelle Dateien" schließt sich mit der ausgewählten Synchronisierung gegenseitig aus. Derzeit nicht ausgewählte Ordner werden in reine Online-Ordner umgewandelt und Ihre Einstellungen für die selektive Synchronisierung werden zurückgesetzt. Wenn Sie in diesen Modus wechseln, wird eine aktuell laufende Synchronisierung abgebrochen. Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu verwenden, melden Sie bitte alle auftretenden Probleme. - - - Enable experimental placeholder mode - Experimentellen Platzhaltermodus aktivieren - - - - Stay safe - Bleiben Sie sicher - - - + + OCC::PasswordInputDialog - - Password for share required - Passwort für die Freigabe erforderlich - - - - Please enter a password for your share: - Bitte vergeben sie für die Freigabe ein Passwort: + + Please enter a password for your share: + Bitte vergeben sie für die Freigabe ein Passwort: - - + + OCC::PollJob - - Invalid JSON reply from the poll URL - Ungültige JSON-Antwort von der Poll-URL + + Invalid JSON reply from the poll URL + Ungültige JSON-Antwort von der Poll-URL - - + + OCC::ProcessDirectoryJob - - Symbolic links are not supported in syncing. - Symbolische Verknüpfungen werden bei der Synchronisierung nicht unterstützt. - - - - File is listed on the ignore list. - Die Datei ist in der Ignorierliste aufgeführt. - - - - File names ending with a period are not supported on this file system. - Dateinamen, die mit einem Punkt enden, werden von diesem Dateisystem nicht unterstützt. - - - - File names containing the character "%1" are not supported on this file system. - Dateinamen, welche das Zeichen "%1" enthalten, werden von diesem Dateisystem nicht unterstützt. + + Cannot sync due to invalid modification time + Synchronisierung wegen ungültiger Änderungszeit nicht möglich - - File name contains at least one invalid character - Der Dateiname enthält mindestens ein ungültiges Zeichen + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. + Problem der Groß- und Kleinschreibung: Serverdatei heruntergeladen und umbenannt, um Konflikte zu vermeiden. - - The file name is a reserved name on this file system. - Der Dateiname ist ein reservierter Name in diesem Dateisystem. + + Conflict when uploading a file. It's going to get removed! + Konflikt beim Hochladen einer Datei. Sie wird entfernt! - - Filename contains trailing spaces. - Dateiname enthält Leerzeichen am Ende. + + Conflict when uploading a folder. It's going to get cleared! + Konflikt beim Hochladen eines Ordners. Er wird gelöscht! - - Filename contains leading spaces. - Dateiname enthält Leerzeichen am Anfang. + + Conflict: Server version downloaded, local copy renamed and not uploaded. + Konflikt: Serverversion heruntergeladen, lokale Kopie umbenannt und nicht hochgeladen. - - Filename contains leading and trailing spaces. - Dateiname enthält Leerzeichen am Anfang und am Ende. + + Could not upload file, because it is open in "%1". + Datei konnte nicht hochgeladen werden, da sie in "%1" geöffnet ist. - - Filename is too long. - Der Dateiname ist zu lang. + + Error while deleting file record %1 from the database + Fehler beim Löschen des Dateisatzes %1 aus der Datenbank - - File/Folder is ignored because it's hidden. - Datei/Ordner wird ignoriert, weil sie unsichtbar ist. + + Error while reading the database + Fehler beim Lesen der Datenbank - - Stat failed. - Stat fehlgeschlagen. + + File has extension reserved for virtual files. + Die Endung der Datei ist für virtuelle Dateien reserviert. - - Conflict: Server version downloaded, local copy renamed and not uploaded. - Konflikt: Serverversion heruntergeladen, lokale Kopie umbenannt und nicht hochgeladen. + + file id + Datei-ID - - Case Clash Conflict: Server file downloaded and renamed to avoid clash. - Problem der Groß- und Kleinschreibung: Serverdatei heruntergeladen und umbenannt, um Konflikte zu vermeiden. + + File is listed on the ignore list. + Die Datei ist in der Ignorierliste aufgeführt. - - The filename cannot be encoded on your file system. - Der Dateiname kann auf Ihrem Dateisystem nicht entschlüsselt werden. + + File name contains at least one invalid character + Der Dateiname enthält mindestens ein ungültiges Zeichen - - The filename is blacklisted on the server. - Der Dateiname steht auf dem Server auf einer schwarzen Liste. + + File names containing the character "%1" are not supported on this file system. + Dateinamen, welche das Zeichen "%1" enthalten, werden von diesem Dateisystem nicht unterstützt. - - File has extension reserved for virtual files. - Die Endung der Datei ist für virtuelle Dateien reserviert. + + File names ending with a period are not supported on this file system. + Dateinamen, die mit einem Punkt enden, werden von diesem Dateisystem nicht unterstützt. - - size - Größe + + File/Folder is ignored because it's hidden. + Datei/Ordner wird ignoriert, weil sie unsichtbar ist. - - permission - Berechtigung + + Filename is too long. + Der Dateiname ist zu lang. - - file id - Datei-ID + + Ignored because of the "choose what to sync" blacklist + Ignoriert wegen der "Choose what to sync"-Blacklist - - Server reported no %1 - Server meldet keine %1 + + Moved to invalid target, restoring + Auf ungültiges Ziel verschoben, wiederherstellen. - - Cannot sync due to invalid modification time - Synchronisierung wegen ungültiger Änderungszeit nicht möglich + + Not allowed because you don't have permission to add files in that folder + Nicht erlaubt, da Sie keine Berechtigung zum Hinzufügen von Dateien in diesen Ordner haben. - - Could not upload file, because it is open in "%1". - Datei konnte nicht hochgeladen werden, da sie in "%1" geöffnet ist. + + Not allowed because you don't have permission to add subfolders to that folder + Nicht erlaubt, da Sie nicht die Berechtigung haben, Unterordner zu diesem Ordner hinzuzufügen. - - Error while deleting file record %1 from the database - Fehler beim Löschen des Dateisatzes %1 aus der Datenbank + + Not allowed to remove, restoring + Entfernen nicht erlaubt, wiederherstellen. - - Conflict when uploading a folder. It's going to get cleared! - Konflikt beim Hochladen eines Ordners. Er wird gelöscht! + + Not allowed to upload this file because it is read-only on the server, restoring + Das Hochladen dieser Datei ist nicht erlaubt, da die Datei auf dem Server schreibgeschützt ist. Wiederherstellen. - - Conflict when uploading a file. It's going to get removed! - Konflikt beim Hochladen einer Datei. Sie wird entfernt! + + permission + Berechtigung - - - Moved to invalid target, restoring - Auf ungültiges Ziel verschoben, wiederherstellen. + + Server replied with an error while reading directory "%1" : %2 + Der Server hat während des Lesens des Verzeichnisses "%1" mit einem Fehler geantwortet: %2 - - Ignored because of the "choose what to sync" blacklist - Ignoriert wegen der "Choose what to sync"-Blacklist + + Server reported no %1 + Server meldet keine %1 - - - Not allowed because you don't have permission to add subfolders to that folder - Nicht erlaubt, da Sie nicht die Berechtigung haben, Unterordner zu diesem Ordner hinzuzufügen. + + size + Größe - - Not allowed because you don't have permission to add files in that folder - Nicht erlaubt, da Sie keine Berechtigung zum Hinzufügen von Dateien in diesen Ordner haben. + + Stat failed. + Stat fehlgeschlagen. - - Not allowed to upload this file because it is read-only on the server, restoring - Das Hochladen dieser Datei ist nicht erlaubt, da die Datei auf dem Server schreibgeschützt ist. Wiederherstellen. + + Symbolic links are not supported in syncing. + Symbolische Verknüpfungen werden bei der Synchronisierung nicht unterstützt. - - Not allowed to remove, restoring - Entfernen nicht erlaubt, wiederherstellen. + + The file name is a reserved name on this file system. + Der Dateiname ist ein reservierter Name in diesem Dateisystem. - - Error while reading the database - Fehler beim Lesen der Datenbank + + The filename cannot be encoded on your file system. + Der Dateiname kann auf Ihrem Dateisystem nicht entschlüsselt werden. - - Server replied with an error while reading directory "%1" : %2 - Der Server hat während des Lesens des Verzeichnisses "%1" mit einem Fehler geantwortet: %2 + + The filename is blacklisted on the server. + Der Dateiname steht auf dem Server auf einer schwarzen Liste. - - + + OCC::PropagateDirectory - - could not delete file %1 from local DB - Datei %1 konnte nicht aus lokaler Datenbank gelöscht werden + + could not delete file %1 from local DB + Datei %1 konnte nicht aus lokaler Datenbank gelöscht werden - - Error updating metadata due to invalid modification time - Fehler beim Aktualisieren der Metadaten aufgrund einer ungültigen Änderungszeit + + Error updating metadata due to invalid modification time + Fehler beim Aktualisieren der Metadaten aufgrund einer ungültigen Änderungszeit - - - The folder %1 cannot be made read-only: %2 - Der Ordner %1 kann nicht schreibgeschützt werden: %2 + + File is currently in use + Datei ist aktuell in Benutzung - - Error updating metadata: %1 - Fehler beim Aktualisieren der Metadaten: %1 + + The folder %1 cannot be made read-only: %2 + Der Ordner %1 kann nicht schreibgeschützt werden: %2 - - - File is currently in use - Datei ist aktuell in Benutzung - - - + + OCC::PropagateDownloadFile - - could not get file %1 from local DB - Datei %1 konnte nicht aus der lokalen Datenbank abgerufen werden - - - - File %1 cannot be downloaded because encryption information is missing. - Die Datei %1 kann nicht heruntergeladen werden, da die Verschlüsselungsinformationen fehlen. + + Could not delete file record %1 from local DB + Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden - - - File has changed since discovery - Datei ist seit der Entdeckung geändert worden + + could not get file %1 from local DB + Datei %1 konnte nicht aus der lokalen Datenbank abgerufen werden - - - Could not delete file record %1 from local DB - Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden + + File %1 can not be downloaded because of a local file name clash! + Die Datei %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht herunter geladen werden! - - File %1 can not be downloaded because of a local file name clash! - Die Datei %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht herunter geladen werden! + + File %1 cannot be downloaded because encryption information is missing. + Die Datei %1 kann nicht heruntergeladen werden, da die Verschlüsselungsinformationen fehlen. - - The download would reduce free local disk space below the limit - Das Herunterladen würde den lokalen freien Speicherplatz unter die Grenze reduzieren + + File %1 downloaded but it resulted in a local file name clash! + Datei %1 heruntergeladen, aber dies führte zu einem lokalen Dateinamenskonflikt! - - Free space on disk is less than %1 - Der freie Speicher auf der Festplatte ist weniger als %1 + + File %1 has invalid modified time reported by server. Do not save it. + Datei %1 hat eine ungültige Änderungszeit, die vom Server gemeldet wurde. Speichern Sie sie nicht. - - File was deleted from server - Die Datei wurde vom Server gelöscht + + File has changed since discovery + Datei ist seit der Entdeckung geändert worden - - The file could not be downloaded completely. - Die Datei konnte nicht vollständig heruntergeladen werden. + + File was deleted from server + Die Datei wurde vom Server gelöscht - - The downloaded file is empty, but the server said it should have been %1. - Die heruntergeladene Datei ist leer, obwohl der Server %1 als Größe übermittelt hat. + + Free space on disk is less than %1 + Der freie Speicher auf der Festplatte ist weniger als %1 - - - File %1 has invalid modified time reported by server. Do not save it. - Datei %1 hat eine ungültige Änderungszeit, die vom Server gemeldet wurde. Speichern Sie sie nicht. + + The download would reduce free local disk space below the limit + Das Herunterladen würde den lokalen freien Speicherplatz unter die Grenze reduzieren - - File %1 downloaded but it resulted in a local file name clash! - Datei %1 heruntergeladen, aber dies führte zu einem lokalen Dateinamenskonflikt! + + The downloaded file is empty, but the server said it should have been %1. + Die heruntergeladene Datei ist leer, obwohl der Server %1 als Größe übermittelt hat. - - Error updating metadata: %1 - Fehler beim Aktualisieren der Metadaten: %1 + + The file could not be downloaded completely. + Die Datei konnte nicht vollständig heruntergeladen werden. - - - The file %1 is currently in use - Die Datei %1 ist aktuell in Benutzung - - - + + OCC::PropagateItemJob - - ; Restoration Failed: %1 - ; Wiederherstellung fehlgeschlagen: %1 + + ; Restoration Failed: %1 + ; Wiederherstellung fehlgeschlagen: %1 - - A file or folder was removed from a read only share, but restoring failed: %1 - Eine Datei oder ein Ordner wurde von einer Nur-Lese-Freigabe wiederhergestellt, aber die Wiederherstellung ist mit folgendem Fehler fehlgeschlagen: %1 + + A file or folder was removed from a read only share, but restoring failed: %1 + Eine Datei oder ein Ordner wurde von einer Nur-Lese-Freigabe wiederhergestellt, aber die Wiederherstellung ist mit folgendem Fehler fehlgeschlagen: %1 - - + + OCC::PropagateLocalMkdir - - could not delete file %1, error: %2 - Konnte Datei %1 nicht löschen. Fehler: %2 + + Could not create folder %1 + Ordner %1 konnte nicht erstellt werden - - Folder %1 cannot be created because of a local file or folder name clash! - Ordner %1 kann aufgrund einer lokalen Datei- oder Ordnernamenskollision nicht erstellt werden! + + could not delete file %1, error: %2 + Konnte Datei %1 nicht löschen. Fehler: %2 - - Could not create folder %1 - Ordner %1 konnte nicht erstellt werden + + Folder %1 cannot be created because of a local file or folder name clash! + Ordner %1 kann aufgrund einer lokalen Datei- oder Ordnernamenskollision nicht erstellt werden! - - - The folder %1 cannot be made read-only: %2 - Der Ordner %1 kann nicht schreibgeschützt werden: %2 - - - - Error updating metadata: %1 - Fehler beim Aktualisieren der Metadaten: %1 - - - - The file %1 is currently in use - Die Datei %1 ist aktuell in Benutzung - - - + + OCC::PropagateLocalRemove - - Could not remove %1 because of a local file name clash - %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht gelöscht werden + + Could not remove %1 because of a local file name clash + %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht gelöscht werden - - - Could not delete file record %1 from local DB - Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden - - - + + OCC::PropagateLocalRename - - Folder %1 cannot be renamed because of a local file or folder name clash! - - - - - File %1 downloaded but it resulted in a local file name clash! - Datei %1 heruntergeladen, aber dies führte zu einem lokalen Dateinamenskonflikt! - - - - - - could not get file %1 from local DB - Datei %1 konnte nicht aus der lokalen Datenbank abgerufen werden - - - - - Error setting pin state - Fehler beim Setzen des PIN-Status - - - - - Error updating metadata: %1 - Fehler beim Aktualisieren der Metadaten: %1 - - - - The file %1 is currently in use - Die Datei %1 ist aktuell in Benutzung - - - - - Could not delete file record %1 from local DB - Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden + + Error setting pin state + Fehler beim Setzen des PIN-Status - - Failed to propagate directory rename in hierarchy - Die Umbenennung des Verzeichnisses in der Hierarchie konnte nicht weitergegeben werden + + Failed to propagate directory rename in hierarchy + Die Umbenennung des Verzeichnisses in der Hierarchie konnte nicht weitergegeben werden - - Failed to rename file - Konnte Datei nicht umbenennen + + Failed to rename file + Konnte Datei nicht umbenennen - - - OCC::PropagateRemoteDelete - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 204, aber gesendet wurde "%1 %2". + + Folder %1 cannot be renamed because of a local file or folder name clash! + Ordner %1 kann nicht umbenannt werden, da ein Konflikt zwischen lokalen Datei- oder Ordnernamen besteht! - - - Could not delete file record %1 from local DB - Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden - - - - OCC::PropagateRemoteDeleteEncryptedRootFolder - - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Falscher HTTP-Code vom Server zurückgegeben. 204 erwartet, aber "%1 %2" erhalten. - - - + + OCC::PropagateRemoteMkdir - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 201, aber gesendet wurde "%1 %2". - - - - Failed to encrypt a folder %1 - Ordner konnte nicht verschlüsselt werden %1 + + Error writing metadata to the database: %1 + Fehler beim Schreiben der Metadaten in die Datenbank: %1 - - Error writing metadata to the database: %1 - Fehler beim Schreiben der Metadaten in die Datenbank: %1 + + Failed to encrypt a folder %1 + Ordner konnte nicht verschlüsselt werden %1 - - The file %1 is currently in use - Die Datei %1 ist aktuell in Benutzung + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 201, aber gesendet wurde "%1 %2". - - + + OCC::PropagateRemoteMove - - Could not rename %1 to %2, error: %3 - Konnte %1 nicht nach %2 umbenennen. Fehler: %3 - - - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 201, aber gesendet wurde "%1 %2". - - - - could not get file %1 from local DB - Datei %1 konnte nicht aus der lokalen Datenbank abgerufen werden - - - - Could not delete file record %1 from local DB - Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden + + Could not rename %1 to %2, error: %3 + Konnte %1 nicht nach %2 umbenennen. Fehler: %3 - - - - Error updating metadata: %1 - Fehler beim Aktualisieren der Metadaten: %1 - - - - - The file %1 is currently in use - Die Datei %1 ist aktuell in Benutzung - - - - Error setting pin state - Fehler beim Setzen des PIN-Status - - - - Error writing metadata to the database - Fehler beim Schreiben der Metadaten in die Datenbank - - - + + OCC::PropagateUploadFileCommon - - Failed to upload encrypted file. - Das Hochladen der verschlüsselten Datei ist fehlgeschlagen. - - - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Die Datei %1 kann nicht hochgeladen werden, da eine andere Datei mit dem selben Namen, nur unterschiedlicher Groß-/Kleinschreibung, existiert + + Failed to unlock encrypted folder. + Der verschlüsselte Ordner konnte nicht entsperrt werden. - - - Upload of %1 exceeds the quota for the folder - Das Hochladen von %1 überschreitet das Speicherkontingent des Ordners + + Failed to upload encrypted file. + Das Hochladen der verschlüsselten Datei ist fehlgeschlagen. - - - - File %1 has invalid modification time. Do not upload to the server. - Die Datei %1 hat eine ungültige Änderungszeit. Nicht auf den Server hochladen. + + Unable to upload an item with invalid characters + Ein Element mit ungültigen Zeichen kann nicht hochgeladen werden - - File Removed (start upload) %1 - Datei entfernt (starte Hochladen) %1 + + Upload of %1 exceeds the quota for the folder + Das Hochladen von %1 überschreitet das Speicherkontingent des Ordners - - - Local file changed during syncing. It will be resumed. - Lokale Datei hat sich während der Synchronisierung geändert. Die Synchronisierung wird wiederaufgenommen. - - - - Local file changed during sync. - Eine lokale Datei wurde während der Synchronisierung geändert. - - - - Failed to unlock encrypted folder. - Der verschlüsselte Ordner konnte nicht entsperrt werden. - - - - Unable to upload an item with invalid characters - Ein Element mit ungültigen Zeichen kann nicht hochgeladen werden - - - - Error updating metadata: %1 - Fehler beim Aktualisieren der Metadaten: %1 - - - - The file %1 is currently in use - Die Datei %1 ist aktuell in Benutzung - - - + + OCC::PropagateUploadFileNG - - The local file was removed during sync. - Die lokale Datei wurde während der Synchronisierung gelöscht. - - - - Local file changed during sync. - Eine lokale Datei wurde während der Synchronisierung geändert. - - - - Poll URL missing - Poll-URL fehlt + + Missing ETag from server + Fehlender ETag vom Server - - Unexpected return code from server (%1) - Unerwarteter Rückgabe-Code Antwort vom Server (%1) + + Missing File ID from server + Fehlende Datei-ID vom Server - - Missing File ID from server - Fehlende Datei-ID vom Server + + Poll URL missing + Poll-URL fehlt - - Missing ETag from server - Fehlender ETag vom Server + + Unexpected return code from server (%1) + Unerwarteter Rückgabe-Code Antwort vom Server (%1) - - + + OCC::PropagateUploadFileV1 - - Poll URL missing - Poll-URL fehlt - - - - The local file was removed during sync. - Die lokale Datei wurde während der Synchronisierung gelöscht. - - - - Local file changed during sync. - Eine lokale Datei wurde während der Synchronisierung geändert. - - - - The server did not acknowledge the last chunk. (No e-tag was present) - Der Server hat den letzten Block nicht bestätigt. (Kein E-Tag vorhanden) + + The server did not acknowledge the last chunk. (No e-tag was present) + Der Server hat den letzten Block nicht bestätigt. (Kein E-Tag vorhanden) - - + + OCC::ProxyAuthDialog - - Proxy authentication required - Proxy-Authentifzierung erforderlich + + Password: + Passwort: - - Username: - Benutzername: + + Proxy authentication required + Proxy-Authentifzierung erforderlich - - Proxy: - Proxy: + + Proxy: + Proxy: - - The proxy server needs a username and password. - Der Proxy-Server benötigt Benutzername und Passwort + + The proxy server needs a username and password. + Der Proxy-Server benötigt Benutzername und Passwort - - Password: - Passwort: + + Username: + Benutzername: - - + + OCC::SelectiveSyncDialog - - Choose What to Sync - Zu synchronisierende Elemente auswählen + + Choose What to Sync + Zu synchronisierende Elemente auswählen - - + + OCC::SelectiveSyncWidget - - Loading … - Lade … + + An error occurred while loading the list of sub folders. + Es ist ein Fehler während des Ladens der Liste der Unterordner aufgetreten. - - Deselect remote folders you do not wish to synchronize. - Entfernte Ordner abwählen, die nicht synchronisiert werden sollen. + + Deselect remote folders you do not wish to synchronize. + Entfernte Ordner abwählen, die nicht synchronisiert werden sollen. - - Name - Name + + Loading … + Lade … - - Size - Größe + + Name + Name - - - No subfolders currently on the server. - Aktuell befinden sich keine Unterordner auf dem Server. + + No subfolders currently on the server. + Aktuell befinden sich keine Unterordner auf dem Server. - - An error occurred while loading the list of sub folders. - Es ist ein Fehler während des Ladens der Liste der Unterordner aufgetreten. + + Size + Größe - - + + OCC::ServerNotificationHandler - - Reply - Antworten + + Reply + Antworten - - Dismiss - Ablehnen - - - + + OCC::SettingsDialog - - Settings - Einstellungen - - - - %1 Settings - This name refers to the application name e.g Nextcloud - %1-Einstellungen - - - - New Account - + + %1 Settings + %1-Einstellungen - - General - Allgemein + + Account + Benutzerkonto - Network - Netzwerk + + General + Allgemein - - Account - Benutzerkonto + Network + Netzwerk - - - OCC::ShareManager - - Error - Fehler + + New Account + Neues Konto - - + + OCC::ShareModel - - Secure file drop link - Sicherer Link zur Dateiablage + + Could not find local folder for %1 + Lokaler Ordner für %1 nicht gefunden - - Share link - Freigabe-Link + Enter a note for the recipient + Geben Sie eine Notiz für den Empfänger ein - - Link share - Link teilen + + Internal link + Interner Link - - Internal link - Interner Link + + Link share + Link teilen - - Secure file drop - Sichere Dateiablage + + Secure file drop + Sichere Dateiablage - - Could not find local folder for %1 - Lokaler Ordner für %1 nicht gefunden + + Secure file drop link + Sicherer Link zur Dateiablage - Enter a note for the recipient - Geben Sie eine Notiz für den Empfänger ein + + Share link + Freigabe-Link - - + + OCC::ShareUserLine - Username - Benutzername + Can edit + Kann bearbeiten - Can edit - Kann bearbeiten + Expires: + Läuft ab: - Note: - Notiz: + Note: + Notiz: - - Password: - Passwort: - - - Expires: - Läuft ab: - - - + + OCC::ShareeModel - - - Search globally - Global suchen - - - - No results found - Keine Ergebnisse gefunden + + Global search results + Globale Suchergebnisse - - Global search results - Globale Suchergebnisse + + No results found + Keine Ergebnisse gefunden - - %1 (%2) - sharee (shareWithAdditionalInfo) - %1 (%2) + + Search globally + Global suchen - - + + OCC::SocketApi - - Failed to encrypt folder at "%1" - Fehler beim Verschlüsseln des Ordners unter "%1" + Activity + Aktivität - - The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - Für das Konto %1 ist keine Ende-zu-Ende-Verschlüsselung konfiguriert. Bitte konfigurieren Sie diese in Ihren Kontoeinstellungen, um die Ordnerverschlüsselung zu aktivieren. + + Context menu share + Kontextmenü Freigabe - - Failed to encrypt folder - Ordner konnte nicht verschlüsselt werden - - - - Could not encrypt the following folder: "%1". - -Server replied with error: %2 - Der folgende Ordner konnte nicht verschlüsselt werden: "%1". - -Server antwortete mit Fehler: %2 + + Copy internal link + Internen Link kopieren - - Folder encrypted successfully - Ordner erfolgreich verschlüsselt + + Copy private link to clipboard + Privater Link in die Zwischenablage kopiert - - The following folder was encrypted successfully: "%1" - Der folgende Ordner wurde erfolgreich verschlüsselt: "%1" + + Copy public link + Öffentlichen Link kopieren - - Context menu share - Kontextmenü Freigabe + + Copy secure file drop link + Link zur sicheren Dateiablage kopieren - - Select new location … - Neuen Ort auswählen … + + Copy secure filedrop link + Link zur sicheren Dateiablage kopieren - - I shared something with you - Ich habe etwas mit Ihnen geteilt + + Could not encrypt the following folder: "%1". + +Server replied with error: %2 + Der folgende Ordner konnte nicht verschlüsselt werden: "%1". + +Server antwortete mit Fehler: %2 - - - Share options - Freigabeoptionen + + Delete local changes + Lokale Änderungen löschen - - - Activity - Aktivität + + Edit + Bearbeiten - - - Copy private link to clipboard - Privater Link in die Zwischenablage kopiert + + + Expires in %1 minutes + + + + Läuft in %1 Minuten ab + - - Send private link by email … - Privaten Link als E-Mail verschicken … + + Failed to encrypt folder + Ordner konnte nicht verschlüsselt werden - - Leave this share - Freigabe verlassen + + Failed to encrypt folder at "%1" + Fehler beim Verschlüsseln des Ordners unter "%1" - - Resharing this file is not allowed - Weiterteilen dieser Datei ist nicht erlaubt + + Folder encrypted successfully + Ordner erfolgreich verschlüsselt - - Resharing this folder is not allowed - Weiterteilen dieses Ordners ist nicht erlaubt + + I shared something with you + Ich habe etwas mit Ihnen geteilt - - Copy secure file drop link - Link zur sicheren Dateiablage kopieren + + Leave this share + Freigabe verlassen - - - Copy public link - Öffentlichen Link kopieren + + Lock file + Datei sperren - - Copy secure filedrop link - Link zur sicheren Dateiablage kopieren + + Locked by %1 + Gesperrt von %1 - - Copy internal link - Internen Link kopieren + + Move and rename … + Verschieben und umbenennen … - - Encrypt - Verschlüsseln + + Move and upload … + Verschieben und hochladen … - - Lock file - Datei sperren + + Move, rename and upload … + Verschieben, umbenennen und hochladen … - - Unlock file - Datei entsperren + + Open in browser + Im Browser öffnen - - Locked by %1 - Gesperrt von %1 - - - - Expires in %1 minutes - remaining time before lock expires - - Läuft ab in %1 Minute - Läuft ab in %1 Minuten - + + Resharing this file is not allowed + Weiterteilen dieser Datei ist nicht erlaubt - - Edit - Bearbeiten + + Resharing this folder is not allowed + Weiterteilen dieses Ordners ist nicht erlaubt - - Open in browser - Im Browser öffnen + + Resolve conflict … + Konflikt lösen… - - Resolve conflict … - Konflikt lösen… + + Select new location … + Neuen Ort auswählen … - - Move and rename … - Verschieben und umbenennen … + + Send private link by email … + Privaten Link als E-Mail verschicken … - - Move, rename and upload … - Verschieben, umbenennen und hochladen … + + Share options + Freigabeoptionen - - Delete local changes - Lokale Änderungen löschen + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. + Für das Konto %1 ist keine Ende-zu-Ende-Verschlüsselung konfiguriert. Bitte konfigurieren Sie diese in Ihren Kontoeinstellungen, um die Ordnerverschlüsselung zu aktivieren. - - Move and upload … - Verschieben und hochladen … + + The following folder was encrypted successfully: "%1" + Der folgende Ordner wurde erfolgreich verschlüsselt: "%1" - - Delete - Löschen + + Unlock file + Datei entsperren - - + + OCC::SslButton - - <h3>Certificate Details</h3> - <h3>Zertifikatdetails</h3> - - - - Common Name (CN): - Gemeinsamer Name (CN): + + %1 (self-signed) + %1 (selbst signiert) - - Subject Alternative Names: - Subject Alternative Names: + + <h3>Certificate Details</h3> + <h3>Zertifikatdetails</h3> - - Organization (O): - Organisation (O): + + <h3>Fingerprints</h3> + <h3>Fingerabdrücke</h3> - - Organizational Unit (OU): - Organisationseinheit (OU): + + <h3>Issuer</h3> + <h3>Aussteller</h3> - - State/Province: - Staat/Provinz: + + <p><b>Note:</b> This certificate was manually approved</p> + <p><b>Hinweis:</b> Dieses Zertifikat wurde manuell bestätigt</p> - - Country: - Land: + + Certificate information: + Zertifikatsinformation: - - Serial: - Seriennummer: + + Common Name (CN): + Gemeinsamer Name (CN): - - <h3>Issuer</h3> - <h3>Aussteller</h3> + + Country: + Land: - - Issuer: - Aussteller: + + Expires on: + Ablaufdatum: - - Issued on: - Ausgestellt am: + + Issued on: + Ausgestellt am: - - Expires on: - Ablaufdatum: + + Issuer: + Aussteller: - - <h3>Fingerprints</h3> - <h3>Fingerabdrücke</h3> + + No support for SSL session tickets/identifiers + Keine Unterstützung für SSL session tickets - - SHA-256: - SHA-256: + + Organization (O): + Organisation (O): - - SHA-1: - SHA-1: + + Organizational Unit (OU): + Organisationseinheit (OU): - - <p><b>Note:</b> This certificate was manually approved</p> - <p><b>Hinweis:</b> Dieses Zertifikat wurde manuell bestätigt</p> + + Serial: + Seriennummer: - - %1 (self-signed) - %1 (selbst signiert) + + Server version: %1 + Serverversion: %1 - - %1 - %1 + + SHA-1: + SHA-1: - - This connection is encrypted using %1 bit %2. - - Diese Verbindung ist verschlüsselt mit %1 Bit %2. - + + SHA-256: + SHA-256: - - This connection is NOT secure as it is not encrypted. - - Diese Verbindung ist NICHT sicher, da diese nicht verschlüsselt ist. - + + State/Province: + Staat/Provinz: - - Server version: %1 - Serverversion: %1 + + Subject Alternative Names: + Subject Alternative Names: - - No support for SSL session tickets/identifiers - Keine Unterstützung für SSL session tickets + + The connection is not secure + Die Verbindung ist nicht sicher - - Certificate information: - Zertifikatsinformation: + + This connection is encrypted using %1 bit %2. + Diese Verbindung ist verschlüsselt mit %1 Bit %2. - - The connection is not secure - Die Verbindung ist nicht sicher + + This connection is NOT secure as it is not encrypted. + Diese Verbindung ist NICHT sicher, da diese nicht verschlüsselt ist. - - + + OCC::SslErrorDialog - - Trust this certificate anyway - Diesem Zertifikat trotzdem vertrauen + + &lt;not specified&gt; + &lt;nicht angegeben&gt; - - Untrusted Certificate - Nicht vertrauenswürdiges Zertifikat + + Additional errors: + Zusätzliche Fehler: - - Cannot connect securely to <i>%1</i>: - Kann keine sichere Verbindung zu <i>%1</i> herstellen: + + Cannot connect securely to <i>%1</i>: + Kann keine sichere Verbindung zu <i>%1</i> herstellen: - - Additional errors: - Zusätzliche Fehler: + + Country: %1 + Land: %1 - - with Certificate %1 - mit Zertifikat %1 + + Effective Date: %1 + Datum des Inkrafttretens: %1 - - - - &lt;not specified&gt; - &lt;nicht angegeben&gt; + + Expiration Date: %1 + Ablaufdatum: %1 - - - Organization: %1 - Organisation: %1 + + Fingerprint (SHA-256): <tt>%1</tt> + Fingerabdruck (SHA-256): <tt>%1</tt> - - - Unit: %1 - Einheit: %1 + + Fingerprint (SHA-512): <tt>%1</tt> + Fingerabdruck (SHA-512): <tt>%1</tt> - - - Country: %1 - Land: %1 + + Fingerprint (SHA1): <tt>%1</tt> + Fingerabdruck (SHA1): <tt>%1</tt> - - Fingerprint (SHA1): <tt>%1</tt> - Fingerabdruck (SHA1): <tt>%1</tt> + + Issuer: %1 + Aussteller: %1 - - Fingerprint (SHA-256): <tt>%1</tt> - Fingerabdruck (SHA-256): <tt>%1</tt> + + Organization: %1 + Organisation: %1 - - Fingerprint (SHA-512): <tt>%1</tt> - Fingerabdruck (SHA-512): <tt>%1</tt> + + Trust this certificate anyway + Diesem Zertifikat trotzdem vertrauen - - Effective Date: %1 - Datum des Inkrafttretens: %1 + + Unit: %1 + Einheit: %1 - - Expiration Date: %1 - Ablaufdatum: %1 + + Untrusted Certificate + Nicht vertrauenswürdiges Zertifikat - - Issuer: %1 - Aussteller: %1 + + with Certificate %1 + mit Zertifikat %1 - - + + OCC::SyncEngine - - %1 (skipped due to earlier error, trying again in %2) - %1 (übersprungen aufgrund des früheren Fehlers, erneuter Versuch in %2) + + %1 (skipped due to earlier error, trying again in %2) + %1 (übersprungen aufgrund des früheren Fehlers, erneuter Versuch in %2) - - Could not update file: %1 - Datei konnte nicht aktualisiert werden: %1 + + Cannot open the sync journal + Synchronisierungsprotokoll kann nicht geöffnet werden - - Could not update virtual file metadata: %1 - Metadaten der virtuellen Datei konnten nicht aktualisiert werden: %1 + + Could not set file record to local DB: %1 + Dateidatensatz konnte nicht auf lokale DB gesetzt werden: %1 - - Could not update file metadata: %1 - Die Metadaten der Datei konnten nicht aktualisiert werden: %1 + + Could not update file metadata: %1 + Die Metadaten der Datei konnten nicht aktualisiert werden: %1 - - Could not set file record to local DB: %1 - Dateidatensatz konnte nicht auf lokale DB gesetzt werden: %1 + + Could not update file: %1 + Datei konnte nicht aktualisiert werden: %1 - - Unresolved conflict. - Ungelöster Konflikt. + + Could not update virtual file metadata: %1 + Metadaten der virtuellen Datei konnten nicht aktualisiert werden: %1 - - Only %1 are available, need at least %2 to start - Placeholders are postfixed with file sizes using Utility::octetsToString() - Nur %1 sind verfügbar. Zum Beginnen werden mindestens %2 benötigt. + + Disk space is low: Downloads that would reduce free space below %1 were skipped. + Der freie Speicherplatz wird knapp: Downloads, die den freien Speicher unter %1 reduzieren, wurden ausgelassen. - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. - Öffnen oder erstellen der Sync-Datenbank nicht möglich. Bitte sicherstellen, dass Schreibrechte für den zu synchronisierenden Ordner existieren. + + Only %1 are available, need at least %2 to start + Nur %1 sind verfügbar. Zum Beginnen werden mindestens %2 benötigt. - - Using virtual files with suffix, but suffix is not set - Virtuelle Dateien mit Endung verwenden, aber Endung ist nicht gesetzt. + + There is insufficient space available on the server for some uploads. + Auf dem Server ist für einige Dateien zum Hochladen nicht genug Platz. - - Unable to read the blacklist from the local database - Fehler beim Einlesen der Blacklist aus der lokalen Datenbank + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. + Öffnen oder erstellen der Sync-Datenbank nicht möglich. Bitte sicherstellen, dass Schreibrechte für den zu synchronisierenden Ordner existieren. - - Unable to read from the sync journal. - Fehler beim Einlesen des Synchronisierungsprotokolls. + + Unable to read from the sync journal. + Fehler beim Einlesen des Synchronisierungsprotokolls. - - Cannot open the sync journal - Synchronisierungsprotokoll kann nicht geöffnet werden + + Unable to read the blacklist from the local database + Fehler beim Einlesen der Blacklist aus der lokalen Datenbank - - Disk space is low: Downloads that would reduce free space below %1 were skipped. - Der freie Speicherplatz wird knapp: Downloads, die den freien Speicher unter %1 reduzieren, wurden ausgelassen. + + Unresolved conflict. + Ungelöster Konflikt. - - There is insufficient space available on the server for some uploads. - Auf dem Server ist für einige Dateien zum Hochladen nicht genug Platz. + + Using virtual files with suffix, but suffix is not set + Virtuelle Dateien mit Endung verwenden, aber Endung ist nicht gesetzt. - - + + OCC::SyncJournalDb - - Failed to connect database. - Fehler beim Verbinden mit der Datenbank. + + Failed to connect database. + Fehler beim Verbinden mit der Datenbank. - - + + OCC::SyncStatusSummary - - - Offline - Offline - - - - - - All synced! - Alles synchronisiert! - - - - Some files couldn't be synced! - Einige Dateien konnten nicht synchronisiert werden! - - - - See below for errors - Warnungen siehe unten + + %1 of %2 + %1 von %2 - - Preparing sync - Synchronisierung wird vorbereitet + + %1 of %2 · %3 left + %1 von %2 · %3 verbleiben - - - Syncing - Synchronisiere + + Offline + Offline - - Sync paused - Synchronisierung pausiert + + Preparing sync + Synchronisierung wird vorbereitet - - Some files could not be synced! - Einige Dateien konnten nicht synchronisiert werden! + + See below for errors + Warnungen siehe unten - - See below for warnings - Warnungen siehe unten + + See below for warnings + Warnungen siehe unten - - %1 of %2 · %3 left - %1 von %2 · %3 verbleiben + + Some files could not be synced! + Einige Dateien konnten nicht synchronisiert werden! - - %1 of %2 - %1 von %2 + + Some files couldn't be synced! + Einige Dateien konnten nicht synchronisiert werden! - - Syncing file %1 of %2 - Synchronisiere Datei %1 von %2 + + Syncing file %1 of %2 + Synchronisiere Datei %1 von %2 - - + + OCC::Systray - - Download - Herunterladen - - - - Add account - Konto hinzufügen - - - - Open main dialog - Hauptfenster öffnen + + %1: %2 + %1: %2 - - - Pause sync - Synchronisierung pausieren + + Add account + Konto hinzufügen - - - Resume sync - Synchronisierung fortsetzen + + Download + Herunterladen - - Settings - Einstellungen + + Exit %1 + %1 beenden - - Help - Hilfe + + Open main dialog + Hauptfenster öffnen - - Exit %1 - %1 beenden + + Pause sync for all + Synchronisierung für alle pausieren - - Pause sync for all - Synchronisierung für alle pausieren + + Resume sync for all + Synchronisierung für alle fortsetzen - - - Resume sync for all - Synchronisierung für alle fortsetzen - - - - %1: %2 - %1: %2 - - - + + OCC::Theme - - <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 Desktop-Client</p><p>Version %1. Für weitere Informationen bitte <a href='%2'>hier</a> klicken.</p> - - - <p>%1 Desktop Client</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 Desktop-Client</p> + + <p>%1 desktop client %2</p> + <p>%1 Desktop-Client %2</p> - - easy/0118 - Redirect URL Parameter - easy/0108 + <p>%1 Desktop Client</p> + <p>%1 Desktop-Client</p> - - <p><small>Using virtual files plugin: %1</small></p> - <p><small>Plugin für virtuelle Dateien: %1</small></p> + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>%1 Desktop-Client</p><p>Version %1. Für weitere Informationen bitte <a href='%2'>hier</a> klicken.</p> - - <p>%1 desktop client %2</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 Desktop-Client %2</p> + + <p><small>Using virtual files plugin: %1</small></p> + <p><small>Plugin für virtuelle Dateien: %1</small></p> - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>Version %1. Für weitere Informationen klicken Sie bitte <a href='%2'>hier</a>.</p> + + <p>This release was supplied by %1.</p> + <p>Diese Version wird von %1 bereitgestellt</p>. - - <p>This release was supplied by %1.</p> - <p>Diese Version wird von %1 bereitgestellt</p>. + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>Version %1. Für weitere Informationen klicken Sie bitte <a href='%2'>hier</a>.</p> - - + + OCC::UnifiedSearchResultsListModel - - Failed to fetch providers. - Anbieter konnten nicht abgerufen werden. + + Failed to fetch providers. + Anbieter konnten nicht abgerufen werden. - - Failed to fetch search providers for '%1'. Error: %2 - Konnte Suchanbieter für '%1' nicht abrufen. Fehler: %2 + + Failed to fetch search providers for '%1'. Error: %2 + Konnte Suchanbieter für '%1' nicht abrufen. Fehler: %2 - - Search has failed for '%2'. - Suche nach '%2' fehlgeschlagen. + + Search has failed for '%1'. Error: %2 + Suche nach '%1' fehlgeschlagen. Fehler: %2 - - Search has failed for '%1'. Error: %2 - Suche nach '%1' fehlgeschlagen. Fehler: %2 + + Search has failed for '%2'. + Suche nach '%2' fehlgeschlagen. - - + + OCC::UpdateE2eeFolderMetadataJob - - Failed to update folder metadata. - Fehler beim Aktualisieren der Ordner-Metadaten. + + Failed to finalize item. + Fehler beim Fertigstellen des Elements. - - Failed to unlock encrypted folder. - Verschlüsselter Ordner konnte nicht entsperrt werden. + + Failed to update folder metadata. + Fehler beim Aktualisieren der Ordner-Metadaten. - - - Failed to finalize item. - Fehler beim Fertigstellen des Elements. - - - + + OCC::UpdateE2eeFolderUsersMetadataJob - - - - - - - - - - Error updating metadata for a folder %1 - Fehler beim Aktualisieren der Metadaten für einen Ordner %1 + Could not add or remove a folder user %1, for folder %2 + Ordner konnte nicht hinzugefügt oder entfernt werden. Benutzer %1 für Ordner %2 - - Could not fetch public key for user %1 - Öffentlicher Schlüssel für den Benutzer %1 konnte nicht abgerufen werden + + Could not add or remove user %1 to access folder %2 + Benutzer %1 konnte nicht zum Zugriffsordner %2 hinzugefügt oder entfernt werden - - Could not find root encrypted folder for folder %1 - Verschlüsselter Stammordner für den Ordner %1 nicht gefunden + + Could not fetch public key for user %1 + Öffentlicher Schlüssel für den Benutzer %1 konnte nicht abgerufen werden - - Could not add or remove user %1 to access folder %2 - + + Could not find root encrypted folder for folder %1 + Verschlüsselter Stammordner für den Ordner %1 nicht gefunden - Could not add or remove a folder user %1, for folder %2 - Ordner konnte nicht hinzugefügt oder entfernt werden. Benutzer %1 für Ordner %2 + + Error updating metadata for a folder %1 + Fehler beim Aktualisieren der Metadaten für einen Ordner %1 - - Failed to unlock a folder. - Fehler beim Entsperren eines Ordners. + + Failed to unlock a folder. + Fehler beim Entsperren eines Ordners. - - + + OCC::User - - %1 notifications - + + %1 notifications + %1 Benachrichtigungen - - Retry all uploads - Alle Uploads neu starten + + Resolve conflict + Konflikt lösen - - - Resolve conflict - Konflikt lösen + + Retry all uploads + Alle Uploads neu starten - - + + OCC::UserModel - - Confirm Account Removal - Kontenentfernung bestätigen - - - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Möchten Sie wirklich die Verbindung zum Konto <i>%1</i> entfernen?</p><p><b>Hinweis:</b> Es werden <b>keine</b> Dateien gelöscht.</p> + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Möchten Sie wirklich die Verbindung zum Konto <i>%1</i> entfernen?</p><p><b>Hinweis:</b> Es werden <b>keine</b> Dateien gelöscht.</p> - - Remove connection - Verbindung entfernen + + Confirm Account Removal + Kontenentfernung bestätigen - - Cancel - Abbrechen + + Remove connection + Verbindung entfernen - - + + OCC::UserStatusSelectorModel - - Could not fetch predefined statuses. Make sure you are connected to the server. - Vordefinierte Status konnten nicht abgerufen werden. Stellen Sie bitte sicher, dass Sie mit dem Server verbunden sind. + + %1 days + %1 Tage - - Could not fetch status. Make sure you are connected to the server. - Benutzerstatus konnte nicht abgerufen werden. Bitte sicherstellen, dass Sie mit dem Server verbunden sind. + + %1 hours + %1 Stunden - - Status feature is not supported. You will not be able to set your status. - Benutzerstatus-Funktion wird nicht unterstützt. Benutzerstatus kann nicht gesetzt werden. + + %1 minutes + %1 Minuten - - Emojis are not supported. Some status functionality may not work. - Emoji-Funktion wird nicht unterstützt. Einige Benutzerstatus-Funktionen funktionieren unter Umständen nicht. + + 1 day + 1 Tag - - Could not set status. Make sure you are connected to the server. - Benutzerstatus konnte nicht gesetzt werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. + + 1 hour + 1 Stunde - - Could not clear status message. Make sure you are connected to the server. - Statusnachricht konnte nicht gelöscht werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. + + 1 minute + 1 Minute - - - Don't clear - Nicht löschen + + 30 minutes + 30 Minuten - - 30 minutes - 30 Minuten + + 4 hours + 4 Stunden - - - 1 hour - 1 Stunde + + Could not clear status message. Make sure you are connected to the server. + Statusnachricht konnte nicht gelöscht werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. - - 4 hours - 4 Stunden + + Could not fetch predefined statuses. Make sure you are connected to the server. + Vordefinierte Status konnten nicht abgerufen werden. Stellen Sie bitte sicher, dass Sie mit dem Server verbunden sind. - - - Today - Heute + + Could not fetch status. Make sure you are connected to the server. + Benutzerstatus konnte nicht abgerufen werden. Bitte sicherstellen, dass Sie mit dem Server verbunden sind. - - - This week - Diese Woche + + Could not set status. Make sure you are connected to the server. + Benutzerstatus konnte nicht gesetzt werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. - - Less than a minute - Weniger als eine Minute + + Don't clear + Nicht löschen - - 1 minute - 1 Minute + + Emojis are not supported. Some status functionality may not work. + Emoji-Funktion wird nicht unterstützt. Einige Benutzerstatus-Funktionen funktionieren unter Umständen nicht. - - %1 minutes - %1 Minuten + + Less than a minute + Weniger als eine Minute - - %1 hours - %1 Stunden + + Status feature is not supported. You will not be able to set your status. + Benutzerstatus-Funktion wird nicht unterstützt. Benutzerstatus kann nicht gesetzt werden. - - 1 day - 1 Tag + + This week + Diese Woche - - %1 days - %1 Tage + + Today + Heute - - + + OCC::ValidateChecksumHeader - - The checksum header is malformed. - Der Prüfsummen-Header hat ein fehlerhaftes Format. + + The checksum header contained an unknown checksum type "%1" + Der Prüfsummen-Header enthielt einen unbekannten Prüfsummentyp "%1" - - The checksum header contained an unknown checksum type "%1" - Der Prüfsummen-Header enthielt einen unbekannten Prüfsummentyp "%1" + + The checksum header is malformed. + Der Prüfsummen-Header hat ein fehlerhaftes Format. - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Die heruntergeladene Datei stimmt nicht mit der Prüfsumme überein, sie wird fortgesetzt. "%1" != "%2" + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + Die heruntergeladene Datei stimmt nicht mit der Prüfsumme überein, sie wird fortgesetzt. "%1" != "%2" - - + + OCC::Vfs - - The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - Die Funktion "Virtuelles Dateisystem" erfordert ein NTFS-Dateisystem, %1 verwendet %2 + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 + Die Funktion "Virtuelles Dateisystem" erfordert ein NTFS-Dateisystem, %1 verwendet %2 - - + + OCC::VfsDownloadErrorDialog - - Download error - Fehler beim Herunterladen + + %1 could not be downloaded. + %1 konnte nicht heruntergeladen werden. - - Error downloading - Fehler beim Herunterladen + + > More details + > Weitere Details - - could not be downloaded - Konnte nicht heruntergeladen werden + + could not be downloaded + Konnte nicht heruntergeladen werden - - > More details - > Weitere Details + + Download error + Fehler beim Herunterladen - - More details - Weitere Details + + Error downloading + Fehler beim Herunterladen - - Error downloading %1 - Fehler beim Herunterladen von %1 + + Error downloading %1 + Fehler beim Herunterladen von %1 - - %1 could not be downloaded. - %1 konnte nicht heruntergeladen werden. + + More details + Weitere Details - - - OCC::VfsSuffix - - - - Error updating metadata due to invalid modification time - Fehler beim Aktualisieren der Metadaten aufgrund einer ungültigen Änderungszeit - - - - OCC::VfsXAttr - - - - Error updating metadata due to invalid modification time - Fehler beim Aktualisieren der Metadaten aufgrund einer ungültigen Änderungszeit - - - + + OCC::WebEnginePage - - Invalid certificate detected - Ungültiges Zertifikat gefunden + + Invalid certificate detected + Ungültiges Zertifikat gefunden - - The host "%1" provided an invalid certificate. Continue? - Der Server "%1" hat ein ungültiges Zertifikat. Fortsetzen? + + The host "%1" provided an invalid certificate. Continue? + Der Server "%1" hat ein ungültiges Zertifikat. Fortsetzen? - - + + OCC::WebFlowCredentials - You have been logged out of your account %1 at %2. Please login again. - Sie wurden von Ihrem Konto %1 als %2 abgemeldet. Bitte melden Sie sich erneut an. + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + <b>Sie wurden von Ihrem Konto %1 bei %2 abgemeldet. Bitte melden Sie sich erneut an.</b> - Please login with the account: %1 - Bitte mit folgendem Konto anmelden: %1 + Please login with the account: %1 + Bitte mit folgendem Konto anmelden: %1 - - <b>You have been logged out of your account %1 at %2. Please login again.</b> - + You have been logged out of your account %1 at %2. Please login again. + Sie wurden von Ihrem Konto %1 als %2 abgemeldet. Bitte melden Sie sich erneut an. - - + + OCC::WelcomePage - - Form - Formular + Easy-to-use web mail, calendaring & contacts + Einfach zu bedienende Webmail, Kalender & Kontakte - - Log in - Anmelden + + Form + Formular - - Sign up with provider - Mit Provider anmelden + + Host your own server + Eigenen Server betreiben - - Keep your data secure and under your control - Halten Sie Ihre Daten sicher und unter Ihrer Kontrolle + + Keep your data secure and under your control + Halten Sie Ihre Daten sicher und unter Ihrer Kontrolle - Secure collaboration & file exchange - Sichere Zusammenarbeit & Dateiaustausch + + Log in + Anmelden - Easy-to-use web mail, calendaring & contacts - Einfach zu bedienende Webmail, Kalender & Kontakte + Screensharing, online meetings & web conferences + Bildschirmfreigabe, Online-Meetings & Webkonferenzen - Screensharing, online meetings & web conferences - Bildschirmfreigabe, Online-Meetings & Webkonferenzen + Secure collaboration & file exchange + Sichere Zusammenarbeit & Dateiaustausch - - Host your own server - Eigenen Server betreiben + + Sign up with provider + Mit Provider anmelden - - + + OCC::ownCloudGui - - Unsupported Server Version - Nicht unterstütze Server-Version - - - - The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - Der Server auf Konto %1 verwendet die nicht unterstützte Version %2. Die Verwendung dieses Clients mit nicht unterstützten Serverversionen ist ungetestet und potenziell gefährlich. Die Verwendung erfolgt auf eigene Gefahr. + + Account %1: %2 + Konto %1: %2 - - Disconnected - Getrennt + + Account synchronization is disabled + Konto-Synchronisierung ist deaktiviert - - Disconnected from some accounts - Verbindungen zu einigen Konten getrennt + + Disconnected from %1 + Von %1 getrennt - - Disconnected from %1 - Von %1 getrennt + + Disconnected from accounts: + Verbindungen zu Konten getrennt: - - Disconnected from accounts: - Verbindungen zu Konten getrennt: + + Disconnected from some accounts + Verbindungen zu einigen Konten getrennt - - Account %1: %2 - Konto %1: %2 + + Error during synchronization + Fehler bei der Synchronisierung - - Please sign in - Bitte melden Sie sich an + + Folder %1: %2 + Ordner %1: %2 - - Signed out - Abgemeldet + + No sync folders configured + Keine Ordner zur Synchronisierung konfiguriert - - Account synchronization is disabled - Konto-Synchronisierung ist deaktiviert + + Please sign in + Bitte melden Sie sich an - - - Synchronization is paused - Synchronisierung ist pausiert + + Synchronization is paused + Synchronisierung ist pausiert - - Folder %1: %2 - Ordner %1: %2 + + Syncing %1 of %2 (%3 left) + Synchronisiere %1 von %2 (%3 übrig) - - Unresolved conflicts - Ungelöste Konflikte + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + Der Server auf Konto %1 verwendet die nicht unterstützte Version %2. Die Verwendung dieses Clients mit nicht unterstützten Serverversionen ist ungetestet und potenziell gefährlich. Die Verwendung erfolgt auf eigene Gefahr. - - Up to date - Aktuell + + There are no sync folders configured. + Es wurden keine Synchronisierungsordner konfiguriert. - - Error during synchronization - Fehler bei der Synchronisierung + + Unresolved conflicts + Ungelöste Konflikte - - There are no sync folders configured. - Es wurden keine Synchronisierungsordner konfiguriert. + + Unsupported Server Version + Nicht unterstütze Server-Version - - No sync folders configured - Keine Ordner zur Synchronisierung konfiguriert + + Up to date + Aktuell - - - Checking for changes in remote "%1" - Nach Änderungen in entfernten "%1" suchen - - - - Checking for changes in local "%1" - Nach Änderungen in lokalem "%1" suchen - - - - Syncing %1 of %2 (%3 left) - Synchronisiere %1 von %2 (%3 übrig) - - - - Syncing %1 of %2 - Synchronisiere %1 von %2 - - - - Syncing %1 (%2 left) - Synchronisiere %1 (%2 übrig) - - - - Syncing %1 - Synchronisiere %1 - - - - %1 (%2, %3) - %1 (%2, %3) - - - + + OCC::sesSnackBar - - Error - Fehler - - - - Warning - Warnung - - - - Success - + + Success + Erfolg - - + + OwncloudAdvancedSetupPage - - &Local Folder - &Lokaler Ordner - - - - Username - Benutzername - - - - Local Folder - Lokaler Ordner + + &Local Folder + &Lokaler Ordner - - Choose different folder - Anderen Ordner wählen - - - - Server address - Serveradresse + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Wenn dieses Kästchen markiert ist, + wird der vorhandene Inhalt im lokalen Ordner gelöscht, um eine saubere Synchronisierung + vom Server zu starten.</p><p>Klicken Sie dies nicht an, wenn der lokale Inhalt + in den Serverordner hochgeladen werden soll.</p></body></html> - - Sync Logo - Sync-Logo + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Wenn diese Option gesetzt ist, werden bestehende Inhalte im lokalen Ordner gelöscht, um eine saubere Synchronisierung nur der Serverdaten zu ermöglichen.</p><p>Wählen Sie diese Option nicht, wenn die lokalen Inhalte auf den Server übertragen werden sollen.</p></body></html> - - Synchronize everything from server - Alle Daten vom Server synchronisieren + + Ask before syncing external storages + Fragen bevor externe Speicher synchronisiert werden - - Ask before syncing folders larger than - Fragen bevor Ordner synchronisiert werden. Grenze: + + Ask before syncing folders larger than + Fragen bevor Ordner synchronisiert werden. Grenze: - - - MB - - Trailing part of "Ask confirmation before syncing folder larger than" - + + Choose different folder + Anderen Ordner wählen - - <html><head/><body><p>If this box is checked, - existing content in the local folder will be erased to start a clean sync - from the server.</p><p>Do not check this if the local content - should be uploaded to the servers folder.</p></body></html> - - + + Erase local folder and start a clean sync + Lokalen Ordner löschen und eine saubere Synchronisierung starten - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB + + Keep local data + Lokale Daten behalten - - Ask before syncing external storages - Fragen bevor externe Speicher synchronisiert werden + + Local Folder + Lokaler Ordner - - Choose what to sync - Zu synchronisierende Elemente auswählen + + Server address + Serveradresse - - Keep local data - Lokale Daten behalten + + Sync Logo + Sync-Logo - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Wenn diese Option gesetzt ist, werden bestehende Inhalte im lokalen Ordner gelöscht, um eine saubere Synchronisierung nur der Serverdaten zu ermöglichen.</p><p>Wählen Sie diese Option nicht, wenn die lokalen Inhalte auf den Server übertragen werden sollen.</p></body></html> + + Synchronize everything from server + Alle Daten vom Server synchronisieren - - Erase local folder and start a clean sync - Lokalen Ordner löschen und eine saubere Synchronisierung starten + Username + Benutzername - - + + OwncloudHttpCredsPage - - &Username - &Benutzername + + &Password + &Passwort - - &Password - &Passwort + + &Username + &Benutzername - - + + OwncloudOAuthCredsPage - Please switch to your browser to proceed. - Bitte wechseln Sie zum Fortfahren in Ihren Browser. + Please switch to your browser to proceed. + Bitte wechseln Sie zum Fortfahren in Ihren Browser. - An error occurred while connecting. Please try again. - Es ist ein Fehler während des Verbindungsaufbau aufgetreten. Bitte erneut versuchen. + Re-open Browser + Browser erneut öffnen - - Re-open Browser - Browser erneut öffnen - - - Copy link - Link kopieren - - - + + OwncloudSetupPage - - - TextLabel - TextLabel + + TextLabel + TextLabel - Logo - Logo + + This is the link to your %1 web interface when you open it in the browser. + Dies ist der Link zu Ihrer %1 Webseite, wenn Sie diese im Browser öffnen. - - - Server address - Serveradresse - - - - This is the link to your %1 web interface when you open it in the browser. - Dies ist der Link zu Ihrer %1 Webseite, wenn Sie diese im Browser öffnen. - - - + + QObject - - - New folder - Neuer Ordner + + + %nd + + + + %nd + - - - You renamed %1 - Sie haben %1 umbenannt + + + %nh + + + + %nh + - - - You deleted %1 - Sie haben %1 gelöscht + + + %nm + + + + %nm + - - You created %1 - Sie haben %1 erstellt + + 1m + 1m - - You changed %1 - Sie haben %1 geändert + + Could not create debug archive in selected location! + Es konnte kein Debug-Archiv am ausgewählten Ort erstellt werden! - - Synced %1 - %1 synchronisiert - - - - %nd - delay in days after an activity - - %nd - %nd - + + Failed to create debug archive + Fehler beim Erstellen des Debug-Archivs - - in the future - in der Zukunft - - - - %nh - delay in hours after an activity - - %nh - %nh - + + in the future + in der Zukunft - - now - jetzt + + New folder + Neuer Ordner - - 1m - one minute after activity date and time - 1m - - - - %nm - delay in minutes after an activity - - %nm - %nm - + + now + jetzt - - Some time ago - Vor einiger Zeit + + Paths beginning with '#' character are not supported in VFS mode. + Pfade, die mit dem Zeichen '#' beginnen, werden im VFS-Modus nicht unterstützt. - - %1: %2 - this displays an error string (%2) for a file %1 - %1: %2 + + Some time ago + Vor einiger Zeit - - Paths beginning with '#' character are not supported in VFS mode. - Pfade, die mit dem Zeichen '#' beginnen, werden im VFS-Modus nicht unterstützt. + + Synced %1 + %1 synchronisiert - - Failed to create debug archive - + + The directory %1 cannot be part of your sync directory. Please choose another folder. + Das Verzeichnis %1 kann nicht Teil Ihres Synchronisationsverzeichnisses sein. Bitte wählen Sie einen anderen Ordner. - - Could not create debug archive in selected location! - + + You changed %1 + Sie haben %1 geändert - - The directory %1 cannot be part of your sync directory. Please choose another folder. - + + You created %1 + Sie haben %1 erstellt - - Reply - Antworten + + You deleted %1 + Sie haben %1 gelöscht - - - ResolveConflictsDialog - - Solve sync conflicts - Synchronisationskonflikte lösen + + You renamed %1 + Sie haben %1 umbenannt + + + ResolveConflictsDialog - - %1 files in conflict - indicate the number of conflicts to resolve - - %1 Dateikonflikt - %1 Dateikonflikte - - - - - Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - Wählen Sie, ob Sie die lokale Version, die Serverversion oder beide behalten möchten. Wenn Sie beide auswählen, wird dem Namen der lokalen Datei eine Nummer hinzugefügt. + + %1 files in conflict + + %1 Datei im Konflikt + %1 Dateien im Konflikt + %1 Dateien im Konflikt + - - All local versions - Alle lokalen Versionen + + All local versions + Alle lokalen Versionen - - All server versions - Alle Serverversionen + + All server versions + Alle Serverversionen - - Resolve conflicts - Konflikte lösen + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. + Wählen Sie, ob Sie die lokale Version, die Serverversion oder beide behalten möchten. Wenn Sie beide auswählen, wird dem Namen der lokalen Datei eine Nummer hinzugefügt. - - Cancel - Abbrechen + + Resolve conflicts + Konflikte lösen - - - SesErrorBox - - Error - Fehler + + Solve sync conflicts + Synchronisationskonflikte lösen - - + + SesTrayHeader - - Website - + + Open local or group folders + Lokale- oder Gruppen-Ordner öffnen - - Open Nextcloud in browser - + + Open Nextcloud in browser + HiDrive Next im Browser öffnen - - Open local or group folders - + + Website + Website - - + + ShareDelegate - - Create a new share link - Neuen Freigabe-Link erstellen - - - - Copy share link location - Standort des Freigabelinks kopieren + + Copied! + Kopiert! - - Copied! - Kopiert! + + Copy share link location + Standort des Freigabelinks kopieren - - Share options - Freigabeoptionen + + Create a new share link + Neuen Freigabe-Link erstellen - - + + ShareDetailsPage - - An error occurred setting the share password. - Es ist ein Fehler beim Festlegen des Freigabekennworts aufgetreten. + + Add another link + Weiteren Link hinzufügen - Edit share - Freigabe bearbeiten + + Allow resharing + Weiterteilen erlauben - - Dismiss - Verwerfen + + Allow upload and editing + Hochladen und Bearbeiten erlauben - Share label - Freigabe-Label + + An error occurred setting the share password. + Es ist ein Fehler beim Festlegen des Freigabekennworts aufgetreten. - - - Allow upload and editing - Hochladen und Bearbeiten erlauben + + Copy share link + Freigabe-Link kopieren - - Custom Permissions - + + Custom Permissions + Benutzerdefinierte Berechtigungen - - View only - Nur anzeigen + Edit share + Freigabe bearbeiten - - File drop (upload only) - Dateien ablegen (nur Hochladen) + + Enter the note to recipient + Geben Sie eine Notiz an den Empfänger ein - - Allow resharing - Weiterteilen erlauben + + File drop (upload only) + Dateien ablegen (nur Hochladen) - - Hide download - Download verbergen + + Hide download + Download verbergen - - Password protect - Passwortschutz + + Note to recipient + Notiz an Empfänger - - Set expiration date - Ablaufdatum setzen + + Password protect + Passwortschutz - - Note to recipient - Notiz an Empfänger + + Set expiration date + Ablaufdatum setzen - - Enter the note to recipient - + Share label + Freigabe-Label - - Unshare - Freigabe aufheben + + Share link copied! + Freigabelink kopiert! - - Add another link - Weiteren Link hinzufügen + + Unshare + Freigabe aufheben - - Share link copied! - Freigabelink kopiert! + + View only + Nur anzeigen - - - Copy share link - Freigabe-Link kopieren - - - + + ShareView - - Password required for new share - Passwort für neue Freigabe erforderlich + + Password required for new share + Passwort für neue Freigabe erforderlich - - Share password - Freigabe-Passwort + + Share password + Freigabe-Passwort - - Sharing is disabled - Teilen ist deaktiviert + + Sharing is disabled + Teilen ist deaktiviert - - This item cannot be shared. - Dieses Element kann nicht geteilt werden + + Sharing is disabled. + Teilen ist deaktiviert. - - Sharing is disabled. - Teilen ist deaktiviert. + + This item cannot be shared. + Dieses Element kann nicht geteilt werden - - + + ShareeSearchField - - Search for users or groups… - Suche nach Benutzern oder Gruppen… - - - - Sharing is not available for this folder - Teilen ist für diesen Ordner nicht verfügbar + + Search for users or groups… + Suche nach Benutzern oder Gruppen… - - - SyncJournalDb - Failed to connect database. - Fehler beim Verbinden mit der Datenbank. + + Sharing is not available for this folder + Teilen ist für diesen Ordner nicht verfügbar - - + + SyncStatus - - Sync now - Jetzt synchronisieren - - - - Resolve conflicts - Konflikte lösen + + Sync now + Jetzt synchronisieren - - + + TalkReplyTextField - - Reply to … - Antworten an … + + Reply to … + Antworten an … - - Send reply to chat message - Antwort auf Chat-Nachricht senden + + Send reply to chat message + Antwort auf Chat-Nachricht senden - - + + TestSetUserStatusDialog - - - 1 day - 1 Tag - - - - - - - - Don't clear - Nicht löschen - - - - - - - - 1 hour - 1 Stunde - - - - - - - 30 minutes - 30 Minuten + + 7 days + 7 Tage - - - - - 4 hours - 4 Stunden - - - - - - Today - Heute - - - - - - This week - Diese Woche - - - - Less than a minute - Weniger als eine Minute - - - - 1 minute - 1 Minute - - - - 7 days - - - - - Could not fetch predefined statuses. Make sure you are connected to the server. - Vordefinierte Status konnten nicht abgerufen werden. Stellen Sie bitte sicher, dass Sie mit dem Server verbunden sind. - - - - Could not fetch status. Make sure you are connected to the server. - Benutzerstatus konnte nicht abgerufen werden. Bitte sicherstellen, dass Sie mit dem Server verbunden sind. - - - - Status feature is not supported. You will not be able to set your status. - Benutzerstatus-Funktion wird nicht unterstützt. Benutzerstatus kann nicht gesetzt werden. - - - - Could not set status. Make sure you are connected to the server. - Benutzerstatus konnte nicht gesetzt werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. - - - - Emojis are not supported. Some status functionality may not work. - Emoji-Funktion wird nicht unterstützt. Einige Benutzerstatus-Funktionen funktionieren unter Umständen nicht. - - - - Could not clear status message. Make sure you are connected to the server. - Statusnachricht konnte nicht gelöscht werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. - - - + + TrayFoldersMenuButton - - Files - - - - - Open local or group folders - Lokale- oder Gruppen-Ordner öffnen + + Files + Dateien - - Open local folder - Lokalen Ordner öffnen + Group folder button + Schaltfläche Gruppenordner - - Connected - Verbunden + + Open %1 in file explorer + "%1" im Dateiexplorer öffnen - - Disconnected - Getrennt + + Open group folder "%1" + Gruppenordner "%1" öffnen - Group folder button - Schaltfläche Gruppenordner + + Open local folder + Lokalen Ordner öffnen - - Open local folder "%1" - Lokalen Ordner "%1" öffnen + + Open local folder "%1" + Lokalen Ordner "%1" öffnen - - Open group folder "%1" - Gruppenordner "%1" öffnen + + User group and local folders menu + Menü für Benutzergruppen und lokale Ordner - - - Open %1 in file explorer - "%1" im Dateiexplorer öffnen - - - - User group and local folders menu - Menü für Benutzergruppen und lokale Ordner - - - + + TrayWindowAccountMenu - - Current account - Aktuelles Konto + + Account switcher and settings menu + Konto-Umschalter und Einstellungsmenü - - Resume sync for all - Synchronisierung für alle fortsetzen + + Current account + Aktuelles Konto - - Pause sync for all - Synchronisierung für alle pausieren + + Current account avatar + Avatar des aktuellen Kontos - - Add account - Konto hinzufügen + + Current account status is do not disturb + Aktueller Kontostatus ist "Nicht stören" - - Settings - Einstellungen + + Current account status is online + Aktueller Kontostatus ist online - - Exit - Beenden + + Exit + Beenden - - - Current account avatar - Avatar des aktuellen Kontos - - - - Current account status is online - Aktueller Kontostatus ist online - - - - Current account status is do not disturb - Aktueller Kontostatus ist "Nicht stören" - - - - Account switcher and settings menu - Konto-Umschalter und Einstellungsmenü - - - + + TrayWindowHeaderBar - - Website - + + More apps + Weitere Apps - - Open Nextcloud in browser - + + Open %1 in browser + %1 im Browser öffnen - - Open local or group folders - + + Open Nextcloud Talk in browser + Nextcloud Talk im Browser öffnen - - - Open Nextcloud Talk in browser - Nextcloud Talk im Browser öffnen - - - - More apps - Weitere Apps - - - - Open %1 in browser - %1 im Browser öffnen - - - + + UnifiedSearchInputContainer - - Search files, messages, events … - Suche Dateien, Nachrichten und Termine … + + Search files, messages, events … + Suche Dateien, Nachrichten und Termine … - - + + UnifiedSearchResultFetchMoreTrigger - - Load more results - Weitere Ergebnisse laden + + Load more results + Weitere Ergebnisse laden - - + + UnifiedSearchResultItemSkeleton - - Search result skeleton. - Suchergebnis-Skelett. - - - - UnifiedSearchResultListItem - - - Load more results - Weitere Ergebnisse laden + + Search result skeleton. + Suchergebnis-Skelett. - - + + UnifiedSearchResultNothingFound - - No results for - Keine Ergebnisse für + + No results for + Keine Ergebnisse für - - + + UnifiedSearchResultSectionItem - - Search results section %1 - Suchergebnisse Abschnitt %1 + + Search results section %1 + Suchergebnisse Abschnitt %1 - - + + UserLine - - Switch to account - Zu Konto wechseln - - - Current account status is online - Aktueller Kontostatus ist online + + Account actions + Konto-Aktionen - Current account status is do not disturb - Aktueller Kontostatus ist "Nicht stören" + + Remove account + Konto löschen - - Account actions - Konto-Aktionen + + Set status + Status setzen - - Set status - Status setzen + + Switch to account + Zu Konto wechseln - - - - Log out - Abmelden - - - - - Log in - Anmelden - - - - Remove account - Konto löschen - - - + + UserStatusSelector - - Online status - Online-Status + + Appear offline + Offline erscheinen - - Online - Online + + Away + Abwesend - - Away - Abwesend + + Clear status message + Statusnachricht löschen - - Do not disturb - Nicht stören + + Clear status message after + Statusnachricht löschen nach - - Mute all notifications - Alle Benachrichtigungen stummschalten + + Do not disturb + Nicht stören - - Invisible - Unsichtbar + + Invisible + Unsichtbar - - Appear offline - Offline erscheinen + + Mute all notifications + Alle Benachrichtigungen stummschalten - - Status message - Statusnachricht + + Online + Online - - What is your status? - Wie ist Ihr Status? + + Online status + Online-Status - - Clear status message after - Statusnachricht löschen nach + + Set status message + Statusnachricht setzen - - Cancel - Abbrechen + + Status message + Statusnachricht - - Clear status message - Statusnachricht löschen + + What is your status? + Wie ist Ihr Status? - - - Set status message - Statusnachricht setzen - - - + + Utility - - %L1 B - %L1 B + + %L1 B + %L1 B - - %L1 TB - %L1 TB + + %L1 GB + %L1 GB - - %L1 GB - %L1 GB + + %L1 KB + %L1 KB - - %L1 MB - %L1 MB + + %L1 MB + %L1 MB - - %L1 KB - %L1 KB + + %L1 TB + %L1 TB - - %n year(s) - - %n Jahr - %n Jahre - + + %n day(s) + + + + + - - %n month(s) - - %n Monat - %n Monate - + + %n hour(s) + + + + + - - %n day(s) - - %n Tag - %n Tage - + + %n minute(s) + + + + + - - %n hour(s) - - %n Stunde - %n Stunden - + + %n month(s) + + + + + - - %n minute(s) - - %n Minute - %n Minuten - + + %n second(s) + + + + + - - %n second(s) - - %n Sekunde - %n Sekunden - - - - - %1 %2 - %1 %2 - - - - ValidateChecksumHeader - - The checksum header is malformed. - Der Prüfsummen-Header hat ein fehlerhaftes Format. - - - The checksum header contained an unknown checksum type "%1" - Der Prüfsummen-Header enthielt einen unbekannten Prüfsummentyp "%1" - - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Die heruntergeladene Datei stimmt nicht mit der Prüfsumme überein, sie wird fortgesetzt. "%1" != "%2" - - - + + %n year(s) + + + + + + + + Window - - Nextcloud desktop main dialog - Nextcloud Desktop-Hauptdialog - - - Current account - Aktuelles Konto - - - Resume sync for all - Synchronisierung für alle fortsetzen - - - Pause sync for all - Synchronisierung für alle pausieren - - - Add account - Konto hinzufügen - - - Add new account - Neues Konto hinzufügen - - - Settings - Einstellungen - - - Exit - Beenden - - - Current account avatar - Avatar des aktuellen Kontos - - - Current account status is online - Aktueller Kontostatus ist online - - - Current account status is do not disturb - Aktueller Kontostatus ist "Nicht stören" - - - Account switcher and settings menu - Konto-Umschalter und Einstellungsmenü - - - Open local or group folders - Lokalen oder Gruppenordner öffnen + Add new account + Neues Konto hinzufügen - Open Nextcloud Talk in browser - Nextcloud Talk im Browser öffnen + + New activities + Neue Aktivitäten - More apps - Weitere Apps + + Nextcloud desktop main dialog + Nextcloud Desktop-Hauptdialog - Open %1 in browser - %1 im Browser öffnen + + Unified search results list + Einheitliche Suchergebnisliste - - - Unified search results list - Einheitliche Suchergebnisliste - - - - New activities - Neue Aktivitäten - - - + + main.cpp - - System Tray not available - Benachrichtigungsfeld (Taskleiste) ist nicht verfügbar. - - - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - %1 benötigt ein funktionierendes Benachrichtigungsfeld. Falls Sie XFCE einsetzen, dann folgen Sie bitte <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">diesen Anweisungen</a>. Andernfalls installieren Sie bitte ein Benachrichtigungsfeld wie zum Beispiel "Trayer“ und versuchen es nochmal. + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. + %1 benötigt ein funktionierendes Benachrichtigungsfeld. Falls Sie XFCE einsetzen, dann folgen Sie bitte <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">diesen Anweisungen</a>. Andernfalls installieren Sie bitte ein Benachrichtigungsfeld wie zum Beispiel "Trayer“ und versuchen es nochmal. - - - nextcloudTheme::about() - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Gebaut von der git-Revision <a href="%1">%2</a> auf %3, %4 verwendet Qt %5, %6</small></p> + + System Tray not available + Benachrichtigungsfeld (Taskleiste) ist nicht verfügbar. - - + + nextcloudTheme::aboutInfo() - - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Erstellt aus der Git-Revision <a href="%1">%2</a> auf %3, %4 unter Verwendung von Qt %5, %6</small></p> + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Gebaut von der git-Revision <a href="%1">%2</a> auf %3, %4 verwendet Qt %5, %6</small></p> - - + + progress - - Virtual file created - Virtuelle Datei erstellt - - - - Replaced by virtual file - Ersetzt durch virtuelle Datei - - - - Downloaded - Heruntergeladen - - - - Uploaded - Hochgeladen + + Deleted + Gelöscht - - Server version downloaded, copied changed local file into conflict file - Serverversion heruntergeladen. Die bearbeitete lokale Datei wurde in eine Konfliktdatei kopiert. + + Downloaded + Heruntergeladen - - Server version downloaded, copied changed local file into case conflict conflict file - Serverversion heruntergeladen, geänderte lokale Datei in Fallkonflikt-Konfliktdatei kopiert + + downloading + Herunterladen - - Deleted - Gelöscht + + error + Fehler - - Moved to %1 - Verschoben nach %1 + + Filesystem access error + Zugriffsfehler im Dateisystem - - Ignored - Ignoriert + + Ignored + Ignoriert - - Filesystem access error - Zugriffsfehler im Dateisystem + + Moved to %1 + Verschoben nach %1 - - Error - Fehler + + moving + Verschiebe - - Updated local metadata - Lokale Metadaten aktualisiert + + Replaced by virtual file + Ersetzt durch virtuelle Datei - - Updated local virtual files metadata - + + Server version downloaded, copied changed local file into case conflict conflict file + Serverversion heruntergeladen, geänderte lokale Datei in Fallkonflikt-Konfliktdatei kopiert - - - Unknown - Unbekannt + + Server version downloaded, copied changed local file into conflict file + Serverversion heruntergeladen. Die bearbeitete lokale Datei wurde in eine Konfliktdatei kopiert. - - downloading - Herunterladen + + Unknown + Unbekannt - - uploading - Lade hoch + + Updated local metadata + Lokale Metadaten aktualisiert - - deleting - Lösche + + Updated local virtual files metadata + Aktualisierte Metadaten für lokale virtuelle Dateien - - moving - Verschiebe + + updating local metadata + Aktualisiere lokale Metadaten - - ignoring - ignoriere + + updating local virtual files metadata + Aktualisierung der Metadaten lokaler virtueller Dateien - - error - Fehler + + Uploaded + Hochgeladen - - updating local metadata - Aktualisiere lokale Metadaten + + uploading + Lade hoch - - updating local virtual files metadata - + + Virtual file created + Virtuelle Datei erstellt - - + + theme - - Status undefined - Status undefiniert + + Aborting … + Breche ab … - - Waiting to start sync - Warte, um mit der Synchronisierung zu beginnen + + Preparing to sync + Synchronisierung wird vorbereitet - - Sync is running - Synchronisierung läuft + + Setup Error + Installationsfehler - - Sync Success - Synchronisierung erfolgreich + + Status undefined + Status undefiniert - - Sync Success, some files were ignored. - Synchronisierung abgeschlossen, einige Dateien wurden ignoriert. + + Sync Error + Synchronisierungsfehler - - Sync Error - Synchronisierungsfehler + + Sync is paused + Synchronisierung ist angehalten. - - Setup Error - Installationsfehler + + Sync is running + Synchronisierung läuft - - Preparing to sync - Synchronisierung wird vorbereitet + + Sync Success + Synchronisierung erfolgreich - - Aborting … - Breche ab … + + Sync Success, some files were ignored. + Synchronisierung abgeschlossen, einige Dateien wurden ignoriert. - - Sync is paused - Synchronisierung ist angehalten. + + Waiting to start sync + Warte, um mit der Synchronisierung zu beginnen - - + + utility - - Could not open browser - Konnte Browser nicht öffnen + + Always available locally + Immer lokal verfügbar - - There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - Die URL %1 konnte aufgrund eines Fehlers beim Start des Browsers nicht aufgerufen werden. Ist vielleicht kein Standardbrowser konfiguriert? + + Available online only + Nur online verfügbar - - Could not open email client - Die E-Mail-Anwendung konnte nicht geöffnet werden + + Could not open browser + Konnte Browser nicht öffnen - - There was an error when launching the email client to create a new message. Maybe no default email client is configured? - Fehler beim Öffnen der E-Mail-Anwendung zum Erstellen einer neuen Nachricht. Vielleicht ist keine Standard-E-Mail Anwendung eingerichtet? + + Could not open email client + Die E-Mail-Anwendung konnte nicht geöffnet werden - - Always available locally - Immer lokal verfügbar + + Currently available locally + Derzeit lokal verfügbar - - Currently available locally - Derzeit lokal verfügbar + + Free up local space + Lokalen Speicherplatz freigeben - - Some available online only - Einige sind nur online abrufbar + + Make always available locally + Immer lokal verfügbar machen - - Available online only - Nur online verfügbar + + Some available online only + Einige sind nur online abrufbar - - Make always available locally - Immer lokal verfügbar machen + + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? + Die URL %1 konnte aufgrund eines Fehlers beim Start des Browsers nicht aufgerufen werden. Ist vielleicht kein Standardbrowser konfiguriert? - - Free up local space - Lokalen Speicherplatz freigeben + + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + Fehler beim Öffnen der E-Mail-Anwendung zum Erstellen einer neuen Nachricht. Vielleicht ist keine Standard-E-Mail Anwendung eingerichtet? - + diff --git a/translations/client_en.ts b/translations/client_en.ts index 53ac724f2c5af..947bb0c82fc95 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -1,7023 +1,6314 @@ - - - - + + + + + &Automatically check for Updates + &Automatically check for Updates + + + &Launch on System Startup + &Launch on System Startup + + + Copy link + Copy link + + + No Proxy + No Proxy + + + Remove All Files? + Remove All Files? + + + Show Call Notifications + + + + Show Server &Notifications + Show Server &Notifications + + + Show sync folders in &Explorer's navigation pane + + + + Use &Monochrome Icons + Use &Monochrome Icons + + + ActivityItem - - Open %1 locally - + + In %1 + In %1 - - In %1 - + + Open %1 locally + Open %1 locally - - + + ActivityItemContent - - Open file details - + + Dismiss + Dismiss - - Dismiss - + + Open file details + Open file details - - + + ActivityList - - Activity list - + + Activity list + Activity list - - No activities yet - + + No activities yet + No activities yet - - + + BasicComboBox - - Clear status message menu - + + Clear status message menu + Delete status message menu - - + + CallNotificationDialog - - Talk notification caller avatar - + + Answer Talk call notification + - - Answer Talk call notification - + + Decline + Decline - - Decline - + + Decline Talk call notification + Decline Talk call notification - - Decline Talk call notification - + + Talk notification caller avatar + Talk notification caller avatar - - + + CloudProviderWrapper - - %1 (%2, %3) - + + %1 (%2, %3) + %1 (%2, %3) - - Checking for changes in "%1" - + + Checking for changes in "%1" + Checking for changes in "%1" - - Syncing %1 of %2 (%3 left) - + + Help + Help - - Syncing %1 of %2 - + + Log out + Log out - - Syncing %1 (%2 left) - + + No recently changed files + - - Syncing %1 - + + Open website + Open website - - - No recently changed files - + + Pause synchronization + - - Sync paused - + + Quit sync client + - - Syncing - + + Recently changed + - - Open website - + + Settings + Settings - - Recently changed - + + Sync paused + Sync paused - - Pause synchronization - + + Syncing + Syncing - - Help - + + Syncing %1 + - - Settings - + + Syncing %1 (%2 left) + - - Log out - + + Syncing %1 of %2 + - - Quit sync client - + + Syncing %1 of %2 (%3 left) + - - + + ConflictDelegate - - Local version - + + Local version + - - Server version - + + Server version + - - + + CrashReporter - - Tomahawk Crash Reporter - - - - - <html><head/><body><p><br/></p></body></html> - + + <html><head/><body><p><br/></p></body></html> + - - Abort - + + Abort + Abort - - Send this report - + + Close + - - Don't send - + + Don't send + - - You can disable sending crash reports in the configuration dialog. - + + Gathering debug information... + Gathering debug information... - - - - We cannot gather useful debug information on your system. - + + Ready to send debug information (<a href="%1">view backtrace</a>). + - - - - - - Close - + + Send this report + - - Ready to send debug information (<a href="%1">view backtrace</a>). - + + Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. + - - Gathering debug information... - + + Tomahawk Crash Reporter + - - Uploaded %L1 of %L2 KB. - + + Uploaded %L1 of %L2 KB. + - - Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. - + + We cannot gather useful debug information on your system. + - - Failed to send crash info. - + + You can disable sending crash reports in the configuration dialog. + - - + + EditFileLocallyLoadingDialog - - Opening file for local editing - + + Opening file for local editing + - - + + EmojiPicker - - No recent emojis - + + No recent emojis + - - + + ErrorBox - - Error - + + Error + Error - - + + FakeHangingReply - - Operation canceled - + + Operation canceled + Operation canceled - - + + FileDetailsPage - - Dismiss - + Sharing + Sharing - - + + FileDetailsWindow - - File details of %1 · %2 - + + File details of %1 · %2 + - - + + FileProviderEvictionDialog - - Evict materialised files - + + Evict materialised files + - - Materialised items - + + Materialised items + - - Reload - + + Reload + - - + + FileProviderFastEnumerationSettings - - Enable fast sync - + + Enable fast sync + - - Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + - - + + FileProviderFileDelegate - - Delete - + + Delete + - - + + FileProviderSettings - - Virtual files settings - + + Advanced + - - General settings - + + Create debug archive + - - Enable virtual files - + + Enable virtual files + - - Advanced - + + General settings + - - Signal file provider domain - + + Signal file provider domain + - - Create debug archive - + + Virtual files settings + - - + + FileProviderStorageInfo - - Local storage use - + + %1 GB of %2 GB remote files synced + - - %1 GB of %2 GB remote files synced - + + Evict local copies... + Evict local copies... - - Evict local copies... - + + Local storage use + - - + + FileProviderSyncStatus - - Syncing - + + All synced! + All synced! + + + FileSystem - - All synced! - + Could not make directories in trash + Could not make directories in trash + + + Could not move "%1" to "%2" + Could not move "%1" to "%2" + + + + Could not remove folder "%1" + - - - FileSystem - - Error removing "%1": %2 - + + Error removing "%1": %2 + - - Could not remove folder "%1" - + Moving to the trash is not implemented on this platform + Moving to the trash is not implemented on this platform - - + + Flow2AuthWidget - - Browser Authentication - + + An error occurred while connecting. Please try again. + - - Logo - + + Browser Authentication + - - Switch to your browser to connect your account - + + Copy Link + Copy Link - - Copy Link - + + Logo + Logo - - Reopen Browser - + + Reopen Browser + Reopen Browser - - An error occurred while connecting. Please try again. - + + Switch to your browser to connect your account + - - + + FolderWizardSelectiveSync - - Add Folder Sync - + + Add Folder Sync + Add Folder Sync - - Step 3 of 3: Selektive Synchronisation - + + Step 3 of 3: Selektive Synchronisation + Step 3 of 3: Selektive Synchronisation - - + + FolderWizardSourcePage - - Add Folder Sync - + + &Choose + &Choose - - Step 1 of 3: Select local folder - + &Choose … + &Choose … - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - + Pick a local folder on your computer to sync + Pick a local folder on your computer to sync - - &Choose - + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized. - - + + + Step 1 of 3: Select local folder + Step 1 of 3: Select local folder + + + FolderWizardTargetPage - - Add Folder Sync - + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Both folders are permanently linked and the respective contents are automatically synchronized and updated. - - Step 2 of 3: Directory in your %1 - + + Create folder + Create folder - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - + + Folders + - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - - Refresh - + + Refresh + Refresh - - Create folder - + Select a remote destination folder + Select a remote destination folder - - Folders - + + Step 2 of 3: Directory in your %1 + Step 2 of 3: Directory in your %1 - - + + KMessageWidget - - &Close - + + &Close + &Close - - Close message - + + Close message + - - + + OCC::AbstractNetworkJob - - Connection timed out - + + Connection timed out + - - Unknown error: network reply was deleted - + + Server replied "%1 %2" to "%3 %4" + - - Server replied "%1 %2" to "%3 %4" - + + Unknown error: network reply was deleted + - - + + OCC::Account - - File %1 is already locked by %2. - + + File %1 is already locked by %2. + - - Lock operation on %1 failed with error %2 - + + Lock operation on %1 failed with error %2 + - - Unlock operation on %1 failed with error %2 - + + Unlock operation on %1 failed with error %2 + - - + + OCC::AccountManager - - %1 accounts were detected from a legacy desktop client. + + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - + %1 accounts were detected from a legacy desktop client. +Should the accounts be imported? - - 1 account was detected from a legacy desktop client. + + 1 account was detected from a legacy desktop client. Should the account be imported? - + + + + An existing configuration from a legacy desktop client was detected. +Should an account import be attempted? + An existing configuration from a legacy desktop client was detected. +Should an account import be attempted? - - - Legacy import - + + Could not import accounts from legacy client configuration. + - - Import - + + Import + - - Skip - + + Legacy import + - - Could not import accounts from legacy client configuration. - + + Skip + Skip - - + + Successfully imported account from legacy client: %1 + + + + OCC::AccountSettings - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - + + (experimental) + - - Synchronize all - + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + - - Synchronize none - + + %1 as %2 + - - Apply manual changes - + + %1 in use + - - Apply - + + %1 of %2 in use + - - - Storage space: … - + + <p>Could not create local folder <i>%1</i>.</p> + - - Expand Memory - + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + - - - - Cancel - + + Apply + - - Connected with <server> as <user> - + + Apply manual changes + - - Standard file sync - + + Availability + - - Virtual file sync - + + Cancel + - - No account configured. - + + Choose what to sync + - - https://wl.hidrive.com/easy/0057 - + + Confirm Folder Sync Connection Removal + - - There are folders that have grown in size beyond %1MB: %2 - + + Connected to %1. + - - End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - + + Connected with <server> as <user> + - - This account supports end-to-end encryption - + + Connecting to %1 … + - - End-to-end Encryption with Virtual Files - + + Could not encrypt folder because the folder does not exist anymore + - - You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - + + Create new folder + - - - Do not encrypt folder - + + Currently there is no storage usage information available. + - - - Encrypt folder - + + Disable encryption + - - End-to-end Encryption - + + Disable end-to-end encryption + - - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. -<b>This process is not reversible. Are you sure you want to proceed?</b> - + + Disable end-to-end encryption for %1? + - - Disable encryption - + + Disable support + - - Display mnemonic - + + Disable virtual file support … + - - End-to-end encryption has been enabled for this account - + + Disable virtual file support? + - - Warning - + + Display mnemonic + - - Please wait for the folder to sync before trying to encrypt it. - + + Do not encrypt folder + - - The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - + + Edit Ignored Files + - - The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - + + Enable virtual file support %1 … + - - End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. -Would you like to set up end-to-end encryption? - + + Encrypt + - - You cannot encrypt a folder with contents, please remove the files. -Wait for the new sync, then encrypt it. - + + Encrypt folder + - - Encryption failed - + + Encryption failed + - - Could not encrypt folder because the folder does not exist anymore - + + End-to-end Encryption + - - Encrypt - + + End-to-end encryption has been enabled for this account + - - - Edit Ignored Files - + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. + - - - Create new folder - + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. +Would you like to set up end-to-end encryption? + - - - Availability - + + End-to-end encryption mnemonic + - - Choose what to sync - + + End-to-end Encryption with Virtual Files + - - Force sync now - + + Expand Memory + Expand Memory - - Restart sync - + + Folder creation failed + - - Remove folder sync connection - + + Force sync now + - - Disable virtual file support … - + + https://wl.hidrive.com/easy/0057 + https://wl.hidrive.com/easy/0077 - - Enable virtual file support %1 … - + + No %1 connection configured. + - - (experimental) - + + No account configured. + - - Folder creation failed - + No connection to %1 at %2. + No connection to %1 at %2. - - Confirm Folder Sync Connection Removal - + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - - Remove Folder Sync Connection - + + Open folder + - - Disable virtual file support? - + + Pause sync + - - This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. - -The only advantage of disabling virtual file support is that the selective sync feature will become available again. - -This action will abort any currently running synchronization. - + + Please wait for the folder to sync before trying to encrypt it. + + + + + Remove folder sync connection + - - Disable support - + + Remove Folder Sync Connection + - - End-to-end encryption mnemonic - + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. + - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - + + Restart sync + - - Disable end-to-end encryption - + + Resume sync + - - Disable end-to-end encryption for %1? - + + Server %1 is currently being redirected, or your connection is behind a captive portal. + - - Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - + + Server %1 is currently in maintenance mode. + - - Sync Running - + + Server %1 is temporarily unavailable. + - - The syncing operation is running.<br/>Do you want to terminate it? - + + Server configuration error: %1 at %2. + - - Storage space %1% occupied - + + Set up encryption + - - %1 in use - + + Signed out from %1. + - - Set up encryption - + + Standard file sync + - - Connected to %1. - + + Storage space %1% occupied + Storage space %1% occupied - - Server %1 is temporarily unavailable. - + + Storage space: … + - - Server %1 is currently in maintenance mode. - + + Sync Running + - - Signed out from %1. - + + Synchronize all + - - There are folders that were not synchronized because they are too big: - + + Synchronize none + - - There are folders that were not synchronized because they are external storages: - + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully + - - There are folders that were not synchronized because they are too big or external storages: - + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully + - - - Open folder - + + The server version %1 is unsupported! Proceed at your own risk. + - - Resume sync - + + The syncing operation is running.<br/>Do you want to terminate it? + - - Pause sync - + + There are folders that have grown in size beyond %1MB: %2 + - - <p>Could not create local folder <i>%1</i>.</p> - + + There are folders that were not synchronized because they are external storages: + - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - + + There are folders that were not synchronized because they are too big or external storages: + - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - + + There are folders that were not synchronized because they are too big: + - - %1 of %2 in use - + + This account supports end-to-end encryption + - - Currently there is no storage usage information available. - + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + +The only advantage of disabling virtual file support is that the selective sync feature will become available again. + +This action will abort any currently running synchronization. + + + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> + + + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> - - %1 as %2 - + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + - - The server version %1 is unsupported! Proceed at your own risk. - + + Unable to connect to %1. + - - Server %1 is currently being redirected, or your connection is behind a captive portal. - + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + - - Connecting to %1 … - + + Virtual file sync + - - Unable to connect to %1. - + + Warning + - - Server configuration error: %1 at %2. - + + You cannot encrypt a folder with contents, please remove the files. +Wait for the new sync, then encrypt it. + - - No %1 connection configured. - + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". + - - + + OCC::AccountSetupFromCommandLineJob - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + - - There was an invalid response to an authenticated WebDAV request - + + There was an invalid response to an authenticated WebDAV request + - - + + OCC::AccountState - - Signed out - + + Asking Credentials + - - Disconnected - + + Configuration error + - - Connected - + + Connected + - - Service unavailable - + + Disconnected + - - Maintenance mode - + + Maintenance mode + - - Redirect detected - + + Network error + - - Network error - + + Redirect detected + - - Configuration error - + + Service unavailable + - - Asking Credentials - + + Signed out + - - Unknown account state - + + Unknown account state + - - + + OCC::ActivityListModel - - For more activities please open the Activity app. - + + Fetching activities … + - - Fetching activities … - + + Files from the ignore list as well as symbolic links are not synced. + - - Network error occurred: client will retry syncing. - + + For more activities please open the Activity app. + - - Files from the ignore list as well as symbolic links are not synced. - + + Network error occurred: client will retry syncing. + - - + + OCC::AddCertificateDialog - - SSL client certificate authentication - + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. + - - This server probably requires a SSL client certificate. - + + Browse … + - - Certificate & Key (pkcs12): - + + Certificate & Key (pkcs12): + - - Certificate password: - + + Certificate files (*.p12 *.pfx) + - - An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - + + Certificate password: + - - Browse … - + + Select a certificate + - - Select a certificate - + + SSL client certificate authentication + - - Certificate files (*.p12 *.pfx) - + + This server probably requires a SSL client certificate. + - - + + OCC::Application - - Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - + + %1 accounts + - - newer - newer software version - + + %1 folders + - - older - older software version - + + 1 account + - - ignoring - + + 1 folder + - - deleting - + + Continue + - - Quit - + + deleting + - - Continue - + + Error accessing the configuration file + - - %1 accounts - number of accounts imported - + + ignoring + - - 1 account - + + Imported %1 and %2 from a legacy desktop client. +%3 + - - %1 folders - number of folders imported - + + newer + - - 1 folder - + + older + - - Legacy import - + + Quit + - - Imported %1 and %2 from a legacy desktop client. -%3 - number of accounts and folders imported. list of users. - + + Quit %1 + - - Error accessing the configuration file - + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. + - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + - - - Quit %1 - - - - + + OCC::AuthenticationDialog - - Authentication Required - + + &Password: + - - Enter username and password for "%1" at %2. - + + &Username: + - - &Username: - + + Authentication Required + - - &Password: - + + Enter username and password for "%1" at %2. + - - + + OCC::BasePropagateRemoteDeleteEncrypted - - "%1 Failed to unlock encrypted folder %2". - + "%1 Failed to unlock encrypted folder %2". + - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + - - + + OCC::BulkPropagatorJob - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - + + Error updating metadata: %1 + - - File %1 has invalid modified time. Do not upload to the server. - + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + - - File Removed (start upload) %1 - + + File %1 has invalid modification time. Do not upload to the server. + - - File %1 has invalid modification time. Do not upload to the server. - + + File %1 has invalid modified time. Do not upload to the server. + - - Local file changed during syncing. It will be resumed. - + + File Removed (start upload) %1 + - - - Local file changed during sync. - + + Local file changed during sync. + - - Network error: %1 - + + Local file changed during syncing. It will be resumed. + - - Error updating metadata: %1 - + + Network error: %1 + - - The file %1 is currently in use - + + Restoration failed: %1 + - - The local file was removed during sync. - + + The file %1 is currently in use + - - Restoration failed: %1 - + + The local file was removed during sync. + - - + + OCC::CaseClashConflictSolver - - Cannot rename file because a file with the same name already exists on the server. Please pick another name. - + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + - - Could not rename file. Please make sure you are connected to the server. - + + Could not rename file. Please make sure you are connected to the server. + - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - + + Failed to fetch permissions with error %1 + - - Failed to fetch permissions with error %1 - + + Filename contains leading and trailing spaces. + - - Filename contains leading and trailing spaces. - + + Filename contains leading spaces. + - - Filename contains leading spaces. - + + Filename contains trailing spaces. + - - Filename contains trailing spaces. - + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + - - + + OCC::CaseClashFilenameDialog - - Case Clash Conflict - - - - - The file could not be synced because it generates a case clash conflict with an existing file on this system. - - - - - Error - - - - - Existing file - - - - - file A - + + %1 does not support equal file names with only letter casing differences. + - - - today - + + 0 byte + - - - 0 byte - + + Case Clash Conflict + - - - Open existing file - + + Case clashing file + - - Case clashing file - + + Existing file + - - file B - + + file A + - - - Open clashing file - + + file B + - - Please enter a new name for the clashing file: - + + Filename contains illegal characters: %1 + - - New filename - + + New filename + - - Rename file - + + Open clashing file + - - The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - + + Open existing file + - - %1 does not support equal file names with only letter casing differences. - + + Please enter a new name for the clashing file: + - - Filename contains leading and trailing spaces. - + + Rename file + - - Filename contains leading spaces. - + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + - - Filename contains trailing spaces. - + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + - - Use invalid name - + + today + - - Filename contains illegal characters: %1 - + + Use invalid name + - - + + OCC::CleanupPollsJob - - Error writing metadata to the database - + + Error writing metadata to the database + - - + + OCC::ClientSideEncryption - - Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - + + Enter E2E passphrase + - - Enter E2E passphrase - + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + - - + + OCC::ConflictDialog - - Sync Conflict - + + <a href="%1">Open local version</a> + - - - Conflicting versions of %1. - + + <a href="%1">Open server version</a> + - - Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. - + + Click to open the file + - - Local version - + + Conflicting versions of %1. + - - - Click to open the file - + + Keep both versions + - - - today - + + Keep local version + - - - 0 byte - + + Keep selected version + - - <a href="%1">Open local version</a> - + + Keep server version + - - Server version - + + Open local version + - - <a href="%1">Open server version</a> - + + Open server version + - - - Keep selected version - + + Sync Conflict + - - Open local version - + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + - - - Open server version - - - - - Keep both versions - - - - - Keep local version - - - - - Keep server version - - - - + + OCC::ConflictSolver - - Do you want to delete the directory <i>%1</i> and all its contents permanently? - - - - - Do you want to delete the file <i>%1</i> permanently? - + + Confirm deletion + - - Confirm deletion - + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + - - - Error - + + Do you want to delete the file <i>%1</i> permanently? + - - - Moving file failed: + + Moving file failed: %1 - + - - + + OCC::ConnectionValidator - - Timeout - + + Authentication error: Either username or password are wrong. + - - The configured server for this client is too old - + + Connection issue + - - Please update to the latest server and restart the client. - + + No Nextcloud account configured + - - Connection issue - + + Please update to the latest server and restart the client. + - - Authentication error: Either username or password are wrong. - + + The configured server for this client is too old + - - No Nextcloud account configured - + + The provided credentials are not correct + - - The provided credentials are not correct - + + Timeout + - - + + OCC::DiscoveryPhase - - Error while canceling deletion of a file - + + Error while canceling deletion of %1 + - - Error while canceling deletion of %1 - + + Error while canceling deletion of a file + - - + + OCC::DiscoverySingleDirectoryJob - - - Server error: PROPFIND reply is not XML formatted! - + + Encrypted metadata setup error: initial signature from server is empty. + Encrypted metadata setup error: initial signature from server is empty. - - - Encrypted metadata setup error! - + + Encrypted metadata setup error! + - - Encrypted metadata setup error: initial signature from server is empty. - + + Server error: PROPFIND reply is not XML formatted! + - - + + OCC::DiscoverySingleLocalDirectoryJob - - Error while opening directory %1 - + + Directory not accessible on client, permission denied + - - Directory not accessible on client, permission denied - + + Directory not found: %1 + - - Directory not found: %1 - + + Error while opening directory %1 + - - Filename encoding is not valid - + + Error while reading directory %1 + - - Error while reading directory %1 - + + Filename encoding is not valid + - - + + OCC::EditLocallyJob - - Invalid token received. - + + An error occurred during data retrieval. + - - - - - - - Please try again. - + + An error occurred during setup. + - - Invalid file path was provided. - + + An error occurred trying to synchronise the file to edit locally. + - - Could not find an account for local editing. - + + An error occurred trying to verify the request to edit locally. + - - - - - - - - - Could not start editing locally. - + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + - - An error occurred trying to verify the request to edit locally. - + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + - - - Could not validate the request to open a file from server. - + + Could not find a remote file info for local editing. Make sure its path is valid. + - - - Could not find a file for local editing. Make sure its path is valid and it is synced locally. - + + Could not find an account for local editing. + - - - - - Could not find a file for local editing. Make sure it is not excluded via selective sync. - + + Could not open %1 + - - - - An error occurred during data retrieval. - + + Could not start editing locally. + - - - An error occurred trying to synchronise the file to edit locally. - + + Could not validate the request to open a file from server. + - - An error occurred during setup. - + + File %1 already locked. + - - Server error: PROPFIND reply is not XML formatted! - + + File %1 could not be locked. + - - Could not find a remote file info for local editing. Make sure its path is valid. - + + File %1 now locked. + - - Invalid local file path. - + + Invalid file path was provided. + - - Could not open %1 - + + Invalid local file path. + - - File %1 already locked. - + + Invalid token received. + - - - Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + - - File %1 now locked. - + + Please try again. + - - - File %1 could not be locked. - - - - + + OCC::EncryptFolderJob - - Could not generate the metadata for encryption, Unlocking the folder. + + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. - + - - + + OCC::EncryptedFolderMetadataHandler - - - - - - - Error fetching metadata. - + + Error fetching encrypted folder ID. + - - - - Error locking folder. - + + Error fetching metadata. + - - Error fetching encrypted folder ID. - + + Error locking folder. + - - Error parsing or decrypting metadata. - + + Error parsing or decrypting metadata. + - - Failed to upload metadata - + + Failed to upload metadata + - - + + OCC::FileDetails - - %1 second(s) ago - seconds elapsed since file last modified - - - - + + %1 day(s) ago + + + + %1 day(s) ago + - - %1 minute(s) ago - minutes elapsed since file last modified - - - - + + %1 hour(s) ago + + + + %1 hour(s) ago + - - %1 hour(s) ago - hours elapsed since file last modified - - - - + + %1 minute(s) ago + + + + %1 minute(s) ago + - - %1 day(s) ago - days elapsed since file last modified - - - - + + %1 month(s) ago + + + + %1 month(s) ago + - - %1 month(s) ago - months elapsed since file last modified - - - - + + %1 second(s) ago + + + + %1 second(s) ago + - - %1 year(s) ago - years elapsed since file last modified - - - - + + %1 year(s) ago + + + + %1 year(s) ago + - - Locked by %1 - Expires in %2 minute(s) - remaining time before lock expires - - - - - - - + + Locked by %1 - Expires in %2 minute(s) + + + + Locked by %1 - Expires in %2 minute(s) + + + + OCC::Flow2Auth - - - Error returned from the server: <em>%1</em> - + + Could not parse the JSON returned from the server: <br><em>%1</em> + - - The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - + + Error returned from the server: <em>%1</em> + - - - There was an error accessing the "token" endpoint: <br><em>%1</em> - + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + - - - Could not parse the JSON returned from the server: <br><em>%1</em> - + + The reply from the server did not contain all expected fields + - - - The reply from the server did not contain all expected fields - + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + - - The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - + + There was an error accessing the "token" endpoint: <br><em>%1</em> + - - + + OCC::Flow2AuthWidget - - Unable to open the Browser, please copy the link to your Browser. - - - - - - Error - - - - - Waiting for authorization - + + Link copied to clipboard. + - - Polling for authorization - + + Open Browser + Open Browser - - Starting authorization - + + Polling for authorization + - - Link copied to clipboard. - + + Starting authorization + - - Open Browser - + + Unable to open the Browser, please copy the link to your Browser. + - - Copy Link - + + Waiting for authorization + - - - Switch to your browser to connect your account - - - - + + OCC::Folder - - - Local folder %1 does not exist. - + + + %1 and %n other file(s) are currently locked. + + + + + - - - %1 should be a folder but is not. - + + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + + + + - - - %1 is not readable. - + + + %1 and %n other file(s) have been added. + + + + + - - - %1 has been removed. - %1 names a file. - + + + %1 and %n other file(s) have been removed. + + + + + - - - %1 has been updated. - %1 names a file. - + + + %1 and %n other file(s) have been updated. + + + + + - - %1 has been renamed to %2. - %1 and %2 name files. - + + %1 could not be synced due to an error. See the log for details. + - - %1 has been moved to %2. - - - - - %1 and %n other file(s) have been removed. - - - - + + %1 has a sync conflict. Please check the conflict file! + - - %1 and %n other file(s) have been added. - - - - + + %1 has and %n other file(s) have sync conflicts. + + + + + - - %1 has been added. - %1 names a file. - + + %1 has been added. + - - %1 and %n other file(s) have been updated. - - - - + + %1 has been moved to %2 and %n other file(s) have been moved. + + + + + - - - %1 has been renamed to %2 and %n other file(s) have been renamed. - - - - - - - - %1 has been moved to %2 and %n other file(s) have been moved. - - - - - - - - %1 has and %n other file(s) have sync conflicts. - - - - + + + %1 has been moved to %2. + - - %1 has a sync conflict. Please check the conflict file! - + + %1 has been removed. + - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - - - - + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + + + + - - %1 could not be synced due to an error. See the log for details. - + + %1 has been renamed to %2. + - - - %1 and %n other file(s) are currently locked. - - - - + + + %1 has been updated. + - - %1 is currently locked. - + + %1 is currently locked. + - - Sync Activity - + + %1 is not readable. + - - Could not read system exclude file - + + %1 should be a folder but is not. + - - A new folder larger than %1 MB has been added: %2. - - + + A folder from an external storage has been added. + - - A folder from an external storage has been added. - - + + A folder has surpassed the set folder size limit of %1MB: %2. +%3 + - - Please go in the settings to select it if you wish to download it. - + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + A large number of files on the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. - - A folder has surpassed the set folder size limit of %1MB: %2. -%3 - + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by downloading them from the server. + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by downloading them from the server. - - Keep syncing - + + A new folder larger than %1 MB has been added: %2. + - - Stop syncing - + All files in the local folder "%1" were deleted. + +If you restore the files, they will be downloaded again from the server. + All files in the local folder "%1" were deleted. + +If you restore the files, they will be downloaded again from the server. - - The folder %1 has surpassed the set folder size limit of %2MB. - + All files in the server folder "%1" were deleted. + +If you restore the files, they will be uploaded again to the server. + All files in the server folder "%1" were deleted. + +If you restore the files, they will be uploaded again to the server. - - Would you like to stop syncing this folder? - + All files in the sync folder "%1" folder were deleted on the server. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. +If you decide to restore the files, they will be re-synced with the server if you have rights to do so. +If you decide to delete the files, they will be unavailable to you, unless you are the owner. + All files in the sync folder "%1" folder were deleted on the server. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. +If you decide to restore the files, they will be re-synced with the server if you have rights to do so. +If you decide to delete the files, they will be unavailable to you, unless you are the owner. - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. - + All files in the sync folder "%1" folder were deleted on the server. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. +If you decide to restore the files, they will be re-synced with the server if you have rights to do so. +If you decide to delete the files, they will be unavailable to you, unless you are the owner. + All files in the sync folder "%1" folder were deleted on the server. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. +If you decide to restore the files, they will be re-synced with the server if you have rights to do so. +If you decide to delete the files, they will be unavailable to you, unless you are the owner. - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. - + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. +Are you sure you want to sync those actions with the server? +If this was an accident and you decide to keep your files, they will be re-synced from the server. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. +Are you sure you want to sync those actions with the server? +If this was an accident and you decide to keep your files, they will be re-synced from the server. - - Changes in synchronized folders could not be tracked reliably. + + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). %1 - + - - Virtual file download failed with code "%1", status "%2" and error message "%3" - + + Could not read system exclude file + - - A large number of files in the server have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. - + Keep files + Keep files - - A large number of files in your local '%1' folder have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by downloading them from the server. - + + Keep syncing + - - Remove all files? - + + Local folder %1 does not exist. + - - Proceed with Deletion - + + Please go in the settings to select it if you wish to download it. + - - Restore Files to Server - + Proceed to remove all files + Proceed to remove all files - - Restore Files from Server - + + Proceed with Deletion + Proceed with deletion - - - OCC::FolderCreationDialog - - Create new folder - + Remove all files + Remove all files - - Enter folder name - + + Remove all files? + Remove all files? - - Folder already exists - + Restore files + Restore files - - %1 Create new folder - + + Restore Files from Server + Restore files from server - - Error - + + Restore Files to Server + Restore files to server - - Could not create a folder! Check your write permissions. - + + Stop syncing + - - - OCC::FolderMan - - Could not reset folder state - + + Sync Activity + - - (backup) - + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + - - (backup %1) - + + The folder %1 has surpassed the set folder size limit of %2MB. + - - Waiting to start syncing. - + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + - - Preparing for sync. - + + Virtual file download failed with code "%1", status "%2" and error message "%3" + - - Sync is running. - + + Would you like to stop syncing this folder? + + + + OCC::FolderCreationDialog - - Sync is paused. - + + %1 Create new folder + %1 Create new folder - - %1 (Sync is paused) - + + Could not create a folder! Check your write permissions. + - - No valid folder selected! - + + Enter folder name + - - The selected path is not a folder! - + + Folder already exists + + + + OCC::FolderMan - - - You have no permission to write to the selected folder! - + + (backup %1) + - - There is already a sync from the server to this local folder. Please pick another local folder! - + + (backup) + - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! - + + %1 (Sync is paused) + - - An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. - + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + - - Undefined state. - + + Could not reset folder state + - - Sync finished with unresolved conflicts. - + + Last sync was successful. + - - Last sync was successful. - + + No valid folder selected! + - - Setup error. - + + Preparing for sync. + - - Sync request was cancelled. - + + Setup error. + - - The selected path does not exist! - + + Sync finished with unresolved conflicts. + - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! - + + Sync is paused. + - - - OCC::FolderStatusDelegate - - Add Folder Sync - + + Sync is running. + - - Synchronize any other local folder with your %1 - + + Sync request was cancelled. + - - File - + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + - - - OCC::FolderStatusModel - - You need to be connected to add a folder - + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + - - Click this button to add a folder to synchronize. - + + The selected path does not exist! + - - Could not decrypt! - + + The selected path is not a folder! + - - - %1 (%2) - + + There is already a sync from the server to this local folder. Please pick another local folder! + - - Error while loading the list of folders from the server. - + + Undefined state. + - - Virtual file support is enabled. - + + Waiting to start syncing. + - - Signed out - + + You have no permission to write to the selected folder! + + + + OCC::FolderStatusDelegate - - There are unresolved conflicts. Click for details. - + + Add live backup + Add Folder Sync Connection - - Synchronizing VirtualFiles with local folder - + + File + - - Synchronizing with local folder - + + Synchronize any other local folder with your %1 + Synchronize any other local folder with your %1 + + + OCC::FolderStatusModel - - Checking for changes in remote "%1" - + + , + - - Checking for changes in local "%1" - + + %1 (%2) + - - Reconciling changes - + + %1 %2 + - - Syncing %1 - Example text: "Syncing 'foo.txt', 'bar.txt'" - + + %1 %2 (%3 of %4) + - - - , - + + %1 of %2, file %3 of %4 + - - download %1/s - Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) - + + %5 left, %1 of %2, file %3 of %4 + - - upload %1/s - Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) - + + ↑ %1/s + - - Fetching folder list from server … - + + ↓ %1/s + - - ↓ %1/s - + + A few seconds left, %1 of %2, file %3 of %4 + - - ↑ %1/s - + + Checking for changes in local "%1" + - - %1 %2 (%3 of %4) - Example text: "uploading foobar.png (2MB of 2MB)" - + + Checking for changes in remote "%1" + - - %1 %2 - Example text: "uploading foobar.png" - + + Click this button to add a folder to synchronize. + - - A few seconds left, %1 of %2, file %3 of %4 - Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" - + + Could not decrypt! + - - %5 left, %1 of %2, file %3 of %4 - + + download %1/s + - - %1 of %2, file %3 of %4 - Example text: "12 MB of 345 MB, file 6 of 7" - + + Error while loading the list of folders from the server. + - - file %1 of %2 - + + Fetching folder list from server … + - - Waiting … - - - - - Waiting for %n other folder(s) … - - - - + + file %1 of %2 + - - Preparing to sync … - + + Preparing to sync … + - - - OCC::FolderWatcher - - The watcher did not receive a test notification. - + + Reconciling changes + - - - OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. - + + Synchronizing VirtualFiles with local folder + - - - OCC::FolderWizard - - Add Folder Sync Connection - + + Synchronizing with local folder + - - Add Sync Connection - + + There are unresolved conflicts. Click for details. + - - - OCC::FolderWizardLocalPath - - Click to select a local folder to sync. - + + upload %1/s + - - Enter the path to the local folder. - + + Virtual file support is enabled. + - - Select the source folder - + + Waiting … + - - - Add Folder Sync - + + + Waiting for %n other folder(s) … + + + + + - - Step 1 of 3: Select local folder - + + You need to be connected to add a folder + + + + OCC::FolderWatcher - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - + + The watcher did not receive a test notification. + + + + OCC::FolderWatcherPrivate - - Choose - + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + - - - OCC::FolderWizardRemotePath + + + OCC::FolderWizard - - Create Remote Folder - + Add Folder Sync Connection + - - Enter the name of the new folder to be created below "%1": - + + Add Sync Connection + + + + OCC::FolderWizardLocalPath - - Folder was successfully created on %1. - + + Choose + Choose - - Authentication failed accessing %1 - + + Click to select a local folder to sync. + - - Failed to create the folder on %1. Please check manually. - + + Enter the path to the local folder. + - - Failed to list a folder. Error: %1 - + + Select the source folder + + + + OCC::FolderWizardRemotePath - - Choose this to sync the entire account - + + Authentication failed accessing %1 + - - This folder is already being synced. - + + Choose this to sync the entire account + - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - + + Create Remote Folder + - - You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - + + Enter the name of the new folder to be created below "%1": + - - Add Folder Sync - + + Failed to create the folder on %1. Please check manually. + - - Step 2 of 3: Directory in your %1 - + + Failed to list a folder. Error: %1 + - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - + + Folder was successfully created on %1. + - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - + + This folder is already being synced. + - - Refresh - + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + - - Create folder - + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + - - + + OCC::FolderWizardSelectiveSync - - - Use virtual files instead of downloading content immediately %1 - + + Use virtual files instead of downloading content immediately %1 + - - - (experimental) - + + Virtual files are not available for the selected folder + - - Add Folder Sync - - - - - Step 3 of 3: Selektive Synchronisation - + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + + + + OCC::FormatWarningsWizardPage - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - + + %1 + - - Virtual files are not available for the selected folder - + <b>Warning:</b> + <b>Warning:</b> - - - OCC::FormatWarningsWizardPage - - %1 - + <b>Warning:</b> %1 + <b>Warning:</b> %1 - - + + OCC::GETFileJob - - No E-Tag received from server, check Proxy/Gateway - + + Connection Timeout + - - We received a different E-Tag for resuming. Retrying next time. - + + No E-Tag received from server, check Proxy/Gateway + - - We received an unexpected download Content-Length. - + + Server returned wrong content-range + - - Server returned wrong content-range - + + We received a different E-Tag for resuming. Retrying next time. + - - Connection Timeout - + + We received an unexpected download Content-Length. + - - + + OCC::GeneralSettings - - General Settings - + + &Analysis data collection for needs-based design + &Analysis data collection for needs-based design - - &Launch on system startup - + + &Automatically check for updates + - - Show server &notifications - + &Channel + &Channel - - For System Tray - + &Check for Update now + &Check for Update now - - Use &monochrome icons - + + &Launch on system startup + - - Show call notifications - + + &Restart && Update + - - Advanced - + About + About - - Edit &Ignored Files - + + Ask for confirmation before + synchronizing new folders larger than + Ask for confirmation before synchronizing new folders larger than - - S&how crash reporter - + + Ask for confirmation before synchronizing + external storages + Ask for confirmation before synchronizing external storages - - Updates - + Ask for confirmation before synchronizing external storages + Ask for confirmation before synchronizing external storages - - &Automatically check for updates - + Ask for confirmation before synchronizing folders larger than + Ask for confirmation before synchronizing folders larger than - - Ask for confirmation before - synchronizing new folders larger than - + Ask for confirmation before synchronizing new folders larger than + - - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - + + Automatically disable synchronisation of + folders that overcome limit + Automatically disable synchronisation of folders that overcome limit - - Notify when synchronised folders grow - larger than specified limit - + Automatically disable synchronisation of folders that overcome limit + - - Automatically disable synchronisation of - folders that overcome limit - + + beta + - - Ask for confirmation before synchronizing - external storages - + + Change update channel + - - Move removed files to trash - + + Change update channel? + - - Show sync folders in &Explorer's navigation - pane - + + Check Now + - - - Create Debug Archive - + + Create Debug Archive + - - Data Protection - + + Data Protection + Data Protection - - &Analysis data collection for needs-based design - + + Debug Archive Created + - - Legal Notice - + + Debug archive is created at %1 + - - Privacy Policy - + + Desktop client x.x.x + - - Open Source Software - + + Edit &Ignored Files + - - Update channel - + + For System Tray + - - - stable - + + General Settings + - - - beta - + Info + - - &Restart && Update - + + Legal Notice + - - Check Now - + MB + MB - - Usage Documentation - + + More Information + More Information - - Desktop client x.x.x - + + Move removed files to trash + - - More Information - + + Notify when synchronised folders grow + larger than specified limit + Notify when synchronised folders grow larger than specified limit. - - Server notifications that require attention. - + Notify when synchronised folders grow larger than specified limit + - - Show call notification dialogs. - + + Open Source Software + Open Source Software - - You cannot disable autostart because system-wide autostart is enabled. - + + Privacy Policy + Privacy Policy - - Change update channel? - + + S&how crash reporter + - - The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. - -Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. - + + Server notifications that require attention. + - - Change update channel - + + Show call notification dialogs. + - - Cancel - + + Show call notifications + - - Zip Archives - + + Show server &notifications + - - Debug Archive Created - + + Show sync folders in &Explorer's navigation + pane + Show sync folders in &Explorer's navigation pane - - Debug archive is created at %1 - + Show sync folders in &Explorer's Navigation Pane + Show sync folders in &Explorer's Navigation Pane - - - OCC::GetOrCreatePublicLinkShare - - Password for share required - + + stable + - - Please enter a password for your link share: - + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + +Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. + - - Sharing error - + + Update channel + - - Could not retrieve or create the public link share. Error: - -%1 - + + Updates + - - - OCC::HttpCredentialsGui - - Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - + + Usage Documentation + - - Reading from keychain failed with error: "%1" - + + Use &monochrome icons + - - Enter Password - + + You cannot disable autostart because system-wide autostart is enabled. + - - <a href="%1">Click here</a> to request an app password from the web interface. - + + Zip Archives + - - - OCC::IgnoreListEditor + + + OCC::GetOrCreatePublicLinkShare - - Ignored Files Editor - + + Could not retrieve or create the public link share. Error: + +%1 + - - Global Ignore Settings - + + Password for share required + - - Sync hidden files - + + Please enter a password for your link share: + - - Files Ignored by Patterns - + + Sharing error + + + + OCC::HttpCredentialsGui - - This entry is provided by the system at "%1" and cannot be modified in this view. - + + <a href="%1">Click here</a> to request an app password from the web interface. + - - - OCC::IgnoreListTableWidget - - Pattern - + + Enter Password + - - Allow Deletion - + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + - - Add - + + Reading from keychain failed with error: "%1" + + + + OCC::IgnoreListEditor - - Remove - + + Files Ignored by Patterns + - - Remove all - + + Global Ignore Settings + - - Files or folders that match this pattern will not be synchronized. - -Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - + + Ignored Files Editor + - - Could not open file - + + Sync hidden files + - - Cannot write changes to "%1". - + + This entry is provided by the system at "%1" and cannot be modified in this view. + + + + OCC::IgnoreListTableWidget - - Ignore Pattern - + + Add + - - Add New Ignore Pattern - + Add a new ignore pattern: + Add a new ignore pattern: - - - OCC::InvalidFilenameDialog - - Invalid filename - + Add Ignore Pattern + Add Ignore Pattern - - The file could not be synced because it contains characters which are not allowed on this system. - + + Add New Ignore Pattern + Add New Ignore Pattern - - Error - + + Allow Deletion + - - Please enter a new name for the file: - + + Cannot write changes to "%1". + - - New filename - + + Could not open file + - - Rename file - + Files or folders matching a pattern will not be synchronized. + +Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. + Files or folders matching a pattern will not be synchronized. + +Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - - The file "%1" could not be synced because the name contains characters which are not allowed on this system. - + + Files or folders that match this pattern will not be synchronized. + +Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. + Files or folders that match this pattern will not be synchronized. + +Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - - The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - + + Ignore Pattern + Ignore Pattern - - Checking rename permissions … - + + Pattern + - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - + + Remove + - - Failed to fetch permissions with error %1 - + + Remove all + + + + OCC::InvalidFilenameDialog - - Filename contains leading and trailing spaces. - + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + - - Filename contains leading spaces. - + + Checking rename permissions … + - - Filename contains trailing spaces. - + + Could not rename local file. %1 + - - Use invalid name - + + Invalid filename + - - Filename contains illegal characters: %1 - + + Please enter a new name for the file: + - - Could not rename file. Please make sure you are connected to the server. - + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + - - Cannot rename file because a file with the same name does already exist on the server. Please pick another name. - + + The file could not be synced because it contains characters which are not allowed on this system. + - - Could not rename local file. %1 - + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + - - + + OCC::LegalNotice - - - Legal notice - + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + - - Close - + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + - - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - + Legal notice + + + + OCC::LogBrowser - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> - + + Enable logging to temporary folder + - - - OCC::LogBrowser - - Log Output - + + Log Output + - - The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. If enabled, logs will be written to %1 - - - - - Enable logging to temporary folder - + - - This setting persists across client restarts. + + This setting persists across client restarts. Note that using any logging command line options will override this setting. - + - - - Open folder - - - - + + OCC::Logger - - Error - - - - - <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> - + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + - - + + OCC::NSISUpdater - - New Version Available - + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + - - Update Failed - + + Ask again later + - - <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> - + + Get update + - - Ask again later - + + New Version Available + - - Restart and update - + + Restart and update + - - Update manually - + + Skip this time + - - Skip this time - + + Update Failed + - - Get update - + + Update manually + - - + + OCC::NetworkSettings - - Proxy Settings - + + Download Bandwidth + - - Use system proxy - + + Host + - - Host - + + Hostname of proxy server + - - Proxy server requires authentication - + + HTTP(S) proxy + - - Download Bandwidth - + + KBytes/s + - - - Limit to - + + Limit automatically + - - - KBytes/s - + + Limit to + - - - No limit - + + Limit to 3/4 of estimated bandwidth + - - No proxy - + + Manually specify proxy + - - Manually specify proxy - + + No limit + - - Note: proxy settings have no effects for accounts on localhost - + + No proxy + - - - Limit to 3/4 of estimated bandwidth - + + Note: proxy settings have no effects for accounts on localhost + - - Upload Bandwidth - + + Password for proxy server + - - - Limit automatically - + + Proxy server requires authentication + - - Hostname of proxy server - + + Proxy Settings + - - Username for proxy server - + + SOCKS5 proxy + - - Password for proxy server - + Specify proxy manually as + Specify proxy manually as - - HTTP(S) proxy - + + Upload Bandwidth + - - SOCKS5 proxy - + + Use system proxy + - - - OCC::OCUpdater - - Could not check for new updates. - + + Username for proxy server + + + + OCC::OAuth - - Checking update server … - + <h1>Login Error</h1><p>%1</p> + <h1>Login Error</h1><p>%1</p> - - New %1 update ready - + <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> + - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - + Empty JSON from OAuth2 redirect + Empty JSON from OAuth2 redirect + + + OCC::OCUpdater - - Downloading %1. Please wait … - + + %1 available. Restart application to start the update. + - - %1 available. Restart application to start the update. - + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + - - Could not download update. Please open <a href='%1'>%1</a> to download the update manually. - + + Checking update server … + - - Could not download update. Please open %1 to download the update manually. - + + Could not check for new updates. + - - New %1 is available. Please open <a href='%2'>%2</a> to download the update. - + + Could not download update. Please open %1 to download the update manually. + - - New %1 is available. Please open %2 to download the update. - + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + - - Update status is unknown: Did not check for new updates. - + + Downloading %1. Please wait … + - - No updates available. Your installation is at the latest version. - + + New %1 is available. Please open %2 to download the update. + - - Update Check - + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + + + + + New %1 update ready + - - - OCC::OwncloudAdvancedSetupPage - - Connect - + + No updates available. Your installation is at the latest version. + - - - Use &virtual files instead of downloading content immediately %1 - + + Update Check + - - - (experimental) - + + Update status is unknown: Did not check for new updates. + + + + OCC::OwncloudAdvancedSetupPage - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - + + (%1) + - - %1 folder "%2" is synced to local folder "%3" - + + %1 folder "%2" is synced to local folder "%3" + - - Sync the folder "%1" - + + %1 free space + - - Warning: The local folder is not empty. Pick a resolution! - + + Connect + - - %1 free space - %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB - + + Local Sync Folder + - - Virtual files are not available for the selected folder - + + Sync the folder "%1" + - - Local Sync Folder - + + There isn't enough free space in the local folder! + - - - (%1) - + + Use &virtual files instead of downloading content immediately %1 + - - There isn't enough free space in the local folder! - + + Warning: The local folder is not empty. Pick a resolution! + - - + + OCC::OwncloudConnectionMethodDialog - - Connection failed - + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> - + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + - - Select a different URL - + + Configure client-side TLS certificate + - - Retry unencrypted over HTTP (insecure) - + + Connection failed + - - Configure client-side TLS certificate - + + Retry unencrypted over HTTP (insecure) + - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> - + + Select a different URL + - - + + OCC::OwncloudHttpCredsPage - - &Email - + + &Email + - - Connect to %1 - + + Connect to %1 + - - Enter user credentials - + + Enter user credentials + - - - OCC::OwncloudPropagator + + + OCC::OwncloudOAuthCredsPage - - - Impossible to get modification time for file in conflict %1 - + Login in your browser + Login in your browser - - - OCC::OwncloudSetupPage + + + OCC::OwncloudPropagator - - The link to your %1 web interface when you open it in the browser. - %1 will be replaced with the application name - + Error with the metadata. Getting unexpected metadata format. + - - &Next > - + + Impossible to get modification time for file in conflict %1 + + + + OCC::OwncloudSetupPage - - Server address does not seem to be valid - + + &Next > + - - Could not load certificate. Maybe wrong password? - + + Could not load certificate. Maybe wrong password? + - - - OCC::OwncloudSetupWizard - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - + + Server address does not seem to be valid + - - Failed to connect to %1 at %2:<br/>%3 - + + The link to your %1 web interface when you open it in the browser. + + + + OCC::OwncloudSetupWizard - - Timeout while trying to connect to %1 at %2. - + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + - - Invalid URL - + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + - - Trying to connect to %1 at %2 … - + + A sync connection from %1 to remote directory %2 was set up. + - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + - - There was an invalid response to an authenticated WebDAV request - + + Connection to %1 could not be established. Please check again. + - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> - + + Could not create local folder %1 + - - Creating local sync folder %1 … - + + creating folder on Nextcloud: %1 + - - OK - + + Creating local sync folder %1 … + - - failed. - + + Error: %1 + - - Could not create local folder %1 - + + Failed to connect to %1 at %2:<br/>%3 + - - No remote folder specified! - + + failed. + - - Error: %1 - + + Folder rename failed + - - creating folder on Nextcloud: %1 - + + Invalid URL + - - Remote folder %1 created successfully. - + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + - - The remote folder %1 already exists. Connecting it for syncing. - + + No remote folder specified! + - - - The folder creation resulted in HTTP error code %1 - + + OK + - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - + + Remote folder %1 created successfully. + - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - + + Remote folder %1 creation failed with error <tt>%2</tt>. + - - - Remote folder %1 creation failed with error <tt>%2</tt>. - + + Successfully connected to %1! + - - A sync connection from %1 to remote directory %2 was set up. - + + The folder creation resulted in HTTP error code %1 + - - Successfully connected to %1! - + + The remote folder %1 already exists. Connecting it for syncing. + - - Connection to %1 could not be established. Please check again. - + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + - - Folder rename failed - + + Timeout while trying to connect to %1 at %2. + - - Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - + + Trying to connect to %1 at %2 … + + + + OCC::OwncloudWizard - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> - + + Add %1 account + - - - OCC::OwncloudWizard - - Add %1 account - + + Enable experimental feature? + - - Skip folders configuration - + + Enable experimental placeholder mode + - - Cancel - + + Skip folders configuration + - - Enable experimental feature? - + + Stay safe + - - When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. Switching to this mode will abort any currently running synchronization. This is a new, experimental mode. If you decide to use it, please report any issues that come up. - + - - - Enable experimental placeholder mode - - - - - Stay safe - - - - + + OCC::PasswordInputDialog - - Password for share required - + + Please enter a password for your share: + - - - Please enter a password for your share: - - - - + + OCC::PollJob - - Invalid JSON reply from the poll URL - + + Invalid JSON reply from the poll URL + - - + + OCC::ProcessDirectoryJob - - Symbolic links are not supported in syncing. - - - - - File is listed on the ignore list. - - - - - File names ending with a period are not supported on this file system. - + + Cannot sync due to invalid modification time + - - File names containing the character "%1" are not supported on this file system. - + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. + - - File name contains at least one invalid character - + + Conflict when uploading a file. It's going to get removed! + - - The file name is a reserved name on this file system. - + + Conflict when uploading a folder. It's going to get cleared! + - - Filename contains trailing spaces. - + + Conflict: Server version downloaded, local copy renamed and not uploaded. + - - Filename contains leading spaces. - + + Could not upload file, because it is open in "%1". + - - Filename contains leading and trailing spaces. - + + Error while deleting file record %1 from the database + - - Filename is too long. - + + Error while reading the database + - - File/Folder is ignored because it's hidden. - + + File has extension reserved for virtual files. + - - Stat failed. - + + file id + - - Conflict: Server version downloaded, local copy renamed and not uploaded. - + + File is listed on the ignore list. + - - Case Clash Conflict: Server file downloaded and renamed to avoid clash. - + + File name contains at least one invalid character + - - The filename cannot be encoded on your file system. - + + File names containing the character "%1" are not supported on this file system. + - - The filename is blacklisted on the server. - + + File names ending with a period are not supported on this file system. + - - File has extension reserved for virtual files. - + + File/Folder is ignored because it's hidden. + - - size - + + Filename is too long. + - - permission - + + Ignored because of the "choose what to sync" blacklist + - - file id - + + Moved to invalid target, restoring + - - Server reported no %1 - + + Not allowed because you don't have permission to add files in that folder + - - Cannot sync due to invalid modification time - + + Not allowed because you don't have permission to add subfolders to that folder + - - Could not upload file, because it is open in "%1". - + + Not allowed to remove, restoring + - - Error while deleting file record %1 from the database - + + Not allowed to upload this file because it is read-only on the server, restoring + - - Conflict when uploading a folder. It's going to get cleared! - + + permission + - - Conflict when uploading a file. It's going to get removed! - + + Server replied with an error while reading directory "%1" : %2 + - - - Moved to invalid target, restoring - + + Server reported no %1 + - - Ignored because of the "choose what to sync" blacklist - + + size + - - - Not allowed because you don't have permission to add subfolders to that folder - + + Stat failed. + - - Not allowed because you don't have permission to add files in that folder - + + Symbolic links are not supported in syncing. + - - Not allowed to upload this file because it is read-only on the server, restoring - + + The file name is a reserved name on this file system. + - - Not allowed to remove, restoring - + + The filename cannot be encoded on your file system. + - - Error while reading the database - + + The filename is blacklisted on the server. + - - - Server replied with an error while reading directory "%1" : %2 - - - - + + OCC::PropagateDirectory - - could not delete file %1 from local DB - + + could not delete file %1 from local DB + - - Error updating metadata due to invalid modification time - + + Error updating metadata due to invalid modification time + - - - The folder %1 cannot be made read-only: %2 - + + File is currently in use + - - Error updating metadata: %1 - + + The folder %1 cannot be made read-only: %2 + - - - File is currently in use - - - - + + OCC::PropagateDownloadFile - - could not get file %1 from local DB - - - - - File %1 cannot be downloaded because encryption information is missing. - + + Could not delete file record %1 from local DB + - - - Could not delete file record %1 from local DB - + + could not get file %1 from local DB + - - File %1 can not be downloaded because of a local file name clash! - + + File %1 can not be downloaded because of a local file name clash! + - - The download would reduce free local disk space below the limit - + + File %1 cannot be downloaded because encryption information is missing. + - - Free space on disk is less than %1 - + + File %1 downloaded but it resulted in a local file name clash! + - - File was deleted from server - + + File %1 has invalid modified time reported by server. Do not save it. + - - The file could not be downloaded completely. - + + File has changed since discovery + - - The downloaded file is empty, but the server said it should have been %1. - + + File was deleted from server + - - - File %1 has invalid modified time reported by server. Do not save it. - + + Free space on disk is less than %1 + - - File %1 downloaded but it resulted in a local file name clash! - + + The download would reduce free local disk space below the limit + - - Error updating metadata: %1 - + + The downloaded file is empty, but the server said it should have been %1. + - - The file %1 is currently in use - + + The file could not be downloaded completely. + - - - - File has changed since discovery - - - - + + OCC::PropagateItemJob - - ; Restoration Failed: %1 - + + ; Restoration Failed: %1 + - - A file or folder was removed from a read only share, but restoring failed: %1 - + + A file or folder was removed from a read only share, but restoring failed: %1 + - - + + OCC::PropagateLocalMkdir - - could not delete file %1, error: %2 - - - - - Folder %1 cannot be created because of a local file or folder name clash! - + + Could not create folder %1 + - - Could not create folder %1 - + + could not delete file %1, error: %2 + - - The folder %1 cannot be made read-only: %2 - + + Folder %1 cannot be created because of a local file or folder name clash! + - - - Error updating metadata: %1 - - - - - The file %1 is currently in use - - - - + + OCC::PropagateLocalRemove - - Could not remove %1 because of a local file name clash - - - - - Could not delete file record %1 from local DB - + + Could not remove %1 because of a local file name clash + - - + + OCC::PropagateLocalRename - - Folder %1 cannot be renamed because of a local file or folder name clash! - - - - - File %1 downloaded but it resulted in a local file name clash! - - - - - - - could not get file %1 from local DB - - - - - - Error setting pin state - - - - - - Error updating metadata: %1 - - - - - The file %1 is currently in use - - - - - - Could not delete file record %1 from local DB - - - - - Failed to propagate directory rename in hierarchy - - - - - Failed to rename file - + + Error setting pin state + - - - OCC::PropagateRemoteDelete - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - + + Failed to propagate directory rename in hierarchy + - - Could not delete file record %1 from local DB - + + Failed to rename file + - - - OCC::PropagateRemoteDeleteEncryptedRootFolder - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - + + Folder %1 cannot be renamed because of a local file or folder name clash! + Folder %1 cannot be renamed because of a local file or folder name clash! - - + + OCC::PropagateRemoteMkdir - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - + + Error writing metadata to the database: %1 + - - Failed to encrypt a folder %1 - + + Failed to encrypt a folder %1 + - - Error writing metadata to the database: %1 - + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + - - - The file %1 is currently in use - - - - + + OCC::PropagateRemoteMove - - Could not rename %1 to %2, error: %3 - - - - - - Error updating metadata: %1 - - - - - - The file %1 is currently in use - - - - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - - - - - could not get file %1 from local DB - + + Could not rename %1 to %2, error: %3 + - - - Could not delete file record %1 from local DB - - - - - Error setting pin state - - - - - Error writing metadata to the database - - - - + + OCC::PropagateUploadFileCommon - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - + + Failed to unlock encrypted folder. + - - - - File %1 has invalid modification time. Do not upload to the server. - + + Failed to upload encrypted file. + - - Local file changed during syncing. It will be resumed. - + + Unable to upload an item with invalid characters + - - Local file changed during sync. - + + Upload of %1 exceeds the quota for the folder + - - - Failed to unlock encrypted folder. - - - - - Unable to upload an item with invalid characters - - - - - Error updating metadata: %1 - - - - - The file %1 is currently in use - - - - - - Upload of %1 exceeds the quota for the folder - - - - - Failed to upload encrypted file. - - - - - File Removed (start upload) %1 - - - - + + OCC::PropagateUploadFileNG - - The local file was removed during sync. - + + Missing ETag from server + - - Local file changed during sync. - + + Missing File ID from server + - - Poll URL missing - + + Poll URL missing + - - Unexpected return code from server (%1) - + + Unexpected return code from server (%1) + - - - Missing File ID from server - - - - - Missing ETag from server - - - - + + OCC::PropagateUploadFileV1 - - Poll URL missing - - - - - The local file was removed during sync. - + + The server did not acknowledge the last chunk. (No e-tag was present) + - - - Local file changed during sync. - - - - - The server did not acknowledge the last chunk. (No e-tag was present) - - - - + + OCC::ProxyAuthDialog - - Proxy authentication required - + + Password: + - - Username: - + + Proxy authentication required + - - Proxy: - + + Proxy: + - - The proxy server needs a username and password. - + + The proxy server needs a username and password. + - - Password: - + + Username: + - - + + OCC::SelectiveSyncDialog - - Choose What to Sync - + + Choose What to Sync + - - + + OCC::SelectiveSyncWidget - - Loading … - + + An error occurred while loading the list of sub folders. + - - Deselect remote folders you do not wish to synchronize. - + + Deselect remote folders you do not wish to synchronize. + - - Name - + + Loading … + - - Size - + + Name + - - - No subfolders currently on the server. - + + No subfolders currently on the server. + - - An error occurred while loading the list of sub folders. - + + Size + - - + + OCC::ServerNotificationHandler - - Reply - + + Reply + - - + + OCC::SettingsDialog - - Settings - + + %1 Settings + - - %1 Settings - This name refers to the application name e.g Nextcloud - + + Account + - - New Account - + + General + - - General - + Network + Network - - Account - + + New Account + New Account - - - OCC::ShareManager + + + OCC::ShareModel - - Error - + + Could not find local folder for %1 + - - - OCC::ShareModel - - Secure file drop link - + Enter a note for the recipient + - - Share link - + + Internal link + - - Link share - + + Link share + - - Internal link - + + Secure file drop + - - Secure file drop - + + Secure file drop link + - - Could not find local folder for %1 - + + Share link + - - - OCC::ShareeModel + + + OCC::ShareUserLine - - - Search globally - + Can edit + Can edit - - No results found - + Expires: + Expires: - - Global search results - + Note: + Note: + + + OCC::ShareeModel - - %1 (%2) - sharee (shareWithAdditionalInfo) - + + Global search results + + + + + No results found + - - - OCC::SocketApi - - Context menu share - + + Search globally + + + + OCC::SocketApi - - I shared something with you - + Activity + - - - Share options - + + Context menu share + - - Send private link by email … - + + Copy internal link + - - Copy private link to clipboard - + + Copy private link to clipboard + - - Failed to encrypt folder at "%1" - + + Copy public link + - - The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - + + Copy secure file drop link + - - Failed to encrypt folder - + + Copy secure filedrop link + - - Could not encrypt the following folder: "%1". + + Could not encrypt the following folder: "%1". Server replied with error: %2 - + - - Folder encrypted successfully - + + Delete local changes + - - The following folder was encrypted successfully: "%1" - + + Edit + - - - Select new location … - + + + Expires in %1 minutes + + + + Expires in %1 minutes + - - - Activity - + + Failed to encrypt folder + - - Leave this share - + + Failed to encrypt folder at "%1" + - - Resharing this file is not allowed - + + Folder encrypted successfully + - - Resharing this folder is not allowed - + + I shared something with you + - - Copy secure file drop link - + + Leave this share + - - - Copy public link - + + Lock file + - - Copy secure filedrop link - + + Locked by %1 + - - Copy internal link - + + Move and rename … + - - Encrypt - + + Move and upload … + - - Lock file - + + Move, rename and upload … + - - Unlock file - + + Open in browser + - - Locked by %1 - - - - - Expires in %1 minutes - remaining time before lock expires - - - - + + Resharing this file is not allowed + - - Edit - + + Resharing this folder is not allowed + - - Open in browser - + + Resolve conflict … + - - Resolve conflict … - + + Select new location … + - - Move and rename … - + + Send private link by email … + - - Move, rename and upload … - + + Share options + - - Delete local changes - + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. + - - Move and upload … - + + The following folder was encrypted successfully: "%1" + - - Delete - + + Unlock file + - - + + OCC::SslButton - - <h3>Certificate Details</h3> - + + %1 (self-signed) + - - Common Name (CN): - + + <h3>Certificate Details</h3> + - - Subject Alternative Names: - + + <h3>Fingerprints</h3> + - - Organization (O): - + + <h3>Issuer</h3> + - - Organizational Unit (OU): - + + <p><b>Note:</b> This certificate was manually approved</p> + - - State/Province: - + + Certificate information: + - - Country: - + + Common Name (CN): + - - Serial: - + + Country: + - - <h3>Issuer</h3> - + + Expires on: + - - Issuer: - + + Issued on: + - - Issued on: - + + Issuer: + - - Expires on: - + + No support for SSL session tickets/identifiers + - - <h3>Fingerprints</h3> - + + Organization (O): + - - SHA-256: - + + Organizational Unit (OU): + - - SHA-1: - + + Serial: + - - <p><b>Note:</b> This certificate was manually approved</p> - + + Server version: %1 + - - %1 (self-signed) - + + SHA-1: + - - %1 - + + SHA-256: + - - This connection is encrypted using %1 bit %2. - - + + State/Province: + - - Server version: %1 - + + Subject Alternative Names: + - - No support for SSL session tickets/identifiers - + + The connection is not secure + - - Certificate information: - + + This connection is encrypted using %1 bit %2. + - - The connection is not secure - + + This connection is NOT secure as it is not encrypted. + - - - This connection is NOT secure as it is not encrypted. - - - - - + + OCC::SslErrorDialog - - Trust this certificate anyway - + + &lt;not specified&gt; + - - Untrusted Certificate - + + Additional errors: + - - Cannot connect securely to <i>%1</i>: - + + Cannot connect securely to <i>%1</i>: + - - Additional errors: - + + Country: %1 + - - with Certificate %1 - + + Effective Date: %1 + - - - - &lt;not specified&gt; - + + Expiration Date: %1 + - - - Organization: %1 - + + Fingerprint (SHA-256): <tt>%1</tt> + - - - Unit: %1 - + + Fingerprint (SHA-512): <tt>%1</tt> + - - - Country: %1 - + + Fingerprint (SHA1): <tt>%1</tt> + - - Fingerprint (SHA1): <tt>%1</tt> - + + Issuer: %1 + - - Fingerprint (SHA-256): <tt>%1</tt> - + + Organization: %1 + - - Fingerprint (SHA-512): <tt>%1</tt> - + + Trust this certificate anyway + - - Effective Date: %1 - + + Unit: %1 + - - Expiration Date: %1 - + + Untrusted Certificate + - - Issuer: %1 - + + with Certificate %1 + - - + + OCC::SyncEngine - - %1 (skipped due to earlier error, trying again in %2) - + + %1 (skipped due to earlier error, trying again in %2) + - - Only %1 are available, need at least %2 to start - Placeholders are postfixed with file sizes using Utility::octetsToString() - + + Cannot open the sync journal + - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. - + + Could not set file record to local DB: %1 + - - Disk space is low: Downloads that would reduce free space below %1 were skipped. - + + Could not update file metadata: %1 + - - There is insufficient space available on the server for some uploads. - + + Could not update file: %1 + - - Unresolved conflict. - + + Could not update virtual file metadata: %1 + - - Could not update file: %1 - + + Disk space is low: Downloads that would reduce free space below %1 were skipped. + - - Could not update virtual file metadata: %1 - + + Only %1 are available, need at least %2 to start + - - Could not update file metadata: %1 - + + There is insufficient space available on the server for some uploads. + - - Could not set file record to local DB: %1 - + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. + - - Using virtual files with suffix, but suffix is not set - + + Unable to read from the sync journal. + - - Unable to read the blacklist from the local database - + + Unable to read the blacklist from the local database + - - Unable to read from the sync journal. - + + Unresolved conflict. + - - Cannot open the sync journal - + + Using virtual files with suffix, but suffix is not set + - - + + OCC::SyncJournalDb - - Failed to connect database. - + + Failed to connect database. + - - + + OCC::SyncStatusSummary - - - Offline - - - - - - - All synced! - + + %1 of %2 + - - Some files couldn't be synced! - + + %1 of %2 · %3 left + - - See below for errors - + + Offline + - - Preparing sync - + + Preparing sync + - - - Syncing - + + See below for errors + - - Sync paused - + + See below for warnings + - - Some files could not be synced! - + + Some files could not be synced! + - - See below for warnings - + + Some files couldn't be synced! + - - %1 of %2 · %3 left - + + Syncing file %1 of %2 + - - - %1 of %2 - - - - - Syncing file %1 of %2 - - - - + + OCC::Systray - - Download - - - - - Add account - + + %1: %2 + - - Open main dialog - + + Add account + - - - Pause sync - + + Download + - - - Resume sync - + + Exit %1 + - - Settings - + + Open main dialog + - - Help - + + Pause sync for all + - - Exit %1 - + + Resume sync for all + - - - Pause sync for all - - - - - Resume sync for all - - - - - %1: %2 - - - - + + OCC::Theme - - easy/0118 - Redirect URL Parameter - + + <p>%1 desktop client %2</p> + - - <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - + <p>%1 Desktop Client</p> + <p>%1 Desktop Client</p> - - <p><small>Using virtual files plugin: %1</small></p> - + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + - - <p>%1 desktop client %2</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - + + <p><small>Using virtual files plugin: %1</small></p> + - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - + + <p>This release was supplied by %1.</p> + - - <p>This release was supplied by %1.</p> - + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + - - + + OCC::UnifiedSearchResultsListModel - - Failed to fetch providers. - + + Failed to fetch providers. + - - Failed to fetch search providers for '%1'. Error: %2 - + + Failed to fetch search providers for '%1'. Error: %2 + - - Search has failed for '%2'. - + + Search has failed for '%1'. Error: %2 + - - Search has failed for '%1'. Error: %2 - + + Search has failed for '%2'. + - - + + OCC::UpdateE2eeFolderMetadataJob - - Failed to update folder metadata. - + + Failed to finalize item. + - - Failed to unlock encrypted folder. - + + Failed to update folder metadata. + + + + OCC::UpdateE2eeFolderUsersMetadataJob - - Failed to finalize item. - + Could not add or remove a folder user %1, for folder %2 + - - - OCC::UpdateE2eeFolderUsersMetadataJob - - - - - - - - - - Error updating metadata for a folder %1 - + + Could not add or remove user %1 to access folder %2 + Could not add or remove user %1 to access folder %2 - - Could not fetch public key for user %1 - + + Could not fetch public key for user %1 + - - Could not find root encrypted folder for folder %1 - + + Could not find root encrypted folder for folder %1 + - - Could not add or remove user %1 to access folder %2 - + + Error updating metadata for a folder %1 + - - Failed to unlock a folder. - + + Failed to unlock a folder. + - - + + OCC::User - - %1 notifications - + + %1 notifications + %1 notifications - - Retry all uploads - + + Resolve conflict + - - - Resolve conflict - + + Retry all uploads + - - + + OCC::UserModel - - Confirm Account Removal - - - - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + - - Remove connection - + + Confirm Account Removal + - - Cancel - + + Remove connection + - - + + OCC::UserStatusSelectorModel - - Could not fetch predefined statuses. Make sure you are connected to the server. - + + %1 days + - - Could not fetch status. Make sure you are connected to the server. - + + %1 hours + - - Status feature is not supported. You will not be able to set your status. - + + %1 minutes + - - Emojis are not supported. Some status functionality may not work. - + + 1 day + - - Could not set status. Make sure you are connected to the server. - + + 1 hour + - - Could not clear status message. Make sure you are connected to the server. - + + 1 minute + - - - Don't clear - + + 30 minutes + - - 30 minutes - + + 4 hours + - - - 1 hour - + + Could not clear status message. Make sure you are connected to the server. + - - 4 hours - + + Could not fetch predefined statuses. Make sure you are connected to the server. + - - - Today - + + Could not fetch status. Make sure you are connected to the server. + - - - This week - + + Could not set status. Make sure you are connected to the server. + - - Less than a minute - + + Don't clear + - - 1 minute - + + Emojis are not supported. Some status functionality may not work. + - - %1 minutes - + + Less than a minute + - - %1 hours - + + Status feature is not supported. You will not be able to set your status. + - - 1 day - + + This week + - - %1 days - + + Today + - - + + OCC::ValidateChecksumHeader - - The checksum header is malformed. - + + The checksum header contained an unknown checksum type "%1" + - - The checksum header contained an unknown checksum type "%1" - + + The checksum header is malformed. + - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + - - + + OCC::Vfs - - The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 + - - + + OCC::VfsDownloadErrorDialog - - Download error - - - - - Error downloading - + + %1 could not be downloaded. + - - could not be downloaded - + + > More details + - - > More details - + + could not be downloaded + - - More details - + + Download error + - - Error downloading %1 - + + Error downloading + - - %1 could not be downloaded. - + + Error downloading %1 + - - - OCC::VfsSuffix - - - Error updating metadata due to invalid modification time - + + More details + - - - OCC::VfsXAttr - - - - Error updating metadata due to invalid modification time - - - - + + OCC::WebEnginePage - - Invalid certificate detected - + + Invalid certificate detected + - - The host "%1" provided an invalid certificate. Continue? - + + The host "%1" provided an invalid certificate. Continue? + - - + + OCC::WebFlowCredentials - - <b>You have been logged out of your account %1 at %2. Please login again.</b> - - - - - OCC::WelcomePage - - - Form - - - - - Log in - + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + <b>You have been logged out of your account %1 at %2. Please login again.</b> - - Sign up with provider - + Please login with the account: %1 + - - Keep your data secure and under your control - + You have been logged out of your account %1 at %2. Please login again. + + + + OCC::WelcomePage - - Host your own server - - - - - OCC::ownCloudGui - - - Please sign in - + Easy-to-use web mail, calendaring & contacts + Easy-to-use web mail, calendaring & contacts - - Folder %1: %2 - + + Form + - - There are no sync folders configured. - + + Host your own server + - - Disconnected from %1 - + + Keep your data secure and under your control + - - Unsupported Server Version - + + Log in + - - The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - + Screensharing, online meetings & web conferences + Screensharing, online meetings & web conferences - - Disconnected - + Secure collaboration & file exchange + Secure collaboration & file exchange - - Disconnected from some accounts - + + Sign up with provider + + + + OCC::ownCloudGui - - Disconnected from accounts: - + + Account %1: %2 + - - Account %1: %2 - + + Account synchronization is disabled + - - Signed out - + + Disconnected from %1 + - - Account synchronization is disabled - + + Disconnected from accounts: + - - - Synchronization is paused - + + Disconnected from some accounts + - - Unresolved conflicts - + + Error during synchronization + - - Error during synchronization - + + Folder %1: %2 + - - No sync folders configured - + + No sync folders configured + - - Checking for changes in remote "%1" - + + Please sign in + - - Checking for changes in local "%1" - + + Synchronization is paused + - - Syncing %1 of %2 (%3 left) - + + Syncing %1 of %2 (%3 left) + - - Syncing %1 of %2 - + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + - - Syncing %1 (%2 left) - + + There are no sync folders configured. + - - Syncing %1 - + + Unresolved conflicts + - - %1 (%2, %3) - + + Unsupported Server Version + - - Up to date - + + Up to date + - - + + OCC::sesSnackBar - - Error - - - - - Warning - - - - - Success - + + Success + Success - - + + OwncloudAdvancedSetupPage - - Username - + + &Local Folder + - - Server address - + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> - - Sync Logo - + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - - Local Folder - + + Ask before syncing external storages + - - Choose different folder - + + Ask before syncing folders larger than + - - Synchronize everything from server - + + Choose different folder + - - Ask before syncing folders larger than - + + Erase local folder and start a clean sync + - - - MB - - Trailing part of "Ask confirmation before syncing folder larger than" - + + Keep local data + - - Ask before syncing external storages - + + Local Folder + - - Choose what to sync - + + Server address + - - Keep local data - + + Sync Logo + - - <html><head/><body><p>If this box is checked, - existing content in the local folder will be erased to start a clean sync - from the server.</p><p>Do not check this if the local content - should be uploaded to the servers folder.</p></body></html> - - + + Synchronize everything from server + - - Erase local folder and start a clean sync - + Username + + + + OwncloudHttpCredsPage - - &Local Folder - + + &Password + - - - OwncloudHttpCredsPage - - &Username - + + &Username + + + + OwncloudOAuthCredsPage - - &Password - + Please switch to your browser to proceed. + Please switch to your browser to proceed. - - - OwncloudSetupPage - - - TextLabel - + Re-open Browser + Re-open Browser + + + OwncloudSetupPage - - Server address - + + TextLabel + - - This is the link to your %1 web interface when you open it in the browser. - + + This is the link to your %1 web interface when you open it in the browser. + - - + + QObject - - %nd - delay in days after an activity - - - - - - - - in the future - + + %nd + + + + %nd + - - %nh - delay in hours after an activity - - - - - - - - 1m - one minute after activity date and time - + + %nh + + + + %nh + - - %nm - delay in minutes after an activity - - - - + + %nm + + + + %nm + - - now - + + 1m + - - Some time ago - + + Could not create debug archive in selected location! + Could not create debug archive in selected location! - - %1: %2 - this displays an error string (%2) for a file %1 - + + Failed to create debug archive + Failed to create debug archive - - New folder - + + in the future + - - Failed to create debug archive - + + New folder + - - Could not create debug archive in selected location! - + + now + - - The directory %1 cannot be part of your sync directory. Please choose another folder. - + + Paths beginning with '#' character are not supported in VFS mode. + - - You renamed %1 - + + Some time ago + - - You deleted %1 - + + Synced %1 + - - You created %1 - + + The directory %1 cannot be part of your sync directory. Please choose another folder. + The directory %1 cannot be part of your sync directory. Please choose another folder. - - You changed %1 - + + You changed %1 + - - Synced %1 - + + You created %1 + - - Paths beginning with '#' character are not supported in VFS mode. - + + You deleted %1 + - - Reply - + + You renamed %1 + - - + + ResolveConflictsDialog - - - Solve sync conflicts - - - - %1 files in conflict - indicate the number of conflicts to resolve - - - - + + %1 files in conflict + + %1 file in conflict + %1 files in conflict + %1 files in conflict + - - Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - + + All local versions + - - All local versions - + + All server versions + - - All server versions - + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. + - - Resolve conflicts - + + Resolve conflicts + - - Cancel - + + Solve sync conflicts + - - - SesErrorBox - - - Error - - - - + + SesTrayHeader - - Website - + + Open local or group folders + - - Open Nextcloud in browser - + + Open Nextcloud in browser + Open HiDrive Next in browser - - Open local or group folders - + + Website + Website - - + + ShareDelegate - - Create a new share link - + + Copied! + - - Copy share link location - + + Copy share link location + - - Copied! - + + Create a new share link + + + + ShareDetailsPage - - Share options - + + Add another link + - - - ShareDetailsPage - - An error occurred setting the share password. - + + Allow resharing + - - Dismiss - + + Allow upload and editing + - - Password protect - + + An error occurred setting the share password. + - - Set expiration date - + + Copy share link + - - Note to recipient - + + Custom Permissions + Custom Permissions - - Enter the note to recipient - + Edit share + - - - Allow upload and editing - + + Enter the note to recipient + Enter the note to recipient - - Custom Permissions - + + File drop (upload only) + - - View only - + + Hide download + - - File drop (upload only) - + + Note to recipient + - - Allow resharing - + + Password protect + - - Hide download - + + Set expiration date + - - Add another link - + Share label + - - Unshare - + + Share link copied! + - - Share link copied! - + + Unshare + - - Copy share link - + + View only + - - + + ShareView - - Password required for new share - + + Password required for new share + - - Share password - + + Share password + - - Sharing is disabled - + + Sharing is disabled + - - This item cannot be shared. - + + Sharing is disabled. + - - Sharing is disabled. - + + This item cannot be shared. + - - + + ShareeSearchField - - Search for users or groups… - + + Search for users or groups… + - - Sharing is not available for this folder - + + Sharing is not available for this folder + - - + + SyncStatus - - Sync now - + + Sync now + - - - Resolve conflicts - - - - + + TalkReplyTextField - - Reply to … - + + Reply to … + - - Send reply to chat message - + + Send reply to chat message + - - + + TestSetUserStatusDialog - - - 1 day - - - - - - - - - Don't clear - - - - - - - - - 1 hour - - - - - - - - 30 minutes - - - - - - - 4 hours - - - - - - - Today - - - - - - - This week - - - - - Less than a minute - + + 7 days + 7 days - - - 1 minute - - - - - 7 days - - - - - Could not fetch predefined statuses. Make sure you are connected to the server. - - - - - Could not fetch status. Make sure you are connected to the server. - - - - - Status feature is not supported. You will not be able to set your status. - - - - - Could not set status. Make sure you are connected to the server. - - - - - Emojis are not supported. Some status functionality may not work. - - - - - Could not clear status message. Make sure you are connected to the server. - - - - + + TrayFoldersMenuButton - - Files - - - - - Open local or group folders - - - - - Open local folder - + + Files + Files - - Connected - + Group folder button + - - Disconnected - + + Open %1 in file explorer + - - Open local folder "%1" - + + Open group folder "%1" + - - Open group folder "%1" - + + Open local folder + - - Open %1 in file explorer - + + Open local folder "%1" + - - User group and local folders menu - + + User group and local folders menu + - - + + TrayWindowAccountMenu - - Current account - - - - - Resume sync for all - - - - - Pause sync for all - - - - - Add account - + + Account switcher and settings menu + - - Settings - + + Current account + - - Exit - + + Current account avatar + - - Current account avatar - + + Current account status is do not disturb + - - Current account status is online - + + Current account status is online + - - Current account status is do not disturb - + + Exit + - - - Account switcher and settings menu - - - - + + TrayWindowHeaderBar - - Website - - - - - Open Nextcloud in browser - + + More apps + - - Open local or group folders - + + Open %1 in browser + - - Open Nextcloud Talk in browser - + + Open Nextcloud Talk in browser + - - - More apps - - - - - Open %1 in browser - - - - + + UnifiedSearchInputContainer - - Search files, messages, events … - + + Search files, messages, events … + - - + + UnifiedSearchResultFetchMoreTrigger - - Load more results - + + Load more results + - - + + UnifiedSearchResultItemSkeleton - - Search result skeleton. - - - - - UnifiedSearchResultListItem - - - Load more results - + + Search result skeleton. + - - + + UnifiedSearchResultNothingFound - - No results for - + + No results for + - - + + UnifiedSearchResultSectionItem - - Search results section %1 - + + Search results section %1 + - - + + UserLine - - Switch to account - + + Account actions + - - Account actions - + + Remove account + - - Set status - + + Set status + - - - Log out - + + Switch to account + - - - - Log in - - - - - Remove account - - - - + + UserStatusSelector - - Online status - - - - - Online - + + Appear offline + - - Away - + + Away + - - Do not disturb - + + Clear status message + - - Mute all notifications - + + Clear status message after + - - Invisible - + + Do not disturb + - - Appear offline - + + Invisible + - - Status message - + + Mute all notifications + - - What is your status? - + + Online + - - Clear status message after - + + Online status + - - Cancel - + + Set status message + - - Clear status message - + + Status message + - - Set status message - + + What is your status? + - - + + Utility - - %L1 GB - + + %L1 B + - - %L1 MB - + + %L1 GB + - - %L1 KB - + + %L1 KB + - - %L1 B - + + %L1 MB + - - %L1 TB - + + %L1 TB + - - %n year(s) - - - - + + %n day(s) + + + + + - - %n month(s) - - - - + + %n hour(s) + + + + + - - %n day(s) - - - - + + %n minute(s) + + + + + - - %n hour(s) - - - - + + %n month(s) + + + + + - - %n minute(s) - - - - + + %n second(s) + + + + + - - %n second(s) - - - - - + + %n year(s) + + + + + + + + + Window - - %1 %2 - + Add new account + Add new account - - - Window - - Nextcloud desktop main dialog - + + New activities + - - Unified search results list - + + Nextcloud desktop main dialog + - - New activities - + + Unified search results list + - - + + main.cpp - - System Tray not available - + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. + - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - + + System Tray not available + - - + + nextcloudTheme::aboutInfo() - - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + - - + + progress - - Virtual file created - - - - - Replaced by virtual file - - - - - Downloaded - - - - - Uploaded - + + Deleted + - - Server version downloaded, copied changed local file into conflict file - + + Downloaded + - - Server version downloaded, copied changed local file into case conflict conflict file - + + downloading + - - Deleted - + + error + - - Moved to %1 - + + Filesystem access error + - - Ignored - + + Ignored + - - Filesystem access error - + + Moved to %1 + - - Error - + + moving + - - Updated local metadata - + + Replaced by virtual file + - - Updated local virtual files metadata - + + Server version downloaded, copied changed local file into case conflict conflict file + - - - Unknown - + + Server version downloaded, copied changed local file into conflict file + - - downloading - + + Unknown + - - uploading - + + Updated local metadata + - - deleting - + + Updated local virtual files metadata + Updated local virtual files metadata - - moving - + + updating local metadata + - - ignoring - + + updating local virtual files metadata + Updating local virtual files metadata - - error - + + Uploaded + - - updating local metadata - + + uploading + - - updating local virtual files metadata - + + Virtual file created + - - + + theme - - Status undefined - + + Aborting … + - - Waiting to start sync - + + Preparing to sync + - - Sync is running - + + Setup Error + - - Sync Success - + + Status undefined + - - Sync Success, some files were ignored. - + + Sync Error + - - Sync Error - + + Sync is paused + - - Setup Error - + + Sync is running + - - Preparing to sync - + + Sync Success + - - Aborting … - + + Sync Success, some files were ignored. + - - Sync is paused - + + Waiting to start sync + - - + + utility - - Could not open browser - + + Always available locally + - - There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - + + Available online only + - - Could not open email client - + + Could not open browser + - - There was an error when launching the email client to create a new message. Maybe no default email client is configured? - + + Could not open email client + - - Always available locally - + + Currently available locally + - - Currently available locally - + + Free up local space + - - Some available online only - + + Make always available locally + - - Available online only - + + Some available online only + - - Make always available locally - + + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? + - - Free up local space - + + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + - + diff --git a/translations/client_es.ts b/translations/client_es.ts index 377633b440e1c..fae7714776b8e 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -1,3937 +1,3734 @@ - - - - - ActivityItem - - - Open %1 locally - Abrir %1 localmente - - - - In %1 - En %1 - - - - ActivityItemContent - - - Open file details - Abrir detalles del archivo - + + + - - Dismiss - Descartar + &Automatically check for Updates + Comprobación automática de actualizaciones - - - ActivityList - - Activity list - Lista de actividad + &Launch on System Startup + &Launch al iniciar el sistema - - No activities yet - Aún no hay actividades + Copy link + Copiar enlace - - - BasicComboBox - - Clear status message menu - Borrar el menú de mensajes de estado + No Proxy + No Proxy - - - CallNotificationDialog - - Talk notification caller avatar - Avatar de la notificación de llamada + Remove All Files? + ¿Eliminar todos los archivos? - - Answer Talk call notification - Aviso de llamada de Answer Talk + Show Call Notifications + - - Decline - Rechazar + Show Server &Notifications + Mostrar servidor &notificaciones - - Decline Talk call notification - Rechazar la notificación de llamadas de Talk + Show sync folders in &Explorer's navigation pane + - - - CloudProviderWrapper - - %1 (%2, %3) - %1 (%2, %3) + Use &Monochrome Icons + Utilizar &Iconos monocromos + + + ActivityItem - - Checking for changes in "%1" - Buscando cambios en "%1" + + In %1 + En %1 - - Syncing %1 of %2 (%3 left) - Sincronizando %1 de %2 (%3 restantes) + + Open %1 locally + Abrir %1 localmente + + + ActivityItemContent - - Syncing %1 of %2 - Sincronizando %1 de %2 + + Dismiss + Descartar - - Syncing %1 (%2 left) - Sincronizando %1 (quedan %2) + + Open file details + Abrir detalles del archivo + + + ActivityList - - Syncing %1 - Sincronizando %1 + + Activity list + Lista de actividad - - - No recently changed files - No hay archivos modificados recientemente + + No activities yet + Aún no hay actividades + + + BasicComboBox - - Sync paused - Sincronización pausada + + Clear status message menu + Borrar el menú de mensajes de estado + + + CallNotificationDialog - - Syncing - Sincronizando + + Answer Talk call notification + Aviso de llamada de Answer Talk - - Open website - Abrir página web + + Decline + Rechazar - - Recently changed - Cambiado recientemente + + Decline Talk call notification + Rechazar la notificación de llamadas de Talk - - Pause synchronization - Pausar sincronización + + Talk notification caller avatar + Avatar de la notificación de llamada + + + CloudProviderWrapper - - Help - Ayuda + + %1 (%2, %3) + %1 (%2, %3) - - Settings - Configuración + + Checking for changes in "%1" + Buscando cambios en "%1" - - Log out - Cerrar sesión + + Help + Ayuda - - Quit sync client - Cerrar cliente de sincronización + + Log out + Cerrar sesión - - - ConflictDelegate - - Local version - Versión local + + No recently changed files + No hay archivos modificados recientemente - - Server version - Versión del servidor + + Open website + Abrir página web - - - CrashReporter - - Tomahawk Crash Reporter - + + Pause synchronization + Pausar sincronización - - <html><head/><body><p><br/></p></body></html> - + + Quit sync client + Cerrar cliente de sincronización - - Abort - + + Recently changed + Cambiado recientemente - - Send this report - + + Settings + Configuración - - Don't send - + + Sync paused + Sincronización pausada - - You can disable sending crash reports in the configuration dialog. - + + Syncing + Sincronizando - - - - We cannot gather useful debug information on your system. - + + Syncing %1 + Sincronizando %1 - - - - - - Close - Cerrar + + Syncing %1 (%2 left) + Sincronizando %1 (quedan %2) - - Ready to send debug information (<a href="%1">view backtrace</a>). - + + Syncing %1 of %2 + Sincronizando %1 de %2 - - Gathering debug information... - + + Syncing %1 of %2 (%3 left) + Sincronizando %1 de %2 (%3 restantes) + + + ConflictDelegate - - Uploaded %L1 of %L2 KB. - + + Local version + Versión local - - Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. - + + Server version + Versión del servidor + + + CrashReporter - - Failed to send crash info. - + + Close + Cerrar - - + + EditFileLocallyLoadingDialog - - Opening file for local editing - Abriendo archivo para editarlo en local + + Opening file for local editing + Abriendo archivo para editarlo en local - - + + EmojiPicker - - No recent emojis - No hay emojis recientes + + No recent emojis + No hay emojis recientes - - + + ErrorBox - - Error - Error + + Error + Error - - + + FakeHangingReply - - Operation canceled - + + Operation canceled + Operación cancelada - - + + FileDetailsPage - - Dismiss - Descartar + Sharing + Compartir - - + + FileDetailsWindow - - File details of %1 · %2 - Detalles del archivo de %1 · %2 + + File details of %1 · %2 + Detalles del archivo de %1 · %2 - - + + FileProviderEvictionDialog - - Evict materialised files - Evitar los archivos materializados + + Evict materialised files + Evitar los archivos materializados - - Materialised items - Elementos materializados + + Materialised items + Elementos materializados - - Reload - Recargar + + Reload + Recargar - - + + FileProviderFastEnumerationSettings - - Enable fast sync - Habilitar sincronización rápida + + Enable fast sync + Habilitar sincronización rápida - - Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - La sincronización rápida sólo sincronizará los cambios en archivos y carpetas dentro de las carpetas que se han explorado. Esto puede incrementar significativamente la capacidad de respuesta en la configuración inicial de archivos virtuales. Sin embargo, esto provocará descargas redundantes de archivos movidos a carpetas inexploradas. + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + La sincronización rápida sólo sincronizará los cambios en archivos y carpetas dentro de las carpetas que se han explorado. Esto puede incrementar significativamente la capacidad de respuesta en la configuración inicial de archivos virtuales. Sin embargo, esto provocará descargas redundantes de archivos movidos a carpetas inexploradas. - - + + FileProviderFileDelegate - - Delete - Borrar + + Delete + Borrar - - + + FileProviderSettings - - Virtual files settings - Configuración de archivos virtuales + + Advanced + Avanzado - - General settings - Configuración general + + Create debug archive + Crear archivo de depuración - - Enable virtual files - Activar archivos virtuales + + Enable virtual files + Activar archivos virtuales - - Advanced - Avanzado + + General settings + Configuración general - - Signal file provider domain - Dominio del proveedor de archivos de firmas + + Signal file provider domain + Dominio del proveedor de archivos de firmas - - Create debug archive - Crear archivo de depuración + + Virtual files settings + Configuración de archivos virtuales - - + + FileProviderStorageInfo - - Local storage use - Uso de almacenamiento local + + %1 GB of %2 GB remote files synced + %1 GB de %2 GB de archivos remotos sincronizados - - %1 GB of %2 GB remote files synced - %1 GB de %2 GB de archivos remotos sincronizados + + Evict local copies... + Desalojar las copias locales... - - Evict local copies... - Desalojar las copias locales... + + Local storage use + Uso de almacenamiento local - - + + FileProviderSyncStatus - - Syncing - Sincronizando + + All synced! + ¡Todo está sincronizado! + + + FileSystem - - All synced! - ¡Todo está sincronizado! + Could not make directories in trash + No se pueden crear directorios en la papelera + + + Could not move "%1" to "%2" + No se pudo mover "%1" a "%2" + + + + Could not remove folder "%1" + No se ha podido eliminar la carpeta "%1" - - - FileSystem - - Error removing "%1": %2 - Error al eliminar "%1": %2 + + Error removing "%1": %2 + Error al eliminar "%1": %2 - - Could not remove folder "%1" - No se ha podido eliminar la carpeta "%1" + Moving to the trash is not implemented on this platform + Mover a la papelera no está implementado en esta plataforma - - + + Flow2AuthWidget - - Browser Authentication - Autentificación del navegador + + An error occurred while connecting. Please try again. + Se ha producido un error al conectarse. Por favor, inténtelo de nuevo. - - Logo - Logo + + Browser Authentication + Autentificación del navegador - - Switch to your browser to connect your account - Cambiar al navegador para conectar con tu cuenta + + Copy Link + Copiar Link - - An error occurred while connecting. Please try again. - Se ha producido un error al conectarse. Por favor, inténtelo de nuevo. + + Logo + Logo - - Copy Link - Copiar Link + + Reopen Browser + Reabrir el navegador - - Reopen Browser - Reabrir el navegador + + Switch to your browser to connect your account + Cambiar al navegador para conectar con tu cuenta - - + + FolderWizardSelectiveSync - - Add Folder Sync - + + Add Folder Sync + Añadir sincronización de carpetas - - Step 3 of 3: Selektive Synchronisation - + + Step 3 of 3: Selektive Synchronisation + Paso 3 de 3: Sincronización selectiva - - + + FolderWizardSourcePage - - Add Folder Sync - + + &Choose + &Elegir - - Step 1 of 3: Select local folder - + &Choose … + &Elige ... - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - + Pick a local folder on your computer to sync + Elige una carpeta local de tu ordenador para sincronizarla - - &Choose - - - - - FolderWizardTargetPage - - - Create folder - Crear carpeta + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Selecciona una carpeta de tu disco duro que deba estar permanentemente conectada a tu %1. Todos los archivos y subcarpetas se cargan y sincronizan automáticamente. - - Refresh - Actualizar + + Step 1 of 3: Select local folder + Paso 1 de 3: Seleccionar carpeta local + + + FolderWizardTargetPage - - Add Folder Sync - + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Ambas carpetas están permanentemente vinculadas y sus respectivos contenidos se sincronizan y actualizan automáticamente. - - Step 2 of 3: Directory in your %1 - + + Create folder + Crear carpeta - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - + + Folders + Carpetas - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + Por favor, ahora seleccione o cree una carpeta de destino en su %1 donde el contenido debe ser cargado y sincronizado. - - Folders - Carpetas + + Refresh + Actualizar - - - KMessageWidget - - &Close - + Select a remote destination folder + Seleccione una carpeta de destino remota - - Close message - + + Step 2 of 3: Directory in your %1 + Paso 2 de 3: Directorio en su %1 - - + + OCC::AbstractNetworkJob - - Connection timed out - Tiempo de conexión agotado + + Connection timed out + Tiempo de conexión agotado - - Unknown error: network reply was deleted - Error desconocido: la respuesta de red fue eliminada + + Server replied "%1 %2" to "%3 %4" + El servidor respondió "%1 %2" a "%3 %4" - - Server replied "%1 %2" to "%3 %4" - El servidor respondió "%1 %2" a "%3 %4" + + Unknown error: network reply was deleted + Error desconocido: la respuesta de red fue eliminada - - + + OCC::Account - - File %1 is already locked by %2. - El archivo %1 ya está bloqueado por %2. + + File %1 is already locked by %2. + El archivo %1 ya está bloqueado por %2. - - Lock operation on %1 failed with error %2 - La operación de bloqueo en %1 ha fallado con el error %2. + + Lock operation on %1 failed with error %2 + La operación de bloqueo en %1 ha fallado con el error %2. - - Unlock operation on %1 failed with error %2 - La operación de desbloqueo en %1 ha fallado con el error %2. + + Unlock operation on %1 failed with error %2 + La operación de desbloqueo en %1 ha fallado con el error %2. - - + + OCC::AccountManager - - %1 accounts were detected from a legacy desktop client. + + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - %1 cuentas se detectaron con un cliente de escritorio antiguo. + %1 cuentas se detectaron con un cliente de escritorio antiguo. ¿Deben estas cuentas ser importadas? - - 1 account was detected from a legacy desktop client. + + 1 account was detected from a legacy desktop client. Should the account be imported? - 1 cuenta se detectó desde un cliente de escritorio antiguo. + 1 cuenta se detectó desde un cliente de escritorio antiguo. ¿Debe importarse esta cuenta? - - - Legacy import - Importación antigua + An existing configuration from a legacy desktop client was detected. +Should an account import be attempted? + Se ha reconocido una configuración existente de un cliente de escritorio anterior. +Se debe intentar importar una cuenta? + + + + Could not import accounts from legacy client configuration. + No se pudieron importar las cuentas desde la configuración del cliente antiguo. + + + + Import + Importar - - Import - Importar + + Legacy import + Importación antigua - - Skip - Saltar + + Skip + Saltar - - Could not import accounts from legacy client configuration. - No se pudieron importar las cuentas desde la configuración del cliente antiguo. + Successfully imported account from legacy client: %1 + - - + + OCC::AccountSettings - - - Storage space: … - Espacio de almacenamiento: ... + + (experimental) + (experimental) - - Expand Memory - + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + %1 (%3%) de %2 en uso. Algunas carpetas, como carpetas de red o compartidas, podrían tener límites diferentes. - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - Las carpetas no seleccionadas serán <b>eliminadas</b> de su carpeta local y ya no serán sincronizadas en este ordenador + + %1 as %2 + %1 como %2 - - - - Cancel - Cancelar + + %1 in use + %1 en uso - - Apply - Aplicar + + %1 of %2 in use + %1 de %2 en uso - - Connected with <server> as <user> - Conectado a <server> como <user> + + <p>Could not create local folder <i>%1</i>.</p> + <p>No pudo crear la carpeta local <i>%1</i>.</p> - - Synchronize all - Sincronizar todo + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>¿De verdad quiere dejar de sincronizar la carpeta <i>%1</i>?</p><p><b>Nota:</b> Esto <b>no</b> elminará los archivo.</p> - - Synchronize none - No sincronizar nada + + Apply + Aplicar - - Apply manual changes - Aplicar cambios manuales + + Apply manual changes + Aplicar cambios manuales - - Standard file sync - Sincronización de archivos estándar + + Availability + Disponibilidad - - Virtual file sync - Sincronización de archivos virtual + + Cancel + Cancelar - - End-to-end Encryption with Virtual Files - Cifrado de extremo a extremo con Archivos Virtuales + + Choose what to sync + Elija qué sincronizar - - You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - Parece que tienes la función de Archivos Virtuales activada en esta carpeta. Por el momento, no es posible descargar implícitamente los archivos virtuales que están cifrados de extremo a extremo. Para obtener la mejor experiencia con los archivos virtuales y el cifrado de extremo a extremo, asegúrate de que la carpeta cifrada está marcada con "Hacer que esté siempre disponible localmente". + + Confirm Folder Sync Connection Removal + Confirme la sincronización para la eliminación de la carpeta conectada - - - Do not encrypt folder - No cifrar carpeta + + Connected to %1. + Conectado a %1. - - - Encrypt folder - Cifrar carpeta + + Connected with <server> as <user> + Conectado a <server> como <user> - - End-to-end Encryption - Cifrado de extremo a extremo + + Connecting to %1 … + Conectando a %1 ... - - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. -<b>This process is not reversible. Are you sure you want to proceed?</b> - Esto cifrará su carpeta y todos los archivos contenidos en ella. Ya no se podrá acceder a estos archivos sin su clave de cifrado. -<b>Este proceso no es reversible. ¿Seguro que quiere continuar?</b> + + Could not encrypt folder because the folder does not exist anymore + No es posible cifrar la carpeta porque ya no existe - - No account configured. - No se ha configurado ninguna cuenta. + + Create new folder + Crear nueva carpeta - - Disable encryption - Deshabilitar cifrado + + Currently there is no storage usage information available. + Actualmente no hay información disponible sobre el uso de almacenamiento. - - Display mnemonic - Mostrar regla mnemotécnica + + Disable encryption + Deshabilitar cifrado - - End-to-end encryption has been enabled for this account - El cifrado de extremo a extremo a sido habilitado para esta cuenta + + Disable end-to-end encryption + Deshabilitar cifrado de extremo a extremo - - Warning - Aviso + + Disable end-to-end encryption for %1? + Deshabilitar cifrado de extremo a extremo para %1? - - Please wait for the folder to sync before trying to encrypt it. - Por favor, espere a que la carpeta se sincronice antes de intentar cifrarla. + + Disable support + Desactivar soporte - - The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - La carpeta tiene un pequeño problema de sincronización. El cifrado de esta carpeta será posible cuando se haya sincronizado correctamente. + + Disable virtual file support … + Desactivar soporte para archivos virtuales … - - The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - La carpeta tiene un problema de sincronización. El cifrado de esta carpeta será posible cuando se haya sincronizado correctamente. + + Disable virtual file support? + ¿Desactivar soporte para archivos virtuales? - - End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. -Would you like to set up end-to-end encryption? - El cifrado de extremo a extremo no está configurado en este dispositivo. Una vez que esté configurado, podrás cifrar esta carpeta. -¿Deseas configurar el cifrado de extremo a extremo? + + Display mnemonic + Mostrar regla mnemotécnica - - You cannot encrypt a folder with contents, please remove the files. -Wait for the new sync, then encrypt it. - No puede cifrar una carpeta con contenidos, por favor, elimine los archivos. -Espere a una nueva sincronización, luego cifrala. + + Do not encrypt folder + No cifrar carpeta - - Encryption failed - Ha fallado el cifrado + + Edit Ignored Files + Editar archivos ignorados - - Could not encrypt folder because the folder does not exist anymore - No es posible cifrar la carpeta porque ya no existe + + Enable virtual file support %1 … + Activar soporte para archivos virtuales %1 ... - - - Open folder - Abrir carpeta + + Encrypt + Cifrar - - Encrypt - Cifrar + + Encrypt folder + Cifrar carpeta - - - Edit Ignored Files - Editar archivos ignorados + + Encryption failed + Ha fallado el cifrado - - - Create new folder - Crear nueva carpeta + + End-to-end Encryption + Cifrado de extremo a extremo - - - Availability - Disponibilidad + + End-to-end encryption has been enabled for this account + El cifrado de extremo a extremo a sido habilitado para esta cuenta - - Choose what to sync - Elija qué sincronizar + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. + El cifrado de extremo a extremo ha sido habilitado en esta cuenta con otro dispositivo.<br> puede ser habilitado en este dispositivo ingresando su mnemónico.<br> Esto habilitará la sincronización de las carpetas cifradas existentes - - Force sync now - Forzar la sincronización ahora + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. +Would you like to set up end-to-end encryption? + El cifrado de extremo a extremo no está configurado en este dispositivo. Una vez que esté configurado, podrás cifrar esta carpeta. +¿Deseas configurar el cifrado de extremo a extremo? - - Restart sync - Reiniciar sync + + End-to-end encryption mnemonic + Mnemónico para cifrado de extremo a extremo - - Resume sync - Continuar sincronización + + End-to-end Encryption with Virtual Files + Cifrado de extremo a extremo con Archivos Virtuales - - Pause sync - Pausar sincronización + + Expand Memory + Ampliar la memoria - - Remove folder sync connection - Eliminar la sincronización de carpetas conectadas + + Folder creation failed + Ha fallado la creación de la carpeta - - Disable virtual file support … - Desactivar soporte para archivos virtuales … + + Force sync now + Forzar la sincronización ahora - - Enable virtual file support %1 … - Activar soporte para archivos virtuales %1 ... + + https://wl.hidrive.com/easy/0057 + https://wl.hidrive.com/easy/0087 - - (experimental) - (experimental) + + No %1 connection configured. + No hay ninguna conexión de %1 configurada. - - Folder creation failed - Ha fallado la creación de la carpeta + + No account configured. + No se ha configurado ninguna cuenta. - - <p>Could not create local folder <i>%1</i>.</p> - <p>No pudo crear la carpeta local <i>%1</i>.</p> + No connection to %1 at %2. + No hay conexión con %1 en %2. - - Confirm Folder Sync Connection Removal - Confirme la sincronización para la eliminación de la carpeta conectada + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + Obtener autorización del navegador. <a href='%1'>Haga clic aquí</a> para volver a abrir el navegador. - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>¿De verdad quiere dejar de sincronizar la carpeta <i>%1</i>?</p><p><b>Nota:</b> Esto <b>no</b> elminará los archivo.</p> + + Open folder + Abrir carpeta - - Remove Folder Sync Connection - Eliminar carpeta de sincronización conectada + + Pause sync + Pausar sincronización - - Disable virtual file support? - ¿Desactivar soporte para archivos virtuales? + + Please wait for the folder to sync before trying to encrypt it. + Por favor, espere a que la carpeta se sincronice antes de intentar cifrarla. - - This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. - -The only advantage of disabling virtual file support is that the selective sync feature will become available again. - -This action will abort any currently running synchronization. - Esta acción deshabilitará el soporte de archivos virtuales. Como consecuencia, se descargará el contenido de las carpetas que estén marcadas como "disponible solo en línea". - -La única ventaja de deshabilitar el soporte de archivos virtuales es para la característica de sincronización selectiva que estará disponible de nuevo. - -Además, esta acción interrumpirá cualquier sincronización en curso. + + Remove folder sync connection + Eliminar la sincronización de carpetas conectadas + + + + Remove Folder Sync Connection + Eliminar carpeta de sincronización conectada + + + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. + Quitar el cifrado de extremo a extremo borrará los archivos sincronizados localmente que se encuentran encriptados.<br>Los archivos encriptados se mantendrán en el servidor. - - Disable support - Desactivar soporte + + Restart sync + Reiniciar sync - - End-to-end encryption mnemonic - Mnemónico para cifrado de extremo a extremo + + Resume sync + Continuar sincronización - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - Para proteger tu identidad criptográfica, la ciframos con una regla mnemotécnica de 12 palabras del diccionario. Por favor, anótalas y mantenlas a salvo. Estas palabras serán necesarias para añadir otros dispositivos a su cuenta (como un teléfono móvil o un portátil). + + Server %1 is currently being redirected, or your connection is behind a captive portal. + El servidor %1 está siendo redirigido actualmente o tu conexión está detrás de un portal cautivo. - - Disable end-to-end encryption - Deshabilitar cifrado de extremo a extremo + + Server %1 is currently in maintenance mode. + El servidor %1 se encuentra en modo mantenimiento. - - Disable end-to-end encryption for %1? - Deshabilitar cifrado de extremo a extremo para %1? + + Server %1 is temporarily unavailable. + Servidor %1 no está disponible temporalmente. - - Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - Quitar el cifrado de extremo a extremo borrará los archivos sincronizados localmente que se encuentran encriptados.<br>Los archivos encriptados se mantendrán en el servidor. + + Server configuration error: %1 at %2. + Error de configuración del servidor: %1 en %2, - - Sync Running - Sincronización en curso + + Set up encryption + Configurar cifrado - - The syncing operation is running.<br/>Do you want to terminate it? - La sincronización está en curso.<br/>¿Desea interrumpirla? + + Signed out from %1. + Cerró sesión desde %1. - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - %1 (%3%) de %2 en uso. Algunas carpetas, como carpetas de red o compartidas, podrían tener límites diferentes. + + Standard file sync + Sincronización de archivos estándar - - %1 of %2 in use - %1 de %2 en uso + + Storage space %1% occupied + Espacio de almacenamiento %1% ocupado - - Storage space %1% occupied - + + Storage space: … + Espacio de almacenamiento: ... - - Currently there is no storage usage information available. - Actualmente no hay información disponible sobre el uso de almacenamiento. + + Sync Running + Sincronización en curso - - %1 in use - %1 en uso + + Synchronize all + Sincronizar todo - - %1 as %2 - %1 como %2 + + Synchronize none + No sincronizar nada - - The server version %1 is unsupported! Proceed at your own risk. - ¡La versión %1 del servidor no está soportada! Si continúas, lo haces bajo tu propio riesgo. + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully + La carpeta tiene un pequeño problema de sincronización. El cifrado de esta carpeta será posible cuando se haya sincronizado correctamente. - - Connected to %1. - Conectado a %1. + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully + La carpeta tiene un problema de sincronización. El cifrado de esta carpeta será posible cuando se haya sincronizado correctamente. - - Server %1 is temporarily unavailable. - Servidor %1 no está disponible temporalmente. + + The server version %1 is unsupported! Proceed at your own risk. + ¡La versión %1 del servidor no está soportada! Si continúas, lo haces bajo tu propio riesgo. - - Server %1 is currently in maintenance mode. - El servidor %1 se encuentra en modo mantenimiento. + + The syncing operation is running.<br/>Do you want to terminate it? + La sincronización está en curso.<br/>¿Desea interrumpirla? - - Server %1 is currently being redirected, or your connection is behind a captive portal. - El servidor %1 está siendo redirigido actualmente o tu conexión está detrás de un portal cautivo. + + There are folders that have grown in size beyond %1MB: %2 + Existen carpetas que han aumentado de tamaño más alla de %1MB: %2 - - Signed out from %1. - Cerró sesión desde %1. + + There are folders that were not synchronized because they are external storages: + Hay carpetas que no se han sincronizado porque están en el almacenamiento externo: - - Connecting to %1 … - Conectando a %1 ... + + There are folders that were not synchronized because they are too big or external storages: + Hay carpetas que no se han sincronizado porque son demasiado grandes o están en el almacenamiento externo: - - Unable to connect to %1. - No es posible conectarse con %1. + + There are folders that were not synchronized because they are too big: + Hay carpetas que no se han sincronizado porque son demasiado grandes: - - Server configuration error: %1 at %2. - Error de configuración del servidor: %1 en %2, + + This account supports end-to-end encryption + Esta cuenta soporta cifrado punto a punto - - No %1 connection configured. - No hay ninguna conexión de %1 configurada. + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + +The only advantage of disabling virtual file support is that the selective sync feature will become available again. + +This action will abort any currently running synchronization. + Esta acción deshabilitará el soporte de archivos virtuales. Como consecuencia, se descargará el contenido de las carpetas que estén marcadas como "disponible solo en línea". + +La única ventaja de deshabilitar el soporte de archivos virtuales es para la característica de sincronización selectiva que estará disponible de nuevo. + +Además, esta acción interrumpirá cualquier sincronización en curso. - - https://wl.hidrive.com/easy/0057 - + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> + Esto encriptará tu carpeta y todos los archivos que contenga. Estos archivos ya no serán accesibles sin tu clave mnemotécnica de encriptación. +<b>Este proceso no es reversible. ¿Está seguro de que desea continuar?</b> - - There are folders that were not synchronized because they are too big: - Hay carpetas que no se han sincronizado porque son demasiado grandes: + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> + Esto cifrará su carpeta y todos los archivos contenidos en ella. Ya no se podrá acceder a estos archivos sin su clave de cifrado. +<b>Este proceso no es reversible. ¿Seguro que quiere continuar?</b> - - There are folders that were not synchronized because they are external storages: - Hay carpetas que no se han sincronizado porque están en el almacenamiento externo: + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + Para proteger tu identidad criptográfica, la ciframos con una regla mnemotécnica de 12 palabras del diccionario. Por favor, anótalas y mantenlas a salvo. Estas palabras serán necesarias para añadir otros dispositivos a su cuenta (como un teléfono móvil o un portátil). - - There are folders that were not synchronized because they are too big or external storages: - Hay carpetas que no se han sincronizado porque son demasiado grandes o están en el almacenamiento externo: + + Unable to connect to %1. + No es posible conectarse con %1. - - There are folders that have grown in size beyond %1MB: %2 - Existen carpetas que han aumentado de tamaño más alla de %1MB: %2 + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + Las carpetas no seleccionadas serán <b>eliminadas</b> de su carpeta local y ya no serán sincronizadas en este ordenador - - End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - El cifrado de extremo a extremo ha sido habilitado en esta cuenta con otro dispositivo.<br> puede ser habilitado en este dispositivo ingresando su mnemónico.<br> Esto habilitará la sincronización de las carpetas cifradas existentes + + Virtual file sync + Sincronización de archivos virtual - - This account supports end-to-end encryption - Esta cuenta soporta cifrado punto a punto + + Warning + Aviso + + + + You cannot encrypt a folder with contents, please remove the files. +Wait for the new sync, then encrypt it. + No puede cifrar una carpeta con contenidos, por favor, elimine los archivos. +Espere a una nueva sincronización, luego cifrala. - - Set up encryption - Configurar cifrado + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". + Parece que tienes la función de Archivos Virtuales activada en esta carpeta. Por el momento, no es posible descargar implícitamente los archivos virtuales que están cifrados de extremo a extremo. Para obtener la mejor experiencia con los archivos virtuales y el cifrado de extremo a extremo, asegúrate de que la carpeta cifrada está marcada con "Hacer que esté siempre disponible localmente". - - + + OCC::AccountSetupFromCommandLineJob - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - La petición autenticada al servidor ha sido redirigida a "%1". La URL es errónea, el servidor está mal configurado. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Acceso denegado por el servidor. Para verificar que tiene acceso, <a href="%1">haga clic aquí</a> para acceder al servicio desde el navegador. - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Acceso denegado por el servidor. Para verificar que tiene acceso, <a href="%1">haga clic aquí</a> para acceder al servicio desde el navegador. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + La petición autenticada al servidor ha sido redirigida a "%1". La URL es errónea, el servidor está mal configurado. - - There was an invalid response to an authenticated WebDAV request - Ha habido una respuesta no válida a una solicitud autenticada de WebDAV + + There was an invalid response to an authenticated WebDAV request + Ha habido una respuesta no válida a una solicitud autenticada de WebDAV - - + + OCC::AccountState - - Signed out - Cerrar sesión + + Asking Credentials + Solicitando credenciales - - Disconnected - Desconectado + + Configuration error + Error en la configuración - - Connected - Conectado + + Connected + Conectado - - Service unavailable - Servicio no disponible + + Disconnected + Desconectado - - Maintenance mode - Modo mantenimiento + + Maintenance mode + Modo mantenimiento - - Redirect detected - Redirección detectada + + Network error + Error en la red - - Network error - Error en la red + + Redirect detected + Redirección detectada - - Configuration error - Error en la configuración + + Service unavailable + Servicio no disponible - - Asking Credentials - Solicitando credenciales + + Signed out + Cerrar sesión - - Unknown account state - Estado de cuenta desconocido + + Unknown account state + Estado de cuenta desconocido - - + + OCC::ActivityListModel - - For more activities please open the Activity app. - Para más detalles, por favor, abre la app Actividades. + + Fetching activities … + Actividades de búsqueda … - - Fetching activities … - Actividades de búsqueda … + + Files from the ignore list as well as symbolic links are not synced. + Los archivos de la lista de ignorados así como los enlace simbólicos no estarán sincronizados. - - Network error occurred: client will retry syncing. - Ha ocurrido un error de red: el cliente reintentará la sincronización. + + For more activities please open the Activity app. + Para más detalles, por favor, abre la app Actividades. - - Files from the ignore list as well as symbolic links are not synced. - Los archivos de la lista de ignorados así como los enlace simbólicos no estarán sincronizados. + + Network error occurred: client will retry syncing. + Ha ocurrido un error de red: el cliente reintentará la sincronización. - - + + OCC::AddCertificateDialog - - SSL client certificate authentication - Certificado de autentificación SSL del cliente + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. + Usar encriptación pkcs12 es muy recomendable, puesto que una copia se guardará en el archivo de configuración. - - This server probably requires a SSL client certificate. - Probablemente este servidor requiera un certificado SSL del cliente. + + Browse … + Explorar ... - - Certificate & Key (pkcs12): - Certificado & Key (pkcs12): + + Certificate & Key (pkcs12): + Certificado & Key (pkcs12): - - Browse … - Explorar ... + + Certificate files (*.p12 *.pfx) + Archivos de certificado (*.p12 *.pfx) - - Certificate password: - Contraseña del certificado: + + Certificate password: + Contraseña del certificado: - - An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - Usar encriptación pkcs12 es muy recomendable, puesto que una copia se guardará en el archivo de configuración. + + Select a certificate + Seleccione un certificado - - Select a certificate - Seleccione un certificado + + SSL client certificate authentication + Certificado de autentificación SSL del cliente - - Certificate files (*.p12 *.pfx) - Archivos de certificado (*.p12 *.pfx) + + This server probably requires a SSL client certificate. + Probablemente este servidor requiera un certificado SSL del cliente. - - + + OCC::Application - - Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - Algunos ajustes fueron configurados en %1 versiones de este cliente y utilizan características que no están disponibles en esta versión.<br><br>Continuar implica <b>%2 estos ajustes</b>.<br><br>El archivo de configuración actual ya fue respaldado a <i>%3</i>. - - - - newer - newer software version - recientes + + %1 accounts + %1 cuentas - - older - older software version - antiguos + + %1 folders + %1 carpetas - - ignoring - ignorando + + 1 account + 1 cuenta - - deleting - eliminando + + 1 folder + 1 carpeta - - Quit - Salir + + Continue + Continuar - - Continue - Continuar + + deleting + eliminando - - %1 accounts - number of accounts imported - %1 cuentas + + Error accessing the configuration file + Error al acceder al archivo de configuración - - 1 account - 1 cuenta + + ignoring + ignorando - - %1 folders - number of folders imported - %1 carpetas + + Imported %1 and %2 from a legacy desktop client. +%3 + Se importaron %1 y %2 desde un cliente de escritorio legado. +%3 - - 1 folder - 1 carpeta + + newer + recientes - - Legacy import - Importación legada + + older + antiguos - - Imported %1 and %2 from a legacy desktop client. -%3 - number of accounts and folders imported. list of users. - Se importaron %1 y %2 desde un cliente de escritorio legado. -%3 + + Quit + Salir - - Error accessing the configuration file - Error al acceder al archivo de configuración + + Quit %1 + Salir %1 - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - Se ha producido un error al acceder al archivo de configuración en %1. Por favor, asegúrese de que su cuenta del sistema puede acceder al archivo. + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. + Algunos ajustes fueron configurados en %1 versiones de este cliente y utilizan características que no están disponibles en esta versión.<br><br>Continuar implica <b>%2 estos ajustes</b>.<br><br>El archivo de configuración actual ya fue respaldado a <i>%3</i>. - - Quit %1 - Salir %1 + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + Se ha producido un error al acceder al archivo de configuración en %1. Por favor, asegúrese de que su cuenta del sistema puede acceder al archivo. - - + + OCC::AuthenticationDialog - - Authentication Required - Se requiere autenticación + + &Password: + &Contraseña: - - Enter username and password for "%1" at %2. - Introduce usuario y contraseña para "%1" en %2. + + &Username: + &Username: - - &Username: - &Username: + + Authentication Required + Se requiere autenticación - - &Password: - &Contraseña: + + Enter username and password for "%1" at %2. + Introduce usuario y contraseña para "%1" en %2. - - + + OCC::BasePropagateRemoteDeleteEncrypted - - "%1 Failed to unlock encrypted folder %2". - "%1 Fallo al desbloquear la carpeta cifrada %2". + "%1 Failed to unlock encrypted folder %2". + "%1 Fallo al desbloquear la carpeta cifrada %2". - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - El código HTTP devuelto por el servidor es erróneo. Se esperaba 204, pero se recibió "%1 %2". + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + El código HTTP devuelto por el servidor es erróneo. Se esperaba 204, pero se recibió "%1 %2". - - + + OCC::BulkPropagatorJob - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - El archivo %1 no se puede subir porque ya existe otro con el mismo nombre, solo difiere en las mayúsculas/minúsculas + + Error updating metadata: %1 + Error al actualizar los metadatos: %1 - - File %1 has invalid modified time. Do not upload to the server. - El archivo %1 tiene una hora de modificación no válida. No subir al servidor. + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + El archivo %1 no se puede subir porque ya existe otro con el mismo nombre, solo difiere en las mayúsculas/minúsculas - - File Removed (start upload) %1 - Archivo eliminado (comenzar subida) %1 + + File %1 has invalid modification time. Do not upload to the server. + El archivo %1 tiene una hora de modificación no válida. No subir al servidor. - - File %1 has invalid modification time. Do not upload to the server. - El archivo %1 tiene una hora de modificación no válida. No subir al servidor. + + File %1 has invalid modified time. Do not upload to the server. + El archivo %1 tiene una hora de modificación no válida. No subir al servidor. - - Local file changed during syncing. It will be resumed. - Un archivo local ha cambiado durante la sincronización. Será subido. + + File Removed (start upload) %1 + Archivo eliminado (comenzar subida) %1 - - - Local file changed during sync. - Un archivo local ha cambiado durante la sincronización. + + Local file changed during sync. + Un archivo local ha cambiado durante la sincronización. - - Network error: %1 - Error de red: %1 + + Local file changed during syncing. It will be resumed. + Un archivo local ha cambiado durante la sincronización. Será subido. - - Error updating metadata: %1 - Error al actualizar los metadatos: %1 + + Network error: %1 + Error de red: %1 - - The file %1 is currently in use - El archivo %1 se encuentra en uso + + Restoration failed: %1 + Fallo al restaurar: %1 - - The local file was removed during sync. - El archivo local ha sido eliminado durante la sincronización. + + The file %1 is currently in use + El archivo %1 se encuentra en uso - - Restoration failed: %1 - Fallo al restaurar: %1 + + The local file was removed during sync. + El archivo local ha sido eliminado durante la sincronización. - - + + OCC::CaseClashConflictSolver - - Cannot rename file because a file with the same name already exists on the server. Please pick another name. - No se puede renombrar el archivo porque hay un archivo con el mismo nombre en el servidor. Por favor, elija otro nombre. + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + No se puede renombrar el archivo porque hay un archivo con el mismo nombre en el servidor. Por favor, elija otro nombre. - - Could not rename file. Please make sure you are connected to the server. - No se ha podido renombrar el archivo. Por favor, asegúrese de que está conectado al servidor. + + Could not rename file. Please make sure you are connected to the server. + No se ha podido renombrar el archivo. Por favor, asegúrese de que está conectado al servidor. - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - No tienes permisos para renombrar este archivo. Por favor, dile al autor del archivo que lo renombre. + + Failed to fetch permissions with error %1 + Fallo en la obtención de permisos con error %1 - - Failed to fetch permissions with error %1 - Fallo en la obtención de permisos con error %1 + + Filename contains leading and trailing spaces. + El nombre del archivo contiene espacios iniciales y finales. - - Filename contains leading and trailing spaces. - El nombre del archivo contiene espacios iniciales y finales. + + Filename contains leading spaces. + El nombre del archivo contiene espacios al inicio. - - Filename contains leading spaces. - El nombre del archivo contiene espacios al inicio. + + Filename contains trailing spaces. + El nombre del archivo contiene espacios al final. - - Filename contains trailing spaces. - El nombre del archivo contiene espacios al final. + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + No tienes permisos para renombrar este archivo. Por favor, dile al autor del archivo que lo renombre. - - + + OCC::CaseClashFilenameDialog - - Case Clash Conflict - Conflicto de capitalización - - - - The file could not be synced because it generates a case clash conflict with an existing file on this system. - El archivo no puede ser sincronizado porque genera un conflicto de capitalización con un archivo que ya existe en este sistema. - - - - Error - Error - - - - Existing file - Archivo existente - - - - file A - Archivo A + + %1 does not support equal file names with only letter casing differences. + %1 no soporta nombres de archivo idénticos con diferencias de capitalización de letras. - - - today - hoy + + 0 byte + 0 bytes - - - 0 byte - 0 bytes + + Case Clash Conflict + Conflicto de capitalización - - - Open existing file - Abrir archivo existente + + Case clashing file + Archivo con conflicto de capitalización - - Case clashing file - Archivo con conflicto de capitalización + + Existing file + Archivo existente - - file B - Archivo B + + file A + Archivo A - - - Open clashing file - Abrir archivo con problema de capitalización + + file B + Archivo B - - Please enter a new name for the clashing file: - Por favor ingrese un nombre nuevo para el archivo con el problema de capitalización: + + Filename contains illegal characters: %1 + El nombre del archivo contiene caracteres ilegales: %1 - - New filename - Nuevo nombre de archivo + + New filename + Nuevo nombre de archivo - - Rename file - Renombrar archivo + + Open clashing file + Abrir archivo con problema de capitalización - - The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - El archivo "%1" no pudo ser sincronizado porque genera un conflicto de capitalización con un archivo que ya existe en este sistema. + + Open existing file + Abrir archivo existente - - %1 does not support equal file names with only letter casing differences. - %1 no soporta nombres de archivo idénticos con diferencias de capitalización de letras. + + Please enter a new name for the clashing file: + Por favor ingrese un nombre nuevo para el archivo con el problema de capitalización: - - Filename contains leading and trailing spaces. - El nombre del archivo contiene espacios iniciales y finales. + + Rename file + Renombrar archivo - - Filename contains leading spaces. - El nombre del archivo contiene espacios al inicio. + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + El archivo "%1" no pudo ser sincronizado porque genera un conflicto de capitalización con un archivo que ya existe en este sistema. - - Filename contains trailing spaces. - El nombre del archivo contiene espacios al final. + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + El archivo no puede ser sincronizado porque genera un conflicto de capitalización con un archivo que ya existe en este sistema. - - Use invalid name - Usar nombre inválido + + today + hoy - - Filename contains illegal characters: %1 - El nombre del archivo contiene caracteres ilegales: %1 + + Use invalid name + Usar nombre inválido - - + + OCC::CleanupPollsJob - - Error writing metadata to the database - Error al escribir los metadatos en la base de datos + + Error writing metadata to the database + Error al escribir los metadatos en la base de datos - - + + OCC::ClientSideEncryption - - Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - Por favor, introduzca su frase de cifrado de extremo a extremo:<br><br>Nombre de usuario: %2<br> Cuenta: %3<br> + + Enter E2E passphrase + Introduce la frase de acceso E2E - - Enter E2E passphrase - Introduce la frase de acceso E2E + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + Por favor, introduzca su frase de cifrado de extremo a extremo:<br><br>Nombre de usuario: %2<br> Cuenta: %3<br> - - + + OCC::ConflictDialog - - Sync Conflict - Conflicto de sincronización - - - - - Conflicting versions of %1. - Versión conflictiva de %1. - - - - Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. - ¿Qué versión del archivo quiere mantener?<br/>Si selecciona ambas versiones, al archivo local se le añadirá un número a su nombre - - - - Local version - Versión local + + <a href="%1">Open local version</a> + <a href="%1">Abrir versión local</a> - - - Click to open the file - Clic para abrir el archivo + + <a href="%1">Open server version</a> + <a href="%1">Abrir versión en servidor</a> - - - today - hoy + + Click to open the file + Clic para abrir el archivo - - - 0 byte - 0 byte + + Conflicting versions of %1. + Versión conflictiva de %1. - - <a href="%1">Open local version</a> - <a href="%1">Abrir versión local</a> + + Keep both versions + Mantener ambas versiones - - Server version - Versión del servidor + + Keep local version + Mantener versión local - - <a href="%1">Open server version</a> - <a href="%1">Abrir versión en servidor</a> + + Keep selected version + Mantener la versión seleccionada - - - Keep selected version - Mantener la versión seleccionada + + Keep server version + Mantener la versión del servidor - - Open local version - Abrir la versión local + + Open local version + Abrir la versión local - - Open server version - Abrir la versión en servidor + + Open server version + Abrir la versión en servidor - - Keep both versions - Mantener ambas versiones + + Sync Conflict + Conflicto de sincronización - - Keep local version - Mantener versión local + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + ¿Qué versión del archivo quiere mantener?<br/>Si selecciona ambas versiones, al archivo local se le añadirá un número a su nombre - - - Keep server version - Mantener la versión del servidor - - - + + OCC::ConflictSolver - - Do you want to delete the directory <i>%1</i> and all its contents permanently? - ¿Quieres eliminar la carpeta <i>%1</i> y todo su contenido permanentemente? - - - - Do you want to delete the file <i>%1</i> permanently? - ¿Quieres eliminar el archivo <i>%1</i> permanentemente? + + Confirm deletion + Confirmar borrado - - Confirm deletion - Confirmar borrado + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + ¿Quieres eliminar la carpeta <i>%1</i> y todo su contenido permanentemente? - - - Error - Error + + Do you want to delete the file <i>%1</i> permanently? + ¿Quieres eliminar el archivo <i>%1</i> permanentemente? - - - Moving file failed: + + Moving file failed: %1 - Fallo al mover el archivo: + Fallo al mover el archivo: %1 - - + + OCC::ConnectionValidator - - No Nextcloud account configured - La cuenta Nextcloud no está configurada + + Authentication error: Either username or password are wrong. + Error de autenticación: El usuario o la contraseña son incorrectos - - Authentication error: Either username or password are wrong. - Error de autenticación: El usuario o la contraseña son incorrectos + + Connection issue + Problema en la conexión - - Timeout - Tiempo de espera superado + + No Nextcloud account configured + La cuenta Nextcloud no está configurada - - The provided credentials are not correct - Las credenciales proporcionadas no son correctas + + Please update to the latest server and restart the client. + Por favor, actualice a la última versión del servidor y reinicie el cliente. - - The configured server for this client is too old - La configuración del servidor para este cliente es demasiado antigua + + The configured server for this client is too old + La configuración del servidor para este cliente es demasiado antigua - - Please update to the latest server and restart the client. - Por favor, actualice a la última versión del servidor y reinicie el cliente. + + The provided credentials are not correct + Las credenciales proporcionadas no son correctas - - Connection issue - Problema en la conexión + + Timeout + Tiempo de espera superado - - + + OCC::DiscoveryPhase - - Error while canceling deletion of a file - Error al cancelar la eliminación de un archivo + + Error while canceling deletion of %1 + Error al cancelar la eliminación de %1 - - Error while canceling deletion of %1 - Error al cancelar la eliminación de %1 + + Error while canceling deletion of a file + Error al cancelar la eliminación de un archivo - - + + OCC::DiscoverySingleDirectoryJob - - - Server error: PROPFIND reply is not XML formatted! - Error del servidor: ¡la respuesta de PROPFIND no tiene formato XML! + + Encrypted metadata setup error: initial signature from server is empty. + Error de configuración de metadatos encriptados: la firma inicial del servidor está vacía. - - - Encrypted metadata setup error! - ¡Hubo un error al configurar los metadatos cifrados! + + Encrypted metadata setup error! + ¡Hubo un error al configurar los metadatos cifrados! - - Encrypted metadata setup error: initial signature from server is empty. - + + Server error: PROPFIND reply is not XML formatted! + Error del servidor: ¡la respuesta de PROPFIND no tiene formato XML! - - + + OCC::DiscoverySingleLocalDirectoryJob - - Error while opening directory %1 - Error al abrir el directorio %1 + + Directory not accessible on client, permission denied + Directorio no accesible en el cliente, permiso denegado - - Directory not accessible on client, permission denied - Directorio no accesible en el cliente, permiso denegado + + Directory not found: %1 + Directorio no encontrado: %1 - - Directory not found: %1 - Directorio no encontrado: %1 + + Error while opening directory %1 + Error al abrir el directorio %1 - - Filename encoding is not valid - La codificación del nombre del archivo no es válida + + Error while reading directory %1 + Error al leer el directorio %1 - - Error while reading directory %1 - Error al leer el directorio %1 + + Filename encoding is not valid + La codificación del nombre del archivo no es válida - - + + OCC::EditLocallyJob - - Invalid token received. - Se recibió un token inválido. + + An error occurred during data retrieval. + Ocurrió un error mientras se recababan los datos. - - - - - - - Please try again. - Por favor intente de nuevo. + + An error occurred during setup. + Ocurrió un error mientras se hacía la configuración. - - Invalid file path was provided. - Se proporcionó una ruta al archivo inválida. + + An error occurred trying to synchronise the file to edit locally. + Ocurrió un error mientras se intentaba sincronizar el archivo para edición local. - - Could not find an account for local editing. - No fue posible encontrar una cuenta para edición local + + An error occurred trying to verify the request to edit locally. + Ocurrió un error intentando verificar la solicitud de edición local. - - - - - - - - - Could not start editing locally. - No se pudo iniciar la edición local. + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + No fue posible encontrar un archivo para edición local. Asegúrese de que no está excluida a través de la sincronización selectiva. - - An error occurred trying to verify the request to edit locally. - Ocurrió un error intentando verificar la solicitud de edición local. + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + No fue posible encontrar un archivo para edición local. Asegúrese de que la ruta es válida y que este se encuentra sincronizado localmente. - - - Could not validate the request to open a file from server. - No se pudo validar la solicitud de apertura de archivo desde el servidor. + + Could not find a remote file info for local editing. Make sure its path is valid. + No fue posible encontrar la información del archivo remoto para edición local. Asegúrese de que la ruta es válida. - - - Could not find a file for local editing. Make sure its path is valid and it is synced locally. - No fue posible encontrar un archivo para edición local. Asegúrese de que la ruta es válida y que este se encuentra sincronizado localmente. + + Could not find an account for local editing. + No fue posible encontrar una cuenta para edición local - - - - - Could not find a file for local editing. Make sure it is not excluded via selective sync. - No fue posible encontrar un archivo para edición local. Asegúrese de que no está excluida a través de la sincronización selectiva. + + Could not open %1 + No fue posible abrir %1 - - - - An error occurred during data retrieval. - Ocurrió un error mientras se recababan los datos. + + Could not start editing locally. + No se pudo iniciar la edición local. - - - An error occurred trying to synchronise the file to edit locally. - Ocurrió un error mientras se intentaba sincronizar el archivo para edición local. + + Could not validate the request to open a file from server. + No se pudo validar la solicitud de apertura de archivo desde el servidor. - - An error occurred during setup. - Ocurrió un error mientras se hacía la configuración. + + File %1 already locked. + El archivo %1 ya está bloqueado. - - Server error: PROPFIND reply is not XML formatted! - Error del servidor: ¡la respuesta de PROPFIND no tiene formato XML! + + File %1 could not be locked. + El archivo %1 no pudo ser bloqueado. - - Could not find a remote file info for local editing. Make sure its path is valid. - No fue posible encontrar la información del archivo remoto para edición local. Asegúrese de que la ruta es válida. + + File %1 now locked. + El archivo %1 ahora está bloqueado. - - Invalid local file path. - Ruta al archivo local inválida. + + Invalid file path was provided. + Se proporcionó una ruta al archivo inválida. - - Could not open %1 - No fue posible abrir %1 + + Invalid local file path. + Ruta al archivo local inválida. - - File %1 already locked. - El archivo %1 ya está bloqueado. + + Invalid token received. + Se recibió un token inválido. - - - Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - El bloqueo se mantendrá por %1 minutos. Puede también desbloquear este archivo manualmente una vez que termine de editarlo. + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + El bloqueo se mantendrá por %1 minutos. Puede también desbloquear este archivo manualmente una vez que termine de editarlo. - - File %1 now locked. - El archivo %1 ahora está bloqueado. + + Please try again. + Por favor intente de nuevo. - - - File %1 could not be locked. - El archivo %1 no pudo ser bloqueado. - - - + + OCC::EncryptFolderJob - - Could not generate the metadata for encryption, Unlocking the folder. + + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. - No se pueden generar los metadatos para el cifrado, desbloquea la carpeta. + No se pueden generar los metadatos para el cifrado, desbloquea la carpeta. Esto podría ser un problema con tu librería OpenSSL - - + + OCC::EncryptedFolderMetadataHandler - - - - - - - Error fetching metadata. - Error al obtener los metadatos. + + Error fetching encrypted folder ID. + Error al obtener el ID de la carpeta cifrada. - - - - Error locking folder. - Error al bloquear la carpeta. + + Error fetching metadata. + Error al obtener los metadatos. - - Error fetching encrypted folder ID. - Error al obtener el ID de la carpeta cifrada. + + Error locking folder. + Error al bloquear la carpeta. - - Error parsing or decrypting metadata. - Error al analizar o descifrar los metadatos. + + Error parsing or decrypting metadata. + Error al analizar o descifrar los metadatos. - - Failed to upload metadata - Fallo al subir los metadatos + + Failed to upload metadata + Fallo al subir los metadatos - - + + OCC::FileDetails - - %1 second(s) ago - seconds elapsed since file last modified - - Hace %1 segundo(s) - Hace %1 segundo(s) - + + %1 day(s) ago + + + + hace %1 día(s) + - - %1 minute(s) ago - minutes elapsed since file last modified - - Hace %1 minuto(s) - Hace %1 minuto(s) - + + %1 hour(s) ago + + + + hace %1 hora(s) + - - %1 hour(s) ago - hours elapsed since file last modified - - Hace %1 hora(s) - Hace %1 hora(s) - + + %1 minute(s) ago + + + + Hace %1 minuto(s) + - - %1 day(s) ago - days elapsed since file last modified - - Hace %1 día(s) - Hace %1 día(s) - + + %1 month(s) ago + + + + hace %1 mes(es) + - - %1 month(s) ago - months elapsed since file last modified - - Hace %1 mes(es) - Hace %1 mes(es) - + + %1 second(s) ago + + + + Hace %1 segundo(s) + - - %1 year(s) ago - years elapsed since file last modified - - Hace %1 año(s) - Hace %1 año(s) - + + %1 year(s) ago + + + + hace %1 año(s) + - - Locked by %1 - Expires in %2 minute(s) - remaining time before lock expires - - Bloqueado por %1 - Expira en %2 minuto(s) - Bloqueado por %1 - Expira en %2 minuto(s) - - - - + + Locked by %1 - Expires in %2 minute(s) + + + + Bloqueado por %1 - Expira en %2 minuto(s) + + + + OCC::Flow2Auth - - The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - La URL de la consulta no comienza con HTTPS a pesar de que la URL de inicio de sesión comenzó con HTTPS. El inicio de sesión no será posible porque esto podría ser un problema de seguridad. Por favor, póngase en contacto con su administrador. + + Could not parse the JSON returned from the server: <br><em>%1</em> + No se pudo procesar el código JSON recibido del servidor: <br><em>%1</em> - - - Error returned from the server: <em>%1</em> - Error devuelto por el servidor: <em>%1</em> + + Error returned from the server: <em>%1</em> + Error devuelto por el servidor: <em>%1</em> - - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Hubo un error accediendo al "token" endpoint: <br><em>%1</em> + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + La URL de la consulta no comienza con HTTPS a pesar de que la URL de inicio de sesión comenzó con HTTPS. El inicio de sesión no será posible porque esto podría ser un problema de seguridad. Por favor, póngase en contacto con su administrador. - - - Could not parse the JSON returned from the server: <br><em>%1</em> - No se pudo procesar el código JSON recibido del servidor: <br><em>%1</em> + + The reply from the server did not contain all expected fields + La respuesta del servidor no contiene todos los campos esperados - - - The reply from the server did not contain all expected fields - La respuesta del servidor no contiene todos los campos esperados + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + La URL de consulta no comienza con HTTPS a pesar de que la URL de inicio de sesión comenzó con HTTPS. El inicio de sesión no será posible porque esto podría ser un problema de seguridad. Por favor, póngase en contacto con su administrador. - - The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - La URL de consulta no comienza con HTTPS a pesar de que la URL de inicio de sesión comenzó con HTTPS. El inicio de sesión no será posible porque esto podría ser un problema de seguridad. Por favor, póngase en contacto con su administrador. + + There was an error accessing the "token" endpoint: <br><em>%1</em> + Hubo un error accediendo al "token" endpoint: <br><em>%1</em> - - + + OCC::Flow2AuthWidget - - Unable to open the Browser, please copy the link to your Browser. - No se ha podido abrir el navegador, por favor copie el enlace en su navegador. - - - - - Error - Error - - - - Waiting for authorization - Esperando autorización + + Link copied to clipboard. + Enlace copiado al portapapeles. - - Polling for authorization - Pidiendo autorización + + Open Browser + Abrir en el navegador - - Starting authorization - Iniciando autorización + + Polling for authorization + Pidiendo autorización - - Link copied to clipboard. - Enlace copiado al portapapeles. + + Starting authorization + Iniciando autorización - - Open Browser - + + Unable to open the Browser, please copy the link to your Browser. + No se ha podido abrir el navegador, por favor copie el enlace en su navegador. - - Switch to your browser to connect your account - Cambiar al navegador para conectar con tu cuenta + + Waiting for authorization + Esperando autorización - - - Copy Link - Copiar Link - - - + + OCC::Folder - - - Local folder %1 does not exist. - La carpeta local %1 no existe. - - - - %1 should be a folder but is not. - %1 debería ser una carpeta, pero no lo es. - - - - %1 is not readable. - %1 es ilegible. - - - %1 and %n other file(s) have been removed. - - %1 y otro archivo han sido borrados. - %1 y otros %n archivos han sido borrados. - + + %1 and %n other file(s) are currently locked. + + + + + - - - %1 has been removed. - %1 names a file. - %1 ha sido eliminado. + + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + + + + - - %1 and %n other file(s) have been added. - - %1 y %n otro(s) archivo(s) ha(n) sido añadido(s). - %1 y %n otro(s) archivo(s) ha(n) sido añadido(s). - + + %1 and %n other file(s) have been added. + + + + + - - - %1 has been added. - %1 names a file. - %1 ha sido añadido. + + + %1 and %n other file(s) have been removed. + + + + + - - %1 and %n other file(s) have been updated. - - %1 y otro archivo han sido actualizados. - %1 y otros %n archivos han sido actualizados. - + + %1 and %n other file(s) have been updated. + + + + + - - %1 has been updated. - %1 names a file. - %1 ha sido actualizado. - - - - %1 has been renamed to %2 and %n other file(s) have been renamed. - - %1 ha sido renombrado a %2 y otro archivo ha sido renombrado. - %1 ha sido renombrado a %2 y otros %n archivos han sido renombrado. - + + %1 could not be synced due to an error. See the log for details. + %1 no se ha podido sincronizar debido a un error. Para más detalles, vea el registro. - - %1 has been renamed to %2. - %1 and %2 name files. - %1 ha sido renombrado a %2. + + %1 has a sync conflict. Please check the conflict file! + Conflicto al sincronizar %1. ¡Por favor compruebe el archivo! - - %1 has been moved to %2 and %n other file(s) have been moved. - - %1 ha sido movido a %2 y otro archivo ha sido movido. - %1 ha sido movido a %2 y otros %n archivos han sido movidos. - + + %1 has and %n other file(s) have sync conflicts. + + + + + - - %1 has been moved to %2. - %1 ha sido movido a %2. + + %1 has been added. + %1 ha sido añadido. - - %1 has and %n other file(s) have sync conflicts. - - %1 y otro archivo han tenido conflictos al sincronizar. - %1 y otros %n archivos han tenido conflictos al sincronizar. - + + %1 has been moved to %2 and %n other file(s) have been moved. + + + + + - - %1 has a sync conflict. Please check the conflict file! - Conflicto al sincronizar %1. ¡Por favor compruebe el archivo! - - - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - - %1 y otro archivo no pudieron ser sincronizados debido a errores. Para más detalles vea el registro. - %1 y otros %n archivos no se han podido sincronizar debido a errores. Para más detalles vea el registro. - + + %1 has been moved to %2. + %1 ha sido movido a %2. - - %1 could not be synced due to an error. See the log for details. - %1 no se ha podido sincronizar debido a un error. Para más detalles, vea el registro. + + %1 has been removed. + %1 ha sido eliminado. - - %1 and %n other file(s) are currently locked. - - %1 y otro %n archivo está actualmente bloqueado. - %1 y otro(s) %n archivo(s) están bloqueados actualmente. - + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + + + + - - %1 is currently locked. - %1 está actualmente bloqueado. + + %1 has been renamed to %2. + %1 ha sido renombrado a %2. - - Sync Activity - Actividad de la sincronización + + %1 has been updated. + %1 ha sido actualizado. - - Could not read system exclude file - No se ha podido leer el archivo de exclusión del sistema + + %1 is currently locked. + %1 está actualmente bloqueado. - - A new folder larger than %1 MB has been added: %2. - - Una carpeta mayor de %1 MB ha sido añadida: %2. - + + %1 is not readable. + %1 es ilegible. - - A folder from an external storage has been added. - - Una carpeta de almacenamiento externo ha sido añadida. - + + %1 should be a folder but is not. + %1 debería ser una carpeta, pero no lo es. - - Please go in the settings to select it if you wish to download it. - Por favor vaya a opciones a seleccionarlo si desea descargar esto. + + A folder from an external storage has been added. + Una carpeta de almacenamiento externo ha sido añadida. - - A folder has surpassed the set folder size limit of %1MB: %2. + + A folder has surpassed the set folder size limit of %1MB: %2. %3 - Una carpeta ha sobrepasado el límite establecido de tamaño de %1MB: %2. + Una carpeta ha sobrepasado el límite establecido de tamaño de %1MB: %2. %3 - - Keep syncing - Continuar sincronización + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + Se ha eliminado un gran número de archivos del servidor. +Por favor, confirme si desea proceder con estos borrados. +Alternativamente, puede restaurar todos los archivos borrados subiendo desde la carpeta '%1' al servidor. + + + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by downloading them from the server. + Se ha eliminado un gran número de archivos de tu carpeta local '%1'. +Por favor, confirme si desea proceder con estos borrados. +Alternativamente, puedes restaurar todos los archivos borrados descargándolos del servidor. - - Stop syncing - Detener sincronización + + A new folder larger than %1 MB has been added: %2. + Una carpeta mayor de %1 MB ha sido añadida: %2. - - The folder %1 has surpassed the set folder size limit of %2MB. - La carpeta %1 ha sobrepasado el límite establecido de tamaño de %2MB. + All files in the local folder "%1" were deleted. + +If you restore the files, they will be downloaded again from the server. + Se han eliminado todos los archivos de la carpeta local "%1". + +Si restaura los archivos, se descargarán de nuevo del servidor. + + + All files in the server folder "%1" were deleted. + +If you restore the files, they will be uploaded again to the server. + Se han eliminado todos los archivos de la carpeta del servidor "%1". + +Si restaura los archivos, se cargarán de nuevo en el servidor. - - Would you like to stop syncing this folder? - ¿Desea detener la sincronización de esta carpeta? + All files in the sync folder "%1" folder were deleted on the server. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. +If you decide to restore the files, they will be re-synced with the server if you have rights to do so. +If you decide to delete the files, they will be unavailable to you, unless you are the owner. + Todos los archivos de la carpeta de sincronización "%1" han sido borrados en el servidor. +Estos borrados se sincronizarán con tu carpeta de sincronización local, haciendo que dichos archivos no estén disponibles a menos que tengas derecho a restaurarlos. +Si decide restaurar los archivos, se volverán a sincronizar con el servidor si tiene derecho a hacerlo. +Si decides eliminar los archivos, no estarán disponibles para ti, a menos que seas el propietario. - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. - Se ha creado la carpeta %1 pero se excluyó de la sincronización con anterioridad. Los datos en su interior no se sincronizarán. + All files in the sync folder "%1" folder were deleted on the server. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. +If you decide to restore the files, they will be re-synced with the server if you have rights to do so. +If you decide to delete the files, they will be unavailable to you, unless you are the owner. + Todos los archivos de la carpeta de sincronización "%1" han sido borrados en el servidor. +Estos borrados se sincronizarán con tu carpeta de sincronización local, haciendo que dichos archivos no estén disponibles a menos que tengas derecho a restaurarlos. +Si decide restaurar los archivos, se volverán a sincronizar con el servidor si tiene derecho a hacerlo. +Si decides eliminar los archivos, no estarán disponibles para ti, a menos que seas el propietario. - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. - Se ha creado el archivo %1 pero se excluyó de la sincronización con anterioridad. No se sincronizará. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. +Are you sure you want to sync those actions with the server? +If this was an accident and you decide to keep your files, they will be re-synced from the server. + Se han borrado todos los archivos de su carpeta de sincronización local "%1". Estos borrados se sincronizarán con tu servidor, haciendo que dichos archivos no estén disponibles a menos que se restauren. +¿Estás seguro de que quieres sincronizar esas acciones con el servidor? +Si ha sido un accidente y decides conservar tus archivos, se volverán a sincronizar desde el servidor. - - Changes in synchronized folders could not be tracked reliably. + + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). %1 - Los cambios en las carpetas sincronizadas no se han podido rastrear de manera fiable. + Los cambios en las carpetas sincronizadas no se han podido rastrear de manera fiable. Esto significa que el cliente de sincronización podría no subir inmediatamente los cambios de las carpetas locales, y en lugar de eso solo escaneará buscando cambios locales y los subirá ocasionalmente (cada dos horas por defecto). %1 - - Virtual file download failed with code "%1", status "%2" and error message "%3" - La descarga de archivo virtual ha fallado con código "%1" , estado "%2" y mensaje de error "%3" + + Could not read system exclude file + No se ha podido leer el archivo de exclusión del sistema - - A large number of files in the server have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. - + Keep files + Guardar archivos - - A large number of files in your local '%1' folder have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by downloading them from the server. - + + Keep syncing + Continuar sincronización - - Remove all files? - + + Local folder %1 does not exist. + La carpeta local %1 no existe. - - Proceed with Deletion - + + Please go in the settings to select it if you wish to download it. + Por favor vaya a opciones a seleccionarlo si desea descargar esto. - - Restore Files to Server - + Proceed to remove all files + Proceda a eliminar todos los archivos - - Restore Files from Server - + + Proceed with Deletion + Proceder a la supresión - - - OCC::FolderCreationDialog - - Create new folder - Crear nueva carpeta + Remove all files + Eliminar todos los archivos - - Enter folder name - Escriba el nombre de la carpeta + + Remove all files? + ¿Eliminar todos los archivos? - - Folder already exists - Ya existe la carpeta + Restore files + Restaurar archivos - - %1 Create new folder - + + Restore Files from Server + Restaurar archivos del servidor - - Error - Error + + Restore Files to Server + Restaurar archivos en el servidor - - Could not create a folder! Check your write permissions. - ¡No se pudo crear la carpeta! Comprueba los permisos de escritura. + + Stop syncing + Detener sincronización - - - OCC::FolderMan - - Could not reset folder state - No se ha podido restablecer el estado de la carpeta + + Sync Activity + Actividad de la sincronización - - An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. - Se ha encontrado un registro de sincronización antiguo "%1", que no se ha podido eliminar. Por favor, asegúrese de que ninguna aplicación lo está utilizando en este momento. + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + Se ha creado el archivo %1 pero se excluyó de la sincronización con anterioridad. No se sincronizará. - - (backup) - (copia de seguridad) + + The folder %1 has surpassed the set folder size limit of %2MB. + La carpeta %1 ha sobrepasado el límite establecido de tamaño de %2MB. - - (backup %1) - (copia de seguridad %1) + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + Se ha creado la carpeta %1 pero se excluyó de la sincronización con anterioridad. Los datos en su interior no se sincronizarán. - - Undefined state. - Estado no definido. + + Virtual file download failed with code "%1", status "%2" and error message "%3" + La descarga de archivo virtual ha fallado con código "%1" , estado "%2" y mensaje de error "%3" - - Waiting to start syncing. - Esperando para comenzar la sincronización. + + Would you like to stop syncing this folder? + ¿Desea detener la sincronización de esta carpeta? + + + OCC::FolderCreationDialog - - Preparing for sync. - Preparándose para sincronizar. + + %1 Create new folder + %1 Crear nueva carpeta - - Sync is running. - Sincronización en funcionamiento. + + Could not create a folder! Check your write permissions. + ¡No se pudo crear la carpeta! Comprueba los permisos de escritura. - - Sync finished with unresolved conflicts. - La sincronización finalizó pero con conflictos sin resolver. + + Enter folder name + Escriba el nombre de la carpeta - - Last sync was successful. - La última sincronización se ha realizado con éxito. + + Folder already exists + Ya existe la carpeta + + + OCC::FolderMan - - Setup error. - Error de configuración. + + (backup %1) + (copia de seguridad %1) - - Sync request was cancelled. - La solicitud de sincronización fue cancelada. + + (backup) + (copia de seguridad) - - Sync is paused. - La sincronización está en pausa. + + %1 (Sync is paused) + %1 (Sincronización en pausa) - - %1 (Sync is paused) - %1 (Sincronización en pausa) + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + Se ha encontrado un registro de sincronización antiguo "%1", que no se ha podido eliminar. Por favor, asegúrese de que ninguna aplicación lo está utilizando en este momento. - - No valid folder selected! - ¡La carpeta seleccionada no es válida! + + Could not reset folder state + No se ha podido restablecer el estado de la carpeta - - The selected path does not exist! - ¡La ruta seleccionada no existe! + + Last sync was successful. + La última sincronización se ha realizado con éxito. - - The selected path is not a folder! - ¡La ruta seleccionada no es una carpeta! + + No valid folder selected! + ¡La carpeta seleccionada no es válida! - - - You have no permission to write to the selected folder! - ¡No tiene permiso para escribir en la carpeta seleccionada! + + Preparing for sync. + Preparándose para sincronizar. - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! - El directorio local %1 ya contiene un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro. + + Setup error. + Error de configuración. - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! - El directorio local %1 está dentro de un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro. + + Sync finished with unresolved conflicts. + La sincronización finalizó pero con conflictos sin resolver. - - There is already a sync from the server to this local folder. Please pick another local folder! - Ya existe una tarea de sincronización entre el servidor y esta carpeta. Por favor elija otra carpeta local. + + Sync is paused. + La sincronización está en pausa. - - - OCC::FolderStatusDelegate - - Add Folder Sync - + + Sync is running. + Sincronización en funcionamiento. - - Synchronize any other local folder with your %1 - + + Sync request was cancelled. + La solicitud de sincronización fue cancelada. - - File - Archivo + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + El directorio local %1 ya contiene un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro. - - - OCC::FolderStatusModel - - You need to be connected to add a folder - Necesita estar conectado para añadir una carpeta + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + El directorio local %1 está dentro de un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro. - - Click this button to add a folder to synchronize. - Haga clic en este botón para añadir una carpeta a sincronizar + + The selected path does not exist! + ¡La ruta seleccionada no existe! - - Could not decrypt! - ¡No fue posible desencriptar! + + The selected path is not a folder! + ¡La ruta seleccionada no es una carpeta! - - - %1 (%2) - %1 (%2) + + There is already a sync from the server to this local folder. Please pick another local folder! + Ya existe una tarea de sincronización entre el servidor y esta carpeta. Por favor elija otra carpeta local. - - Error while loading the list of folders from the server. - Error mientras se cargaba la lista de carpetas desde el servidor. + + Undefined state. + Estado no definido. - - Fetching folder list from server … - Obteniendo la lista de carpetas del servidor ... + + Waiting to start syncing. + Esperando para comenzar la sincronización. - - There are unresolved conflicts. Click for details. - Hay conflictos sin resolver. Haz clic para más detalles. + + You have no permission to write to the selected folder! + ¡No tiene permiso para escribir en la carpeta seleccionada! + + + OCC::FolderStatusDelegate - - Virtual file support is enabled. - El soporte para archivos virtuales está activado. + + Add live backup + Añadir conexión de sincronización de carpetas - - Signed out - Cerrar sesión + + File + Archivo - - Synchronizing VirtualFiles with local folder - Sincronizando archivos virtuales con carpeta local + + Synchronize any other local folder with your %1 + Sincroniza cualquier otra carpeta local con tu %1 + + + OCC::FolderStatusModel - - Synchronizing with local folder - Sincronizando con carpeta local + + , + , - - Checking for changes in remote "%1" - Buscando cambios en carpeta remota "%1" + + %1 (%2) + %1 (%2) - - Checking for changes in local "%1" - Buscando cambios en carpeta local "%1" + + %1 %2 + %1 %2 - - Reconciling changes - Reconciliando cambios + + %1 %2 (%3 of %4) + %1 %2 (%3 de %4) - - Syncing %1 - Example text: "Syncing 'foo.txt', 'bar.txt'" - Sincronizando %1 + + %1 of %2, file %3 of %4 + %1 de %2, archivo %3 de %4 - - - , - , + + %5 left, %1 of %2, file %3 of %4 + %5 restantes, %1 de %2, archivo %3 de %4 - - download %1/s - Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) - descargando: %1/s + + ↑ %1/s + ↑ %1/s - - ↓ %1/s - ↓ %1/s + + ↓ %1/s + ↓ %1/s - - upload %1/s - Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) - cargar %1/s + + A few seconds left, %1 of %2, file %3 of %4 + Quedan pocos segundos, %1 de %2, archivo %3 de %4 - - ↑ %1/s - ↑ %1/s + + Checking for changes in local "%1" + Buscando cambios en carpeta local "%1" - - %1 %2 (%3 of %4) - Example text: "uploading foobar.png (2MB of 2MB)" - %1 %2 (%3 de %4) + + Checking for changes in remote "%1" + Buscando cambios en carpeta remota "%1" - - %1 %2 - Example text: "uploading foobar.png" - %1 %2 + + Click this button to add a folder to synchronize. + Haga clic en este botón para añadir una carpeta a sincronizar - - A few seconds left, %1 of %2, file %3 of %4 - Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" - Quedan pocos segundos, %1 de %2, archivo %3 de %4 + + Could not decrypt! + ¡No fue posible desencriptar! - - %5 left, %1 of %2, file %3 of %4 - %5 restantes, %1 de %2, archivo %3 de %4 + + download %1/s + descargando: %1/s - - %1 of %2, file %3 of %4 - Example text: "12 MB of 345 MB, file 6 of 7" - %1 de %2, archivo %3 de %4 + + Error while loading the list of folders from the server. + Error mientras se cargaba la lista de carpetas desde el servidor. - - file %1 of %2 - archivo %1 de %2 + + Fetching folder list from server … + Obteniendo la lista de carpetas del servidor ... - - Waiting … - Esperando ... - - - - Waiting for %n other folder(s) … - - Esperando a otra %n carpeta ... - Esperando a %n carpeta(s)… - + + file %1 of %2 + archivo %1 de %2 - - Preparing to sync … - Preparando la sincronización ... + + Preparing to sync … + Preparando la sincronización ... - - - OCC::FolderWatcher - - The watcher did not receive a test notification. - El vigilante no recibió una notificación de prueba. + + Reconciling changes + Reconciliando cambios - - - OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. - Este problema sucede habitualmente cuando las "inotify watches" están agotadas. Comprueba el FAQ para más detalles. + + Synchronizing VirtualFiles with local folder + Sincronizando archivos virtuales con carpeta local - - - OCC::FolderWizard - - Add Folder Sync Connection - Añadir conexión para el directorio de sincronización + + Synchronizing with local folder + Sincronizando con carpeta local - - Add Sync Connection - Añadir conexión de sincronización + + There are unresolved conflicts. Click for details. + Hay conflictos sin resolver. Haz clic para más detalles. - - - OCC::FolderWizardLocalPath - - Click to select a local folder to sync. - Haga clic para seleccionar una carpeta local que sincronizar. + + upload %1/s + cargar %1/s - - Enter the path to the local folder. - Introduzca la ubicación de la carpeta local. + + Virtual file support is enabled. + El soporte para archivos virtuales está activado. - - Select the source folder - Seleccione la carpeta de origen + + Waiting … + Esperando ... - - - Add Folder Sync - + + + Waiting for %n other folder(s) … + + + + + - - Step 1 of 3: Select local folder - + + You need to be connected to add a folder + Necesita estar conectado para añadir una carpeta + + + OCC::FolderWatcher - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - + + The watcher did not receive a test notification. + El vigilante no recibió una notificación de prueba. + + + OCC::FolderWatcherPrivate - - Choose - + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + Este problema sucede habitualmente cuando las "inotify watches" están agotadas. Comprueba el FAQ para más detalles. - - - OCC::FolderWizardRemotePath + + + OCC::FolderWizard - - Create Remote Folder - Crear carpeta remota + Add Folder Sync Connection + Añadir conexión para el directorio de sincronización - - Enter the name of the new folder to be created below "%1": - Introduce el nombre de la nueva carpeta que se creará debajo de "%1": + + Add Sync Connection + Añadir conexión de sincronización + + + OCC::FolderWizardLocalPath - - Folder was successfully created on %1. - La carpeta ha sido creada con éxito en %1. + + Choose + Seleccione - - Authentication failed accessing %1 - Fallo de autenticación al acceder a %1 + + Click to select a local folder to sync. + Haga clic para seleccionar una carpeta local que sincronizar. - - Failed to create the folder on %1. Please check manually. - Fallo al crear la carpeta %1. Por favor, revíselo manualmente. + + Enter the path to the local folder. + Introduzca la ubicación de la carpeta local. - - Failed to list a folder. Error: %1 - Fallo al listar una carpeta. Error: %1 + + Select the source folder + Seleccione la carpeta de origen + + + OCC::FolderWizardRemotePath - - Choose this to sync the entire account - Elija esto para sincronizar la cuenta entera + + Authentication failed accessing %1 + Fallo de autenticación al acceder a %1 - - This folder is already being synced. - Esta carpeta ya se ha sincronizado. + + Choose this to sync the entire account + Elija esto para sincronizar la cuenta entera - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - Ya ha sincronizado <i>%1</i>, el cual es la carpeta de <i>%2</i>. + + Create Remote Folder + Crear carpeta remota - - You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - Ya estás sincronizando <i>%1</i>, que es una subcarpeta de <i>%2</i>. + + Enter the name of the new folder to be created below "%1": + Introduce el nombre de la nueva carpeta que se creará debajo de "%1": - - Add Folder Sync - + + Failed to create the folder on %1. Please check manually. + Fallo al crear la carpeta %1. Por favor, revíselo manualmente. - - Step 2 of 3: Directory in your %1 - + + Failed to list a folder. Error: %1 + Fallo al listar una carpeta. Error: %1 - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - + + Folder was successfully created on %1. + La carpeta ha sido creada con éxito en %1. - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - + + This folder is already being synced. + Esta carpeta ya se ha sincronizado. - - Refresh - Actualizar + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + Ya ha sincronizado <i>%1</i>, el cual es la carpeta de <i>%2</i>. - - Create folder - Crear carpeta + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + Ya estás sincronizando <i>%1</i>, que es una subcarpeta de <i>%2</i>. - - + + OCC::FolderWizardSelectiveSync - - - Use virtual files instead of downloading content immediately %1 - Usa archivos virtuales en vez de descargar el contenido inmediatamente %1 - - - - - (experimental) - (experimental) + + Use virtual files instead of downloading content immediately %1 + Usa archivos virtuales en vez de descargar el contenido inmediatamente %1 - - Add Folder Sync - + + Virtual files are not available for the selected folder + Los archivos virtuales no están disponibles para la carpeta seleccionada - - Step 3 of 3: Selektive Synchronisation - + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Los archivos virtuales no son compatibles con la carpeta raíz de la partición de Windows como carpeta local. Por favor, elija una subcarpeta válida bajo la letra de la unidad. + + + OCC::FormatWarningsWizardPage - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Los archivos virtuales no son compatibles con la carpeta raíz de la partición de Windows como carpeta local. Por favor, elija una subcarpeta válida bajo la letra de la unidad. + + %1 + %1 - - Virtual files are not available for the selected folder - Los archivos virtuales no están disponibles para la carpeta seleccionada + <b>Warning:</b> + <b>Advertencia:</b> - - - OCC::FormatWarningsWizardPage - - %1 - %1 + <b>Warning:</b> %1 + <b>Atención:</b> %1 - - + + OCC::GETFileJob - - No E-Tag received from server, check Proxy/Gateway - No se ha recibido ninguna E-Tag del servidor, revise el proxy/puerta de enlace + + Connection Timeout + Tiempo de espera de conexión agotado - - We received a different E-Tag for resuming. Retrying next time. - Se ha recibido una E-Tag distinta para reanudar. Se volverá a intentar. + + No E-Tag received from server, check Proxy/Gateway + No se ha recibido ninguna E-Tag del servidor, revise el proxy/puerta de enlace - - We received an unexpected download Content-Length. - Hemos recibido una longitud inesperada de contenido de la descarga. + + Server returned wrong content-range + El servidor ha devuelto un content-range erróneo - - Server returned wrong content-range - El servidor ha devuelto un content-range erróneo + + We received a different E-Tag for resuming. Retrying next time. + Se ha recibido una E-Tag distinta para reanudar. Se volverá a intentar. - - Connection Timeout - Tiempo de espera de conexión agotado + + We received an unexpected download Content-Length. + Hemos recibido una longitud inesperada de contenido de la descarga. - - + + OCC::GeneralSettings - - Advanced - Avanzado + + &Analysis data collection for needs-based design + &Recogida de datos de análisis para un diseño basado en las necesidades - - Updates - Actualizaciones + + &Automatically check for updates + Comprobar &actualizaciones automáticamente - - Move removed files to trash - Mover archivos eliminados a la papelera + &Channel + &Canal - - S&how crash reporter - M&ostrar el informe de fallos + &Check for Update now + &Compruebe la actualización ahora - - Edit &Ignored Files - Editar archivos &ignorados + + &Launch on system startup + &Lanzar al iniciar el sistema - - - Create Debug Archive - Crear archivo de depuración + + &Restart && Update + &Reiniciar && Actualizar - - Desktop client x.x.x - Cliente de escritorio x.x.x + About + Acerca de - - Update channel - Canal de actualización + + Ask for confirmation before + synchronizing new folders larger than + Pide confirmación antes de sincronizar nuevas carpetas de más de - - Ask for confirmation before - synchronizing new folders larger than - + + Ask for confirmation before synchronizing + external storages + Pide confirmación antes de sincronizar almacenamientos externos - - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - + Ask for confirmation before synchronizing external storages + Pide confirmación antes de sincronizar almacenamientos externos - - Notify when synchronised folders grow - larger than specified limit - + Ask for confirmation before synchronizing folders larger than + Pide confirmación antes de sincronizar carpetas de más de - - Automatically disable synchronisation of - folders that overcome limit - + Ask for confirmation before synchronizing new folders larger than + - - Ask for confirmation before synchronizing - external storages - + + Automatically disable synchronisation of + folders that overcome limit + Desactivar automáticamente la sincronización de carpetas que superen el límite - - Show sync folders in &Explorer's navigation - pane - + Automatically disable synchronisation of folders that overcome limit + - - Data Protection - + + beta + beta - - &Analysis data collection for needs-based design - + + Change update channel + Cambiar canal de actualización - - Privacy Policy - + + Change update channel? + ¿Cambiar el canal de actualización? - - Open Source Software - + + Check Now + Comprobar ahora - - - stable - stable + + Create Debug Archive + Crear archivo de depuración - - - beta - beta + + Data Protection + Protección de datos - - &Restart && Update - &Reiniciar && Actualizar + + Debug Archive Created + Archivo de depuración creado - - More Information - + + Debug archive is created at %1 + El archivo de depuración se ha creado en %1 - - &Automatically check for updates - Comprobar &actualizaciones automáticamente + + Desktop client x.x.x + Cliente de escritorio x.x.x - - Check Now - Comprobar ahora + + Edit &Ignored Files + Editar archivos &ignorados - - Usage Documentation - Documentación de uso + + For System Tray + A la bandeja del sistema - - Legal Notice - Aviso Legal + + General Settings + Ajustes generales - - General Settings - Ajustes generales + Info + - - For System Tray - A la bandeja del sistema + + Legal Notice + Aviso Legal - - Use &monochrome icons - Usar iconos &monocromáticos + MB + MB - - &Launch on system startup - &Lanzar al iniciar el sistema + + More Information + Más información - - Show server &notifications - Mostrar &notificaciones del servidor + + Move removed files to trash + Mover archivos eliminados a la papelera - - Show call notifications - Mostrar notificaciones de llamadas + + Notify when synchronised folders grow + larger than specified limit + Notificar cuando las carpetas sincronizadas superan el límite especificado. - - Server notifications that require attention. - Notificaciones del servidor que requieren atención. + Notify when synchronised folders grow larger than specified limit + - - Show call notification dialogs. - Mostrar diálogos de notificación de llamadas. + + Open Source Software + Software de código abierto - - You cannot disable autostart because system-wide autostart is enabled. - No puedes desactivar el inicio automático porque el inicio automático de todo el sistema está activado. + + Privacy Policy + Política de privacidad - - Change update channel? - ¿Cambiar el canal de actualización? + + S&how crash reporter + M&ostrar el informe de fallos - - The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. - -Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. - El canal de actualización determina qué actualizaciones del cliente se ofrecerán para su instalación. El canal "estable" sólo contiene actualizaciones que se consideran fiables, mientras que las versiones del canal "beta" pueden contener nuevas características y correcciones de errores, pero aún no se han probado a fondo. - -Tenga en cuenta que esto sólo selecciona de qué grupo se tomarán las actualizaciones, y que no hay vuelta atrás: Por lo tanto volver del canal "beta" al canal "estable" normalmente no puede hacerse inmediatamente y significa esperar a una versión estable que sea más reciente que la versión beta instalada actualmente. + + Server notifications that require attention. + Notificaciones del servidor que requieren atención. - - Change update channel - Cambiar canal de actualización + + Show call notification dialogs. + Mostrar diálogos de notificación de llamadas. - - Cancel - Cancelar + + Show call notifications + Mostrar notificaciones de llamadas - - Zip Archives - Archivos Zip + + Show server &notifications + Mostrar &notificaciones del servidor - - Debug Archive Created - Archivo de depuración creado + + Show sync folders in &Explorer's navigation + pane + Mostrar carpetas de sincronización en el panel de navegación de &Explorer - - Debug archive is created at %1 - El archivo de depuración se ha creado en %1 + Show sync folders in &Explorer's Navigation Pane + Mostrar carpetas de sincronización en el panel de navegación de &Explorer - - - OCC::GetOrCreatePublicLinkShare - - Password for share required - Se requiere contraseña para compartir + + stable + stable - - Please enter a password for your link share: - Por favor, introduce una contraseña para tu enlace compartido: + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + +Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. + El canal de actualización determina qué actualizaciones del cliente se ofrecerán para su instalación. El canal "estable" sólo contiene actualizaciones que se consideran fiables, mientras que las versiones del canal "beta" pueden contener nuevas características y correcciones de errores, pero aún no se han probado a fondo. + +Tenga en cuenta que esto sólo selecciona de qué grupo se tomarán las actualizaciones, y que no hay vuelta atrás: Por lo tanto volver del canal "beta" al canal "estable" normalmente no puede hacerse inmediatamente y significa esperar a una versión estable que sea más reciente que la versión beta instalada actualmente. - - Sharing error - Error al compartir + + Update channel + Canal de actualización - - Could not retrieve or create the public link share. Error: - -%1 - No se ha podido recuperar o crear el enlace público compartido. Error: - -%1 + + Updates + Actualizaciones - - - OCC::HttpCredentialsGui - - Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - Por favor, introduzca la contraseña de %1:<br><br>Usuario: %2<br>Cuenta: %3<br> + + Usage Documentation + Documentación de uso - - Reading from keychain failed with error: "%1" - La lectura del keychain falló con el error "%1" + + Use &monochrome icons + Usar iconos &monocromáticos - - Enter Password - Introduzca la contraseña + + You cannot disable autostart because system-wide autostart is enabled. + No puedes desactivar el inicio automático porque el inicio automático de todo el sistema está activado. - - <a href="%1">Click here</a> to request an app password from the web interface. - <a href="%1">Haga clic aquí</a> para solicitar una contraseña de aplicación desde la interfaz web. + + Zip Archives + Archivos Zip - - - OCC::IgnoreListEditor + + + OCC::GetOrCreatePublicLinkShare - - Ignored Files Editor - Editor de archivos ignorados + + Could not retrieve or create the public link share. Error: + +%1 + No se ha podido recuperar o crear el enlace público compartido. Error: + +%1 - - Global Ignore Settings - Ajustes de Ignorar de modo global + + Password for share required + Se requiere contraseña para compartir - - Sync hidden files - Sincronizar archivos ocultos + + Please enter a password for your link share: + Por favor, introduce una contraseña para tu enlace compartido: - - Files Ignored by Patterns - Archivos ignorados por patrones + + Sharing error + Error al compartir + + + OCC::HttpCredentialsGui - - This entry is provided by the system at "%1" and cannot be modified in this view. - Esta entrada la proporciona el sistema en "%1" y no se puede modificar en esta vista. + + <a href="%1">Click here</a> to request an app password from the web interface. + <a href="%1">Haga clic aquí</a> para solicitar una contraseña de aplicación desde la interfaz web. - - - OCC::IgnoreListTableWidget - - Pattern - Patrón + + Enter Password + Introduzca la contraseña - - Allow Deletion - Permitir borrado + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + Por favor, introduzca la contraseña de %1:<br><br>Usuario: %2<br>Cuenta: %3<br> - - Add - Añadir + + Reading from keychain failed with error: "%1" + La lectura del keychain falló con el error "%1" + + + OCC::IgnoreListEditor - - Remove - Eliminar + + Files Ignored by Patterns + Archivos ignorados por patrones - - Remove all - Eliminar todos + + Global Ignore Settings + Ajustes de Ignorar de modo global - - Files or folders that match this pattern will not be synchronized. - -Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - + + Ignored Files Editor + Editor de archivos ignorados - - Could not open file - No se ha podido abrir el archivo + + Sync hidden files + Sincronizar archivos ocultos - - Cannot write changes to "%1". - No se pudo escribir los cambios a "%1". + + This entry is provided by the system at "%1" and cannot be modified in this view. + Esta entrada la proporciona el sistema en "%1" y no se puede modificar en esta vista. + + + OCC::IgnoreListTableWidget - - Ignore Pattern - + + Add + Añadir - - Add New Ignore Pattern - + Add a new ignore pattern: + Añadir un nuevo patrón de ignorar: - - - OCC::InvalidFilenameDialog - - Invalid filename - Nombre de archivo no válido + Add Ignore Pattern + Añadir patrón de ignorar - - The file could not be synced because it contains characters which are not allowed on this system. - El archivo no puede ser sincronizado porque contiene caracteres que no se permiten en el sistema. + + Add New Ignore Pattern + Añadir nuevo patrón de ignorar - - Error - Error + + Allow Deletion + Permitir borrado - - Please enter a new name for the file: - Por favor, escribe un nuevo nombre para el archivo: + + Cannot write changes to "%1". + No se pudo escribir los cambios a "%1". - - New filename - Nuevo nombre de archivo + + Could not open file + No se ha podido abrir el archivo - - Rename file - Renombrar archivo + Files or folders matching a pattern will not be synchronized. + +Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. + Los archivos o carpetas que coincidan con un patrón no se sincronizarán. + +Los elementos cuya eliminación esté permitida se eliminarán si impiden la eliminación de un directorio. Esto es útil para los metadatos. - - The file "%1" could not be synced because the name contains characters which are not allowed on this system. - El archivo "%1" no pudo ser sincronizado porque el nombre contiene caracteres no permitidos en este sistema. + + Files or folders that match this pattern will not be synchronized. + +Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. + Los archivos o carpetas que coincidan con este patrón no se sincronizarán. + +Los objetos cuyo borrado esté permitido se eliminarán si impiden que se borre una carpeta. Esto es útil para los metadatos. - - The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - Los siguientes caracteres no se permiten en el sistema: * " | & ? , ; : \ / ~ < > espacios de entrada/salida + + Ignore Pattern + Ignorar patrón - - Checking rename permissions … - Comprobando los permisos de renombramiento ... + + Pattern + Patrón - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - No tienes permisos para renombrar este archivo. Por favor, dile al autor del archivo que lo renombre. + + Remove + Eliminar - - Failed to fetch permissions with error %1 - Fallo en la obtención de permisos con error %1 + + Remove all + Eliminar todos + + + OCC::InvalidFilenameDialog - - Filename contains leading and trailing spaces. - El nombre del archivo contiene espacios iniciales y finales. + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + No se puede renombrar el archivo porque hay un archivo con el mismo nombre en el servidor. Por favor, elija otro nombre. - - Filename contains leading spaces. - El nombre del archivo contiene espacios iniciales. + + Checking rename permissions … + Comprobando los permisos de renombramiento ... - - Filename contains trailing spaces. - El nombre del archivo contiene espacios finales. + + Could not rename local file. %1 + No se ha podido renombrar el archivo local. %1 - - Use invalid name - Nombre no válido + + Invalid filename + Nombre de archivo no válido - - Filename contains illegal characters: %1 - El nombre del archivo contiene caracteres ilegales: %1 + + Please enter a new name for the file: + Por favor, escribe un nuevo nombre para el archivo: - - Could not rename file. Please make sure you are connected to the server. - No se ha podido renombrar el archivo. Por favor, asegúrese de que está conectado al servidor. + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + El archivo "%1" no pudo ser sincronizado porque el nombre contiene caracteres no permitidos en este sistema. - - Cannot rename file because a file with the same name does already exist on the server. Please pick another name. - No se puede renombrar el archivo porque hay un archivo con el mismo nombre en el servidor. Por favor, elija otro nombre. + + The file could not be synced because it contains characters which are not allowed on this system. + El archivo no puede ser sincronizado porque contiene caracteres que no se permiten en el sistema. - - Could not rename local file. %1 - No se ha podido renombrar el archivo local. %1 + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + Los siguientes caracteres no se permiten en el sistema: * " | & ? , ; : \ / ~ < > espacios de entrada/salida - - + + OCC::LegalNotice - - - Legal notice - Aviso legal + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - - Close - Cerrar + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + <p>Bajo la Licencia Pública General de GNU (GPL) versión 2.0 o posterior.</p> - - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + Legal notice + Aviso legal + + + OCC::LogBrowser - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> - <p>Bajo la Licencia Pública General de GNU (GPL) versión 2.0 o posterior.</p> + + Enable logging to temporary folder + Activar la escritura de registros a una carpeta temporal - - - OCC::LogBrowser - - Log Output - Salida del registro + + Log Output + Salida del registro - - The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. If enabled, logs will be written to %1 - El cliente puede escribir registros de depuración a una carpeta temporal. Estos registros son muy útiles para diagnosticar problemas. + El cliente puede escribir registros de depuración a una carpeta temporal. Estos registros son muy útiles para diagnosticar problemas. Ya que los archivos de registro pueden acabar siendo grandes, el cliente creará uno nuevo para cada sincronización y comprimirá los anteriores. También eliminará los archivos de registro tras un par de horas para evitar consumir demasiado espacio de disco. Si está activado, los registros serán escritos en %1 - - Enable logging to temporary folder - Activar la escritura de registros a una carpeta temporal - - - - This setting persists across client restarts. + + This setting persists across client restarts. Note that using any logging command line options will override this setting. - Este ajuste persiste tras el reinicio del cliente. + Este ajuste persiste tras el reinicio del cliente. Nótese que usar cualquier opción de toma de registros a través de línea de comandos anulará este ajuste. - - - Open folder - Abrir carpeta - - - + + OCC::Logger - - Error - Error + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + <nobr>El archivo "%1"<br/>no se puede abrir para escritura.<br/><br/>¡El archivo de registro <b>no se puede</b> guardar!</nobr> - - - <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> - <nobr>El archivo "%1"<br/>no se puede abrir para escritura.<br/><br/>¡El archivo de registro <b>no se puede</b> guardar!</nobr> - - - + + OCC::NSISUpdater - - New Version Available - Nueva versión disponible + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + <p>Una nueva versión del Cliente %1 está disponible pero el proceso de actualización ha fallado.</p><p><b>%2</b> se ha descargado. La versión instalada es %3. Si confirmas el reinicio y la actualización, es posible que su ordenador se reinicie para completar la instalación. - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - <p>Una nueva versión del programa cliente de %1 está disponible.</p><p><b>%2</b> está disponible para descargar. La versión instalada es la %3.</p> + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + <p>Una nueva versión del programa cliente de %1 está disponible.</p><p><b>%2</b> está disponible para descargar. La versión instalada es la %3.</p> - - Skip this time - Omitir esta vez + + Ask again later + Preguntar de nuevo más tarde - - Get update - Actualizar + + Get update + Actualizar - - Update Failed - La actualización falló + + New Version Available + Nueva versión disponible - - <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> - <p>Una nueva versión del Cliente %1 está disponible pero el proceso de actualización ha fallado.</p><p><b>%2</b> se ha descargado. La versión instalada es %3. Si confirmas el reinicio y la actualización, es posible que su ordenador se reinicie para completar la instalación. + + Restart and update + Reiniciar y actualizar - - Ask again later - Preguntar de nuevo más tarde + + Skip this time + Omitir esta vez - - Restart and update - Reiniciar y actualizar + + Update Failed + La actualización falló - - Update manually - Actualizar manualmente + + Update manually + Actualizar manualmente - - + + OCC::NetworkSettings - - Proxy Settings - Configuración del proxy + + Download Bandwidth + Velocidad de descarga - - No proxy - Sin proxy + + Host + Servidor - - Use system proxy - Usar proxy del sistema + + Hostname of proxy server + Nombre del host para servidor proxy - - Manually specify proxy - Proxy especificado manualmente + + HTTP(S) proxy + Proxy HTTP(S) - - Host - Servidor + + KBytes/s + KBytes/s - - Proxy server requires authentication - El servidor proxy requiere autenticación + + Limit automatically + Limitar automáticamente - - Note: proxy settings have no effects for accounts on localhost - Nota: los ajustes de proxy no tienen efecto para cuentas en el sistema local. + + Limit to + Limitar a - - Download Bandwidth - Velocidad de descarga + + Limit to 3/4 of estimated bandwidth + Limitar a 3/4 de la velocidad estimada - - - No limit - Ilimitado + + Manually specify proxy + Proxy especificado manualmente - - - Limit to 3/4 of estimated bandwidth - Limitar a 3/4 de la velocidad estimada + + No limit + Ilimitado - - - Limit automatically - Limitar automáticamente + + No proxy + Sin proxy - - - Limit to - Limitar a + + Note: proxy settings have no effects for accounts on localhost + Nota: los ajustes de proxy no tienen efecto para cuentas en el sistema local. - - - KBytes/s - KBytes/s + + Password for proxy server + Contraseña para el servidor proxy - - Upload Bandwidth - Velocidad de subida + + Proxy server requires authentication + El servidor proxy requiere autenticación - - Hostname of proxy server - Nombre del host para servidor proxy + + Proxy Settings + Configuración del proxy - - Username for proxy server - Nombre de usuario para el servidor proxy + + SOCKS5 proxy + Proxy SOCKS5 - - Password for proxy server - Contraseña para el servidor proxy + Specify proxy manually as + Especifique el proxy manualmente como - - HTTP(S) proxy - Proxy HTTP(S) + + Upload Bandwidth + Velocidad de subida - - SOCKS5 proxy - Proxy SOCKS5 + + Use system proxy + Usar proxy del sistema - - - OCC::OCUpdater - - New %1 update ready - La nueva %1 actualización está lista + + Username for proxy server + Nombre de usuario para el servidor proxy + + + OCC::OAuth - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - Está a punto de ser instalada una nueva actualización para %1 . Es posible que el actualizador solicite privilegios adicionales durante el proceso. Es posible que su ordenador se deba reiniciar para completar la instalación. + <h1>Login Error</h1><p>%1</p> + <h1>Error al iniciar sesión</h1><p>%1</p> - - Downloading %1. Please wait … - Descargando %1. Por favor, espere … + <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> + - - %1 available. Restart application to start the update. - %1 disponible. Reinicia la aplicación para empezar la actualización. + Empty JSON from OAuth2 redirect + Vaciar JSON de la redirección OAuth2 + + + OCC::OCUpdater - - Could not download update. Please open <a href='%1'>%1</a> to download the update manually. - No se puede descargar la actualización. Por favor, abra <a href='%1'>%1</a> para descargar la actualización manualmente. + + %1 available. Restart application to start the update. + %1 disponible. Reinicia la aplicación para empezar la actualización. - - Could not download update. Please open %1 to download the update manually. - No se pudo descargar la actualización. Por favor, abra %1 para descargarla manualmente. + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + Está a punto de ser instalada una nueva actualización para %1 . Es posible que el actualizador solicite privilegios adicionales durante el proceso. Es posible que su ordenador se deba reiniciar para completar la instalación. - - Could not check for new updates. - No se puede comprobar si hay actualizaciones. + + Checking update server … + Consultando al servidor de actualizaciones ... - - New %1 is available. Please open <a href='%2'>%2</a> to download the update. - La nueva %1 está disponible. Por favor, abra<a href='%2'>%2</a> para descargar la actualización. + + Could not check for new updates. + No se puede comprobar si hay actualizaciones. - - New %1 is available. Please open %2 to download the update. - La nueva %1 está disponible. Por favor, abra %2 para descargar la actualización. + + Could not download update. Please open %1 to download the update manually. + No se pudo descargar la actualización. Por favor, abra %1 para descargarla manualmente. - - Checking update server … - Consultando al servidor de actualizaciones ... + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + No se puede descargar la actualización. Por favor, abra <a href='%1'>%1</a> para descargar la actualización manualmente. - - Update status is unknown: Did not check for new updates. - Estado de actualización desconocido: no se buscaron nuevas actualizaciones. + + Downloading %1. Please wait … + Descargando %1. Por favor, espere … - - No updates available. Your installation is at the latest version. - No hay actualizaciones disponibles. Tiene la última versión. + + New %1 is available. Please open %2 to download the update. + La nueva %1 está disponible. Por favor, abra %2 para descargar la actualización. - - Update Check - Comprobar si hay actualizaciones + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + La nueva %1 está disponible. Por favor, abra<a href='%2'>%2</a> para descargar la actualización. - - - OCC::OwncloudAdvancedSetupPage - - Connect - Conectar + + New %1 update ready + La nueva %1 actualización está lista - - - Use &virtual files instead of downloading content immediately %1 - Usa &archivos virtuales en vez de descargar el contenido inmediatamente %1 + + No updates available. Your installation is at the latest version. + No hay actualizaciones disponibles. Tiene la última versión. - - - (experimental) - (experimental) + + Update Check + Comprobar si hay actualizaciones - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Los archivos virtuales no son compatibles con la carpeta raíz de la partición de Windows como carpeta local. Por favor, elija una subcarpeta válida bajo la letra de la unidad. + + Update status is unknown: Did not check for new updates. + Estado de actualización desconocido: no se buscaron nuevas actualizaciones. + + + OCC::OwncloudAdvancedSetupPage - - %1 folder "%2" is synced to local folder "%3" - %1 carpeta "%2" está sincronizada con la carpeta local "%3" + + (%1) + (%1) - - Sync the folder "%1" - Sincronizar la carpeta "%1" + + %1 folder "%2" is synced to local folder "%3" + %1 carpeta "%2" está sincronizada con la carpeta local "%3" - - Warning: The local folder is not empty. Pick a resolution! - Advertencia: La carpeta local no está vacía. ¡Elija una solución! + + %1 free space + %1 espacio libre - - %1 free space - %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB - %1 espacio libre + + Connect + Conectar - - Virtual files are not available for the selected folder - Los archivos virtuales no están disponiblespara la carpeta seleccionada + + Local Sync Folder + Carpeta local de sincronización - - Local Sync Folder - Carpeta local de sincronización + + Sync the folder "%1" + Sincronizar la carpeta "%1" - - - (%1) - (%1) + + There isn't enough free space in the local folder! + ¡No hay suficiente espacio libre en la carpeta local! - - There isn't enough free space in the local folder! - ¡No hay suficiente espacio libre en la carpeta local! + + Use &virtual files instead of downloading content immediately %1 + Usa &archivos virtuales en vez de descargar el contenido inmediatamente %1 - - + + + Warning: The local folder is not empty. Pick a resolution! + Advertencia: La carpeta local no está vacía. ¡Elija una solución! + + + OCC::OwncloudConnectionMethodDialog - - Connection failed - La conexión ha fallado + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Fallo al conectar con la dirección del servidor seguro <em>%1</em>. ¿Cómo desea proceder?</p></body></html> - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Fallo al conectar con la dirección del servidor seguro especificado. ¿Cómo desea proceder?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Fallo al conectar con la dirección del servidor seguro especificado. ¿Cómo desea proceder?</p></body></html> - - Select a different URL - Seleccionar una URL diferente + + Configure client-side TLS certificate + Configurar certificado TLS del cliente - - Retry unencrypted over HTTP (insecure) - Reintentar sin cifrado sobre HTTP (inseguro) + + Connection failed + La conexión ha fallado - - Configure client-side TLS certificate - Configurar certificado TLS del cliente + + Retry unencrypted over HTTP (insecure) + Reintentar sin cifrado sobre HTTP (inseguro) - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Fallo al conectar con la dirección del servidor seguro <em>%1</em>. ¿Cómo desea proceder?</p></body></html> + + Select a different URL + Seleccionar una URL diferente - - + + OCC::OwncloudHttpCredsPage - - &Email - &Correo electrónico + + &Email + &Correo electrónico - - Connect to %1 - Conectarse a %1 + + Connect to %1 + Conectarse a %1 - - Enter user credentials - Introduzca las credenciales de usuario + + Enter user credentials + Introduzca las credenciales de usuario - - - OCC::OwncloudPropagator + + + OCC::OwncloudOAuthCredsPage - - - Impossible to get modification time for file in conflict %1 - Es imposible leer la hora de modificación del archivo en conflicto %1 + Login in your browser + Inicie sesión en su navegador - - - OCC::OwncloudSetupPage + + + OCC::OwncloudPropagator - - The link to your %1 web interface when you open it in the browser. - %1 will be replaced with the application name - El link a su interfaz web %1 cuando la abra en el navegador. + Error with the metadata. Getting unexpected metadata format. + - - &Next > - &Siguiente > + + Impossible to get modification time for file in conflict %1 + Es imposible leer la hora de modificación del archivo en conflicto %1 + + + OCC::OwncloudSetupPage - - Server address does not seem to be valid - La dirección del servidor no es válida + + &Next > + &Siguiente > - - Could not load certificate. Maybe wrong password? - No se ha podido guardar el certificado. ¿Quizás la contraseña sea incorrecta? + + Could not load certificate. Maybe wrong password? + No se ha podido guardar el certificado. ¿Quizás la contraseña sea incorrecta? - - - OCC::OwncloudSetupWizard - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - <font color="green">Conectado con éxito a %1: versión %2 %3 (%4)</font><br/><br/> + + Server address does not seem to be valid + La dirección del servidor no es válida - - Invalid URL - URL no válida. + + The link to your %1 web interface when you open it in the browser. + El link a su interfaz web %1 cuando la abra en el navegador. + + + OCC::OwncloudSetupWizard - - Failed to connect to %1 at %2:<br/>%3 - Fallo al conectar %1 a %2:<br/>%3 + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + <font color="green"><b>Carpeta de sincronización local %1 creada con éxito</b></font> - - Timeout while trying to connect to %1 at %2. - Tiempo de espera agotado mientras se intentaba conectar a %1 en %2 + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + <font color="green">Conectado con éxito a %1: versión %2 %3 (%4)</font><br/><br/> - - Trying to connect to %1 at %2 … - Intentando conectar a %1 desde %2 ... + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + <p><font color="red">La creación de la carpeta remota ha fallado, probablemente porque las credenciales proporcionadas son incorrectas.</font><br/>Por favor, vuelva atrás y compruebe sus credenciales.</p> - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - La petición autenticada al servidor ha sido redirigida a "%1". La URL es errónea, el servidor está mal configurado. + + A sync connection from %1 to remote directory %2 was set up. + Se ha configarado una conexión de sincronización desde %1 al directorio remoto %2 - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Acceso denegado por el servidor. Para verificar que tiene acceso, <a href="%1">haga clic aquí</a> para acceder al servicio desde el navegador. + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + No se pudo eliminar y restaurar la carpeta porque ella o un archivo dentro de ella está abierto por otro programa. Por favor, cierre la carpeta o el archivo y pulsa en reintentar o cancelar la instalación. - - There was an invalid response to an authenticated WebDAV request - Ha habido una respuesta no válida a una solicitud autenticada de WebDAV + + Connection to %1 could not be established. Please check again. + No se ha podido establecer la conexión con %1. Por favor, compruébelo de nuevo. - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> - La carpeta de sincronización local %1 ya existe, configurándola para la sincronización.<br/><br/> + + Could not create local folder %1 + No se ha podido crear la carpeta local %1 - - Creating local sync folder %1 … - Creando carpeta de sincronización local %1 ... + + creating folder on Nextcloud: %1 + Creando carpeta en Nextcloud: %1 - - OK - OK + + Creating local sync folder %1 … + Creando carpeta de sincronización local %1 ... - - failed. - ha fallado. + + Error: %1 + Error: %1 - - Could not create local folder %1 - No se ha podido crear la carpeta local %1 + + Failed to connect to %1 at %2:<br/>%3 + Fallo al conectar %1 a %2:<br/>%3 - - No remote folder specified! - ¡No se ha especificado ninguna carpeta remota! + + failed. + ha fallado. - - Error: %1 - Error: %1 + + Folder rename failed + Error al renombrar la carpeta - - creating folder on Nextcloud: %1 - Creando carpeta en Nextcloud: %1 + + Invalid URL + URL no válida. - - Remote folder %1 created successfully. - Carpeta remota %1 creado correctamente. + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + La carpeta de sincronización local %1 ya existe, configurándola para la sincronización.<br/><br/> - - The remote folder %1 already exists. Connecting it for syncing. - La carpeta remota %1 ya existe. Conectándola para sincronizacion. + + No remote folder specified! + ¡No se ha especificado ninguna carpeta remota! - - - The folder creation resulted in HTTP error code %1 - La creación de la carpeta ha producido el código de error HTTP %1 + + OK + OK - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - ¡La creación de la carpeta remota ha fallado debido a que las credenciales proporcionadas son incorrectas!<br/>Por favor, vuelva atrás y compruebe sus credenciales</p> + + Remote folder %1 created successfully. + Carpeta remota %1 creado correctamente. - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - <p><font color="red">La creación de la carpeta remota ha fallado, probablemente porque las credenciales proporcionadas son incorrectas.</font><br/>Por favor, vuelva atrás y compruebe sus credenciales.</p> + + Remote folder %1 creation failed with error <tt>%2</tt>. + Creación %1 de carpeta remota ha fallado con el error <tt>%2</tt>. - - - Remote folder %1 creation failed with error <tt>%2</tt>. - Creación %1 de carpeta remota ha fallado con el error <tt>%2</tt>. + + Successfully connected to %1! + ¡Conectado con éxito a %1! - - A sync connection from %1 to remote directory %2 was set up. - Se ha configarado una conexión de sincronización desde %1 al directorio remoto %2 + + The folder creation resulted in HTTP error code %1 + La creación de la carpeta ha producido el código de error HTTP %1 - - Successfully connected to %1! - ¡Conectado con éxito a %1! + + The remote folder %1 already exists. Connecting it for syncing. + La carpeta remota %1 ya existe. Conectándola para sincronizacion. - - Connection to %1 could not be established. Please check again. - No se ha podido establecer la conexión con %1. Por favor, compruébelo de nuevo. + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + ¡La creación de la carpeta remota ha fallado debido a que las credenciales proporcionadas son incorrectas!<br/>Por favor, vuelva atrás y compruebe sus credenciales</p> - - Folder rename failed - Error al renombrar la carpeta + + Timeout while trying to connect to %1 at %2. + Tiempo de espera agotado mientras se intentaba conectar a %1 en %2 - - Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - No se pudo eliminar y restaurar la carpeta porque ella o un archivo dentro de ella está abierto por otro programa. Por favor, cierre la carpeta o el archivo y pulsa en reintentar o cancelar la instalación. + + Trying to connect to %1 at %2 … + Intentando conectar a %1 desde %2 ... + + + OCC::OwncloudWizard - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> - <font color="green"><b>Carpeta de sincronización local %1 creada con éxito</b></font> + + Add %1 account + Añadir %1 cuenta - - - OCC::OwncloudWizard - - Add %1 account - Añadir %1 cuenta + + Enable experimental feature? + ¿Activar característica experimental? - - Skip folders configuration - Omitir la configuración de carpetas + + Enable experimental placeholder mode + Activar modo experimental de marcador de posición - - Cancel - Cancelar + + Skip folders configuration + Omitir la configuración de carpetas - - Enable experimental feature? - ¿Activar característica experimental? + + Stay safe + Mantente a salvo - - When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. Switching to this mode will abort any currently running synchronization. This is a new, experimental mode. If you decide to use it, please report any issues that come up. - Cuando el modo de «archivos virtuales» está activado, ningún archivo será descargado de entrada. Por el contrario, un pequeño archivo «%1» será creado para cada archivo que existe en el servidor. Los contenidos pueden ser descargados ejecutando esos archivos, o usando el menú contextual. + Cuando el modo de «archivos virtuales» está activado, ningún archivo será descargado de entrada. Por el contrario, un pequeño archivo «%1» será creado para cada archivo que existe en el servidor. Los contenidos pueden ser descargados ejecutando esos archivos, o usando el menú contextual. El modo de archivos virtuales es incompatible con la sincronización selectiva. Si se activa, las carpetas no sincronizadas serán transformadas en carpetas de acceso solo en línea, y los ajustes de sincronización selectiva serán eliminados. @@ -3939,3122 +3736,2542 @@ Cambiar a este modo interrumpirá cualquier sincronización en proceso. Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de cualquier tipo de problema que pueda surgir. - - - Enable experimental placeholder mode - Activar modo experimental de marcador de posición - - - - Stay safe - Mantente a salvo - - - + + OCC::PasswordInputDialog - - Password for share required - Se requiere la contraseña para el recurso compartido + + Please enter a password for your share: + Por favor, introduce una contraseña para tu recurso compartido: - - - Please enter a password for your share: - Por favor, introduce una contraseña para tu recurso compartido: - - - + + OCC::PollJob - - Invalid JSON reply from the poll URL - Respuesta JSON invalida de la poll URL + + Invalid JSON reply from the poll URL + Respuesta JSON invalida de la poll URL - - + + OCC::ProcessDirectoryJob - - Symbolic links are not supported in syncing. - Los enlaces simbólicos no están soportados en la sincronización. - - - - File is listed on the ignore list. - El archivo está en la lista de ignorados. + + Cannot sync due to invalid modification time + No se puede sincronizar debido a una hora de modificación no válida - - File names ending with a period are not supported on this file system. - Los nombres de archivo que terminan con un punto no son compatibles con este sistema de archivos. + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. + Conflicto de capitalización: Se descargó el archivo del servidor y se renombró para evitar el conflicto. - - File names containing the character "%1" are not supported on this file system. - Los nombres de archivo que contienen el carácter "%1" no son compatibles con este sistema de archivos. + + Conflict when uploading a file. It's going to get removed! + Se ha producido un conflicto al subir un archivo. ¡Se eliminará! - - File name contains at least one invalid character - El nombre del archivo contiene al menos un carácter no válido + + Conflict when uploading a folder. It's going to get cleared! + Se ha producido un conflicto al subir una carpeta. ¡Se eliminará! - - The file name is a reserved name on this file system. - El nombre del archivo es una palabra reservada del sistema de archivos. + + Conflict: Server version downloaded, local copy renamed and not uploaded. + Conflicto: Versión del servidor descargada, la copia local ha sido renombrada pero no se ha podido subir. - - Filename contains trailing spaces. - El nombre del archivo contiene espacios finales. + + Could not upload file, because it is open in "%1". + No es posible subir el archivo, porque está abierto en "%1". - - Filename contains leading spaces. - El nombre del archivo contiene espacios iniciales. + + Error while deleting file record %1 from the database + Error mientras se borraba el registro de archivo %1 de la base de datos - - Filename contains leading and trailing spaces. - El nombre del archivo contiene espacios iniciales y finales. + + Error while reading the database + Error mientras se leía la base de datos - - Filename is too long. - El nombre del archivo es demasiado largo. + + File has extension reserved for virtual files. + El archivo tiene una extensión reservada para archivos virtuales. - - File/Folder is ignored because it's hidden. - El archivo o carpeta es ignorado porque está oculto. + + file id + identificador de archivo - - Stat failed. - Stat ha fallado. + + File is listed on the ignore list. + El archivo está en la lista de ignorados. - - Conflict: Server version downloaded, local copy renamed and not uploaded. - Conflicto: Versión del servidor descargada, la copia local ha sido renombrada pero no se ha podido subir. + + File name contains at least one invalid character + El nombre del archivo contiene al menos un carácter no válido - - Case Clash Conflict: Server file downloaded and renamed to avoid clash. - Conflicto de capitalización: Se descargó el archivo del servidor y se renombró para evitar el conflicto. + + File names containing the character "%1" are not supported on this file system. + Los nombres de archivo que contienen el carácter "%1" no son compatibles con este sistema de archivos. - - The filename cannot be encoded on your file system. - El nombre de archivo no se puede codificar en tu sistema de archivos. + + File names ending with a period are not supported on this file system. + Los nombres de archivo que terminan con un punto no son compatibles con este sistema de archivos. - - The filename is blacklisted on the server. - El nombre del archivo está prohibido en el servidor. + + File/Folder is ignored because it's hidden. + El archivo o carpeta es ignorado porque está oculto. - - File has extension reserved for virtual files. - El archivo tiene una extensión reservada para archivos virtuales. + + Filename is too long. + El nombre del archivo es demasiado largo. - - size - tamaño + + Ignored because of the "choose what to sync" blacklist + Ignorado porque se encuentra en la lista negra de «elija qué va a sincronizar» - - permission - permisos + + Moved to invalid target, restoring + Movido a un lugar no válido, restaurando - - file id - identificador de archivo + + Not allowed because you don't have permission to add files in that folder + No permitido porque no tienes permiso para añadir archivos a esa carpeta. - - Server reported no %1 - El servidor informó de no %1 + + Not allowed because you don't have permission to add subfolders to that folder + No permitido porque no tienes permiso para añadir subcarpetas a esa carpeta. - - Cannot sync due to invalid modification time - No se puede sincronizar debido a una hora de modificación no válida + + Not allowed to remove, restoring + No está permitido borrar, restaurando - - Could not upload file, because it is open in "%1". - No es posible subir el archivo, porque está abierto en "%1". + + Not allowed to upload this file because it is read-only on the server, restoring + No está permitido subir este archivo porque es de solo lectura en el servidor, restaurando. - - Error while deleting file record %1 from the database - Error mientras se borraba el registro de archivo %1 de la base de datos + + permission + permisos - - Conflict when uploading a folder. It's going to get cleared! - Se ha producido un conflicto al subir una carpeta. ¡Se eliminará! + + Server replied with an error while reading directory "%1" : %2 + El servidor contestó con un error al leer el directorio "%1" : %2 - - Conflict when uploading a file. It's going to get removed! - Se ha producido un conflicto al subir un archivo. ¡Se eliminará! + + Server reported no %1 + El servidor informó de no %1 - - - Moved to invalid target, restoring - Movido a un lugar no válido, restaurando + + size + tamaño - - Ignored because of the "choose what to sync" blacklist - Ignorado porque se encuentra en la lista negra de «elija qué va a sincronizar» + + Stat failed. + Stat ha fallado. - - - Not allowed because you don't have permission to add subfolders to that folder - No permitido porque no tienes permiso para añadir subcarpetas a esa carpeta. + + Symbolic links are not supported in syncing. + Los enlaces simbólicos no están soportados en la sincronización. - - Not allowed because you don't have permission to add files in that folder - No permitido porque no tienes permiso para añadir archivos a esa carpeta. + + The file name is a reserved name on this file system. + El nombre del archivo es una palabra reservada del sistema de archivos. - - Not allowed to upload this file because it is read-only on the server, restoring - No está permitido subir este archivo porque es de solo lectura en el servidor, restaurando. + + The filename cannot be encoded on your file system. + El nombre de archivo no se puede codificar en tu sistema de archivos. - - Not allowed to remove, restoring - No está permitido borrar, restaurando + + The filename is blacklisted on the server. + El nombre del archivo está prohibido en el servidor. - - - Error while reading the database - Error mientras se leía la base de datos - - - - Server replied with an error while reading directory "%1" : %2 - El servidor contestó con un error al leer el directorio "%1" : %2 - - - + + OCC::PropagateDirectory - - could not delete file %1 from local DB - no fue posible borrar el archivo %1 de la base de datos local + + could not delete file %1 from local DB + no fue posible borrar el archivo %1 de la base de datos local - - Error updating metadata due to invalid modification time - Error al actualizar los metadatos debido a una hora de modificación no válida + + Error updating metadata due to invalid modification time + Error al actualizar los metadatos debido a una hora de modificación no válida - - - The folder %1 cannot be made read-only: %2 - La carpeta %1 no se puede hacer de sólo lectura: %2 + + File is currently in use + El archivo se encuentra en uso - - Error updating metadata: %1 - Error al actualizar los metadatos: %1 + + The folder %1 cannot be made read-only: %2 + La carpeta %1 no se puede hacer de sólo lectura: %2 - - - File is currently in use - El archivo se encuentra en uso - - - + + OCC::PropagateDownloadFile - - could not get file %1 from local DB - no fue posible obtener el archivo %1 de la base de datos local - - - - File %1 cannot be downloaded because encryption information is missing. - El archivo %1 no puede ser descargado porque falta la información de cifrado, - - - - - File has changed since discovery - El archivo ha cambiado desde que fue descubierto + + Could not delete file record %1 from local DB + No fue posible borrar el registro del archivo %1 de la base de datos local - - - Could not delete file record %1 from local DB - No fue posible borrar el registro del archivo %1 de la base de datos local + + could not get file %1 from local DB + no fue posible obtener el archivo %1 de la base de datos local - - File %1 can not be downloaded because of a local file name clash! - ¡El archivo %1 no se puede descargar a causa de un conflicto con el nombre de un archivo local! + + File %1 can not be downloaded because of a local file name clash! + ¡El archivo %1 no se puede descargar a causa de un conflicto con el nombre de un archivo local! - - The download would reduce free local disk space below the limit - La descarga reducirá el espacio libre local por debajo del límite. + + File %1 cannot be downloaded because encryption information is missing. + El archivo %1 no puede ser descargado porque falta la información de cifrado, - - Free space on disk is less than %1 - El espacio libre en el disco es inferior a %1 + + File %1 downloaded but it resulted in a local file name clash! + ¡El archivo %1 se descargó pero resultó en un conflicto con el nombre de un archivo local! - - File was deleted from server - Se ha eliminado el archivo del servidor + + File %1 has invalid modified time reported by server. Do not save it. + El servidor informa que el archivo %1 tiene una hora de modificación no válida. No lo guardes. - - The file could not be downloaded completely. - No se ha podido descargar el archivo completamente. + + File has changed since discovery + El archivo ha cambiado desde que fue descubierto - - The downloaded file is empty, but the server said it should have been %1. - El archivo descargado está vacío, aunque el servidor dijo que debía ocupar %1. + + File was deleted from server + Se ha eliminado el archivo del servidor - - - File %1 has invalid modified time reported by server. Do not save it. - El servidor informa que el archivo %1 tiene una hora de modificación no válida. No lo guardes. + + Free space on disk is less than %1 + El espacio libre en el disco es inferior a %1 - - File %1 downloaded but it resulted in a local file name clash! - ¡El archivo %1 se descargó pero resultó en un conflicto con el nombre de un archivo local! + + The download would reduce free local disk space below the limit + La descarga reducirá el espacio libre local por debajo del límite. - - Error updating metadata: %1 - Error al actualizar los metadatos: %1 + + The downloaded file is empty, but the server said it should have been %1. + El archivo descargado está vacío, aunque el servidor dijo que debía ocupar %1. - - The file %1 is currently in use - El archivo %1 se encuentra en uso + + The file could not be downloaded completely. + No se ha podido descargar el archivo completamente. - - + + OCC::PropagateItemJob - - ; Restoration Failed: %1 - ; Fallo al restaurar: %1 + + ; Restoration Failed: %1 + ; Fallo al restaurar: %1 - - A file or folder was removed from a read only share, but restoring failed: %1 - Un archivo o directorio ha sido eliminado de una carpeta compartida de solo lectura pero la recuperación ha fallado: %1 + + A file or folder was removed from a read only share, but restoring failed: %1 + Un archivo o directorio ha sido eliminado de una carpeta compartida de solo lectura pero la recuperación ha fallado: %1 - - + + OCC::PropagateLocalMkdir - - could not delete file %1, error: %2 - no se ha podido borrar el archivo %1, error: %2 - - - - Folder %1 cannot be created because of a local file or folder name clash! - ¡La carpeta %1 no se pudo crear a causa de un conflicto con el nombre de un archivo o carpeta local! - - - - Could not create folder %1 - No se pudo crear la carpeta %1 + + Could not create folder %1 + No se pudo crear la carpeta %1 - - The folder %1 cannot be made read-only: %2 - La carpeta %1 no se puede hacer de sólo lectura: %2 + + could not delete file %1, error: %2 + no se ha podido borrar el archivo %1, error: %2 - - Error updating metadata: %1 - Error al actualizar los metadatos: %1 + + Folder %1 cannot be created because of a local file or folder name clash! + ¡La carpeta %1 no se pudo crear a causa de un conflicto con el nombre de un archivo o carpeta local! - - - The file %1 is currently in use - El archivo %1 se encuentra en uso - - - + + OCC::PropagateLocalRemove - - Could not remove %1 because of a local file name clash - No se ha podido eliminar %1 por causa de un conflicto con el nombre de un archivo local - - - - Could not delete file record %1 from local DB - No fue posible borrar el registro del archivo %1 de la base de datos local + + Could not remove %1 because of a local file name clash + No se ha podido eliminar %1 por causa de un conflicto con el nombre de un archivo local - - + + OCC::PropagateLocalRename - - Folder %1 cannot be renamed because of a local file or folder name clash! - - - - - File %1 downloaded but it resulted in a local file name clash! - ¡El archivo %1 se descargó pero resultó en un conflicto con el nombre de un archivo local! - - - - - - could not get file %1 from local DB - no fue posible obtener el archivo %1 de la base de datos local - - - - - Error setting pin state - Error al configurar el estado fijado - - - - - Error updating metadata: %1 - Error al actualizar los metadatos: %1 - - - - The file %1 is currently in use - El archivo %1 se encuentra en uso + + Error setting pin state + Error al configurar el estado fijado - - - Could not delete file record %1 from local DB - No fue posible borrar el registro del archivo %1 de la base de datos local + + Failed to propagate directory rename in hierarchy + Fallo al propagar el renombrado de carpeta en la jerarquía - - Failed to propagate directory rename in hierarchy - Fallo al propagar el renombrado de carpeta en la jerarquía + + Failed to rename file + Fallo al renombrar el archivo - - Failed to rename file - Fallo al renombrar el archivo + + Folder %1 cannot be renamed because of a local file or folder name clash! + La carpeta %1 no puede renombrarse debido a un conflicto de nombres de archivos o carpetas locales. - - - OCC::PropagateRemoteDelete - - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - El código HTTP devuelto por el servidor es erróneo. Se esperaba 204, pero se recibió "%1 %2". - - - - Could not delete file record %1 from local DB - No fue posible borrar el registro del archivo %1 de la base de datos local - - - - OCC::PropagateRemoteDeleteEncryptedRootFolder - - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - El código HTTP devuelto por el servidor es erróneo. Se esperaba 204, pero se recibió "%1 %2". - - - + + OCC::PropagateRemoteMkdir - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - El código HTTP devuelto por el servidor es erróneo. Se esperaba 201, pero se recibió "%1 %2". - - - - Failed to encrypt a folder %1 - Fallo al cifrar una carpeta %1 + + Error writing metadata to the database: %1 + Error al escribir los metadatos en la base de datos: %1 - - Error writing metadata to the database: %1 - Error al escribir los metadatos en la base de datos: %1 + + Failed to encrypt a folder %1 + Fallo al cifrar una carpeta %1 - - The file %1 is currently in use - El archivo %1 se encuentra en uso + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + El código HTTP devuelto por el servidor es erróneo. Se esperaba 201, pero se recibió "%1 %2". - - + + OCC::PropagateRemoteMove - - Could not rename %1 to %2, error: %3 - No se puede renombrar %1 a %2, error: %3 - - - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - El código HTTP devuelto por el servidor es erróneo. Esperado 201, pero recibido "%1 %2". - - - - could not get file %1 from local DB - no fue posible obtener el archivo %1 de la base de datos local - - - - Could not delete file record %1 from local DB - No fue posible borrar el registro del archivo %1 de la base de datos local + + Could not rename %1 to %2, error: %3 + No se puede renombrar %1 a %2, error: %3 - - - - Error updating metadata: %1 - Error al actualizar los metadatos: %1 - - - - - The file %1 is currently in use - El archivo %1 se encuentra en uso - - - - Error setting pin state - Error al configurar el estado fijado - - - - Error writing metadata to the database - Error al escribir los metadatos en la base de datos - - - + + OCC::PropagateUploadFileCommon - - Failed to upload encrypted file. - Fallo al subir el archivo cifrado. - - - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - El archivo %1 no se puede subir porque ya existe otro con el mismo nombre. Puede que sólo haya diferencias de mayúsculas/minúsculas - - - - - Upload of %1 exceeds the quota for the folder - La subida %1 excede el límite de tamaño de la carpeta - - - - - - File %1 has invalid modification time. Do not upload to the server. - El archivo %1 tiene una hora de modificación no válida. No subir al servidor. + + Failed to unlock encrypted folder. + Fallo al desbloquear la carpeta cifrada. - - File Removed (start upload) %1 - Archivo eliminado (comenzar subida) %1 + + Failed to upload encrypted file. + Fallo al subir el archivo cifrado. - - Local file changed during syncing. It will be resumed. - Un archivo local ha cambiado durante la sincronización. Se reanudará. + + Unable to upload an item with invalid characters + No se puede subir un elemento con caracteres no válidos - - Local file changed during sync. - Un archivo local ha sido modificado durante la sincronización. + + Upload of %1 exceeds the quota for the folder + La subida %1 excede el límite de tamaño de la carpeta - - - Failed to unlock encrypted folder. - Fallo al desbloquear la carpeta cifrada. - - - - Unable to upload an item with invalid characters - No se puede subir un elemento con caracteres no válidos - - - - Error updating metadata: %1 - Error al actualizar los metadatos: %1 - - - - The file %1 is currently in use - El archivo %1 se encuentra en uso - - - + + OCC::PropagateUploadFileNG - - The local file was removed during sync. - El archivo local ha sido eliminado durante la sincronización. - - - - Local file changed during sync. - Un archivo local fue modificado durante la sincronización. + + Missing ETag from server + Perdido ETag del servidor - - Poll URL missing - Falta la URL de la encuesta + + Missing File ID from server + ID perdido del archivo del servidor - - Unexpected return code from server (%1) - Respuesta inesperada del servidor (%1) + + Poll URL missing + Falta la URL de la encuesta - - Missing File ID from server - ID perdido del archivo del servidor + + Unexpected return code from server (%1) + Respuesta inesperada del servidor (%1) - - - Missing ETag from server - Perdido ETag del servidor - - - + + OCC::PropagateUploadFileV1 - - Poll URL missing - Falta la URL de la encuesta - - - - The local file was removed during sync. - El archivo local ha sido eliminado durante la sincronización. + + The server did not acknowledge the last chunk. (No e-tag was present) + El servidor no ha reconocido la última parte. (No había una e-tag presente) - - - Local file changed during sync. - Un archivo local ha sido modificado durante la sincronización. - - - - The server did not acknowledge the last chunk. (No e-tag was present) - El servidor no ha reconocido la última parte. (No había una e-tag presente) - - - + + OCC::ProxyAuthDialog - - Proxy authentication required - Autenticación de proxy necesaria + + Password: + Contraseña: - - Username: - Nombre de usuario: + + Proxy authentication required + Autenticación de proxy necesaria - - Proxy: - Proxy: + + Proxy: + Proxy: - - The proxy server needs a username and password. - El servidor de proxy necesita de un usuario y contraseña. + + The proxy server needs a username and password. + El servidor de proxy necesita de un usuario y contraseña. - - Password: - Contraseña: + + Username: + Nombre de usuario: - - + + OCC::SelectiveSyncDialog - - Choose What to Sync - Escoja qué sincronizar + + Choose What to Sync + Escoja qué sincronizar - - + + OCC::SelectiveSyncWidget - - Loading … - Cargando ... + + An error occurred while loading the list of sub folders. + Se ha producido un error al cargar la lista de carpetas. - - Deselect remote folders you do not wish to synchronize. - Deseleccione las carpetas remotas que no desea sincronizar. + + Deselect remote folders you do not wish to synchronize. + Deseleccione las carpetas remotas que no desea sincronizar. - - Name - Nombre + + Loading … + Cargando ... - - Size - Tamaño + + Name + Nombre - - - No subfolders currently on the server. - No hay subcarpetas actualmente en el servidor. + + No subfolders currently on the server. + No hay subcarpetas actualmente en el servidor. - - An error occurred while loading the list of sub folders. - Se ha producido un error al cargar la lista de carpetas. + + Size + Tamaño - - + + OCC::ServerNotificationHandler - - Reply - Responder + + Reply + Responder - - + + OCC::SettingsDialog - - Settings - Ajustes + + %1 Settings + %1 Configuración - - %1 Settings - This name refers to the application name e.g Nextcloud - %1 Configuración + + Account + Cuenta - - New Account - + + General + General - - General - General + Network + Red - - Account - Cuenta + + New Account + Nueva cuenta - - - OCC::ShareManager - - - Error - Error - - - + + OCC::ShareModel - - Secure file drop link - Enlace para entrega de archivos segura + + Could not find local folder for %1 + No se ha podido encontrar una carpeta local para %1 - - Share link - Compartir enlace + Enter a note for the recipient + - - Link share - Compartición de enlace + + Internal link + Enlace interno - - Internal link - Enlace interno + + Link share + Compartición de enlace - - Secure file drop - Entrega de archivos segura + + Secure file drop + Entrega de archivos segura - - Could not find local folder for %1 - No se ha podido encontrar una carpeta local para %1 + + Secure file drop link + Enlace para entrega de archivos segura - - - OCC::ShareeModel - - - Search globally - Buscar globalmente + + Share link + Compartir enlace + + + OCC::ShareUserLine - - No results found - No se encontraron resultados + Can edit + Puede editar - - Global search results - Resultados de búsqueda global + Expires: + Caduca: - - %1 (%2) - sharee (shareWithAdditionalInfo) - %1 (%2) + Note: + Nota: - - - OCC::SocketApi + + + OCC::ShareeModel - - Failed to encrypt folder at "%1" - No se pudo cifrar carpeta en "%1" + + Global search results + Resultados de búsqueda global - - The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - La cuenta %1 no tiene el cifrado de extremo a extremo configurado. Por favor configure esto en sus opciones de cuenta para habilitar el cifrado de carpetas. + + No results found + No se encontraron resultados - - Failed to encrypt folder - Fallo al cifrar la carpeta + + Search globally + Buscar globalmente + + + OCC::SocketApi - - Could not encrypt the following folder: "%1". - -Server replied with error: %2 - No se pudo cifrar la siguiente carpeta: "%1" - -El servidor respondió con el error: %2 + Activity + Actividad - - Folder encrypted successfully - Se cifró la carpeta exitosamente + + Context menu share + Compartir en menú contextual - - The following folder was encrypted successfully: "%1" - La siguiente carpeta se cifró con éxito: "%1" + + Copy internal link + Copiar enlace interno - - Context menu share - Compartir en menú contextual + + Copy private link to clipboard + Copiar enlace privado al portapapeles - - Select new location … - Seleccione nueva ubicación … + + Copy public link + Copiar enlace público - - I shared something with you - He compartido algo contigo + + Copy secure file drop link + Copiar enlace para entrega de archivos segura - - - Share options - Opciones de compartir + + Copy secure filedrop link + Copiar enlace para entrega de archivos segura - - - Activity - Actividad + + Could not encrypt the following folder: "%1". + +Server replied with error: %2 + No se pudo cifrar la siguiente carpeta: "%1" + +El servidor respondió con el error: %2 - - Copy private link to clipboard - Copiar enlace privado al portapapeles + + Delete local changes + Borra cambios en local - - Send private link by email … - Enviar enlace privado por correo electrónico ... + + Edit + Editar - - - Leave this share - Salir de este compartido + + + Expires in %1 minutes + + + + Expira en %1 minutos + - - Resharing this file is not allowed - No está permitido compartir de nuevo + + Failed to encrypt folder + Fallo al cifrar la carpeta - - Resharing this folder is not allowed - No está permitido compartir de nuevo esta carpeta + + Failed to encrypt folder at "%1" + No se pudo cifrar carpeta en "%1" - - Copy secure file drop link - Copiar enlace para entrega de archivos segura + + Folder encrypted successfully + Se cifró la carpeta exitosamente - - - Copy public link - Copiar enlace público + + I shared something with you + He compartido algo contigo - - Copy secure filedrop link - Copiar enlace para entrega de archivos segura + + Leave this share + Salir de este compartido - - Copy internal link - Copiar enlace interno + + Lock file + Bloquear archivo - - Encrypt - Cifrar + + Locked by %1 + Bloqueado por %1 - - Lock file - Bloquear archivo + + Move and rename … + Mover y renombrar … - - Unlock file - Desbloquear archivo + + Move and upload … + Mover y subir … - - Locked by %1 - Bloqueado por %1 + + Move, rename and upload … + Mover, renombrar y subir … - - - Expires in %1 minutes - remaining time before lock expires - - Expira en %1 minuto - Expira en %1 minutos - + + + Open in browser + Abrir en navegador - - Edit - Editar + + Resharing this file is not allowed + No está permitido compartir de nuevo - - Open in browser - Abrir en navegador + + Resharing this folder is not allowed + No está permitido compartir de nuevo esta carpeta - - Resolve conflict … - Resolver conflicto … + + Resolve conflict … + Resolver conflicto … - - Move and rename … - Mover y renombrar … + + Select new location … + Seleccione nueva ubicación … - - Move, rename and upload … - Mover, renombrar y subir … + + Send private link by email … + Enviar enlace privado por correo electrónico ... - - Delete local changes - Borra cambios en local + + Share options + Opciones de compartir - - Move and upload … - Mover y subir … + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. + La cuenta %1 no tiene el cifrado de extremo a extremo configurado. Por favor configure esto en sus opciones de cuenta para habilitar el cifrado de carpetas. - - Delete - Eliminar + + The following folder was encrypted successfully: "%1" + La siguiente carpeta se cifró con éxito: "%1" - - - OCC::SslButton - - <h3>Certificate Details</h3> - <h3>Detalles del certificado</h3> + + Unlock file + Desbloquear archivo + + + OCC::SslButton - - Common Name (CN): - Nombre común (NC): + + %1 (self-signed) + %1 (autofirmado) - - Subject Alternative Names: - Nombres alternativos del sujeto: + + <h3>Certificate Details</h3> + <h3>Detalles del certificado</h3> - - Organization (O): - Organización (O): + + <h3>Fingerprints</h3> + <h3>Firma</h3> - - Organizational Unit (OU): - Unidad organizativa (UO): + + <h3>Issuer</h3> + <h3>Emisor</h3> - - State/Province: - Estado/Provincia: + + <p><b>Note:</b> This certificate was manually approved</p> + <p><b>Notificación:</b> Este certificado fue aprobado manualmente</p> - - Country: - País: + + Certificate information: + Información del certificado: - - Serial: - Nº de serie: + + Common Name (CN): + Nombre común (NC): - - <h3>Issuer</h3> - <h3>Emisor</h3> + + Country: + País: - - Issuer: - Emisor: + + Expires on: + Caduca el: - - Issued on: - Emitido en: + + Issued on: + Emitido en: - - Expires on: - Caduca el: + + Issuer: + Emisor: - - <h3>Fingerprints</h3> - <h3>Firma</h3> + + No support for SSL session tickets/identifiers + No admite tickets de sesión/identificadores SSL - - SHA-256: - SHA-256: + + Organization (O): + Organización (O): - - SHA-1: - SHA-1: + + Organizational Unit (OU): + Unidad organizativa (UO): - - <p><b>Note:</b> This certificate was manually approved</p> - <p><b>Notificación:</b> Este certificado fue aprobado manualmente</p> + + Serial: + Nº de serie: - - %1 (self-signed) - %1 (autofirmado) + + Server version: %1 + Versión del servidor: %1 - - %1 - %1 + + SHA-1: + SHA-1: - - This connection is encrypted using %1 bit %2. - - Esta conexión está cifrada con %1 bit %2. - + + SHA-256: + SHA-256: - - This connection is NOT secure as it is not encrypted. - - Esta conexión NO ES SEGURA, pues no está cifrada. - + + State/Province: + Estado/Provincia: - - Server version: %1 - Versión del servidor: %1 + + Subject Alternative Names: + Nombres alternativos del sujeto: - - No support for SSL session tickets/identifiers - No admite tickets de sesión/identificadores SSL + + The connection is not secure + La conexión no es segura - - Certificate information: - Información del certificado: + + This connection is encrypted using %1 bit %2. + Esta conexión está cifrada con %1 bit %2. - - The connection is not secure - La conexión no es segura + + This connection is NOT secure as it is not encrypted. + Esta conexión NO ES SEGURA, pues no está cifrada. - - + + OCC::SslErrorDialog - - Trust this certificate anyway - Confiar en este certificado de todas maneras + + &lt;not specified&gt; + &lt;no especificado&gt; - - Untrusted Certificate - Certificado sin verificar + + Additional errors: + Errores adicionales: - - Cannot connect securely to <i>%1</i>: - No puedo conectar de forma segura a <i>%1</i>: + + Cannot connect securely to <i>%1</i>: + No puedo conectar de forma segura a <i>%1</i>: - - Additional errors: - Errores adicionales: + + Country: %1 + País: %1 - - with Certificate %1 - con certificado %1 + + Effective Date: %1 + Fecha de vigencia: %1 - - - - &lt;not specified&gt; - &lt;no especificado&gt; + + Expiration Date: %1 + Fecha de caducidad: %1 - - - Organization: %1 - Organización: %1 + + Fingerprint (SHA-256): <tt>%1</tt> + Huella digital (SHA-256):<tt>%1</tt> - - - Unit: %1 - Unidad: %1 + + Fingerprint (SHA-512): <tt>%1</tt> + Huella digital (SHA-512): <tt>%1</tt> - - - Country: %1 - País: %1 + + Fingerprint (SHA1): <tt>%1</tt> + Huella dactilar (SHA1): <tt>%1</tt> - - Fingerprint (SHA1): <tt>%1</tt> - Huella dactilar (SHA1): <tt>%1</tt> + + Issuer: %1 + Emisor: %1 - - Fingerprint (SHA-256): <tt>%1</tt> - Huella digital (SHA-256):<tt>%1</tt> + + Organization: %1 + Organización: %1 - - Fingerprint (SHA-512): <tt>%1</tt> - Huella digital (SHA-512): <tt>%1</tt> + + Trust this certificate anyway + Confiar en este certificado de todas maneras - - Effective Date: %1 - Fecha de vigencia: %1 + + Unit: %1 + Unidad: %1 - - Expiration Date: %1 - Fecha de caducidad: %1 + + Untrusted Certificate + Certificado sin verificar - - Issuer: %1 - Emisor: %1 + + with Certificate %1 + con certificado %1 - - + + OCC::SyncEngine - - %1 (skipped due to earlier error, trying again in %2) - %1 (no realizado por el error anterior, intente de nuevo %2) + + %1 (skipped due to earlier error, trying again in %2) + %1 (no realizado por el error anterior, intente de nuevo %2) - - Could not update file: %1 - No se pudo actualizar el archivo: %1 + + Cannot open the sync journal + No es posible abrir el diario de sincronización - - Could not update virtual file metadata: %1 - No se ha podido actualizar los metadatos del archivo virtual: %1 + + Could not set file record to local DB: %1 + No fue posible establecer el registro del archivo a la base de datos local: %1 - - Could not update file metadata: %1 - No se pudo actualizar los metadatos del archivo: %1 + + Could not update file metadata: %1 + No se pudo actualizar los metadatos del archivo: %1 - - Could not set file record to local DB: %1 - No fue posible establecer el registro del archivo a la base de datos local: %1 + + Could not update file: %1 + No se pudo actualizar el archivo: %1 - - Unresolved conflict. - Conflicto sin resolver. + + Could not update virtual file metadata: %1 + No se ha podido actualizar los metadatos del archivo virtual: %1 - - Only %1 are available, need at least %2 to start - Placeholders are postfixed with file sizes using Utility::octetsToString() - Solo %1 disponible, se necesita por lo menos %2 para comenzar + + Disk space is low: Downloads that would reduce free space below %1 were skipped. + Poco espacio libre en disco: La descarga lo reducirá por debajo del %1, deberia abortar. - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. - Imposible abrir o crear la BBDD local de sync. Asegurese de que tiene permisos de escritura en la carpeta de sync. + + Only %1 are available, need at least %2 to start + Solo %1 disponible, se necesita por lo menos %2 para comenzar - - Using virtual files with suffix, but suffix is not set - Usando archivos virtuales con sufijo, pero el sufijo no está establecido + + There is insufficient space available on the server for some uploads. + No hay suficiente espacio libre en el servidor para algunas subidas. - - Unable to read the blacklist from the local database - No se pudo leer la lista de bloqueo de la base de datos local + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. + Imposible abrir o crear la BBDD local de sync. Asegurese de que tiene permisos de escritura en la carpeta de sync. - - Unable to read from the sync journal. - No se ha podido leer desde el registro de sincronización + + Unable to read from the sync journal. + No se ha podido leer desde el registro de sincronización - - Cannot open the sync journal - No es posible abrir el diario de sincronización + + Unable to read the blacklist from the local database + No se pudo leer la lista de bloqueo de la base de datos local - - Disk space is low: Downloads that would reduce free space below %1 were skipped. - Poco espacio libre en disco: La descarga lo reducirá por debajo del %1, deberia abortar. + + Unresolved conflict. + Conflicto sin resolver. - - There is insufficient space available on the server for some uploads. - No hay suficiente espacio libre en el servidor para algunas subidas. + + Using virtual files with suffix, but suffix is not set + Usando archivos virtuales con sufijo, pero el sufijo no está establecido - - + + OCC::SyncJournalDb - - Failed to connect database. - Fallo en la conexión a la base de datos. + + Failed to connect database. + Fallo en la conexión a la base de datos. - - + + OCC::SyncStatusSummary - - - Offline - No conectado - - - - - - All synced! - ¡Todo está sincronizado! - - - - Some files couldn't be synced! - ¡Algunos archivos no han podido ser sincronizados! + + %1 of %2 + %1 de %2 - - See below for errors - Comprueba abajo los errores + + %1 of %2 · %3 left + %1 de %2 · quedan %3 - - Preparing sync - Preparando sincronización + + Offline + No conectado - - - Syncing - Sincronizando + + Preparing sync + Preparando sincronización - - Sync paused - Sincronización pausada + + See below for errors + Comprueba abajo los errores - - Some files could not be synced! - ¡Algunos archivos no pueden ser sincronizados! + + See below for warnings + Comprueba abajo los avisos - - See below for warnings - Comprueba abajo los avisos + + Some files could not be synced! + ¡Algunos archivos no pueden ser sincronizados! - - %1 of %2 · %3 left - %1 de %2 · quedan %3 + + Some files couldn't be synced! + ¡Algunos archivos no han podido ser sincronizados! - - %1 of %2 - %1 de %2 + + Syncing file %1 of %2 + Sincronizando archivo %1 de %2 - - - Syncing file %1 of %2 - Sincronizando archivo %1 de %2 - - - + + OCC::Systray - - Download - Descargar - - - - Add account - Agregar cuenta - - - - Open main dialog - Abrir diálogo principal - - - - - Pause sync - Pausar sincronización - - - - - Resume sync - Continuar sincronización + + %1: %2 + %1: %2 - - Settings - Ajustes + + Add account + Agregar cuenta - - Help - Ayuda + + Download + Descargar - - Exit %1 - Salir %1 + + Exit %1 + Salir %1 - - Pause sync for all - Pausar sincronización para todo + + Open main dialog + Abrir diálogo principal - - Resume sync for all - Continuar sincronización a todos + + Pause sync for all + Pausar sincronización para todo - - %1: %2 - %1: %2 + + Resume sync for all + Continuar sincronización a todos - - + + OCC::Theme - - easy/0118 - Redirect URL Parameter - easy/0138 + + <p>%1 desktop client %2</p> + <p>%1 cliente de escritorio %2</p> - - <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 Cliente de Escritorio</p><p>Versión %1. Para más información, por favor pulsa <a href='%2'>aquí</a>.</p> + <p>%1 Desktop Client</p> + <p>%1 Cliente de escritorio</p> - - <p><small>Using virtual files plugin: %1</small></p> - <p><small>Usando el plugin de archivos virtuales: %1</small></p> + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>%1 Cliente de Escritorio</p><p>Versión %1. Para más información, por favor pulsa <a href='%2'>aquí</a>.</p> - - <p>%1 desktop client %2</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 cliente de escritorio %2</p> + + <p><small>Using virtual files plugin: %1</small></p> + <p><small>Usando el plugin de archivos virtuales: %1</small></p> - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>Versión %1. Para obtener más información, haga clic <a href='%2'> aquí </a>.</p> + + <p>This release was supplied by %1.</p> + <p>Esta versión ha sido suministrada por %1.</p> - - <p>This release was supplied by %1.</p> - <p>Esta versión ha sido suministrada por %1.</p> + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>Versión %1. Para obtener más información, haga clic <a href='%2'> aquí </a>.</p> - - + + OCC::UnifiedSearchResultsListModel - - Failed to fetch providers. - Fallo al recuperar los proveedores. + + Failed to fetch providers. + Fallo al recuperar los proveedores. - - Failed to fetch search providers for '%1'. Error: %2 - Fallo al recuperar los proveedores de búsqueda para '%1'. Error: %2 + + Failed to fetch search providers for '%1'. Error: %2 + Fallo al recuperar los proveedores de búsqueda para '%1'. Error: %2 - - Search has failed for '%2'. - La búsqueda ha fallado para '%2'. + + Search has failed for '%1'. Error: %2 + La búsqueda ha fallado para '%1'. Error: %2 - - Search has failed for '%1'. Error: %2 - La búsqueda ha fallado para '%1'. Error: %2 + + Search has failed for '%2'. + La búsqueda ha fallado para '%2'. - - + + OCC::UpdateE2eeFolderMetadataJob - - Failed to update folder metadata. - Fallo al actualizar los metadatos de la carpeta. + + Failed to finalize item. + Fallo al finalizar ítem. - - Failed to unlock encrypted folder. - Fallo al desbloquear carpeta cifrada. + + Failed to update folder metadata. + Fallo al actualizar los metadatos de la carpeta. + + + OCC::UpdateE2eeFolderUsersMetadataJob - - Failed to finalize item. - Fallo al finalizar ítem. + Could not add or remove a folder user %1, for folder %2 + - - - OCC::UpdateE2eeFolderUsersMetadataJob - - - - - - - - - - Error updating metadata for a folder %1 - Error al actualizar los metadatos de una carpeta %1 + + Could not add or remove user %1 to access folder %2 + No se ha podido añadir o eliminar el usuario %1 para acceder a la carpeta %2 - - Could not fetch public key for user %1 - No se pudo obtener la llave pública para el usuario %1 + + Could not fetch public key for user %1 + No se pudo obtener la llave pública para el usuario %1 - - Could not find root encrypted folder for folder %1 - No se ha podido encontrar la carpeta cifrada para la carpeta %1 + + Could not find root encrypted folder for folder %1 + No se ha podido encontrar la carpeta cifrada para la carpeta %1 - - Could not add or remove user %1 to access folder %2 - + + Error updating metadata for a folder %1 + Error al actualizar los metadatos de una carpeta %1 - - Failed to unlock a folder. - Fallo al desbloquear una carpeta. + + Failed to unlock a folder. + Fallo al desbloquear una carpeta. - - + + OCC::User - - %1 notifications - + + %1 notifications + %1 notificaciones - - Retry all uploads - Reintentar todas las subidas + + Resolve conflict + Resolver conflicto - - - Resolve conflict - Resolver conflicto + + Retry all uploads + Reintentar todas las subidas - - + + OCC::UserModel - - Confirm Account Removal - Confirma la eliminación de cuenta - - - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>¿De verdad quieres eliminar la conexión con la cuenta <i>%1</i>?</p><p><b>Aviso:</b> Esto <b>no eliminará</b> ningún archivo.</p> + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>¿De verdad quieres eliminar la conexión con la cuenta <i>%1</i>?</p><p><b>Aviso:</b> Esto <b>no eliminará</b> ningún archivo.</p> - - Remove connection - Eliminar vinculación + + Confirm Account Removal + Confirma la eliminación de cuenta - - Cancel - Cancelar + + Remove connection + Eliminar vinculación - - + + OCC::UserStatusSelectorModel - - Could not fetch predefined statuses. Make sure you are connected to the server. - No se han podido recuperar los estados predefinidos. Asegúrese de que está conectado al servidor. + + %1 days + %1 días - - Could not fetch status. Make sure you are connected to the server. - No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. + + %1 hours + %1 horas - - Status feature is not supported. You will not be able to set your status. - La función de estado no es compatible. No podrás establecer tu estado. + + %1 minutes + %1 minutos - - Emojis are not supported. Some status functionality may not work. - La función de emojis no es compatible. Es posible que algunas funciones de estado del usuario no funcionen. + + 1 day + 1 día - - Could not set status. Make sure you are connected to the server. - No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. + + 1 hour + 1 hora - - Could not clear status message. Make sure you are connected to the server. - No se ha podido borrar el mensaje de estado. Asegúrese de que está conectado al servidor. + + 1 minute + 1 minuto - - - Don't clear - No borrar + + 30 minutes + 30 minutos - - 30 minutes - 30 minutos + + 4 hours + 4 horas - - - 1 hour - 1 hora + + Could not clear status message. Make sure you are connected to the server. + No se ha podido borrar el mensaje de estado. Asegúrese de que está conectado al servidor. - - 4 hours - 4 horas + + Could not fetch predefined statuses. Make sure you are connected to the server. + No se han podido recuperar los estados predefinidos. Asegúrese de que está conectado al servidor. - - - Today - Hoy + + Could not fetch status. Make sure you are connected to the server. + No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. - - - This week - Esta semana + + Could not set status. Make sure you are connected to the server. + No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. - - Less than a minute - Hace menos de un minuto + + Don't clear + No borrar - - 1 minute - 1 minuto + + Emojis are not supported. Some status functionality may not work. + La función de emojis no es compatible. Es posible que algunas funciones de estado del usuario no funcionen. - - %1 minutes - %1 minutos + + Less than a minute + Hace menos de un minuto - - %1 hours - %1 horas + + Status feature is not supported. You will not be able to set your status. + La función de estado no es compatible. No podrás establecer tu estado. - - 1 day - 1 día + + This week + Esta semana - - %1 days - %1 días + + Today + Hoy - - + + OCC::ValidateChecksumHeader - - The checksum header is malformed. - El encabezado de checksum está malformado. + + The checksum header contained an unknown checksum type "%1" + El encabezado del checksum contenía un tipo de comprobación desconocido: "%1" - - The checksum header contained an unknown checksum type "%1" - El encabezado del checksum contenía un tipo de comprobación desconocido: "%1" + + The checksum header is malformed. + El encabezado de checksum está malformado. - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - El archivo descargado no coincide con la suma de comprobación (checksum), se reanudará. "%1" != "%2" + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + El archivo descargado no coincide con la suma de comprobación (checksum), se reanudará. "%1" != "%2" - - + + OCC::Vfs - - The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - La característica de archivos virtuales necesita un sistema de archivos NTFS, %1 está usando %2 + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 + La característica de archivos virtuales necesita un sistema de archivos NTFS, %1 está usando %2 - - + + OCC::VfsDownloadErrorDialog - - Download error - Error de descarga + + %1 could not be downloaded. + %1 no pudo ser descargado. - - Error downloading - Error al descargar + + > More details + > Más detalles - - could not be downloaded - no pudo ser descargado + + could not be downloaded + no pudo ser descargado - - > More details - > Más detalles + + Download error + Error de descarga - - More details - Más detalles + + Error downloading + Error al descargar - - Error downloading %1 - Error descargando %1 + + Error downloading %1 + Error descargando %1 - - %1 could not be downloaded. - %1 no pudo ser descargado. + + More details + Más detalles - - - OCC::VfsSuffix - - - - Error updating metadata due to invalid modification time - Error al actualizar los metadatos debido a una fecha de modificación no válida. - - - - OCC::VfsXAttr - - - - Error updating metadata due to invalid modification time - Error al actualizar los metadatos debido a una fecha de modificación no válida. - - - + + OCC::WebEnginePage - - Invalid certificate detected - Certificado inválido detectado + + Invalid certificate detected + Certificado inválido detectado - - The host "%1" provided an invalid certificate. Continue? - El host "%1" ha entregado un certificado no válido. ¿Continuar? + + The host "%1" provided an invalid certificate. Continue? + El host "%1" ha entregado un certificado no válido. ¿Continuar? - - + + OCC::WebFlowCredentials - - <b>You have been logged out of your account %1 at %2. Please login again.</b> - - - - - OCC::WelcomePage - - - Form - Formulario + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + <b>Se ha cerrado la sesión de su cuenta %1 en %2. Vuelva a iniciar sesión.</b> - - Log in - Entrar + Please login with the account: %1 + - - Sign up with provider - Registrarse con un proveedor + You have been logged out of your account %1 at %2. Please login again. + + + + OCC::WelcomePage - - Keep your data secure and under your control - Mantén tus datos seguros y bajo tu control - - - - Host your own server - Aloja tu propio servidor - - - - OCC::ownCloudGui - - - Unsupported Server Version - Versión del servidor no soportada + Easy-to-use web mail, calendaring & contacts + Correo web, calendario y contactos fáciles de usar - - The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - El servidor en la cuenta %1 usa una versión no soportada %2. El uso de este cliente con versiones de servidor no soportadas no ha sido probado y es potencialmente peligroso. Continúa bajo tu propio riesgo. + + Form + Formulario - - Disconnected - Desconectado + + Host your own server + Aloja tu propio servidor - - Disconnected from some accounts - Desconectado desde varias cuentas + + Keep your data secure and under your control + Mantén tus datos seguros y bajo tu control - - Disconnected from %1 - Desconectado de %1 + + Log in + Entrar - - Disconnected from accounts: - Desconectado desde cuentas: + Screensharing, online meetings & web conferences + Compartir pantalla, reuniones en línea y conferencias web - - Account %1: %2 - Cuenta %1: %2 + Secure collaboration & file exchange + Colaboración e intercambio de archivos seguros - - Please sign in - Por favor, inicie sesión + + Sign up with provider + Registrarse con un proveedor + + + OCC::ownCloudGui - - Signed out - Cerrar sesión + + Account %1: %2 + Cuenta %1: %2 - - Account synchronization is disabled - La sincronización está deshabilitada + + Account synchronization is disabled + La sincronización está deshabilitada - - - Synchronization is paused - La sincronización se ha detenido + + Disconnected from %1 + Desconectado de %1 - - Folder %1: %2 - Archivo %1: %2 + + Disconnected from accounts: + Desconectado desde cuentas: - - Unresolved conflicts - Conflictos sin resolver + + Disconnected from some accounts + Desconectado desde varias cuentas - - Up to date - Actualizado + + Error during synchronization + Error durante la sincronización - - Error during synchronization - Error durante la sincronización + + Folder %1: %2 + Archivo %1: %2 - - There are no sync folders configured. - No hay carpetas configuradas para sincronizar. + + No sync folders configured + No hay carpetas sincronizado configuradas - - No sync folders configured - No hay carpetas sincronizado configuradas + + Please sign in + Por favor, inicie sesión - - Checking for changes in remote "%1" - Buscando cambios en carpeta remota "%1" + + Synchronization is paused + La sincronización se ha detenido - - Checking for changes in local "%1" - Buscando cambios en carpeta local "%1" + + Syncing %1 of %2 (%3 left) + Sincronizando %1 de %2 (quedan %3) - - Syncing %1 of %2 (%3 left) - Sincronizando %1 de %2 (quedan %3) + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + El servidor en la cuenta %1 usa una versión no soportada %2. El uso de este cliente con versiones de servidor no soportadas no ha sido probado y es potencialmente peligroso. Continúa bajo tu propio riesgo. - - Syncing %1 of %2 - Sincronizando %1 de %2 + + There are no sync folders configured. + No hay carpetas configuradas para sincronizar. - - Syncing %1 (%2 left) - Sincronizando %1 (quedan %2) + + Unresolved conflicts + Conflictos sin resolver - - Syncing %1 - Sincronizando %1 + + Unsupported Server Version + Versión del servidor no soportada - - %1 (%2, %3) - %1 (%2, %3) + + Up to date + Actualizado - - + + OCC::sesSnackBar - - Error - Error + + Success + Éxito - - - Warning - Aviso - - - - Success - - - - + + OwncloudAdvancedSetupPage - - &Local Folder - Carpeta &local + + &Local Folder + Carpeta &local - - Username - Usuario + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Si esta casilla está marcada, + el contenido existente en la carpeta local se borrará para iniciar una sincronización limpia desde el servidor. + desde el servidor.</p><p>No marque esta casilla si el contenido local + debe cargarse en la carpeta del servidor.</p></body></html> - - Local Folder - Carpeta Local + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Si esta casilla está marcada, el contenido existente en la carpeta local se borrará para iniciar una sincronización limpia desde el servidor.</p><p>No marque esta casilla si el contenido local debe cargarse en la carpeta de los servidores.</p></body></html>. - - Choose different folder - Elegir una carpeta distinta + + Ask before syncing external storages + Preguntar antes sincronizar almacenamientos externos - - Server address - Nombre del servidor + + Ask before syncing folders larger than + Preguntar antes sincronizar carpetas mayores de - - Sync Logo - Sync Logo + + Choose different folder + Elegir una carpeta distinta - - Synchronize everything from server - Sincronizar todo desde el servidor + + Erase local folder and start a clean sync + Borrar carpeta local e iniciar una sincronización limpia - - Ask before syncing folders larger than - Preguntar antes sincronizar carpetas mayores de + + Keep local data + Mantener datos locales - - - MB - - Trailing part of "Ask confirmation before syncing folder larger than" - + + Local Folder + Carpeta Local - - <html><head/><body><p>If this box is checked, - existing content in the local folder will be erased to start a clean sync - from the server.</p><p>Do not check this if the local content - should be uploaded to the servers folder.</p></body></html> - - + + Server address + Nombre del servidor - - Ask before syncing external storages - Preguntar antes sincronizar almacenamientos externos + + Sync Logo + Sync Logo - - Choose what to sync - Elija qué sincronizar + + Synchronize everything from server + Sincronizar todo desde el servidor - - Keep local data - Mantener datos locales + Username + Usuario + + + OwncloudHttpCredsPage - - Erase local folder and start a clean sync - Borrar carpeta local e iniciar una sincronización limpia + + &Password + &Contraseña - - - OwncloudHttpCredsPage - - &Username - &Nombre de usuario + + &Username + &Nombre de usuario + + + OwncloudOAuthCredsPage - - &Password - &Contraseña + Please switch to your browser to proceed. + Por favor, cambie a su navegador para continuar. - - - OwncloudSetupPage - - - TextLabel - TextLabel + Re-open Browser + Volver a abrir el navegador + + + OwncloudSetupPage - - Server address - Nombre del servidor + + TextLabel + TextLabel - - This is the link to your %1 web interface when you open it in the browser. - Este es el link a su interfaz web %1 cuando la abra en el navegador. + + This is the link to your %1 web interface when you open it in the browser. + Este es el link a su interfaz web %1 cuando la abra en el navegador. - - + + QObject - - - New folder - Nueva carpeta + + + %nd + + + + %y + - - - You renamed %1 - Has renombrado %1 + + + %nh + + + + %nh + - - - You deleted %1 - Has borrado %1 + + + %nm + + + + %nm + - - You created %1 - Has creado %1 + + 1m + 1min - - You changed %1 - Has cambiado %1 + + Could not create debug archive in selected location! + No se ha podido crear el archivo de depuración en la ubicación seleccionada. - - Synced %1 - Sincronizado %1 - - - - %nd - delay in days after an activity - - %nd - %nd - + + Failed to create debug archive + Error al crear el archivo de depuración - - in the future - en el futuro - - - - %nh - delay in hours after an activity - - %nh - %nh - + + in the future + en el futuro - - now - ahora + + New folder + Nueva carpeta - - 1m - one minute after activity date and time - 1min - - - - %nm - delay in minutes after an activity - - %nmin - %nmin - + + now + ahora - - Some time ago - Hace tiempo + + Paths beginning with '#' character are not supported in VFS mode. + Las rutas que empiecen con el carácter '#' no son compatibles con el modo VFS. - - %1: %2 - this displays an error string (%2) for a file %1 - %1: %2 + + Some time ago + Hace tiempo - - Paths beginning with '#' character are not supported in VFS mode. - Las rutas que empiecen con el carácter '#' no son compatibles con el modo VFS. + + Synced %1 + Sincronizado %1 - - Failed to create debug archive - + + The directory %1 cannot be part of your sync directory. Please choose another folder. + El directorio %1 no puede formar parte de su directorio de sincronización. Por favor, elija otra carpeta. - - Could not create debug archive in selected location! - + + You changed %1 + Has cambiado %1 - - The directory %1 cannot be part of your sync directory. Please choose another folder. - + + You created %1 + Has creado %1 - - Reply - Responder + + You deleted %1 + Has borrado %1 - - - ResolveConflictsDialog - - Solve sync conflicts - Resolver conflictos de sincronización + + You renamed %1 + Has renombrado %1 + + + ResolveConflictsDialog - - %1 files in conflict - indicate the number of conflicts to resolve - - %1 archivo en conflicto - %1 archivos en conflicto - - - - - Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - Escoja si quiere mantener la versión local, la versión del servidor, o ambas. Si escoge ambas, se le añadirá un número al nombre del archivo local. + + %1 files in conflict + + %1 fichero en conflicto + %1 ficheros en conflicto + %1 ficheros en conflicto + - - All local versions - Todas las versiones locales + + All local versions + Todas las versiones locales - - All server versions - Todas las versiones del servidor + + All server versions + Todas las versiones del servidor - - Resolve conflicts - Resolver conflictos + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. + Escoja si quiere mantener la versión local, la versión del servidor, o ambas. Si escoge ambas, se le añadirá un número al nombre del archivo local. - - Cancel - Cancelar + + Resolve conflicts + Resolver conflictos - - - SesErrorBox - - Error - Error + + Solve sync conflicts + Resolver conflictos de sincronización - - + + SesTrayHeader - - Website - + + Open local or group folders + Abrir carpetas locales de de grupo - - Open Nextcloud in browser - + + Open Nextcloud in browser + Abrir HiDrive Next en el navegador - - Open local or group folders - Abrir carpetas locales de de grupo + + Website + Sitio web - - + + ShareDelegate - - Create a new share link - Crear un nuevo enlace de recurso compartido + + Copied! + ¡Copiado! - - Copy share link location - Copiar dirección del recurso compartido + + Copy share link location + Copiar dirección del recurso compartido - - Copied! - ¡Copiado! + + Create a new share link + Crear un nuevo enlace de recurso compartido + + + ShareDetailsPage - - Share options - Opciones del recurso compartido + + Add another link + Añadir otro enlace - - - ShareDetailsPage - - An error occurred setting the share password. - Ocurrió un error al establecer la contraseña del recurso compartido + + Allow resharing + Permitir que los otros compartan - - Dismiss - Descartar + + Allow upload and editing + Permitir la subida y edición - - - Allow upload and editing - Permitir la subida y edición + + An error occurred setting the share password. + Ocurrió un error al establecer la contraseña del recurso compartido - - Custom Permissions - + + Copy share link + Copiar enlace de recurso compartido - - View only - Solo lectura + + Custom Permissions + Permisos personalizados - - File drop (upload only) - Soltar archivo (solo carga) + Edit share + - - Allow resharing - Permitir que los otros compartan + + Enter the note to recipient + Introducir la nota al destinatario - - Hide download - Ocultar descarga + + File drop (upload only) + Soltar archivo (solo carga) - - Password protect - Proteger con contraseña + + Hide download + Ocultar descarga - - Set expiration date - Fijar fecha de caducidad + + Note to recipient + Nota para el destinatario - - Note to recipient - Nota para el destinatario + + Password protect + Proteger con contraseña - - Enter the note to recipient - + + Set expiration date + Fijar fecha de caducidad - - Unshare - Dejar de compartir + Share label + - - Add another link - Añadir otro enlace + + Share link copied! + ¡Enlace compartido copiado! - - Share link copied! - ¡Enlace compartido copiado! + + Unshare + Dejar de compartir - - Copy share link - Copiar enlace de recurso compartido + + View only + Solo lectura - - + + ShareView - - Password required for new share - Se requiere una contraseña para la nueva compartición + + Password required for new share + Se requiere una contraseña para la nueva compartición - - Share password - Contraseña de la compartición + + Share password + Contraseña de la compartición - - Sharing is disabled - Compartir está deshabilitado + + Sharing is disabled + Compartir está deshabilitado - - This item cannot be shared. - Este ítem no puede ser compartido. + + Sharing is disabled. + Compartir está deshabilitado. - - Sharing is disabled. - Compartir está deshabilitado. + + This item cannot be shared. + Este ítem no puede ser compartido. - - + + ShareeSearchField - - Search for users or groups… - Buscar usuarios o grupos... + + Search for users or groups… + Buscar usuarios o grupos... - - Sharing is not available for this folder - Compartir no está disponible para esta carpeta + + Sharing is not available for this folder + Compartir no está disponible para esta carpeta - - + + SyncStatus - - Sync now - Sincronizar ahora - - - - Resolve conflicts - Resolver conflictos + + Sync now + Sincronizar ahora - - + + TalkReplyTextField - - Reply to … - Responder a ... + + Reply to … + Responder a ... - - Send reply to chat message - Enviar respuesta al mensaje de chat + + Send reply to chat message + Enviar respuesta al mensaje de chat - - + + TestSetUserStatusDialog - - - 1 day - 1 día - - - - - - - - Don't clear - No borrar - - - - - - - - 1 hour - 1 hora - - - - - - - 30 minutes - 30 minutos - - - - - - 4 hours - 4 horas - - - - - - Today - Hoy + + 7 days + 7 días - - - - - This week - Esta semana - - - - Less than a minute - Hace menos de un minuto - - - - 1 minute - 1 minuto - - - - 7 days - - - - - Could not fetch predefined statuses. Make sure you are connected to the server. - No se han podido recuperar los estados predefinidos. Asegúrese de que está conectado al servidor. - - - - Could not fetch status. Make sure you are connected to the server. - No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. - - - - Status feature is not supported. You will not be able to set your status. - La función de estado no es compatible. No podrás establecer tu estado. - - - - Could not set status. Make sure you are connected to the server. - No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. - - - - Emojis are not supported. Some status functionality may not work. - La función de emojis no es compatible. Es posible que algunas funciones de estado del usuario no funcionen. - - - - Could not clear status message. Make sure you are connected to the server. - No se ha podido borrar el mensaje de estado. Asegúrese de que está conectado al servidor. - - - + + TrayFoldersMenuButton - - Files - - - - - Open local or group folders - Abrir carpetas locales de de grupo - - - - Open local folder - Abrir carpeta local + + Files + Archivos - - Connected - Conectado + Group folder button + - - Disconnected - Desconectado + + Open %1 in file explorer + Abrir "%1" en el explorador de archivos - - Open local folder "%1" - Abrir carpeta local "%1" + + Open group folder "%1" + Abrir carpeta de grupo "%1" - - Open group folder "%1" - Abrir carpeta de grupo "%1" + + Open local folder + Abrir carpeta local - - Open %1 in file explorer - Abrir "%1" en el explorador de archivos + + Open local folder "%1" + Abrir carpeta local "%1" - - User group and local folders menu - Menú de usuario de carpetas de grupo o locales + + User group and local folders menu + Menú de usuario de carpetas de grupo o locales - - + + TrayWindowAccountMenu - - Current account - Cuenta actual - - - - Resume sync for all - Continuar sincronización a todos - - - - Pause sync for all - Pausar sincronización para todo + + Account switcher and settings menu + Cambiador de cuentas y menú de configuración - - Add account - Agregar cuenta + + Current account + Cuenta actual - - Settings - + + Current account avatar + Avatar del usuario actual - - Exit - Salir + + Current account status is do not disturb + El estado actual del usuario es no molestar - - Current account avatar - Avatar del usuario actual + + Current account status is online + El estado actual del usuario es en línea - - Current account status is online - El estado actual del usuario es en línea + + Exit + Salir - - - Current account status is do not disturb - El estado actual del usuario es no molestar - - - - Account switcher and settings menu - Cambiador de cuentas y menú de configuración - - - + + TrayWindowHeaderBar - - Website - - - - - Open Nextcloud in browser - - - - - Open local or group folders - Abrir carpetas locales de de grupo - - - - Open Nextcloud Talk in browser - Abrir Nextcloud Talk en el navegador + + More apps + Más aplicaciones - - More apps - Más aplicaciones + + Open %1 in browser + Abrir %1 en el navegador - - Open %1 in browser - Abrir %1 en el navegador + + Open Nextcloud Talk in browser + Abrir Nextcloud Talk en el navegador - - + + UnifiedSearchInputContainer - - Search files, messages, events … - Buscando archivos, mensajes, eventos … + + Search files, messages, events … + Buscando archivos, mensajes, eventos … - - + + UnifiedSearchResultFetchMoreTrigger - - Load more results - Cargar más resultados + + Load more results + Cargar más resultados - - + + UnifiedSearchResultItemSkeleton - - Search result skeleton. - Árbol de resultados de la búsqueda + + Search result skeleton. + Árbol de resultados de la búsqueda - - - UnifiedSearchResultListItem - - - Load more results - Cargar más resultados - - - + + UnifiedSearchResultNothingFound - - No results for - No se encontraron resultados para + + No results for + No se encontraron resultados para - - + + UnifiedSearchResultSectionItem - - Search results section %1 - Sección %1 de resultados de búsqueda + + Search results section %1 + Sección %1 de resultados de búsqueda - - + + UserLine - - Switch to account - Cambiar a la cuenta - - - - Account actions - Acciones de la cuenta + + Account actions + Acciones de la cuenta - - Set status - Establecer estado + + Remove account + Eliminar cuenta - - - Log out - Cerrar sesión + + Set status + Establecer estado - - - Log in - Iniciar sesión + + Switch to account + Cambiar a la cuenta - - - Remove account - Eliminar cuenta - - - + + UserStatusSelector - - Online status - Estado en línea - - - - Online - En línea + + Appear offline + Mostrar como fuera de línea - - Away - Ausente + + Away + Ausente - - Do not disturb - No molestar + + Clear status message + Borrar el mensaje de estado - - Mute all notifications - Silenciar todas las notificaciones + + Clear status message after + Borrar el mensaje de estado después de - - Invisible - Invisible + + Do not disturb + No molestar - - Appear offline - Mostrar como fuera de línea + + Invisible + Invisible - - Status message - Mensaje de estado + + Mute all notifications + Silenciar todas las notificaciones - - What is your status? - ¿Cuál es su estado? + + Online + En línea - - Clear status message after - Borrar el mensaje de estado después de + + Online status + Estado en línea - - Cancel - Cancelar + + Set status message + Establecer un mensaje de estado - - Clear status message - Borrar el mensaje de estado + + Status message + Mensaje de estado - - Set status message - Establecer un mensaje de estado + + What is your status? + ¿Cuál es su estado? - - + + Utility - - %L1 B - %L1 B + + %L1 B + %L1 B - - %L1 TB - %L1 TB + + %L1 GB + %L1 GB - - %L1 GB - %L1 GB + + %L1 KB + %L1 KB - - %L1 MB - %L1 MB + + %L1 MB + %L1 MB - - %L1 KB - %L1 KB + + %L1 TB + %L1 TB - - %n year(s) - - %n año - %n año(s) - + + %n day(s) + + + + + - - %n month(s) - - %n Mes - %n Mese(s) - + + %n hour(s) + + + + + - - %n day(s) - - %n dia - %n dia(s) - + + %n minute(s) + + + + + - - %n hour(s) - - %n hora - %n hora(s) - + + %n month(s) + + + + + - - %n minute(s) - - %n minuto - %n minuto(s) - + + %n second(s) + + + + + - - %n second(s) - - %n segundo - %n segundo(s) - - + + %n year(s) + + + + + + + + + Window - - %1 %2 - %1 %2 + Add new account + Añadir nueva cuenta - - - Window - - Nextcloud desktop main dialog - Cuadro de diálogo principal de escritorio de Nextcloud + + New activities + Nuevas actividades - - Unified search results list - Unificar la lista de resultados de la búsqueda + + Nextcloud desktop main dialog + Cuadro de diálogo principal de escritorio de Nextcloud - - New activities - Nuevas actividades + + Unified search results list + Unificar la lista de resultados de la búsqueda - - + + main.cpp - - System Tray not available - La bandeja del sistema no está disponible + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. + %1 requiere una bandeja del sistema de trabajo. Si estás ejecutando XFCE, por favor, siga <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">estas instrucciones</a>. Por otro lado, instale una bandeja del sistema de aplicaciones como "trayer" e inténtelo de nuevo. - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - %1 requiere una bandeja del sistema de trabajo. Si estás ejecutando XFCE, por favor, siga <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">estas instrucciones</a>. Por otro lado, instale una bandeja del sistema de aplicaciones como "trayer" e inténtelo de nuevo. + + System Tray not available + La bandeja del sistema no está disponible - - + + nextcloudTheme::aboutInfo() - - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Creado desde la revisión Git <a href="%1">%2</a> en %3, %4 con Qt %5, %6</small></p> + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Creado desde la revisión Git <a href="%1">%2</a> en %3, %4 con Qt %5, %6</small></p> - - + + progress - - Virtual file created - Archivo virtual creado - - - - Replaced by virtual file - Reemplazado por un archivo virtual - - - - Downloaded - Descargado - - - - Uploaded - Subido + + Deleted + Eliminado - - Server version downloaded, copied changed local file into conflict file - Versión del servidor descargada, se ha copiado el fichero local cambiado al fichero en conflicto + + Downloaded + Descargado - - Server version downloaded, copied changed local file into case conflict conflict file - Se descargó la versión del servidor, se copió el archivo local cambiado hacia archivo con conflictos de capitalización + + downloading + descargando - - Deleted - Eliminado + + error + error - - Moved to %1 - Movido a %1 + + Filesystem access error + Error de acceso al sistema de archivos - - Ignored - Ignorado + + Ignored + Ignorado - - Filesystem access error - Error de acceso al sistema de archivos + + Moved to %1 + Movido a %1 - - Error - Error + + moving + moviendo - - Updated local metadata - Actualizados metadatos locales + + Replaced by virtual file + Reemplazado por un archivo virtual - - Updated local virtual files metadata - + + Server version downloaded, copied changed local file into case conflict conflict file + Se descargó la versión del servidor, se copió el archivo local cambiado hacia archivo con conflictos de capitalización - - - Unknown - Desconocido + + Server version downloaded, copied changed local file into conflict file + Versión del servidor descargada, se ha copiado el fichero local cambiado al fichero en conflicto - - downloading - descargando + + Unknown + Desconocido - - uploading - subiendo + + Updated local metadata + Actualizados metadatos locales - - deleting - eliminando + + Updated local virtual files metadata + Actualizados los metadatos de los archivos virtuales locales - - moving - moviendo + + updating local metadata + actualizando metadatos locales - - ignoring - ignorando + + updating local virtual files metadata + Actualización de los metadatos de los archivos virtuales locales - - error - error + + Uploaded + Subido - - updating local metadata - actualizando metadatos locales + + uploading + subiendo - - updating local virtual files metadata - + + Virtual file created + Archivo virtual creado - - + + theme - - Status undefined - Estado indefinido + + Aborting … + Cancelando ... - - Waiting to start sync - Esperando para comenzar la sincronización + + Preparing to sync + Preparando para sincronizar - - Sync is running - Sincronizado en proceso + + Setup Error + Error en la instalación - - Sync Success - Sincronizado con éxito + + Status undefined + Estado indefinido - - Sync Success, some files were ignored. - Sincronizado con éxito, algunos archivos han sido ignorados. + + Sync Error + Error de sincronización. - - Sync Error - Error de sincronización. + + Sync is paused + La sincronización está en pausa. - - Setup Error - Error en la instalación + + Sync is running + Sincronizado en proceso - - Preparing to sync - Preparando para sincronizar + + Sync Success + Sincronizado con éxito - - Aborting … - Cancelando ... + + Sync Success, some files were ignored. + Sincronizado con éxito, algunos archivos han sido ignorados. - - Sync is paused - La sincronización está en pausa. + + Waiting to start sync + Esperando para comenzar la sincronización - - + + utility - - Could not open browser - No se ha podido abrir el navegador + + Always available locally + Siempre disponible localmente - - There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - Se ha producido un error al lanzar el navegador para ir a la URL: %1 , ¿puede ser que no tenga ningún navegador por defecto? + + Available online only + Disponible solo en línea - - Could not open email client - No se ha podido abrir el cliente de correo electrónico + + Could not open browser + No se ha podido abrir el navegador - - There was an error when launching the email client to create a new message. Maybe no default email client is configured? - Se ha producido un error al lanzar el cliente de correo electrónico para crear un nuevo mensaje. ¿Puede ser que no haya ningún cliente de correo electrónico configurado? + + Could not open email client + No se ha podido abrir el cliente de correo electrónico - - Always available locally - Siempre disponible localmente + + Currently available locally + Disponible localmente ahora - - Currently available locally - Disponible localmente ahora + + Free up local space + Liberar espacio local - - Some available online only - Algunos solo disponibles en línea + + Make always available locally + Hacer que esté siempre localmente disponible - - Available online only - Disponible solo en línea + + Some available online only + Algunos solo disponibles en línea - - Make always available locally - Hacer que esté siempre localmente disponible + + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? + Se ha producido un error al lanzar el navegador para ir a la URL: %1 , ¿puede ser que no tenga ningún navegador por defecto? - - Free up local space - Liberar espacio local + + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + Se ha producido un error al lanzar el cliente de correo electrónico para crear un nuevo mensaje. ¿Puede ser que no haya ningún cliente de correo electrónico configurado? - + diff --git a/translations/client_fr.ts b/translations/client_fr.ts index daf15eeb4ce76..41ab4f7deaddd 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -1,7565 +1,6271 @@ - - - - - ActivityItem - - - Open %1 locally - Ouvrir %1 localement - - - - In %1 - Dans %1 - - - - ActivityItemContent - - - Open file details - Ouvrir les détails du fichier - + + + - - Dismiss - Rejeter + &Automatically check for Updates + &Vérifier automatiquement la présence de nouvelles mises à jour - - - ActivityList - - Activity list - Liste des activités + &Launch on System Startup + &Lancer au démarrage du système - - No activities yet - Pas encore d'activité + Copy link + Copier le lien - - - BasicComboBox - - Clear status message menu - Menu d'effacement du message de statut + No Proxy + Aucun serveur proxy - - - CallNotificationDialog - - Talk notification caller avatar - Avatar de l'appelant de la notification Talk + Remove All Files? + Retirer tous les fichiers ? - - Answer Talk call notification - Répondre à la notification d'appel de Talk + Show Call Notifications + Afficher les notifications des appels - - Decline - Décliner + Show Server &Notifications + Afficher les &notifications serveur - - Decline Talk call notification - Décliner la notification d'appel de Talk + Show sync folders in &Explorer's navigation pane + Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers - - - CloudProviderWrapper - - %1 (%2, %3) - %1 (%2, %3) + Use &Monochrome Icons + Utiliser les icônes &monochromes + + + ActivityItem - - Checking for changes in "%1" - Vérification des modifications dans "%1" + + In %1 + Dans %1 - - Syncing %1 of %2 (%3 left) - Synchronisation de %1 sur %2 (%3 restant) + + Open %1 locally + Ouvrir %1 localement + + + ActivityItemContent - - Syncing %1 of %2 - Synchronisation de %1 sur %2 + + Dismiss + Rejeter - - Syncing %1 (%2 left) - Synchronisation de %1 (%2 restant) + + Open file details + Ouvrir les détails du fichier + + + ActivityList - - Syncing %1 - Synchronisation de %1 + + Activity list + Liste des activités - - - No recently changed files - Aucun fichier modifié récemment + + No activities yet + Pas encore d'activité + + + BasicComboBox - - Sync paused - Synchronisation en pause + + Clear status message menu + Menu d'effacement du message de statut + + + CallNotificationDialog - - Syncing - Synchronisation en cours + + Answer Talk call notification + Répondre à la notification d'appel de Talk - - Open website - Consulter le site web + + Decline + Décliner - - Recently changed - Modifié récemment + + Decline Talk call notification + Décliner la notification d'appel de Talk - - Pause synchronization - Suspendre la synchronisation + + Talk notification caller avatar + Avatar de l'appelant de la notification Talk + + + CloudProviderWrapper - - Help - Aide + + %1 (%2, %3) + %1 (%2, %3) - - Settings - Paramètres + + Checking for changes in "%1" + Vérification des modifications dans "%1" - - Log out - Se déconnecter + + Help + Aide - - Quit sync client - Quitter le client de synchro + + Log out + Se déconnecter - - - ConflictDelegate - - Local version - Version locale + + No recently changed files + Aucun fichier modifié récemment - - Server version - Version du serveur + + Open website + Consulter le site web - - - CrashReporter - - Tomahawk Crash Reporter - + + Pause synchronization + Suspendre la synchronisation - - <html><head/><body><p><br/></p></body></html> - + + Quit sync client + Quitter le client de synchro - - Abort - + + Recently changed + Modifié récemment - - Send this report - + + Settings + Paramètres - - Don't send - + + Sync paused + Synchronisation en pause - - You can disable sending crash reports in the configuration dialog. - + + Syncing + Synchronisation en cours - - - - We cannot gather useful debug information on your system. - + + Syncing %1 + Synchronisation de %1 - - - - - - Close - Fermer + + Syncing %1 (%2 left) + Synchronisation de %1 (%2 restant) - - Ready to send debug information (<a href="%1">view backtrace</a>). - + + Syncing %1 of %2 + Synchronisation de %1 sur %2 - - Gathering debug information... - + + Syncing %1 of %2 (%3 left) + Synchronisation de %1 sur %2 (%3 restant) + + + ConflictDelegate - - Uploaded %L1 of %L2 KB. - + + Local version + Version locale - - Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. - + + Server version + Version du serveur + + + CrashReporter - - Failed to send crash info. - + + Close + Fermer - - + + EditFileLocallyLoadingDialog - - Opening file for local editing - Ouverture du fichier pour édition locale + + Opening file for local editing + Ouverture du fichier pour édition locale - - + + EmojiPicker - - No recent emojis - Pas d'émojis récents + + No recent emojis + Pas d'émojis récents - - + + ErrorBox - - Error - Erreur + + Error + Erreur - - + + FakeHangingReply - - Operation canceled - + + Operation canceled + Opération annulée - - + + FileDetailsPage - - Dismiss - Rejeter - - - Activity - Activité + Sharing + Partage - - Sharing - Partage - - - + + FileDetailsWindow - - File details of %1 · %2 - Détails du fichier de %1 · %2 + + File details of %1 · %2 + Détails du fichier de %1 · %2 - - + + FileProviderEvictionDialog - - Evict materialised files - Supprimer les fichiers matérialisés + + Evict materialised files + Supprimer les fichiers matérialisés - - Materialised items - Éléments matérialisés + + Materialised items + Éléments matérialisés - - Reload - Recharger + + Reload + Recharger - - + + FileProviderFastEnumerationSettings - - Enable fast sync - Activer la sync. rapide + + Enable fast sync + Activer la sync. rapide - - Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - La synchronisation rapide va uniquement synchroniser les modifications des fichiers et des dossiers dans les dossiers qui ont été explorés. Ceci peut significativement augmenter la réactivité sur la configuration initiale des fichiers virtuelles. Cependant, cela va causer des téléchargements redondants de fichiers déplacés dans un dossier non exploré. + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + La synchronisation rapide va uniquement synchroniser les modifications des fichiers et des dossiers dans les dossiers qui ont été explorés. Ceci peut significativement augmenter la réactivité sur la configuration initiale des fichiers virtuelles. Cependant, cela va causer des téléchargements redondants de fichiers déplacés dans un dossier non exploré. - - + + FileProviderFileDelegate - - Delete - Supprimer + + Delete + Supprimer - - + + FileProviderSettings - - Virtual files settings - Paramètres des fichiers virtuels + + Advanced + Avancés - - General settings - Paramètres généraux + + Create debug archive + Créer l'archive de débogage - - Enable virtual files - Activer les fichiers virtuels + + Enable virtual files + Activer les fichiers virtuels - - Advanced - Avancés + + General settings + Paramètres généraux - - Signal file provider domain - Indiquer le domaine du fournisseur de fichiers + + Signal file provider domain + Indiquer le domaine du fournisseur de fichiers - - Create debug archive - Créer l'archive de débogage + + Virtual files settings + Paramètres des fichiers virtuels - - + + FileProviderStorageInfo - - Local storage use - Utilisation du stockage local + + %1 GB of %2 GB remote files synced + %1 Go sur %2 Go de fichiers distants synchronisés - - %1 GB of %2 GB remote files synced - %1 Go sur %2 Go de fichiers distants synchronisés + + Evict local copies... + Supprimer les copies locales - - Evict local copies... - Supprimer les copies locales + + Local storage use + Utilisation du stockage local - - + + FileProviderSyncStatus - - Syncing - Synchronisation - - - - All synced! - Tout est synchronisé ! + + All synced! + Tout est synchronisé ! - - + + FileSystem - - Error removing "%1": %2 - Erreur lors de la suppression de "%1" : %2 + Could not make directories in trash + Impossible de créer des dossiers dans la corbeille - - Could not remove folder "%1" - Impossible de supprimer le dossier "%1" + Could not move "%1" to "%2" + Impossible de déplacer "%1" vers "%2" - Could not make directories in trash - Impossible de créer des dossiers dans la corbeille + + Could not remove folder "%1" + Impossible de supprimer le dossier "%1" - Could not move "%1" to "%2" - Impossible de déplacer "%1" vers "%2" + + Error removing "%1": %2 + Erreur lors de la suppression de "%1" : %2 - Moving to the trash is not implemented on this platform - Mettre à la corbeille n'est pas disponible sur cette plateforme + Moving to the trash is not implemented on this platform + Mettre à la corbeille n'est pas disponible sur cette plateforme - - + + Flow2AuthWidget - - Browser Authentication - Authentification avec le navigateur Internet + + An error occurred while connecting. Please try again. + Une erreur s'est produite pendant la connexion. Veuillez ré-essayer. - - Logo - Logo + + Browser Authentication + Authentification avec le navigateur Internet - - Switch to your browser to connect your account - Basculez sur votre navigateur pour connecter votre compte + + Copy Link + Copier le lien - - An error occurred while connecting. Please try again. - Une erreur s'est produite pendant la connexion. Veuillez ré-essayer. + + Logo + Logo - - Copy Link - Copier le lien + + Reopen Browser + Rouvrir le navigateur - - Reopen Browser - Rouvrir le navigateur + + Switch to your browser to connect your account + Basculez sur votre navigateur pour connecter votre compte - - + + FolderWizardSelectiveSync - - Add Folder Sync - Ajouter une synchronisation de dossiers + + Add Folder Sync + Ajouter une synchronisation de dossiers - - Step 3 of 3: Selektive Synchronisation - Étape 3 sur 3 : synchronisation sélective + + Step 3 of 3: Selektive Synchronisation + Étape 3 sur 3 : synchronisation sélective - - + + FolderWizardSourcePage - Pick a local folder on your computer to sync - Sélectionnez un dossier local de votre ordinateur à synchroniser + + &Choose + &Choisir - &Choose … - &Sélectionner … + &Choose … + &Sélectionner … - - Add Folder Sync - Ajouter une synchronisation de dossiers + Pick a local folder on your computer to sync + Sélectionnez un dossier local de votre ordinateur à synchroniser - - Step 1 of 3: Select local folder - Étape 1 sur 3 : sélectionner un dossier local + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés. - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés + + Step 1 of 3: Select local folder + Étape 1 sur 3 : sélectionner un dossier local - - - &Choose - &Choisir - - - + + FolderWizardTargetPage - Select a remote destination folder - Veuillez sélectionner un dossier distant - - - - Create folder - Créer un dossier + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. - - Refresh - Rafraîchir + + Create folder + Créer un dossier - - Add Folder Sync - Ajouter une synchronisation de dossiers + + Folders + Dossiers - - Step 2 of 3: Directory in your %1 - Étape 2 sur 3 : répertoire dans votre %1 + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + À présent, sélectionnez ou créez dans votre %1 un dossier cible dans lequel le contenu doit être importé et synchronisé. - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - À présent, sélectionnez ou créez dans votre %1 un dossier cible dans lequel le contenu doit être importé et synchronisé. + + Refresh + Rafraîchir - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. + Select a remote destination folder + Veuillez sélectionner un dossier distant - - Folders - Dossiers + + Step 2 of 3: Directory in your %1 + Étape 2 sur 3 : répertoire dans votre %1 - - - KMessageWidget - - - &Close - - - - - Close message - - - - + + OCC::AbstractNetworkJob - - Connection timed out - Délai de connexion dépassé - - - - Unknown error: network reply was deleted - Erreur inconnue : La réponse du réseau a été supprimée - - - - Server replied "%1 %2" to "%3 %4" - Le serveur a répondu "%1 %2" à "%3 %4" + + Connection timed out + Délai de connexion dépassé - - - OCC::AbstractPropagateRemoteDeleteEncrypted - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". + + Server replied "%1 %2" to "%3 %4" + Le serveur a répondu "%1 %2" à "%3 %4" - "%1 Failed to unlock encrypted folder %2". - "%1 Impossible de déverrouiller le dossier chiffré %2". + + Unknown error: network reply was deleted + Erreur inconnue : La réponse du réseau a été supprimée - - + + OCC::Account - - File %1 is already locked by %2. - Le fichier %1 est déjà verrouillé par %2. + + File %1 is already locked by %2. + Le fichier %1 est déjà verrouillé par %2. - - Lock operation on %1 failed with error %2 - L'opération de verrouillage de %1 a échoué avec l'erreur %2 + + Lock operation on %1 failed with error %2 + L'opération de verrouillage de %1 a échoué avec l'erreur %2 - - Unlock operation on %1 failed with error %2 - L'opération de déverrouillage de %1 a échoué avec l'erreur %2 + + Unlock operation on %1 failed with error %2 + L'opération de déverrouillage de %1 a échoué avec l'erreur %2 - - + + OCC::AccountManager - An existing configuration from a legacy desktop client was detected. -Should an account import be attempted? - Un configuration existante du client d'origine a été détectée -Est-ce qu'une tentative d'importation du compte doit être lancée ? - - - - %1 accounts were detected from a legacy desktop client. + + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - %1 comptes ont été détectés à partir d'un ancien client de bureau. + %1 comptes ont été détectés à partir d'un ancien client de bureau. Doivent-ils être importés ? - - 1 account was detected from a legacy desktop client. + + 1 account was detected from a legacy desktop client. Should the account be imported? - 1 compte a été détecté à partir d'un ancien client de bureau. + 1 compte a été détecté à partir d'un ancien client de bureau. Le compte doit-il être importé ? - - - Legacy import - Importation de l'héritage + An existing configuration from a legacy desktop client was detected. +Should an account import be attempted? + Un configuration existante du client d'origine a été détectée +Est-ce qu'une tentative d'importation du compte doit être lancée ? + + + + Could not import accounts from legacy client configuration. + Impossible d'importer des comptes à partir de l'ancienne configuration client. - - Import - Importer + + Import + Importer - - Skip - Ignorer + + Legacy import + Importation de l'héritage - Successfully imported account from legacy client: %1 - Importation réussie du compte de l'ancien client : %1 + + Skip + Ignorer - - Could not import accounts from legacy client configuration. - Impossible d'importer des comptes à partir de l'ancienne configuration client. + Successfully imported account from legacy client: %1 + Importation réussie du compte de l'ancien client : %1 - - + + OCC::AccountSettings - - - Storage space: … - Espace de stockage : ... + + (experimental) + (expérimental) - - Expand Memory - Augmenter la mémoire + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + %1 (%3%) utilisés sur %2. Certains dossiers, montés depuis le réseau ou partagés, peuvent avoir des limites différentes. - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - Les dossiers décochés seront <b>supprimés</b> de votre système de fichiers local et ne seront plus synchronisés sur cet ordinateur + + %1 as %2 + %1 avec le compte %2 - - - - Cancel - Annuler + + %1 in use + %1 utilisé(s) - - Apply - Appliquer + + %1 of %2 in use + %1 utilisés sur %2 - - Connected with <server> as <user> - Connecté au serveur <server> avec le compte <user> + + <p>Could not create local folder <i>%1</i>.</p> + <p>Impossible de créer le dossier local <i>%1</i>.</p> - - Synchronize all - Tout synchroniser + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Voulez-vous vraiment arrêter de synchroniser le dossier <i>%1</i> ?</p><p><b>Note :</b> Aucun fichier ne sera supprimé.</p> - - Synchronize none - Ne rien synchroniser + + Apply + Appliquer - - Apply manual changes - Appliquer les changements manuels + + Apply manual changes + Appliquer les changements manuels - - Standard file sync - Synchronisation de fichiers standards + + Availability + Disponibilités - - Virtual file sync - Synchronisation de fichiers virtuels + + Cancel + Annuler - - End-to-end Encryption with Virtual Files - Chiffrement de bout en bout avec fichiers virtuels + + Choose what to sync + Sélectionner le contenu à synchroniser - - You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - Il semble que la fonctionnalité des Fichiers Virtuels soit activée sur ce dossier. Pour l'instant, il n'est pas possible de télécharger implicitement des fichiers virtuels qui sont chiffrés de bout en bout. Pour bénéficier d'une expérience optimale avec les fichiers virtuels et le chiffrement de bout en bout, assurez-vous que le dossier chiffré soit marqué par l'option "Toujours rendre disponible localement". + + Confirm Folder Sync Connection Removal + Confirmer le retrait de la synchronisation de dossier - - - Do not encrypt folder - Ne pas chiffrer le dossier + + Connected to %1. + Connecté au serveur %1. - - - Encrypt folder - Chiffrer le dossier + + Connected with <server> as <user> + Connecté au serveur <server> avec le compte <user> - - End-to-end Encryption - Chiffrement de bout en bout + + Connecting to %1 … + Connexion à %1 ... - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. -<b>This process is not reversible. Are you sure you want to proceed?</b> - Cela va chiffrer votre dossier et tous les fichiers qu'il contient. Ces fichiers ne seront plus accessibles sans votre clé de chiffrement mnémonique. -<b>Ce processus n'est pas réversible. Êtes-vous sûr de vouloir le faire ?</b> + + Could not encrypt folder because the folder does not exist anymore + Impossible de chiffrer le dossier car il n'existe plus - - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. -<b>This process is not reversible. Are you sure you want to proceed?</b> - + + Create new folder + Créer un nouveau dossier - - No account configured. - Aucun compte configuré. + + Currently there is no storage usage information available. + Actuellement aucune information d'utilisation de stockage n'est disponible. - - Disable encryption - Désactiver le chiffrement + + Disable encryption + Désactiver le chiffrement - - Display mnemonic - Afficher la phrase secrète + + Disable end-to-end encryption + Désactiver le chiffrement de bout en bout - - End-to-end encryption has been enabled for this account - Le chiffrement de bout en bout a été activé sur ce compte + + Disable end-to-end encryption for %1? + Désactiver le chiffrement de bout en bout pour %1 ? - - Warning - Attention + + Disable support + Désactiver le support - - Please wait for the folder to sync before trying to encrypt it. - Merci d'attendre que le dossier soit synchronisé avant d'essayer de le chiffrer. + + Disable virtual file support … + Désactiver la prise en charge du fichier virtuel… - - The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - Le dossier a un défaut de synchronisation mineur. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. + + Disable virtual file support? + Désactiver le support des fichiers virtuels ? - - The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - Le dossier a une erreur de synchronisation. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. + + Display mnemonic + Afficher la phrase secrète - - End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. -Would you like to set up end-to-end encryption? - Le chiffrement de bout en bout n'est pas configuré sur cet appareil. Une fois qu'il sera configuré, vous serez en mesure de chiffrer ce dossier. -Souhaitez-vous configurer le chiffrement de bout en bout ? + + Do not encrypt folder + Ne pas chiffrer le dossier - - You cannot encrypt a folder with contents, please remove the files. -Wait for the new sync, then encrypt it. - Vous ne pouvez pas chiffrer un dossier avec son contenu, veuillez enlever les fichiers. Attendez une nouvelle synchronisation puis chiffrez le dossier. + + Edit Ignored Files + Modifier les fichiers ignorés - - Encryption failed - Le chiffrement a échoué + + Enable virtual file support %1 … + Activer la prise en charge du fichier virtuel %1 … - - Could not encrypt folder because the folder does not exist anymore - Impossible de chiffrer le dossier car il n'existe plus + + Encrypt + Chiffrer - - - Open folder - Ouvrir le dossier + + Encrypt folder + Chiffrer le dossier - - Encrypt - Chiffrer + + Encryption failed + Le chiffrement a échoué - - - Edit Ignored Files - Modifier les fichiers ignorés + + End-to-end Encryption + Chiffrement de bout en bout - - - Create new folder - Créer un nouveau dossier + + End-to-end encryption has been enabled for this account + Le chiffrement de bout en bout a été activé sur ce compte - - - Availability - Disponibilités + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. + Le chiffrement de bout en bout a été activé sur ce compte avec un autre appareil.<br>Il peut être activé sur cet appareil en entrant votre phrase secrète.<br>Cela permettra la synchronisation des dossiers chiffrés existants. - - Choose what to sync - Sélectionner le contenu à synchroniser + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. +Would you like to set up end-to-end encryption? + Le chiffrement de bout en bout n'est pas configuré sur cet appareil. Une fois qu'il sera configuré, vous serez en mesure de chiffrer ce dossier. +Souhaitez-vous configurer le chiffrement de bout en bout ? - - Force sync now - Forcer la synchronisation maintenant + + End-to-end encryption mnemonic + Phrase secrète du chiffrement de bout en bout - - Restart sync - Redémarrer la synchronisation + + End-to-end Encryption with Virtual Files + Chiffrement de bout en bout avec fichiers virtuels - - Resume sync - Reprendre la synchronisation + + Expand Memory + Augmenter la mémoire - - Pause sync - Mettre en pause la synchronisation + + Folder creation failed + Échec de la création du dossier - - Remove folder sync connection - Retirer la connexion de synchronisation de dossier + + Force sync now + Forcer la synchronisation maintenant - - Disable virtual file support … - Désactiver la prise en charge du fichier virtuel… + + https://wl.hidrive.com/easy/0057 + https://wl.hidrive.com/easy/0057 - - Enable virtual file support %1 … - Activer la prise en charge du fichier virtuel %1 … + + No %1 connection configured. + Aucune connexion à %1 configurée - - (experimental) - (expérimental) + + No account configured. + Aucun compte configuré. - - Folder creation failed - Échec de la création du dossier + No connection to %1 at %2. + Aucune connexion au serveur %1 à l'adresse %2. - - <p>Could not create local folder <i>%1</i>.</p> - <p>Impossible de créer le dossier local <i>%1</i>.</p> + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + En attente d'autorisation du navigateur. <a href='%1'>Cliquer ici</a> pour recharger le navigateur. - - Confirm Folder Sync Connection Removal - Confirmer le retrait de la synchronisation de dossier + + Open folder + Ouvrir le dossier - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Voulez-vous vraiment arrêter de synchroniser le dossier <i>%1</i> ?</p><p><b>Note :</b> Aucun fichier ne sera supprimé.</p> + + Pause sync + Mettre en pause la synchronisation - - Remove Folder Sync Connection - Retirer la synchronisation de ce dossier + + Please wait for the folder to sync before trying to encrypt it. + Merci d'attendre que le dossier soit synchronisé avant d'essayer de le chiffrer. - - Disable virtual file support? - Désactiver le support des fichiers virtuels ? + + Remove folder sync connection + Retirer la connexion de synchronisation de dossier - - This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. - -The only advantage of disabling virtual file support is that the selective sync feature will become available again. - -This action will abort any currently running synchronization. - Cette action désactivera la prise en charge du fichier virtuel. Par conséquent, les contenus des dossiers habituellement marqués comme "disponibles en ligne seulement" seront téléchargés. -Le seul avantage de désactiver la prise en charge du fichier virtuel est que les fonctionnalités de synchronisation sélective seront de nouveau disponibles. -Cette action entraînera l'interruption de toute synchronisation en cours. + + Remove Folder Sync Connection + Retirer la synchronisation de ce dossier - - Disable support - Désactiver le support + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. + Le retrait du chiffrage de bout en bout supprimera localement les fichiers chiffrés synchronisés.<br>Les fichiers chiffrés demeureront sur le serveur. - - End-to-end encryption mnemonic - Phrase secrète du chiffrement de bout en bout + + Restart sync + Redémarrer la synchronisation - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - Pour protéger votre identité cryptographique, nous la chiffrons avec une phrase secrète de 12 mots du dictionnaire. Veuillez la noter et la garder en sécurité. Elle sera nécessaire pour ajouter d’autres appareils à votre compte (comme votre smartphone ou votre ordinateur portable). + + Resume sync + Reprendre la synchronisation - - Disable end-to-end encryption - Désactiver le chiffrement de bout en bout + + Server %1 is currently being redirected, or your connection is behind a captive portal. + Le serveur %1 est actuellement redirigé ou votre connexion est derrière un portail captif. - - Disable end-to-end encryption for %1? - Désactiver le chiffrement de bout en bout pour %1 ? + + Server %1 is currently in maintenance mode. + Le serveur %1 est en cours de maintenance. - - Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - Le retrait du chiffrage de bout en bout supprimera localement les fichiers chiffrés synchronisés.<br>Les fichiers chiffrés demeureront sur le serveur. + + Server %1 is temporarily unavailable. + Le serveur %1 est temporairement indisponible. - - Sync Running - Synchronisation en cours + + Server configuration error: %1 at %2. + Erreur de configuration serveur : %1 à %2. - - The syncing operation is running.<br/>Do you want to terminate it? - La synchronisation est en cours.<br/>Voulez-vous l'arrêter ? + + Set up encryption + Configurer le chiffrement - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - %1 (%3%) utilisés sur %2. Certains dossiers, montés depuis le réseau ou partagés, peuvent avoir des limites différentes. + + Signed out from %1. + Session sur %1 fermée. - - %1 of %2 in use - %1 utilisés sur %2 + + Standard file sync + Synchronisation de fichiers standards - - Storage space %1% occupied - Espace de stockage %1% occupé + + Storage space %1% occupied + Espace de stockage %1% occupé - - Currently there is no storage usage information available. - Actuellement aucune information d'utilisation de stockage n'est disponible. + + Storage space: … + Espace de stockage : ... - - %1 in use - %1 utilisé(s) + + Sync Running + Synchronisation en cours - - %1 as %2 - %1 avec le compte %2 + + Synchronize all + Tout synchroniser - - The server version %1 is unsupported! Proceed at your own risk. - La version %1 du serveur n'est pas maintenue ! -Vous prenez vos propres risques. + + Synchronize none + Ne rien synchroniser - - Connected to %1. - Connecté au serveur %1. + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully + Le dossier a un défaut de synchronisation mineur. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. - - Server %1 is temporarily unavailable. - Le serveur %1 est temporairement indisponible. + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully + Le dossier a une erreur de synchronisation. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. - - Server %1 is currently in maintenance mode. - Le serveur %1 est en cours de maintenance. + + The server version %1 is unsupported! Proceed at your own risk. + La version %1 du serveur n'est pas maintenue ! +Vous prenez vos propres risques. - - Server %1 is currently being redirected, or your connection is behind a captive portal. - Le serveur %1 est actuellement redirigé ou votre connexion est derrière un portail captif. + + The syncing operation is running.<br/>Do you want to terminate it? + La synchronisation est en cours.<br/>Voulez-vous l'arrêter ? - - Signed out from %1. - Session sur %1 fermée. + + There are folders that have grown in size beyond %1MB: %2 + Il y a des dossiers qui ont augmenté de taille au-delà de %1MB: %2 - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - En attente d'autorisation du navigateur. <a href='%1'>Cliquer ici</a> pour recharger le navigateur. + + There are folders that were not synchronized because they are external storages: + Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe : - - Connecting to %1 … - Connexion à %1 ... + + There are folders that were not synchronized because they are too big or external storages: + Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe ou qu'ils sont de taille trop importante : - No connection to %1 at %2. - Aucune connexion au serveur %1 à l'adresse %2. + + There are folders that were not synchronized because they are too big: + Certains dossiers n'ont pas été synchronisés parce qu'ils sont de taille trop importante : - - Unable to connect to %1. - Impossible de se connecter à %1. + + This account supports end-to-end encryption + Ce compte prend en charge le chiffrement de bout en bout. - - Server configuration error: %1 at %2. - Erreur de configuration serveur : %1 à %2. + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + +The only advantage of disabling virtual file support is that the selective sync feature will become available again. + +This action will abort any currently running synchronization. + Cette action désactivera la prise en charge du fichier virtuel. Par conséquent, les contenus des dossiers habituellement marqués comme "disponibles en ligne seulement" seront téléchargés. +Le seul avantage de désactiver la prise en charge du fichier virtuel est que les fonctionnalités de synchronisation sélective seront de nouveau disponibles. +Cette action entraînera l'interruption de toute synchronisation en cours. - - No %1 connection configured. - Aucune connexion à %1 configurée + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> + Cela va chiffrer votre dossier et tous les fichiers qu'il contient. Ces fichiers ne seront plus accessibles sans votre clé de chiffrement mnémonique. +<b>Ce processus n'est pas réversible. Êtes-vous sûr de vouloir le faire ?</b> - - https://wl.hidrive.com/easy/0057 - https://wl.hidrive.com/easy/0057 + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> + Cette opération cryptera votre dossier et tous les fichiers qu'il contient. Ces fichiers ne seront plus accessibles sans votre clé mnémonique de cryptage. +<b>Ce processus n'est pas réversible. Êtes-vous sûr de vouloir continuer ? - - There are folders that were not synchronized because they are too big: - Certains dossiers n'ont pas été synchronisés parce qu'ils sont de taille trop importante : + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + Pour protéger votre identité cryptographique, nous la chiffrons avec une phrase secrète de 12 mots du dictionnaire. Veuillez la noter et la garder en sécurité. Elle sera nécessaire pour ajouter d’autres appareils à votre compte (comme votre smartphone ou votre ordinateur portable). - - There are folders that were not synchronized because they are external storages: - Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe : + + Unable to connect to %1. + Impossible de se connecter à %1. - - There are folders that were not synchronized because they are too big or external storages: - Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe ou qu'ils sont de taille trop importante : + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + Les dossiers décochés seront <b>supprimés</b> de votre système de fichiers local et ne seront plus synchronisés sur cet ordinateur - - There are folders that have grown in size beyond %1MB: %2 - Il y a des dossiers qui ont augmenté de taille au-delà de %1MB: %2 + + Virtual file sync + Synchronisation de fichiers virtuels - - End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - Le chiffrement de bout en bout a été activé sur ce compte avec un autre appareil.<br>Il peut être activé sur cet appareil en entrant votre phrase secrète.<br>Cela permettra la synchronisation des dossiers chiffrés existants. + + Warning + Attention - - This account supports end-to-end encryption - Ce compte prend en charge le chiffrement de bout en bout. + + You cannot encrypt a folder with contents, please remove the files. +Wait for the new sync, then encrypt it. + Vous ne pouvez pas chiffrer un dossier avec son contenu, veuillez enlever les fichiers. Attendez une nouvelle synchronisation puis chiffrez le dossier. - - Set up encryption - Configurer le chiffrement + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". + Il semble que la fonctionnalité des Fichiers Virtuels soit activée sur ce dossier. Pour l'instant, il n'est pas possible de télécharger implicitement des fichiers virtuels qui sont chiffrés de bout en bout. Pour bénéficier d'une expérience optimale avec les fichiers virtuels et le chiffrement de bout en bout, assurez-vous que le dossier chiffré soit marqué par l'option "Toujours rendre disponible localement". - - + + OCC::AccountSetupFromCommandLineJob - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - La requête authentifiée au serveur a été redirigée vers « %1 ». L'URL est mauvaise, le serveur est mal configuré. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Accès refusé par le serveur. Pour vérifier que vous disposez d'un accès approprié, <a href="%1">cliquez ici</a> pour accéder au service avec votre navigateur Web. - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Accès refusé par le serveur. Pour vérifier que vous disposez d'un accès approprié, <a href="%1">cliquez ici</a> pour accéder au service avec votre navigateur Web. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + La requête authentifiée au serveur a été redirigée vers « %1 ». L'URL est mauvaise, le serveur est mal configuré. - - There was an invalid response to an authenticated WebDAV request - Réponse invalide reçue suite à une requête WebDav authentifiée. + + There was an invalid response to an authenticated WebDAV request + Réponse invalide reçue suite à une requête WebDav authentifiée. - - + + OCC::AccountState - - Signed out - Session fermée + + Asking Credentials + informations d'identification demandées - - Disconnected - Déconnecté + + Configuration error + Erreur de configuration - - Connected - Connecté + + Connected + Connecté - - Service unavailable - Service indisponible + + Disconnected + Déconnecté - - Maintenance mode - mode maintenance + + Maintenance mode + mode maintenance - - Redirect detected - Redirection détectée + + Network error + Erreur réseau - - Network error - Erreur réseau + + Redirect detected + Redirection détectée - - Configuration error - Erreur de configuration + + Service unavailable + Service indisponible - - Asking Credentials - informations d'identification demandées + + Signed out + Session fermée - - Unknown account state - État du compte inconnu + + Unknown account state + État du compte inconnu - - + + OCC::ActivityListModel - - For more activities please open the Activity app. - Pour plus d'activités veuillez lancer l'application Activité. + + Fetching activities … + Récupération des activités... - - Fetching activities … - Récupération des activités... + + Files from the ignore list as well as symbolic links are not synced. + Les fichiers présents dans la liste d'exclusion ainsi que les liens symboliques ne sont pas synchronisés. - - Network error occurred: client will retry syncing. - Une erreur de réseau est survenue : le client va réessayer la synchronisation. + + For more activities please open the Activity app. + Pour plus d'activités veuillez lancer l'application Activité. - - Files from the ignore list as well as symbolic links are not synced. - Les fichiers présents dans la liste d'exclusion ainsi que les liens symboliques ne sont pas synchronisés. + + Network error occurred: client will retry syncing. + Une erreur de réseau est survenue : le client va réessayer la synchronisation. - - + + OCC::AddCertificateDialog - - SSL client certificate authentication - Authentification par certificat SSL client + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. + Un paquet pkcs12 chiffré est vivement recommandé vu qu'une copie sera stockée dans le fichier de configuration. - - This server probably requires a SSL client certificate. - Ce serveur requiert probablement un certificat SSL client. + + Browse … + Parcourir … - - Certificate & Key (pkcs12): - Certificat & clé (pkcs12) : + + Certificate & Key (pkcs12): + Certificat & clé (pkcs12) : - - Browse … - Parcourir … + + Certificate files (*.p12 *.pfx) + Fichiers de certificats (*.p12 *.pfx) - - Certificate password: - Mot de passe du certificat : + + Certificate password: + Mot de passe du certificat : - - An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - Un paquet pkcs12 chiffré est vivement recommandé vu qu'une copie sera stockée dans le fichier de configuration. + + Select a certificate + Sélectionner un certificat - - Select a certificate - Sélectionner un certificat + + SSL client certificate authentication + Authentification par certificat SSL client - - Certificate files (*.p12 *.pfx) - Fichiers de certificats (*.p12 *.pfx) + + This server probably requires a SSL client certificate. + Ce serveur requiert probablement un certificat SSL client. - - + + OCC::Application - - Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - Des paramètres ont été configurés dans des versions %1 de ce client et utilisent des fonctionnalités non disponibles dans la version actuelle. <br><br>Continuer impliquera que <b>ces paramètres seront %2</b>.<br><br> Le fichier de configuration actuel a été sauvegardé dans <i>%3</i>. + + %1 accounts + %1 comptes - - newer - newer software version - ultérieures + + %1 folders + %1 dossiers - - older - older software version - antérieures + + 1 account + 1 compte - - ignoring - ignorés + + 1 folder + 1 dossier - - deleting - supprimés + + Continue + Continuer - - Quit - Quitter + + deleting + supprimés - - Continue - Continuer + + Error accessing the configuration file + Erreur lors de l'accès au fichier de configuration - - %1 accounts - number of accounts imported - %1 comptes + + ignoring + ignorés - - 1 account - 1 compte - - - - %1 folders - number of folders imported - %1 dossiers + + Imported %1 and %2 from a legacy desktop client. +%3 + Import de %1 et %2 à partir d'un ancien client de bureau. +%3 - - 1 folder - 1 dossier + + newer + ultérieures - - Legacy import - Importation héritée + + older + antérieures - - Imported %1 and %2 from a legacy desktop client. -%3 - number of accounts and folders imported. list of users. - Import de %1 et %2 à partir d'un ancien client de bureau. -%3 + + Quit + Quitter - - Error accessing the configuration file - Erreur lors de l'accès au fichier de configuration + + Quit %1 + Quitter %1 - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - Une erreur est survenue lors de l'accès au fichier de configuration à %1. Merci de vérifier que le fichier est accessible du compte système. + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. + Des paramètres ont été configurés dans des versions %1 de ce client et utilisent des fonctionnalités non disponibles dans la version actuelle. <br><br>Continuer impliquera que <b>ces paramètres seront %2</b>.<br><br> Le fichier de configuration actuel a été sauvegardé dans <i>%3</i>. - - Quit %1 - Quitter %1 + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + Une erreur est survenue lors de l'accès au fichier de configuration à %1. Merci de vérifier que le fichier est accessible du compte système. - - + + OCC::AuthenticationDialog - - Authentication Required - Authentification requise + + &Password: + &Password: - - Enter username and password for "%1" at %2. - Saisir le nom d’utilisateur et le mot de passe pour « %1 » sur %2. + + &Username: + &Username: - - &Username: - &Username: + + Authentication Required + Authentification requise - - &Password: - &Password: + + Enter username and password for "%1" at %2. + Saisir le nom d’utilisateur et le mot de passe pour « %1 » sur %2. - - + + OCC::BasePropagateRemoteDeleteEncrypted - - "%1 Failed to unlock encrypted folder %2". - « %1 Impossible de déverrouiller le dossier chiffré %2 ». + "%1 Failed to unlock encrypted folder %2". + "%1 Impossible de déverrouiller le dossier chiffré %2". - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est « %1 %2 ». + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". - - + + OCC::BulkPropagatorJob - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Le fichier %1 ne peut être téléversé parce qu'un autre fichier avec le même nom hormis la casse existe + + Error updating metadata: %1 + Erreur à la mise à jour des méta-données : %1 - - File %1 has invalid modified time. Do not upload to the server. - Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Le fichier %1 ne peut être téléversé parce qu'un autre fichier avec le même nom hormis la casse existe - - File Removed (start upload) %1 - Fichier supprimé (démarrer l'envoi) %1 + + File %1 has invalid modification time. Do not upload to the server. + Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. - - File %1 has invalid modification time. Do not upload to the server. - Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. + + File %1 has invalid modified time. Do not upload to the server. + Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. - - Local file changed during syncing. It will be resumed. - Fichier local modifié pendant la synchronisation. La synchronisation sera reprise. + + File Removed (start upload) %1 + Fichier supprimé (démarrer l'envoi) %1 - - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. - - Network error: %1 - Erreur réseau : %1 + + Local file changed during syncing. It will be resumed. + Fichier local modifié pendant la synchronisation. La synchronisation sera reprise. - - Error updating metadata: %1 - Erreur à la mise à jour des méta-données : %1 + + Network error: %1 + Erreur réseau : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + Restoration failed: %1 + Échec de la restauration : %1 - - The local file was removed during sync. - Le fichier local a été supprimé pendant la synchronisation. + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - Restoration failed: %1 - Échec de la restauration : %1 + + The local file was removed during sync. + Le fichier local a été supprimé pendant la synchronisation. - - + + OCC::CaseClashConflictSolver - - Cannot rename file because a file with the same name already exists on the server. Please pick another name. - Impossible de renommer le fichier parce qu'un fichier portant le même nom existe déjà sur le serveur. Veuillez choisir un autre nom. + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + Impossible de renommer le fichier parce qu'un fichier portant le même nom existe déjà sur le serveur. Veuillez choisir un autre nom. - - Could not rename file. Please make sure you are connected to the server. - Impossible de renommer le fichier. Assurez-vous de bien être connecté au serveur. + + Could not rename file. Please make sure you are connected to the server. + Impossible de renommer le fichier. Assurez-vous de bien être connecté au serveur. - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Vous n'avez pas les permissions de renommer ce fichier. Veuillez demander à son auteur de le renommer. + + Failed to fetch permissions with error %1 + Échec de récupération de permissions avec l'erreur %1 - - Failed to fetch permissions with error %1 - Échec de récupération de permissions avec l'erreur %1 + + Filename contains leading and trailing spaces. + Le nom de fichier contient des espaces de début et de fin. - - Filename contains leading and trailing spaces. - Le nom de fichier contient des espaces de début et de fin. + + Filename contains leading spaces. + Le nom de fichier contient des espaces de début. - - Filename contains leading spaces. - Le nom de fichier contient des espaces de début. + + Filename contains trailing spaces. + Le nom de fichier contient des espaces de fin. - - Filename contains trailing spaces. - Le nom de fichier contient des espaces de fin. + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Vous n'avez pas les permissions de renommer ce fichier. Veuillez demander à son auteur de le renommer. - - + + OCC::CaseClashFilenameDialog - - Case Clash Conflict - Case Clash Conflict - - - - - The file could not be synced because it generates a case clash conflict with an existing file on this system. - Le fichier n'a pas pu être synchronisé car il génère un conflit de cas avec un fichier existant sur ce système. - - - - Error - Erreur - - - - Existing file - Dossier existant - - - - file A - fichier A + + %1 does not support equal file names with only letter casing differences. + %1 ne supporte pas les noms de fichiers identiques avec seulement des différences de casse de caractère. - - - today - aujourd'hui + + 0 byte + 0 octets - - - 0 byte - 0 octets + + Case Clash Conflict + Case Clash Conflict - - - Open existing file - Ouvrir un fichier existant + + Case clashing file + Fichier avec conflit de casse - - Case clashing file - Fichier avec conflit de casse + + Existing file + Dossier existant - - file B - fichier B + + file A + fichier A - - - Open clashing file - Ouvrir le fichier conflictuel + + file B + fichier B - - Please enter a new name for the clashing file: - Veuillez saisir un nouveau nom pour le fichier conflictuel : + + Filename contains illegal characters: %1 + Le nom du fichier contient des caractères illégaux : %1 - - New filename - Nouveau nom de fichier + + New filename + Nouveau nom de fichier - - Rename file - Renomer le fichier + + Open clashing file + Ouvrir le fichier conflictuel - - The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - Le fichier "%1" n'a pas pu être synchronisé à cause d'un conflit de casse avec un fichier existant dans ce système. + + Open existing file + Ouvrir un fichier existant - - %1 does not support equal file names with only letter casing differences. - %1 ne supporte pas les noms de fichiers identiques avec seulement des différences de casse de caractère. + + Please enter a new name for the clashing file: + Veuillez saisir un nouveau nom pour le fichier conflictuel : - - Filename contains leading and trailing spaces. - Le nom de fichier contient des espaces de début et de fin. + + Rename file + Renomer le fichier - - Filename contains leading spaces. - Le nom de fichier contient des espaces de début. + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + Le fichier "%1" n'a pas pu être synchronisé à cause d'un conflit de casse avec un fichier existant dans ce système. - - Filename contains trailing spaces. - Le nom de fichier contient des espaces de fin. + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + Le fichier n'a pas pu être synchronisé car il génère un conflit de cas avec un fichier existant sur ce système. - - Use invalid name - Nom invalide + + today + aujourd'hui - - Filename contains illegal characters: %1 - Le nom du fichier contient des caractères illégaux : %1 + + Use invalid name + Nom invalide - - + + OCC::CleanupPollsJob - - Error writing metadata to the database - Erreur à l'écriture des métadonnées dans la base de données + + Error writing metadata to the database + Erreur à l'écriture des métadonnées dans la base de données - - + + OCC::ClientSideEncryption - - Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - Veuillez entrer votre phrase de passe de chiffrement de bout en bout :<br><br>Nom d'utilisateur : %2<br>Compte : %3<br> + + Enter E2E passphrase + Entrez la phrase secrète E2E - - Enter E2E passphrase - Entrez la phrase secrète E2E + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + Veuillez entrer votre phrase de passe de chiffrement de bout en bout :<br><br>Nom d'utilisateur : %2<br>Compte : %3<br> - - + + OCC::ConflictDialog - - Sync Conflict - Conflit de synchronisation - - - - - Conflicting versions of %1. - Versions en conflit de %1. - - - - Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. - Quelle version du fichier souhaitez-vous garder ?<br/>Si vous sélectionnez les deux versions, le fichier local aura un numéro ajouté à son nom. - - - - Local version - Version locale - - - - - Click to open the file - Cliquez pour ouvrir le fichier + + <a href="%1">Open local version</a> + <a href="%1">Ouvrir la version locale</a> - - - today - aujourd'hui + + <a href="%1">Open server version</a> + <a href="%1">Ouvrir la version serveur</a> - - - 0 byte - 0 octet + + Click to open the file + Cliquez pour ouvrir le fichier - - <a href="%1">Open local version</a> - <a href="%1">Ouvrir la version locale</a> + + Conflicting versions of %1. + Versions en conflit de %1. - - Server version - Version du serveur + + Keep both versions + Conserver les deux versions - - <a href="%1">Open server version</a> - <a href="%1">Ouvrir la version serveur</a> + + Keep local version + Conserver la version locale - - - Keep selected version - Conserver la version sélectionnée + + Keep selected version + Conserver la version sélectionnée - - Open local version - Ouvrir la version locale + + Keep server version + Conserver la version serveur - - Open server version - Ouvrir la version serveur + + Open local version + Ouvrir la version locale - - Keep both versions - Conserver les deux versions + + Open server version + Ouvrir la version serveur - - Keep local version - Conserver la version locale + + Sync Conflict + Conflit de synchronisation - - Keep server version - Conserver la version serveur + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + Quelle version du fichier souhaitez-vous garder ?<br/>Si vous sélectionnez les deux versions, le fichier local aura un numéro ajouté à son nom. - - + + OCC::ConflictSolver - - Do you want to delete the directory <i>%1</i> and all its contents permanently? - Voulez-vous supprimer le dossier <i>%1</i> et tout son contenu définitivement ? - - - - Do you want to delete the file <i>%1</i> permanently? - Voulez-vous supprimer le fichier <i>%1</i> définitivement ? + + Confirm deletion + Confirmer la suppression - - Confirm deletion - Confirmer la suppression + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + Voulez-vous supprimer le dossier <i>%1</i> et tout son contenu définitivement ? - - - Error - Erreur + + Do you want to delete the file <i>%1</i> permanently? + Voulez-vous supprimer le fichier <i>%1</i> définitivement ? - - - Moving file failed: + + Moving file failed: %1 - Déplacement du fichier échoué + Déplacement du fichier échoué %1 - - + + OCC::ConnectionValidator - - No Nextcloud account configured - Aucun compte Nextcloud n'est paramétré + + Authentication error: Either username or password are wrong. + Erreur d'authentification : nom d’utilisateur et/ou mot de passe incorrect(s). - - Authentication error: Either username or password are wrong. - Erreur d'authentification : nom d’utilisateur et/ou mot de passe incorrect(s). + + Connection issue + Problème de connexion - - Timeout - Délai d'attente + + No Nextcloud account configured + Aucun compte Nextcloud n'est paramétré - - The provided credentials are not correct - Les informations d'identification fournies ne sont pas correctes + + Please update to the latest server and restart the client. + Veuillez mettre à jour le serveur vers la dernière version et redémarrer le client. - - The configured server for this client is too old - Le serveur configuré pour ce client est trop vieux + + The configured server for this client is too old + Le serveur configuré pour ce client est trop vieux - - Please update to the latest server and restart the client. - Veuillez mettre à jour le serveur vers la dernière version et redémarrer le client. + + The provided credentials are not correct + Les informations d'identification fournies ne sont pas correctes - - Connection issue - Problème de connexion + + Timeout + Délai d'attente - - + + OCC::DiscoveryPhase - - Error while canceling deletion of a file - Erreur lors de l'annulation de la suppression d'un fichier + + Error while canceling deletion of %1 + Erreur lors de l'annulation de la suppression de %1 - - Error while canceling deletion of %1 - Erreur lors de l'annulation de la suppression de %1 + + Error while canceling deletion of a file + Erreur lors de l'annulation de la suppression d'un fichier - - + + OCC::DiscoverySingleDirectoryJob - - - Server error: PROPFIND reply is not XML formatted! - Erreur du serveur : La réponse PROPFIND n'est pas au format XML ! + + Encrypted metadata setup error: initial signature from server is empty. + Erreur de configuration des métadonnées cryptées : la signature initiale du serveur est vide. - - - Encrypted metadata setup error! - Erreur de configuration des métadonnées chiffrées ! + + Encrypted metadata setup error! + Erreur de configuration des métadonnées chiffrées ! - - Encrypted metadata setup error: initial signature from server is empty. - + + Server error: PROPFIND reply is not XML formatted! + Erreur du serveur : La réponse PROPFIND n'est pas au format XML ! - - + + OCC::DiscoverySingleLocalDirectoryJob - - Error while opening directory %1 - Erreur à l’ouverture du dossier %1 + + Directory not accessible on client, permission denied + Dossier non accessible au client, permission refusée - - Directory not accessible on client, permission denied - Dossier non accessible au client, permission refusée + + Directory not found: %1 + Dossier non trouvé : %1 - - Directory not found: %1 - Dossier non trouvé : %1 + + Error while opening directory %1 + Erreur à l’ouverture du dossier %1 - - Filename encoding is not valid - L’encodage du nom de fichier n’est pas valide + + Error while reading directory %1 + Erreur de lecture du dossier %1 - - Error while reading directory %1 - Erreur de lecture du dossier %1 + + Filename encoding is not valid + L’encodage du nom de fichier n’est pas valide - - + + OCC::EditLocallyJob - - Invalid token received. - Jeton invalide reçu. - - - - - - - - - Please try again. - Merci de réessayer. + + An error occurred during data retrieval. + Une erreur est survenue pendant le rapatriement des données. - - Invalid file path was provided. - Un chemin d'accès au fichier invalide a été fourni. + + An error occurred during setup. + Une erreur est survenue pendant la configuration. - - Could not find an account for local editing. - Impossible de trouver un compte pour l'édition locale. + + An error occurred trying to synchronise the file to edit locally. + Une erreur s'est produite lors de la synchronisation du fichier à éditer localement. - - - - - - - - - Could not start editing locally. - Impossible de démarrer l'édition localement. + + An error occurred trying to verify the request to edit locally. + Une erreur est survenue pendant la vérification de la requête d'édition locale. - - An error occurred trying to verify the request to edit locally. - Une erreur est survenue pendant la vérification de la requête d'édition locale. + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + Impossible de trouver le fichier pour l'édition locale. Assurez-vous qu'il n'est pas exclus par un filtre de synchronisation. - - - Could not validate the request to open a file from server. - Impossible de valider la requête pour ouvrir un fichier du serveur. + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + Impossible de trouver le fichier pour l'édition locale. Assurez-vous que le chemin est valide et qu'il est synchronisé localement. - - - Could not find a file for local editing. Make sure its path is valid and it is synced locally. - Impossible de trouver le fichier pour l'édition locale. Assurez-vous que le chemin est valide et qu'il est synchronisé localement. + + Could not find a remote file info for local editing. Make sure its path is valid. + Impossible de trouver une info fichier distante pour l'édition locale. Assurez-vous que son chemin est valide. - - - - - Could not find a file for local editing. Make sure it is not excluded via selective sync. - Impossible de trouver le fichier pour l'édition locale. Assurez-vous qu'il n'est pas exclus par un filtre de synchronisation. + + Could not find an account for local editing. + Impossible de trouver un compte pour l'édition locale. - - - - An error occurred during data retrieval. - Une erreur est survenue pendant le rapatriement des données. + + Could not open %1 + Impossible d'ouvrir %1 - - - An error occurred trying to synchronise the file to edit locally. - Une erreur s'est produite lors de la synchronisation du fichier à éditer localement. + + Could not start editing locally. + Impossible de démarrer l'édition localement. - - An error occurred during setup. - Une erreur est survenue pendant la configuration. + + Could not validate the request to open a file from server. + Impossible de valider la requête pour ouvrir un fichier du serveur. - - Server error: PROPFIND reply is not XML formatted! - Erreur de serveur : La réponse de PROPFIND n'est pas formatée en XML ! + + File %1 already locked. + Fichier %1 déjà verrouillé. - - Could not find a remote file info for local editing. Make sure its path is valid. - Impossible de trouver une info fichier distante pour l'édition locale. Assurez-vous que son chemin est valide. + + File %1 could not be locked. + Impossible de verrouiller le fichier %1. - - Invalid local file path. - Chemin d'accès au fichier local non valide. + + File %1 now locked. + Fichier %1 désormais verrouillé. - - Could not open %1 - Impossible d'ouvrir %1 + + Invalid file path was provided. + Un chemin d'accès au fichier invalide a été fourni. - - File %1 already locked. - Fichier %1 déjà verrouillé. + + Invalid local file path. + Chemin d'accès au fichier local non valide. - - - Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - Le verrouillage durera %1 minutes. Vous pouvez également déverrouiller ce fichier manuellement une fois que vous avez terminé l'édition. + + Invalid token received. + Jeton invalide reçu. - - File %1 now locked. - Fichier %1 désormais verrouillé. + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + Le verrouillage durera %1 minutes. Vous pouvez également déverrouiller ce fichier manuellement une fois que vous avez terminé l'édition. - - File %1 could not be locked. - Impossible de verrouiller le fichier %1. + + Please try again. + Merci de réessayer. - - + + OCC::EncryptFolderJob - - Could not generate the metadata for encryption, Unlocking the folder. + + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. - Impossible de générer les métadonnées pour le chiffrement, déverrouillage du dossier. + Impossible de générer les métadonnées pour le chiffrement, déverrouillage du dossier. Cela peut être un problème avec vos bibliothèques OpenSSL. - - + + OCC::EncryptedFolderMetadataHandler - - - - - - - Error fetching metadata. - Erreur à la récupération des méta-données. + + Error fetching encrypted folder ID. + Erreur dans la récupération de l’ID du dossier chiffré. - - - - Error locking folder. - Erreur de verrouillage du dossier. + + Error fetching metadata. + Erreur à la récupération des méta-données. - - Error fetching encrypted folder ID. - Erreur dans la récupération de l’ID du dossier chiffré. + + Error locking folder. + Erreur de verrouillage du dossier. - - Error parsing or decrypting metadata. - Erreur lors du parsing ou du déchiffrement des métadonnées. + + Error parsing or decrypting metadata. + Erreur lors du parsing ou du déchiffrement des métadonnées. - - Failed to upload metadata - Échec du téléversement des métadonnées + + Failed to upload metadata + Échec du téléversement des métadonnées - - + + OCC::FileDetails - - %1 second(s) ago - seconds elapsed since file last modified - - Il y a %1 seconde - Il y a %1 seconde(s) - + + %1 day(s) ago + + + + Il y a 1 jour(s) + - - %1 minute(s) ago - minutes elapsed since file last modified - - Il y a %1 minute - Il y a %1 minute(s) - + + %1 hour(s) ago + + + + Il y a %1 heure(s) + - - %1 hour(s) ago - hours elapsed since file last modified - - Il y a %1 heure - Il y a %1 heure(s) - + + %1 minute(s) ago + + + + Il y a %1 minute(s) + - - %1 day(s) ago - days elapsed since file last modified - - Il y a %1 jour - Il y a %1 jour(s) - + + %1 month(s) ago + + + + Il y a 1 mois + - - %1 month(s) ago - months elapsed since file last modified - - Il y a %1 mois - Il y a %1 mois - + + %1 second(s) ago + + + + Il y a %1 seconde(s) + - - %1 year(s) ago - years elapsed since file last modified - - Il y a %1 an - Il y a %1 an(s) - + + %1 year(s) ago + + + + Il y a 1 année(s) + - - Locked by %1 - Expires in %2 minute(s) - remaining time before lock expires - - Verrouillé par %1 - Expire dans %2 minute - Verrouillé par %1 - Expire dans %2 minute(s) - - - - + + Locked by %1 - Expires in %2 minute(s) + + + + Verrouillé par %1 - Expire dans %2 minute(s) + + + + OCC::Flow2Auth - - The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - L'URL du sondage ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. + + Could not parse the JSON returned from the server: <br><em>%1</em> + Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> - - - Error returned from the server: <em>%1</em> - Erreur renvoyée par le serveur : <em>%1</em> + + Error returned from the server: <em>%1</em> + Erreur renvoyée par le serveur : <em>%1</em> - - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + L'URL du sondage ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. - - - Could not parse the JSON returned from the server: <br><em>%1</em> - Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> + + The reply from the server did not contain all expected fields + La réponse du serveur ne contient pas tous les champs attendus - - - The reply from the server did not contain all expected fields - La réponse du serveur ne contient pas tous les champs attendus + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + L'URL renvoyée par le serveur ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. - - The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - L'URL renvoyée par le serveur ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. + + There was an error accessing the "token" endpoint: <br><em>%1</em> + Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> - - + + OCC::Flow2AuthWidget - - Unable to open the Browser, please copy the link to your Browser. - Impossible d'ouvrir le navigateur, veuillez copier le lien dans votre navigateur Web. - - - - - Error - Erreur - - - - Waiting for authorization - En attente de l'autorisation - - - - Polling for authorization - En attente de l'autorisation - - - - Starting authorization - Démarrage de l'autorisation + + Link copied to clipboard. + Lien copié dans le presse-papier - - Link copied to clipboard. - Lien copié dans le presse-papier + + Open Browser + Ouvrir le navigateur - - Open Browser - Ouvrir le navigateur + + Polling for authorization + En attente de l'autorisation - - Switch to your browser to connect your account - Basculez sur votre navigateur pour connecter votre compte + + Starting authorization + Démarrage de l'autorisation - Reopen Browser - Rouvrir le navigateur + + Unable to open the Browser, please copy the link to your Browser. + Impossible d'ouvrir le navigateur, veuillez copier le lien dans votre navigateur Web. - - Copy Link - Copier le lien + + Waiting for authorization + En attente de l'autorisation - - + + OCC::Folder - - - Local folder %1 does not exist. - Le dossier local %1 n'existe pas. - - - - %1 should be a folder but is not. - %1 devrait être un dossier mais ne l'est pas. - - - - %1 is not readable. - %1 ne peut pas être lu. - - - %1 and %n other file(s) have been removed. - - %1 a été supprimé. - %1 et %n autres fichiers ont été supprimés. - + + %1 and %n other file(s) are currently locked. + + + + + - - - %1 has been removed. - %1 names a file. - %1 a été supprimé. + + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + + + + - - %1 and %n other file(s) have been added. - - %1 et %n autre fichier ont été ajoutés. - %1 et %n autres fichiers ont été ajoutés. - + + %1 and %n other file(s) have been added. + + + + + - - - %1 has been added. - %1 names a file. - %1 a été ajouté. + + + %1 and %n other file(s) have been removed. + + + + + - - %1 and %n other file(s) have been updated. - - %1 a été mis à jour. - %1 et %n autres fichiers ont été mis à jour. - + + %1 and %n other file(s) have been updated. + + + + + - - %1 has been updated. - %1 names a file. - %1 a été mis à jour. - - - - %1 has been renamed to %2 and %n other file(s) have been renamed. - - %1 a été renommé en %2. - %1 a été renommé en %2 et %n autres fichiers ont été renommés. - + + %1 could not be synced due to an error. See the log for details. + %1 n'a pu être synchronisé pour cause d'erreur. Consultez les logs pour les détails. - - %1 has been renamed to %2. - %1 and %2 name files. - %1 a été renommé en %2. + + %1 has a sync conflict. Please check the conflict file! + %1 a un problème de synchronisation. Merci de vérifier le fichier conflit ! - - %1 has been moved to %2 and %n other file(s) have been moved. - - %1 a été déplacé vers %2. - %1 a été déplacé vers %2 et %n autres fichiers ont été déplacés. - + + %1 has and %n other file(s) have sync conflicts. + + + + + - - %1 has been moved to %2. - %1 a été déplacé vers %2. + + %1 has been added. + %1 a été ajouté. - - %1 has and %n other file(s) have sync conflicts. - - %1 a un conflit de synchronisation. - %1 et %n autres fichiers ont des problèmes de synchronisation. - + + %1 has been moved to %2 and %n other file(s) have been moved. + + + + + - - %1 has a sync conflict. Please check the conflict file! - %1 a un problème de synchronisation. Merci de vérifier le fichier conflit ! - - - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - - %1 ne peut pas être synchronisé en raison d'erreurs. Consultez les logs pour les détails. - %1 et %n autres fichiers n'ont pas pu être synchronisés en raison d'erreurs. Consultez les logs pour les détails. - + + %1 has been moved to %2. + %1 a été déplacé vers %2. - - %1 could not be synced due to an error. See the log for details. - %1 n'a pu être synchronisé pour cause d'erreur. Consultez les logs pour les détails. + + %1 has been removed. + %1 a été supprimé. - - %1 and %n other file(s) are currently locked. - - %1 et %n autre fichier sont verrouillés. - %1 et %n autres fichiers sont verrouillés. - + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + + + + - - %1 is currently locked. - %1 est actuellement verrouillé. + + %1 has been renamed to %2. + %1 a été renommé en %2. - - Sync Activity - Activité de synchronisation + + %1 has been updated. + %1 a été mis à jour. - - Could not read system exclude file - Impossible de lire le fichier d'exclusion du système + + %1 is currently locked. + %1 est actuellement verrouillé. - - A new folder larger than %1 MB has been added: %2. - - Un nouveau dossier de taille supérieure à %1 Mo a été ajouté : %2. - + + %1 is not readable. + %1 ne peut pas être lu. - - A folder from an external storage has been added. - - Un nouveau dossier localisé sur un stockage externe a été ajouté. - - + + %1 should be a folder but is not. + %1 devrait être un dossier mais ne l'est pas. - - Please go in the settings to select it if you wish to download it. - Merci d'aller dans les Paramètres pour indiquer si vous souhaitez le télécharger. + + A folder from an external storage has been added. + Un nouveau dossier localisé sur un stockage externe a été ajouté. - - A folder has surpassed the set folder size limit of %1MB: %2. + + A folder has surpassed the set folder size limit of %1MB: %2. %3 - Un dossier a dépassé la taille limite fixée de %1MB: %2. + Un dossier a dépassé la taille limite fixée de %1MB: %2. %3 - - Keep syncing - Continuer la synchronisation + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + Un grand nombre de fichiers ont été supprimés sur le serveur. +Veuillez confirmer si vous souhaitez procéder à ces suppressions. +Vous pouvez également restaurer tous les fichiers supprimés en les téléchargeant depuis le dossier '%1' vers le serveur. + + + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by downloading them from the server. + Un grand nombre de fichiers de votre dossier local "%1" ont été supprimés. +Veuillez confirmer si vous souhaitez procéder à ces suppressions. +Vous pouvez également restaurer tous les fichiers supprimés en les téléchargeant depuis le serveur. + + + + A new folder larger than %1 MB has been added: %2. + Un nouveau dossier de taille supérieure à %1 Mo a été ajouté : %2. - - Stop syncing - Arrêter la synchronisation + All files in the local folder "%1" were deleted. + +If you restore the files, they will be downloaded again from the server. + "Tous les fichiers du dossier local "%1" ont été supprimés. + +Si vous restaurez les fichiers, ils seront à nouveau téléchargés depuis le serveur. " - - The folder %1 has surpassed the set folder size limit of %2MB. - Le dossier %1 a dépassé la taille limite fixée de %2MB. + All files in the server folder "%1" were deleted. + +If you restore the files, they will be uploaded again to the server. + "Tous les fichiers du dossier "%1" du serveur ont été supprimés. + +Si vous restaurez les fichiers, ils seront à nouveau téléchargés sur le serveur." - - Would you like to stop syncing this folder? - Voulez vous arrêter la synchronisation de ce dossier ? + All files in the sync folder "%1" folder were deleted on the server. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. +If you decide to restore the files, they will be re-synced with the server if you have rights to do so. +If you decide to delete the files, they will be unavailable to you, unless you are the owner. + Tous les fichiers du dossier de synchronisation "%1" ont été supprimés sur le serveur. +Ces suppressions seront synchronisées avec votre dossier local, ce qui rendra les fichiers non disponibles à moins que vous ayez les droits de les restaurer. +Si vous décidez de garder ces fichiers, ils seront resynchronisés avec le serveur si vous avez les droits pour le faire. +Si vous décidez de supprimer ces fichiers, ils ne vous seront plus accessibles à moins que vous en soyez le propriétaire. - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. - Le dossier %1 a été créé mais il était exclu de la synchronisation auparavant. Les données qu'il contient ne seront pas synchronisées. + All files in the sync folder "%1" folder were deleted on the server. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. +If you decide to restore the files, they will be re-synced with the server if you have rights to do so. +If you decide to delete the files, they will be unavailable to you, unless you are the owner. + Tous les fichiers du dossier de synchronisation "%1" ont été supprimés sur le serveur. +Ces suppressions seront synchronisées avec votre dossier de synchronisation local, ce qui rendra ces fichiers indisponibles à moins que vous n'ayez le droit de les restaurer. +Si vous décidez de restaurer les fichiers, ils seront resynchronisés avec le serveur si vous en avez le droit. +Si vous décidez de supprimer les fichiers, ils seront indisponibles pour vous, à moins que vous n'en soyez le propriétaire. - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. - Le fichier %1 a été créé mais il était exclu de la synchronisation auparavant. Il ne sera pas synchronisé. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. +Are you sure you want to sync those actions with the server? +If this was an accident and you decide to keep your files, they will be re-synced from the server. + Tous les fichiers contenus dans le dossier synchronisé "%1" ont été supprimés. Ces suppressions seront synchronisées avec votre serveur, rendant ces fichiers inaccessibles sauf s'ils sont restaurés ultérieurement. +Êtes-vous sûr de vouloir synchroniser ces actions avec le serveur ? +S'il s'agissait d'un accident et que vous choisissiez de conserver vos fichiers, ils seront synchronisés à nouveau depuis le serveur. - - Changes in synchronized folders could not be tracked reliably. + + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). %1 - Les modifications apportées aux dossiers synchronisés ne peuvent pas être suivies de manière fiable. + Les modifications apportées aux dossiers synchronisés ne peuvent pas être suivies de manière fiable. -Cela signifie que le client de synchronisation ne va pas téléverser immédiatement les modifications locales, mais va à la place rechercher et téléverser les modifications locales qu'occasionnellement (toutes les deux heures par défaut). +Cela signifie que le client de synchronisation ne va pas téléverser immédiatement les modifications locales, mais va à la place rechercher et téléverser les modifications locales qu'occasionnellement (toutes les deux heures par défaut). %1 - - Virtual file download failed with code "%1", status "%2" and error message "%3" - Le téléchargement du fichier virtuel a échoué avec le code « %1 », état « %2 » et le message d'erreur « %3 » + + Could not read system exclude file + Impossible de lire le fichier d'exclusion du système - - A large number of files in the server have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. - + Keep files + Conserver les fichiers - - A large number of files in your local '%1' folder have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by downloading them from the server. - + + Keep syncing + Continuer la synchronisation - - Proceed with Deletion - + + Local folder %1 does not exist. + Le dossier local %1 n'existe pas. - - Restore Files to Server - + + Please go in the settings to select it if you wish to download it. + Merci d'aller dans les Paramètres pour indiquer si vous souhaitez le télécharger. - - Restore Files from Server - + Proceed to remove all files + Confirmer la suppression de tous les fichiers - All files in the server folder "%1" were deleted. - -If you restore the files, they will be uploaded again to the server. - "Tous les fichiers du dossier ""%1"" du serveur ont été supprimés. - -Si vous restaurez les fichiers, ils seront à nouveau téléchargés sur le serveur." - + + Proceed with Deletion + Procéder à la suppression - All files in the local folder "%1" were deleted. - -If you restore the files, they will be downloaded again from the server. - "Tous les fichiers du dossier local ""%1"" ont été supprimés. - -Si vous restaurez les fichiers, ils seront à nouveau téléchargés depuis le serveur. " - + Remove all files + Retirer tous les fichiers - - Remove all files? - Supprimer tous les fichiers ? + + Remove all files? + Supprimer tous les fichiers ? - Proceed to remove all files - Confirmer la suppression de tous les fichiers + Restore files + Restaurer les fichiers - Restore files - Restaurer les fichiers + + Restore Files from Server + Restaurer des fichiers à partir du serveur - All files in the sync folder "%1" folder were deleted on the server. -These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. -If you decide to restore the files, they will be re-synced with the server if you have rights to do so. -If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Tous les fichiers du dossier de synchronisation "%1" ont été supprimés sur le serveur. -Ces suppressions seront synchronisées avec votre dossier local, ce qui rendra les fichiers non disponibles à moins que vous ayez les droits de les restaurer. -Si vous décidez de garder ces fichiers, ils seront resynchronisés avec le serveur si vous avez les droits pour le faire. -Si vous décidez de supprimer ces fichiers, ils ne vous seront plus accessibles à moins que vous en soyez le propriétaire. + + Restore Files to Server + Restaurer les fichiers sur le serveur - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. -Are you sure you want to sync those actions with the server? -If this was an accident and you decide to keep your files, they will be re-synced from the server. - Tous les fichiers contenus dans le dossier synchronisé "%1" ont été supprimés. Ces suppressions seront synchronisées avec votre serveur, rendant ces fichiers inaccessibles sauf s'ils sont restaurés ultérieurement. -Êtes-vous sûr de vouloir synchroniser ces actions avec le serveur ? -S'il s'agissait d'un accident et que vous choisissiez de conserver vos fichiers, ils seront synchronisés à nouveau depuis le serveur. + + Stop syncing + Arrêter la synchronisation - Remove All Files? - Retirer tous les fichiers ? + + Sync Activity + Activité de synchronisation - Remove all files - Retirer tous les fichiers + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + Le fichier %1 a été créé mais il était exclu de la synchronisation auparavant. Il ne sera pas synchronisé. - Keep files - Conserver les fichiers + + The folder %1 has surpassed the set folder size limit of %2MB. + Le dossier %1 a dépassé la taille limite fixée de %2MB. + + + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + Le dossier %1 a été créé mais il était exclu de la synchronisation auparavant. Les données qu'il contient ne seront pas synchronisées. - - - OCC::FolderCreationDialog - - Create new folder - Créer un nouveau dossier + + Virtual file download failed with code "%1", status "%2" and error message "%3" + Le téléchargement du fichier virtuel a échoué avec le code « %1 », état « %2 » et le message d'erreur « %3 » - - Enter folder name - Saisissez le nom du dossier + + Would you like to stop syncing this folder? + Voulez vous arrêter la synchronisation de ce dossier ? + + + OCC::FolderCreationDialog - - Folder already exists - Le dossier existe déjà + + %1 Create new folder + %1 Créer un nouveau dossier - - %1 Create new folder - %1 Créer un nouveau dossier + + Could not create a folder! Check your write permissions. + Impossible de créer le dossier ! Veuillez vérifier vos permissions d’écriture. - - Error - Erreur + + Enter folder name + Saisissez le nom du dossier - - Could not create a folder! Check your write permissions. - Impossible de créer le dossier ! Veuillez vérifier vos permissions d’écriture. + + Folder already exists + Le dossier existe déjà - - + + OCC::FolderMan - - Could not reset folder state - Impossible de réinitialiser l'état du dossier + + (backup %1) + (sauvegarde %1) - - An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. - Un ancien fichier journal "%1" a été trouvé, mais ne peut être supprimé. Veuillez vous assurer qu’aucune application ne l'utilise en ce moment. + + (backup) + (sauvegarde) - - (backup) - (sauvegarde) + + %1 (Sync is paused) + %1 (Synchronisation en pause) - - (backup %1) - (sauvegarde %1) + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + Un ancien fichier journal "%1" a été trouvé, mais ne peut être supprimé. Veuillez vous assurer qu’aucune application ne l'utilise en ce moment. - - Undefined state. - Statut indéfini. + + Could not reset folder state + Impossible de réinitialiser l'état du dossier - - Waiting to start syncing. - En attente de synchronisation. + + Last sync was successful. + Synchronisation terminée avec succès - - Preparing for sync. - Préparation de la synchronisation. + + No valid folder selected! + Aucun dossier valable sélectionné ! - - Sync is running. - Synchronisation en cours + + Preparing for sync. + Préparation de la synchronisation. - - Sync finished with unresolved conflicts. - Synchronisation terminée avec des conflits non résolus. + + Setup error. + Erreur de paramétrage. - - Last sync was successful. - Synchronisation terminée avec succès + + Sync finished with unresolved conflicts. + Synchronisation terminée avec des conflits non résolus. - - Setup error. - Erreur de paramétrage. + + Sync is paused. + La synchronisation est en pause. - - Sync request was cancelled. - La requête de synchronisation a été annulée. + + Sync is running. + Synchronisation en cours - - Sync is paused. - La synchronisation est en pause. + + Sync request was cancelled. + La requête de synchronisation a été annulée. - - %1 (Sync is paused) - %1 (Synchronisation en pause) + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + Le dossier local %1 contient un dossier déjà utilisé pour une synchronisation de dossiers. Veuillez en choisir un autre ! - - No valid folder selected! - Aucun dossier valable sélectionné ! + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + Le dossier local %1 se trouve dans un dossier déjà configuré pour une synchronisation de dossier. Veuillez en choisir un autre ! - - The selected path does not exist! - Le chemin sélectionné n'existe pas ! + + The selected path does not exist! + Le chemin sélectionné n'existe pas ! - - The selected path is not a folder! - Le chemin sélectionné n'est pas un dossier ! + + The selected path is not a folder! + Le chemin sélectionné n'est pas un dossier ! - - - You have no permission to write to the selected folder! - Vous n'avez pas la permission d'écrire dans le dossier sélectionné ! + + There is already a sync from the server to this local folder. Please pick another local folder! + Il y a déjà une synchronisation depuis le serveur vers ce dossier local. Merci de choisir un autre dossier local ! - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! - Le dossier local %1 contient un dossier déjà utilisé pour une synchronisation de dossiers. Veuillez en choisir un autre ! + + Undefined state. + Statut indéfini. - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! - Le dossier local %1 se trouve dans un dossier déjà configuré pour une synchronisation de dossier. Veuillez en choisir un autre ! + + Waiting to start syncing. + En attente de synchronisation. - - There is already a sync from the server to this local folder. Please pick another local folder! - Il y a déjà une synchronisation depuis le serveur vers ce dossier local. Merci de choisir un autre dossier local ! + + You have no permission to write to the selected folder! + Vous n'avez pas la permission d'écrire dans le dossier sélectionné ! - - + + OCC::FolderStatusDelegate - Add Folder Sync Connection - Ajouter une synchronisation de dossier - - - - Add Folder Sync - Ajouter une synchronisation de dossiers + + Add live backup + Ajouter une sauvegarde en temps réel - - Synchronize any other local folder with your %1 - Synchronisez n’importe quel autre dossier local avec votre %1 + + File + Fichier - - File - Fichier + + Synchronize any other local folder with your %1 + Synchronisez n’importe quel autre dossier local avec votre %1 - - + + OCC::FolderStatusModel - - You need to be connected to add a folder - Vous devez être connecté pour ajouter un dossier - - - - Click this button to add a folder to synchronize. - Cliquez ce bouton pour ajouter un dossier à synchroniser. - - - - Could not decrypt! - Déchiffrage impossible ! + + , + , - - - %1 (%2) - %1 (%2) + + %1 (%2) + %1 (%2) - - Error while loading the list of folders from the server. - Une erreur est survenue lors du chargement de la liste des dossiers depuis le serveur. + + %1 %2 + %1 %2 - - Fetching folder list from server … - Récupération de la liste des dossiers depuis le serveur... + + %1 %2 (%3 of %4) + %1 %2 (%3 sur %4) - - There are unresolved conflicts. Click for details. - Il y a des conflits non résolus. Cliquez pour plus de détails. + + %1 of %2, file %3 of %4 + %1 sur %2, fichier %3 sur %4 - - Virtual file support is enabled. - Support des fichiers virtuels activé. + + %5 left, %1 of %2, file %3 of %4 + %5 restantes, %1 sur %2, fichier %3 sur %4 - - Signed out - Session fermée + + ↑ %1/s + ↑ %1/s - - Synchronizing VirtualFiles with local folder - Synchronisation des fichiers virtuels avec le dossier local + + ↓ %1/s + ↓ %1/s - - Synchronizing with local folder - Synchronisation avec le dossier local + + A few seconds left, %1 of %2, file %3 of %4 + Quelques secondes restantes, %1 de %2, fichier %3 parmi %4 - - Checking for changes in remote "%1" - Vérification des modifications dans "%1" distant + + Checking for changes in local "%1" + Vérification des modifications dans "%1" local - - Checking for changes in local "%1" - Vérification des modifications dans "%1" local + + Checking for changes in remote "%1" + Vérification des modifications dans "%1" distant - - Reconciling changes - Rapprochement des modifications + + Click this button to add a folder to synchronize. + Cliquez ce bouton pour ajouter un dossier à synchroniser. - - Syncing %1 - Example text: "Syncing 'foo.txt', 'bar.txt'" - Synchronisation de %1 + + Could not decrypt! + Déchiffrage impossible ! - - - , - , + + download %1/s + réception %1/s - - download %1/s - Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) - réception %1/s + + Error while loading the list of folders from the server. + Une erreur est survenue lors du chargement de la liste des dossiers depuis le serveur. - - ↓ %1/s - ↓ %1/s + + Fetching folder list from server … + Récupération de la liste des dossiers depuis le serveur... - - upload %1/s - Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) - Envoi %1/s + + file %1 of %2 + fichier %1 sur %2 - - ↑ %1/s - ↑ %1/s + + Preparing to sync … + Préparation de la synchronisation ... - - %1 %2 (%3 of %4) - Example text: "uploading foobar.png (2MB of 2MB)" - %1 %2 (%3 sur %4) + + Reconciling changes + Rapprochement des modifications - - %1 %2 - Example text: "uploading foobar.png" - %1 %2 + + Synchronizing VirtualFiles with local folder + Synchronisation des fichiers virtuels avec le dossier local - - A few seconds left, %1 of %2, file %3 of %4 - Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" - Quelques secondes restantes, %1 de %2, fichier %3 parmi %4 + + Synchronizing with local folder + Synchronisation avec le dossier local - - %5 left, %1 of %2, file %3 of %4 - %5 restantes, %1 sur %2, fichier %3 sur %4 + + There are unresolved conflicts. Click for details. + Il y a des conflits non résolus. Cliquez pour plus de détails. - - %1 of %2, file %3 of %4 - Example text: "12 MB of 345 MB, file 6 of 7" - %1 sur %2, fichier %3 sur %4 + + upload %1/s + Envoi %1/s - - file %1 of %2 - fichier %1 sur %2 + + Virtual file support is enabled. + Support des fichiers virtuels activé. - - Waiting … - En attente ... + + Waiting … + En attente ... - - Waiting for %n other folder(s) … - - En attente de %n autre dossier ... - En attente de %n autres dossiers ... - + + Waiting for %n other folder(s) … + + + + + - - Preparing to sync … - Préparation de la synchronisation ... + + You need to be connected to add a folder + Vous devez être connecté pour ajouter un dossier - - + + OCC::FolderWatcher - - The watcher did not receive a test notification. - L'observateur n'a pas reçu de notification de test. + + The watcher did not receive a test notification. + L'observateur n'a pas reçu de notification de test. - - + + OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. - Ce problème survient généralement lorsque les points de surveillance inotify sont épuisés. Consultez la FAQ pour plus de détails. + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + Ce problème survient généralement lorsque les points de surveillance inotify sont épuisés. Consultez la FAQ pour plus de détails. - - + + OCC::FolderWizard - - Add Folder Sync Connection - Ajouter une synchronisation de dossier + Add Folder Sync Connection + Ajouter une synchronisation de dossier - - Add Sync Connection - Ajouter la synchronisation + + Add Sync Connection + Ajouter la synchronisation - - + + OCC::FolderWizardLocalPath - - Click to select a local folder to sync. - Cliquez pour choisir un dossier local à synchroniser. + + Choose + Choisissez - - Enter the path to the local folder. - Entrez le chemin du dossier local. + + Click to select a local folder to sync. + Cliquez pour choisir un dossier local à synchroniser. - - Select the source folder - Sélectionnez le dossier source + + Enter the path to the local folder. + Entrez le chemin du dossier local. - - Add Folder Sync - Ajouter une synchronisation de dossiers + + Select the source folder + Sélectionnez le dossier source + + + OCC::FolderWizardRemotePath - - Step 1 of 3: Select local folder - Étape 1 sur 3 : sélectionner un dossier local + + Authentication failed accessing %1 + Erreur d'authentification lors de l'accès à %1 - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés + + Choose this to sync the entire account + Sélectionnez ceci pour synchroniser l'ensemble du compte - - Choose - Choisir + + Create Remote Folder + Créer un dossier distant - - - OCC::FolderWizardRemotePath - - Create Remote Folder - Créer un dossier distant + + Enter the name of the new folder to be created below "%1": + Entrez le nom du nouveau dossier à créer dans "%1" : - - Enter the name of the new folder to be created below "%1": - Entrez le nom du nouveau dossier à créer dans "%1" : + + Failed to create the folder on %1. Please check manually. + Échec à la création du dossier sur %1. Veuillez vérifier manuellement. - - Folder was successfully created on %1. - Le dossier a été créé sur %1 + + Failed to list a folder. Error: %1 + Impossible de lister un dossier. Erreur : %1 - - Authentication failed accessing %1 - Erreur d'authentification lors de l'accès à %1 + + Folder was successfully created on %1. + Le dossier a été créé sur %1 - - Failed to create the folder on %1. Please check manually. - Échec à la création du dossier sur %1. Veuillez vérifier manuellement. + + This folder is already being synced. + Ce dossier est déjà en cours de synchronisation. - - Failed to list a folder. Error: %1 - Impossible de lister un dossier. Erreur : %1 + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + Vous synchronisez déjà <i>%1</i> qui est un dossier parent de <i>%2</i>. - - Choose this to sync the entire account - Sélectionnez ceci pour synchroniser l'ensemble du compte + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + Vous synchronisez déjà <i>%1</i> qui est un sous-dossier de <i>%2</i>. + + + OCC::FolderWizardSelectiveSync - - This folder is already being synced. - Ce dossier est déjà en cours de synchronisation. + + Use virtual files instead of downloading content immediately %1 + Utiliser les fichiers virtuels - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - Vous synchronisez déjà <i>%1</i> qui est un dossier parent de <i>%2</i>. + + Virtual files are not available for the selected folder + Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné - - You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - Vous synchronisez déjà <i>%1</i> qui est un sous-dossier de <i>%2</i>. + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Vous ne pouvez pas définir la racine d'une partition Windows pour votre dossier local. Veuillez choisir un (sous)dossier de la partition. + + + OCC::FormatWarningsWizardPage - - Add Folder Sync - Ajouter une synchronisation de dossiers + + %1 + %1 - - Step 2 of 3: Directory in your %1 - Étape 2 sur 3 : répertoire dans votre %1 + <b>Warning:</b> + <b>Avertissement :</b> - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - À présent, sélectionnez ou créez dans votre %1 un dossier cible dans lequel le contenu doit être importé et synchronisé. + <b>Warning:</b> %1 + <b>Avertissement :</b> %1 + + + OCC::GETFileJob - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. + + Connection Timeout + Délai d'attente de connexion dépassé - - Refresh - Rafraîchir + + No E-Tag received from server, check Proxy/Gateway + Aucun E-Tag reçu du serveur, vérifiez le proxy / la passerelle - - Create folder - Créer un dossier + + Server returned wrong content-range + Le serveur a retourné une gamme de contenu erronée - - - OCC::FolderWizardSelectiveSync - - - Use virtual files instead of downloading content immediately %1 - Utiliser les fichiers virtuels + + We received a different E-Tag for resuming. Retrying next time. + Nous avons reçu un E-Tag différent pour reprendre le téléchargement. Nouvel essai la prochaine fois. - - - (experimental) - (expérimental) + + We received an unexpected download Content-Length. + Nous avons reçu un téléchargement de Contenu-Longeur inattendu + + + OCC::GeneralSettings - - Add Folder Sync - Ajouter une synchronisation de dossiers + + &Analysis data collection for needs-based design + &Collecte des données d’analyse pour une conception basée sur les besoins - - Step 3 of 3: Selektive Synchronisation - Étape 3 sur 3 : synchronisation sélective + + &Automatically check for updates + &Vérifier automatiquement les nouvelles mises à jour - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Vous ne pouvez pas définir la racine d'une partition Windows pour votre dossier local. Veuillez choisir un (sous)dossier de la partition. + &Channel + &Canal - - Virtual files are not available for the selected folder - Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné + &Check for Update now + &Vérifier la présence de mises à jour maintenant - - - OCC::FormatWarningsWizardPage - <b>Warning:</b> %1 - <b>Avertissement :</b> %1 + + &Launch on system startup + &Lancer au démarrage du système - <b>Warning:</b> - <b>Avertissement :</b> + + &Restart && Update + Redémarrer et Mettre à jour - - %1 - %1 + About + À propos - - - OCC::GETFileJob - - No E-Tag received from server, check Proxy/Gateway - Aucun E-Tag reçu du serveur, vérifiez le proxy / la passerelle + + Ask for confirmation before + synchronizing new folders larger than + Demander une confirmation avant de synchroniser de nouveaux dossiers plus volumineux que - - We received a different E-Tag for resuming. Retrying next time. - Nous avons reçu un E-Tag différent pour reprendre le téléchargement. Nouvel essai la prochaine fois. + + Ask for confirmation before synchronizing + external storages + Demander une confirmation avant de synchroniser des fichiers externes - - We received an unexpected download Content-Length. - Nous avons reçu un téléchargement de Contenu-Longeur inattendu + Ask for confirmation before synchronizing external storages + Confirmation avant de synchroniser des stockages externes - - Server returned wrong content-range - Le serveur a retourné une gamme de contenu erronée + Ask for confirmation before synchronizing folders larger than + Demander confirmation avant de synchroniser les dossiers de taille supérieure à - - Connection Timeout - Délai d'attente de connexion dépassé + Ask for confirmation before synchronizing new folders larger than + Demander la confirmation avant de synchroniser les dossiers plus grands que - - - OCC::GeneralSettings - - Advanced - Avancés + + Automatically disable synchronisation of + folders that overcome limit + Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite fixée - About - À propos + Automatically disable synchronisation of folders that overcome limit + Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite - Ask for confirmation before synchronizing new folders larger than - Demander la confirmation avant de synchroniser les dossiers plus grands que + + beta + bêta - Legal notice - Notice légale + + Change update channel + Changer de canal de mise à jour - MB - Trailing part of "Ask confirmation before syncing folder larger than" - Mo + + Change update channel? + Changer de canal de mise à jour ? - Use &Monochrome Icons - Utiliser les icônes &monochromes + + Check Now + Vérifier maintenant - &Launch on System Startup - &Lancer au démarrage du système + + Create Debug Archive + Créer l’archive de débogage - Show Server &Notifications - Afficher les &notifications serveur + + Data Protection + Protection des données - Notify when synchronised folders grow larger than specified limit - Notifier quand des dossiers synchronisés deviennent plus grand que la limite spécifiée + + Debug Archive Created + Archive de déboggage créée - Show Call Notifications - Afficher les notifications des appels + + Debug archive is created at %1 + Archive de déboggage créée à %1 - - Updates - Mises à jour + + Desktop client x.x.x + Client de bureau x.x.x - &Automatically check for Updates - &Vérifier automatiquement la présence de nouvelles mises à jour + + Edit &Ignored Files + Modifier les fichiers exclus - Automatically disable synchronisation of folders that overcome limit - Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite + + For System Tray + Pour la zone de notification système - &Channel - Canal + + General Settings + Paramètres généraux - Ask for confirmation before synchronizing external storages - Confirmation avant de synchroniser des stockages externes + Info + Informations - - Move removed files to trash - Déplacer les fichiers supprimés vers la corbeille + + Legal Notice + Mentions légales - Show sync folders in &Explorer's navigation pane - Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers + MB + Mo - - S&how crash reporter - Affic&her le rapport d'incident + + More Information + Plus d’informations - - Edit &Ignored Files - Modifier les fichiers exclus + + Move removed files to trash + Déplacer les fichiers supprimés vers la corbeille - - - Create Debug Archive - Créer l’archive de débogage + + Notify when synchronised folders grow + larger than specified limit + Notifier lorsque les dossiers synchronisés dépassent la limite spécifiée. - &Check for Update now - &Vérifier la présence de mises à jour maintenant + Notify when synchronised folders grow larger than specified limit + Notifier quand des dossiers synchronisés deviennent plus grand que la limite spécifiée - Info - Informations + + Open Source Software + Logiciel libre - Ask for confirmation before synchronizing folders larger than - Demander confirmation avant de synchroniser les dossiers de taille supérieure à + + Privacy Policy + Politique de confidentialité - - Desktop client x.x.x - Client de bureau x.x.x + + S&how crash reporter + Affic&her le rapport d'incident - - Update channel - Canal de mise à jour + + Server notifications that require attention. + Les notifications du serveur requérant votre attention. - - Ask for confirmation before - synchronizing new folders larger than - - + + Show call notification dialogs. + Montre les fenêtres de notification d'appel. - - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MO -Dernière partie de « Demander confirmation avant de synchroniser un dossier plus grand que » - + + Show call notifications + Afficher les notifications des appels - - Notify when synchronised folders grow - larger than specified limit - - + + Show server &notifications + Afficher les &notifications serveur - - Automatically disable synchronisation of - folders that overcome limit - - + + Show sync folders in &Explorer's navigation + pane + Afficher les dossiers de synchronisation dans le volet de navigation de &Explorer - - Ask for confirmation before synchronizing - external storages - - + Show sync folders in &Explorer's Navigation Pane + Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers - - Show sync folders in &Explorer's navigation - pane - - + + stable + stable - - Data Protection - Protection des données + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + +Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. + Le canal de mise à jour détermine quelles mises à jour du client seront proposées pour l'installation. Le canal "stable" ne contient que les mises à jour considérées comme fiables, tandis que les versions du canal "bêta" peuvent contenir des fonctionnalités plus récentes et des corrections de bogues, mais n'ont pas encore été testées de manière approfondie. + +Notez que cela ne permet seulement que de sélectionner où sont récupérées les mises à jour et qu'il n'y a pas de possibilité de rétrograder : ainsi, le retour du canal "bêta" au canal "stable" ne peut généralement pas être fait immédiatement, et implique d'attendre une version stable plus récente que la version bêta actuellement installée. - - &Analysis data collection for needs-based design - &Collecte des données d’analyse pour une conception basée sur les besoins + + Update channel + Canal de mise à jour - - Privacy Policy - Politique de confidentialité + + Updates + Mises à jour - - Open Source Software - Logiciel libre + + Usage Documentation + Documentation d'utilisation - - - stable - stable + + Use &monochrome icons + Utiliser les icônes &monochromes - - - beta - bêta + + You cannot disable autostart because system-wide autostart is enabled. + Vous ne pouvez pas désactiver le démarrage automatique parce que le démarrage automatique à l'échelle du système est activé. - - &Restart && Update - Redémarrer et Mettre à jour + + Zip Archives + Archives Zip + + + OCC::GetOrCreatePublicLinkShare - - More Information - Plus d’informations + + Could not retrieve or create the public link share. Error: + +%1 + Impossible de récupérer ou de créer le lien public pour le partage. + +%1 - Show sync folders in &Explorer's Navigation Pane - Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers + + Password for share required + Mot de passe requis - - &Automatically check for updates - &Vérifier automatiquement les nouvelles mises à jour + + Please enter a password for your link share: + Veuillez saisir un mot de passe pour votre lien partagé : - - Check Now - Vérifier maintenant + + Sharing error + Erreur de partage + + + OCC::HttpCredentialsGui - - Usage Documentation - Documentation d'utilisation + + <a href="%1">Click here</a> to request an app password from the web interface. + <a href="%1">Cliquez ici</a> pour demander un mot de passe d'application depuis l'interface web. - - Legal Notice - Mentions légales + + Enter Password + Saisissez le mot de passe - - General Settings - Paramètres généraux + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + Merci de saisir %1 mot de passe :<br><br>Identifiant : %2<br>Compte : %3<br> - - For System Tray - Pour la zone de notification système + + Reading from keychain failed with error: "%1" + La lecture à partir du trousseau a échoué avec l'erreur : "%1" + + + OCC::IgnoreListEditor - - Use &monochrome icons - Utiliser les icônes &monochromes + + Files Ignored by Patterns + Fichiers exclus sur motif de nom - - &Launch on system startup - &Lancer au démarrage du système + + Global Ignore Settings + Paramètres globaux d'exclusion - - Show server &notifications - Afficher les &notifications serveur + + Ignored Files Editor + Éditeur d'exclusion de fichiers - - Show call notifications - Afficher les notifications des appels + + Sync hidden files + Synchroniser les fichiers masqués - - Server notifications that require attention. - Les notifications du serveur requérant votre attention. + + This entry is provided by the system at "%1" and cannot be modified in this view. + Cette entrée est fournie par le système dans "%1" et ne peut être modifiée dans cette vue. + + + OCC::IgnoreListTableWidget - - Show call notification dialogs. - Montre les fenêtres de notification d'appel. + + Add + Ajouter - - You cannot disable autostart because system-wide autostart is enabled. - Vous ne pouvez pas désactiver le démarrage automatique parce que le démarrage automatique à l'échelle du système est activé. + Add a new ignore pattern: + Ajouter un nouveau motif d'exclusion : - - Change update channel? - Changer de canal de mise à jour ? + Add Ignore Pattern + Ajouter un motif d'exclusion - - The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. - -Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. - Le canal de mise à jour détermine quelles mises à jour du client seront proposées pour l'installation. Le canal "stable" ne contient que les mises à jour considérées comme fiables, tandis que les versions du canal "bêta" peuvent contenir des fonctionnalités plus récentes et des corrections de bogues, mais n'ont pas encore été testées de manière approfondie. - -Notez que cela ne permet seulement que de sélectionner où sont récupérées les mises à jour et qu'il n'y a pas de possibilité de rétrograder : ainsi, le retour du canal "bêta" au canal "stable" ne peut généralement pas être fait immédiatement, et implique d'attendre une version stable plus récente que la version bêta actuellement installée. + + Add New Ignore Pattern + Ajouter nouveau Ignorer le modèle - - Change update channel - Changer de canal de mise à jour + + Allow Deletion + Autoriser la suppression - - Cancel - Annuler + + Cannot write changes to "%1". + Impossible d'écrire les modifications sur "%1". - - Zip Archives - Archives Zip + + Could not open file + Impossible d'ouvrir le fichier - - Debug Archive Created - Archive de déboggage créée + Files or folders matching a pattern will not be synchronized. + +Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. + Les fichiers ou dossiers correspondant à un motif ne seront pas synchronisés. +Les éléments ayant l'option « Autoriser la suppression » pourront être supprimés pour ne pas bloquer la suppression d'un dossier. Utile pour les méta-données. - - Debug archive is created at %1 - Archive de déboggage créée à %1 + + Files or folders that match this pattern will not be synchronized. + +Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. + Les fichiers ou dossiers qui correspondent à ce modèle ne seront pas synchronisés. + +Les objets autorisés à être supprimés le seront s'ils empêchent la suppression d'un dossier. Ceci est utile pour les métadonnées. - - - OCC::GetOrCreatePublicLinkShare - - Password for share required - Mot de passe requis + + Ignore Pattern + Ignorer le modèle - - Please enter a password for your link share: - Veuillez saisir un mot de passe pour votre lien partagé : + + Pattern + Motif - - Sharing error - Erreur de partage + + Remove + Supprimer - - Could not retrieve or create the public link share. Error: - -%1 - Impossible de récupérer ou de créer le lien public pour le partage. - -%1 + + Remove all + Supprimer tout - - - OCC::HttpCredentialsGui + + + OCC::InvalidFilenameDialog - - Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - Merci de saisir %1 mot de passe :<br><br>Identifiant : %2<br>Compte : %3<br> + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + Impossible de renommer le fichier parce qu'un fichier avec le même nom existe déjà sur le serveur. Merci de choisir un autre nom. - - Reading from keychain failed with error: "%1" - La lecture à partir du trousseau a échoué avec l'erreur : "%1" + + Checking rename permissions … + Vérification des permissions de renommage... - - Enter Password - Saisissez le mot de passe + + Could not rename local file. %1 + Impossible de renommer le dossier local %1 - - <a href="%1">Click here</a> to request an app password from the web interface. - <a href="%1">Cliquez ici</a> pour demander un mot de passe d'application depuis l'interface web. + + Invalid filename + Nom de fichier invalide - - - OCC::IgnoreListEditor - - Ignored Files Editor - Éditeur d'exclusion de fichiers + + Please enter a new name for the file: + Veuillez saisir le nouveau nom du fichier : - - Global Ignore Settings - Paramètres globaux d'exclusion + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + Le fichier "%1" n'a pas pu être synchronisé car son nom contient des caractères qui ne sont pas autorisés sur ce système. - - Sync hidden files - Synchroniser les fichiers masqués + + The file could not be synced because it contains characters which are not allowed on this system. + Le fichier n'a pas pu être synchronisé parce qu'il contiens des caractères invalides ou non-supportés par votre système. - - Files Ignored by Patterns - Fichiers exclus sur motif de nom + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + Les caractères suivants ne sont pas autorisés dans les noms de fichier sur ce système : * " | & ? , ; : \ / ~ < > espaces en début et fin de chaîne + + + OCC::LegalNotice - - This entry is provided by the system at "%1" and cannot be modified in this view. - Cette entrée est fournie par le système dans "%1" et ne peut être modifiée dans cette vue. + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - - - OCC::IgnoreListTableWidget - - Pattern - Motif + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + <p>Sous licence GNU General Public License (GPL) Version 2.0 ou supérieure.</p> - - Allow Deletion - Autoriser la suppression + Legal notice + Notice légale + + + OCC::LogBrowser - - Add - Ajouter + + Enable logging to temporary folder + Activer la journalisation dans le dossier temporaire - - Remove - Supprimer + + Log Output + Consigner la sortie dans des fichiers de log - - Remove all - Supprimer tout + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. +Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. +If enabled, logs will be written to %1 + Le client peut écrire des fichiers de log pour le déboguage dans un dossier temporaire. Ces logs sont très utiles pour diagnostiquer les problèmes. +Comme ces fichiers de log peuvent devenir lourds, le client en commence un nouveau à chaque synchronisation et compresse les anciens. Il supprime aussi les logs après quelques heures pour économiser l'espace disque. +Si activés, les logs seront écrits dans %1 - Files or folders matching a pattern will not be synchronized. - -Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Les fichiers ou dossiers correspondant à un motif ne seront pas synchronisés. -Les éléments ayant l'option « Autoriser la suppression » pourront être supprimés pour ne pas bloquer la suppression d'un dossier. Utile pour les méta-données. + + This setting persists across client restarts. +Note that using any logging command line options will override this setting. + Ce paramètre persiste lors des redémarrages du client. +Notez que l'utilisation de toute option de ligne de commande de journalisation remplacera ce paramètre. + + + OCC::Logger - - Files or folders that match this pattern will not be synchronized. - -Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - Les fichiers ou dossiers qui correspondent à ce modèle ne seront pas synchronisés. - -Les objets autorisés à être supprimés le seront s'ils empêchent la suppression d'un dossier. Ceci est utile pour les métadonnées. - + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + <nobr>Le fichier "%1"<br/>ne peut pas être ouvert en écriture.<br/><br/>Le fichier journal <b>ne peut pas</b> être sauvegardé !</nobr> + + + OCC::NSISUpdater - - Could not open file - Impossible d'ouvrir le fichier + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + <p>Une nouvelle version du Client %1 est disponible mais la mise à jour a échoué.</p><p><b>%2</b> a été téléchargé. La version installée est %3. Si vous confirmez le redémarrage et la mise à jour, votre ordinateur peut redémarrer pour terminer l'installation.</p> - - Cannot write changes to "%1". - Impossible d'écrire les modifications sur "%1". + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + <p>Une nouvelle version du client %1 est disponible.</p><p><b>%2</b> est disponible en téléchargement. La version actuellement installée est %3.<p> - - Ignore Pattern - Ignorer le modèle + + Ask again later + Demander plus tard - - Add New Ignore Pattern - Ajouter nouveau Ignorer le modèle + + Get update + Télécharger la version - Add Ignore Pattern - Ajouter un motif d'exclusion + + New Version Available + Nouvelle version disponible - Add a new ignore pattern: - Ajouter un nouveau motif d'exclusion : + + Restart and update + Redémarrer et mettre à jour - - - OCC::InvalidFilenameDialog - - Invalid filename - Nom de fichier invalide + + Skip this time + Ignorer pour cette fois - - The file could not be synced because it contains characters which are not allowed on this system. - Le fichier n'a pas pu être synchronisé parce qu'il contiens des caractères invalides ou non-supportés par votre système. + + Update Failed + Échec de mise à jour - - Error - Erreur + + Update manually + Mettre à jour manuellement + + + OCC::NetworkSettings - - Please enter a new name for the file: - Veuillez saisir le nouveau nom du fichier : + + Download Bandwidth + Bande passante de réception - - New filename - Nouveau nom de fichier + + Host + Hôte - - Rename file - Renommer le fichier + + Hostname of proxy server + Nom d'hôte du serveur proxy - - The file "%1" could not be synced because the name contains characters which are not allowed on this system. - Le fichier "%1" n'a pas pu être synchronisé car son nom contient des caractères qui ne sont pas autorisés sur ce système. + + HTTP(S) proxy + Proxy HTTP(S) - - The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - Les caractères suivants ne sont pas autorisés dans les noms de fichier sur ce système : * " | & ? , ; : \ / ~ < > espaces en début et fin de chaîne + + KBytes/s + Ko/s - - Checking rename permissions … - Vérification des permissions de renommage... + + Limit automatically + Limiter automatiquement - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Vous n'avez pas la permission de renommer ce fichier. Veuillez demander à son auteur de le renommer. + + Limit to + Limiter à - - Failed to fetch permissions with error %1 - Erreur à la récupération des permissions : %1 + + Limit to 3/4 of estimated bandwidth + Limiter aux 3/4 de la bande passante estimée - - Filename contains leading and trailing spaces. - Le nom de fichier contient des espaces en début ou en fin de chaîne. + + Manually specify proxy + Spécifier manuellement le serveur proxy - - Filename contains leading spaces. - Le nom du fichier contient des espaces au début. + + No limit + Aucune limite - - Filename contains trailing spaces. - Le nom de fichier contient des espaces à la fin. + + No proxy + Aucun serveur proxy - - Use invalid name - Nom invalide + + Note: proxy settings have no effects for accounts on localhost + Remarque: les paramètres de proxy n'ont aucun effet sur les comptes sur localhost - - Filename contains illegal characters: %1 - Le nom du fichier contiens des caractères illégaux: %1 + + Password for proxy server + Mot de passe pour le serveur proxy - - Could not rename file. Please make sure you are connected to the server. - Impossible de renommer le fichier. Veuillez vous certifier que vous êtes bien connecté au serveur. + + Proxy server requires authentication + Le serveur proxy requiert une authentification - - Cannot rename file because a file with the same name does already exist on the server. Please pick another name. - Impossible de renommer le fichier parce qu'un fichier avec le même nom existe déjà sur le serveur. Merci de choisir un autre nom. + + Proxy Settings + Paramètres de serveur proxy - - Could not rename local file. %1 - Impossible de renommer le dossier local %1 + + SOCKS5 proxy + Proxy SOCKS5 - - - OCC::LegalNotice - - - Legal notice - Notice légale + Specify proxy manually as + Indiquer un proxy manuellement - - Close - Fermer + + Upload Bandwidth + Bande passante d'émission - - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + + Use system proxy + Utiliser les paramètres du système - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> - <p>Sous licence GNU General Public License (GPL) Version 2.0 ou supérieure.</p> + + Username for proxy server + Nom d’utilisateur pour le serveur proxy - - - OCC::LogBrowser - - - Log Output - Consigner la sortie dans des fichiers de log - - - - The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. -Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. -If enabled, logs will be written to %1 - Le client peut écrire des fichiers de log pour le déboguage dans un dossier temporaire. Ces logs sont très utiles pour diagnostiquer les problèmes. -Comme ces fichiers de log peuvent devenir lourds, le client en commence un nouveau à chaque synchronisation et compresse les anciens. Il supprime aussi les logs après quelques heures pour économiser l'espace disque. -Si activés, les logs seront écrits dans %1 - - - - Enable logging to temporary folder - Activer la journalisation dans le dossier temporaire - - - - This setting persists across client restarts. -Note that using any logging command line options will override this setting. - Ce paramètre persiste lors des redémarrages du client. -Notez que l'utilisation de toute option de ligne de commande de journalisation remplacera ce paramètre. - - - - Open folder - Ouvrir le dossier - - - - OCC::Logger - - - Error - Erreur - - - - <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> - <nobr>Le fichier "%1"<br/>ne peut pas être ouvert en écriture.<br/><br/>Le fichier journal <b>ne peut pas</b> être sauvegardé !</nobr> - - - - OCC::NSISUpdater - - - New Version Available - Nouvelle version disponible - - - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - <p>Une nouvelle version du client %1 est disponible.</p><p><b>%2</b> est disponible en téléchargement. La version actuellement installée est %3.<p> - - - - Skip this time - Ignorer pour cette fois - - - - Get update - Télécharger la version - - - - Update Failed - Échec de mise à jour - - - - <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> - <p>Une nouvelle version du Client %1 est disponible mais la mise à jour a échoué.</p><p><b>%2</b> a été téléchargé. La version installée est %3. Si vous confirmez le redémarrage et la mise à jour, votre ordinateur peut redémarrer pour terminer l'installation.</p> - - - - Ask again later - Demander plus tard - - - - Restart and update - Redémarrer et mettre à jour - - - - Update manually - Mettre à jour manuellement - - - - OCC::NetworkSettings - - - Proxy Settings - Paramètres de serveur proxy - - - No Proxy - Aucun serveur proxy - - - - No proxy - Aucun serveur proxy - - - - Use system proxy - Utiliser les paramètres du système - - - Specify proxy manually as - Indiquer un proxy manuellement - - - - Manually specify proxy - Spécifier manuellement le serveur proxy - - - - Host - Hôte - - - - Proxy server requires authentication - Le serveur proxy requiert une authentification - - - - Note: proxy settings have no effects for accounts on localhost - Remarque: les paramètres de proxy n'ont aucun effet sur les comptes sur localhost - - - - Download Bandwidth - Bande passante de réception - - - - - No limit - Aucune limite - - - - - Limit to 3/4 of estimated bandwidth - Limiter aux 3/4 de la bande passante estimée - - - - - Limit automatically - Limiter automatiquement - - - - - Limit to - Limiter à - - - - - KBytes/s - Ko/s - - - - Upload Bandwidth - Bande passante d'émission - - - - Hostname of proxy server - Nom d'hôte du serveur proxy - - - - Username for proxy server - Nom d’utilisateur pour le serveur proxy - - - - Password for proxy server - Mot de passe pour le serveur proxy - - - - HTTP(S) proxy - Proxy HTTP(S) - - - - SOCKS5 proxy - Proxy SOCKS5 - - - + + OCC::OAuth - Error returned from the server: <em>%1</em> - Erreur renvoyée par le serveur: <em>%1</em> - - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> + <h1>Login Error</h1><p>%1</p> + <h1>Erreur de connexion</h1><p>%1</p> - Empty JSON from OAuth2 redirect - Vider le JSON de la redirection OAuth2 + <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> + <h1>Erreur de compte</h1><p>Vous êtes connecté(e) avec le compte <em>%1</em>, mais devez vous connecter avec le compte <em>%2</em>.<br>Merci de vous déconnecter de %3 dans un autre onglet, puis <a href='%4'>cliquez ici</a> et connectez-vous avec %2.</p> - Could not parse the JSON returned from the server: <br><em>%1</em> - Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> + Empty JSON from OAuth2 redirect + Vider le JSON de la redirection OAuth2 - - The reply from the server did not contain all expected fields - La réponse du serveur ne contient pas tous les champs attendus - - - <h1>Login Error</h1><p>%1</p> - <h1>Erreur de connexion</h1><p>%1</p> - - - <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> - <h1>Erreur de compte</h1><p>Vous êtes connecté(e) avec le compte <em>%1</em>, mais devez vous connecter avec le compte <em>%2</em>.<br>Merci de vous déconnecter de %3 dans un autre onglet, puis <a href='%4'>cliquez ici</a> et connectez-vous avec %2.</p> - - - + + OCC::OCUpdater - - New %1 update ready - Une nouvelle mise à jour de %1 est disponible + + %1 available. Restart application to start the update. + %1 disponible. Redémarrez l'application pour effectuer la mise à jour. - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - Une nouvelle mise à jour pour %1 est sur le point d'être installée. Le dispositif de mise à jour peut demander des autorisations supplémentaires au cours du processus. Votre ordinateur peut nécessiter un redémarrage pour terminer l'installation. + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + Une nouvelle mise à jour pour %1 est sur le point d'être installée. Le dispositif de mise à jour peut demander des autorisations supplémentaires au cours du processus. Votre ordinateur peut nécessiter un redémarrage pour terminer l'installation. - - Downloading %1. Please wait … - Réception en cours de %1. Veuillez patienter... + + Checking update server … + Vérification du serveur de mises à jour ... - - %1 available. Restart application to start the update. - %1 disponible. Redémarrez l'application pour effectuer la mise à jour. + + Could not check for new updates. + Impossible de vérifier la présence de nouvelles mises à jour. - - Could not download update. Please open <a href='%1'>%1</a> to download the update manually. - Impossible de télécharger la mise à jour. Merci d'ouvrir <a href='%1'>%1</a> pour télécharger la mise à jour manuellement. + + Could not download update. Please open %1 to download the update manually. + Impossible de télécharger la mise à jour. Ouvrez %1 pour télécharger manuellement la mise à jour. - - Could not download update. Please open %1 to download the update manually. - Impossible de télécharger la mise à jour. Ouvrez %1 pour télécharger manuellement la mise à jour. + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + Impossible de télécharger la mise à jour. Merci d'ouvrir <a href='%1'>%1</a> pour télécharger la mise à jour manuellement. - - Could not check for new updates. - Impossible de vérifier la présence de nouvelles mises à jour. + + Downloading %1. Please wait … + Réception en cours de %1. Veuillez patienter... - - New %1 is available. Please open <a href='%2'>%2</a> to download the update. - Un nouveau %1 est disponible. Merci d'ouvrir <a href='%2'>%2</a> pour télécharger la mise à jour. + + New %1 is available. Please open %2 to download the update. + Un nouveau %1 est disponible. Merci d'ouvrir %2 pour télécharger la mise à jour. - - New %1 is available. Please open %2 to download the update. - Un nouveau %1 est disponible. Merci d'ouvrir %2 pour télécharger la mise à jour. + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + Un nouveau %1 est disponible. Merci d'ouvrir <a href='%2'>%2</a> pour télécharger la mise à jour. - - Checking update server … - Vérification du serveur de mises à jour ... + + New %1 update ready + Une nouvelle mise à jour de %1 est disponible - - Update status is unknown: Did not check for new updates. - L'état du processus de mise à jour est inconnu. Impossible de vérifier la présence de mises à jour. + + No updates available. Your installation is at the latest version. + Aucune mise à jour disponible. Votre installation est à jour. - - No updates available. Your installation is at the latest version. - Aucune mise à jour disponible. Votre installation est à jour. + + Update Check + Recherche de mise à jour - - Update Check - Recherche de mise à jour + + Update status is unknown: Did not check for new updates. + L'état du processus de mise à jour est inconnu. Impossible de vérifier la présence de mises à jour. - - + + OCC::OwncloudAdvancedSetupPage - - Connect - Connexion - - - - - Use &virtual files instead of downloading content immediately %1 - Utiliser les fichiers virtuels %1 - - - - - (experimental) - (expérimental) - - - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Les fichiers virtuels ne sont pas pris en charge pour les racines de partition Windows en tant que dossier local. Veuillez choisir un sous-dossier valide sous la lettre du lecteur. + + (%1) + (%1) - - %1 folder "%2" is synced to local folder "%3" - Le dossier %1 "%2" est synchronisé avec le dossier local "%3". + + %1 folder "%2" is synced to local folder "%3" + Le dossier %1 "%2" est synchronisé avec le dossier local "%3". - - Sync the folder "%1" - Synchroniser le dossier "%1" + + %1 free space + espace libre %1 - - Warning: The local folder is not empty. Pick a resolution! - Avertissement : Le dossier local n'est pas vide. Choisissez une option. + + Connect + Connexion - - %1 free space - %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB - espace libre %1 + + Local Sync Folder + Dossier de synchronisation local - - Virtual files are not available for the selected folder - Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné + + Sync the folder "%1" + Synchroniser le dossier "%1" - - Local Sync Folder - Dossier de synchronisation local + + There isn't enough free space in the local folder! + L'espace libre dans le dossier local est insuffisant ! - - - (%1) - (%1) + + Use &virtual files instead of downloading content immediately %1 + Utiliser les fichiers virtuels %1 - - There isn't enough free space in the local folder! - L'espace libre dans le dossier local est insuffisant ! + + Warning: The local folder is not empty. Pick a resolution! + Avertissement : Le dossier local n'est pas vide. Choisissez une option. - - + + OCC::OwncloudConnectionMethodDialog - - Connection failed - Échec de la connexion + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Impossible de se connecter à l'adresse sécurisée <em>%1</em>. Que souhaitez-vous faire ?</p></body></html> - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Impossible de se connecter au serveur via l'adresse sécurisée indiquée. Que souhaitez-vous faire ?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Impossible de se connecter au serveur via l'adresse sécurisée indiquée. Que souhaitez-vous faire ?</p></body></html> - - Select a different URL - Choisir une URL différente + + Configure client-side TLS certificate + Configurer le certificat TLS client - - Retry unencrypted over HTTP (insecure) - Essayer en clair sur HTTP (non sécurisé) + + Connection failed + Échec de la connexion - - Configure client-side TLS certificate - Configurer le certificat TLS client + + Retry unencrypted over HTTP (insecure) + Essayer en clair sur HTTP (non sécurisé) - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Impossible de se connecter à l'adresse sécurisée <em>%1</em>. Que souhaitez-vous faire ?</p></body></html> + + Select a different URL + Choisir une URL différente - - + + OCC::OwncloudHttpCredsPage - - &Email - &Adresse mail + + &Email + &Adresse mail - - Connect to %1 - Connexion à %1 + + Connect to %1 + Connexion à %1 - - Enter user credentials - Saisissez les identifiants de connexion de l'utilisateur + + Enter user credentials + Saisissez les identifiants de connexion de l'utilisateur - - + + OCC::OwncloudOAuthCredsPage - Connect to %1 - Connexion à %1 + Login in your browser + Connectez vous sur votre navigateur - - Login in your browser - Connectez vous sur votre navigateur - - - + + OCC::OwncloudPropagator - Error with the metadata. Getting unexpected metadata format. - Erreur avec la métadonnée. Le format de la métadonnée est inattendu. + Error with the metadata. Getting unexpected metadata format. + Erreur avec la métadonnée. Le format de la métadonnée est inattendu. - - - Impossible to get modification time for file in conflict %1 - Impossible de récupérer la date de modification du fichier en conflit %1 + + Impossible to get modification time for file in conflict %1 + Impossible de récupérer la date de modification du fichier en conflit %1 - - + + OCC::OwncloudSetupPage - - The link to your %1 web interface when you open it in the browser. - %1 will be replaced with the application name - Adresse URL visible dans la barre d'adresse de votre navigateur Web lorsque vous êtes connecté à %1. + + &Next > + &Suivant > - - &Next > - &Suivant > + + Could not load certificate. Maybe wrong password? + Impossible de charger le certificat. Vérifiez le mot de passe saisi. - - Server address does not seem to be valid - L'adresse du serveur ne semble pas être valide + + Server address does not seem to be valid + L'adresse du serveur ne semble pas être valide - - Could not load certificate. Maybe wrong password? - Impossible de charger le certificat. Vérifiez le mot de passe saisi. + + The link to your %1 web interface when you open it in the browser. + Adresse URL visible dans la barre d'adresse de votre navigateur Web lorsque vous êtes connecté à %1. - - + + OCC::OwncloudSetupWizard - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - <font color="green">Connecté avec succès à %1 : %2 version %3 (%4)</font><br/><br/> - - - - Invalid URL - URL invalide + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + <font color="green"><b>Dossier de synchronisation local %1 créé avec succès !</b></font> - - Failed to connect to %1 at %2:<br/>%3 - Échec de la connexion à %1 sur %2 :<br/>%3 + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + <font color="green">Connecté avec succès à %1 : %2 version %3 (%4)</font><br/><br/> - - Timeout while trying to connect to %1 at %2. - Délai d'attente dépassé lors de la connexion à %1 sur %2. + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + <p><font color="red">La création du dossier distant a échoué, probablement parce que les informations d'identification fournies sont fausses.</font><br/>Veuillez revenir en arrière et les vérifier.</p> - - Trying to connect to %1 at %2 … - Tentative de connexion à %1 sur %2 ... + + A sync connection from %1 to remote directory %2 was set up. + Une synchronisation entre le dossier local %1 et le dossier distant %2 a été configurée. - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - La demande authentifiée au serveur a été redirigée vers "%1". L'URL est mauvaise, le serveur est mal configuré. + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + Impossible de supprimer et sauvegarder le dossier parce que le dossier ou un fichier qu'il contient est ouvert dans un autre programme. Merci de fermer le dossier ou le fichier et recommencer ou annuler la configuration. - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Accès impossible. Afin de vérifier l'accès au serveur, <a href="%1">cliquez ici</a> et connectez-vous au service avec votre navigateur web. + + Connection to %1 could not be established. Please check again. + La connexion à %1 n'a pu être établie. Veuillez réessayer. - - There was an invalid response to an authenticated WebDAV request - Il y a eu une réponse invalide à une demande WebDAV authentifiée + + Could not create local folder %1 + Impossible de créer le dossier local %1 - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> - Le dossier de synchronisation local %1 existe déjà, configuration de la synchronisation.<br/><br/> + + creating folder on Nextcloud: %1 + Création du dossier sur Nextcloud : %1 - - Creating local sync folder %1 … - Création du dossier local de synchronisation %1 ... + + Creating local sync folder %1 … + Création du dossier local de synchronisation %1 ... - - OK - OK + + Error: %1 + Erreur : %1 - - failed. - échoué. + + Failed to connect to %1 at %2:<br/>%3 + Échec de la connexion à %1 sur %2 :<br/>%3 - - Could not create local folder %1 - Impossible de créer le dossier local %1 + + failed. + échoué. - - No remote folder specified! - Aucun dossier distant spécifié ! + + Folder rename failed + Echec du renommage du dossier - - Error: %1 - Erreur : %1 + + Invalid URL + URL invalide - - creating folder on Nextcloud: %1 - Création du dossier sur Nextcloud : %1 + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + Le dossier de synchronisation local %1 existe déjà, configuration de la synchronisation.<br/><br/> - - Remote folder %1 created successfully. - Le dossier distant %1 a été créé avec succès. + + No remote folder specified! + Aucun dossier distant spécifié ! - - The remote folder %1 already exists. Connecting it for syncing. - Le dossier distant %1 existe déjà. Connexion. + + OK + OK - - - The folder creation resulted in HTTP error code %1 - La création du dossier a généré le code d'erreur HTTP %1 + + Remote folder %1 created successfully. + Le dossier distant %1 a été créé avec succès. - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - La création du dossier distant a échoué car les identifiants de connexion sont erronés !<br/>Veuillez revenir en arrière et vérifier ces derniers.</p> + + Remote folder %1 creation failed with error <tt>%2</tt>. + La création du dossier distant "%1" a échouée avec l'erreur <tt>%2</tt>. - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - <p><font color="red">La création du dossier distant a échoué, probablement parce que les informations d'identification fournies sont fausses.</font><br/>Veuillez revenir en arrière et les vérifier.</p> + + Successfully connected to %1! + Connecté avec succès à %1 ! - - - Remote folder %1 creation failed with error <tt>%2</tt>. - La création du dossier distant "%1" a échouée avec l'erreur <tt>%2</tt>. + + The folder creation resulted in HTTP error code %1 + La création du dossier a généré le code d'erreur HTTP %1 - - A sync connection from %1 to remote directory %2 was set up. - Une synchronisation entre le dossier local %1 et le dossier distant %2 a été configurée. + + The remote folder %1 already exists. Connecting it for syncing. + Le dossier distant %1 existe déjà. Connexion. - - Successfully connected to %1! - Connecté avec succès à %1 ! + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + La création du dossier distant a échoué car les identifiants de connexion sont erronés !<br/>Veuillez revenir en arrière et vérifier ces derniers.</p> - - Connection to %1 could not be established. Please check again. - La connexion à %1 n'a pu être établie. Veuillez réessayer. + + Timeout while trying to connect to %1 at %2. + Délai d'attente dépassé lors de la connexion à %1 sur %2. - - Folder rename failed - Echec du renommage du dossier - - - - Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - Impossible de supprimer et sauvegarder le dossier parce que le dossier ou un fichier qu'il contient est ouvert dans un autre programme. Merci de fermer le dossier ou le fichier et recommencer ou annuler la configuration. + + Trying to connect to %1 at %2 … + Tentative de connexion à %1 sur %2 ... + + + OCC::OwncloudWizard - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> - <font color="green"><b>Dossier de synchronisation local %1 créé avec succès !</b></font> + + Add %1 account + Ajout du compte %1 - - - OCC::OwncloudWizard - - Add %1 account - Ajout du compte %1 + + Enable experimental feature? + Activer la fonction expérimentale ? - - Skip folders configuration - Ignorer la configuration des dossiers + + Enable experimental placeholder mode + Activer la fonction expérimentale de fichiers virtuels ? - - Cancel - Annuler + + Skip folders configuration + Ignorer la configuration des dossiers - - Enable experimental feature? - Activer la fonction expérimentale ? + + Stay safe + Restez en sécurité - - When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. Switching to this mode will abort any currently running synchronization. This is a new, experimental mode. If you decide to use it, please report any issues that come up. - Lorsque le mode « fichiers virtuels » est activé, aucun fichier ne sera téléchargé initialement. Au lieu de cela, un petit fichier "%1" sera créé pour chaque fichier existant sur le serveur. Le contenu peut être téléchargé en exécutant ces fichiers ou en utilisant leur menu contextuel. + Lorsque le mode « fichiers virtuels » est activé, aucun fichier ne sera téléchargé initialement. Au lieu de cela, un petit fichier "%1" sera créé pour chaque fichier existant sur le serveur. Le contenu peut être téléchargé en exécutant ces fichiers ou en utilisant leur menu contextuel. Le mode fichiers virtuels est mutuellement exclusif avec synchronisation sélective. Les dossiers actuellement non sélectionnés seront convertis en dossiers en ligne uniquement et vos paramètres de synchronisation sélective seront réinitialisés. Le passage à ce mode annulera toute synchronisation en cours. -Il s'agit d'un nouveau mode expérimental. Si vous décidez de l'utiliser, veuillez signaler tout problème qui surviendrait. - - - - Enable experimental placeholder mode - Activer la fonction expérimentale de fichiers virtuels ? +Il s'agit d'un nouveau mode expérimental. Si vous décidez de l'utiliser, veuillez signaler tout problème qui surviendrait. - - - Stay safe - Restez en sécurité - - - + + OCC::PasswordInputDialog - - Password for share required - Mot de passe requis pour le partage - - - - Please enter a password for your share: - Veuillez saisir un mot de passe pour votre partage : + + Please enter a password for your share: + Veuillez saisir un mot de passe pour votre partage : - - + + OCC::PollJob - - Invalid JSON reply from the poll URL - L'URL de sondage a renvoyé une réponse JSON non valide + + Invalid JSON reply from the poll URL + L'URL de sondage a renvoyé une réponse JSON non valide - - + + OCC::ProcessDirectoryJob - - Symbolic links are not supported in syncing. - Les liens symboliques ne sont pas pris en charge par la synchronisation. - - - - File is listed on the ignore list. - Le fichier est présent dans la liste des fichiers ignorés. - - - - File names ending with a period are not supported on this file system. - Les noms de fichier se terminant par un point ne sont pas pris en charge sur votre système. - - - - File names containing the character "%1" are not supported on this file system. - Les noms de fichiers contenant le caractère "%1" ne sont pas pris en charge par ce système de fichiers. + + Cannot sync due to invalid modification time + Impossible de synchroniser à cause d'une date de modification invalide - - File name contains at least one invalid character - Le nom du fichier contient au moins un caractère interdit + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. + Conflit de casse : fichier serveur téléchargé et renommé pour éviter le conflit. - - The file name is a reserved name on this file system. - Le nom du fichier est un nom réservé dans le système de fichier + + Conflict when uploading a file. It's going to get removed! + Conflit lors de l'envoi d'un fichier. Il va être supprimé ! - - Filename contains trailing spaces. - Le nom du fichier finit par des espaces. + + Conflict when uploading a folder. It's going to get cleared! + Conflit lors de l'envoi d'un dossier. Il va être supprimé ! - - Filename contains leading spaces. - Nom de fichier contenant des espaces au début. + + Conflict: Server version downloaded, local copy renamed and not uploaded. + Conflit : la version du serveur a été téléchargée, la version locale renommée et non téléversée. - - Filename contains leading and trailing spaces. - Nom de fichier contenant des espaces au début et à la fin. + + Could not upload file, because it is open in "%1". + Impossible de téléverser le fichier, car il est ouvert dans « %1 ». - - Filename is too long. - Le nom du fichier est trop long. + + Error while deleting file record %1 from the database + Erreur à la suppression de l'enregistrement du fichier %1 de la base de données - - File/Folder is ignored because it's hidden. - Le fichier ou dossier a été ignoré car il est masqué. + + Error while reading the database + Erreur de lecture de la base de données - - Stat failed. - Stat échoué. + + File has extension reserved for virtual files. + Le fichier a une extension réservée pour les fichiers virtuels. - - Conflict: Server version downloaded, local copy renamed and not uploaded. - Conflit : la version du serveur a été téléchargée, la version locale renommée et non téléversée. + + file id + ID du fichier - - Case Clash Conflict: Server file downloaded and renamed to avoid clash. - Conflit de casse : fichier serveur téléchargé et renommé pour éviter le conflit. + + File is listed on the ignore list. + Le fichier est présent dans la liste des fichiers ignorés. - - The filename cannot be encoded on your file system. - Le nom de fichier ne peut pas être encodé sur votre système de fichiers. + + File name contains at least one invalid character + Le nom du fichier contient au moins un caractère interdit - - The filename is blacklisted on the server. - Le nom du fichier est sur la liste noire du serveur. + + File names containing the character "%1" are not supported on this file system. + Les noms de fichiers contenant le caractère "%1" ne sont pas pris en charge par ce système de fichiers. - - File has extension reserved for virtual files. - Le fichier a une extension réservée pour les fichiers virtuels. + + File names ending with a period are not supported on this file system. + Les noms de fichier se terminant par un point ne sont pas pris en charge sur votre système. - - size - taille + + File/Folder is ignored because it's hidden. + Le fichier ou dossier a été ignoré car il est masqué. - - permission - permission + + Filename is too long. + Le nom du fichier est trop long. - - file id - ID du fichier + + Ignored because of the "choose what to sync" blacklist + Ignoré en raison de la liste noire "Sélectionner le contenu à synchroniser". - - Server reported no %1 - Le serveur n'a signalé aucun %1 + + Moved to invalid target, restoring + Déplacé vers une cible invalide, restauration - - Cannot sync due to invalid modification time - Impossible de synchroniser à cause d'une date de modification invalide + + Not allowed because you don't have permission to add files in that folder + Non autorisé car vous n'avez pas la permission d'ajouter des fichiers dans ce dossier - - Could not upload file, because it is open in "%1". - Impossible de téléverser le fichier, car il est ouvert dans « %1 ». + + Not allowed because you don't have permission to add subfolders to that folder + Non autorisé car vous n'avez pas la permission d'ajouter des sous-dossiers dans ce dossier - - Error while deleting file record %1 from the database - Erreur à la suppression de l'enregistrement du fichier %1 de la base de données + + Not allowed to remove, restoring + Suppression non autorisée, restauration en cours - - Conflict when uploading a folder. It's going to get cleared! - Conflit lors de l'envoi d'un dossier. Il va être supprimé ! + + Not allowed to upload this file because it is read-only on the server, restoring + Non autorisé à téléverser ce fichier, car il est en lecture seule sur le serveur, restauration en cours - - Conflict when uploading a file. It's going to get removed! - Conflit lors de l'envoi d'un fichier. Il va être supprimé ! + + permission + permission - - - Moved to invalid target, restoring - Déplacé vers une cible invalide, restauration + + Server replied with an error while reading directory "%1" : %2 + Le serveur a répondu avec une erreur lors de la lecture du dossier "%1" : %2 - - Ignored because of the "choose what to sync" blacklist - Ignoré en raison de la liste noire "Sélectionner le contenu à synchroniser". + + Server reported no %1 + Le serveur n'a signalé aucun %1 - - - Not allowed because you don't have permission to add subfolders to that folder - Non autorisé car vous n'avez pas la permission d'ajouter des sous-dossiers dans ce dossier + + size + taille - - Not allowed because you don't have permission to add files in that folder - Non autorisé car vous n'avez pas la permission d'ajouter des fichiers dans ce dossier + + Stat failed. + Stat échoué. - - Not allowed to upload this file because it is read-only on the server, restoring - Non autorisé à téléverser ce fichier, car il est en lecture seule sur le serveur, restauration en cours + + Symbolic links are not supported in syncing. + Les liens symboliques ne sont pas pris en charge par la synchronisation. - - Not allowed to remove, restoring - Suppression non autorisée, restauration en cours + + The file name is a reserved name on this file system. + Le nom du fichier est un nom réservé dans le système de fichier - - Error while reading the database - Erreur de lecture de la base de données + + The filename cannot be encoded on your file system. + Le nom de fichier ne peut pas être encodé sur votre système de fichiers. - - Server replied with an error while reading directory "%1" : %2 - Le serveur a répondu avec une erreur lors de la lecture du dossier "%1" : %2 + + The filename is blacklisted on the server. + Le nom du fichier est sur la liste noire du serveur. - - + + OCC::PropagateDirectory - - could not delete file %1 from local DB - Impossible de supprimer le fichier %1 de la base de données locale + + could not delete file %1 from local DB + Impossible de supprimer le fichier %1 de la base de données locale - - Error updating metadata due to invalid modification time - Erreur de mise à jour des métadonnées à cause d'une date de modification invalide + + Error updating metadata due to invalid modification time + Erreur de mise à jour des métadonnées à cause d'une date de modification invalide - - - The folder %1 cannot be made read-only: %2 - Le dossier %1 ne peut être rendu en lecture seule : %2 + + File is currently in use + Le fichier est actuellement en cours d'utilisation - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + The folder %1 cannot be made read-only: %2 + Le dossier %1 ne peut être rendu en lecture seule : %2 - - - File is currently in use - Le fichier est actuellement en cours d'utilisation - - - + + OCC::PropagateDownloadFile - - could not get file %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale - - - - File %1 cannot be downloaded because encryption information is missing. - Le fichier %1 ne peut pas être téléchargé car les informations de chiffrement sont manquantes. + + Could not delete file record %1 from local DB + Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale - - - File has changed since discovery - Le fichier a changé depuis sa découverte + + could not get file %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - - Could not delete file record %1 from local DB - Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale + + File %1 can not be downloaded because of a local file name clash! + Le fichier %1 ne peut pas être téléchargé en raison d'un conflit sur le nom de fichier local. - - File %1 can not be downloaded because of a local file name clash! - Le fichier %1 ne peut pas être téléchargé en raison d'un conflit sur le nom de fichier local. + + File %1 cannot be downloaded because encryption information is missing. + Le fichier %1 ne peut pas être téléchargé car les informations de chiffrement sont manquantes. - - The download would reduce free local disk space below the limit - Le téléchargement réduira l'espace disque libre en dessous de la limite + + File %1 downloaded but it resulted in a local file name clash! + Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! - - Free space on disk is less than %1 - Il y a moins de %1 d'espace libre sur le disque + + File %1 has invalid modified time reported by server. Do not save it. + Le fichier %1 présente une date de modification invalide sur le serveur. Enregistrement impossible. - - File was deleted from server - Le fichier a été supprimé du serveur + + File has changed since discovery + Le fichier a changé depuis sa découverte - - The file could not be downloaded completely. - Le fichier n'a pas pu être téléchargé intégralement. + + File was deleted from server + Le fichier a été supprimé du serveur - - The downloaded file is empty, but the server said it should have been %1. - Le fichier téléchargé est vide bien que le serveur indique que sa taille devrait être de %1. + + Free space on disk is less than %1 + Il y a moins de %1 d'espace libre sur le disque - - - File %1 has invalid modified time reported by server. Do not save it. - Le fichier %1 présente une date de modification invalide sur le serveur. Enregistrement impossible. + + The download would reduce free local disk space below the limit + Le téléchargement réduira l'espace disque libre en dessous de la limite - - File %1 downloaded but it resulted in a local file name clash! - Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! + + The downloaded file is empty, but the server said it should have been %1. + Le fichier téléchargé est vide bien que le serveur indique que sa taille devrait être de %1. - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 + + The file could not be downloaded completely. + Le fichier n'a pas pu être téléchargé intégralement. - - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation - - - + + OCC::PropagateItemJob - - ; Restoration Failed: %1 - ; Échec de la restauration : %1 + + ; Restoration Failed: %1 + ; Échec de la restauration : %1 - - A file or folder was removed from a read only share, but restoring failed: %1 - Un fichier ou un dossier a été supprimé d'un partage en lecture seule, mais la restauration a échoué : %1 + + A file or folder was removed from a read only share, but restoring failed: %1 + Un fichier ou un dossier a été supprimé d'un partage en lecture seule, mais la restauration a échoué : %1 - - + + OCC::PropagateLocalMkdir - - could not delete file %1, error: %2 - impossible de supprimer le fichier %1. Erreur : %2 - - - - Folder %1 cannot be created because of a local file or folder name clash! - Le dossier %1 n'a pu être créé à cause d'un conflit local de nom de fichier ou de dossier ! + + Could not create folder %1 + Impossible de créer le dossier %1 - - Could not create folder %1 - Impossible de créer le dossier %1 + + could not delete file %1, error: %2 + impossible de supprimer le fichier %1. Erreur : %2 - - The folder %1 cannot be made read-only: %2 - Le dossier %1 ne peut être rendu en lecture seule : %2 + + Folder %1 cannot be created because of a local file or folder name clash! + Le dossier %1 n'a pu être créé à cause d'un conflit local de nom de fichier ou de dossier ! - - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 - - - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation - - - + + OCC::PropagateLocalRemove - - Could not remove %1 because of a local file name clash - Impossible de retirer %1 en raison d'un conflit de nom de fichier local - - - - Could not delete file record %1 from local DB - Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale + + Could not remove %1 because of a local file name clash + Impossible de retirer %1 en raison d'un conflit de nom de fichier local - - + + OCC::PropagateLocalRename - - Folder %1 cannot be renamed because of a local file or folder name clash! - Le dossier %1 ne peut pas être renommé en raison d’un conflit de nom avec un fichier ou un dossier local ! + + Error setting pin state + Erreur lors de la modification de l'état du fichier - - File %1 downloaded but it resulted in a local file name clash! - Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! + + Failed to propagate directory rename in hierarchy + Impossible de propager le renommage du dossier dans la hiérarchie - - - - could not get file %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + Failed to rename file + Échec lors du changement de nom du fichier - - - Error setting pin state - Erreur lors de la modification de l'état du fichier + + Folder %1 cannot be renamed because of a local file or folder name clash! + Le dossier %1 ne peut pas être renommé en raison d’un conflit de nom avec un fichier ou un dossier local ! - - - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 - - - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation - - - - - Could not delete file record %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale - - - - Failed to propagate directory rename in hierarchy - Impossible de propager le renommage du dossier dans la hiérarchie - - - - Failed to rename file - Échec lors du changement de nom du fichier - - - - OCC::PropagateRemoteDelete - - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur reçue est "%1 %2". - - - - Could not delete file record %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale - - - - OCC::PropagateRemoteDeleteEncryptedRootFolder - - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". - - - + + OCC::PropagateRemoteMkdir - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". + + Error writing metadata to the database: %1 + Erreur d'écriture des métadonnées dans la base de données : %1 - - Failed to encrypt a folder %1 - Échec du chiffrement d'un dossier %1 + + Failed to encrypt a folder %1 + Échec du chiffrement d'un dossier %1 - - Error writing metadata to the database: %1 - Erreur d'écriture des métadonnées dans la base de données : %1 + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". - - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation - - - + + OCC::PropagateRemoteMove - - Could not rename %1 to %2, error: %3 - Impossible de renommer %1 en %2, erreur: %3 - - - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". + + Could not rename %1 to %2, error: %3 + Impossible de renommer %1 en %2, erreur: %3 - - - could not get file %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale - - - - Could not delete file record %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale - - - - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 - - - - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation - - - - Error setting pin state - Erreur lors de la modification de l'état du fichier - - - - Error writing metadata to the database - Erreur à l'écriture des métadonnées dans la base de données - - - + + OCC::PropagateUploadFileCommon - - Failed to upload encrypted file. - Échec d'envoi du fichier chiffré. - - - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Impossible de téléverser le fichier %1 car un autre fichier de même nom existe, différent seulement par la casse. - - - - - Upload of %1 exceeds the quota for the folder - L'envoi de %1 amène un dépassement de quota pour le dossier - - - - - - File %1 has invalid modification time. Do not upload to the server. - Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. - - - - File Removed (start upload) %1 - Fichier supprimé (début du téléchargement) %1 - - - - Local file changed during syncing. It will be resumed. - Fichier local modifié pendant la synchronisation. Elle va reprendre. + + Failed to unlock encrypted folder. + Impossible de déverrouiller le dossier chiffré. - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. + + Failed to upload encrypted file. + Échec d'envoi du fichier chiffré. - - Failed to unlock encrypted folder. - Impossible de déverrouiller le dossier chiffré. + + Unable to upload an item with invalid characters + Impossible de téléverser un élément contenant des caractères non valides - - Unable to upload an item with invalid characters - Impossible de téléverser un élément contenant des caractères non valides + + Upload of %1 exceeds the quota for the folder + L'envoi de %1 amène un dépassement de quota pour le dossier - - - Error updating metadata: %1 - Erreur lors de la mise à jour des métadonnées : %1 - - - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation - - - + + OCC::PropagateUploadFileNG - - The local file was removed during sync. - Fichier local supprimé pendant la synchronisation. + + Missing ETag from server + L'information Etag de modification de fichier est manquante sur le serveur - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. + + Missing File ID from server + L'identifiant de fichier est manquant sur le serveur - - Poll URL missing - URL du sondage manquante + + Poll URL missing + URL du sondage manquante - - Unexpected return code from server (%1) - Le serveur a retourné un code inattendu (%1) + + Unexpected return code from server (%1) + Le serveur a retourné un code inattendu (%1) - - - Missing File ID from server - L'identifiant de fichier est manquant sur le serveur - - - - Missing ETag from server - L'information Etag de modification de fichier est manquante sur le serveur - - - + + OCC::PropagateUploadFileV1 - - Poll URL missing - URL de sondage manquante - - - - The local file was removed during sync. - Fichier local supprimé pendant la synchronisation. - - - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. - - - - The server did not acknowledge the last chunk. (No e-tag was present) - Le serveur n'a pas confirmé la réception du dernier morceau. (Aucun e-tag n'était présent). + + The server did not acknowledge the last chunk. (No e-tag was present) + Le serveur n'a pas confirmé la réception du dernier morceau. (Aucun e-tag n'était présent). - - + + OCC::ProxyAuthDialog - - Proxy authentication required - Authentification requise sur le proxy + + Password: + Mot de passe : - - Username: - Nom d’utilisateur : + + Proxy authentication required + Authentification requise sur le proxy - - Proxy: - Proxy : + + Proxy: + Proxy : - - The proxy server needs a username and password. - Le serveur proxy requiert un identifiant et un mot de passe. + + The proxy server needs a username and password. + Le serveur proxy requiert un identifiant et un mot de passe. - - Password: - Mot de passe : + + Username: + Nom d’utilisateur : - - + + OCC::SelectiveSyncDialog - - Choose What to Sync - Sélectionner le contenu à synchroniser + + Choose What to Sync + Sélectionner le contenu à synchroniser - - + + OCC::SelectiveSyncWidget - - Loading … - Chargement… + + An error occurred while loading the list of sub folders. + Une erreur est survenue lors du chargement de la liste des sous-dossiers. - - Deselect remote folders you do not wish to synchronize. - Désélectionnez les sous-dossiers distants que vous ne souhaitez pas synchroniser. + + Deselect remote folders you do not wish to synchronize. + Désélectionnez les sous-dossiers distants que vous ne souhaitez pas synchroniser. - - Name - Nom + + Loading … + Chargement… - - Size - Taille + + Name + Nom - - - No subfolders currently on the server. - Aucun sous-dossier sur le serveur. + + No subfolders currently on the server. + Aucun sous-dossier sur le serveur. - - An error occurred while loading the list of sub folders. - Une erreur est survenue lors du chargement de la liste des sous-dossiers. + + Size + Taille - - + + OCC::ServerNotificationHandler - - Reply - Répondre - - - Dismiss - Ignorer + + Reply + Répondre - - + + OCC::SettingsDialog - - Settings - Paramètres - - - - %1 Settings - This name refers to the application name e.g Nextcloud - Paramètres %1 - - - - New Account - Nouveau compte + + %1 Settings + Paramètres %1 - - General - Paramètres + + Account + Compte - Network - Réseau + + General + Paramètres - - Account - Compte + Network + Réseau - - - OCC::ShareManager - - Error - Erreur + + New Account + Nouveau compte - - + + OCC::ShareModel - - Secure file drop link - Lien de dépôt sécurisé de fichier + + Could not find local folder for %1 + Impossible de trouver le dossier local pour %1 - - Share link - Partager un lien + Enter a note for the recipient + Saisissez un commentaire pour le destinataire - - Link share - Lien de partage + + Internal link + Lien interne - - Internal link - Lien interne + + Link share + Lien de partage - - Secure file drop - Dépôt de fichier sécurisé + + Secure file drop + Dépôt de fichier sécurisé - - Could not find local folder for %1 - Impossible de trouver le dossier local pour %1 + + Secure file drop link + Lien de dépôt sécurisé de fichier - - - - - - - Enter a note for the recipient - Saisissez un commentaire pour le destinataire + + Share link + Partager un lien - - + + OCC::ShareUserLine - Username - Nom d’utilisateur - - - Can edit - Peut modifier - - - Note: - Note : + Can edit + Peut modifier - Password: - Mot de passe : + Expires: + Expire le : - Expires: - Expire le : + Note: + Note : - - + + OCC::ShareeModel - - - Search globally - Rechercher globalement - - - - No results found - Aucun résultat trouvé + + Global search results + Résultats de la recherche globale - - Global search results - Résultats de la recherche globale + + No results found + Aucun résultat trouvé - - %1 (%2) - sharee (shareWithAdditionalInfo) - %1 (%2) + + Search globally + Rechercher globalement - - + + OCC::SocketApi - - Failed to encrypt folder at "%1" - Échec du chiffrement du dossier à "%1" + Activity + Activité - - The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - Le compte %1 n'a pas de chiffrement de bout en bout configuré. Veuillez le configurer dans les paramètres de votre compte pour activer le chiffrement des dossiers. + + Context menu share + Partage du menu contextuel - - Failed to encrypt folder - Échec du chiffrement du dossier + + Copy internal link + Copier le lien interne - - Could not encrypt the following folder: "%1". - -Server replied with error: %2 - Impossible de chiffrer le dossier suivant : "%1". - -Le serveur a répondu avec l'erreur : %2 + + Copy private link to clipboard + Copier le lien privé dans le presse-papier - - Folder encrypted successfully - Dossier chiffré avec succès + + Copy public link + Copier le lien public - - The following folder was encrypted successfully: "%1" - Le dossier suivant a été chiffré avec succès : "%1" + + Copy secure file drop link + Copier le lien de dépôt sécurisé de fichier - - Context menu share - Partage du menu contextuel + + Copy secure filedrop link + Copier le lien de dépôt de fichier sécurisé - - Select new location … - Sélectionnez le nouvel emplacement ... - - - - I shared something with you - J'ai partagé quelque chose avec vous + + Could not encrypt the following folder: "%1". + +Server replied with error: %2 + Impossible de chiffrer le dossier suivant : "%1". + +Le serveur a répondu avec l'erreur : %2 - - - Share options - Options de partage + + Delete local changes + Supprimer les modifications locales - - - Activity - Activité + + Edit + Éditer - - - Copy private link to clipboard - Copier le lien privé dans le presse-papier + + + Expires in %1 minutes + + + + Expire dans %1 minutes + - - Send private link by email … - Envoyer le lien privé par e-mail ... + + Failed to encrypt folder + Échec du chiffrement du dossier - - Leave this share - Quitter ce partage + + Failed to encrypt folder at "%1" + Échec du chiffrement du dossier à "%1" - - Resharing this file is not allowed - Repartager ce fichier est interdit + + Folder encrypted successfully + Dossier chiffré avec succès - - Resharing this folder is not allowed - Repartager ce dossier est interdit + + I shared something with you + J'ai partagé quelque chose avec vous - - Copy secure file drop link - Copier le lien de dépôt sécurisé de fichier + + Leave this share + Quitter ce partage - - - Copy public link - Copier le lien public + + Lock file + Verrouiller le fichier - - Copy secure filedrop link - Copier le lien de dépôt de fichier sécurisé + + Locked by %1 + Verrouillé par %1 - - Copy internal link - Copier le lien interne + + Move and rename … + Déplacer et renommer... - - Encrypt - Chiffrer + + Move and upload … + Déplacer et téléverser… - - Lock file - Verrouiller le fichier + + Move, rename and upload … + Déplacer, renommer et téléverser… - - Unlock file - Déverrouiller le fichier + + Open in browser + Ouvrir dans le navigateur - - Locked by %1 - Verrouillé par %1 - - - - Expires in %1 minutes - remaining time before lock expires - - Expire dans %1 minute - Expire dans %1 minutes - + + Resharing this file is not allowed + Repartager ce fichier est interdit - - Edit - Éditer + + Resharing this folder is not allowed + Repartager ce dossier est interdit - - Open in browser - Ouvrir dans le navigateur + + Resolve conflict … + Résoudre le conflit… - - Resolve conflict … - Résoudre le conflit… + + Select new location … + Sélectionnez le nouvel emplacement ... - - Move and rename … - Déplacer et renommer... + + Send private link by email … + Envoyer le lien privé par e-mail ... - - Move, rename and upload … - Déplacer, renommer et téléverser… + + Share options + Options de partage - - Delete local changes - Supprimer les modifications locales + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. + Le compte %1 n'a pas de chiffrement de bout en bout configuré. Veuillez le configurer dans les paramètres de votre compte pour activer le chiffrement des dossiers. - - Move and upload … - Déplacer et téléverser… + + The following folder was encrypted successfully: "%1" + Le dossier suivant a été chiffré avec succès : "%1" - - Delete - Supprimer + + Unlock file + Déverrouiller le fichier - - + + OCC::SslButton - - <h3>Certificate Details</h3> - <h3>Détails du certificat</h3> + + %1 (self-signed) + %1 (auto-signé) - - Common Name (CN): - Nom commun (CN) : + + <h3>Certificate Details</h3> + <h3>Détails du certificat</h3> - - Subject Alternative Names: - Noms alternatifs du sujet : + + <h3>Fingerprints</h3> + <h3>Empreintes numériques</h3> - - Organization (O): - Organisation (O) : + + <h3>Issuer</h3> + <h3>Émetteur</h3> - - Organizational Unit (OU): - Unité d'organisation (OU) : + + <p><b>Note:</b> This certificate was manually approved</p> + <p><b>Note :</b> Ce certificat a été approuvé manuellement</p> - - State/Province: - État/Région : + + Certificate information: + Informations du certificat : - - Country: - Pays : + + Common Name (CN): + Nom commun (CN) : - - Serial: - Numéro de série : + + Country: + Pays : - - <h3>Issuer</h3> - <h3>Émetteur</h3> + + Expires on: + Expire le : - - Issuer: - Émetteur : + + Issued on: + Émis le : - - Issued on: - Émis le : + + Issuer: + Émetteur : - - Expires on: - Expire le : + + No support for SSL session tickets/identifiers + Identifiants/tickets de sessions SSL non pris en charge - - <h3>Fingerprints</h3> - <h3>Empreintes numériques</h3> + + Organization (O): + Organisation (O) : - - SHA-256: - SHA-256 : + + Organizational Unit (OU): + Unité d'organisation (OU) : - - SHA-1: - SHA-1 : + + Serial: + Numéro de série : - - <p><b>Note:</b> This certificate was manually approved</p> - <p><b>Note :</b> Ce certificat a été approuvé manuellement</p> + + Server version: %1 + Version du serveur : %1 - - %1 (self-signed) - %1 (auto-signé) + + SHA-1: + SHA-1 : - - %1 - %1 + + SHA-256: + SHA-256 : - - This connection is encrypted using %1 bit %2. - - Cette connexion est chiffrée en utilisant %1 bit %2. - + + State/Province: + État/Région : - - This connection is NOT secure as it is not encrypted. - - Cette connexion n'est PAS sécurisée car elle n'est pas chiffrée. - + + Subject Alternative Names: + Noms alternatifs du sujet : - - Server version: %1 - Version du serveur : %1 + + The connection is not secure + La connexion n'est pas sécurisée - - No support for SSL session tickets/identifiers - Identifiants/tickets de sessions SSL non pris en charge + + This connection is encrypted using %1 bit %2. + Cette connexion est chiffrée en utilisant %1 bit %2. - - Certificate information: - Informations du certificat : + + This connection is NOT secure as it is not encrypted. + Cette connexion n'est PAS sécurisée car elle n'est pas chiffrée. - - - The connection is not secure - La connexion n'est pas sécurisée - - - + + OCC::SslErrorDialog - - Trust this certificate anyway - Faire confiance à ce certificat malgré tout + + &lt;not specified&gt; + &lt;non spécifié&gt; - - Untrusted Certificate - Certificat non fiable + + Additional errors: + Erreurs supplémentaires : - - Cannot connect securely to <i>%1</i>: - Impossible de se connecter de manière sécurisée à <i>%1</i> : + + Cannot connect securely to <i>%1</i>: + Impossible de se connecter de manière sécurisée à <i>%1</i> : - - Additional errors: - Erreurs supplémentaires : + + Country: %1 + Pays : %1 - - with Certificate %1 - avec certificat %1 + + Effective Date: %1 + Date de début de validité : %1 - - - - &lt;not specified&gt; - &lt;non spécifié&gt; + + Expiration Date: %1 + Date d'expiration : %1 - - - Organization: %1 - Organisation : %1 + + Fingerprint (SHA-256): <tt>%1</tt> + Empreinte (SHA-256): <tt>%1</tt> - - - Unit: %1 - Unité : %1 + + Fingerprint (SHA-512): <tt>%1</tt> + Empreinte (SHA-512): <tt>%1</tt> - - - Country: %1 - Pays : %1 + + Fingerprint (SHA1): <tt>%1</tt> + Empreinte (SHA1) : <tt>%1</tt> - - Fingerprint (SHA1): <tt>%1</tt> - Empreinte (SHA1) : <tt>%1</tt> + + Issuer: %1 + Émetteur : %1 - - Fingerprint (SHA-256): <tt>%1</tt> - Empreinte (SHA-256): <tt>%1</tt> + + Organization: %1 + Organisation : %1 - - Fingerprint (SHA-512): <tt>%1</tt> - Empreinte (SHA-512): <tt>%1</tt> + + Trust this certificate anyway + Faire confiance à ce certificat malgré tout - - Effective Date: %1 - Date de début de validité : %1 + + Unit: %1 + Unité : %1 - - Expiration Date: %1 - Date d'expiration : %1 + + Untrusted Certificate + Certificat non fiable - - Issuer: %1 - Émetteur : %1 + + with Certificate %1 + avec certificat %1 - - + + OCC::SyncEngine - - %1 (skipped due to earlier error, trying again in %2) - %1 (ignoré à cause d'une précédente erreur, nouvel essai dans %2) + + %1 (skipped due to earlier error, trying again in %2) + %1 (ignoré à cause d'une précédente erreur, nouvel essai dans %2) - - Could not update file: %1 - Impossible de mettre à jour le fichier : %1 + + Cannot open the sync journal + Impossible d'ouvrir le journal de synchronisation - - Could not update virtual file metadata: %1 - Impossible de mettre à jour les métadonnées du fichier virutel : %1 + + Could not set file record to local DB: %1 + Impossible de définir l'enregistrement du fichier dans la base de données locale : %1 - - Could not update file metadata: %1 - Impossible de mettre à jour les métadonnées du fichier : %1 + + Could not update file metadata: %1 + Impossible de mettre à jour les métadonnées du fichier : %1 - - Could not set file record to local DB: %1 - Impossible de définir l'enregistrement du fichier dans la base de données locale : %1 + + Could not update file: %1 + Impossible de mettre à jour le fichier : %1 - - Unresolved conflict. - conflit non résolu. + + Could not update virtual file metadata: %1 + Impossible de mettre à jour les métadonnées du fichier virutel : %1 - - Only %1 are available, need at least %2 to start - Placeholders are postfixed with file sizes using Utility::octetsToString() - Seulement %1 disponibles, il faut au moins %2 pour démarrer + + Disk space is low: Downloads that would reduce free space below %1 were skipped. + L'espace disque est faible : les téléchargements qui amèneraient à réduire l'espace libre en dessous de %1 ont été ignorés. - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. - Impossible d'accéder ou de créer une base de données locale de synchronisation. Assurez vous de disposer des droits d'écriture dans le dossier de synchronisation. + + Only %1 are available, need at least %2 to start + Seulement %1 disponibles, il faut au moins %2 pour démarrer - - Using virtual files with suffix, but suffix is not set - Utilisation de fichiers virtuels avec suffixe, mais le suffixe n'est pas défini + + There is insufficient space available on the server for some uploads. + Il n'y a pas suffisamment d’espace disponible sur le serveur pour certains envois. - - Unable to read the blacklist from the local database - Impossible de lire la liste noire de la base de données locale + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. + Impossible d'accéder ou de créer une base de données locale de synchronisation. Assurez vous de disposer des droits d'écriture dans le dossier de synchronisation. - - Unable to read from the sync journal. - Impossible de lire le journal de synchronisation. + + Unable to read from the sync journal. + Impossible de lire le journal de synchronisation. - - Cannot open the sync journal - Impossible d'ouvrir le journal de synchronisation + + Unable to read the blacklist from the local database + Impossible de lire la liste noire de la base de données locale - - Disk space is low: Downloads that would reduce free space below %1 were skipped. - L'espace disque est faible : les téléchargements qui amèneraient à réduire l'espace libre en dessous de %1 ont été ignorés. + + Unresolved conflict. + conflit non résolu. - - There is insufficient space available on the server for some uploads. - Il n'y a pas suffisamment d’espace disponible sur le serveur pour certains envois. + + Using virtual files with suffix, but suffix is not set + Utilisation de fichiers virtuels avec suffixe, mais le suffixe n'est pas défini - - + + OCC::SyncJournalDb - - Failed to connect database. - Impossible de connecter la base de données. + + Failed to connect database. + Impossible de connecter la base de données. - - + + OCC::SyncStatusSummary - - - Offline - Hors ligne - - - - - - All synced! - Tout est synchronisé ! + + %1 of %2 + %1 sur 2% - - Some files couldn't be synced! - Certains fichiers n’ont pas pu être synchronisés ! + + %1 of %2 · %3 left + %1 sur %2 · %3 restants - - See below for errors - Voir ci-dessous pour les erreurs + + Offline + Hors ligne - - Preparing sync - Préparation de la synchronisation + + Preparing sync + Préparation de la synchronisation - - - Syncing - Synchronisation + + See below for errors + Voir ci-dessous pour les erreurs - - Sync paused - Synchronisation mise en pause + + See below for warnings + Voir ci-dessous pour les avertissements - - Some files could not be synced! - Certains fichiers n’ont pas pu être synchronisés ! + + Some files could not be synced! + Certains fichiers n’ont pas pu être synchronisés ! - - See below for warnings - Voir ci-dessous pour les avertissements + + Some files couldn't be synced! + Certains fichiers n’ont pas pu être synchronisés ! - - %1 of %2 · %3 left - %1 sur %2 · %3 restants + + Syncing file %1 of %2 + Synchronisation du fichier %1 sur %2 - - - %1 of %2 - %1 sur 2% - - - - Syncing file %1 of %2 - Synchronisation du fichier %1 sur %2 - - - + + OCC::Systray - - Download - Télécharger + + %1: %2 + %1 : %2 - - Add account - Ajouter un compte + + Add account + Ajouter un compte - - Open main dialog - Ouvrir la boîte de dialogue principale + + Download + Télécharger - - - Pause sync - Suspendre la synchronisation + + Exit %1 + Quitter %1 - - - Resume sync - Relancer la synchro + + Open main dialog + Ouvrir la boîte de dialogue principale - - Settings - Paramètres + + Pause sync for all + Suspendre toutes les synchros - - Help - Aide + + Resume sync for all + Relancer toutes les synchros - - - Exit %1 - Quitter %1 - - - - Pause sync for all - Suspendre toutes les synchros - - - - Resume sync for all - Relancer toutes les synchros - - - - %1: %2 - %1 : %2 - - - + + OCC::Theme - - <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>Client de bureau %1</p> <p>Version %1. Pour plus d'informations, cliquez <a href='%2'>ici</a>.</p> - - - <p>%1 Desktop Client</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>Client de bureau %1</p> + + <p>%1 desktop client %2</p> + <p>%1 %2</p> - - easy/0118 - Redirect URL Parameter - easy/0128 + <p>%1 Desktop Client</p> + <p>Client de bureau %1</p> - - <p><small>Using virtual files plugin: %1</small></p> - <p><small>Utilise l'extension de fichiers virtuels : %1</small></p> + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>Client de bureau %1</p> <p>Version %1. Pour plus d'informations, cliquez <a href='%2'>ici</a>.</p> - - <p>%1 desktop client %2</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 %2</p> + + <p><small>Using virtual files plugin: %1</small></p> + <p><small>Utilise l'extension de fichiers virtuels : %1</small></p> - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>Version %1. Pour plus d’informations, veuillez cliquer <a href='%2'>ici</a>.</p> + + <p>This release was supplied by %1.</p> + <p>Cette version a été fournie par %1.</p> - - <p>This release was supplied by %1.</p> - <p>Cette version a été fournie par %1.</p> + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>Version %1. Pour plus d’informations, veuillez cliquer <a href='%2'>ici</a>.</p> - - + + OCC::UnifiedSearchResultsListModel - - Failed to fetch providers. - Échec de la récupération des fournisseurs. + + Failed to fetch providers. + Échec de la récupération des fournisseurs. - - Failed to fetch search providers for '%1'. Error: %2 - Échec de la récupération des fournisseurs de recherche pour '%1'. Erreur : %2 + + Failed to fetch search providers for '%1'. Error: %2 + Échec de la récupération des fournisseurs de recherche pour '%1'. Erreur : %2 - - Search has failed for '%2'. - La recherche de '%2' a échoué. + + Search has failed for '%1'. Error: %2 + La recherche de '%1' a échoué. Erreur: %2 - - Search has failed for '%1'. Error: %2 - La recherche de '%1' a échoué. Erreur: %2 + + Search has failed for '%2'. + La recherche de '%2' a échoué. - - + + OCC::UpdateE2eeFolderMetadataJob - - Failed to update folder metadata. - Échec du téléversement du dossier des métadonnées. + + Failed to finalize item. + Échec de finalisation de l’élément. - - Failed to unlock encrypted folder. - Échec du déverrouillage du dossier chiffré. + + Failed to update folder metadata. + Échec du téléversement du dossier des métadonnées. - - - Failed to finalize item. - Échec de finalisation de l’élément. - - - + + OCC::UpdateE2eeFolderUsersMetadataJob - - - - - - - - - - Error updating metadata for a folder %1 - Erreur lors de la mise à jour des métadonnées pour un dossier %1 + Could not add or remove a folder user %1, for folder %2 + Impossible d'ajouter ou de supprimer un dossier utilisateur %1, pour le dossier %2. - - Could not fetch public key for user %1 - Impossible de récupérer la clé publique pour l'utilisateur %1 + + Could not add or remove user %1 to access folder %2 + Impossible de supprimer l’utilisateur %1 au dossier d’accès %2 ou de l’y ajouter - - Could not find root encrypted folder for folder %1 - Impossible de trouver le dossier racine chiffré pour le dossier %1 + + Could not fetch public key for user %1 + Impossible de récupérer la clé publique pour l'utilisateur %1 - - Could not add or remove user %1 to access folder %2 - Impossible de supprimer l’utilisateur %1 au dossier d’accès %2 ou de l’y ajouter + + Could not find root encrypted folder for folder %1 + Impossible de trouver le dossier racine chiffré pour le dossier %1 - Could not add or remove a folder user %1, for folder %2 - Impossible d'ajouter ou de supprimer un dossier utilisateur %1, pour le dossier %2. + + Error updating metadata for a folder %1 + Erreur lors de la mise à jour des métadonnées pour un dossier %1 - - Failed to unlock a folder. - Échec du déverrouillage d’un dossier. + + Failed to unlock a folder. + Échec du déverrouillage d’un dossier. - - + + OCC::User - - %1 notifications - + + %1 notifications + %1 notifications - - Retry all uploads - Relancer tous les envois + + Resolve conflict + Résoudre le conflit - - - Resolve conflict - Résoudre le conflit + + Retry all uploads + Relancer tous les envois - - + + OCC::UserModel - - Confirm Account Removal - Confirmer le retrait du compte - - - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Êtes-vous certain de vouloir retirer la connexion au compte <i>%1</i> ?</p><p><b>Note :</b> cette opération <b>ne supprimera aucun de vos fichiers</b> et ne supprimera pas non plus votre compte du serveur.</p> + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Êtes-vous certain de vouloir retirer la connexion au compte <i>%1</i> ?</p><p><b>Note :</b> cette opération <b>ne supprimera aucun de vos fichiers</b> et ne supprimera pas non plus votre compte du serveur.</p> - - Remove connection - Supprimer la connexion + + Confirm Account Removal + Confirmer le retrait du compte - - Cancel - Annuler + + Remove connection + Supprimer la connexion - - + + OCC::UserStatusSelectorModel - - Could not fetch predefined statuses. Make sure you are connected to the server. - Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. + + %1 days + %1 jours - - Could not fetch status. Make sure you are connected to the server. - Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. + + %1 hours + %1 heures - - Status feature is not supported. You will not be able to set your status. - La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. + + %1 minutes + %1 minutes - - Emojis are not supported. Some status functionality may not work. - Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. + + 1 day + 1 jour - - Could not set status. Make sure you are connected to the server. - Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. + + 1 hour + 1 heure - - Could not clear status message. Make sure you are connected to the server. - Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. + + 1 minute + 1 minute - - - Don't clear - Ne pas effacer + + 30 minutes + 30 minutes - - 30 minutes - 30 minutes + + 4 hours + 4 heures - - - 1 hour - 1 heure + + Could not clear status message. Make sure you are connected to the server. + Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. - - 4 hours - 4 heures + + Could not fetch predefined statuses. Make sure you are connected to the server. + Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. - - - Today - Aujourd'hui + + Could not fetch status. Make sure you are connected to the server. + Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. - - - This week - Cette semaine + + Could not set status. Make sure you are connected to the server. + Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. - - Less than a minute - Il y a moins d'une minute + + Don't clear + Ne pas effacer - - 1 minute - 1 minute + + Emojis are not supported. Some status functionality may not work. + Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. - - %1 minutes - %1 minutes + + Less than a minute + Il y a moins d'une minute - - %1 hours - %1 heures + + Status feature is not supported. You will not be able to set your status. + La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. - - 1 day - 1 jour + + This week + Cette semaine - - %1 days - %1 jours + + Today + Aujourd'hui - - + + OCC::ValidateChecksumHeader - - The checksum header is malformed. - L’en-tête de la somme de contrôle est mal formé. + + The checksum header contained an unknown checksum type "%1" + L’en-tête de la somme de contrôle contenait un type de somme de contrôle inconnu « "%1" » - - The checksum header contained an unknown checksum type "%1" - L’en-tête de la somme de contrôle contenait un type de somme de contrôle inconnu « "%1" » + + The checksum header is malformed. + L’en-tête de la somme de contrôle est mal formé. - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Le fichier téléchargé ne correspond pas à la somme de contrôle, il sera repris. "%1" != "%2" + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + Le fichier téléchargé ne correspond pas à la somme de contrôle, il sera repris. "%1" != "%2" - - + + OCC::Vfs - - The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - La fonctionnalité système de fichiers virtuels requiert un système de fichiers de type NTFS alors que %1 utilise %2. + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 + La fonctionnalité système de fichiers virtuels requiert un système de fichiers de type NTFS alors que %1 utilise %2. - - + + OCC::VfsDownloadErrorDialog - - Download error - Erreur de téléchargement - - - - Error downloading - Erreur au téléchargement + + %1 could not be downloaded. + %1 ne peut pas être téléchargé. - - could not be downloaded - ne peut pas être téléchargé + + > More details + > Plus de détails - - > More details - > Plus de détails + + could not be downloaded + ne peut pas être téléchargé - - More details - Plus de détails + + Download error + Erreur de téléchargement - - Error downloading %1 - Erreur au téléchargement %1 + + Error downloading + Erreur au téléchargement - - %1 could not be downloaded. - %1 ne peut pas être téléchargé. + + Error downloading %1 + Erreur au téléchargement %1 - - - OCC::VfsSuffix - - - Error updating metadata due to invalid modification time - Erreur de mise à jour des métadonnées à cause d'une date de modification invalide + + More details + Plus de détails - - - OCC::VfsXAttr - - - - Error updating metadata due to invalid modification time - Erreur de mise à jour des métadonnées à cause d'une date de modification invalide - - - + + OCC::WebEnginePage - - Invalid certificate detected - Certificat invalide + + Invalid certificate detected + Certificat invalide - - The host "%1" provided an invalid certificate. Continue? - L’hôte "%1" utilise un certificat invalide. Continuer ? + + The host "%1" provided an invalid certificate. Continue? + L’hôte "%1" utilise un certificat invalide. Continuer ? - - + + OCC::WebFlowCredentials - You have been logged out of your account %1 at %2. Please login again. - Vous avez été déconnecté de votre compte %1 à %2. Merci de vous reconnecter. + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + <b>Vous avez été déconnecté(e) de votre compte %1 à %2. Veuillez vous reconnecter.</b> - Please login with the account: %1 - Veuillez vous connecter avec le compte : %1 + Please login with the account: %1 + Veuillez vous connecter avec le compte : %1 - - <b>You have been logged out of your account %1 at %2. Please login again.</b> - <b>Vous avez été déconnecté(e) de votre compte %1 à %2. Veuillez vous reconnecter.</b> + You have been logged out of your account %1 at %2. Please login again. + Vous avez été déconnecté de votre compte %1 à %2. Merci de vous reconnecter. - - + + OCC::WelcomePage - - Form - Formulaire + Easy-to-use web mail, calendaring & contacts + Courrier électronique, calendrier et contacts en ligne faciles à utiliser - - Log in - Se connecter + + Form + Formulaire - - Sign up with provider - Se connecter avec un fournisseur + + Host your own server + Hébergez votre propre serveur - - Keep your data secure and under your control - Gardez vos données en sécurité et sous votre contrôle + + Keep your data secure and under your control + Gardez vos données en sécurité et sous votre contrôle - Secure collaboration & file exchange - Collaboration et échange de fichiers sécurisés + + Log in + Se connecter - Easy-to-use web mail, calendaring & contacts - Courrier électronique, calendrier et contacts en ligne faciles à utiliser + Screensharing, online meetings & web conferences + Partage d'écran, réunions en ligne et conférences Web - Screensharing, online meetings & web conferences - Partage d'écran, réunions en ligne et conférences Web + Secure collaboration & file exchange + Collaboration et échange de fichiers sécurisés - - Host your own server - Hébergez votre propre serveur + + Sign up with provider + Se connecter avec un fournisseur - - + + OCC::ownCloudGui - - Unsupported Server Version - Version du Serveur non prise en charge - - - - The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - Le serveur sur le compte %1 fonctionne avec une version non-supportée %2. Utiliser ce client avec des versions non-supportées du serveur n'est pas testé et est potentiellement dangereux. Procédez à vos risques et périls. - - - - Disconnected - Déconnecté - - - - Disconnected from some accounts - Déconnecté de certains comptes - - - - Disconnected from %1 - Déconnecté de %1 - - - - Disconnected from accounts: - Déconnecté des comptes : - - - - Account %1: %2 - Compte %1 : %2 - - - - Please sign in - Veuillez vous connecter + + Account %1: %2 + Compte %1 : %2 - - Signed out - Session fermée + + Account synchronization is disabled + La synchronisation est en pause - - Account synchronization is disabled - La synchronisation est en pause + + Disconnected from %1 + Déconnecté de %1 - - - Synchronization is paused - La synchronisation est en pause + + Disconnected from accounts: + Déconnecté des comptes : - - Folder %1: %2 - Dossier %1 : %2 + + Disconnected from some accounts + Déconnecté de certains comptes - - Unresolved conflicts - Conflits non résolus + + Error during synchronization + Erreur durant la synchronisation - - Up to date - À jour + + Folder %1: %2 + Dossier %1 : %2 - - Error during synchronization - Erreur durant la synchronisation + + No sync folders configured + Aucun dossier de synchronisation configuré - - There are no sync folders configured. - Aucun dossier à synchroniser n'est configuré + + Please sign in + Veuillez vous connecter - - No sync folders configured - Aucun dossier de synchronisation configuré + + Synchronization is paused + La synchronisation est en pause - - Checking for changes in remote "%1" - Vérification des modifications dans "%1" distant + + Syncing %1 of %2 (%3 left) + Synchronisation de %1 sur %2 (%3 restants) - - Checking for changes in local "%1" - Vérification des modifications dans "%1" local + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + Le serveur sur le compte %1 fonctionne avec une version non-supportée %2. Utiliser ce client avec des versions non-supportées du serveur n'est pas testé et est potentiellement dangereux. Procédez à vos risques et périls. - - Syncing %1 of %2 (%3 left) - Synchronisation de %1 sur %2 (%3 restants) + + There are no sync folders configured. + Aucun dossier à synchroniser n'est configuré - - Syncing %1 of %2 - Synchronisation %1 sur %2 + + Unresolved conflicts + Conflits non résolus - - Syncing %1 (%2 left) - Synchronisation de %1 (%2 restants) + + Unsupported Server Version + Version du Serveur non prise en charge - - Syncing %1 - Synchronisation de %1 + + Up to date + À jour - - - %1 (%2, %3) - %1 (%2, %3) - - - + + OCC::sesSnackBar - - Error - Erreur - - - - Warning - Attention + + Success + Réussite - - - Success - Réussite - - - + + OwncloudAdvancedSetupPage - - &Local Folder - &Dossier local - - - - Username - Nom d’utilisateur - - - - Local Folder - Dossier local + + &Local Folder + &Dossier local - - Choose different folder - Choisir un autre dossier + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Si cette case est cochée, le contenu existant dans le dossier local sera effacé pour commencer une synchronisation propre à partir du serveur.</p><p>Ne cochez pas cette case si le contenu local doit être téléchargé dans le dossier du serveur..</p></body></html> - - Server address - Adresse du serveur + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Si cette case est cochée, le contenu existant du dossier local sera supprimé pour démarrer une synchronisation propre depuis le serveur.</p><p>Ne pas cocher si le contenu local doit être téléversé vers le serveur.</p></body></html> - - Sync Logo - Logo de synchronisation + + Ask before syncing external storages + Confirmation avant de synchroniser des stockages externes - - Synchronize everything from server - Tout synchroniser depuis le serveur + + Ask before syncing folders larger than + Demander confirmation avant de synchroniser les dossiers de taille supérieure à - - Ask before syncing folders larger than - Demander confirmation avant de synchroniser les dossiers de taille supérieure à + + Choose different folder + Choisir un autre dossier - - - MB - - Trailing part of "Ask confirmation before syncing folder larger than" - MO - - - - - <html><head/><body><p>If this box is checked, - existing content in the local folder will be erased to start a clean sync - from the server.</p><p>Do not check this if the local content - should be uploaded to the servers folder.</p></body></html> - - <html><head/><body><p>Si cette case est cochée, le contenu existant dans le dossier local sera effacé pour commencer une synchronisation propre à partir du serveur.</p><p>Ne cochez pas cette case si le contenu local doit être téléchargé dans le dossier du serveur..</p></body></html> - - + + Erase local folder and start a clean sync + Effacer le dossier local et démarrer une synchronisation complète - MB - Trailing part of "Ask confirmation before syncing folder larger than" - Mo + + Keep local data + Conserver les données locales - - Ask before syncing external storages - Confirmation avant de synchroniser des stockages externes + + Local Folder + Dossier local - - Choose what to sync - Sélectionner le contenu à synchroniser + + Server address + Adresse du serveur - - Keep local data - Conserver les données locales + + Sync Logo + Logo de synchronisation - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Si cette case est cochée, le contenu existant du dossier local sera supprimé pour démarrer une synchronisation propre depuis le serveur.</p><p>Ne pas cocher si le contenu local doit être téléversé vers le serveur.</p></body></html> + + Synchronize everything from server + Tout synchroniser depuis le serveur - - Erase local folder and start a clean sync - Effacer le dossier local et démarrer une synchronisation complète + Username + Nom d’utilisateur - - + + OwncloudHttpCredsPage - - &Username - &Nom d’utilisateur + + &Password + &Mot de passe - - &Password - &Mot de passe + + &Username + &Nom d’utilisateur - - + + OwncloudOAuthCredsPage - Please switch to your browser to proceed. - Merci de basculer vers votre navigateur pour terminer. - - - An error occurred while connecting. Please try again. - Une erreur s'est produite lors de la connexion. Veuillez ré-essayer. + Please switch to your browser to proceed. + Merci de basculer vers votre navigateur pour terminer. - Re-open Browser - Redémarrez votre navigateur + Re-open Browser + Redémarrez votre navigateur - - Copy link - Copier le lien - - - + + OwncloudSetupPage - - - TextLabel - Étiquette de texte + + TextLabel + Étiquette de texte - Logo - Logo + + This is the link to your %1 web interface when you open it in the browser. + Il s'agit de l'adresse URL lorsque vous utilisez %1 dans un navigateur. - - - Server address - Adresse du serveur - - - - This is the link to your %1 web interface when you open it in the browser. - Il s'agit de l'adresse URL lorsque vous utilisez %1 dans un navigateur. - - - + + QObject - - - New folder - Nouveau dossier + + + %nd + + + + %nd + - - - You renamed %1 - Vous avez renommé %1 + + + %nh + + + + %nh + - - - You deleted %1 - Vous avez supprimé %1 + + + %nm + + + + %nm + - - You created %1 - Vous avez créé %1 + + 1m + 1m - - You changed %1 - Vous avez modifié %1 + + Could not create debug archive in selected location! + Impossible de créer une archive de débogage à l’emplacement sélectionné ! - - Synced %1 - %1 a été synchronisé - - - - %nd - delay in days after an activity - - %nj. - %njrs - + + Failed to create debug archive + Échec de création de l’archive de débogage - - in the future - Dans le futur - - - - %nh - delay in hours after an activity - - %nh - %nh - + + in the future + Dans le futur - - now - A l'instant + + New folder + Nouveau dossier - - 1m - one minute after activity date and time - 1m - - - - %nm - delay in minutes after an activity - - %nmin - %nmin - + + now + A l'instant - - Some time ago - Il y a quelque temps + + Paths beginning with '#' character are not supported in VFS mode. + Les chemins commençant par le caractère « # » ne sont pas pris en charge dans le mode VFS. - - %1: %2 - this displays an error string (%2) for a file %1 - %1 : %2 + + Some time ago + Il y a quelque temps - - Paths beginning with '#' character are not supported in VFS mode. - Les chemins commençant par le caractère « # » ne sont pas pris en charge dans le mode VFS. + + Synced %1 + %1 a été synchronisé - - Failed to create debug archive - Échec de création de l’archive de débogage + + The directory %1 cannot be part of your sync directory. Please choose another folder. + La répertoire %1 ne peut pas faire partie de votre répertoire de synchronisation. Veuillez choisir un autre dossier. - - Could not create debug archive in selected location! - Impossible de créer une archive de débogage à l’emplacement sélectionné ! + + You changed %1 + Vous avez modifié %1 - - Reply - Répondre + + You created %1 + Vous avez créé %1 - - The directory %1 cannot be part of your sync directory. Please choose another folder. - La répertoire %1 ne peut pas faire partie de votre répertoire de synchronisation. Veuillez choisir un autre dossier. + + You deleted %1 + Vous avez supprimé %1 - - - ResolveConflictsDialog - - Solve sync conflicts - Résoudre les conflits de synchronisation + + You renamed %1 + Vous avez renommé %1 + + + ResolveConflictsDialog - - %1 files in conflict - indicate the number of conflicts to resolve - - %1 fichier en conflit - %1 fichiers en conflit - - - - - Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - Choisissez si vous souhaitez conserver la version locale, la version serveur, ou les deux. Si vous choisissez les deux, un numéro sera ajouté au nom du fichier local. + + %1 files in conflict + + %1 fichier in conflict + %1 files in conflict + %1 fichiers en conflit + - - All local versions - Toutes les versions locales + + All local versions + Toutes les versions locales - - All server versions - Toutes les versions serveur + + All server versions + Toutes les versions serveur - - Resolve conflicts - Résoudre les conflits + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. + Choisissez si vous souhaitez conserver la version locale, la version serveur, ou les deux. Si vous choisissez les deux, un numéro sera ajouté au nom du fichier local. - - Cancel - Annuler + + Resolve conflicts + Résoudre les conflits - - - SesErrorBox - - Error - Erreur + + Solve sync conflicts + Résoudre les conflits de synchronisation - - + + SesTrayHeader - - Website - Site Web + + Open local or group folders + Ouvrir des dossiers locaux ou de groupe - - Open Nextcloud in browser - Ouvrir Nextcloud dans le navigateur + + Open Nextcloud in browser + Ouvrir HiDrive Next dans le navigateur - - Open local or group folders - Ouvrir des dossiers locaux ou de groupe + + Website + Site Web - - + + ShareDelegate - - Create a new share link - Créer un nouveau lien de partage + + Copied! + Copié ! - - Copy share link location - Copier le lien de partage + + Copy share link location + Copier le lien de partage - - Copied! - Copié ! + + Create a new share link + Créer un nouveau lien de partage - - - Share options - Options de partage - - - + + ShareDetailsPage - - An error occurred setting the share password. - Une erreur est survenue lors de la configuration du mot de passe de partage. - - - Edit share - Modifier le partage + + Add another link + Ajouter un autre lien - - Dismiss - Révoquer + + Allow resharing + Permettre le repartage - Share label - Libellé du partage + + Allow upload and editing + Autoriser le téléversement et l'édition - - - Allow upload and editing - Autoriser le téléversement et l'édition + + An error occurred setting the share password. + Une erreur est survenue lors de la configuration du mot de passe de partage. - - Custom Permissions - Autorisations personnalisées + + Copy share link + Copier le lien - - View only - Afficher seulement + + Custom Permissions + Autorisations personnalisées - - File drop (upload only) - Dépôt de fichiers (envoi uniquement) + Edit share + Modifier le partage - - Allow resharing - Permettre le repartage + + Enter the note to recipient + Saisir la remarque à l’attention du destinataire - - Hide download - Masquer le téléchargement + + File drop (upload only) + Dépôt de fichiers (envoi uniquement) - - Password protect - Protéger par mot de passe + + Hide download + Masquer le téléchargement - - Set expiration date - Définir une date d'expiration + + Note to recipient + Note au destinataire - - Note to recipient - Note au destinataire + + Password protect + Protéger par mot de passe - - Enter the note to recipient - Saisir la remarque à l’attention du destinataire + + Set expiration date + Définir une date d'expiration - - Unshare - Cesser le partage + Share label + Libellé du partage - - Add another link - Ajouter un autre lien + + Share link copied! + Lien copié ! - - Share link copied! - Lien copié ! + + Unshare + Cesser le partage - - Copy share link - Copier le lien + + View only + Afficher seulement - - + + ShareView - - Password required for new share - Mot de passe requis pour le nouveau partage + + Password required for new share + Mot de passe requis pour le nouveau partage - - Share password - Mot de passe du partage + + Share password + Mot de passe du partage - - Sharing is disabled - Le partage est désactivté + + Sharing is disabled + Le partage est désactivté - - This item cannot be shared. - L'élément ne peut pas être partagé. + + Sharing is disabled. + Le partage est désactivé. - - Sharing is disabled. - Le partage est désactivé. + + This item cannot be shared. + L'élément ne peut pas être partagé. - - + + ShareeSearchField - - Search for users or groups… - Rechercher des utilisateurs ou des groupes... - - - - Sharing is not available for this folder - Le partage n'est pas disponible pour ce dossier + + Search for users or groups… + Rechercher des utilisateurs ou des groupes... - - - SyncJournalDb - Failed to connect database. - Impossible de connecter la base de données. + + Sharing is not available for this folder + Le partage n'est pas disponible pour ce dossier - - + + SyncStatus - - Sync now - Synchroniser maintenant + + Sync now + Synchroniser maintenant - - - Resolve conflicts - Résoudre les conflits - - - + + TalkReplyTextField - - Reply to … - Répondre à... + + Reply to … + Répondre à... - - Send reply to chat message - Envoyer la réponse dans la discussion + + Send reply to chat message + Envoyer la réponse dans la discussion - - + + TestSetUserStatusDialog - - - 1 day - 1 jour - - - - - - - - Don't clear - Ne pas effacer - - - - - - - - 1 hour - 1 heure - - - - - - - 30 minutes - 30 minutes - - - - - - 4 hours - 4 heures + + 7 days + 7 jours - - - - - Today - Aujourd'hui - - - - - - This week - Cette semaine - - - - Less than a minute - Il y a moins d'une minute - - - - 1 minute - 1 minute - - - - 7 days - - - - - - Could not fetch predefined statuses. Make sure you are connected to the server. - Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. - - - - Could not fetch status. Make sure you are connected to the server. - Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. - - - - Status feature is not supported. You will not be able to set your status. - La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. - - - - Could not set status. Make sure you are connected to the server. - Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. - - - - Emojis are not supported. Some status functionality may not work. - Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. - - - - Could not clear status message. Make sure you are connected to the server. - Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. - - - + + TrayFoldersMenuButton - - Files - Fichiers - - - - Open local or group folders - Ouvrir des dossiers locaux ou de groupe - - - - Open local folder - Ouvrir le dossier local + + Files + Fichiers - - Connected - Connecté + Group folder button + Bouton du dossier de groupes - - Disconnected - Déconnecté + + Open %1 in file explorer + Ouvrir %1 dans l'explorateur de fichiers - Group folder button - Bouton du dossier de groupes + + Open group folder "%1" + Ouvrir le dossier de groupes "%1" - - Open local folder "%1" - Ouvrir le dossier local « %1 » + + Open local folder + Ouvrir le dossier local - - Open group folder "%1" - Ouvrir le dossier de groupes "%1" + + Open local folder "%1" + Ouvrir le dossier local « %1 » - - Open %1 in file explorer - Ouvrir %1 dans l'explorateur de fichiers + + User group and local folders menu + Menu de groupe d'utilisateurs et dossiers locaux - - - User group and local folders menu - Menu de groupe d'utilisateurs et dossiers locaux - - - + + TrayWindowAccountMenu - - Current account - Compte actuel - - - - Resume sync for all - Reprendre toutes les synchros + + Account switcher and settings menu + Sélecteur de compte et menu des paramètres - - Pause sync for all - Suspendre synchros + + Current account + Compte actuel - - Add account - Ajouter un compte + + Current account avatar + Avatar actuel du compte - - Settings - Paramètres + + Current account status is do not disturb + Le statut du compte actuel est Ne pas déranger - - Exit - Quitter + + Current account status is online + Le statut du compte actuel est En ligne - - Current account avatar - Avatar actuel du compte + + Exit + Quitter - - - Current account status is online - Le statut du compte actuel est En ligne - - - - Current account status is do not disturb - Le statut du compte actuel est Ne pas déranger - - - - Account switcher and settings menu - Sélecteur de compte et menu des paramètres - - - + + TrayWindowHeaderBar - - Website - Site Web - - - - Open Nextcloud in browser - Ouvrir Nextcloud dans le navigateur - - - - Open local or group folders - Ouvrir des dossiers locaux ou de groupe - - - - Open Nextcloud Talk in browser - Ouvrez Nextcloud Talk dans le navigateur + + More apps + Plus d’applications - - More apps - Plus d’applications + + Open %1 in browser + Ouvrir %1 dans le navigateur - - Open %1 in browser - Ouvrir %1 dans le navigateur + + Open Nextcloud Talk in browser + Ouvrez Nextcloud Talk dans le navigateur - - + + UnifiedSearchInputContainer - - Search files, messages, events … - Rechercher des fichiers, des messages, des événements … + + Search files, messages, events … + Rechercher des fichiers, des messages, des événements … - - + + UnifiedSearchResultFetchMoreTrigger - - Load more results - Charger plus de résultats + + Load more results + Charger plus de résultats - - + + UnifiedSearchResultItemSkeleton - - Search result skeleton. - Squelette de résultat de recherche. + + Search result skeleton. + Squelette de résultat de recherche. - - - UnifiedSearchResultListItem - - - Load more results - Charger plus de résultats - - - + + UnifiedSearchResultNothingFound - - No results for - Aucun résultat pour + + No results for + Aucun résultat pour - - + + UnifiedSearchResultSectionItem - - Search results section %1 - Section de résultats de recherche %1 + + Search results section %1 + Section de résultats de recherche %1 - - + + UserLine - - Switch to account - Utiliser ce compte - - - Current account status is online - Le statut actuel du compte est "en ligne" - - - Current account status is do not disturb - Le statut actuel du compte est "ne pas déranger" - - - - Account actions - Actions du compte - - - - Set status - Définir le statut + + Account actions + Actions du compte - - - Log out - Se déconnecter + + Remove account + Retirer le compte - - - Log in - Se connecter + + Set status + Définir le statut - - Remove account - Retirer le compte + + Switch to account + Utiliser ce compte - - + + UserStatusSelector - - Online status - Statut en ligne + + Appear offline + Apparaitre hors-ligne - - Online - En ligne + + Away + Absent(e) - - Away - Absent(e) + + Clear status message + Effacer le message de statut - - Do not disturb - Ne pas déranger + + Clear status message after + Effacer le message de statut après - - Mute all notifications - Désactiver toutes les notifications + + Do not disturb + Ne pas déranger - - Invisible - Invisible + + Invisible + Invisible - - Appear offline - Apparaitre hors-ligne + + Mute all notifications + Désactiver toutes les notifications - - Status message - Message de statut + + Online + En ligne - - What is your status? - Quel est votre statut ? + + Online status + Statut en ligne - - Clear status message after - Effacer le message de statut après + + Set status message + Définir le message de statut - - Cancel - Annuler + + Status message + Message de statut - - Clear status message - Effacer le message de statut + + What is your status? + Quel est votre statut ? - - - Set status message - Définir le message de statut - - - + + Utility - - %L1 B - %L1 octets + + %L1 B + %L1 octets - - %L1 TB - %L1 To + + %L1 GB + %L1 Go - - %L1 GB - %L1 Go + + %L1 KB + %L1 Ko - - %L1 MB - %L1 Mo + + %L1 MB + %L1 Mo - - %L1 KB - %L1 Ko + + %L1 TB + %L1 To - - %n year(s) - - %n an - %n ans - + + %n day(s) + + + + + - - %n month(s) - - %n mois - %n mois - + + %n hour(s) + + + + + - - %n day(s) - - %n jour - %n jours - + + %n minute(s) + + + + + - - %n hour(s) - - %n heure - %n heures - + + %n month(s) + + + + + - - %n minute(s) - - %n minute - %n minutes - + + %n second(s) + + + + + - - %n second(s) - - %n seconde - %n secondes - - - - - %1 %2 - %1 %2 - - - - ValidateChecksumHeader - - The checksum header is malformed. - L’en-tête de la somme de contrôle est mal formé. - - - The checksum header contained an unknown checksum type "%1" - L’en-tête de somme de contrôle contenait un type de somme de contrôle inconnu « %1 » - - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Le fichier téléchargé ne correspond pas à la somme de contrôle, il sera repris. "%1" != "%2" + + %n year(s) + + + + + - - + + Window - - Nextcloud desktop main dialog - Boîte de dialogue principale du bureau Nextcloud - - - Current account - Compte actuel - - - Resume sync for all - Relancer toutes les synchronisations - - - Pause sync for all - Suspendre toutes les synchros - - - Add account - Ajouter un compte - - - Add new account - Ajouter un nouveau compte + Add new account + Ajouter un nouveau compte - Settings - Paramètres + + New activities + Nouvelles activités - Exit - Quitter + + Nextcloud desktop main dialog + Boîte de dialogue principale du bureau Nextcloud - Current account avatar - Avatar actuel du compte + + Unified search results list + Liste de résultats de recherche unifiée - - Current account status is online - Le statut actuel du compte est "en ligne" - - - Current account status is do not disturb - Le statut actuel du compte est "ne pas déranger" - - - Account switcher and settings menu - Sélecteur de compte et menu des paramètres - - - Open local or group folders - Ouvrir des dossiers locaux ou de groupe - - - Open Nextcloud Talk in browser - Ouvrez Nextcloud Talk dans le navigateur - - - More apps - Plus d'applications - - - Open %1 in browser - Ouvrir %1 dans le navigateur - - - - Unified search results list - Liste de résultats de recherche unifiée - - - - New activities - Nouvelles activités - - - + + main.cpp - - System Tray not available - Zone de notification système non disponible - - - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - %1 nécessite une zone de notification système fonctionnelle. Si vous utiliser XFCE, veuillez suivre <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">ces instructions</a>. Sinon, installez une application de la barre d'état système telle que "trayer" et réessayez. + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. + %1 nécessite une zone de notification système fonctionnelle. Si vous utiliser XFCE, veuillez suivre <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">ces instructions</a>. Sinon, installez une application de la barre d'état système telle que "trayer" et réessayez. - - - nextcloudTheme::about() - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> + + System Tray not available + Zone de notification système non disponible - - + + nextcloudTheme::aboutInfo() - - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> - - + + progress - - Virtual file created - Fichier virtuel créé - - - - Replaced by virtual file - Remplacé par un fichier virtuel - - - - Downloaded - Reçu - - - - Uploaded - Envoyé + + Deleted + Supprimé - - Server version downloaded, copied changed local file into conflict file - La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier conflit. + + Downloaded + Reçu - - Server version downloaded, copied changed local file into case conflict conflict file - La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier de conflit de casse. + + downloading + téléchargement de - - Deleted - Supprimé + + error + erreur - - Moved to %1 - Déplacé vers %1 + + Filesystem access error + Erreur d'accès au système de fichiers - - Ignored - Ignoré + + Ignored + Ignoré - - Filesystem access error - Erreur d'accès au système de fichiers + + Moved to %1 + Déplacé vers %1 - - Error - Erreur + + moving + déplacement - - Updated local metadata - Métadonnées locales mises à jour + + Replaced by virtual file + Remplacé par un fichier virtuel - - Updated local virtual files metadata - Métadonnées des fichiers virtuels locaux mises à jour + + Server version downloaded, copied changed local file into case conflict conflict file + La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier de conflit de casse. - - - Unknown - Inconnu + + Server version downloaded, copied changed local file into conflict file + La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier conflit. - - downloading - téléchargement de + + Unknown + Inconnu - - uploading - envoi + + Updated local metadata + Métadonnées locales mises à jour - - deleting - suppression + + Updated local virtual files metadata + Métadonnées des fichiers virtuels locaux mises à jour - - moving - déplacement + + updating local metadata + Mise à jour des métadonnées locales - - ignoring - Ignore + + updating local virtual files metadata + Mise à jour des métadonnées des fichiers virtuels locaux - - error - erreur + + Uploaded + Envoyé - - updating local metadata - Mise à jour des métadonnées locales + + uploading + envoi - - updating local virtual files metadata - mise à jour des métadonnées des fichiers virtuels locaux + + Virtual file created + Fichier virtuel créé - - + + theme - - Status undefined - Statut indéfini + + Aborting … + Annulation... - - Waiting to start sync - Synchronisation en attente + + Preparing to sync + Préparation à la synchronisation - - Sync is running - Synchronisation en cours + + Setup Error + Erreur de configuration - - Sync Success - Synchronisation réussie + + Status undefined + Statut indéfini - - Sync Success, some files were ignored. - Synchronisation terminée avec succès, certains fichiers ont été ignorés. + + Sync Error + Erreur de synchronisation - - Sync Error - Erreur de synchronisation + + Sync is paused + La synchronisation est en pause - - Setup Error - Erreur de configuration + + Sync is running + Synchronisation en cours - - Preparing to sync - Préparation à la synchronisation + + Sync Success + Synchronisation réussie - - Aborting … - Annulation... + + Sync Success, some files were ignored. + Synchronisation terminée avec succès, certains fichiers ont été ignorés. - - Sync is paused - La synchronisation est en pause + + Waiting to start sync + Synchronisation en attente - - + + utility - - Could not open browser - Impossible de démarrer le navigateur + + Always available locally + Toujours disponible localement - - There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - Une erreur est survenue au lancement du navigateur pour visiter l'adresse %1. Il est possible qu'aucun navigateur par défaut ne soit configuré. + + Available online only + Disponible seulement en ligne - - Could not open email client - Impossible d'ouvrir le client de messagerie + + Could not open browser + Impossible de démarrer le navigateur - - There was an error when launching the email client to create a new message. Maybe no default email client is configured? - Il y a eu une erreur lors du lancement du client de messagerie pour créer un nouveau message. Peut-être qu'aucun client de messagerie n'est configuré ? + + Could not open email client + Impossible d'ouvrir le client de messagerie - - Always available locally - Toujours disponible localement + + Currently available locally + Actuellement disponible en local - - Currently available locally - Actuellement disponible en local + + Free up local space + Libérer de l'espace local - - Some available online only - Certains sont disponibles en ligne seulement + + Make always available locally + Toujours rendre disponible localement - - Available online only - Disponible seulement en ligne + + Some available online only + Certains sont disponibles en ligne seulement - - Make always available locally - Toujours rendre disponible localement + + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? + Une erreur est survenue au lancement du navigateur pour visiter l'adresse %1. Il est possible qu'aucun navigateur par défaut ne soit configuré. - - Free up local space - Libérer de l'espace local + + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + Il y a eu une erreur lors du lancement du client de messagerie pour créer un nouveau message. Peut-être qu'aucun client de messagerie n'est configuré ? - + diff --git a/translations/client_nl.ts b/translations/client_nl.ts index 8abb06155a555..e746bff4631a4 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -1,4138 +1,3728 @@ - - - - - ActivityItem - - - Open %1 locally - %1 lokaal openen - - - - In %1 - In %1 - - - - ActivityItemContent - - - Open file details - Bestandsdetails openen - + + + - - Dismiss - Negeren + &Automatically check for Updates + &Controleer automatisch op updates - - - ActivityList - - Activity list - Activiteitenlijst + &Launch on System Startup + &Starten bij systeemstart - - No activities yet - Nog geen activiteiten + Copy link + Link kopiëren - - - BasicComboBox - - Clear status message menu - + No Proxy + Geen Proxy - - - CallNotificationDialog - - Talk notification caller avatar - + Remove All Files? + Alle bestanden verwijderen? - - Answer Talk call notification - + Show Call Notifications + - - Decline - Afwijzen + Show Server &Notifications + Tonen server&meldingen - - Decline Talk call notification - + Show sync folders in &Explorer's navigation pane + - - - CloudProviderWrapper - - %1 (%2, %3) - %1 (%2, %3) + Use &Monochrome Icons + Gebruik &monochrome pictogrammen + + + ActivityItem - - Checking for changes in "%1" - Controleren op wijzigingen in '%1' + + In %1 + In %1 - - Syncing %1 of %2 (%3 left) - Synchroniseer %1 van %2 (%3 over) + + Open %1 locally + %1 lokaal openen + + + ActivityItemContent - - Syncing %1 of %2 - Synchroniseren %1 van %2 + + Dismiss + Negeren - - Syncing %1 (%2 left) - Synchroniseren %1 (%2 over) + + Open file details + Bestandsdetails openen + + + ActivityList - - Syncing %1 - Synchroniseren %1 + + Activity list + Activiteitenlijst - - - No recently changed files - Geen recent gewijzigde bestanden + + No activities yet + Nog geen activiteiten + + + BasicComboBox - - Sync paused - Synchroniseren gepauzeerd + + Clear status message menu + Statusbericht wissen + + + CallNotificationDialog - - Syncing - Synchroniseren + + Answer Talk call notification + - - Open website - Openen website + + Decline + Afwijzen - - Recently changed - Recent gewijzigd + + Decline Talk call notification + Afwijzingsmelding voor gesprek - - Pause synchronization - Pauzeer synchronisatie + + Talk notification caller avatar + Spraakmelding beller avatar + + + CloudProviderWrapper - - Help - Help + + %1 (%2, %3) + %1 (%2, %3) - - Settings - Instellingen + + Checking for changes in "%1" + Controleren op wijzigingen in '%1' - - Log out - Uitloggen + + Help + Help - - Quit sync client - Afsluiten synchronisatieclient + + Log out + Uitloggen - - - ConflictDelegate - - Local version - Lokale versie + + No recently changed files + Geen recent gewijzigde bestanden - - Server version - Serverversie + + Open website + Openen website - - - CrashReporter - - Tomahawk Crash Reporter - + + Pause synchronization + Pauzeer synchronisatie - - <html><head/><body><p><br/></p></body></html> - + + Quit sync client + Afsluiten synchronisatieclient - - Abort - + + Recently changed + Recent gewijzigd - - Send this report - + + Settings + Instellingen - - Don't send - + + Sync paused + Synchroniseren gepauzeerd - - You can disable sending crash reports in the configuration dialog. - + + Syncing + Synchroniseren - - - - We cannot gather useful debug information on your system. - + + Syncing %1 + Synchroniseren %1 - - - - - - Close - Sluiten + + Syncing %1 (%2 left) + Synchroniseren %1 (%2 over) - - Ready to send debug information (<a href="%1">view backtrace</a>). - + + Syncing %1 of %2 + Synchroniseren %1 van %2 - - Gathering debug information... - + + Syncing %1 of %2 (%3 left) + Synchroniseer %1 van %2 (%3 over) + + + ConflictDelegate - - Uploaded %L1 of %L2 KB. - + + Local version + Lokale versie - - Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. - + + Server version + Serverversie + + + CrashReporter - - Failed to send crash info. - + + Close + Sluiten - - + + EditFileLocallyLoadingDialog - - Opening file for local editing - + + Opening file for local editing + - - + + EmojiPicker - - No recent emojis - + + No recent emojis + - - + + ErrorBox - - Error - Fout + + Error + Fout - - + + FakeHangingReply - - Operation canceled - + + Operation canceled + Operatie geannuleerd - - + + FileDetailsPage - - Dismiss - Negeren - - - Activity - Activiteit + Sharing + Delen - - Sharing - Delen - - - + + FileDetailsWindow - - File details of %1 · %2 - + + File details of %1 · %2 + - - + + FileProviderEvictionDialog - - Evict materialised files - + + Evict materialised files + - - Materialised items - + + Materialised items + - - Reload - + + Reload + - - + + FileProviderFastEnumerationSettings - - Enable fast sync - + + Enable fast sync + - - Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + - - + + FileProviderFileDelegate - - Delete - Verwijderen + + Delete + Verwijderen - - + + FileProviderSettings - - Virtual files settings - + + Advanced + Geavanceerd - - General settings - + + Create debug archive + - - Enable virtual files - + + Enable virtual files + - - Advanced - Geavanceerd + + General settings + - - Signal file provider domain - + + Signal file provider domain + - - Create debug archive - + + Virtual files settings + - - + + FileProviderStorageInfo - - Local storage use - + + %1 GB of %2 GB remote files synced + - - %1 GB of %2 GB remote files synced - + + Evict local copies... + Lokale kopieën verwijderen... - - Evict local copies... - + + Local storage use + - - + + FileProviderSyncStatus - - Syncing - Synchroniseren - - - - All synced! - Alles gesynchroniseerd! + + All synced! + Alles gesynchroniseerd! - - + + FileSystem - - Error removing "%1": %2 - Fout bij verwijderen '%1': %2 + Could not make directories in trash + Kan geen mappen maken in de prullenbak - - Could not remove folder "%1" - Kan map "%1" niet verwijderen + Could not move "%1" to "%2" + Kan "%1" niet verplaatsen naar "%2" - Could not make directories in trash - Kan geen mappen maken in de prullenbak + + Could not remove folder "%1" + Kan map "%1" niet verwijderen - Could not move "%1" to "%2" - Kan "%1" niet verplaatsen naar "%2" + + Error removing "%1": %2 + Fout bij verwijderen '%1': %2 - Moving to the trash is not implemented on this platform - Verplaatsen naar de prullenbak wordt niet ondersteund op dit platform + Moving to the trash is not implemented on this platform + Verplaatsen naar de prullenbak wordt niet ondersteund op dit platform - - + + Flow2AuthWidget - - Browser Authentication - Browserauthenticatie + + An error occurred while connecting. Please try again. + Er is een fout opgetreden tijdens het verbinden. Probeer het opnieuw. - - Logo - Logo + + Browser Authentication + Browserauthenticatie - - Switch to your browser to connect your account - Schakel over naar je browser om je account te verbinden + + Copy Link + Kopiëren link - - An error occurred while connecting. Please try again. - Er is een fout opgetreden tijdens het verbinden. Probeer het opnieuw. + + Logo + Logo - - Copy Link - Kopiëren link + + Reopen Browser + Heropen browser - - Reopen Browser - Heropen browser + + Switch to your browser to connect your account + Schakel over naar je browser om je account te verbinden - - + + FolderWizardSelectiveSync - - Add Folder Sync - + + Add Folder Sync + Mapsynchronisatie toevoegen - - Step 3 of 3: Selektive Synchronisation - + + Step 3 of 3: Selektive Synchronisation + Stap 3 van 3: Selektieve synchronisatie - - + + FolderWizardSourcePage - Pick a local folder on your computer to sync - Kies een map op je computer om te synchroniseren + + &Choose + &Kiezen - &Choose … - &Kies ... + &Choose … + &Kies ... - - Add Folder Sync - + Pick a local folder on your computer to sync + Kies een map op je computer om te synchroniseren - - Step 1 of 3: Select local folder - + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Selecteer een map op je harde schijf die permanent verbonden moet zijn met je %1. Alle bestanden en submappen worden automatisch geüpload en gesynchroniseerd. - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - + + Step 1 of 3: Select local folder + Stap 1 van 3: Selecteer lokale map - - - &Choose - - - - + + FolderWizardTargetPage - Select a remote destination folder - Kies een externe doelmap - - - - Create folder - Maak map + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Beide mappen zijn permanent gekoppeld en de respectieve inhoud wordt automatisch gesynchroniseerd en bijgewerkt. - - Refresh - Vernieuwen + + Create folder + Maak map - - Add Folder Sync - + + Folders + Mappen - - Step 2 of 3: Directory in your %1 - + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + Selecteer of maak nu een doelmap in uw %1 waar de inhoud moet worden geüpload en gesynchroniseerd. - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - + + Refresh + Vernieuwen - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - + Select a remote destination folder + Kies een externe doelmap - - Folders - Mappen + + Step 2 of 3: Directory in your %1 + Stap 2 van 3: Directory in uw %1 - - - KMessageWidget - - - &Close - - - - - Close message - - - - + + OCC::AbstractNetworkJob - - Connection timed out - De verbindingstijd is verstreken - - - - Unknown error: network reply was deleted - Onbekende fout: netwerkantwoord verwijderd - - - - Server replied "%1 %2" to "%3 %4" - Server antwoordde "%1 %2" naar "%3 %4" + + Connection timed out + De verbindingstijd is verstreken - - - OCC::AbstractPropagateRemoteDeleteEncrypted - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". + + Server replied "%1 %2" to "%3 %4" + Server antwoordde "%1 %2" naar "%3 %4" - "%1 Failed to unlock encrypted folder %2". - "%1 kon versleutelde map %2" niet ontgrendelen. + + Unknown error: network reply was deleted + Onbekende fout: netwerkantwoord verwijderd - - + + OCC::Account - - File %1 is already locked by %2. - + + File %1 is already locked by %2. + - - Lock operation on %1 failed with error %2 - + + Lock operation on %1 failed with error %2 + - - Unlock operation on %1 failed with error %2 - + + Unlock operation on %1 failed with error %2 + - - + + OCC::AccountManager - - %1 accounts were detected from a legacy desktop client. + + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - + Er zijn %1 accounts gedetecteerd van een oudere desktopclient. +Moeten de accounts worden geïmporteerd? - - 1 account was detected from a legacy desktop client. + + 1 account was detected from a legacy desktop client. Should the account be imported? - + - - - Legacy import - + An existing configuration from a legacy desktop client was detected. +Should an account import be attempted? + Een bestaande configuratie van een vorige desktopclient werd herkend. +Moet er worden geprobeerd een account te importeren? - - Import - + + Could not import accounts from legacy client configuration. + - - Skip - + + Import + - - Could not import accounts from legacy client configuration. - + + Legacy import + - - + + + Skip + skip + + + Successfully imported account from legacy client: %1 + + + + OCC::AccountSettings - - - Storage space: … - Opslagruimte: ... + + (experimental) + (experimenteel) - - Expand Memory - + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + %1 (%3%) van %2 in gebruik. Sommige mappen, inclusief netwerkmappen en gedeelde mappen, kunnen andere limieten hebben. - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - Niet-geselecteerde mappen worden <b>verwijderd</b> van je lokale bestandssysteem en zullen niet meer met deze computer worden gesynchroniseerd + + %1 as %2 + %1 als %2 - - - - Cancel - Annuleren + + %1 in use + %1 in gebruik - - Apply - Toepassen + + %1 of %2 in use + %1 van %2 in gebruik - - Connected with <server> as <user> - Verbonden met <server> als <user> + + <p>Could not create local folder <i>%1</i>.</p> + <p>Kan lokale map <i>%1</i> niet maken.</p> - - Synchronize all - Alles synchroniseren + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Weet je zeker dat je het synchroniseren van map <i>%1</i> wilt stoppen?</p><p><b>Opmerking:</b> Dit zal <b>geen</b> bestanden verwijderen.</p> - - Synchronize none - Niets synchroniseren + + Apply + Toepassen - - Apply manual changes - Handmatige wijzigingen toepassen + + Apply manual changes + Handmatige wijzigingen toepassen - - Standard file sync - + + Availability + Beschikbaarheid - - Virtual file sync - + + Cancel + Annuleren - - End-to-end Encryption with Virtual Files - + + Choose what to sync + Kies wat je wilt synchroniseren - - You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - + + Confirm Folder Sync Connection Removal + Bevestig het verwijderen van de verbinding voor mapsynchronisatie - - - Do not encrypt folder - Map niet versleutelen + + Connected to %1. + Verbonden met %1. - - - Encrypt folder - Versleutel map + + Connected with <server> as <user> + Verbonden met <server> als <user> - - End-to-end Encryption - + + Connecting to %1 … + Verbinden met %1 ... - - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. -<b>This process is not reversible. Are you sure you want to proceed?</b> - + + Could not encrypt folder because the folder does not exist anymore + Kon map niet versleutelen omdat de map niet meer bestaat - - No account configured. - Geen account ingesteld. + + Create new folder + Maak nieuwe map aan - - Disable encryption - Encryptie deactiveren + + Currently there is no storage usage information available. + Er is nu geen informatie over het gebruik van de opslagruimte beschikbaar. - - Display mnemonic - Geheugensteun weergeven + + Disable encryption + Encryptie deactiveren - - End-to-end encryption has been enabled for this account - + + Disable end-to-end encryption + - - Warning - Waarschuwing + + Disable end-to-end encryption for %1? + - - Please wait for the folder to sync before trying to encrypt it. - + + Disable support + Ondersteuning uitschakelen - - The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - + + Disable virtual file support … + Ondersteuning voor virtuele bestanden uitschakelen... - - The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - + + Disable virtual file support? + Ondersteuning voor virtuele bestanden uitschakelen? - - End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. -Would you like to set up end-to-end encryption? - + + Display mnemonic + Geheugensteun weergeven - - You cannot encrypt a folder with contents, please remove the files. -Wait for the new sync, then encrypt it. - Je kunt een map met inhoud niet versleutelen, verwijder de bestanden. Wacht op de nieuwe synchronisatie en versleutel ze vervolgens. + + Do not encrypt folder + Map niet versleutelen + + + + Edit Ignored Files + Genegeerde bestanden bewerken - - Encryption failed - Versleuteling mislukt + + Enable virtual file support %1 … + Virtuele bestandsondersteuning inschakelen %1... - - Could not encrypt folder because the folder does not exist anymore - Kon map niet versleutelen omdat de map niet meer bestaat + + Encrypt + Versleutelen - - - Open folder - Map openen + + Encrypt folder + Versleutel map - - Encrypt - Versleutelen + + Encryption failed + Versleuteling mislukt - - - Edit Ignored Files - Genegeerde bestanden bewerken + + End-to-end Encryption + - - - Create new folder - Maak nieuwe map aan + + End-to-end encryption has been enabled for this account + - - - Availability - Beschikbaarheid + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. + - - Choose what to sync - Kies wat je wilt synchroniseren + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. +Would you like to set up end-to-end encryption? + - - Force sync now - Synchronisatie nu forceren + + End-to-end encryption mnemonic + - - Restart sync - Synchronisatie herstarten + + End-to-end Encryption with Virtual Files + - - Resume sync - Synchronisatie hervatten + + Expand Memory + Geheugen uitbreiden - - Pause sync - Synchronisatie pauzeren + + Folder creation failed + Map maken mislukt - - Remove folder sync connection - Verwijder verbinding voor mapsynchronisatie + + Force sync now + Synchronisatie nu forceren - - Disable virtual file support … - Ondersteuning voor virtuele bestanden uitschakelen... + + https://wl.hidrive.com/easy/0057 + https://wl.hidrive.com/easy/0097 - - Enable virtual file support %1 … - Virtuele bestandsondersteuning inschakelen %1... + + No %1 connection configured. + Geen %1 connectie geconfigureerd. - - (experimental) - (experimenteel) + + No account configured. + Geen account ingesteld. - - Folder creation failed - Map maken mislukt + No connection to %1 at %2. + Geen verbinding met %1 op %2. - - <p>Could not create local folder <i>%1</i>.</p> - <p>Kan lokale map <i>%1</i> niet maken.</p> + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + Autorisatie van de browser wordt verkregen. <a href='%1'>Klik hier</a> om de browser te heropenen. - - Confirm Folder Sync Connection Removal - Bevestig het verwijderen van de verbinding voor mapsynchronisatie + + Open folder + Map openen - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Weet je zeker dat je het synchroniseren van map <i>%1</i> wilt stoppen?</p><p><b>Opmerking:</b> Dit zal <b>geen</b> bestanden verwijderen.</p> + + Pause sync + Synchronisatie pauzeren - - Remove Folder Sync Connection - Verwijder verbinding voor mapsynchronisatie + + Please wait for the folder to sync before trying to encrypt it. + - - Disable virtual file support? - Ondersteuning voor virtuele bestanden uitschakelen? + + Remove folder sync connection + Verwijder verbinding voor mapsynchronisatie - - This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. - -The only advantage of disabling virtual file support is that the selective sync feature will become available again. - -This action will abort any currently running synchronization. - Deze actie schakelt ondersteuning voor virtuele bestanden uit. Hierdoor zullen de mappen, die gemarkeerd zijn als "alleen online beschikbaar", gedownload worden. - -Het enige voordeel van het uitschakelen van ondersteuning voor virtuele bestanden, is dat de optie voor selectieve synchronisatie weer beschikbaar komt. - -Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. + + Remove Folder Sync Connection + Verwijder verbinding voor mapsynchronisatie - - Disable support - Ondersteuning uitschakelen + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. + - - End-to-end encryption mnemonic - + + Restart sync + Synchronisatie herstarten - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - + + Resume sync + Synchronisatie hervatten - - Disable end-to-end encryption - + + Server %1 is currently being redirected, or your connection is behind a captive portal. + - - Disable end-to-end encryption for %1? - + + Server %1 is currently in maintenance mode. + Server %1 is momenteel in onderhoudsmodus. - - Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - + + Server %1 is temporarily unavailable. + Server %1 is tijdelijk niet beschikbaar. - - Sync Running - Bezig met synchroniseren + + Server configuration error: %1 at %2. + Serverconfiguratiefout: %1 op %2. - - The syncing operation is running.<br/>Do you want to terminate it? - Bezig met synchroniseren.<br/>Wil je stoppen met synchroniseren? + + Set up encryption + - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - %1 (%3%) van %2 in gebruik. Sommige mappen, inclusief netwerkmappen en gedeelde mappen, kunnen andere limieten hebben. + + Signed out from %1. + Uitgelogd van %1. - - %1 of %2 in use - %1 van %2 in gebruik + + Standard file sync + - - Storage space %1% occupied - + + Storage space %1% occupied + Opslagruimte %1% bezet - - Currently there is no storage usage information available. - Er is nu geen informatie over het gebruik van de opslagruimte beschikbaar. + + Storage space: … + Opslagruimte: ... - - %1 in use - %1 in gebruik + + Sync Running + Bezig met synchroniseren - - %1 as %2 - %1 als %2 + + Synchronize all + Alles synchroniseren - - The server version %1 is unsupported! Proceed at your own risk. - De serverversie %1 wordt niet ondersteund! Verdergaan is op eigen risico. + + Synchronize none + Niets synchroniseren - - Connected to %1. - Verbonden met %1. + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully + - - Server %1 is temporarily unavailable. - Server %1 is tijdelijk niet beschikbaar. + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully + - - Server %1 is currently in maintenance mode. - Server %1 is momenteel in onderhoudsmodus. + + The server version %1 is unsupported! Proceed at your own risk. + De serverversie %1 wordt niet ondersteund! Verdergaan is op eigen risico. - - Server %1 is currently being redirected, or your connection is behind a captive portal. - + + The syncing operation is running.<br/>Do you want to terminate it? + Bezig met synchroniseren.<br/>Wil je stoppen met synchroniseren? - - Signed out from %1. - Uitgelogd van %1. + + There are folders that have grown in size beyond %1MB: %2 + - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - Autorisatie van de browser wordt verkregen. <a href='%1'>Klik hier</a> om de browser te heropenen. + + There are folders that were not synchronized because they are external storages: + Er zijn mappen die niet gesynchroniseerd zijn, omdat ze op externe opslag staan: - - Connecting to %1 … - Verbinden met %1 ... + + There are folders that were not synchronized because they are too big or external storages: + Er zijn mappen die niet gesynchroniseerd zijn, omdat ze te groot zijn of op externe opslag staan: - No connection to %1 at %2. - Geen verbinding met %1 op %2. + + There are folders that were not synchronized because they are too big: + Er zijn mappen die niet gesynchroniseerd zijn, omdat ze te groot zijn: - - Unable to connect to %1. - + + This account supports end-to-end encryption + Dit account ondersteunt end-to-end-versleuteling - - Server configuration error: %1 at %2. - Serverconfiguratiefout: %1 op %2. + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + +The only advantage of disabling virtual file support is that the selective sync feature will become available again. + +This action will abort any currently running synchronization. + Deze actie schakelt ondersteuning voor virtuele bestanden uit. Hierdoor zullen de mappen, die gemarkeerd zijn als "alleen online beschikbaar", gedownload worden. + +Het enige voordeel van het uitschakelen van ondersteuning voor virtuele bestanden, is dat de optie voor selectieve synchronisatie weer beschikbaar komt. + +Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. - - No %1 connection configured. - Geen %1 connectie geconfigureerd. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> + Dit zal je map en alle bestanden erin versleutelen. Deze bestanden zullen niet langer toegankelijk zijn zonder je coderingssleutel. +<b>Dit proces is niet omkeerbaar. Weet u zeker dat u wilt doorgaan? - - https://wl.hidrive.com/easy/0057 - + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. +<b>This process is not reversible. Are you sure you want to proceed?</b> + Dit zal je map en alle bestanden erin versleutelen. Deze bestanden zullen niet langer toegankelijk zijn zonder je coderingssleutel. +<b>Dit proces is niet omkeerbaar. Weet u zeker dat u wilt doorgaan? - - There are folders that were not synchronized because they are too big: - Er zijn mappen die niet gesynchroniseerd zijn, omdat ze te groot zijn: + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + - - There are folders that were not synchronized because they are external storages: - Er zijn mappen die niet gesynchroniseerd zijn, omdat ze op externe opslag staan: + + Unable to connect to %1. + - - There are folders that were not synchronized because they are too big or external storages: - Er zijn mappen die niet gesynchroniseerd zijn, omdat ze te groot zijn of op externe opslag staan: + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + Niet-geselecteerde mappen worden <b>verwijderd</b> van je lokale bestandssysteem en zullen niet meer met deze computer worden gesynchroniseerd - - There are folders that have grown in size beyond %1MB: %2 - + + Virtual file sync + - - End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - + + Warning + Waarschuwing - - This account supports end-to-end encryption - Dit account ondersteunt end-to-end-versleuteling + + You cannot encrypt a folder with contents, please remove the files. +Wait for the new sync, then encrypt it. + Je kunt een map met inhoud niet versleutelen, verwijder de bestanden. Wacht op de nieuwe synchronisatie en versleutel ze vervolgens. - - Set up encryption - + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". + - - + + OCC::AccountSetupFromCommandLineJob - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - De geauthentiseerde aanvraag voor de server werd omgeleid naar "%1". De URL is onjuist, de server is verkeerd geconfigureerd. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Toegang door server verboden. Om te verifiëren dat je toegang mag hebben, <a href="%1">klik hier</a> om met je browser toegang tot de service te krijgen. - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Toegang door server verboden. Om te verifiëren dat je toegang mag hebben, <a href="%1">klik hier</a> om met je browser toegang tot de service te krijgen. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + De geauthentiseerde aanvraag voor de server werd omgeleid naar "%1". De URL is onjuist, de server is verkeerd geconfigureerd. - - There was an invalid response to an authenticated WebDAV request - Er is een ongeldig antwoord ontvangen op een geauthenticeerde WebDAV opvraging + + There was an invalid response to an authenticated WebDAV request + Er is een ongeldig antwoord ontvangen op een geauthenticeerde WebDAV opvraging - - + + OCC::AccountState - - Signed out - Afgemeld + + Asking Credentials + Vragen naar inloggegevens - - Disconnected - Niet verbonden + + Configuration error + Configuratiefout - - Connected - Verbonden + + Connected + Verbonden - - Service unavailable - Dienst niet beschikbaar + + Disconnected + Niet verbonden - - Maintenance mode - Onderhoudsmodus + + Maintenance mode + Onderhoudsmodus - - Redirect detected - + + Network error + Netwerkfout - - Network error - Netwerkfout + + Redirect detected + - - Configuration error - Configuratiefout + + Service unavailable + Dienst niet beschikbaar - - Asking Credentials - Vragen naar inloggegevens + + Signed out + Afgemeld - - Unknown account state - Onbekende account-status + + Unknown account state + Onbekende account-status - - + + OCC::ActivityListModel - - For more activities please open the Activity app. - Voor meer activiteiten open de Activiteit app. + + Fetching activities … + - - Fetching activities … - + + Files from the ignore list as well as symbolic links are not synced. + Bestanden op de negeerlijst en symbolische links worden niet gesynchroniseerd. - - Network error occurred: client will retry syncing. - + + For more activities please open the Activity app. + Voor meer activiteiten open de Activiteit app. - - Files from the ignore list as well as symbolic links are not synced. - Bestanden op de negeerlijst en symbolische links worden niet gesynchroniseerd. + + Network error occurred: client will retry syncing. + - - + + OCC::AddCertificateDialog - - SSL client certificate authentication - SSL client certificaat authenticatie + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. + Een versleutelde pkcs12-bundel wordt sterk aanbevolen, aangezien er een kopie wordt opgeslagen in het configuratiebestand. - - This server probably requires a SSL client certificate. - De server vereist vermoedelijk een SSL client certificaat. + + Browse … + Bladeren ... - - Certificate & Key (pkcs12): - Certificaat & Sleutel (pkcs12): + + Certificate & Key (pkcs12): + Certificaat & Sleutel (pkcs12): - - Browse … - Bladeren ... + + Certificate files (*.p12 *.pfx) + Certificaat bestanden (*.p12 *.pfx) - - Certificate password: - Wachtwoord certificaat: + + Certificate password: + Wachtwoord certificaat: - - An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - Een versleutelde pkcs12-bundel wordt sterk aanbevolen, aangezien er een kopie wordt opgeslagen in het configuratiebestand. + + Select a certificate + Selecteer een certificaat - - Select a certificate - Selecteer een certificaat + + SSL client certificate authentication + SSL client certificaat authenticatie - - Certificate files (*.p12 *.pfx) - Certificaat bestanden (*.p12 *.pfx) + + This server probably requires a SSL client certificate. + De server vereist vermoedelijk een SSL client certificaat. - - + + OCC::Application - - Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - - - - - newer - newer software version - recenter + + %1 accounts + - - older - older software version - ouder + + %1 folders + - - ignoring - negerend + + 1 account + - - deleting - verwijderen + + 1 folder + - - Quit - Stoppen + + Continue + Doorgaan - - Continue - Doorgaan + + deleting + verwijderen - - %1 accounts - number of accounts imported - + + Error accessing the configuration file + Fout bij benaderen configuratiebestand - - 1 account - + + ignoring + negerend - - %1 folders - number of folders imported - + + Imported %1 and %2 from a legacy desktop client. +%3 + - - 1 folder - + + newer + recenter - - Legacy import - + + older + ouder - - Imported %1 and %2 from a legacy desktop client. -%3 - number of accounts and folders imported. list of users. - + + Quit + Stoppen - - Error accessing the configuration file - Fout bij benaderen configuratiebestand + + Quit %1 + Afsluiten %1 - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. + - - Quit %1 - Afsluiten %1 + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + - - + + OCC::AuthenticationDialog - - Authentication Required - Authenticatie vereist + + &Password: + &Wachtwoord: - - Enter username and password for "%1" at %2. - Geef gebruikersnaam en wachtwoord op voor "%1" bij %2. + + &Username: + - - &Username: - + + Authentication Required + Authenticatie vereist - - &Password: - &Wachtwoord: + + Enter username and password for "%1" at %2. + Geef gebruikersnaam en wachtwoord op voor "%1" bij %2. - - + + OCC::BasePropagateRemoteDeleteEncrypted - - "%1 Failed to unlock encrypted folder %2". - "%1 kon versleutelde map %2" niet ontgrendelen. + "%1 Failed to unlock encrypted folder %2". + "%1 kon versleutelde map %2" niet ontgrendelen. - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". - - + + OCC::BulkPropagatorJob - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Bestand %1 kan niet worden geüpload omdat er al een ander bestand met dezelfde naam bestaat, al verschillen hoofd/kleine letters + + Error updating metadata: %1 + Fout bij bijwerken metadata: %1 - - File %1 has invalid modified time. Do not upload to the server. - Bestand %1 heeft een ongeldige wijzigingstijd. Niet uploaden naar de server. + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Bestand %1 kan niet worden geüpload omdat er al een ander bestand met dezelfde naam bestaat, al verschillen hoofd/kleine letters - - File Removed (start upload) %1 - Bestand verwijderd (start upload) %1 + + File %1 has invalid modification time. Do not upload to the server. + Bestand %1 heeft een ongeldige laatste wijziging datum. Upload niet naar de server. - - File %1 has invalid modification time. Do not upload to the server. - Bestand %1 heeft een ongeldige laatste wijziging datum. Upload niet naar de server. + + File %1 has invalid modified time. Do not upload to the server. + Bestand %1 heeft een ongeldige wijzigingstijd. Niet uploaden naar de server. - - Local file changed during syncing. It will be resumed. - Lokaal bestand gewijzigd gedurende synchronisatie. Wordt opnieuw meegenomen. + + File Removed (start upload) %1 + Bestand verwijderd (start upload) %1 - - - Local file changed during sync. - Lokaal bestand gewijzigd tijdens synchronisatie. + + Local file changed during sync. + Lokaal bestand gewijzigd tijdens synchronisatie. - - Network error: %1 - Netwerkfout: %1 + + Local file changed during syncing. It will be resumed. + Lokaal bestand gewijzigd gedurende synchronisatie. Wordt opnieuw meegenomen. - - Error updating metadata: %1 - Fout bij bijwerken metadata: %1 + + Network error: %1 + Netwerkfout: %1 - - The file %1 is currently in use - Bestand %1 is momenteel in gebruik + + Restoration failed: %1 + Herstellen mislukt: %1 - - The local file was removed during sync. - Het lokale bestand werd verwijderd tijdens synchronisatie. + + The file %1 is currently in use + Bestand %1 is momenteel in gebruik - - Restoration failed: %1 - Herstellen mislukt: %1 + + The local file was removed during sync. + Het lokale bestand werd verwijderd tijdens synchronisatie. - - + + OCC::CaseClashConflictSolver - - Cannot rename file because a file with the same name already exists on the server. Please pick another name. - + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + - - Could not rename file. Please make sure you are connected to the server. - Kan het bestand niet hernoemen. Zorg ervoor dat je verbonden bent met de server. + + Could not rename file. Please make sure you are connected to the server. + Kan het bestand niet hernoemen. Zorg ervoor dat je verbonden bent met de server. - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Je bent niet gemachtigd om dit bestand te hernoemen. Vraag de auteur van het bestand om het te hernoemen. + + Failed to fetch permissions with error %1 + - - Failed to fetch permissions with error %1 - + + Filename contains leading and trailing spaces. + De bestandsnaam bevat spaties vooraan en achteraan. - - Filename contains leading and trailing spaces. - De bestandsnaam bevat spaties vooraan en achteraan. + + Filename contains leading spaces. + De bestandsnaam bevat spaties vooraan. - - Filename contains leading spaces. - De bestandsnaam bevat spaties vooraan. + + Filename contains trailing spaces. + De bestandsnaam bevat spaties achteraan. - - Filename contains trailing spaces. - De bestandsnaam bevat spaties achteraan. + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Je bent niet gemachtigd om dit bestand te hernoemen. Vraag de auteur van het bestand om het te hernoemen. - - + + OCC::CaseClashFilenameDialog - - Case Clash Conflict - - - - - The file could not be synced because it generates a case clash conflict with an existing file on this system. - - - - - Error - Fout - - - - Existing file - Bestaand bestand - - - - file A - bestand A + + %1 does not support equal file names with only letter casing differences. + - - - today - vandaag + + 0 byte + 0 bytes - - - 0 byte - 0 bytes + + Case Clash Conflict + - - - Open existing file - + + Case clashing file + - - Case clashing file - + + Existing file + Bestaand bestand - - file B - bestand B + + file A + bestand A - - - Open clashing file - + + file B + bestand B - - Please enter a new name for the clashing file: - + + Filename contains illegal characters: %1 + Bestandsnaam bevat ongeldige tekens: %1 - - New filename - Nieuwe bestandsnaam + + New filename + Nieuwe bestandsnaam - - Rename file - Bestand hernoemen + + Open clashing file + - - The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - + + Open existing file + - - %1 does not support equal file names with only letter casing differences. - + + Please enter a new name for the clashing file: + - - Filename contains leading and trailing spaces. - De bestandsnaam bevat spaties vooraan en achteraan. + + Rename file + Bestand hernoemen - - Filename contains leading spaces. - De bestandsnaam bevat spaties vooraan. + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + - - Filename contains trailing spaces. - De bestandsnaam bevat spaties achteraan. + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + - - Use invalid name - Gebruik ongeldige naam + + today + vandaag - - Filename contains illegal characters: %1 - Bestandsnaam bevat ongeldige tekens: %1 + + Use invalid name + Gebruik ongeldige naam - - + + OCC::CleanupPollsJob - - Error writing metadata to the database - Fout bij schrijven van metadata naar de database + + Error writing metadata to the database + Fout bij schrijven van metadata naar de database - - + + OCC::ClientSideEncryption - - Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - + + Enter E2E passphrase + Invoeren E2E wachtwoord - - Enter E2E passphrase - Invoeren E2E wachtwoord + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + - - + + OCC::ConflictDialog - - Sync Conflict - Synchronisatieconflict - - - - - Conflicting versions of %1. - Conflicterende versies van %1. - - - - Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. - Welke versie van het bestand wil je bewaren? <br/>Als je beide versies selecteert, wordt er een getal achter de bestandsnaam van het lokale bestand gezet. - - - - Local version - Lokale versie - - - - - Click to open the file - Klik om het bestand te openen + + <a href="%1">Open local version</a> + <a href="%1">Open lokale versie</a> - - - today - vandaag + + <a href="%1">Open server version</a> + <a href="%1">Open serverversie</a> - - - 0 byte - 0 bytes + + Click to open the file + Klik om het bestand te openen - - <a href="%1">Open local version</a> - <a href="%1">Open lokale versie</a> + + Conflicting versions of %1. + Conflicterende versies van %1. - - Server version - Serverversie + + Keep both versions + Bewaar beide versies - - <a href="%1">Open server version</a> - <a href="%1">Open serverversie</a> + + Keep local version + Bewaar lokale versie - - - Keep selected version - Bewaar geselecteerde versie + + Keep selected version + Bewaar geselecteerde versie - - Open local version - Open lokale versie + + Keep server version + Bewaar serverversie - - Open server version - Open serverversie + + Open local version + Open lokale versie - - Keep both versions - Bewaar beide versies + + Open server version + Open serverversie - - Keep local version - Bewaar lokale versie + + Sync Conflict + Synchronisatieconflict - - Keep server version - Bewaar serverversie + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + Welke versie van het bestand wil je bewaren? <br/>Als je beide versies selecteert, wordt er een getal achter de bestandsnaam van het lokale bestand gezet. - - + + OCC::ConflictSolver - - Do you want to delete the directory <i>%1</i> and all its contents permanently? - Wil je de map <i>%1</i>met gehele inhoud permanent verwijderen? - - - - Do you want to delete the file <i>%1</i> permanently? - Wil je het bestand <i>%1</i>permanent verwijderen? + + Confirm deletion + Bevestig verwijderen - - Confirm deletion - Bevestig verwijderen + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + Wil je de map <i>%1</i>met gehele inhoud permanent verwijderen? - - - Error - Fout + + Do you want to delete the file <i>%1</i> permanently? + Wil je het bestand <i>%1</i>permanent verwijderen? - - - Moving file failed: + + Moving file failed: %1 - Bestand verplaatsen mislukt: + Bestand verplaatsen mislukt: %1 - - + + OCC::ConnectionValidator - - No Nextcloud account configured - Geen Nextcloud-account geconfigureerd + + Authentication error: Either username or password are wrong. + Authenticatiefout: Gebruikersnaam of wachtwoord onjuist. - - Authentication error: Either username or password are wrong. - Authenticatiefout: Gebruikersnaam of wachtwoord onjuist. + + Connection issue + - - Timeout - Time-out + + No Nextcloud account configured + Geen Nextcloud-account geconfigureerd - - The provided credentials are not correct - De verstrekte inloggegevens zijn niet juist + + Please update to the latest server and restart the client. + Werk de server bij naar de nieuwste versie en herstart het programma. - - The configured server for this client is too old - De voor dit programma ingestelde server is te oud + + The configured server for this client is too old + De voor dit programma ingestelde server is te oud - - Please update to the latest server and restart the client. - Werk de server bij naar de nieuwste versie en herstart het programma. + + The provided credentials are not correct + De verstrekte inloggegevens zijn niet juist - - Connection issue - + + Timeout + Time-out - - + + OCC::DiscoveryPhase - - Error while canceling deletion of a file - Fout bij het annuleren van verwijdering van een bestand + + Error while canceling deletion of %1 + Fout bij annuleren verwijderen van %1 - - Error while canceling deletion of %1 - Fout bij annuleren verwijderen van %1 + + Error while canceling deletion of a file + Fout bij het annuleren van verwijdering van een bestand - - + + OCC::DiscoverySingleDirectoryJob - - - Server error: PROPFIND reply is not XML formatted! - Serverfout: PROPFIND-antwoord heeft geen XML-opmaak! + + Encrypted metadata setup error: initial signature from server is empty. + Fout bij opzetten versleutelde metagegevens: initiële handtekening van server is leeg. - - - Encrypted metadata setup error! - + + Encrypted metadata setup error! + - - Encrypted metadata setup error: initial signature from server is empty. - + + Server error: PROPFIND reply is not XML formatted! + Serverfout: PROPFIND-antwoord heeft geen XML-opmaak! - - + + OCC::DiscoverySingleLocalDirectoryJob - - Error while opening directory %1 - Fout bij het openen van map %1 + + Directory not accessible on client, permission denied + Map niet toegankelijk op client, toegang geweigerd - - Directory not accessible on client, permission denied - Map niet toegankelijk op client, toegang geweigerd + + Directory not found: %1 + Map niet gevonden: %1 - - Directory not found: %1 - Map niet gevonden: %1 + + Error while opening directory %1 + Fout bij het openen van map %1 - - Filename encoding is not valid - Bestandsnaamcodering is niet geldig + + Error while reading directory %1 + Fout tijdens lezen van map %1 - - Error while reading directory %1 - Fout tijdens lezen van map %1 + + Filename encoding is not valid + Bestandsnaamcodering is niet geldig - - + + OCC::EditLocallyJob - - Invalid token received. - - - - - - - - - - Please try again. - + + An error occurred during data retrieval. + - - Invalid file path was provided. - Ongeldig pad was ingegeven. + + An error occurred during setup. + - - Could not find an account for local editing. - + + An error occurred trying to synchronise the file to edit locally. + - - - - - - - - - Could not start editing locally. - + + An error occurred trying to verify the request to edit locally. + - - An error occurred trying to verify the request to edit locally. - + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + - - - Could not validate the request to open a file from server. - + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + Kon geen bestand vinden om lokaal te bewerken. Zorg ervoor dat het pad juist is en dat het lokaal gesynchroniseerd is. - - - Could not find a file for local editing. Make sure its path is valid and it is synced locally. - Kon geen bestand vinden om lokaal te bewerken. Zorg ervoor dat het pad juist is en dat het lokaal gesynchroniseerd is. + + Could not find a remote file info for local editing. Make sure its path is valid. + - - - - - Could not find a file for local editing. Make sure it is not excluded via selective sync. - + + Could not find an account for local editing. + - - - - An error occurred during data retrieval. - + + Could not open %1 + - - - An error occurred trying to synchronise the file to edit locally. - + + Could not start editing locally. + - - An error occurred during setup. - + + Could not validate the request to open a file from server. + - - Server error: PROPFIND reply is not XML formatted! - Serverfout: PROPFIND-antwoord heeft geen XML-opmaak! + + File %1 already locked. + - - Could not find a remote file info for local editing. Make sure its path is valid. - + + File %1 could not be locked. + - - Invalid local file path. - + + File %1 now locked. + - - Could not open %1 - + + Invalid file path was provided. + Ongeldig pad was ingegeven. - - File %1 already locked. - + + Invalid local file path. + - - - Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - + + Invalid token received. + - - File %1 now locked. - + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + - - File %1 could not be locked. - + + Please try again. + - - + + OCC::EncryptFolderJob - - Could not generate the metadata for encryption, Unlocking the folder. + + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. - Kan de metadata voor versleuteling niet genereren, de map wordt ontgrendeld. + Kan de metadata voor versleuteling niet genereren, de map wordt ontgrendeld. Dit kan een probleem zijn met je OpenSSL-bibliotheken. - - + + OCC::EncryptedFolderMetadataHandler - - - - - - - Error fetching metadata. - + + Error fetching encrypted folder ID. + - - - - Error locking folder. - + + Error fetching metadata. + - - Error fetching encrypted folder ID. - + + Error locking folder. + - - Error parsing or decrypting metadata. - + + Error parsing or decrypting metadata. + - - Failed to upload metadata - + + Failed to upload metadata + - - + + OCC::FileDetails - - %1 second(s) ago - seconds elapsed since file last modified - - - - + + %1 day(s) ago + + + + %1 dag(en) geleden + - - %1 minute(s) ago - minutes elapsed since file last modified - - - - + + %1 hour(s) ago + + + + %1 uur(en) geleden + - - %1 hour(s) ago - hours elapsed since file last modified - - - - + + %1 minute(s) ago + + + + %1 minuut(en) geleden + - - %1 day(s) ago - days elapsed since file last modified - - - - + + %1 month(s) ago + + + + %1 maand(en) geleden + - - %1 month(s) ago - months elapsed since file last modified - - - - + + %1 second(s) ago + + + + %1 seconde(n) geleden + - - %1 year(s) ago - years elapsed since file last modified - - - - + + %1 year(s) ago + + + + %1 jaar(en) geleden + - - Locked by %1 - Expires in %2 minute(s) - remaining time before lock expires - - - - - - - + + Locked by %1 - Expires in %2 minute(s) + + + + Vergrendeld door %1 - Verloopt in %2 minuut(pen) + + + + OCC::Flow2Auth - - The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - De polling-URL begint niet met HTTPS, ondanks dat de login-URL met HTTPS begint. Inloggen is niet mogelijk omdat dit een beveiligingsprobleem kan zijn. Neem contact op met je beheerder. + + Could not parse the JSON returned from the server: <br><em>%1</em> + Kan de van de server ontvangen JSON niet verwerken: <br><em>%1</em> - - - Error returned from the server: <em>%1</em> - Fout gemeld door de server: <em>%1</em> + + Error returned from the server: <em>%1</em> + Fout gemeld door de server: <em>%1</em> - - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Er trad een fout op bij het benaderen van het "token" endpoint: <br><em>%1</em> + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + De polling-URL begint niet met HTTPS, ondanks dat de login-URL met HTTPS begint. Inloggen is niet mogelijk omdat dit een beveiligingsprobleem kan zijn. Neem contact op met je beheerder. - - - Could not parse the JSON returned from the server: <br><em>%1</em> - Kan de van de server ontvangen JSON niet verwerken: <br><em>%1</em> + + The reply from the server did not contain all expected fields + Het antwoord van de server bevatte niet alle verwachte velden - - - The reply from the server did not contain all expected fields - Het antwoord van de server bevatte niet alle verwachte velden + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + De geretourneerde server-URL begint niet met HTTPS, ondanks dat de inlog-URL begint met HTTPS. Inloggen is niet mogelijk omdat dit een beveiligingsprobleem kan zijn. Neem contact op met je beheerder. - - The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - De geretourneerde server-URL begint niet met HTTPS, ondanks dat de inlog-URL begint met HTTPS. Inloggen is niet mogelijk omdat dit een beveiligingsprobleem kan zijn. Neem contact op met je beheerder. + + There was an error accessing the "token" endpoint: <br><em>%1</em> + Er trad een fout op bij het benaderen van het "token" endpoint: <br><em>%1</em> - - + + OCC::Flow2AuthWidget - - Unable to open the Browser, please copy the link to your Browser. - Kan de browser niet openen, kopieer de link naar je browser. - - - - - Error - Fout - - - - Waiting for authorization - Wachten op autorisatie - - - - Polling for authorization - Controleren op autorisatie - - - - Starting authorization - Starten autorisatie + + Link copied to clipboard. + Link gekopieerd naar het klembord. - - Link copied to clipboard. - Link gekopieerd naar het klembord. + + Open Browser + Browser openen - - Open Browser - + + Polling for authorization + Controleren op autorisatie - - Switch to your browser to connect your account - Schakel over naar je browser om je account te verbinden + + Starting authorization + Starten autorisatie - Reopen Browser - Heropen browser + + Unable to open the Browser, please copy the link to your Browser. + Kan de browser niet openen, kopieer de link naar je browser. - - Copy Link - Kopiëren link + + Waiting for authorization + Wachten op autorisatie - - + + OCC::Folder - - - Local folder %1 does not exist. - Lokale map %1 bestaat niet. - - - - %1 should be a folder but is not. - %1 zou een map moeten zijn, maar is dat niet. - - - - %1 is not readable. - %1 is niet leesbaar. - - - %1 and %n other file(s) have been removed. - - %1 en %n ander bestand(en) zijn verwijderd. - %1 en %n andere bestand(en) zijn verwijderd. - - - - - %1 has been removed. - %1 names a file. - %1 is verwijderd. + + %1 and %n other file(s) are currently locked. + + + + + - - %1 and %n other file(s) have been added. - - %1 en %n andere bestand zijn toegevoegd. - %1 en %n andere bestanden zijn toegevoegd. - - - - - %1 has been added. - %1 names a file. - %1 is toegevoegd. + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + + + + - - %1 and %n other file(s) have been updated. - - %1 en %n ander bestand(en) zijn bijgewerkt. - %1 en %n andere bestand(en) zijn bijgewerkt. - - - - - %1 has been updated. - %1 names a file. - %1 is bijgewerkt. + + %1 and %n other file(s) have been added. + + + + + - - %1 has been renamed to %2 and %n other file(s) have been renamed. - - %1 is hernoemd naar %2 en %n ander bestand(en) is hernoemd. - %1 is hernoemd naar %2 en %n andere bestand(en) zijn hernoemd. - - - - - %1 has been renamed to %2. - %1 and %2 name files. - %1 is hernoemd naar %2. + + %1 and %n other file(s) have been removed. + + + + + - - %1 has been moved to %2 and %n other file(s) have been moved. - - %1 is verplaatst naar %2 en %n ander bestand(en) is verplaatst. - %1 is verplaatst naar %2 en %n andere bestand(en) zijn verplaatst. - + + %1 and %n other file(s) have been updated. + + + + + - - %1 has been moved to %2. - %1 is verplaatst naar %2. - - - - %1 has and %n other file(s) have sync conflicts. - - %1 en %n ander bestand(en) hebben een sync conflict. - %1 en %n andere bestand(en) hebben synchronisatie-conflicten. - + + %1 could not be synced due to an error. See the log for details. + %1 kon niet worden gesynchroniseerd door een fout. Bekijk het log voor details. - - %1 has a sync conflict. Please check the conflict file! - %1 heeft een synchronisatie-conflict. Controleer het conflictbestand! + + %1 has a sync conflict. Please check the conflict file! + %1 heeft een synchronisatie-conflict. Controleer het conflictbestand! - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - - %1 en %n ander bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details. - %1 en %n andere bestand(en) konden niet worden gesynchroniseerd wegens fouten. Bekijk het log voor details. - + + %1 has and %n other file(s) have sync conflicts. + + + + + - - %1 could not be synced due to an error. See the log for details. - %1 kon niet worden gesynchroniseerd door een fout. Bekijk het log voor details. + + %1 has been added. + %1 is toegevoegd. - - %1 and %n other file(s) are currently locked. - - %1 en %n ander bestand zijn momenteel op slot. - %1 en %n ander(e) bestand(en) zijn momenteel op slot. - + + %1 has been moved to %2 and %n other file(s) have been moved. + + + + + - - %1 is currently locked. - %1 is momenteel op slot. + + %1 has been moved to %2. + %1 is verplaatst naar %2. - - Sync Activity - Synchronisatie-activiteit + + %1 has been removed. + %1 is verwijderd. - - - Could not read system exclude file - Kon het systeem-uitsluitingsbestand niet lezen + + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + + + + - - A new folder larger than %1 MB has been added: %2. - - Er is een nieuwe map groter dan %1 MB toegevoegd: %2. - + + %1 has been renamed to %2. + %1 is hernoemd naar %2. - - A folder from an external storage has been added. - - Er is een map op externe opslag toegevoegd. - + + %1 has been updated. + %1 is bijgewerkt. - - Please go in the settings to select it if you wish to download it. - Ga naar de instellingen om het te selecteren als u deze wilt downloaden. + + %1 is currently locked. + %1 is momenteel op slot. - - A folder has surpassed the set folder size limit of %1MB: %2. -%3 - + + %1 is not readable. + %1 is niet leesbaar. - - Keep syncing - + + %1 should be a folder but is not. + %1 zou een map moeten zijn, maar is dat niet. - - Stop syncing - + + A folder from an external storage has been added. + Er is een map op externe opslag toegevoegd. - - The folder %1 has surpassed the set folder size limit of %2MB. - + + A folder has surpassed the set folder size limit of %1MB: %2. +%3 + - - Would you like to stop syncing this folder? - + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + Een groot aantal bestanden op de server is verwijderd. +Bevestig alstublieft of u door wilt gaan met deze verwijderingen. +U kunt ook alle verwijderde bestanden terugzetten door vanuit de map '%1' te uploaden naar de server. - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. - Map %1 is gecreëerd, maar eerder uitgesloten van synchronisatie. Bestanden erin worden niet gesynchroniseerd. + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by downloading them from the server. + Een groot aantal bestanden in uw lokale map '%1' is verwijderd. +Bevestig alstublieft of u door wilt gaan met deze verwijderingen. +U kunt ook alle verwijderde bestanden herstellen door ze van de server te downloaden. - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. - Bestand %1 is gecreëerd, maar eerder uitgesloten van synchronisatie. Het wordt niet gesynchroniseerd. + + A new folder larger than %1 MB has been added: %2. + Er is een nieuwe map groter dan %1 MB toegevoegd: %2. - - Changes in synchronized folders could not be tracked reliably. - -This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). + All files in the local folder "%1" were deleted. -%1 - Wijzigingen in gesynchroniseerde mappen konden niet betrouwbaar worden getraceerd. - -Dit betekent dat de synchronisatieclient misschien niet meteen lokale wijzigingen uploadt maar slechts periodiek scant op lokale wijzigingen en die uploadt (standaard eens per twee uur). +If you restore the files, they will be downloaded again from the server. + Alle bestanden in de lokale map "%1" zijn verwijderd. -%1 +Als u de bestanden terugzet, worden ze opnieuw gedownload van de server. - - Virtual file download failed with code "%1", status "%2" and error message "%3" - - - - - A large number of files in the server have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. - - - - - A large number of files in your local '%1' folder have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by downloading them from the server. - - - - - Remove all files? - - - - - Proceed with Deletion - - - - - Restore Files to Server - + All files in the server folder "%1" were deleted. + +If you restore the files, they will be uploaded again to the server. + Alle bestanden in de servermap "%1" zijn verwijderd. + +Als u de bestanden terugzet, worden ze opnieuw geüpload naar de server. - - Restore Files from Server - + All files in the sync folder "%1" folder were deleted on the server. +These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. +If you decide to restore the files, they will be re-synced with the server if you have rights to do so. +If you decide to delete the files, they will be unavailable to you, unless you are the owner. + Alle bestanden in de syncmap"'%1" map werden verwijderd van de server. +Deze verwijderingen worden gesynchroniseerd naar je lokale syncmap, waardoor deze bestanden niet meer beschikbaar zijn, tenzij je het recht hebt om ze te herstellen. +Als je de bestanden wilt behouden, worden ze opnieuw gesynchroniseerd met de server als je die autorisatie hebt. +Als je de bestanden wilt verwijderen, worden ze niet beschikbaar, tenzij je de eigenaar bent. - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Alle bestanden in de syncmap"'%1" map werden verwijderd van de server. + Alle bestanden in de syncmap"'%1" map werden verwijderd van de server. Deze verwijderingen worden gesynchroniseerd naar je lokale syncmap, waardoor deze bestanden niet meer beschikbaar zijn, tenzij je het recht hebt om ze te herstellen. Als je de bestanden wilt behouden, worden ze opnieuw gesynchroniseerd met de server als je die autorisatie hebt. Als je de bestanden wilt verwijderen, worden ze niet beschikbaar, tenzij je de eigenaar bent. - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - Alle bestanden in je lokale syncmap "%1" werden verwijderd. Deze verwijderingen worden gesynchroniseerd naar je server, waardoor de bestanden niet beschikbaar zijn, tenzij ze worden teruggezet. Weet je zeker dat je deze acties wilt synchroniseren met de server? + Alle bestanden in je lokale syncmap "%1" werden verwijderd. Deze verwijderingen worden gesynchroniseerd naar je server, waardoor de bestanden niet beschikbaar zijn, tenzij ze worden teruggezet. Weet je zeker dat je deze acties wilt synchroniseren met de server? Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw gesynchroniseerd met de server. - Remove All Files? - Alle bestanden verwijderen? + + Changes in synchronized folders could not be tracked reliably. + +This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). + +%1 + Wijzigingen in gesynchroniseerde mappen konden niet betrouwbaar worden getraceerd. + +Dit betekent dat de synchronisatieclient misschien niet meteen lokale wijzigingen uploadt maar slechts periodiek scant op lokale wijzigingen en die uploadt (standaard eens per twee uur). + +%1 - Remove all files - Alle bestanden verwijderen + + Could not read system exclude file + Kon het systeem-uitsluitingsbestand niet lezen - Keep files - Bestanden bewaren + Keep files + Bestanden bewaren - - - OCC::FolderCreationDialog - - Create new folder - Maak nieuwe map aan + + Keep syncing + - - Enter folder name - Geef mapnaam op + + Local folder %1 does not exist. + Lokale map %1 bestaat niet. - - Folder already exists - Map bestaat al + + Please go in the settings to select it if you wish to download it. + Ga naar de instellingen om het te selecteren als u deze wilt downloaden. - - %1 Create new folder - + Proceed to remove all files + Alle bestanden verwijderen - - Error - Fout + + Proceed with Deletion + Doorgaan met verwijderen - - Could not create a folder! Check your write permissions. - Kan map niet aanmaken! Controleer je schrijfmachtiging. + Remove all files + Alle bestanden verwijderen - - - OCC::FolderMan - - Could not reset folder state - Kan de beginstaat van de map niet terugzetten + + Remove all files? + Alle bestanden verwijderen? - - An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. - Een oud synchronisatieverslag "%1" is gevonden maar kan niet worden verwijderd. Zorg ervoor dat geen applicatie dit bestand gebruikt. + Restore files + Bestanden herstellen - - (backup) - (backup) + + Restore Files from Server + Bestanden terugzetten van server - - (backup %1) - (backup %1) + + Restore Files to Server + Bestanden terugzetten naar server - - Undefined state. - + + Stop syncing + - - Waiting to start syncing. - In afwachting van synchronisatie. + + Sync Activity + Synchronisatie-activiteit - - Preparing for sync. - Synchronisatie wordt voorbereid + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + Bestand %1 is gecreëerd, maar eerder uitgesloten van synchronisatie. Het wordt niet gesynchroniseerd. - - Sync is running. - Bezig met synchroniseren. + + The folder %1 has surpassed the set folder size limit of %2MB. + - - Sync finished with unresolved conflicts. - Synchronisatie beëindigd met niet opgeloste conflicten. + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + Map %1 is gecreëerd, maar eerder uitgesloten van synchronisatie. Bestanden erin worden niet gesynchroniseerd. - - Last sync was successful. - + + Virtual file download failed with code "%1", status "%2" and error message "%3" + - - Setup error. - + + Would you like to stop syncing this folder? + + + + OCC::FolderCreationDialog - - Sync request was cancelled. - + + %1 Create new folder + %1 Nieuwe map maken - - Sync is paused. - Synchronisatie gepauzeerd. + + Could not create a folder! Check your write permissions. + Kan map niet aanmaken! Controleer je schrijfmachtiging. - - %1 (Sync is paused) - %1 (Synchronisatie onderbroken) + + Enter folder name + Geef mapnaam op - - No valid folder selected! - Geen geldige map geselecteerd! + + Folder already exists + Map bestaat al + + + OCC::FolderMan - - The selected path does not exist! - Het geselecteerde pad bestaat niet! + + (backup %1) + (backup %1) - - The selected path is not a folder! - Het geselecteerde pad is geen map! + + (backup) + (backup) - - - You have no permission to write to the selected folder! - U heeft geen machtiging om te schrijven naar de geselecteerde map! + + %1 (Sync is paused) + %1 (Synchronisatie onderbroken) - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! - Lokale map %1 bevat al een map die wordt gebruikt voor een mapsync verbinding. Kies een andere! + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + Een oud synchronisatieverslag "%1" is gevonden maar kan niet worden verwijderd. Zorg ervoor dat geen applicatie dit bestand gebruikt. - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! - Lokale map %1 zit al in een map die wordt gebruikt voor een mapsync verbinding. Kies een andere! + + Could not reset folder state + Kan de beginstaat van de map niet terugzetten - - There is already a sync from the server to this local folder. Please pick another local folder! - Er wordt vanaf de server al naar deze lokale map gesynchroniseerd. Kies een andere lokale map! + + Last sync was successful. + - - - OCC::FolderStatusDelegate - Add Folder Sync Connection - Toevoegen mapsynchronisatie verbinding + + No valid folder selected! + Geen geldige map geselecteerd! - - Add Folder Sync - + + Preparing for sync. + Synchronisatie wordt voorbereid - - Synchronize any other local folder with your %1 - + + Setup error. + - - File - Bestand + + Sync finished with unresolved conflicts. + Synchronisatie beëindigd met niet opgeloste conflicten. - - - OCC::FolderStatusModel - - You need to be connected to add a folder - U moet verbonden zijn om een map toe te voegen + + Sync is paused. + Synchronisatie gepauzeerd. - - Click this button to add a folder to synchronize. - Klik op deze knop om een te synchroniseren map toe te voegen. + + Sync is running. + Bezig met synchroniseren. - - Could not decrypt! - + + Sync request was cancelled. + - - - %1 (%2) - -%1 (%2) + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + Lokale map %1 bevat al een map die wordt gebruikt voor een mapsync verbinding. Kies een andere! - - Error while loading the list of folders from the server. - Fout bij ophalen mappenlijst van de server. + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + Lokale map %1 zit al in een map die wordt gebruikt voor een mapsync verbinding. Kies een andere! - - Fetching folder list from server … - Mappenlijst ophalen van de server ... + + The selected path does not exist! + Het geselecteerde pad bestaat niet! - - There are unresolved conflicts. Click for details. - Er zijn nog niet-opgehelderde conflicten. Klik voor details. + + The selected path is not a folder! + Het geselecteerde pad is geen map! - - Virtual file support is enabled. - Virtuele bestandsondersteuning is ingeschakeld. + + There is already a sync from the server to this local folder. Please pick another local folder! + Er wordt vanaf de server al naar deze lokale map gesynchroniseerd. Kies een andere lokale map! - - Signed out - Afgemeld + + Undefined state. + - - Synchronizing VirtualFiles with local folder - Synchroniseren VirtualFiles met lokale map + + Waiting to start syncing. + In afwachting van synchronisatie. - - Synchronizing with local folder - Synchroniseren met lokale map + + You have no permission to write to the selected folder! + U heeft geen machtiging om te schrijven naar de geselecteerde map! + + + OCC::FolderStatusDelegate - - Checking for changes in remote "%1" - Controleren op wijzigingen in externe "%1" + + Add live backup + Map-synchronisatieverbinding toevoegen - - Checking for changes in local "%1" - Controleren op wijzigingen in lokale "%1" + + File + Bestand - - Reconciling changes - Wijzigingen in overeenstemming brengen + + Synchronize any other local folder with your %1 + Synchroniseer een andere lokale map met uw %1 + + + OCC::FolderStatusModel - - Syncing %1 - Example text: "Syncing 'foo.txt', 'bar.txt'" - Synchroniseren %1 + + , + , - - - , - , + + %1 (%2) + %1 (%2) - - download %1/s - Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) - download %1/s + + %1 %2 + %1 %2 - - ↓ %1/s - ↓ %1/s + + %1 %2 (%3 of %4) + %1 %2 (%3 van %4) - - upload %1/s - Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) - upload %1/s + + %1 of %2, file %3 of %4 + %1 van %2, bestand %3 van %4 - - ↑ %1/s - ↑ %1/s + + %5 left, %1 of %2, file %3 of %4 + %5 over, %1 van %2, bestand %3 van %4 - - %1 %2 (%3 of %4) - Example text: "uploading foobar.png (2MB of 2MB)" - %1 %2 (%3 van %4) + + ↑ %1/s + ↑ %1/s - - %1 %2 - Example text: "uploading foobar.png" - %1 %2 + + ↓ %1/s + ↓ %1/s - - A few seconds left, %1 of %2, file %3 of %4 - Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" - + + A few seconds left, %1 of %2, file %3 of %4 + - - %5 left, %1 of %2, file %3 of %4 - %5 over, %1 van %2, bestand %3 van %4 + + Checking for changes in local "%1" + Controleren op wijzigingen in lokale "%1" - - %1 of %2, file %3 of %4 - Example text: "12 MB of 345 MB, file 6 of 7" - %1 van %2, bestand %3 van %4 + + Checking for changes in remote "%1" + Controleren op wijzigingen in externe "%1" - - file %1 of %2 - bestand %1 van %2 + + Click this button to add a folder to synchronize. + Klik op deze knop om een te synchroniseren map toe te voegen. - - Waiting … - Wachten ... - - - - Waiting for %n other folder(s) … - - Wacht op %n andere map ... - Wacht op %n andere mappen ... - + + Could not decrypt! + - - Preparing to sync … - Voorbereiden synchronisatie ... + + download %1/s + download %1/s - - - OCC::FolderWatcher - - The watcher did not receive a test notification. - De kijker ontving geen testmelding. + + Error while loading the list of folders from the server. + Fout bij ophalen mappenlijst van de server. - - - OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. - Dit gebeurt gewoonlijk wanneer de inotify monitors op zijn. Klik op de FAQ voor details. + + Fetching folder list from server … + Mappenlijst ophalen van de server ... - - - OCC::FolderWizard - - Add Folder Sync Connection - Toevoegen mapsynchronisatie verbinding + + file %1 of %2 + bestand %1 van %2 - - Add Sync Connection - Toevoegen Sync verbinding + + Preparing to sync … + Voorbereiden synchronisatie ... - - - OCC::FolderWizardLocalPath - - Click to select a local folder to sync. - Klikken om een lokale map te selecteren voor synchronisatie + + Reconciling changes + Wijzigingen in overeenstemming brengen - - Enter the path to the local folder. - Geef het pad op naar de lokale map. + + Synchronizing VirtualFiles with local folder + Synchroniseren VirtualFiles met lokale map - - Select the source folder - Selecteer de bronmap + + Synchronizing with local folder + Synchroniseren met lokale map - - Add Folder Sync - + + There are unresolved conflicts. Click for details. + Er zijn nog niet-opgehelderde conflicten. Klik voor details. - - Step 1 of 3: Select local folder - + + upload %1/s + upload %1/s - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - + + Virtual file support is enabled. + Virtuele bestandsondersteuning is ingeschakeld. - - Choose - + + Waiting … + Wachten ... + + + + Waiting for %n other folder(s) … + + + + + - - - OCC::FolderWizardRemotePath - - Create Remote Folder - Externe map aanmaken + + You need to be connected to add a folder + U moet verbonden zijn om een map toe te voegen + + + OCC::FolderWatcher - - Enter the name of the new folder to be created below "%1": - Voer de naam van de hieronder te maken nieuwe map in "%1": + + The watcher did not receive a test notification. + De kijker ontving geen testmelding. + + + OCC::FolderWatcherPrivate - - Folder was successfully created on %1. - Map is succesvol aangemaakt op %1. + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + Dit gebeurt gewoonlijk wanneer de inotify monitors op zijn. Klik op de FAQ voor details. + + + OCC::FolderWizard - - Authentication failed accessing %1 - Authenticatie mislukt bij benaderen %1 + Add Folder Sync Connection + Toevoegen mapsynchronisatie verbinding - - Failed to create the folder on %1. Please check manually. - Aanmaken van de map op %1 mislukt. Controleer handmatig. + + Add Sync Connection + Toevoegen Sync verbinding + + + OCC::FolderWizardLocalPath - - Failed to list a folder. Error: %1 - Tonen mappenlijst mislukt. Fout: %1 + + Choose + Kies - - Choose this to sync the entire account - Kies dit om je volledige account te synchroniseren + + Click to select a local folder to sync. + Klikken om een lokale map te selecteren voor synchronisatie - - This folder is already being synced. - Deze map is al gesynchroniseerd. + + Enter the path to the local folder. + Geef het pad op naar de lokale map. - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - U synchroniseert <i>%1</i> al, dat is de bovenliggende map van <i>%2</i>. + + Select the source folder + Selecteer de bronmap + + + OCC::FolderWizardRemotePath - - You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - Je synchroniseert <i>%1</i> al, dat is de bovenliggende map van <i>%2</i>. + + Authentication failed accessing %1 + Authenticatie mislukt bij benaderen %1 - - Add Folder Sync - + + Choose this to sync the entire account + Kies dit om je volledige account te synchroniseren - - Step 2 of 3: Directory in your %1 - + + Create Remote Folder + Externe map aanmaken - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - + + Enter the name of the new folder to be created below "%1": + Voer de naam van de hieronder te maken nieuwe map in "%1": - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - + + Failed to create the folder on %1. Please check manually. + Aanmaken van de map op %1 mislukt. Controleer handmatig. - - Refresh - Vernieuwen + + Failed to list a folder. Error: %1 + Tonen mappenlijst mislukt. Fout: %1 - - Create folder - Maak map + + Folder was successfully created on %1. + Map is succesvol aangemaakt op %1. - - - OCC::FolderWizardSelectiveSync - - - Use virtual files instead of downloading content immediately %1 - Gebruik virtuele bestanden in plaats van de content direct te downloaden %1 + + This folder is already being synced. + Deze map is al gesynchroniseerd. - - - (experimental) - (experimenteel) + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + U synchroniseert <i>%1</i> al, dat is de bovenliggende map van <i>%2</i>. - - Add Folder Sync - + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + Je synchroniseert <i>%1</i> al, dat is de bovenliggende map van <i>%2</i>. + + + OCC::FolderWizardSelectiveSync - - Step 3 of 3: Selektive Synchronisation - + + Use virtual files instead of downloading content immediately %1 + Gebruik virtuele bestanden in plaats van de content direct te downloaden %1 - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Virtuele bestanden worden niet ondersteund voor Windows-partitie-hoofdmappen als lokale map. Kies een geldige submap onder de stationsletter. + + Virtual files are not available for the selected folder + Virtuele bestanden zijn niet beschikbaar voor de geselecteerde map - - Virtual files are not available for the selected folder - Virtuele bestanden zijn niet beschikbaar voor de geselecteerde map + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Virtuele bestanden worden niet ondersteund voor Windows-partitie-hoofdmappen als lokale map. Kies een geldige submap onder de stationsletter. - - + + OCC::FormatWarningsWizardPage - <b>Warning:</b> %1 - <b>Waarschuwing:</b> %1 + + %1 + %1 - <b>Warning:</b> - <b>Waarschuwing:</b> + <b>Warning:</b> + <b>Waarschuwing:</b> - - %1 - %1 + <b>Warning:</b> %1 + <b>Waarschuwing:</b> %1 - - + + OCC::GETFileJob - - No E-Tag received from server, check Proxy/Gateway - Geen E-Tag ontvangen van de server, controleer Proxy/Gateway + + Connection Timeout + Verbindingstime-out - - We received a different E-Tag for resuming. Retrying next time. - We ontvingen een afwijkende E-Tag om door te gaan. We proberen het later opnieuw. + + No E-Tag received from server, check Proxy/Gateway + Geen E-Tag ontvangen van de server, controleer Proxy/Gateway - - We received an unexpected download Content-Length. - We ontvingen een onverwachte download Content-Lengte. + + Server returned wrong content-range + Server retourneerde verkeerde content-bandbreedte - - Server returned wrong content-range - Server retourneerde verkeerde content-bandbreedte + + We received a different E-Tag for resuming. Retrying next time. + We ontvingen een afwijkende E-Tag om door te gaan. We proberen het later opnieuw. - - Connection Timeout - Verbindingstime-out + + We received an unexpected download Content-Length. + We ontvingen een onverwachte download Content-Lengte. - - + + OCC::GeneralSettings - - Advanced - Geavanceerd - - - About - Over - - - Legal notice - Juridische bepalingen - - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB + + &Analysis data collection for needs-based design + &Analyse van gegevensverzameling voor een op behoeften gebaseerd ontwerp - Use &Monochrome Icons - Gebruik &monochrome pictogrammen + + &Automatically check for updates + - &Launch on System Startup - &Starten bij systeemstart + &Channel + &Kanaal - Show Server &Notifications - Tonen server&meldingen + &Check for Update now + &Controleer nu op update - - Updates - Updates + + &Launch on system startup + - &Automatically check for Updates - &Controleer automatisch op updates + + &Restart && Update + &Herstarten && Bijwerken - &Channel - &Kanaal + About + Over - Ask for confirmation before synchronizing external storages - Vraag bevestiging voor synchronisatie van mappen op externe opslag - - - - Move removed files to trash - - - - - S&how crash reporter - T&onen crash reporter + + Ask for confirmation before + synchronizing new folders larger than + Vraag om bevestiging voordat u nieuwe mappen synchroniseert die groter zijn dan - - Edit &Ignored Files - Bewerken &genegeerde bestanden + + Ask for confirmation before synchronizing + external storages + Vraag om bevestiging voordat je externe opslag synchroniseert - - - Create Debug Archive - Debugarchief maken + Ask for confirmation before synchronizing external storages + Vraag bevestiging voor synchronisatie van mappen op externe opslag - &Check for Update now - &Controleer nu op update + Ask for confirmation before synchronizing folders larger than + Vraag bevestiging voordat mappen worden gedownload groter dan - Ask for confirmation before synchronizing folders larger than - Vraag bevestiging voordat mappen worden gedownload groter dan + Ask for confirmation before synchronizing new folders larger than + - - Desktop client x.x.x - + + Automatically disable synchronisation of + folders that overcome limit + Automatisch synchronisatie uitschakelen van mappen die limiet overschrijden - - Update channel - + Automatically disable synchronisation of folders that overcome limit + - - Ask for confirmation before - synchronizing new folders larger than - + + beta + beta - - - MB - Trailing part of "Ask confirmation before syncing folder larger than" - + + Change update channel + Wijzigen bijwerkkanaal - - Notify when synchronised folders grow - larger than specified limit - + + Change update channel? + Wijzigen bijwerkkanaal? - - Automatically disable synchronisation of - folders that overcome limit - + + Check Now + - - Ask for confirmation before synchronizing - external storages - + + Create Debug Archive + Debugarchief maken - - Show sync folders in &Explorer's navigation - pane - + + Data Protection + Gegevensbescherming - - Data Protection - + + Debug Archive Created + Debugarchief Aangemaakt - - &Analysis data collection for needs-based design - + + Debug archive is created at %1 + Debugarchief is gemaakt op %1 - - Privacy Policy - + + Desktop client x.x.x + - - Open Source Software - + + Edit &Ignored Files + Bewerken &genegeerde bestanden - - - stable - stabiel + + For System Tray + Voor systeemvak - - - beta - beta + + General Settings + Algemene instellingen - - &Restart && Update - &Herstarten && Bijwerken + Info + - - More Information - + + Legal Notice + - Show sync folders in &Explorer's Navigation Pane - Toon sync-mappen in het &Verkenner navigatievenster + MB + MB - - &Automatically check for updates - + + More Information + Meer informatie - - Check Now - + + Move removed files to trash + - - Usage Documentation - + + Notify when synchronised folders grow + larger than specified limit + Waarschuwing wanneer gesynchroniseerde mappen groter worden dan de opgegeven limiet. - - Legal Notice - + Notify when synchronised folders grow larger than specified limit + - - General Settings - Algemene instellingen + + Open Source Software + Open source software - - For System Tray - Voor systeemvak + + Privacy Policy + Privacybeleid - - Use &monochrome icons - + + S&how crash reporter + T&onen crash reporter - - &Launch on system startup - + + Server notifications that require attention. + Servermeldingen die aandacht nodig hebben. - - Show server &notifications - + + Show call notification dialogs. + - - Show call notifications - + + Show call notifications + - - Server notifications that require attention. - Servermeldingen die aandacht nodig hebben. + + Show server &notifications + - - Show call notification dialogs. - + + Show sync folders in &Explorer's navigation + pane + Sync-mappen weergeven in het navigatiedeelvenster van &Explorer - - You cannot disable autostart because system-wide autostart is enabled. - Je kunt autostart niet uitschakelen omdat systeem-brede autostart is ingeschakeld. + Show sync folders in &Explorer's Navigation Pane + Toon sync-mappen in het &Verkenner navigatievenster - - Change update channel? - Wijzigen bijwerkkanaal? + + stable + stabiel - - The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. - Het updatekanaal bepaalt welke clientupdates worden aangeboden voor installatie. Het "stabiele" kanaal bevat alleen upgrades die als betrouwbaar worden beschouwd, terwijl de versies in het "betakanaal" mogelijk nieuwere functies en bugfixes bevatten, die nog niet grondig zijn getest. + Het updatekanaal bepaalt welke clientupdates worden aangeboden voor installatie. Het "stabiele" kanaal bevat alleen upgrades die als betrouwbaar worden beschouwd, terwijl de versies in het "betakanaal" mogelijk nieuwere functies en bugfixes bevatten, die nog niet grondig zijn getest. Merk op dat dit alleen selecteert van welke pool upgrades worden overgenomen en dat er geen downgrades zijn: teruggaan van het betakanaal naar het stabiele kanaal kan meestal niet onmiddellijk worden gedaan en dat betekent wachten op een stabiele versie die nieuwer is dan de momenteel geïnstalleerde betaversie. - - Change update channel - Wijzigen bijwerkkanaal + + Update channel + + + + + Updates + Updates - - Cancel - Annuleren + + Usage Documentation + - - Zip Archives - Zip Archieven + + Use &monochrome icons + - - Debug Archive Created - Debugarchief Aangemaakt + + You cannot disable autostart because system-wide autostart is enabled. + Je kunt autostart niet uitschakelen omdat systeem-brede autostart is ingeschakeld. - - Debug archive is created at %1 - Debugarchief is gemaakt op %1 + + Zip Archives + Zip Archieven - - + + OCC::GetOrCreatePublicLinkShare - - Password for share required - Wachtwoord voor deellink vereist + + Could not retrieve or create the public link share. Error: + +%1 + Kan de openbare deellink niet ophalen of creëren. Fout: + +%1 - - Please enter a password for your link share: - Voer het wachtwoord in voor je deellink: + + Password for share required + Wachtwoord voor deellink vereist - - Sharing error - Fout bij delen + + Please enter a password for your link share: + Voer het wachtwoord in voor je deellink: - - Could not retrieve or create the public link share. Error: - -%1 - Kan de openbare deellink niet ophalen of creëren. Fout: - -%1 + + Sharing error + Fout bij delen - - + + OCC::HttpCredentialsGui - - Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - + + <a href="%1">Click here</a> to request an app password from the web interface. + <a href="%1">Klik hier</a> om een nieuw app wachtwoord via de web interface op te vragen. - - Reading from keychain failed with error: "%1" - Het lezen van de sleutelketen is mislukt met fout: "%1" + + Enter Password + Vul het wachtwoord in - - Enter Password - Vul het wachtwoord in + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + - - <a href="%1">Click here</a> to request an app password from the web interface. - <a href="%1">Klik hier</a> om een nieuw app wachtwoord via de web interface op te vragen. + + Reading from keychain failed with error: "%1" + Het lezen van de sleutelketen is mislukt met fout: "%1" - - + + OCC::IgnoreListEditor - - Ignored Files Editor - Genegeerde bestanden-editor + + Files Ignored by Patterns + Bestanden volgens patroon genegeerd - - Global Ignore Settings - Algemene negeer-instellingen + + Global Ignore Settings + Algemene negeer-instellingen - - Sync hidden files - Synchroniseer verborgen bestanden + + Ignored Files Editor + Genegeerde bestanden-editor - - Files Ignored by Patterns - Bestanden volgens patroon genegeerd + + Sync hidden files + Synchroniseer verborgen bestanden - - This entry is provided by the system at "%1" and cannot be modified in this view. - Dit gegeven is door het systeem vastgelegd op "%1" en kan niet worden aangepast in deze weergave. + + This entry is provided by the system at "%1" and cannot be modified in this view. + Dit gegeven is door het systeem vastgelegd op "%1" en kan niet worden aangepast in deze weergave. - - + + OCC::IgnoreListTableWidget - - Pattern - Patroon + + Add + Toevoegen - - Allow Deletion - Verwijderen toestaan + Add a new ignore pattern: + Voeg nieuw negeerpatroon toe: - - Add - Toevoegen + Add Ignore Pattern + Toevoegen negeerpatroon - - Remove - Verwijderen + + Add New Ignore Pattern + Nieuw negeerpatroon toevoegen - - Remove all - Alles verwijderen + + Allow Deletion + Verwijderen toestaan - Files or folders matching a pattern will not be synchronized. + + Cannot write changes to "%1". + Kan geen wijzigingen wegschrijven naar "%1". + + + + Could not open file + Kan het bestand niet openen + + + Files or folders matching a pattern will not be synchronized. Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Bestanden of mappen die overeenkomen met een patroon zullen niet worden gesynchroniseerd. + Bestanden of mappen die overeenkomen met een patroon zullen niet worden gesynchroniseerd. Onderdelen die gewist mogen worden, worden verwijderd als ze verhinderen dat een map verdwijnt. Dit is nuttig voor metadata. - - Files or folders that match this pattern will not be synchronized. + + Files or folders that match this pattern will not be synchronized. Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - + Bestanden of mappen die overeenkomen met dit patroon worden niet gesynchroniseerd. + +Objecten die verwijderd mogen worden, worden verwijderd als ze zouden verhinderen dat een map verwijderd wordt. Dit is nuttig voor metadata. - - Could not open file - Kan het bestand niet openen + + Ignore Pattern + Patroon negeren - - Cannot write changes to "%1". - Kan geen wijzigingen wegschrijven naar "%1". + + Pattern + Patroon - - Ignore Pattern - + + Remove + Verwijderen - - Add New Ignore Pattern - + + Remove all + Alles verwijderen + + + OCC::InvalidFilenameDialog - Add Ignore Pattern - Toevoegen negeerpatroon + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + Kan het bestand niet hernoemen omdat er al een bestand met dezelfde naam op de server bestaat. Kies een andere naam. - Add a new ignore pattern: - Voeg nieuw negeerpatroon toe: + + Checking rename permissions … + - - - OCC::InvalidFilenameDialog - - Invalid filename - Ongeldige bestandsnaam + + Could not rename local file. %1 + - - The file could not be synced because it contains characters which are not allowed on this system. - Dit bestand kon niet worden gesynchroniseerd omdat het symbolen bevat die niet toegestaan zijn op dit systeem. + + Invalid filename + Ongeldige bestandsnaam - - Error - Fout + + Please enter a new name for the file: + Voer alsjeblieft een nieuwe naam voor dit bestand in: - - Please enter a new name for the file: - Voer alsjeblieft een nieuwe naam voor dit bestand in: + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + Het bestand %1 kan niet worden gesynchroniseerd omdat de naam tekens bevat die niet zijn toegestaan op dit systeem. - - New filename - Nieuwe bestandsnaam + + The file could not be synced because it contains characters which are not allowed on this system. + Dit bestand kon niet worden gesynchroniseerd omdat het symbolen bevat die niet toegestaan zijn op dit systeem. - - Rename file - Bestand hernoemen + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + + + + OCC::LegalNotice - - The file "%1" could not be synced because the name contains characters which are not allowed on this system. - Het bestand %1 kan niet worden gesynchroniseerd omdat de naam tekens bevat die niet zijn toegestaan op dit systeem. + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + - - The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + <p>Gelicenseerd onder de GNU General Public License (GPL) Versie 2.0 of later</p> - - Checking rename permissions … - + Legal notice + Juridische bepalingen + + + OCC::LogBrowser - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Je bent niet gemachtigd om dit bestand te hernoemen. Vraag de auteur van het bestand om het te hernoemen. + + Enable logging to temporary folder + Inschakelen logging naar tijdelijke map - - Failed to fetch permissions with error %1 - + + Log Output + Log Output - - Filename contains leading and trailing spaces. - De bestandsnaam bevat spaties vooraan en achteraan. + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. +Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. +If enabled, logs will be written to %1 + De client kan debug-logboeken naar een tijdelijke map schrijven. Deze logboeken zijn erg handig bij het diagnosticeren van problemen. +Omdat logbestanden groot kunnen worden, zal de client een nieuwe starten voor elke synchronisatierun en de oudere comprimeren. Het zal ook logbestanden na een paar uur verwijderen om te voorkomen dat er te veel schijfruimte wordt verbruikt. +Indien ingeschakeld, worden logboeken naar % 1 geschreven - - Filename contains leading spaces. - De bestandsnaam bevat spaties vooraan. + + This setting persists across client restarts. +Note that using any logging command line options will override this setting. + Deze instelling blijft bestaan tijdens het opnieuw opstarten van de client. +Merk op dat het gebruik van logging-opdrachtregel opties deze instelling zal overschrijven. + + + OCC::Logger - - Filename contains trailing spaces. - De bestandsnaam bevat spaties achteraan. + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + <nobr>Bestand "%1"<br/>kan niet voor schrijven worden geopend.<br/><br/>De log output kan <b>niet</b> opgeslagen worden!</nobr> + + + OCC::NSISUpdater - - Use invalid name - Gebruik ongeldige naam + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + <p>Een nieuwe versie van de %1 Client is beschikbaar, maar het updaten is mislukt.</p><p><b>%2</b> is gedownload. De geïnstalleerde versie is %3. Als je herstarten en bijwerken bevestigt, kan je computer opnieuw opgestart worden om de installatie te voltooien.</p> - - Filename contains illegal characters: %1 - Bestandsnaam bevat ongeldige tekens: %1 + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + <p>Er is een nieuwe versie van de %1 Client beschikbaar.</p><p><b>%2</b> is beschikbaar voor download. De geïnstalleerde versie is %3.</p> - - Could not rename file. Please make sure you are connected to the server. - Kan het bestand niet hernoemen. Zorg ervoor dat je verbonden bent met de server. + + Ask again later + Vraag later nogmaals - - Cannot rename file because a file with the same name does already exist on the server. Please pick another name. - Kan het bestand niet hernoemen omdat er al een bestand met dezelfde naam op de server bestaat. Kies een andere naam. + + Get update + Ophalen update - - Could not rename local file. %1 - + + New Version Available + Nieuwe versie beschikbaar - - - OCC::LegalNotice - - - Legal notice - Juridische bepalingen + + Restart and update + Herstarten en bijwerken - - Close - Sluiten + + Skip this time + Deze keer overslaan - - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - + + Update Failed + Bijwerken mislukt - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> - <p>Gelicenseerd onder de GNU General Public License (GPL) Versie 2.0 of later</p> + + Update manually + Handmatig bijwerken - - - OCC::LogBrowser + + + OCC::NetworkSettings - - Log Output - Log Output + + Download Bandwidth + Download bandbreedte - - The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. -Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. -If enabled, logs will be written to %1 - De client kan debug-logboeken naar een tijdelijke map schrijven. Deze logboeken zijn erg handig bij het diagnosticeren van problemen. -Omdat logbestanden groot kunnen worden, zal de client een nieuwe starten voor elke synchronisatierun en de oudere comprimeren. Het zal ook logbestanden na een paar uur verwijderen om te voorkomen dat er te veel schijfruimte wordt verbruikt. -Indien ingeschakeld, worden logboeken naar % 1 geschreven + + Host + Server - - Enable logging to temporary folder - Inschakelen logging naar tijdelijke map + + Hostname of proxy server + Hostnaam van proxyserver - - This setting persists across client restarts. -Note that using any logging command line options will override this setting. - Deze instelling blijft bestaan tijdens het opnieuw opstarten van de client. -Merk op dat het gebruik van logging-opdrachtregel opties deze instelling zal overschrijven. + + HTTP(S) proxy + HTTP(S) proxy - - Open folder - Openen map + + KBytes/s + KBytes/s - - - OCC::Logger - - Error - Fout + + Limit automatically + Beperk automatisch - - <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> - <nobr>Bestand "%1"<br/>kan niet voor schrijven worden geopend.<br/><br/>De log output kan <b>niet</b> opgeslagen worden!</nobr> + + Limit to + Beperkt tot - - - OCC::NSISUpdater - - New Version Available - Nieuwe versie beschikbaar + + Limit to 3/4 of estimated bandwidth + Beperk tot 3/4 van de geschatte bandbreedte - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - <p>Er is een nieuwe versie van de %1 Client beschikbaar.</p><p><b>%2</b> is beschikbaar voor download. De geïnstalleerde versie is %3.</p> + + Manually specify proxy + - - Skip this time - Deze keer overslaan + + No limit + Geen beperking - - Get update - Ophalen update + + No proxy + - - Update Failed - Bijwerken mislukt + + Note: proxy settings have no effects for accounts on localhost + Let op: proxy-instellingen hebben geen effect voor accounts op localhost - - <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> - <p>Een nieuwe versie van de %1 Client is beschikbaar, maar het updaten is mislukt.</p><p><b>%2</b> is gedownload. De geïnstalleerde versie is %3. Als je herstarten en bijwerken bevestigt, kan je computer opnieuw opgestart worden om de installatie te voltooien.</p> + + Password for proxy server + Wachtwoord voor proxyserver - - Ask again later - Vraag later nogmaals + + Proxy server requires authentication + Proxyserver heeft verificatie nodig - - Restart and update - Herstarten en bijwerken + + Proxy Settings + Proxy Instellingen - - Update manually - Handmatig bijwerken + + SOCKS5 proxy + SOCKS5 proxy - - - OCC::NetworkSettings - - Proxy Settings - Proxy Instellingen + Specify proxy manually as + Specificeer proxy handmatig als - No Proxy - Geen Proxy + + Upload Bandwidth + Upload bandbreedte - - No proxy - + + Use system proxy + Gebruik systeem proxy - - Use system proxy - Gebruik systeem proxy + + Username for proxy server + Gebruikersnaam voor proxyserver + + + OCC::OAuth - Specify proxy manually as - Specificeer proxy handmatig als + <h1>Login Error</h1><p>%1</p> + <h1>Inlog fout<p>%1</p> - - Manually specify proxy - + <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> + - - Host - Server + Empty JSON from OAuth2 redirect + Lege JSON van OAuth2 redirect + + + OCC::OCUpdater - - Proxy server requires authentication - Proxyserver heeft verificatie nodig + + %1 available. Restart application to start the update. + %1 beschikbaar. Herstart de applicatie om de update te starten. - - Note: proxy settings have no effects for accounts on localhost - Let op: proxy-instellingen hebben geen effect voor accounts op localhost + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + Een nieuwe update voor %1 wordt geïnstalleerd. De updater kan om extra privileges vragen tijdens het update proces. Je computer kan herstart worden om de installatie te voltooien. - - Download Bandwidth - Download bandbreedte + + Checking update server … + Controleren updateserver ... - - - No limit - Geen beperking + + Could not check for new updates. + Kan niet controleren op nieuwe updates. - - - Limit to 3/4 of estimated bandwidth - Beperk tot 3/4 van de geschatte bandbreedte + + Could not download update. Please open %1 to download the update manually. + Kon de update niet downloaden. Open %1 om de update handmatig te downloaden. - - - Limit automatically - Beperk automatisch + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + Kon de download niet bijwerken. Open <a href='%1'>%1</a> om de update handmatig te downloaden. - - - Limit to - Beperkt tot + + Downloading %1. Please wait … + Downloaden %1. Even geduld … - - - KBytes/s - KBytes/s + + New %1 is available. Please open %2 to download the update. + Nieuwe %1 beschikbaar. Open %2 om de update te downloaden. - - Upload Bandwidth - Upload bandbreedte + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + Nieuwe %1 beschikbaar. Open <a href='%2'>%1</a> om de update te downloaden. - - Hostname of proxy server - Hostnaam van proxyserver + + New %1 update ready + Nieuwe %1 update is klaar - - Username for proxy server - Gebruikersnaam voor proxyserver + + No updates available. Your installation is at the latest version. + Geen updates beschikbaar. Je installatie is al van de laatste versie. - - Password for proxy server - Wachtwoord voor proxyserver + + Update Check + Controle update - - HTTP(S) proxy - HTTP(S) proxy + + Update status is unknown: Did not check for new updates. + Update status is onbekend: niet gecontroleerd op nieuwe updates. + + + OCC::OwncloudAdvancedSetupPage - - SOCKS5 proxy - SOCKS5 proxy + + (%1) + (%1) - - - OCC::OAuth - Error returned from the server: <em>%1</em> - Fout gemeld door de server: <em>%1</em> + + %1 folder "%2" is synced to local folder "%3" + %1 map "%2" is gesynchroniseerd naar de lokale map "%3" - There was an error accessing the "token" endpoint: <br><em>%1</em> - Er treedt een fout op bij het benaderen van het "token" endpoint: <br><em>%1</em> + + %1 free space + %1 vrije ruimte - Empty JSON from OAuth2 redirect - Lege JSON van OAuth2 redirect + + Connect + Verbinden - Could not parse the JSON returned from the server: <br><em>%1</em> - Kon de van de server ontvangen JSON niet verwerken: <br><em>%1</em> + + Local Sync Folder + Lokale synchronisatiemap - The reply from the server did not contain all expected fields - Het antwoord van de server bevat niet alle verwachte velden + + Sync the folder "%1" + Synchroniseer de map "%1" - <h1>Login Error</h1><p>%1</p> - <h1>Inlog fout<p>%1</p> + + There isn't enough free space in the local folder! + Er is niet genoeg ruimte beschikbaar in de lokale map! - - - OCC::OCUpdater - - New %1 update ready - Nieuwe %1 update is klaar + + Use &virtual files instead of downloading content immediately %1 + Gebruik &virtuele bestanden in plaats van direct downloaden content%1 - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - Een nieuwe update voor %1 wordt geïnstalleerd. De updater kan om extra privileges vragen tijdens het update proces. Je computer kan herstart worden om de installatie te voltooien. + + Warning: The local folder is not empty. Pick a resolution! + Waarschuwing: De lokale map is niet leeg. Maak een keuze! + + + OCC::OwncloudConnectionMethodDialog - - Downloading %1. Please wait … - Downloaden %1. Even geduld … + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Kan niet verbinden met het opgegeven beveiligde serveradres <em>%1</em>.Hoe wilt u verder gaan?</p></body></html> - - %1 available. Restart application to start the update. - %1 beschikbaar. Herstart de applicatie om de update te starten. + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Kan niet verbinden met het opgegeven beveiligde serveradres. Hoe wilt u verder gaan?</p></body></html> - - Could not download update. Please open <a href='%1'>%1</a> to download the update manually. - Kon de download niet bijwerken. Open <a href='%1'>%1</a> om de update handmatig te downloaden. + + Configure client-side TLS certificate + Configureer het client-side TLS-certificaat - - Could not download update. Please open %1 to download the update manually. - Kon de update niet downloaden. Open %1 om de update handmatig te downloaden. + + Connection failed + Verbinding mislukt - - Could not check for new updates. - Kan niet controleren op nieuwe updates. + + Retry unencrypted over HTTP (insecure) + Probeer onversleuteld over HTTP (onbeveiligd) - - New %1 is available. Please open <a href='%2'>%2</a> to download the update. - Nieuwe %1 beschikbaar. Open <a href='%2'>%1</a> om de update te downloaden. + + Select a different URL + Selecteer een andere URL + + + OCC::OwncloudHttpCredsPage - - New %1 is available. Please open %2 to download the update. - Nieuwe %1 beschikbaar. Open %2 om de update te downloaden. + + &Email + &E-mail - - Checking update server … - Controleren updateserver ... + + Connect to %1 + Verbinden met %1 - - Update status is unknown: Did not check for new updates. - Update status is onbekend: niet gecontroleerd op nieuwe updates. + + Enter user credentials + Vul uw inloggegevens in + + + OCC::OwncloudOAuthCredsPage - - No updates available. Your installation is at the latest version. - Geen updates beschikbaar. Je installatie is al van de laatste versie. + Login in your browser + Login in je browser + + + OCC::OwncloudPropagator - - Update Check - Controle update + Error with the metadata. Getting unexpected metadata format. + - - - OCC::OwncloudAdvancedSetupPage - - Connect - Verbinden + + Impossible to get modification time for file in conflict %1 + Onmogelijk om wijzigingstijd te krijgen voor bestand in conflict %1) + + + OCC::OwncloudSetupPage - - - Use &virtual files instead of downloading content immediately %1 - Gebruik &virtuele bestanden in plaats van direct downloaden content%1 + + &Next > + &Volgende > - - - (experimental) - (experimenteel) + + Could not load certificate. Maybe wrong password? + Kan certificaat niet laden. Misschien is het wachtwoord onjuist? - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Virtuele bestanden worden niet ondersteund voor Windows-partitie-hoofdmappen als lokale map. Kies een geldige submap onder de stationsletter. + + Server address does not seem to be valid + Het serveradres lijkt niet geldig - - %1 folder "%2" is synced to local folder "%3" - %1 map "%2" is gesynchroniseerd naar de lokale map "%3" + + The link to your %1 web interface when you open it in the browser. + De link naar je %1 web interface wanneer je die opent in de browser. + + + OCC::OwncloudSetupWizard - - Sync the folder "%1" - Synchroniseer de map "%1" + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + <font color="green"><b>Lokale synch map %1 is succesvol aangemaakt!</b></font> - - Warning: The local folder is not empty. Pick a resolution! - Waarschuwing: De lokale map is niet leeg. Maak een keuze! + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + <font color="green">Succesvol verbonden met %1: %2 versie %3 (%4)</font><br/><br/> - - %1 free space - %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB - %1 vrije ruimte + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + <p><font color="red">Het aanmaken van de externe map is mislukt, waarschijnlijk omdat je inloggegevens fout waren.</font><br/>ga terug en controleer je inloggevens.</p> - - Virtual files are not available for the selected folder - Virtuele bestanden zijn niet beschikbaar voor de geselecteerde map + + A sync connection from %1 to remote directory %2 was set up. + Er is een synchronisatie verbinding van %1 naar externe map %2 opgezet. - - Local Sync Folder - Lokale synchronisatiemap + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + Kan de map niet verwijderen en back-uppen, omdat de map of een bestand daarin, geopend is in een ander programma. Sluit de map of het bestand en drup op Opnieuw of annuleer de installatie. - - - (%1) - (%1) + + Connection to %1 could not be established. Please check again. + Er kan geen verbinding worden gemaakt met %1. Probeer het nog eens. - - There isn't enough free space in the local folder! - Er is niet genoeg ruimte beschikbaar in de lokale map! + + Could not create local folder %1 + Kan lokale map %1 niet aanmaken - - - OCC::OwncloudConnectionMethodDialog - - Connection failed - Verbinding mislukt + + creating folder on Nextcloud: %1 + aanmaken map op Nextcloud: %1 - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Kan niet verbinden met het opgegeven beveiligde serveradres. Hoe wilt u verder gaan?</p></body></html> + + Creating local sync folder %1 … + Creëren lokale synchronisatie map %1 ... - - Select a different URL - Selecteer een andere URL + + Error: %1 + Fout: %1 - - Retry unencrypted over HTTP (insecure) - Probeer onversleuteld over HTTP (onbeveiligd) + + Failed to connect to %1 at %2:<br/>%3 + Kon geen verbinding maken met %1 op %2:<br/>%3 - - Configure client-side TLS certificate - Configureer het client-side TLS-certificaat + + failed. + mislukt. - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Kan niet verbinden met het opgegeven beveiligde serveradres <em>%1</em>.Hoe wilt u verder gaan?</p></body></html> + + Folder rename failed + Hernoemen map mislukt - - - OCC::OwncloudHttpCredsPage - - &Email - &E-mail + + Invalid URL + Ongeldige URL - - Connect to %1 - Verbinden met %1 + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + Lokale synchronisatie map %1 bestaat al, deze wordt ingesteld voor synchronisatie.<br/><br/> - - Enter user credentials - Vul uw inloggegevens in + + No remote folder specified! + Geen externe map opgegeven! - - - OCC::OwncloudOAuthCredsPage - Connect to %1 - Verbinden met %1 + + OK + OK - Login in your browser - Login in je browser + + Remote folder %1 created successfully. + Externe map %1 succesvol gecreëerd. - - - OCC::OwncloudPropagator - - - Impossible to get modification time for file in conflict %1 - Onmogelijk om wijzigingstijd te krijgen voor bestand in conflict %1) + + Remote folder %1 creation failed with error <tt>%2</tt>. + Aanmaken van externe map %1 mislukt met fout <tt>%2</tt>. - - - OCC::OwncloudSetupPage - - The link to your %1 web interface when you open it in the browser. - %1 will be replaced with the application name - De link naar je %1 web interface wanneer je die opent in de browser. + + Successfully connected to %1! + Succesvol verbonden met %1! - - &Next > - &Volgende > + + The folder creation resulted in HTTP error code %1 + Het aanmaken van de map resulteerde in HTTP foutcode %1 - - Server address does not seem to be valid - Het serveradres lijkt niet geldig + + The remote folder %1 already exists. Connecting it for syncing. + De externe map %1 bestaat al. Verbinden voor synchroniseren. - - Could not load certificate. Maybe wrong password? - Kan certificaat niet laden. Misschien is het wachtwoord onjuist? + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + Het aanmaken van de externe map is mislukt, waarschijnlijk omdat je inloggegevens fout waren.<br/>Ga terug en controleer je inloggegevens.</p> - - - OCC::OwncloudSetupWizard - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - <font color="green">Succesvol verbonden met %1: %2 versie %3 (%4)</font><br/><br/> + + Timeout while trying to connect to %1 at %2. + Time-out bij verbinden met %1 op %2. - - Invalid URL - Ongeldige URL + + Trying to connect to %1 at %2 … + Probeer te verbinden met %1 om %2 ... + + + OCC::OwncloudWizard - - Failed to connect to %1 at %2:<br/>%3 - Kon geen verbinding maken met %1 op %2:<br/>%3 + + Add %1 account + Toevoegen %1 account - - Timeout while trying to connect to %1 at %2. - Time-out bij verbinden met %1 op %2. + + Enable experimental feature? + Inschakelen experimentele functies? - - Trying to connect to %1 at %2 … - Probeer te verbinden met %1 om %2 ... + + Enable experimental placeholder mode + Inschakelen experimentele aanduider modus - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - De geauthentiseerde aanvraag voor de server werd omgeleid naar "%1". De URL is onjuist, de server is verkeerd geconfigureerd. + + Skip folders configuration + Sla configuratie van mappen over - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Toegang door server verboden. Om te verifiëren dat je toegang mag hebben, <a href="%1">klik hier</a> om met je browser toegang tot de service te krijgen. + + Stay safe + Blijf veilig - - There was an invalid response to an authenticated WebDAV request - Er is een ongeldig antwoord ontvangen op een geauthenticeerde WebDAV opvraging - - - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> - Lokale synchronisatie map %1 bestaat al, deze wordt ingesteld voor synchronisatie.<br/><br/> - - - - Creating local sync folder %1 … - Creëren lokale synchronisatie map %1 ... - - - - OK - OK - - - - failed. - mislukt. - - - - Could not create local folder %1 - Kan lokale map %1 niet aanmaken - - - - No remote folder specified! - Geen externe map opgegeven! - - - - Error: %1 - Fout: %1 - - - - creating folder on Nextcloud: %1 - aanmaken map op Nextcloud: %1 - - - - Remote folder %1 created successfully. - Externe map %1 succesvol gecreëerd. - - - - The remote folder %1 already exists. Connecting it for syncing. - De externe map %1 bestaat al. Verbinden voor synchroniseren. - - - - - The folder creation resulted in HTTP error code %1 - Het aanmaken van de map resulteerde in HTTP foutcode %1 - - - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - Het aanmaken van de externe map is mislukt, waarschijnlijk omdat je inloggegevens fout waren.<br/>Ga terug en controleer je inloggegevens.</p> - - - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - <p><font color="red">Het aanmaken van de externe map is mislukt, waarschijnlijk omdat je inloggegevens fout waren.</font><br/>ga terug en controleer je inloggevens.</p> - - - - - Remote folder %1 creation failed with error <tt>%2</tt>. - Aanmaken van externe map %1 mislukt met fout <tt>%2</tt>. - - - - A sync connection from %1 to remote directory %2 was set up. - Er is een synchronisatie verbinding van %1 naar externe map %2 opgezet. - - - - Successfully connected to %1! - Succesvol verbonden met %1! - - - - Connection to %1 could not be established. Please check again. - Er kan geen verbinding worden gemaakt met %1. Probeer het nog eens. - - - - Folder rename failed - Hernoemen map mislukt - - - - Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - Kan de map niet verwijderen en back-uppen, omdat de map of een bestand daarin, geopend is in een ander programma. Sluit de map of het bestand en drup op Opnieuw of annuleer de installatie. - - - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> - <font color="green"><b>Lokale synch map %1 is succesvol aangemaakt!</b></font> - - - - OCC::OwncloudWizard - - - Add %1 account - Toevoegen %1 account - - - - Skip folders configuration - Sla configuratie van mappen over - - - - Cancel - Annuleren - - - - Enable experimental feature? - Inschakelen experimentele functies? - - - - When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. Switching to this mode will abort any currently running synchronization. This is a new, experimental mode. If you decide to use it, please report any issues that come up. - Als de "virtuele bestanden" modus is ingeschakeld, worden aanvankelijk geen bestanden gedownload. In plaats daarvan wordt een klein "% 1" -bestand gemaakt voor elk bestand dat op de server staat. De inhoud kan worden gedownload door deze bestanden uit te voeren of door hun contextmenu te gebruiken. + Als de "virtuele bestanden" modus is ingeschakeld, worden aanvankelijk geen bestanden gedownload. In plaats daarvan wordt een klein "% 1" -bestand gemaakt voor elk bestand dat op de server staat. De inhoud kan worden gedownload door deze bestanden uit te voeren of door hun contextmenu te gebruiken. De modus voor virtuele bestanden is wederzijds exclusief met selectieve synchronisatie. De op dit moment niet-geselecteerde mappen worden vertaald naar mappen die alleen online zijn en je instellingen voor selectieve synchronisatie worden opnieuw ingesteld. @@ -4140,3267 +3730,2540 @@ Als je naar deze modus overschakelt, wordt elke momenteel lopende synchronisatie Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen we je om eventuele problemen te melden. - - - Enable experimental placeholder mode - Inschakelen experimentele aanduider modus - - - - Stay safe - Blijf veilig - - - + + OCC::PasswordInputDialog - - Password for share required - Wachtwoord voor deellink vereist + + Please enter a password for your share: + - - - Please enter a password for your share: - - - - + + OCC::PollJob - - Invalid JSON reply from the poll URL - Ongeldig JSON antwoord van de opgegeven URL + + Invalid JSON reply from the poll URL + Ongeldig JSON antwoord van de opgegeven URL - - + + OCC::ProcessDirectoryJob - - Symbolic links are not supported in syncing. - Symbolische links worden niet ondersteund bij het synchroniseren. - - - - File is listed on the ignore list. - Het bestand is opgenomen op de negeerlijst. - - - - File names ending with a period are not supported on this file system. - Bestandsnamen die eindigen met een punt worden niet ondersteund door het bestandssysteem. - - - - File names containing the character "%1" are not supported on this file system. - Bestandsnamen met een "%1" symbool worden niet ondersteund door het bestandssysteem. + + Cannot sync due to invalid modification time + - - File name contains at least one invalid character - De bestandsnaam bevat ten minste één ongeldig teken + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. + - - The file name is a reserved name on this file system. - De bestandsnaam is een gereserveerde naam op dit bestandssysteem. + + Conflict when uploading a file. It's going to get removed! + Conflict bij het uploaden van een bestand. Het wordt verwijderd! - - Filename contains trailing spaces. - De bestandsnaam bevat spaties achteraan. + + Conflict when uploading a folder. It's going to get cleared! + Conflict bij het uploaden van een map. Het wordt opgeruimd! - - Filename contains leading spaces. - De bestandsnaam bevat spaties vooraan. + + Conflict: Server version downloaded, local copy renamed and not uploaded. + Bestandsconflict: serverversie is gedownload, de lokale kopie is hernoemd en niet geüpload - - Filename contains leading and trailing spaces. - De bestandsnaam bevat spaties vooraan en achteraan. + + Could not upload file, because it is open in "%1". + - - Filename is too long. - De bestandsnaam is te lang. + + Error while deleting file record %1 from the database + - - File/Folder is ignored because it's hidden. - Bestand/Map is genegeerd omdat het verborgen is. + + Error while reading the database + Fout bij lezen database - - Stat failed. - Stat mislukt. + + File has extension reserved for virtual files. + Bestand heeft een extensie gereserveerd voor virtuele bestanden. - - Conflict: Server version downloaded, local copy renamed and not uploaded. - Bestandsconflict: serverversie is gedownload, de lokale kopie is hernoemd en niet geüpload + + file id + bestand id - - Case Clash Conflict: Server file downloaded and renamed to avoid clash. - + + File is listed on the ignore list. + Het bestand is opgenomen op de negeerlijst. - - The filename cannot be encoded on your file system. - De bestandsnaam kan op je bestandssysteem niet worden gecodeerd. + + File name contains at least one invalid character + De bestandsnaam bevat ten minste één ongeldig teken - - The filename is blacklisted on the server. - De bestandsnaam staat op de negeerlijst van de server. + + File names containing the character "%1" are not supported on this file system. + Bestandsnamen met een "%1" symbool worden niet ondersteund door het bestandssysteem. - - File has extension reserved for virtual files. - Bestand heeft een extensie gereserveerd voor virtuele bestanden. + + File names ending with a period are not supported on this file system. + Bestandsnamen die eindigen met een punt worden niet ondersteund door het bestandssysteem. - - size - omvang + + File/Folder is ignored because it's hidden. + Bestand/Map is genegeerd omdat het verborgen is. - - permission - machtiging + + Filename is too long. + De bestandsnaam is te lang. - - file id - bestand id + + Ignored because of the "choose what to sync" blacklist + Genegeerd vanwege de "wat synchroniseren" negeerlijst - - Server reported no %1 - Server rapporteerde nr %1 + + Moved to invalid target, restoring + Verplaatst naar ongeldig doel, herstellen - - Cannot sync due to invalid modification time - + + Not allowed because you don't have permission to add files in that folder + Niet toegestaan omdat je geen machtiging hebt om bestanden in die map toe te voegen - - Could not upload file, because it is open in "%1". - + + Not allowed because you don't have permission to add subfolders to that folder + Niet toegestaan, omdat je geen machtiging hebt om submappen aan die map toe te voegen - - Error while deleting file record %1 from the database - + + Not allowed to remove, restoring + Niet toegestaan om te verwijderen, herstellen - - Conflict when uploading a folder. It's going to get cleared! - Conflict bij het uploaden van een map. Het wordt opgeruimd! + + Not allowed to upload this file because it is read-only on the server, restoring + Niet toegestaan om dit bestand te uploaden, omdat het alleen-lezen is op de server, herstellen - - Conflict when uploading a file. It's going to get removed! - Conflict bij het uploaden van een bestand. Het wordt verwijderd! + + permission + machtiging - - - Moved to invalid target, restoring - Verplaatst naar ongeldig doel, herstellen + + Server replied with an error while reading directory "%1" : %2 + Server gaf een foutmelding bij lezen directory "%1'": %2 - - Ignored because of the "choose what to sync" blacklist - Genegeerd vanwege de "wat synchroniseren" negeerlijst + + Server reported no %1 + Server rapporteerde nr %1 - - - Not allowed because you don't have permission to add subfolders to that folder - Niet toegestaan, omdat je geen machtiging hebt om submappen aan die map toe te voegen + + size + omvang - - Not allowed because you don't have permission to add files in that folder - Niet toegestaan omdat je geen machtiging hebt om bestanden in die map toe te voegen + + Stat failed. + Stat mislukt. - - Not allowed to upload this file because it is read-only on the server, restoring - Niet toegestaan om dit bestand te uploaden, omdat het alleen-lezen is op de server, herstellen + + Symbolic links are not supported in syncing. + Symbolische links worden niet ondersteund bij het synchroniseren. - - Not allowed to remove, restoring - Niet toegestaan om te verwijderen, herstellen + + The file name is a reserved name on this file system. + De bestandsnaam is een gereserveerde naam op dit bestandssysteem. - - Error while reading the database - Fout bij lezen database + + The filename cannot be encoded on your file system. + De bestandsnaam kan op je bestandssysteem niet worden gecodeerd. - - Server replied with an error while reading directory "%1" : %2 - Server gaf een foutmelding bij lezen directory "%1'": %2 + + The filename is blacklisted on the server. + De bestandsnaam staat op de negeerlijst van de server. - - + + OCC::PropagateDirectory - - could not delete file %1 from local DB - + + could not delete file %1 from local DB + - - Error updating metadata due to invalid modification time - Fout bij bijwerken metadata door ongeldige laatste wijziging datum + + Error updating metadata due to invalid modification time + Fout bij bijwerken metadata door ongeldige laatste wijziging datum - - - The folder %1 cannot be made read-only: %2 - + + File is currently in use + Bestand is al in gebruik - - Error updating metadata: %1 - Fout bij bijwerken metadata: %1 + + The folder %1 cannot be made read-only: %2 + - - - File is currently in use - Bestand is al in gebruik - - - + + OCC::PropagateDownloadFile - - could not get file %1 from local DB - - - - - File %1 cannot be downloaded because encryption information is missing. - Bestand %1 kan niet worden gedownload, omdat crypto informatie ontbreekt. - - - - - File has changed since discovery - Het bestand is gewijzigd sinds het is gevonden + + Could not delete file record %1 from local DB + - - - Could not delete file record %1 from local DB - + + could not get file %1 from local DB + - - File %1 can not be downloaded because of a local file name clash! - Bestand %1 kan niet worden gedownload, omdat de naam conflicteert met een lokaal bestand + + File %1 can not be downloaded because of a local file name clash! + Bestand %1 kan niet worden gedownload, omdat de naam conflicteert met een lokaal bestand - - The download would reduce free local disk space below the limit - De download zou de vrije lokale schijfruimte beperken tot onder de limiet + + File %1 cannot be downloaded because encryption information is missing. + Bestand %1 kan niet worden gedownload, omdat crypto informatie ontbreekt. - - Free space on disk is less than %1 - Vrije schijfruimte is minder dan %1 + + File %1 downloaded but it resulted in a local file name clash! + - - File was deleted from server - Bestand was verwijderd van de server + + File %1 has invalid modified time reported by server. Do not save it. + Bestand %1 heeft een ongeldige wijzigingstijd gerapporteerd door de server. Bewaar het niet. - - The file could not be downloaded completely. - Het bestand kon niet volledig worden gedownload. + + File has changed since discovery + Het bestand is gewijzigd sinds het is gevonden - - The downloaded file is empty, but the server said it should have been %1. - Het gedownloade bestand is leeg, maar de server meldde dat het %1 zou moeten zijn. + + File was deleted from server + Bestand was verwijderd van de server - - - File %1 has invalid modified time reported by server. Do not save it. - Bestand %1 heeft een ongeldige wijzigingstijd gerapporteerd door de server. Bewaar het niet. + + Free space on disk is less than %1 + Vrije schijfruimte is minder dan %1 - - File %1 downloaded but it resulted in a local file name clash! - + + The download would reduce free local disk space below the limit + De download zou de vrije lokale schijfruimte beperken tot onder de limiet - - Error updating metadata: %1 - Fout bij bijwerken metadata: %1 + + The downloaded file is empty, but the server said it should have been %1. + Het gedownloade bestand is leeg, maar de server meldde dat het %1 zou moeten zijn. - - The file %1 is currently in use - Bestand %1 is al in gebruik + + The file could not be downloaded completely. + Het bestand kon niet volledig worden gedownload. - - + + OCC::PropagateItemJob - - ; Restoration Failed: %1 - ; Herstellen mislukt: %1 + + ; Restoration Failed: %1 + ; Herstellen mislukt: %1 - - A file or folder was removed from a read only share, but restoring failed: %1 - Er is een bestand of map verwijderd van een alleen-lezen share, maar herstellen is mislukt: %1 + + A file or folder was removed from a read only share, but restoring failed: %1 + Er is een bestand of map verwijderd van een alleen-lezen share, maar herstellen is mislukt: %1 - - + + OCC::PropagateLocalMkdir - - could not delete file %1, error: %2 - kon bestand file %1 niet verwijderen, fout: %2 - - - - Folder %1 cannot be created because of a local file or folder name clash! - - - - - Could not create folder %1 - Kon map %1 niet maken + + Could not create folder %1 + Kon map %1 niet maken - - The folder %1 cannot be made read-only: %2 - + + could not delete file %1, error: %2 + kon bestand file %1 niet verwijderen, fout: %2 - - Error updating metadata: %1 - Fout bij bijwerken metadata: %1 + + Folder %1 cannot be created because of a local file or folder name clash! + - - - The file %1 is currently in use - Bestand %1 is al in gebruik - - - + + OCC::PropagateLocalRemove - - Could not remove %1 because of a local file name clash - Bestand %1 kon niet worden verwijderd, omdat de naam conflicteert met een lokaal bestand + + Could not remove %1 because of a local file name clash + Bestand %1 kon niet worden verwijderd, omdat de naam conflicteert met een lokaal bestand - - - Could not delete file record %1 from local DB - - - - + + OCC::PropagateLocalRename - - Folder %1 cannot be renamed because of a local file or folder name clash! - - - - - File %1 downloaded but it resulted in a local file name clash! - - - - - - - could not get file %1 from local DB - - - - - - Error setting pin state - Fout bij instellen pin status + + Error setting pin state + Fout bij instellen pin status - - - Error updating metadata: %1 - Fout bij bijwerken metadata: %1 + + Failed to propagate directory rename in hierarchy + - - The file %1 is currently in use - Bestand %1 is al in gebruik + + Failed to rename file + Kon bestand niet hernoemen - - - Could not delete file record %1 from local DB - + + Folder %1 cannot be renamed because of a local file or folder name clash! + Map %1 kan niet hernoemd worden vanwege een lokale bestands- of mapnaamclash! - - - Failed to propagate directory rename in hierarchy - - - - - Failed to rename file - Kon bestand niet hernoemen - - - - OCC::PropagateRemoteDelete - - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". - - - - Could not delete file record %1 from local DB - - - - - OCC::PropagateRemoteDeleteEncryptedRootFolder - - - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". - - - + + OCC::PropagateRemoteMkdir - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Foutieve HTTP code ontvangen van de server. Verwacht was 201, maar ontvangen "%1 %2". + + Error writing metadata to the database: %1 + Fout bij schrijven van metadata naar de database: %1 - - Failed to encrypt a folder %1 - + + Failed to encrypt a folder %1 + - - Error writing metadata to the database: %1 - Fout bij schrijven van metadata naar de database: %1 + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Foutieve HTTP code ontvangen van de server. Verwacht was 201, maar ontvangen "%1 %2". - - - The file %1 is currently in use - Bestand %1 is al in gebruik - - - + + OCC::PropagateRemoteMove - - Could not rename %1 to %2, error: %3 - Kon niet %1 hernoemen naar %2, fout: %3 - - - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Foutieve HTTP code ontvangen van de server. Verwacht werd 201, maar ontvangen "%1 %2". - - - - could not get file %1 from local DB - - - - - Could not delete file record %1 from local DB - - - - - - Error updating metadata: %1 - Fout bij bijwerken metadata: %1 - - - - - The file %1 is currently in use - Bestand %1 is al in gebruik - - - - Error setting pin state - Fout bij instellen pin status + + Could not rename %1 to %2, error: %3 + Kon niet %1 hernoemen naar %2, fout: %3 - - - Error writing metadata to the database - Fout bij schrijven van Metadata naar de database - - - + + OCC::PropagateUploadFileCommon - - Failed to upload encrypted file. - Kon versleuteld bestand niet uploaden. - - - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Bestand %1 kan niet worden geüpload omdat er al een ander bestand met dezelfde naam bestaat, al verschillen hoofd/kleine letters - - - - - Upload of %1 exceeds the quota for the folder - Upload van %1 overschrijdt het quotum voor de map - - - - - - File %1 has invalid modification time. Do not upload to the server. - Bestand %1 heeft een ongeldige laatste wijziging datum. Upload niet naar de server. + + Failed to unlock encrypted folder. + Kon versleutelde map niet ontgrendelen. - - File Removed (start upload) %1 - Bestand verwijderd (start upload) %1 + + Failed to upload encrypted file. + Kon versleuteld bestand niet uploaden. - - Local file changed during syncing. It will be resumed. - Lokaal bestand gewijzigd gedurende sync. Wordt opnieuw meegenomen. + + Unable to upload an item with invalid characters + - - Local file changed during sync. - Lokaal bestand gewijzigd tijdens sync. + + Upload of %1 exceeds the quota for the folder + Upload van %1 overschrijdt het quotum voor de map - - - Failed to unlock encrypted folder. - Kon versleutelde map niet ontgrendelen. - - - - Unable to upload an item with invalid characters - - - - - Error updating metadata: %1 - Fout bij bijwerken metadata: %1 - - - - The file %1 is currently in use - Bestand %1 is al in gebruik - - - + + OCC::PropagateUploadFileNG - - The local file was removed during sync. - Het lokale bestand werd verwijderd tijdens sync. - - - - Local file changed during sync. - Lokaal bestand gewijzigd tijdens sync. + + Missing ETag from server + Ontbrekende ETag van de server - - Poll URL missing - Peilingen-URL ontbreekt + + Missing File ID from server + Ontbrekende File ID van de server - - Unexpected return code from server (%1) - Onverwachte reactie van server (%1) + + Poll URL missing + Peilingen-URL ontbreekt - - Missing File ID from server - Ontbrekende File ID van de server + + Unexpected return code from server (%1) + Onverwachte reactie van server (%1) - - - Missing ETag from server - Ontbrekende ETag van de server - - - + + OCC::PropagateUploadFileV1 - - Poll URL missing - URL opvraag ontbreekt - - - - The local file was removed during sync. - Het lokale bestand werd verwijderd tijdens sync. - - - - Local file changed during sync. - Lokaal bestand gewijzigd tijdens sync. + + The server did not acknowledge the last chunk. (No e-tag was present) + De server heeft het laatste deel niet bevestigd (er was geen e-tag aanwezig) - - - The server did not acknowledge the last chunk. (No e-tag was present) - De server heeft het laatste deel niet bevestigd (er was geen e-tag aanwezig) - - - + + OCC::ProxyAuthDialog - - Proxy authentication required - Proxy-authenticatie vereist + + Password: + Wachtwoord: - - Username: - Gebruikersnaam: + + Proxy authentication required + Proxy-authenticatie vereist - - Proxy: - Proxy: + + Proxy: + Proxy: - - The proxy server needs a username and password. - De proxyserver heeft een gebruikersnaam en wachtwoord nodig + + The proxy server needs a username and password. + De proxyserver heeft een gebruikersnaam en wachtwoord nodig - - Password: - Wachtwoord: + + Username: + Gebruikersnaam: - - + + OCC::SelectiveSyncDialog - - Choose What to Sync - Kies wat te synchroniseren + + Choose What to Sync + Kies wat te synchroniseren - - + + OCC::SelectiveSyncWidget - - Loading … - Laden ... + + An error occurred while loading the list of sub folders. + Er trad een fout op bij het laden van de lijst met submappen. - - Deselect remote folders you do not wish to synchronize. - Deselecteer de externe mappen die u niet wenst te synchroniseren. + + Deselect remote folders you do not wish to synchronize. + Deselecteer de externe mappen die u niet wenst te synchroniseren. - - Name - Naam + + Loading … + Laden ... - - Size - Grootte + + Name + Naam - - - No subfolders currently on the server. - Momenteel geen submappen op de server. + + No subfolders currently on the server. + Momenteel geen submappen op de server. - - An error occurred while loading the list of sub folders. - Er trad een fout op bij het laden van de lijst met submappen. + + Size + Grootte - - + + OCC::ServerNotificationHandler - - Reply - Antwoord + + Reply + Antwoord - - Dismiss - Terzijde leggen - - - + + OCC::SettingsDialog - - Settings - Instellingen + + %1 Settings + %1 Instellingen - - %1 Settings - This name refers to the application name e.g Nextcloud - %1 Instellingen + + Account + Account - - New Account - + + General + Algemeen - - General - Algemeen + Network + Netwerk - Network - Netwerk + + New Account + Nieuw account - - - Account - Account - - - - OCC::ShareManager - - - Error - Fout - - - + + OCC::ShareModel - - Secure file drop link - - - - - Share link - + + Could not find local folder for %1 + - - Link share - + Enter a note for the recipient + - - Internal link - + + Internal link + - - Secure file drop - + + Link share + - - Could not find local folder for %1 - + + Secure file drop + - - - OCC::ShareUserLine - Username - Gebruikersnaam + + Secure file drop link + - Can edit - Kan bewerken + + Share link + + + + OCC::ShareUserLine - Note: - Opmerking: + Can edit + Kan bewerken - Password: - Wachtwoord: + Expires: + Verloopt: - Expires: - Verloopt: + Note: + Opmerking: - - + + OCC::ShareeModel - - - Search globally - + + Global search results + - - No results found - + + No results found + - - Global search results - + + Search globally + - - - %1 (%2) - sharee (shareWithAdditionalInfo) - %1 (%2) - - - + + OCC::SocketApi - - Failed to encrypt folder at "%1" - + Activity + Activiteit - - The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - + + Context menu share + Contextmenu delen - - Failed to encrypt folder - + + Copy internal link + Kopieer interne link - - Could not encrypt the following folder: "%1". - -Server replied with error: %2 - - - - - Folder encrypted successfully - + + Copy private link to clipboard + Kopieer privé-link naar klembord - - The following folder was encrypted successfully: "%1" - + + Copy public link + Kopieer openbare link - - Context menu share - Contextmenu delen + + Copy secure file drop link + - - Select new location … - Selecteer nieuwe locatie ... + + Copy secure filedrop link + - - I shared something with you - Ik deelde iets met u + + Could not encrypt the following folder: "%1". + +Server replied with error: %2 + - - - Share options - Deelopties + + Delete local changes + Verwijder lokale aanpassingen - - - Activity - Activiteit + + Edit + Bewerken - - - Copy private link to clipboard - Kopieer privé-link naar klembord + + + Expires in %1 minutes + + + + Verloopt in %1 minuten + - - Send private link by email … - Verstuur privélink per e-mail --- + + Failed to encrypt folder + - - Leave this share - + + Failed to encrypt folder at "%1" + - - Resharing this file is not allowed - Verder delen van dit bestand is niet toegestaan + + Folder encrypted successfully + - - Resharing this folder is not allowed - Verder delen van deze map is niet toegestaan + + I shared something with you + Ik deelde iets met u - - Copy secure file drop link - + + Leave this share + - - - Copy public link - Kopieer openbare link + + Lock file + - - Copy secure filedrop link - + + Locked by %1 + - - Copy internal link - Kopieer interne link + + Move and rename … + Verplaatsen en hernoemen ... - - Encrypt - Versleutelen + + Move and upload … + Verplaatsen en uploaden ... - - Lock file - + + Move, rename and upload … + Verplaatsen, hernoemen en uploaden ... - - Unlock file - + + Open in browser + Openen in browser - - Locked by %1 - - - - - Expires in %1 minutes - remaining time before lock expires - - - - + + Resharing this file is not allowed + Verder delen van dit bestand is niet toegestaan - - Edit - Bewerken + + Resharing this folder is not allowed + Verder delen van deze map is niet toegestaan - - Open in browser - Openen in browser + + Resolve conflict … + Oplossen conflict ... - - Resolve conflict … - Oplossen conflict ... + + Select new location … + Selecteer nieuwe locatie ... - - Move and rename … - Verplaatsen en hernoemen ... + + Send private link by email … + Verstuur privélink per e-mail --- - - Move, rename and upload … - Verplaatsen, hernoemen en uploaden ... + + Share options + Deelopties - - Delete local changes - Verwijder lokale aanpassingen + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. + - - Move and upload … - Verplaatsen en uploaden ... + + The following folder was encrypted successfully: "%1" + - - Delete - Verwijderen + + Unlock file + - - + + OCC::SslButton - - <h3>Certificate Details</h3> - <h3>Certificaat details</h3> - - - - Common Name (CN): - Common Name (CN): + + %1 (self-signed) + %1 (zelf ondertekend) - - Subject Alternative Names: - Alternatieve subject namen: + + <h3>Certificate Details</h3> + <h3>Certificaat details</h3> - - Organization (O): - Organisatie (O): + + <h3>Fingerprints</h3> + <h3>Vingerafdrukken</h3> - - Organizational Unit (OU): - Organisatie unit (OU): + + <h3>Issuer</h3> + <h3>Uitgever</h3> - - State/Province: - Land/Provincie: + + <p><b>Note:</b> This certificate was manually approved</p> + <p><b>Let op:</b> Dit certificaat werd handmatig goedgekeurd</p> - - Country: - Land: + + Certificate information: + Certificaat informatie: - - Serial: - Serienummer: + + Common Name (CN): + Common Name (CN): - - <h3>Issuer</h3> - <h3>Uitgever</h3> + + Country: + Land: - - Issuer: - Uitgever: + + Expires on: + Vervalt op: - - Issued on: - Uitgegeven op: + + Issued on: + Uitgegeven op: - - Expires on: - Vervalt op: + + Issuer: + Uitgever: - - <h3>Fingerprints</h3> - <h3>Vingerafdrukken</h3> + + No support for SSL session tickets/identifiers + Geen ondersteuning voor SSL-sessie tickets/identifiers - - SHA-256: - SHA-256: + + Organization (O): + Organisatie (O): - - SHA-1: - SHA-1: + + Organizational Unit (OU): + Organisatie unit (OU): - - <p><b>Note:</b> This certificate was manually approved</p> - <p><b>Let op:</b> Dit certificaat werd handmatig goedgekeurd</p> + + Serial: + Serienummer: - - %1 (self-signed) - %1 (zelf ondertekend) + + Server version: %1 + Serverversie: %1 - - %1 - %1 + + SHA-1: + SHA-1: - - This connection is encrypted using %1 bit %2. - - Deze verbinding is versleuteld via %1 bit %2. - + + SHA-256: + SHA-256: - - This connection is NOT secure as it is not encrypted. - - Deze verbinding is NIET veilig, omdat deze niet versleuteld is. - + + State/Province: + Land/Provincie: - - Server version: %1 - Serverversie: %1 + + Subject Alternative Names: + Alternatieve subject namen: - - No support for SSL session tickets/identifiers - Geen ondersteuning voor SSL-sessie tickets/identifiers + + The connection is not secure + De verbinding is niet veilig - - Certificate information: - Certificaat informatie: + + This connection is encrypted using %1 bit %2. + Deze verbinding is versleuteld via %1 bit %2. - - The connection is not secure - De verbinding is niet veilig + + This connection is NOT secure as it is not encrypted. + Deze verbinding is NIET veilig, omdat deze niet versleuteld is. - - + + OCC::SslErrorDialog - - Trust this certificate anyway - Vertrouw dit certificaat alsnog + + &lt;not specified&gt; + &lt;niet gespecificeerd&gt; - - Untrusted Certificate - Niet vertrouwd certificaat + + Additional errors: + Additionele fouten: - - Cannot connect securely to <i>%1</i>: - Kan niet beveiligd verbinden met <i>%1</i>: + + Cannot connect securely to <i>%1</i>: + Kan niet beveiligd verbinden met <i>%1</i>: - - Additional errors: - Additionele fouten: + + Country: %1 + Land: %1 - - with Certificate %1 - met certificaat %1 + + Effective Date: %1 + Ingangsdatum: %1 - - - - &lt;not specified&gt; - &lt;niet gespecificeerd&gt; + + Expiration Date: %1 + Vervaldatum: %1 - - - Organization: %1 - Organisatie: %1 + + Fingerprint (SHA-256): <tt>%1</tt> + Fingerprint (SHA-256): <tt>%1</tt> - - - Unit: %1 - Unit: %1 + + Fingerprint (SHA-512): <tt>%1</tt> + Fingerprint (SHA-512): <tt>%1</tt> - - - Country: %1 - Land: %1 + + Fingerprint (SHA1): <tt>%1</tt> + Fingerprint (SHA1): <tt>%1</tt> - - Fingerprint (SHA1): <tt>%1</tt> - Fingerprint (SHA1): <tt>%1</tt> + + Issuer: %1 + Uitgever: %1 - - Fingerprint (SHA-256): <tt>%1</tt> - Fingerprint (SHA-256): <tt>%1</tt> + + Organization: %1 + Organisatie: %1 - - Fingerprint (SHA-512): <tt>%1</tt> - Fingerprint (SHA-512): <tt>%1</tt> + + Trust this certificate anyway + Vertrouw dit certificaat alsnog - - Effective Date: %1 - Ingangsdatum: %1 + + Unit: %1 + Unit: %1 - - Expiration Date: %1 - Vervaldatum: %1 + + Untrusted Certificate + Niet vertrouwd certificaat - - Issuer: %1 - Uitgever: %1 + + with Certificate %1 + met certificaat %1 - - + + OCC::SyncEngine - - %1 (skipped due to earlier error, trying again in %2) - %1 (overgeslagen wegens een eerdere fout, probeer opnieuw over %2) + + %1 (skipped due to earlier error, trying again in %2) + %1 (overgeslagen wegens een eerdere fout, probeer opnieuw over %2) - - Could not update file: %1 - Kon bestand niet bijwerken: %1 + + Cannot open the sync journal + Kan het sync transactielog niet openen - - Could not update virtual file metadata: %1 - Kon virtuele bestand metadata niet bijwerken: %1 + + Could not set file record to local DB: %1 + - - Could not update file metadata: %1 - + + Could not update file metadata: %1 + - - Could not set file record to local DB: %1 - + + Could not update file: %1 + Kon bestand niet bijwerken: %1 - - Unresolved conflict. - Bestandsconflict + + Could not update virtual file metadata: %1 + Kon virtuele bestand metadata niet bijwerken: %1 - - Only %1 are available, need at least %2 to start - Placeholders are postfixed with file sizes using Utility::octetsToString() - Slechts %1 beschikbaar, maar heeft minimaal %2 nodig om te starten + + Disk space is low: Downloads that would reduce free space below %1 were skipped. + Schijfruimte laag: Downloads die de vrije ruimte tot onder %1 zouden reduceren, zijn overgeslagen. - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. - Kon de lokale sync-database niet openen of aanmaken. Zorg ervoor dat je schrijf-toegang hebt in de sync-map + + Only %1 are available, need at least %2 to start + Slechts %1 beschikbaar, maar heeft minimaal %2 nodig om te starten - - Using virtual files with suffix, but suffix is not set - gebruik maken van virtuele bestanden met achtervoegsel, maar achtervoegsel niet ingesteld + + There is insufficient space available on the server for some uploads. + Onvoldoende schijfruimte op de server voor sommige uploads. - - Unable to read the blacklist from the local database - Kan de blacklist niet lezen uit de lokale database + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. + Kon de lokale sync-database niet openen of aanmaken. Zorg ervoor dat je schrijf-toegang hebt in de sync-map - - Unable to read from the sync journal. - Niet mogelijk om te lezen uit het synchronisatie verslag. + + Unable to read from the sync journal. + Niet mogelijk om te lezen uit het synchronisatie verslag. - - Cannot open the sync journal - Kan het sync transactielog niet openen + + Unable to read the blacklist from the local database + Kan de blacklist niet lezen uit de lokale database - - Disk space is low: Downloads that would reduce free space below %1 were skipped. - Schijfruimte laag: Downloads die de vrije ruimte tot onder %1 zouden reduceren, zijn overgeslagen. + + Unresolved conflict. + Bestandsconflict - - There is insufficient space available on the server for some uploads. - Onvoldoende schijfruimte op de server voor sommige uploads. + + Using virtual files with suffix, but suffix is not set + gebruik maken van virtuele bestanden met achtervoegsel, maar achtervoegsel niet ingesteld - - + + OCC::SyncJournalDb - - Failed to connect database. - Kon niet verbinden met database. + + Failed to connect database. + Kon niet verbinden met database. - - + + OCC::SyncStatusSummary - - - Offline - Offline - - - - - - All synced! - Alles gesynchroniseerd! - - - - Some files couldn't be synced! - Sommige bestanden konden niet gesynchroniseerd worden! + + %1 of %2 + %1 van %2 - - See below for errors - Zie hieronder voor fouten + + %1 of %2 · %3 left + %1 van %2 · %3 resterend - - Preparing sync - + + Offline + Offline - - - Syncing - Synchroniseren + + Preparing sync + - - Sync paused - Synchronisatie gepauzeerd + + See below for errors + Zie hieronder voor fouten - - Some files could not be synced! - Sommige bestanden konden niet gesynchroniseerd worden! + + See below for warnings + Zie hieronder voor waarschuwingen - - See below for warnings - Zie hieronder voor waarschuwingen + + Some files could not be synced! + Sommige bestanden konden niet gesynchroniseerd worden! - - %1 of %2 · %3 left - %1 van %2 · %3 resterend + + Some files couldn't be synced! + Sommige bestanden konden niet gesynchroniseerd worden! - - %1 of %2 - %1 van %2 + + Syncing file %1 of %2 + Bestand %1 van %2 synchroniseren - - - Syncing file %1 of %2 - Bestand %1 van %2 synchroniseren - - - + + OCC::Systray - - Download - Download - - - - Add account - Account toevoegen - - - - Open main dialog - Open het hoofdvenster - - - - - Pause sync - Pauzeer sync + + %1: %2 + %1: %2 - - - Resume sync - Vervolg sync + + Add account + Account toevoegen - - Settings - Instellingen + + Download + Download - - Help - Help + + Exit %1 + Verlaat %1 - - Exit %1 - Verlaat %1 + + Open main dialog + Open het hoofdvenster - - Pause sync for all - Pauzeer sync voor iedereen + + Pause sync for all + Pauzeer sync voor iedereen - - Resume sync for all - Vervolg sync voor iedereen + + Resume sync for all + Vervolg sync voor iedereen - - - %1: %2 - %1: %2 - - - + + OCC::Theme - - <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - + + <p>%1 desktop client %2</p> + - <p>%1 Desktop Client</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 Desktop Client</p> + <p>%1 Desktop Client</p> + <p>%1 Desktop Client</p> - - <p><small>Using virtual files plugin: %1</small></p> - <p><small>Gebruik makend van virtuele bestanden plugin: %1</small></p> + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + - - <p>%1 desktop client %2</p> - Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - + + <p><small>Using virtual files plugin: %1</small></p> + <p><small>Gebruik makend van virtuele bestanden plugin: %1</small></p> - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>Versie %1. Voor meer informatie klik <a href='%2'>hier</a>.</p> + + <p>This release was supplied by %1.</p> + - - <p>This release was supplied by %1.</p> - + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>Versie %1. Voor meer informatie klik <a href='%2'>hier</a>.</p> - - + + OCC::UnifiedSearchResultsListModel - - Failed to fetch providers. - Fout bij het laden van providers. + + Failed to fetch providers. + Fout bij het laden van providers. - - Failed to fetch search providers for '%1'. Error: %2 - Fout bij het zoeken van providers voor '%1'. Error: %2 + + Failed to fetch search providers for '%1'. Error: %2 + Fout bij het zoeken van providers voor '%1'. Error: %2 - - Search has failed for '%2'. - Fout bij het zoeken naar '%2'. + + Search has failed for '%1'. Error: %2 + Fout bij het zoeken naar '%1'. Error: %2 - - Search has failed for '%1'. Error: %2 - Fout bij het zoeken naar '%1'. Error: %2 + + Search has failed for '%2'. + Fout bij het zoeken naar '%2'. - - + + OCC::UpdateE2eeFolderMetadataJob - - Failed to update folder metadata. - + + Failed to finalize item. + - - Failed to unlock encrypted folder. - Kon versleutelde map niet ontgrendelen. + + Failed to update folder metadata. + + + + OCC::UpdateE2eeFolderUsersMetadataJob - - Failed to finalize item. - + Could not add or remove a folder user %1, for folder %2 + - - - OCC::UpdateE2eeFolderUsersMetadataJob - - - - - - - - - - Error updating metadata for a folder %1 - + + Could not add or remove user %1 to access folder %2 + Kan gebruiker %1 niet toevoegen of verwijderen voor toegang tot map %2 - - Could not fetch public key for user %1 - + + Could not fetch public key for user %1 + - - Could not find root encrypted folder for folder %1 - + + Could not find root encrypted folder for folder %1 + - - Could not add or remove user %1 to access folder %2 - + + Error updating metadata for a folder %1 + - - Failed to unlock a folder. - + + Failed to unlock a folder. + - - + + OCC::User - - %1 notifications - + + %1 notifications + %1 kennisgevingen - - Retry all uploads - Probeer alle uploads opnieuw + + Resolve conflict + - - - Resolve conflict - + + Retry all uploads + Probeer alle uploads opnieuw - - + + OCC::UserModel - - Confirm Account Removal - Bevestig verwijderen account - - - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Wilt je echt de verbinding met het account <i>%1</i> verbreken?</p><p><b>Let op:</b> Hierdoor verwijder je <b>geen</b> bestanden.</p> + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Wilt je echt de verbinding met het account <i>%1</i> verbreken?</p><p><b>Let op:</b> Hierdoor verwijder je <b>geen</b> bestanden.</p> - - Remove connection - Verwijderen verbinding + + Confirm Account Removal + Bevestig verwijderen account - - Cancel - Annuleren + + Remove connection + Verwijderen verbinding - - + + OCC::UserStatusSelectorModel - - Could not fetch predefined statuses. Make sure you are connected to the server. - Kan vooraf gedefinieerde statussen niet ophalen. Zorg ervoor dat je verbonden bent met de server. + + %1 days + %1 dagen - - Could not fetch status. Make sure you are connected to the server. - + + %1 hours + %1 uren - - Status feature is not supported. You will not be able to set your status. - + + %1 minutes + %1 minuten - - Emojis are not supported. Some status functionality may not work. - + + 1 day + 1 dag - - Could not set status. Make sure you are connected to the server. - + + 1 hour + 1 uur - - Could not clear status message. Make sure you are connected to the server. - + + 1 minute + 1 minuut - - - Don't clear - Niet wissen + + 30 minutes + 30 minuten - - 30 minutes - 30 minuten + + 4 hours + 4 uren - - - 1 hour - 1 uur + + Could not clear status message. Make sure you are connected to the server. + - - 4 hours - 4 uren + + Could not fetch predefined statuses. Make sure you are connected to the server. + Kan vooraf gedefinieerde statussen niet ophalen. Zorg ervoor dat je verbonden bent met de server. - - - Today - Vandaag + + Could not fetch status. Make sure you are connected to the server. + - - - This week - Deze week + + Could not set status. Make sure you are connected to the server. + - - Less than a minute - Minder dan een minuut + + Don't clear + Niet wissen - - 1 minute - 1 minuut + + Emojis are not supported. Some status functionality may not work. + - - %1 minutes - %1 minuten + + Less than a minute + Minder dan een minuut - - %1 hours - %1 uren + + Status feature is not supported. You will not be able to set your status. + - - 1 day - 1 dag + + This week + Deze week - - %1 days - %1 dagen + + Today + Vandaag - - + + OCC::ValidateChecksumHeader - - The checksum header is malformed. - De header van het controlegetal is misvormd. + + The checksum header contained an unknown checksum type "%1" + Het header controlegetal bevat een onbekend controlegetal type "%1" - - The checksum header contained an unknown checksum type "%1" - Het header controlegetal bevat een onbekend controlegetal type "%1" + + The checksum header is malformed. + De header van het controlegetal is misvormd. - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Het gedownloade bestand komt niet overeen met het controlegetal. Het wordt opnieuw verwerkt. "%1" != "%2" + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + Het gedownloade bestand komt niet overeen met het controlegetal. Het wordt opnieuw verwerkt. "%1" != "%2" - - + + OCC::Vfs - - The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - De Virtuele bestandssysteemfunctie vereist een NTFS bestandssysteem, %1 gebruikt %2 + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 + De Virtuele bestandssysteemfunctie vereist een NTFS bestandssysteem, %1 gebruikt %2 - - + + OCC::VfsDownloadErrorDialog - - Download error - - - - - Error downloading - + + %1 could not be downloaded. + - - could not be downloaded - + + > More details + - - > More details - + + could not be downloaded + - - More details - + + Download error + - - Error downloading %1 - + + Error downloading + - - %1 could not be downloaded. - + + Error downloading %1 + - - - OCC::VfsSuffix - - - Error updating metadata due to invalid modification time - Fout bij bijwerken metadata door ongeldige laatste wijziging datum + + More details + - - - OCC::VfsXAttr - - - - Error updating metadata due to invalid modification time - Fout bij bijwerken metadata door ongeldige laatste wijziging datum - - - + + OCC::WebEnginePage - - Invalid certificate detected - Ongeldig certificaat gedetecteerd + + Invalid certificate detected + Ongeldig certificaat gedetecteerd - - The host "%1" provided an invalid certificate. Continue? - De server "%1" heeft een ongeldig certificaat . Wilt u doorgaan? + + The host "%1" provided an invalid certificate. Continue? + De server "%1" heeft een ongeldig certificaat . Wilt u doorgaan? - - + + OCC::WebFlowCredentials - - <b>You have been logged out of your account %1 at %2. Please login again.</b> - - - - - OCC::WelcomePage - - - Form - Formulier - - - - Log in - Meld u aan - - - - Sign up with provider - - - - - Keep your data secure and under your control - Hou je gegevens veilig en in eigen beheer - - - Secure collaboration & file exchange - Veilige samenwerking & bestandsuitwisseling + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + <b>U bent afgemeld bij uw account %1 op %2. Log opnieuw in.</b> - Easy-to-use web mail, calendaring & contacts - Eenvoudig te gebruiken webmail, agenda & contacten + Please login with the account: %1 + - Screensharing, online meetings & web conferences - Schermdelen, online afspraken & web conferenties + You have been logged out of your account %1 at %2. Please login again. + + + + OCC::WelcomePage - - Host your own server - Host je eigen server - - - - OCC::ownCloudGui - - - Unsupported Server Version - Niet-ondersteunde server versie + Easy-to-use web mail, calendaring & contacts + Eenvoudig te gebruiken webmail, agenda & contacten - - The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - De server van account %1 gebruikt een niet ondersteunde versie %2. Het gebruik van deze clientsoftware met niet-ondersteunde server versies is niet getest en mogelijk gevaarlijk. Verdergaan is op eigen risico. + + Form + Formulier - - Disconnected - Niet verbonden + + Host your own server + Host je eigen server - - Disconnected from some accounts - Niet verbonden met sommige accounts + + Keep your data secure and under your control + Hou je gegevens veilig en in eigen beheer - - Disconnected from %1 - Losgekoppeld van %1 + + Log in + Meld u aan - - Disconnected from accounts: - Losgekoppeld van account: + Screensharing, online meetings & web conferences + Schermdelen, online afspraken & web conferenties - - Account %1: %2 - Account %1: %2 + Secure collaboration & file exchange + Veilige samenwerking & bestandsuitwisseling - - Please sign in - Log alstublieft in + + Sign up with provider + + + + OCC::ownCloudGui - - Signed out - Afgemeld + + Account %1: %2 + Account %1: %2 - - Account synchronization is disabled - Account synchronisatie is uitgeschakeld + + Account synchronization is disabled + Account synchronisatie is uitgeschakeld - - - Synchronization is paused - Synchronisatie is gepauzeerd + + Disconnected from %1 + Losgekoppeld van %1 - - Folder %1: %2 - Map %1: %2 + + Disconnected from accounts: + Losgekoppeld van account: - - Unresolved conflicts - Niet opgeloste conflicten + + Disconnected from some accounts + Niet verbonden met sommige accounts - - Up to date - Bijgewerkt + + Error during synchronization + Fout bij synchronisatie - - Error during synchronization - Fout bij synchronisatie + + Folder %1: %2 + Map %1: %2 - - There are no sync folders configured. - Er zijn geen synchronisatie-mappen geconfigureerd. + + No sync folders configured + Geen syncmappen geconfigureerd - - No sync folders configured - Geen syncmappen geconfigureerd + + Please sign in + Log alstublieft in - - Checking for changes in remote "%1" - Controleren op wijzigingen in externe "%1" + + Synchronization is paused + Synchronisatie is gepauzeerd - - Checking for changes in local "%1" - Controleren op wijzigingen in lokale "%1" + + Syncing %1 of %2 (%3 left) + Sync %1 van %2 (%3 over) - - Syncing %1 of %2 (%3 left) - Sync %1 van %2 (%3 over) + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + De server van account %1 gebruikt een niet ondersteunde versie %2. Het gebruik van deze clientsoftware met niet-ondersteunde server versies is niet getest en mogelijk gevaarlijk. Verdergaan is op eigen risico. - - Syncing %1 of %2 - Synchroniseren %1 van %2 + + There are no sync folders configured. + Er zijn geen synchronisatie-mappen geconfigureerd. - - Syncing %1 (%2 left) - Sync %1 (%2 over) + + Unresolved conflicts + Niet opgeloste conflicten - - Syncing %1 - Synchroniseren %1 + + Unsupported Server Version + Niet-ondersteunde server versie - - %1 (%2, %3) - %1 (%2, %3) + + Up to date + Bijgewerkt - - + + OCC::sesSnackBar - - Error - Fout + + Success + Succes - - - Warning - Waarschuwing - - - - Success - - - - + + OwncloudAdvancedSetupPage - - &Local Folder - &Lokale map - - - - Username - Gebruikersnaam - - - - Local Folder - Lokale map + + &Local Folder + &Lokale map - - Choose different folder - + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Als dit selectievakje is ingeschakeld, + wordt de bestaande inhoud in de lokale map gewist om een schone synchronisatie vanaf de server te starten. + vanaf de server.</p><p>Vink dit vakje niet aan als de lokale inhoud + moet worden geüpload naar de servermap.</p></body></html> - - Server address - Serveradres + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Als deze checkbox is aangevinkt zullen bestaande bestanden in de lokale map worden gewist om een schone sync vanaf de server te starten.</p><p>Vink dit niet aan als de lokale bestanden naar de map op de server zouden moeten worden geüploadet.</p></body></html> - - Sync Logo - Sync Logo + + Ask before syncing external storages + Vraag bevestiging voor synchronisatie externe opslag - - Synchronize everything from server - Synchroniseer alles vanaf de server + + Ask before syncing folders larger than + Vraag bevestiging voor synchronisatie van mappen groter dan - - Ask before syncing folders larger than - Vraag bevestiging voor synchronisatie van mappen groter dan + + Choose different folder + - - - MB - - Trailing part of "Ask confirmation before syncing folder larger than" - + + Erase local folder and start a clean sync + Wis de map op je computer en start een schone sync - - <html><head/><body><p>If this box is checked, - existing content in the local folder will be erased to start a clean sync - from the server.</p><p>Do not check this if the local content - should be uploaded to the servers folder.</p></body></html> - - + + Keep local data + Bewaar de lokale gegevens - MB - Trailing part of "Ask confirmation before syncing folder larger than" - MB + + Local Folder + Lokale map - - Ask before syncing external storages - Vraag bevestiging voor synchronisatie externe opslag + + Server address + Serveradres - - Choose what to sync - Selectieve synchronisatie + + Sync Logo + Sync Logo - - Keep local data - Bewaar de lokale gegevens + + Synchronize everything from server + Synchroniseer alles vanaf de server - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Als deze checkbox is aangevinkt zullen bestaande bestanden in de lokale map worden gewist om een schone sync vanaf de server te starten.</p><p>Vink dit niet aan als de lokale bestanden naar de map op de server zouden moeten worden geüploadet.</p></body></html> + Username + Gebruikersnaam - - - Erase local folder and start a clean sync - Wis de map op je computer en start een schone sync - - - + + OwncloudHttpCredsPage - - &Username - &Gebruikersnaam + + &Password + &Wachtwoord - - &Password - &Wachtwoord + + &Username + &Gebruikersnaam - - + + OwncloudOAuthCredsPage - Please switch to your browser to proceed. - Schakel om naar je browser om door te gaan. - - - An error occurred while connecting. Please try again. - Er trad een verbindingsfout op. Probeer nogmaals. + Please switch to your browser to proceed. + Schakel om naar je browser om door te gaan. - Re-open Browser - Heropen browser + Re-open Browser + Heropen browser - - Copy link - Link kopiëren - - - + + OwncloudSetupPage - - - TextLabel - TextLabel + + TextLabel + TextLabel - Logo - Logo + + This is the link to your %1 web interface when you open it in the browser. + De link naar je %1 web interface wanneer je die opent in de browser. - - - Server address - Serveradres - - - - This is the link to your %1 web interface when you open it in the browser. - De link naar je %1 web interface wanneer je die opent in de browser. - - - + + QObject - - - New folder - Nieuwe map + + + %nd + + + + %nd + - - - You renamed %1 - Je hernoemde %1 + + + %nh + + + + %nh + - - - You deleted %1 - Je verwijderde %1 + + + %nm + + + + %nm + - - You created %1 - Je creëerde %1 + + 1m + - - You changed %1 - Je wijzigde %1 + + Could not create debug archive in selected location! + Kon geen debug-archief aanmaken op geselecteerde locatie! - - Synced %1 - Gesynchroniseerd %1 - - - - %nd - delay in days after an activity - - - - + + Failed to create debug archive + Debug-archief is niet aangemaakt - - in the future - in de toekomst - - - - %nh - delay in hours after an activity - - - - + + in the future + in de toekomst - - now - nu + + New folder + Nieuwe map - - 1m - one minute after activity date and time - - - - - %nm - delay in minutes after an activity - - - - + + now + nu - - Some time ago - Even geleden + + Paths beginning with '#' character are not supported in VFS mode. + - - %1: %2 - this displays an error string (%2) for a file %1 - %1: %2 + + Some time ago + Even geleden - - Paths beginning with '#' character are not supported in VFS mode. - + + Synced %1 + Gesynchroniseerd %1 - - Failed to create debug archive - + + The directory %1 cannot be part of your sync directory. Please choose another folder. + De map %1 kan geen deel uitmaken van je synchronisatiemap. Kies een andere map. - - Could not create debug archive in selected location! - + + You changed %1 + Je wijzigde %1 - - The directory %1 cannot be part of your sync directory. Please choose another folder. - + + You created %1 + Je creëerde %1 - - Reply - Antwoord + + You deleted %1 + Je verwijderde %1 - - - ResolveConflictsDialog - - Solve sync conflicts - + + You renamed %1 + Je hernoemde %1 + + + ResolveConflictsDialog - - %1 files in conflict - indicate the number of conflicts to resolve - - - - + + %1 files in conflict + + %1 bestand in conflict + %1 bestanden in conflict + %1 bestanden in conflict + - - Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - + + All local versions + - - All local versions - + + All server versions + - - All server versions - + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. + - - Resolve conflicts - + + Resolve conflicts + - - Cancel - Annuleren + + Solve sync conflicts + - - - SesErrorBox - - - Error - Fout - - - + + SesTrayHeader - - Website - + + Open local or group folders + - - Open Nextcloud in browser - + + Open Nextcloud in browser + HiDrive Next in browser openen - - Open local or group folders - + + Website + Website - - + + ShareDelegate - - Create a new share link - + + Copied! + - - Copy share link location - + + Copy share link location + - - Copied! - + + Create a new share link + + + + ShareDetailsPage - - Share options - Deelopties + + Add another link + - - - ShareDetailsPage - - An error occurred setting the share password. - + + Allow resharing + - - Dismiss - + + Allow upload and editing + - - - Allow upload and editing - + + An error occurred setting the share password. + - - Custom Permissions - + + Copy share link + - - View only - + + Custom Permissions + Aangepaste machtigingen - - File drop (upload only) - + Edit share + - - Allow resharing - + + Enter the note to recipient + Voer de notitie aan de ontvanger in - - Hide download - + + File drop (upload only) + - - Password protect - Beveiligen met wachtwoord + + Hide download + - - Set expiration date - + + Note to recipient + - - Note to recipient - + + Password protect + Beveiligen met wachtwoord - - Enter the note to recipient - + + Set expiration date + - - Unshare - + Share label + - - Add another link - + + Share link copied! + - - Share link copied! - + + Unshare + - - Copy share link - + + View only + - - + + ShareView - - Password required for new share - + + Password required for new share + - - Share password - + + Share password + - - Sharing is disabled - + + Sharing is disabled + - - This item cannot be shared. - + + Sharing is disabled. + - - Sharing is disabled. - + + This item cannot be shared. + - - + + ShareeSearchField - - Search for users or groups… - - - - - Sharing is not available for this folder - + + Search for users or groups… + - - - SyncJournalDb - Failed to connect database. - Kon niet verbinden met database. + + Sharing is not available for this folder + - - + + SyncStatus - - Sync now - - - - - Resolve conflicts - + + Sync now + - - + + TalkReplyTextField - - Reply to … - Antwoord aan ... + + Reply to … + Antwoord aan ... - - Send reply to chat message - + + Send reply to chat message + - - + + TestSetUserStatusDialog - - - 1 day - 1 dag - - - - - - - - Don't clear - Niet wissen - - - - - - - - 1 hour - 1 uur - - - - - - - 30 minutes - 30 minuten - - - - - - 4 hours - 4 uren - - - - - - Today - Vandaag + + 7 days + 7 dagen - - - - - This week - Deze week - - - - Less than a minute - Minder dan een minuut - - - - 1 minute - 1 minuut - - - - 7 days - - - - - Could not fetch predefined statuses. Make sure you are connected to the server. - Kan vooraf gedefinieerde statussen niet ophalen. Zorg ervoor dat je verbonden bent met de server. - - - - Could not fetch status. Make sure you are connected to the server. - - - - - Status feature is not supported. You will not be able to set your status. - - - - - Could not set status. Make sure you are connected to the server. - - - - - Emojis are not supported. Some status functionality may not work. - - - - - Could not clear status message. Make sure you are connected to the server. - - - - + + TrayFoldersMenuButton - - Files - - - - - Open local or group folders - - - - - Open local folder - + + Files + Bestanden - - Connected - Verbonden + Group folder button + - - Disconnected - Niet verbonden + + Open %1 in file explorer + - - Open local folder "%1" - + + Open group folder "%1" + - - Open group folder "%1" - + + Open local folder + - - Open %1 in file explorer - + + Open local folder "%1" + - - User group and local folders menu - + + User group and local folders menu + - - + + TrayWindowAccountMenu - - Current account - Huidige account - - - - Resume sync for all - - - - - Pause sync for all - - - - - Add account - Account toevoegen - - - - Settings - Instellingen + + Account switcher and settings menu + Accountswitcher en instellingenmenu - - Exit - Afsluiten + + Current account + Huidige account - - Current account avatar - + + Current account avatar + - - Current account status is online - + + Current account status is do not disturb + - - Current account status is do not disturb - + + Current account status is online + - - Account switcher and settings menu - Accountswitcher en instellingenmenu + + Exit + Afsluiten - - + + TrayWindowHeaderBar - - Website - + + More apps + Meer apps - - Open Nextcloud in browser - + + Open %1 in browser + Open %1 in browser - - Open local or group folders - + + Open Nextcloud Talk in browser + Open Nextcloud Talk in browser - - - Open Nextcloud Talk in browser - Open Nextcloud Talk in browser - - - - More apps - Meer apps - - - - Open %1 in browser - Open %1 in browser - - - + + UnifiedSearchInputContainer - - Search files, messages, events … - Zoek in bestanden, berichten, afspraak ... + + Search files, messages, events … + Zoek in bestanden, berichten, afspraak ... - - + + UnifiedSearchResultFetchMoreTrigger - - Load more results - Laad meer resultaten + + Load more results + Laad meer resultaten - - + + UnifiedSearchResultItemSkeleton - - Search result skeleton. - Zoekresultaat skelet. - - - - UnifiedSearchResultListItem - - - Load more results - Laad meer resultaten + + Search result skeleton. + Zoekresultaat skelet. - - + + UnifiedSearchResultNothingFound - - No results for - + + No results for + - - + + UnifiedSearchResultSectionItem - - Search results section %1 - + + Search results section %1 + - - + + UserLine - - Switch to account - Omschakelen naar account - - - - Account actions - Accountacties + + Account actions + Accountacties - - Set status - Status instellen + + Remove account + Verwijder account - - - Log out - Afmelden + + Set status + Status instellen - - - Log in - Meld u aan + + Switch to account + Omschakelen naar account - - - Remove account - Verwijder account - - - + + UserStatusSelector - - Online status - Online status - - - - Online - Online + + Appear offline + - - Away - Afwezig + + Away + Afwezig - - Do not disturb - Niet storen + + Clear status message + Statusbericht wissen - - Mute all notifications - + + Clear status message after + Statusbericht wissen na - - Invisible - Onzichtbaar + + Do not disturb + Niet storen - - Appear offline - + + Invisible + Onzichtbaar - - Status message - Statusbericht + + Mute all notifications + - - What is your status? - Wat is je status? + + Online + Online - - Clear status message after - Statusbericht wissen na + + Online status + Online status - - Cancel - Annuleren + + Set status message + Statusbericht instellen - - Clear status message - Statusbericht wissen + + Status message + Statusbericht - - Set status message - Statusbericht instellen + + What is your status? + Wat is je status? - - + + Utility - - %L1 B - %L1 B + + %L1 B + %L1 B - - %L1 TB - + + %L1 GB + %L1 GB - - %L1 GB - %L1 GB + + %L1 KB + %L1 KB - - %L1 MB - %L1 MB + + %L1 MB + %L1 MB - - %L1 KB - %L1 KB + + %L1 TB + - - %n year(s) - - %n jaar - %n jaar - + + %n day(s) + + + + + - - %n month(s) - - %n maand - %n maanden - + + %n hour(s) + + + + + - - %n day(s) - - %n dag - %n dagen - + + %n minute(s) + + + + + - - %n hour(s) - - %n uur - %n uur - + + %n month(s) + + + + + - - %n minute(s) - - %n minuut - %n minuten - + + %n second(s) + + + + + - - %n second(s) - - %n seconde - %n seconde(n) - - - - - %1 %2 - %1 %2 - - - - ValidateChecksumHeader - - The checksum header is malformed. - De header van het controlegetal is misvormd. - - - The checksum header contained an unknown checksum type "%1" - Het header controlegetal bevat een onbekend controlegetal type "%1" - - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Het gedownloade bestand komt niet overeen met het controlegetal. Het wordt opnieuw verwerkt. "%1" != "%2" - - - + + %n year(s) + + + + + + + + Window - - Nextcloud desktop main dialog - Nextcloud desktop hoofddialoog - - - Current account - Huidige account - - - Resume sync for all - Hervat de synchronisatie voor iedereen - - - Pause sync for all - Synchronisatie voor iedereen onderbreken - - - Add account - Account toevoegen + Add new account + Nieuw account toevoegen - Add new account - Nieuw account toevoegen + + New activities + - Settings - Instellingen + + Nextcloud desktop main dialog + Nextcloud desktop hoofddialoog - Exit - Afsluiten + + Unified search results list + Samengevoegde zoekresultaten lijst - - Account switcher and settings menu - Accountswitcher en instellingenmenu - - - Open Nextcloud Talk in browser - Open Nextcloud Talk in browser - - - More apps - Meer apps - - - Open %1 in browser - Open %1 in browser - - - - Unified search results list - Samengevoegde zoekresultaten lijst - - - - New activities - - - - + + main.cpp - - System Tray not available - Systeemvak niet beschikbaar + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. + %1 heeft een werkend systeemvak nodig. Als je XFCE draait volg je <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">deze instructies</a>. Installeer anders een systeemvak applicatie zoals "trayer" en probeer het opnieuw. - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - %1 heeft een werkend systeemvak nodig. Als je XFCE draait volg je <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">deze instructies</a>. Installeer anders een systeemvak applicatie zoals "trayer" en probeer het opnieuw. + + System Tray not available + Systeemvak niet beschikbaar - - - nextcloudTheme::about() - - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Gebouwd vanaf Git revisie <a href="%1">%2</a> op %3, %4 gebruik makend van Qt %5, %6</small></p> - - - + + nextcloudTheme::aboutInfo() - - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Gebouwd vanaf Git revisie <a href="%1">%2</a> op %3, %4 gebruik makend van Qt %5, %6</small></p> + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Gebouwd vanaf Git revisie <a href="%1">%2</a> op %3, %4 gebruik makend van Qt %5, %6</small></p> - - + + progress - - Virtual file created - Virtueel bestand gecreëerd - - - - Replaced by virtual file - Vervangen door virtueel bestand - - - - Downloaded - Gedownload - - - - Uploaded - Geüpload + + Deleted + Verwijderd - - Server version downloaded, copied changed local file into conflict file - Serverversie gedownload, gewijzigde lokale bestand gekopieerd in conflictbestand + + Downloaded + Gedownload - - Server version downloaded, copied changed local file into case conflict conflict file - + + downloading + downloaden - - Deleted - Verwijderd + + error + fout - - Moved to %1 - Verplaatst naar %1 + + Filesystem access error + Toegangsfout van het bestandssysteem - - Ignored - Genegeerd + + Ignored + Genegeerd - - Filesystem access error - Toegangsfout van het bestandssysteem + + Moved to %1 + Verplaatst naar %1 - - Error - Fout + + moving + verplaatsen - - Updated local metadata - Lokale metadata geüploaded + + Replaced by virtual file + Vervangen door virtueel bestand - - Updated local virtual files metadata - + + Server version downloaded, copied changed local file into case conflict conflict file + - - - Unknown - Onbekend + + Server version downloaded, copied changed local file into conflict file + Serverversie gedownload, gewijzigde lokale bestand gekopieerd in conflictbestand - - downloading - downloaden + + Unknown + Onbekend - - uploading - uploaden + + Updated local metadata + Lokale metadata geüploaded - - deleting - verwijderen + + Updated local virtual files metadata + Metagegevens van lokale virtuele bestanden bijgewerkt - - moving - verplaatsen + + updating local metadata + Bijwerken lokale metadata - - ignoring - negerend + + updating local virtual files metadata + Metagegevens van lokale virtuele bestanden bijwerken - - error - fout + + Uploaded + Geüpload - - updating local metadata - Bijwerken lokale metadata + + uploading + uploaden - - updating local virtual files metadata - + + Virtual file created + Virtueel bestand gecreëerd - - + + theme - - Status undefined - Ongedefinieerde status + + Aborting … + Afbreken … - - Waiting to start sync - In afwachting van synchronisatie + + Preparing to sync + Voorbereiden synchronisatie - - Sync is running - Bezig met synchroniseren + + Setup Error + Installatiefout - - Sync Success - Synchronisatie geslaagd + + Status undefined + Ongedefinieerde status - - Sync Success, some files were ignored. - Synchronisatie geslaagd, sommige bestanden werden genegeerd. + + Sync Error + Synchronisatiefout - - Sync Error - Synchronisatiefout + + Sync is paused + Synchronisatie is gepauzeerd - - Setup Error - Installatiefout + + Sync is running + Bezig met synchroniseren - - Preparing to sync - Voorbereiden synchronisatie + + Sync Success + Synchronisatie geslaagd - - Aborting … - Afbreken … + + Sync Success, some files were ignored. + Synchronisatie geslaagd, sommige bestanden werden genegeerd. - - Sync is paused - Synchronisatie is gepauzeerd + + Waiting to start sync + In afwachting van synchronisatie - - + + utility - - Could not open browser - Kon browser niet openen + + Always available locally + Altijd lokaal beschikbaar - - There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - Er trad een fout op bij het starten van de browser om naar URL %1 te gaan. Misschien is er geen standaardbrowser geconfigureerd? + + Available online only + Alleen online beschikbaar - - Could not open email client - Kon e-mailclient niet openen + + Could not open browser + Kon browser niet openen - - There was an error when launching the email client to create a new message. Maybe no default email client is configured? - Er trad een fout op bij het starten van de e-mailclient om een nieuw bericht te maken. Misschien is er geen e-mailclient gedefinieerd? + + Could not open email client + Kon e-mailclient niet openen - - Always available locally - Altijd lokaal beschikbaar + + Currently available locally + Momenteel lokaal beschikbaar - - Currently available locally - Momenteel lokaal beschikbaar + + Free up local space + Lokale ruimte vrijmaken - - Some available online only - Sommige alleen online beschikbaar + + Make always available locally + Maak altijd lokaal beschikbaar - - Available online only - Alleen online beschikbaar + + Some available online only + Sommige alleen online beschikbaar - - Make always available locally - Maak altijd lokaal beschikbaar + + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? + Er trad een fout op bij het starten van de browser om naar URL %1 te gaan. Misschien is er geen standaardbrowser geconfigureerd? - - Free up local space - Lokale ruimte vrijmaken + + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + Er trad een fout op bij het starten van de e-mailclient om een nieuw bericht te maken. Misschien is er geen e-mailclient gedefinieerd? - + From f2eeba2ad0800552006894a8952df39d403efabf Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Thu, 19 Dec 2024 09:49:10 +0100 Subject: [PATCH 049/104] SES-211 update translations --- translations/client_de.ts | 8737 ++++++++++++++++++++---------------- translations/client_en.ts | 8645 ++++++++++++++++++++---------------- translations/client_es.ts | 8711 ++++++++++++++++++++---------------- translations/client_fr.ts | 8769 +++++++++++++++++++++---------------- translations/client_nl.ts | 8687 ++++++++++++++++++++---------------- 5 files changed, 24682 insertions(+), 18867 deletions(-) diff --git a/translations/client_de.ts b/translations/client_de.ts index 251e6fb6041af..0e164c5769d06 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -1,6276 +1,7515 @@ - - - + + + + + - &Automatically check for Updates - &Automatisch auf Aktualisierungen prüfen + &Automatically check for Updates + &Automatisch auf Aktualisierungen prüfen - &Launch on System Startup - Beim &Systemstart starten + &Launch on System Startup + Beim &Systemstart starten - Copy link - Link kopieren + Copy link + Link kopieren - No Proxy - Kein Proxy + No Proxy + Kein Proxy - Remove All Files? - Alle Dateien löschen? + Remove All Files? + Alle Dateien löschen? - Show Call Notifications - Anrufbenachrichtigungen anzeigen + Show Call Notifications + Anrufbenachrichtigungen anzeigen - Show Server &Notifications - Server-&Benachrichtigungen anzeigen + Show Server &Notifications + Server-&Benachrichtigungen anzeigen - Show sync folders in &Explorer's navigation pane - Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen + Show sync folders in &Explorer's navigation pane + Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen - Use &Monochrome Icons - &Monochrome Symbole verwenden + Use &Monochrome Icons + &Monochrome Symbole verwenden - - + + ActivityItem - - In %1 - In %1 + + In %1 + In %1 - - Open %1 locally - %1 lokal öffnen + + Open %1 locally + %1 lokal öffnen - - + + ActivityItemContent - - Dismiss - Ablehnen + + Dismiss + Ablehnen - - Open file details - Dateidetails öffnen + + Open file details + Dateidetails öffnen - - + + ActivityList - - Activity list - Aktivitätenliste + + Activity list + Aktivitätenliste - - No activities yet - Noch keine Aktivitäten vorhanden + + No activities yet + Noch keine Aktivitäten vorhanden - - + + BasicComboBox - - Clear status message menu - Statusmeldungs-Menü löschen + + Clear status message menu + Statusmeldungs-Menü löschen - - + + CallNotificationDialog - - Answer Talk call notification - Benachrichtigung zu Talk-Anruf beantworten + + Answer Talk call notification + Benachrichtigung zu Talk-Anruf beantworten - - Decline - Ablehnen + + Decline + Ablehnen - - Decline Talk call notification - Benachrichtigung zu Talk-Anruf ablehnen + + Decline Talk call notification + Benachrichtigung zu Talk-Anruf ablehnen - - Talk notification caller avatar - Avatar zu Benachrichtigung über Talk-Anrufer + + Talk notification caller avatar + Avatar zu Benachrichtigung über Talk-Anrufer - - + + CloudProviderWrapper - - %1 (%2, %3) - %1 (%2, %3) + + %1 (%2, %3) + %1 (%2, %3) - - Checking for changes in "%1" - Nach Änderungen suchen in "%1" + + Checking for changes in "%1" + Nach Änderungen suchen in "%1" - - Help - Hilfe + + Help + Hilfe - - Log out - Abmelden + + Log out + Abmelden - - No recently changed files - Keine kürzlich geänderte Dateien + + + No recently changed files + Keine kürzlich geänderte Dateien - - Open website - Webseite öffnen + + Open website + Webseite öffnen - - Pause synchronization - Synchronisierung pausieren + + Pause synchronization + Synchronisierung pausieren - - Quit sync client - Sync-Client beenden + + Quit sync client + Sync-Client beenden - - Recently changed - Zuletzt geändert + + Recently changed + Zuletzt geändert - - Settings - Einstellungen + + Settings + Einstellungen - - Sync paused - Synchronisierung pausiert + + Sync paused + Synchronisierung pausiert - - Syncing - Synchronisiere + + Syncing + Synchronisiere - - Syncing %1 - Synchronisiere %1 + + Syncing %1 + Synchronisiere %1 - - Syncing %1 (%2 left) - Synchronisiere %1 (%2 übrig) + + Syncing %1 (%2 left) + Synchronisiere %1 (%2 übrig) - - Syncing %1 of %2 - Synchronisiere %1 von %2 + + Syncing %1 of %2 + Synchronisiere %1 von %2 - - Syncing %1 of %2 (%3 left) - Synchronisiere %1 von %2 (%3 übrig) + + Syncing %1 of %2 (%3 left) + Synchronisiere %1 von %2 (%3 übrig) - - + + ConflictDelegate - - Local version - Lokale Version + + Local version + Lokale Version - - Server version - Serverversion + + Server version + Serverversion - - + + CrashReporter - - Close - Schliessen + + + + We cannot gather useful debug information on your system. + - - + + + + + + + Close + Schliessen + + + + Ready to send debug information (<a href="%1">view backtrace</a>). + + + + + Gathering debug information... + + + + + Uploaded %L1 of %L2 KB. + + + + + Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. + + + + + Failed to send crash info. + + + + + Tomahawk Crash Reporter + + + + + <html><head/><body><p><br/></p></body></html> + + + + + Abort + + + + + Send this report + + + + + Don't send + + + + + You can disable sending crash reports in the configuration dialog. + + + + EditFileLocallyLoadingDialog - - Opening file for local editing - Datei wird für die lokale Bearbeitung geöffnet + + Opening file for local editing + Datei wird für die lokale Bearbeitung geöffnet - - + + EmojiPicker - - No recent emojis - Keine aktuellen Emojis + + No recent emojis + Keine aktuellen Emojis - - + + ErrorBox - - Error - Fehler + + Error + Fehler - - + + FakeHangingReply - - Operation canceled - Vorgang abgebrochen + + Operation canceled + Vorgang abgebrochen - - + + FileDetailsPage - Sharing - Teilen + Sharing + Teilen - - + + + Dismiss + Ablehnen + + + FileDetailsWindow - - File details of %1 · %2 - Dateidetails von %1 · %2 + + File details of %1 · %2 + Dateidetails von %1 · %2 - - + + FileProviderEvictionDialog - - Evict materialised files - Materialisierte Dateien löschen + + Evict materialised files + Materialisierte Dateien löschen - - Materialised items - Materialisierte Elemente + + Materialised items + Materialisierte Elemente - - Reload - Neu laden + + Reload + Neu laden - - + + FileProviderFastEnumerationSettings - - Enable fast sync - Schnelle Synchronisierung altivieren + + Enable fast sync + Schnelle Synchronisierung altivieren + + + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + - - Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - Bei der schnellen Synchronisierung werden nur Änderungen an Dateien und Ordnern innerhalb der Ordner synchronisiert, die bereits untersucht wurden. Dies kann die Reaktionsfähigkeit bei der Ersteinrichtung virtueller Dateien erheblich erhöhen. Allerdings führt dies zu redundanten Downloads von Dateien, die in einen noch nicht erfassten Ordner verschoben wurden. + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + Bei der schnellen Synchronisierung werden nur Änderungen an Dateien und Ordnern innerhalb der Ordner synchronisiert, die bereits untersucht wurden. Dies kann die Reaktionsfähigkeit bei der Ersteinrichtung virtueller Dateien erheblich erhöhen. Allerdings führt dies zu redundanten Downloads von Dateien, die in einen noch nicht erfassten Ordner verschoben wurden. - - + + FileProviderFileDelegate - - Delete - Löschen + + Delete + Löschen - - + + FileProviderSettings - - Advanced - Erweitert + + Advanced + Erweitert - - Create debug archive - Debug-Archiv erstellen + + Create debug archive + Debug-Archiv erstellen - - Enable virtual files - Virtuelle Dateien aktivieren + + Enable virtual files + Virtuelle Dateien aktivieren - - General settings - Allgemeine Einstellungen + + General settings + Allgemeine Einstellungen - - Signal file provider domain - Domain des Signaldateianbieters + + Signal file provider domain + Domain des Signaldateianbieters - - Virtual files settings - Einstellungen für virtuelle Dateien + + Virtual files settings + Einstellungen für virtuelle Dateien - - + + FileProviderStorageInfo - - %1 GB of %2 GB remote files synced - %1 GB von %2 GB der entfernten Dateien synchronisiert + + %1 GB of %2 GB remote files synced + %1 GB von %2 GB der entfernten Dateien synchronisiert - - Evict local copies... - Lokale Kopien entfernen... + + Evict local copies... + Lokale Kopien entfernen... - - Local storage use - Lokaler Speicher verwenden + + Local storage use + Lokaler Speicher verwenden - - + + FileProviderSyncStatus - - All synced! - Alles synchronisiert! + + All synced! + Alles synchronisiert! + + + + Syncing + Synchronisiere - - + + FileSystem - Could not make directories in trash - Verzeichnisse konnten im Papierkorb nicht erstellt werden + Could not make directories in trash + Verzeichnisse konnten im Papierkorb nicht erstellt werden - Could not move "%1" to "%2" - Konnte "%1" nicht nach "%2" verschieben + Could not move "%1" to "%2" + Konnte "%1" nicht nach "%2" verschieben - - Could not remove folder "%1" - Der Ordner "%1" konnte nicht gelöscht werden + + Could not remove folder "%1" + Der Ordner "%1" konnte nicht gelöscht werden - - Error removing "%1": %2 - Fehler beim Entfernen "%1": %2 + + Error removing "%1": %2 + Fehler beim Entfernen "%1": %2 - Moving to the trash is not implemented on this platform - Verschieben in den Papierkorb ist auf dieser Plattform nicht möglich + Moving to the trash is not implemented on this platform + Verschieben in den Papierkorb ist auf dieser Plattform nicht möglich - - + + Flow2AuthWidget - - An error occurred while connecting. Please try again. - Es ist ein Fehler beim Herstellen der Verbindung aufgetreten. Bitte erneut versuchen. + + An error occurred while connecting. Please try again. + Es ist ein Fehler beim Herstellen der Verbindung aufgetreten. Bitte erneut versuchen. - - Browser Authentication - Browser-Authentifizierung + + Browser Authentication + Browser-Authentifizierung - - Copy Link - Link kopieren + + Copy Link + Link kopieren - - Logo - Logo + + Logo + Logo - - Reopen Browser - Browser erneut öffnen + + Reopen Browser + Browser erneut öffnen - - Switch to your browser to connect your account - Wechseln Sie zu Ihrem Browser um Ihr Konto zu verbinden + + Switch to your browser to connect your account + Wechseln Sie zu Ihrem Browser um Ihr Konto zu verbinden - - + + FolderWizardSelectiveSync - - Add Folder Sync - Ordner Sync hinzufügen + + Add Folder Sync + Ordner Sync hinzufügen - - Step 3 of 3: Selektive Synchronisation - Schritt 3 von 3: Selektive Synchronisierung + + Step 3 of 3: Selektive Synchronisation + Schritt 3 von 3: Selektive Synchronisierung - - + + FolderWizardSourcePage - - &Choose - &Wählen + + Add Folder Sync + Ordner Sync hinzufügen - &Choose … - &Wählen … + + &Choose + &Wählen - Pick a local folder on your computer to sync - Wählen Sie einen lokalen Ordner zum Synchronisieren aus + &Choose … + &Wählen … - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - Wählen Sie einen Ordner auf Ihrer Festplatte, der dauerhaft mit Ihrem %1 verbunden sein soll. Alle Dateien und Unterordner werden automatisch hochgeladen und synchronisiert. + Pick a local folder on your computer to sync + Wählen Sie einen lokalen Ordner zum Synchronisieren aus - - Step 1 of 3: Select local folder - Schritt 1 von 3: Lokalen Ordner auswählen + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Wählen Sie einen Ordner auf Ihrer Festplatte, der dauerhaft mit Ihrem %1 verbunden sein soll. Alle Dateien und Unterordner werden automatisch hochgeladen und synchronisiert. - - + + + Step 1 of 3: Select local folder + Schritt 1 von 3: Lokalen Ordner auswählen + + + FolderWizardTargetPage - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - Beide Ordner sind dauerhaft miteinander verknüpft und die jeweiligen Inhalte werden automatisch synchronisiert und aktualisiert. + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Beide Ordner sind dauerhaft miteinander verknüpft und die jeweiligen Inhalte werden automatisch synchronisiert und aktualisiert. + + + + Create folder + Ordner erstellen - - Create folder - Ordner erstellen + + Folders + Ordner - - Folders - Ordner + + Add Folder Sync + Ordner Sync hinzufügen - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - Bitte wählen oder erstellen Sie nun einen Zielordner in Ihrem %1, in den der Inhalt hochgeladen und synchronisiert werden soll. + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + Bitte wählen oder erstellen Sie nun einen Zielordner in Ihrem %1, in den der Inhalt hochgeladen und synchronisiert werden soll. - - Refresh - Aktualisieren + + Refresh + Aktualisieren - Select a remote destination folder - Einen entfernten Zielordner auswählen + Select a remote destination folder + Einen entfernten Zielordner auswählen - - Step 2 of 3: Directory in your %1 - Schritt 2 von 3: Verzeichnis in Ihrem %1 + + Step 2 of 3: Directory in your %1 + Schritt 2 von 3: Verzeichnis in Ihrem %1 - - + + + KMessageWidget + + + &Close + + + + + Close message + + + + OCC::AbstractNetworkJob - - Connection timed out - Zeitüberschreitung bei der Verbindung + + Connection timed out + Zeitüberschreitung bei der Verbindung - - Server replied "%1 %2" to "%3 %4" - Server hat "%1 %2" auf "%3 %4" geantwortet + + Server replied "%1 %2" to "%3 %4" + Server hat "%1 %2" auf "%3 %4" geantwortet - - Unknown error: network reply was deleted - Unbekannter Fehler: Netzwerk-Antwort wurde gelöscht + + Unknown error: network reply was deleted + Unbekannter Fehler: Netzwerk-Antwort wurde gelöscht - - + + OCC::Account - - File %1 is already locked by %2. - Datei %1 ist bereits von %2 gesperrt. + + File %1 is already locked by %2. + Datei %1 ist bereits von %2 gesperrt. - - Lock operation on %1 failed with error %2 - Das Sperren von %1 ist mit Fehler %2 fehlgeschlagen + + Lock operation on %1 failed with error %2 + Das Sperren von %1 ist mit Fehler %2 fehlgeschlagen - - Unlock operation on %1 failed with error %2 - Das Entsperren von %1 ist mit Fehler %2 fehlgeschlagen + + Unlock operation on %1 failed with error %2 + Das Entsperren von %1 ist mit Fehler %2 fehlgeschlagen - - + + OCC::AccountManager - - %1 accounts were detected from a legacy desktop client. + + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - %1 Konten wurden von einem älteren Desktop-Client erkannt. + %1 Konten wurden von einem älteren Desktop-Client erkannt. Sollen die Konten importiert werden? - - 1 account was detected from a legacy desktop client. + + 1 account was detected from a legacy desktop client. Should the account be imported? - 1 Konto wurde von einem älteren Desktop-Client erkannt. + 1 Konto wurde von einem älteren Desktop-Client erkannt. Soll das Konto importiert werden? - An existing configuration from a legacy desktop client was detected. + An existing configuration from a legacy desktop client was detected. Should an account import be attempted? - Es wurde eine vorhandene Konfiguration eines früheren Desktop-Clients erkannt. + Es wurde eine vorhandene Konfiguration eines früheren Desktop-Clients erkannt. Soll ein Kontoimport versucht werden? - - Could not import accounts from legacy client configuration. - Konten von älterer Client-Konfiguration konnten nicht importiert werden. + + Could not import accounts from legacy client configuration. + Konten von älterer Client-Konfiguration konnten nicht importiert werden. - - Import - Importieren + + Import + Importieren - - Legacy import - Import früherer Konfiguration + + + Legacy import + Import früherer Konfiguration - - Skip - Überspringen + + Skip + Überspringen - Successfully imported account from legacy client: %1 - Konto von älterem Client importiert: %1 + Successfully imported account from legacy client: %1 + Konto von älterem Client importiert: %1 - - + + OCC::AccountSettings - - (experimental) - (experimentell) + + (experimental) + (experimentell) - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - %1 (%3%) von %2 Serverkapazität verwendet. Einige Ordner, einschließlich über das Netzwerk verbundene oder geteilte Ordner, können unterschiedliche Beschränkungen aufweisen. + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + %1 (%3%) von %2 Serverkapazität verwendet. Einige Ordner, einschließlich über das Netzwerk verbundene oder geteilte Ordner, können unterschiedliche Beschränkungen aufweisen. - - %1 as %2 - %1 als %2 + + %1 as %2 + %1 als %2 - - %1 in use - %1 wird verwendet + + %1 in use + %1 wird verwendet - - %1 of %2 in use - %1 von %2 Serverkapazität verwendet + + %1 of %2 in use + %1 von %2 Serverkapazität verwendet - - <p>Could not create local folder <i>%1</i>.</p> - <p>Konnte lokalen Ordner <i>%1</i> nicht anle‏gen.‎</p> + + <p>Could not create local folder <i>%1</i>.</p> + <p>Konnte lokalen Ordner <i>%1</i> nicht anle‏gen.‎</p> - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Möchten Sie den Ordner <i>%1</i> nicht mehr synchronisieren?</p><p><b>Anmerkung:</b> Dies wird <b>keine</b> Dateien löschen.</p> + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Möchten Sie den Ordner <i>%1</i> nicht mehr synchronisieren?</p><p><b>Anmerkung:</b> Dies wird <b>keine</b> Dateien löschen.</p> - - Apply - Anwenden + + Apply + Anwenden - - Apply manual changes - Manuelle Änderungen anwenden + + Apply manual changes + Manuelle Änderungen anwenden - - Availability - Verfügbarkeit + + + Availability + Verfügbarkeit - - Cancel - Abbrechen + + + + Cancel + Abbrechen - - Choose what to sync - Zu synchronisierende Elemente auswählen + + Choose what to sync + Zu synchronisierende Elemente auswählen - - Confirm Folder Sync Connection Removal - Bestätigen Sie die Löschung der Ordner-Synchronisierung + + Confirm Folder Sync Connection Removal + Bestätigen Sie die Löschung der Ordner-Synchronisierung - - Connected to %1. - Verbunden mit %1. + + Connected to %1. + Verbunden mit %1. - - Connected with <server> as <user> - Verbunden mit <server> als <user> + + Connected with <server> as <user> + Verbunden mit <server> als <user> - - Connecting to %1 … - Verbinde zu %1 … + + Connecting to %1 … + Verbinde zu %1 … - - Could not encrypt folder because the folder does not exist anymore - Der Ordner konnte nicht verschlüsselt werden, da er nicht mehr existiert + + Could not encrypt folder because the folder does not exist anymore + Der Ordner konnte nicht verschlüsselt werden, da er nicht mehr existiert - - Create new folder - Neuen Ordner erstellen + + + Create new folder + Neuen Ordner erstellen - - Currently there is no storage usage information available. - Derzeit sind keine Speichernutzungsinformationen verfügbar. + + Currently there is no storage usage information available. + Derzeit sind keine Speichernutzungsinformationen verfügbar. - - Disable encryption - Verschlüsselung deaktivieren + + Disable encryption + Verschlüsselung deaktivieren - - Disable end-to-end encryption - Ende-zu-Ende-Verschlüsselung deaktivieren + + Disable end-to-end encryption + Ende-zu-Ende-Verschlüsselung deaktivieren - - Disable end-to-end encryption for %1? - Ende-zu-Ende-Verschlüsselung für %1 deaktivieren? + + Disable end-to-end encryption for %1? + Ende-zu-Ende-Verschlüsselung für %1 deaktivieren? - - Disable support - Unterstützung deaktivieren + + Disable support + Unterstützung deaktivieren - - Disable virtual file support … - Unterstützung für virtuelle Dateien deaktivieren + + Disable virtual file support … + Unterstützung für virtuelle Dateien deaktivieren - - Disable virtual file support? - Unterstützung für virtuelle Dateien deaktivieren? + + Disable virtual file support? + Unterstützung für virtuelle Dateien deaktivieren? - - Display mnemonic - Gedächtnisstütze anzeigen + + Display mnemonic + Gedächtnisstütze anzeigen - - Do not encrypt folder - Ordner nicht verschlüsseln + + + Do not encrypt folder + Ordner nicht verschlüsseln - - Edit Ignored Files - Ignorierte Dateien bearbeiten + + + Edit Ignored Files + Ignorierte Dateien bearbeiten - - Enable virtual file support %1 … - Unterstützung für virtuelle Dateien aktivieren %1 … + + Enable virtual file support %1 … + Unterstützung für virtuelle Dateien aktivieren %1 … - - Encrypt - Verschlüsseln + + Encrypt + Verschlüsseln - - Encrypt folder - Ordner verschlüsseln + + + Encrypt folder + Ordner verschlüsseln - - Encryption failed - Verschlüsselung fehlgeschlagen + + Encryption failed + Verschlüsselung fehlgeschlagen - - End-to-end Encryption - Ende-zu-Ende-Verschlüsselung + + End-to-end Encryption + Ende-zu-Ende-Verschlüsselung - - End-to-end encryption has been enabled for this account - Für dieses Konto wurde die Ende-zu-Ende-Verschlüsselung aktiviert + + End-to-end encryption has been enabled for this account + Für dieses Konto wurde die Ende-zu-Ende-Verschlüsselung aktiviert - - End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - Die Ende-zu-Ende-Verschlüsselung wurde auf diesem Konto mit einem anderen Gerät aktiviert.<br>Sie kann auf diesem Gerät durch Eingabe Ihrer Mnemonik aktiviert werden.<br>Dadurch wird die Synchronisierung vorhandener verschlüsselter Ordner aktiviert. + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. + Die Ende-zu-Ende-Verschlüsselung wurde auf diesem Konto mit einem anderen Gerät aktiviert.<br>Sie kann auf diesem Gerät durch Eingabe Ihrer Mnemonik aktiviert werden.<br>Dadurch wird die Synchronisierung vorhandener verschlüsselter Ordner aktiviert. - - End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. Would you like to set up end-to-end encryption? - Auf diesem Gerät ist keine Ende-zu-Ende-Verschlüsselung konfiguriert. Sobald sie konfiguriert ist, kann dieser Ordner verschlüsselt werden. Soll die Ende-zu-Ende-Verschlüsselung eingerichtet werden? + Auf diesem Gerät ist keine Ende-zu-Ende-Verschlüsselung konfiguriert. Sobald sie konfiguriert ist, kann dieser Ordner verschlüsselt werden. Soll die Ende-zu-Ende-Verschlüsselung eingerichtet werden? - - End-to-end encryption mnemonic - Gedächtnisstütze für Ende-zu-Ende Verschlüsselung + + End-to-end encryption mnemonic + Gedächtnisstütze für Ende-zu-Ende Verschlüsselung - - End-to-end Encryption with Virtual Files - Ende-zu-Ende-Verschlüsselung mit virtuellen Dateien + + End-to-end Encryption with Virtual Files + Ende-zu-Ende-Verschlüsselung mit virtuellen Dateien - - Expand Memory - Speicher erweitern + + Expand Memory + Speicher erweitern - - Folder creation failed - Anlegen des Ordners fehlgeschlagen + + Folder creation failed + Anlegen des Ordners fehlgeschlagen - - Force sync now - Synchronisierung jetzt erzwingen + + Force sync now + Synchronisierung jetzt erzwingen - - https://wl.hidrive.com/easy/0057 - https://wl.hidrive.com/easy/0067 + + https://wl.hidrive.com/easy/0057 + https://wl.hidrive.com/easy/0067 - - No %1 connection configured. - Keine %1-Verbindung konfiguriert. + + No %1 connection configured. + Keine %1-Verbindung konfiguriert. - - No account configured. - Kein Konto konfiguriert. + + No account configured. + Kein Konto konfiguriert. - No connection to %1 at %2. - Keine Verbindung zu %1 auf %2 + No connection to %1 at %2. + Keine Verbindung zu %1 auf %2 - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - Berechtigung vom Browser einholen. <a href='%1'> Klicken Sie hier </a>, um den Browser erneut zu öffnen. + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + Berechtigung vom Browser einholen. <a href='%1'> Klicken Sie hier </a>, um den Browser erneut zu öffnen. - - Open folder - Ordner öffnen + + + Open folder + Ordner öffnen - - Pause sync - Synchronisierung pausieren + + Pause sync + Synchronisierung pausieren - - Please wait for the folder to sync before trying to encrypt it. - Bitte warten Sie, bis der Ordner synchronisiert ist, bevor Sie versuchen, ihn zu verschlüsseln. + + Please wait for the folder to sync before trying to encrypt it. + Bitte warten Sie, bis der Ordner synchronisiert ist, bevor Sie versuchen, ihn zu verschlüsseln. - - Remove folder sync connection - Ordner-Synchronisierung entfernen + + Remove folder sync connection + Ordner-Synchronisierung entfernen - - Remove Folder Sync Connection - Ordner-Synchronisierung entfernen + + Remove Folder Sync Connection + Ordner-Synchronisierung entfernen - - Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - Durch das Entfernen der Ende-zu-Ende-Verschlüsselung werden lokal synchronisierte Dateien entfernt, die verschlüsselt sind.<br>Verschlüsselte Dateien verbleiben auf dem Server. + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. + Durch das Entfernen der Ende-zu-Ende-Verschlüsselung werden lokal synchronisierte Dateien entfernt, die verschlüsselt sind.<br>Verschlüsselte Dateien verbleiben auf dem Server. - - Restart sync - Synchronisierung neustarten + + Restart sync + Synchronisierung neustarten - - Resume sync - Synchronisierung fortsetzen + + Resume sync + Synchronisierung fortsetzen - - Server %1 is currently being redirected, or your connection is behind a captive portal. - Server %1 wird derzeit umgeleitet oder Ihre Verbindung befindet sich hinter einem Captive-Portal. + + Server %1 is currently being redirected, or your connection is behind a captive portal. + Server %1 wird derzeit umgeleitet oder Ihre Verbindung befindet sich hinter einem Captive-Portal. - - Server %1 is currently in maintenance mode. - Server %1 befindet sich im Wartungsmodus. + + Server %1 is currently in maintenance mode. + Server %1 befindet sich im Wartungsmodus. - - Server %1 is temporarily unavailable. - Server %1 ist derzeit nicht verfügbar. + + Server %1 is temporarily unavailable. + Server %1 ist derzeit nicht verfügbar. - - Server configuration error: %1 at %2. - Konfigurationsfehler des Servers: %1 auf %2. + + Server configuration error: %1 at %2. + Konfigurationsfehler des Servers: %1 auf %2. - - Set up encryption - Verschlüsselung einrichten + + There are folders that were not synchronized because they are too big: + - - Signed out from %1. - Abgemeldet von %1. + + There are folders that were not synchronized because they are external storages: + - - Standard file sync - Standard Dateisynchronisierung + + There are folders that were not synchronized because they are too big or external storages: + - - Storage space %1% occupied - Speicherplatz %1% belegt + + Set up encryption + Verschlüsselung einrichten - - Storage space: … - Speicherplatz: … + + Signed out from %1. + Abgemeldet von %1. - - Sync Running - Synchronisierung läuft + + Standard file sync + Standard Dateisynchronisierung - - Synchronize all - Alles synchronisieren + + Storage space %1% occupied + Speicherplatz %1% belegt - - Synchronize none - Nichts synchronisieren + + + Storage space: … + Speicherplatz: … - - The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - Der Ordner weist ein geringfügiges Synchronisierungsproblem auf. Die Verschlüsselung dieses Ordners ist möglich, sobald er erfolgreich synchronisiert wurde + + Sync Running + Synchronisierung läuft - - The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - Der Ordner weist einen Synchronisierungsfehler auf. Die Verschlüsselung dieses Ordners ist möglich, sobald er erfolgreich synchronisiert wurde + + Synchronize all + Alles synchronisieren - - The server version %1 is unsupported! Proceed at your own risk. - Die Serverversion %1 wird nicht unterstützt! Fortfahren auf eigenes Risiko. + + Synchronize none + Nichts synchronisieren - - The syncing operation is running.<br/>Do you want to terminate it? - Die Synchronisierung läuft gerade.<br/>Wollen Sie diese beenden? + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully + Der Ordner weist ein geringfügiges Synchronisierungsproblem auf. Die Verschlüsselung dieses Ordners ist möglich, sobald er erfolgreich synchronisiert wurde - - There are folders that have grown in size beyond %1MB: %2 - Es gibt Ordner, deren Größe über %1 MB hinaus gewachsen ist: %2 + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully + Der Ordner weist einen Synchronisierungsfehler auf. Die Verschlüsselung dieses Ordners ist möglich, sobald er erfolgreich synchronisiert wurde - - There are folders that were not synchronized because they are external storages: - Es gibt Ordner, die nicht synchronisiert werden konnten, da sie externe Speicher sind: + + The server version %1 is unsupported! Proceed at your own risk. + Die Serverversion %1 wird nicht unterstützt! Fortfahren auf eigenes Risiko. - - There are folders that were not synchronized because they are too big or external storages: - Es gibt Ordner, die nicht synchronisiert werden konnten, da sie zu groß oder externe Speicher sind: + + The syncing operation is running.<br/>Do you want to terminate it? + Die Synchronisierung läuft gerade.<br/>Wollen Sie diese beenden? - - There are folders that were not synchronized because they are too big: - Einige Ordner konnten nicht synchronisiert werden, da sie zu groß sind: + + There are folders that have grown in size beyond %1MB: %2 + Es gibt Ordner, deren Größe über %1 MB hinaus gewachsen ist: %2 - - This account supports end-to-end encryption - Dieses Konto unterstützt Ende-zu-Ende-Verschlüsselung + There are folders that were not synchronized because they are external storages: + Es gibt Ordner, die nicht synchronisiert werden konnten, da sie externe Speicher sind: - - This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + There are folders that were not synchronized because they are too big or external storages: + Es gibt Ordner, die nicht synchronisiert werden konnten, da sie zu groß oder externe Speicher sind: + + + There are folders that were not synchronized because they are too big: + Einige Ordner konnten nicht synchronisiert werden, da sie zu groß sind: + + + + This account supports end-to-end encryption + Dieses Konto unterstützt Ende-zu-Ende-Verschlüsselung + + + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. The only advantage of disabling virtual file support is that the selective sync feature will become available again. This action will abort any currently running synchronization. - Durch diese Aktion wird die Unterstützung für virtuelle Dateien deaktiviert. Infolgedessen werden Inhalte von Ordnern, die derzeit als "nur online verfügbar" markiert sind, heruntergeladen. + Durch diese Aktion wird die Unterstützung für virtuelle Dateien deaktiviert. Infolgedessen werden Inhalte von Ordnern, die derzeit als "nur online verfügbar" markiert sind, heruntergeladen. Der einzige Vorteil der Deaktivierung der Unterstützung für virtuelle Dateien besteht darin, dass die ausgewählte Synchronisierungsfunktion wieder verfügbar wird. Diese Aktion bricht jede derzeit laufende Synchronisierung ab. - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - Dadurch werden Ihr Ordner und alle darin enthaltenen Dateien verschlüsselt. Diese Dateien sind ohne Ihren Schlüssel nicht mehr zugänglich. + Dadurch werden Ihr Ordner und alle darin enthaltenen Dateien verschlüsselt. Diese Dateien sind ohne Ihren Schlüssel nicht mehr zugänglich. <b>Dieser Vorgang ist nicht umkehrbar. Sind Sie sicher, dass Sie fortfahren möchten?</b> - - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - Dadurch werden Ihr Ordner und alle darin enthaltenen Dateien verschlüsselt. Auf diese Dateien kann ohne Ihren Verschlüsselungsschlüssel nicht mehr zugegriffen werden. + Dadurch werden Ihr Ordner und alle darin enthaltenen Dateien verschlüsselt. Auf diese Dateien kann ohne Ihren Verschlüsselungsschlüssel nicht mehr zugegriffen werden. <b>Dies kann nicht rückgängig gemacht werden. Sind Sie sicher, dass Sie fortfahren möchten?</b> - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - Um Ihre kryptografische Identität zu schützen, verschlüsseln wir sie mit einer Gedächtnisstütze von 12 Wörterbuchwörtern. Bitte notieren Sie sich diese und bewahren Sie sie auf. Sie werden benötigt, um Ihrem Konto weitere Geräte hinzuzufügen (z. B. Ihr Mobiltelefon oder Laptop). + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + Um Ihre kryptografische Identität zu schützen, verschlüsseln wir sie mit einer Gedächtnisstütze von 12 Wörterbuchwörtern. Bitte notieren Sie sich diese und bewahren Sie sie auf. Sie werden benötigt, um Ihrem Konto weitere Geräte hinzuzufügen (z. B. Ihr Mobiltelefon oder Laptop). - - Unable to connect to %1. - Verbindung zu %1 kann nicht hergestellt werden. + + Unable to connect to %1. + Verbindung zu %1 kann nicht hergestellt werden. - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - Nicht markierte Ordner werden von Ihrem lokalen Dateisystem <b>entfernt</b> und werden auch nicht mehr auf diesem Rechner synchronisiert + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + Nicht markierte Ordner werden von Ihrem lokalen Dateisystem <b>entfernt</b> und werden auch nicht mehr auf diesem Rechner synchronisiert - - Virtual file sync - Virtuelle Dateisynchronisierung + + Virtual file sync + Virtuelle Dateisynchronisierung - - Warning - Warnung + + Warning + Warnung - - You cannot encrypt a folder with contents, please remove the files. + + You cannot encrypt a folder with contents, please remove the files. Wait for the new sync, then encrypt it. - Sie können einen Ordner nicht mit Inhalten verschlüsseln, bitte Dateien entfernen. + Sie können einen Ordner nicht mit Inhalten verschlüsseln, bitte Dateien entfernen. Warten Sie auf die neue Synchronisierung und verschlüsseln Sie sie dann. - - You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - Sie scheinen die Funktion "Virtuelle Dateien" für diesen Ordner aktiviert zu haben. Im Moment ist es nicht möglich, virtuelle Dateien, die Ende-zu-Ende-verschlüsselt sind, implizit herunterzuladen. Um die beste Erfahrung mit virtuellen Dateien und Ende-zu-Ende-Verschlüsselung zu machen, stellen Sie sicher, dass der verschlüsselte Ordner mit "Immer lokal verfügbar machen" markiert ist. + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". + Sie scheinen die Funktion "Virtuelle Dateien" für diesen Ordner aktiviert zu haben. Im Moment ist es nicht möglich, virtuelle Dateien, die Ende-zu-Ende-verschlüsselt sind, implizit herunterzuladen. Um die beste Erfahrung mit virtuellen Dateien und Ende-zu-Ende-Verschlüsselung zu machen, stellen Sie sicher, dass der verschlüsselte Ordner mit "Immer lokal verfügbar machen" markiert ist. - - + + OCC::AccountSetupFromCommandLineJob - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Zugriff durch Server verboten. Um zu überprüfen, ob Sie über den richtigen Zugriff verfügen, <a href="%1">klicken Sie hier</a>, um mit Ihrem Browser auf den Dienst zuzugreifen. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Zugriff durch Server verboten. Um zu überprüfen, ob Sie über den richtigen Zugriff verfügen, <a href="%1">klicken Sie hier</a>, um mit Ihrem Browser auf den Dienst zuzugreifen. - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - Die genehmigte Anfrage an den Server wurde an "%1“ umgeleitet. Die URL ist fehlerhaft, der Server ist falsch konfiguriert. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + Die genehmigte Anfrage an den Server wurde an "%1“ umgeleitet. Die URL ist fehlerhaft, der Server ist falsch konfiguriert. - - There was an invalid response to an authenticated WebDAV request - Es gab eine ungültige Antwort auf eine authentifizierte WebDAV-Anfrage + + There was an invalid response to an authenticated WebDAV request + Es gab eine ungültige Antwort auf eine authentifizierte WebDAV-Anfrage - - + + OCC::AccountState - - Asking Credentials - Zugangsdaten werden abgefragt + + Asking Credentials + Zugangsdaten werden abgefragt - - Configuration error - Konfigurationsfehler + + Configuration error + Konfigurationsfehler - - Connected - Verbunden + + Connected + Verbunden - - Disconnected - Getrennt + + Disconnected + Getrennt - - Maintenance mode - Wartungsmodus + + Maintenance mode + Wartungsmodus - - Network error - Netzwerkfehler + + Network error + Netzwerkfehler - - Redirect detected - Umleitung erkannt + + Redirect detected + Umleitung erkannt - - Service unavailable - Dienst nicht verfügbar + + Service unavailable + Dienst nicht verfügbar - - Signed out - Abgemeldet + + Signed out + Abgemeldet - - Unknown account state - Unbekannter Konto-Zustand + + Unknown account state + Unbekannter Konto-Zustand - - + + OCC::ActivityListModel - - Fetching activities … - Aktivitäten abrufen… + + Fetching activities … + Aktivitäten abrufen… - - Files from the ignore list as well as symbolic links are not synced. - Dateien aus der Ignorierliste sowie symbolische Links werden nicht synchronisiert. + + Files from the ignore list as well as symbolic links are not synced. + Dateien aus der Ignorierliste sowie symbolische Links werden nicht synchronisiert. - - For more activities please open the Activity app. - Um weitere Aktivitäten anzusehen bitte die Activity-App öffnen. + + For more activities please open the Activity app. + Um weitere Aktivitäten anzusehen bitte die Activity-App öffnen. - - Network error occurred: client will retry syncing. - Netzwerkfehler aufgetreten: Client startet die Synchronisation neu + + Network error occurred: client will retry syncing. + Netzwerkfehler aufgetreten: Client startet die Synchronisation neu - - + + OCC::AddCertificateDialog - - An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - Ein verschlüsseltes pkcs12-Bundle wird dringend empfohlen, da eine Kopie in der Konfigurationsdatei gespeichert wird. + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. + Ein verschlüsseltes pkcs12-Bundle wird dringend empfohlen, da eine Kopie in der Konfigurationsdatei gespeichert wird. - - Browse … - Durchsuchen … + + Browse … + Durchsuchen … - - Certificate & Key (pkcs12): - Zertifikat & Schlüssel (pkcs12): + + Certificate & Key (pkcs12): + Zertifikat & Schlüssel (pkcs12): - - Certificate files (*.p12 *.pfx) - Zertifikatsdateien (*.p12 *.pfx) + + Certificate files (*.p12 *.pfx) + Zertifikatsdateien (*.p12 *.pfx) - - Certificate password: - Zertifikatspasswort: + + Certificate password: + Zertifikatspasswort: - - Select a certificate - Zertifikat auswählen + + Select a certificate + Zertifikat auswählen - - SSL client certificate authentication - SSL-Client-Zertifikat-Authentifizierung + + SSL client certificate authentication + SSL-Client-Zertifikat-Authentifizierung - - This server probably requires a SSL client certificate. - Der Server benötigt vermutlich ein SSL-Client-Zertifikat + + This server probably requires a SSL client certificate. + Der Server benötigt vermutlich ein SSL-Client-Zertifikat - - + + OCC::Application - - %1 accounts - %1 Konten + %1 accounts + %1 Konten + + + %1 folders + %1 Ordner + + + + 1 account + 1 Konto + + + + 1 folder + 1 Ordner + + + + Continue + Fortsetzen + + + + newer + newer software version + Neuer - - %1 folders - %1 Ordner + + older + older software version + Älter - - 1 account - 1 Konto + + deleting + Lösche - - 1 folder - 1 Ordner + + %1 accounts + number of accounts imported + %1 Konten - - Continue - Fortsetzen + + %1 folders + number of folders imported + %1 Ordner - - deleting - Lösche + + Legacy import + Import früherer Konfiguration - - Error accessing the configuration file - Fehler beim Zugriff auf die Konfigurationsdatei + + Imported %1 and %2 from a legacy desktop client. +%3 + number of accounts and folders imported. list of users. + %1 und %2 wurden von einem älteren Desktop-Client importiert. +%3 + + + + Error accessing the configuration file + Fehler beim Zugriff auf die Konfigurationsdatei - - ignoring - Ignoriere + + ignoring + Ignoriere - - Imported %1 and %2 from a legacy desktop client. + Imported %1 and %2 from a legacy desktop client. %3 - %1 und %2 wurden von einem älteren Desktop-Client importiert. + %1 und %2 wurden von einem älteren Desktop-Client importiert. %3 - - newer - Neuer + newer + Neuer - - older - Älter + older + Älter - - Quit - Beenden + + Quit + Beenden - - Quit %1 - Beende %1 + + Quit %1 + Beende %1 - - Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - Einige Einstellungen wurden in %1-Versionen dieses Clients konfiguriert und verwenden Funktionen, die in dieser Version nicht verfügbar sind.<br><br>Fortfahren bedeutet <b>%2 dieser Einstellungen</b><br><br>Die aktuelle Konfigurationsdatei wurde bereits auf <i>%3</i> gesichert. + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. + Einige Einstellungen wurden in %1-Versionen dieses Clients konfiguriert und verwenden Funktionen, die in dieser Version nicht verfügbar sind.<br><br>Fortfahren bedeutet <b>%2 dieser Einstellungen</b><br><br>Die aktuelle Konfigurationsdatei wurde bereits auf <i>%3</i> gesichert. - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - Beim Zugriff auf die Konfigurationsdatei unter %1 ist ein Fehler aufgetreten. Stellen Sie sicher, dass Ihr Systemkonto auf die Datei zugreifen kann. + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + Beim Zugriff auf die Konfigurationsdatei unter %1 ist ein Fehler aufgetreten. Stellen Sie sicher, dass Ihr Systemkonto auf die Datei zugreifen kann. - - + + OCC::AuthenticationDialog - - &Password: - &Passwort: + + &Password: + &Passwort: - - &Username: - &Benutzername: + + &Username: + &Benutzername: - - Authentication Required - Authentifizierung erforderlich + + Authentication Required + Authentifizierung erforderlich - - Enter username and password for "%1" at %2. - Benutzername und Passwort für "%1" auf %2 eingeben. + + Enter username and password for "%1" at %2. + Benutzername und Passwort für "%1" auf %2 eingeben. - - + + OCC::BasePropagateRemoteDeleteEncrypted - "%1 Failed to unlock encrypted folder %2". - "%1 Der verschlüsselte Ordner %2 konnte nicht entsperrt werden". + + "%1 Failed to unlock encrypted folder %2". + "%1 Der verschlüsselte Ordner %2 konnte nicht entsperrt werden". - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Falscher HTTP-Code vom Server zurückgegeben. 204 erwartet, aber "%1 %2" erhalten. + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Falscher HTTP-Code vom Server zurückgegeben. 204 erwartet, aber "%1 %2" erhalten. - - + + OCC::BulkPropagatorJob - - Error updating metadata: %1 - Fehler beim Aktualisieren der Metadaten: %1 + + Error updating metadata: %1 + Fehler beim Aktualisieren der Metadaten: %1 - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Die Datei %1 kann nicht hochgeladen werden, da eine andere Datei mit dem selben Namen, nur unterschiedlicher Groß-/Kleinschreibung, existiert + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Die Datei %1 kann nicht hochgeladen werden, da eine andere Datei mit dem selben Namen, nur unterschiedlicher Groß-/Kleinschreibung, existiert - - File %1 has invalid modification time. Do not upload to the server. - Die Datei %1 hat eine ungültige Änderungszeit. Nicht auf den Server hochladen. + + File %1 has invalid modification time. Do not upload to the server. + Die Datei %1 hat eine ungültige Änderungszeit. Nicht auf den Server hochladen. - - File %1 has invalid modified time. Do not upload to the server. - Die Datei %1 hat eine ungültige Änderungszeit. Nicht auf den Server hochladen. + + File %1 has invalid modified time. Do not upload to the server. + Die Datei %1 hat eine ungültige Änderungszeit. Nicht auf den Server hochladen. - - File Removed (start upload) %1 - Datei entfernt (starte das Hochladen) %1 + + File Removed (start upload) %1 + Datei entfernt (starte das Hochladen) %1 - - Local file changed during sync. - Lokale Datei wurde während der Synchronisierung geändert. + + + Local file changed during sync. + Lokale Datei wurde während der Synchronisierung geändert. - - Local file changed during syncing. It will be resumed. - Lokale Datei hat sich während der Synchronisierung geändert. Die Synchronisierung wird wieder aufgenommen. + + Local file changed during syncing. It will be resumed. + Lokale Datei hat sich während der Synchronisierung geändert. Die Synchronisierung wird wieder aufgenommen. - - Network error: %1 - Netzwerkfehler: %1 + + Network error: %1 + Netzwerkfehler: %1 - - Restoration failed: %1 - Wiederherstellung fehlgeschlagen: %1 + + Restoration failed: %1 + Wiederherstellung fehlgeschlagen: %1 - - The file %1 is currently in use - Die Datei %1 wird aktuell verwendet + + The file %1 is currently in use + Die Datei %1 wird aktuell verwendet - - The local file was removed during sync. - Die lokale Datei wurde während der Synchronisierung gelöscht. + + The local file was removed during sync. + Die lokale Datei wurde während der Synchronisierung gelöscht. - - + + OCC::CaseClashConflictSolver - - Cannot rename file because a file with the same name already exists on the server. Please pick another name. - Die Datei kann nicht umbenannt werden, da eine Datei mit selben Namen bereits auf dem Server existiert. Bitte einen anderen Namen wählen. + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + Die Datei kann nicht umbenannt werden, da eine Datei mit selben Namen bereits auf dem Server existiert. Bitte einen anderen Namen wählen. - - Could not rename file. Please make sure you are connected to the server. - Datei konnte nicht umbenannt werden. Bitte stellen Sie sicher, dass Sie mit dem Server verbunden sind. + + Could not rename file. Please make sure you are connected to the server. + Datei konnte nicht umbenannt werden. Bitte stellen Sie sicher, dass Sie mit dem Server verbunden sind. - - Failed to fetch permissions with error %1 - Fehler beim Abrufen der Berechtigungen. Fehler %1 + + Failed to fetch permissions with error %1 + Fehler beim Abrufen der Berechtigungen. Fehler %1 - - Filename contains leading and trailing spaces. - Dateiname enthält Leerzeichen am Anfang und am Ende. + + Filename contains leading and trailing spaces. + Dateiname enthält Leerzeichen am Anfang und am Ende. - - Filename contains leading spaces. - Dateiname enthält Leerzeichen am Anfang. + + Filename contains leading spaces. + Dateiname enthält Leerzeichen am Anfang. - - Filename contains trailing spaces. - Dateiname enthält Leerzeichen am Ende. + + Filename contains trailing spaces. + Dateiname enthält Leerzeichen am Ende. - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Sie haben nicht die Berechtigung, diese Datei umzubenennen. Bitte wenden Sie sich zum Umbenennen der Datei an dereren Ersteller. + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Sie haben nicht die Berechtigung, diese Datei umzubenennen. Bitte wenden Sie sich zum Umbenennen der Datei an dereren Ersteller. - - + + OCC::CaseClashFilenameDialog - - %1 does not support equal file names with only letter casing differences. - %1 unterstützt keine gleichen Dateinamen mit Unterschieden nur in der Groß- und Kleinschreibung. + + %1 does not support equal file names with only letter casing differences. + %1 unterstützt keine gleichen Dateinamen mit Unterschieden nur in der Groß- und Kleinschreibung. + + + + + 0 byte + 0 Byte + + + + Case Clash Conflict + Konflikt mit der Groß- und Kleinschreibung + + + + Case clashing file + Datei mit dem Problem der Groß- und Kleinschreibung - - 0 byte - 0 Byte + + Existing file + Vorhandene Datei - - Case Clash Conflict - Konflikt mit der Groß- und Kleinschreibung + + Error + Fehler - - Case clashing file - Datei mit dem Problem der Groß- und Kleinschreibung + + file A + Datei A - - Existing file - Vorhandene Datei + + file B + Datei B - - file A - Datei A + + Filename contains illegal characters: %1 + Dateiname enthält unzulässige Zeichen: %1 - - file B - Datei B + + New filename + Neuer Dateiname - - Filename contains illegal characters: %1 - Dateiname enthält unzulässige Zeichen: %1 + + + Open clashing file + Datei mit dem Problem der Groß- und Kleinschreibung öffnen - - New filename - Neuer Dateiname + + + Open existing file + Existierende Datei öffnen - - Open clashing file - Datei mit dem Problem der Groß- und Kleinschreibung öffnen + + Please enter a new name for the clashing file: + Bitte einen neuen Namen für die Datei mit dem Problem der Groß- und Kleinschreibung eingeben: - - Open existing file - Existierende Datei öffnen + + Rename file + Datei umbenennen - - Please enter a new name for the clashing file: - Bitte einen neuen Namen für die Datei mit dem Problem der Groß- und Kleinschreibung eingeben: + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + Die Datei "%1" konnte aufgrund eines Konflikts (Groß- / Kleinschreibung) mit einer vorhandenen Datei auf diesem System nicht synchronisiert werden. - - Rename file - Datei umbenennen + + Filename contains leading and trailing spaces. + Dateiname enthält Leerzeichen am Anfang und am Ende. - - The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - Die Datei "%1" konnte aufgrund eines Konflikts (Groß- / Kleinschreibung) mit einer vorhandenen Datei auf diesem System nicht synchronisiert werden. + + Filename contains leading spaces. + Dateiname enthält Leerzeichen am Anfang. - - The file could not be synced because it generates a case clash conflict with an existing file on this system. - Die Datei konnte nicht synchronisiert werden, da diese einen Konflikt bezüglich Groß- und Kleinschreibung mit einer vorhandenen Datei auf diesem System erzeugt. + + Filename contains trailing spaces. + Dateiname enthält Leerzeichen am Ende. - - today - Heute + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + Die Datei konnte nicht synchronisiert werden, da diese einen Konflikt bezüglich Groß- und Kleinschreibung mit einer vorhandenen Datei auf diesem System erzeugt. - - Use invalid name - Ungültigen Namen verwenden + + + today + Heute - - + + + Use invalid name + Ungültigen Namen verwenden + + + OCC::CleanupPollsJob - - Error writing metadata to the database - Fehler beim Schreiben der Metadaten in die Datenbank + + Error writing metadata to the database + Fehler beim Schreiben der Metadaten in die Datenbank - - + + OCC::ClientSideEncryption - - Enter E2E passphrase - E2E-Passphrase eingeben + + Enter E2E passphrase + E2E-Passphrase eingeben - - Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - Geben Sie Ihre Passphrase für Ende-zu-Ende-Verschlüsselung ein:<br><br>Benutzername: %2<br>Konto: %3<br> + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + Geben Sie Ihre Passphrase für Ende-zu-Ende-Verschlüsselung ein:<br><br>Benutzername: %2<br>Konto: %3<br> - - + + OCC::ConflictDialog - - <a href="%1">Open local version</a> - <a href="%1">Lokale Version öffnen</a> + + Local version + Lokale Version + + + + + today + Heute - - <a href="%1">Open server version</a> - <a href="%1">Serverversion öffnen</a> + + + 0 byte + 0 Byte - - Click to open the file - Klicken um die Datei zu öffnen + + <a href="%1">Open local version</a> + <a href="%1">Lokale Version öffnen</a> - - Conflicting versions of %1. - Konflikt-Versionen von %1. + + Server version + Serverversion - - Keep both versions - Beide Versionen behalten + + <a href="%1">Open server version</a> + <a href="%1">Serverversion öffnen</a> - - Keep local version - Lokale Version behalten + + + Click to open the file + Klicken um die Datei zu öffnen - - Keep selected version - Ausgewählte Version behalten + + + Conflicting versions of %1. + Konflikt-Versionen von %1. - - Keep server version - Serverversion behalten + + Keep both versions + Beide Versionen behalten - - Open local version - Lokale Version öffnen + + Keep local version + Lokale Version behalten - - Open server version - Serverversion öffnen + + + Keep selected version + Ausgewählte Version behalten - - Sync Conflict - Synchronisations-Konflikt + + Keep server version + Serverversion behalten - - Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. - Welche Version der Datei soll behalten werden?<br/>Wenn Sie beide Versionen wählen, wird der lokalen Datei eine Zahl am Ende des Dateinamens angefügt. + + Open local version + Lokale Version öffnen - - + + + Open server version + Serverversion öffnen + + + + Sync Conflict + Synchronisations-Konflikt + + + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + Welche Version der Datei soll behalten werden?<br/>Wenn Sie beide Versionen wählen, wird der lokalen Datei eine Zahl am Ende des Dateinamens angefügt. + + + OCC::ConflictSolver - - Confirm deletion - Löschen bestätigen + + Confirm deletion + Löschen bestätigen - - Do you want to delete the directory <i>%1</i> and all its contents permanently? - Möchten Sie den Ordner <i>%1</i> und dessen Inhalte dauerhaft löschen? + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + Möchten Sie den Ordner <i>%1</i> und dessen Inhalte dauerhaft löschen? - - Do you want to delete the file <i>%1</i> permanently? - Möchten Sie die Datei <i>%1</i> dauerhaft löschen? + + Do you want to delete the file <i>%1</i> permanently? + Möchten Sie die Datei <i>%1</i> dauerhaft löschen? - - Moving file failed: + + + Moving file failed: %1 - Verschieben der Datei fehlgeschlagen: + Verschieben der Datei fehlgeschlagen: %1 - - + + + + Error + Fehler + + + OCC::ConnectionValidator - - Authentication error: Either username or password are wrong. - Authentifizierungsfehler: Benutzername oder Passwort ist falsch. + + Authentication error: Either username or password are wrong. + Authentifizierungsfehler: Benutzername oder Passwort ist falsch. - - Connection issue - Verbindungsproblem + + Connection issue + Verbindungsproblem - - No Nextcloud account configured - Kein Nextcloud-Konto konfiguriert + + No Nextcloud account configured + Kein Nextcloud-Konto konfiguriert - - Please update to the latest server and restart the client. - Aktualisieren Sie auf die neueste Server-Version und starten Sie den Client neu. + + Please update to the latest server and restart the client. + Aktualisieren Sie auf die neueste Server-Version und starten Sie den Client neu. - - The configured server for this client is too old - Der konfigurierte Server ist für diesen Client zu alt + + The configured server for this client is too old + Der konfigurierte Server ist für diesen Client zu alt - - The provided credentials are not correct - Die zur Verfügung gestellten Anmeldeinformationen sind nicht korrekt + + The provided credentials are not correct + Die zur Verfügung gestellten Anmeldeinformationen sind nicht korrekt - - Timeout - Zeitüberschreitung + + Timeout + Zeitüberschreitung - - + + OCC::DiscoveryPhase - - Error while canceling deletion of %1 - Fehler beim Abbrechen des Löschens von %1 + + Error while canceling deletion of %1 + Fehler beim Abbrechen des Löschens von %1 - - Error while canceling deletion of a file - Fehler beim Abbrechen des Löschens einer Datei + + Error while canceling deletion of a file + Fehler beim Abbrechen des Löschens einer Datei - - + + OCC::DiscoverySingleDirectoryJob - - Encrypted metadata setup error: initial signature from server is empty. - Fehler bei der Einrichtung der verschlüsselten Metadaten: Die ursprüngliche Signatur vom Server ist leer. + + Encrypted metadata setup error: initial signature from server is empty. + Fehler bei der Einrichtung der verschlüsselten Metadaten: Die ursprüngliche Signatur vom Server ist leer. - - Encrypted metadata setup error! - Einrichtungsfehler für verschlüsselte Metadaten! + + + Encrypted metadata setup error! + Einrichtungsfehler für verschlüsselte Metadaten! - - Server error: PROPFIND reply is not XML formatted! - Serverantwort: PROPFIND-Antwort ist nicht im XML-Format! + + + Server error: PROPFIND reply is not XML formatted! + Serverantwort: PROPFIND-Antwort ist nicht im XML-Format! - - + + OCC::DiscoverySingleLocalDirectoryJob - - Directory not accessible on client, permission denied - Verzeichnis auf dem Client nicht zugreifbar, Berechtigung verweigert + + Directory not accessible on client, permission denied + Verzeichnis auf dem Client nicht zugreifbar, Berechtigung verweigert - - Directory not found: %1 - Ordner nicht gefunden: %1 + + Directory not found: %1 + Ordner nicht gefunden: %1 - - Error while opening directory %1 - Fehler beim Öffnen des Ordners %1 + + Error while opening directory %1 + Fehler beim Öffnen des Ordners %1 - - Error while reading directory %1 - Fehler beim Lesen des Ordners %1 + + Error while reading directory %1 + Fehler beim Lesen des Ordners %1 - - Filename encoding is not valid - Dateinamenkodierung ist ungültig + + Filename encoding is not valid + Dateinamenkodierung ist ungültig - - + + OCC::EditLocallyJob - - An error occurred during data retrieval. - Es ist ein Fehler beim Datenabruf aufgetreten. + + + + An error occurred during data retrieval. + Es ist ein Fehler beim Datenabruf aufgetreten. + + + + An error occurred during setup. + Es ist ein Fehler während der Einrichtung aufgetreten. - - An error occurred during setup. - Es ist ein Fehler während der Einrichtung aufgetreten. + + + An error occurred trying to synchronise the file to edit locally. + Es ist ein Fehler beim Versuch, die Datei zu synchronisieren, um sie lokal zu bearbeiten, aufgetreten. - - An error occurred trying to synchronise the file to edit locally. - Es ist ein Fehler beim Versuch, die Datei zu synchronisieren, um sie lokal zu bearbeiten, aufgetreten. + + An error occurred trying to verify the request to edit locally. + Es ist ein Fehler beim Versuch, die Anfrage zur lokalen Bearbeitung zu überprüfen, aufgetreten. - - An error occurred trying to verify the request to edit locally. - Es ist ein Fehler beim Versuch, die Anfrage zur lokalen Bearbeitung zu überprüfen, aufgetreten. + + + + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + Datei zur lokalen Bearbeitung konnte nicht gefunden werden. Stellen Sie sicher, dass sie nicht durch die selektive Synchronisierung ausgeschlossen wird. - - Could not find a file for local editing. Make sure it is not excluded via selective sync. - Datei zur lokalen Bearbeitung konnte nicht gefunden werden. Stellen Sie sicher, dass sie nicht durch die selektive Synchronisierung ausgeschlossen wird. + + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + Datei zur lokalen Bearbeitung konnte nicht gefunden werden. Stellen Sie sicher, dass der Pfad gültig ist und lokal synchronisiert wird. - - Could not find a file for local editing. Make sure its path is valid and it is synced locally. - Datei zur lokalen Bearbeitung konnte nicht gefunden werden. Stellen Sie sicher, dass der Pfad gültig ist und lokal synchronisiert wird. + + Could not find a remote file info for local editing. Make sure its path is valid. + Remote-Dateiinformationen für die lokale Bearbeitung konnten nicht gefunden werden. Stellen Sie sicher, dass der Pfad gültig ist. - - Could not find a remote file info for local editing. Make sure its path is valid. - Remote-Dateiinformationen für die lokale Bearbeitung konnten nicht gefunden werden. Stellen Sie sicher, dass der Pfad gültig ist. + + Could not find an account for local editing. + Es konnte kein Konto für die lokale Bearbeitung gefunden werden. - - Could not find an account for local editing. - Es konnte kein Konto für die lokale Bearbeitung gefunden werden. + + Could not open %1 + %1 konnte nicht geöffnet werden - - Could not open %1 - %1 konnte nicht geöffnet werden + + + + + + + + + Could not start editing locally. + Lokale Bearbeitung konnte nicht gestartet werden. - - Could not start editing locally. - Lokale Bearbeitung konnte nicht gestartet werden. + + + Could not validate the request to open a file from server. + Die Anforderung zum Öffnen einer Datei vom Server konnte nicht validiert werden. - - Could not validate the request to open a file from server. - Die Anforderung zum Öffnen einer Datei vom Server konnte nicht validiert werden. + + Server error: PROPFIND reply is not XML formatted! + Serverantwort: PROPFIND-Antwort ist nicht im XML-Format! - - File %1 already locked. - Datei %1 bereits gesperrt. + + File %1 already locked. + Datei %1 bereits gesperrt. - - File %1 could not be locked. - Datei %1 konnte nicht gesperrt werden. + + File %1 could not be locked. + Datei %1 konnte nicht gesperrt werden. - - File %1 now locked. - Datei %1 ist jetzt gesperrt. + + File %1 now locked. + Datei %1 ist jetzt gesperrt. - - Invalid file path was provided. - Ungültiger Dateipfad wurde angegeben. + + Invalid file path was provided. + Ungültiger Dateipfad wurde angegeben. - - Invalid local file path. - Ungültiger lokaler Dateipfad. + + Invalid local file path. + Ungültiger lokaler Dateipfad. - - Invalid token received. - Ungültiges Token empfangen. + + Invalid token received. + Ungültiges Token empfangen. - - Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - Die Sperre dauert noch %1 Minuten. Sie können diese Datei auch manuell entsperren, sobald Sie mit der Bearbeitung fertig sind. + + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + Die Sperre dauert noch %1 Minuten. Sie können diese Datei auch manuell entsperren, sobald Sie mit der Bearbeitung fertig sind. - - Please try again. - Bitte erneut versuchen. + + + + + + + Please try again. + Bitte erneut versuchen. - - + + OCC::EncryptFolderJob - - Could not generate the metadata for encryption, Unlocking the folder. + + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. - Die Metadaten für die Verschlüsselung konnten nicht generiert werden. Entsperren des Ordners. + Die Metadaten für die Verschlüsselung konnten nicht generiert werden. Entsperren des Ordners. Dies kann ein Problem mit Ihren OpenSSL-Bibliotheken sein. - - + + OCC::EncryptedFolderMetadataHandler - - Error fetching encrypted folder ID. - Fehler beim Abrufen der verschlüsselten Ordner-ID. + + Error fetching encrypted folder ID. + Fehler beim Abrufen der verschlüsselten Ordner-ID. - - Error fetching metadata. - Fehler beim Abrufen der Metadaten. + + + + + + + Error fetching metadata. + Fehler beim Abrufen der Metadaten. - - Error locking folder. - Fehler beim Sperren des Ordners. + + + + Error locking folder. + Fehler beim Sperren des Ordners. - - Error parsing or decrypting metadata. - Fehler beim Lesen oder Entschlüsseln von Metadaten. + + Error parsing or decrypting metadata. + Fehler beim Lesen oder Entschlüsseln von Metadaten. - - Failed to upload metadata - Fehler beim Hochladen der Metadaten + + Failed to upload metadata + Fehler beim Hochladen der Metadaten - - + + OCC::FileDetails - - %1 day(s) ago - - - - vor %1 Tag(e) - + + %1 second(s) ago + seconds elapsed since file last modified + + + + - - %1 hour(s) ago - - - - vor %1 Stunde(n) - + + %1 minute(s) ago + minutes elapsed since file last modified + + + + - - %1 minute(s) ago - - - - vor %1 Minute(n) - + + %1 hour(s) ago + hours elapsed since file last modified + + + + - - %1 month(s) ago - - - - vor %1 Monat(en) - + + %1 day(s) ago + days elapsed since file last modified + + + + - - %1 second(s) ago - - - - vor %1 Sekunde(n) - + + %1 month(s) ago + months elapsed since file last modified + + + + - - %1 year(s) ago - - - - vor %1 Jahr(en) - + + %1 year(s) ago + years elapsed since file last modified + + + + - - Locked by %1 - Expires in %2 minute(s) - - - - Gesperrt durch %1 - Läuft in %2 Minute(n) ab - - - - + + Locked by %1 - Expires in %2 minute(s) + remaining time before lock expires + + + + + + + OCC::Flow2Auth - - Could not parse the JSON returned from the server: <br><em>%1</em> - Der vom Server zurückgegebene JSON-Code konnte nicht verarbeitet werden: <br><em>%1</em> + + + Could not parse the JSON returned from the server: <br><em>%1</em> + Der vom Server zurückgegebene JSON-Code konnte nicht verarbeitet werden: <br><em>%1</em> - - Error returned from the server: <em>%1</em> - Vom Server zurückgegebener Fehler: <em>%1</em> + + + Error returned from the server: <em>%1</em> + Vom Server zurückgegebener Fehler: <em>%1</em> - - The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - Die Polling-URL beginnt nicht mit HTTPS, obwohl die Anmelde-URL mit HTTPS beginnt. Die Anmeldung ist nicht möglich, da dies ein Sicherheitsproblem darstellen könnte. Bitte wenden Sie sich an Ihren Administrator. + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + Die Polling-URL beginnt nicht mit HTTPS, obwohl die Anmelde-URL mit HTTPS beginnt. Die Anmeldung ist nicht möglich, da dies ein Sicherheitsproblem darstellen könnte. Bitte wenden Sie sich an Ihren Administrator. - - The reply from the server did not contain all expected fields - Die Antwort des Servers enthielt nicht alle erwarteten Felder + + + The reply from the server did not contain all expected fields + Die Antwort des Servers enthielt nicht alle erwarteten Felder - - The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - Die zurückgegebene Server-URL beginnt nicht mit HTTPS, obwohl die Anmelde-URL mit HTTPS beginnt. Die Anmeldung ist nicht möglich, da dies ein Sicherheitsproblem darstellen könnte. Bitte wenden Sie sich an Ihren Administrator. + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + Die zurückgegebene Server-URL beginnt nicht mit HTTPS, obwohl die Anmelde-URL mit HTTPS beginnt. Die Anmeldung ist nicht möglich, da dies ein Sicherheitsproblem darstellen könnte. Bitte wenden Sie sich an Ihren Administrator. - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Fehler beim Zugriff auf den "Token"-Endpunkt: <br><em>%1</em> + + + There was an error accessing the "token" endpoint: <br><em>%1</em> + Fehler beim Zugriff auf den "Token"-Endpunkt: <br><em>%1</em> - - + + OCC::Flow2AuthWidget - - Link copied to clipboard. - Link in die Zwischenablage kopiert. + + Link copied to clipboard. + Link in die Zwischenablage kopiert. + + + + Open Browser + Im Browser öffnen + + + + Polling for authorization + Abruf der Autorisierung + + + + + Error + Fehler - - Open Browser - Im Browser öffnen + + Starting authorization + Starte Autorisierung - - Polling for authorization - Abruf der Autorisierung + + Copy Link + Link kopieren - - Starting authorization - Starte Autorisierung + + Switch to your browser to connect your account + Wechseln Sie zu Ihrem Browser um Ihr Konto zu verbinden - - Unable to open the Browser, please copy the link to your Browser. - Der Browser kann nicht geöffnet werden. Bitte kopieren Sie den Link in Ihren Browser. + + Unable to open the Browser, please copy the link to your Browser. + Der Browser kann nicht geöffnet werden. Bitte kopieren Sie den Link in Ihren Browser. - - Waiting for authorization - Warte auf Autorisierung + + Waiting for authorization + Warte auf Autorisierung - - + + OCC::Folder - - %1 and %n other file(s) are currently locked. - - - - - + + %1 and %n other file(s) are currently locked. + + + + - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - - - - - + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + + + - - %1 and %n other file(s) have been added. - - - - - + + %1 and %n other file(s) have been added. + + + + - - %1 and %n other file(s) have been removed. - - - - - + + %1 and %n other file(s) have been removed. + + + + + + + + %1 has been removed. + %1 names a file. + %1 wurde gelöscht. + + + + %1 has been added. + %1 names a file. + %1 wurde hinzugefügt. - - %1 and %n other file(s) have been updated. - - - - - + + %1 and %n other file(s) have been updated. + + + + - - %1 could not be synced due to an error. See the log for details. - %1 konnte aufgrund eines Fehlers nicht synchronisiert werden. Details finden Sie im Protokoll. + + %1 has been updated. + %1 names a file. + %1 wurde aktualisiert. - - %1 has a sync conflict. Please check the conflict file! - Es gab einen Konflikt bei der Synchronisierung von %1. Bitte prüfen Sie die Konfliktdatei! + + %1 has been renamed to %2. + %1 and %2 name files. + %1 wurde in %2 umbenannt. + + + + %1 could not be synced due to an error. See the log for details. + %1 konnte aufgrund eines Fehlers nicht synchronisiert werden. Details finden Sie im Protokoll. + + + + %1 has a sync conflict. Please check the conflict file! + Es gab einen Konflikt bei der Synchronisierung von %1. Bitte prüfen Sie die Konfliktdatei! - - %1 has and %n other file(s) have sync conflicts. - - - - - + + %1 has and %n other file(s) have sync conflicts. + + + + - - %1 has been added. - %1 wurde hinzugefügt. + %1 has been added. + %1 wurde hinzugefügt. - - %1 has been moved to %2 and %n other file(s) have been moved. - - - - - + + %1 has been moved to %2 and %n other file(s) have been moved. + + + + - - %1 has been moved to %2. - %1 wurde in %2 verschoben. + + %1 has been moved to %2. + %1 wurde in %2 verschoben. - - %1 has been removed. - %1 wurde gelöscht. + %1 has been removed. + %1 wurde gelöscht. - - %1 has been renamed to %2 and %n other file(s) have been renamed. - - - - - + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + + + - - %1 has been renamed to %2. - %1 wurde in %2 umbenannt. + %1 has been renamed to %2. + %1 wurde in %2 umbenannt. - - %1 has been updated. - %1 wurde aktualisiert. + %1 has been updated. + %1 wurde aktualisiert. - - %1 is currently locked. - %1 ist aktuell gesperrt. + + %1 is currently locked. + %1 ist aktuell gesperrt. - - %1 is not readable. - %1 ist nicht lesbar. + + %1 is not readable. + %1 ist nicht lesbar. - - %1 should be a folder but is not. - %1 sollte ein Ordner sein, ist es aber nicht. + + %1 should be a folder but is not. + %1 sollte ein Ordner sein, ist es aber nicht. - - A folder from an external storage has been added. - Ein Ordner von einem externen Speicher wurde hinzugefügt. + A folder from an external storage has been added. + Ein Ordner von einem externen Speicher wurde hinzugefügt. - - A folder has surpassed the set folder size limit of %1MB: %2. + + A folder has surpassed the set folder size limit of %1MB: %2. %3 - Ein Ordner hat die festgelegte Ordnergrößenbeschränkung von %1 MB überschritten: %2. + Ein Ordner hat die festgelegte Ordnergrößenbeschränkung von %1 MB überschritten: %2. %3 - - A large number of files in the server have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. - Eine große Anzahl von Dateien wurde auf dem Server gelöscht. + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + Eine große Anzahl von Dateien wurde auf dem Server gelöscht. Bitte bestätigen Sie, ob Sie mit diesen Löschungen fortfahren möchten. -Alternativ können Sie alle gelöschten Dateien wiederherstellen, indem Sie sie aus dem Ordner "%1" auf den Server hochladen. +Alternativ können Sie alle gelöschten Dateien wiederherstellen, indem Sie sie aus dem Ordner "%1" auf den Server hochladen. - - A large number of files in your local '%1' folder have been deleted. -Please confirm if you'd like to proceed with these deletions. + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. Alternatively, you can restore all deleted files by downloading them from the server. - Eine große Anzahl von Dateien in Ihrem lokalen Ordner "%1" wurde gelöscht. + Eine große Anzahl von Dateien in Ihrem lokalen Ordner "%1" wurde gelöscht. Bitte bestätigen Sie, ob Sie mit diesen Löschungen fortfahren möchten. Alternativ können Sie alle gelöschten Dateien wiederherstellen, indem Sie sie vom Server herunterladen. - - A new folder larger than %1 MB has been added: %2. - Ein neuer Ordner größer als %1 MB wurde hinzugefügt: %2. + A new folder larger than %1 MB has been added: %2. + Ein neuer Ordner größer als %1 MB wurde hinzugefügt: %2. - All files in the local folder "%1" were deleted. + All files in the local folder "%1" were deleted. If you restore the files, they will be downloaded again from the server. - Alle Dateien im lokalen Ordner "%1" wurden gelöscht. + Alle Dateien im lokalen Ordner "%1" wurden gelöscht. Wenn Sie die Dateien wiederherstellen, werden sie erneut vom Server heruntergeladen. - All files in the server folder "%1" were deleted. + All files in the server folder "%1" were deleted. If you restore the files, they will be uploaded again to the server. - Alle Dateien im Serverordner "%1" wurden gelöscht. + Alle Dateien im Serverordner "%1" wurden gelöscht. Wenn Sie die Dateien wiederherstellen, werden sie erneut auf den Server hochgeladen. - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Alle Dateien im Synchronisationsordner "%1" wurden auf dem Server gelöscht. + Alle Dateien im Synchronisationsordner "%1" wurden auf dem Server gelöscht. Diese Löschungen werden mit Ihrem lokalen Synchronisationsordner synchronisiert, so dass diese Dateien nicht mehr verfügbar sind, es sei denn, Sie haben das Recht, sie wiederherzustellen. Wenn Sie sich entscheiden, die Dateien wiederherzustellen, werden sie erneut mit dem Server synchronisiert, sofern Sie dazu berechtigt sind. Wenn Sie sich entscheiden, die Dateien zu löschen, sind sie für Sie nicht mehr verfügbar, es sei denn, Sie sind der Eigentümer. - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Alle Dateien im Synchronisationsordner "%1" wurden auf dem Server gelöscht. + Alle Dateien im Synchronisationsordner "%1" wurden auf dem Server gelöscht. Diese Löschungen werden mit Ihrem lokalen Synchronisationsordner synchronisiert, so dass diese Dateien nicht mehr verfügbar sind, es sei denn, Sie haben das Recht, sie wiederherzustellen. Wenn Sie sich entscheiden, die Dateien wiederherzustellen, werden sie erneut mit dem Server synchronisiert, sofern Sie dazu berechtigt sind. Wenn Sie sich entscheiden, die Dateien zu löschen, sind sie für Sie nicht mehr verfügbar, es sei denn, Sie sind der Eigentümer. - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - Alle Dateien im lokalen Synchronisierungs-Ordner "%1" wurden gelöscht. Diese Löschung wird mit Ihrem Server synchronisiert, wodurch die Dateien nicht mehr verfügbar sind, es sei denn, diese werden wiederhergestellt. + Alle Dateien im lokalen Synchronisierungs-Ordner "%1" wurden gelöscht. Diese Löschung wird mit Ihrem Server synchronisiert, wodurch die Dateien nicht mehr verfügbar sind, es sei denn, diese werden wiederhergestellt. Sind Sie sich sicher, dass Sie diese Aktion mit Ihrem Server synchronisieren möchten? Falls dies ein Missgeschick war und Sie sich zum Behalten der Dateien entscheiden, werden diese wieder vom Server synchronisiert. - - Changes in synchronized folders could not be tracked reliably. + + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). %1 - Änderungen in synchronisierten Ordnern konnten nicht zuverlässig nachverfolgt werden. + Änderungen in synchronisierten Ordnern konnten nicht zuverlässig nachverfolgt werden. Dies bedeutet, dass der Synchronisierungs-Client lokale Änderungen möglicherweise nicht sofort hochlädt, sondern nur nach lokalen Änderungen sucht und diese gelegentlich hochlädt (standardmäßig alle zwei Stunden). %1 - - Could not read system exclude file - Systemeigene Ausschlussdatei kann nicht gelesen werden + + Could not read system exclude file + Systemeigene Ausschlussdatei kann nicht gelesen werden - Keep files - Dateien behalten + Keep files + Dateien behalten - - Keep syncing - Weiterhin synchronisieren + + Keep syncing + Weiterhin synchronisieren - - Local folder %1 does not exist. - Lokaler Ordner %1 existiert nicht. + + Local folder %1 does not exist. + Lokaler Ordner %1 existiert nicht. - - Please go in the settings to select it if you wish to download it. - Bitte wechseln Sie zu den Einstellungen, falls Sie den Ordner herunterladen möchten. + + Please go in the settings to select it if you wish to download it. + Bitte wechseln Sie zu den Einstellungen, falls Sie den Ordner herunterladen möchten. - Proceed to remove all files - Entfernen Sie alle Dateien + Proceed to remove all files + Entfernen Sie alle Dateien - - Proceed with Deletion - Mit der Löschung fortfahren + + Proceed with Deletion + Mit der Löschung fortfahren - Remove all files - Alle Dateien entfernen + Remove all files + Alle Dateien entfernen - - Remove all files? - Alle Dateien entfernen? + + Remove all files? + Alle Dateien entfernen? - Restore files - Dateien wiederherstellen + Restore files + Dateien wiederherstellen - - Restore Files from Server - Dateien vom Server wiederherstellen + + Restore Files from Server + Dateien vom Server wiederherstellen - - Restore Files to Server - Dateien auf dem Server wiederherstellen + + Restore Files to Server + Dateien auf dem Server wiederherstellen - - Stop syncing - Synchronisation stoppen + + Stop syncing + Synchronisation stoppen - - Sync Activity - Synchronisierungsaktivität + + Sync Activity + Synchronisierungsaktivität - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. - Die Datei % 1 wurde erstellt, jedoch bereits zuvor von der Synchronisierung ausgeschlossen. Sie wird nicht synchronisiert werden. + + A new folder larger than %1 MB has been added: %2. + + - - The folder %1 has surpassed the set folder size limit of %2MB. - Der Ordner %1 hat die festgelegte Größenbeschränkung von %2 MB überschritten. + + A folder from an external storage has been added. + + - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. - Der Ordner %1 wurde erstellt, wurde jedoch zuvor von der Synchronisierung ausgeschlossen. Die darin enthaltenen Daten werden nicht synchronisiert. + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + Die Datei % 1 wurde erstellt, jedoch bereits zuvor von der Synchronisierung ausgeschlossen. Sie wird nicht synchronisiert werden. - - Virtual file download failed with code "%1", status "%2" and error message "%3" - Der Download der virtuellen Datei ist mit dem Code "%1", dem Status "%2" und der Fehlermeldung "%3" fehlgeschlagen. + + The folder %1 has surpassed the set folder size limit of %2MB. + Der Ordner %1 hat die festgelegte Größenbeschränkung von %2 MB überschritten. - - Would you like to stop syncing this folder? - Möchten Sie die Synchronisierung dieses Ordners stoppen? + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + Der Ordner %1 wurde erstellt, wurde jedoch zuvor von der Synchronisierung ausgeschlossen. Die darin enthaltenen Daten werden nicht synchronisiert. - - + + + Virtual file download failed with code "%1", status "%2" and error message "%3" + Der Download der virtuellen Datei ist mit dem Code "%1", dem Status "%2" und der Fehlermeldung "%3" fehlgeschlagen. + + + + Would you like to stop syncing this folder? + Möchten Sie die Synchronisierung dieses Ordners stoppen? + + + OCC::FolderCreationDialog - - %1 Create new folder - %1 Neuen Ordner erstellen + + %1 Create new folder + %1 Neuen Ordner erstellen + + + + Could not create a folder! Check your write permissions. + Ordner konnte nicht erstellt werden! Prüfen Sie die Schreibberechtigungen. - - Could not create a folder! Check your write permissions. - Ordner konnte nicht erstellt werden! Prüfen Sie die Schreibberechtigungen. + + Error + Fehler - - Enter folder name - Ordnernamen eingeben + + Create new folder + Neuen Ordner erstellen - - Folder already exists - Ordner existiert bereits + + Enter folder name + Ordnernamen eingeben - - + + + Folder already exists + Ordner existiert bereits + + + OCC::FolderMan - - (backup %1) - (Sicherung %1) + (backup %1) + (Sicherung %1) + + + (backup) + (Sicherung) - - (backup) - (Sicherung) + + %1 (Sync is paused) + %1 (Synchronisierung ist pausiert) - - %1 (Sync is paused) - %1 (Synchronisierung ist pausiert) + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + Ein altes Synchronisierungsprotokoll "%1" wurde gefunden, konnte jedoch nicht entfernt werden. Bitte stellen Sie sicher, dass keine Anwendung es verwendet. - - An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. - Ein altes Synchronisierungsprotokoll "%1" wurde gefunden, konnte jedoch nicht entfernt werden. Bitte stellen Sie sicher, dass keine Anwendung es verwendet. + + Could not reset folder state + Konnte Ordner-Zustand nicht zurücksetzen - - Could not reset folder state - Konnte Ordner-Zustand nicht zurücksetzen + + (backup) + - - Last sync was successful. - Die letzte Synchronisierung war erfolgreich. + + (backup %1) + - - No valid folder selected! - Kein gültiger Ordner gewählt! + + Last sync was successful. + Die letzte Synchronisierung war erfolgreich. - - Preparing for sync. - Synchronisierung wird vorbereitet. + + No valid folder selected! + Kein gültiger Ordner gewählt! - - Setup error. - Einrichtungsfehler. + + Preparing for sync. + Synchronisierung wird vorbereitet. - - Sync finished with unresolved conflicts. - Synchronisierung mit ungelösten Konflikten beendet. + + Setup error. + Einrichtungsfehler. - - Sync is paused. - Synchronisierung ist pausiert. + + Sync finished with unresolved conflicts. + Synchronisierung mit ungelösten Konflikten beendet. - - Sync is running. - Synchronisierung läuft. + + Sync is paused. + Synchronisierung ist pausiert. - - Sync request was cancelled. - Synchronisierungsanfrage wurde abgebrochen. + + Sync is running. + Synchronisierung läuft. - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! - Der lokale Ordner %1 liegt innerhalb eines synchronisierten Ordners. Bitte wählen Sie einen anderen aus! + + Sync request was cancelled. + Synchronisierungsanfrage wurde abgebrochen. - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! - Der lokale Ordner %1 liegt in einem Ordner, der bereits synchronisiert wird. Bitte wählen Sie einen anderen aus! + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + Der lokale Ordner %1 liegt innerhalb eines synchronisierten Ordners. Bitte wählen Sie einen anderen aus! - - The selected path does not exist! - Der gewählte Pfad existiert nicht! + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + Der lokale Ordner %1 liegt in einem Ordner, der bereits synchronisiert wird. Bitte wählen Sie einen anderen aus! - - The selected path is not a folder! - Der gewählte Pfad ist kein Ordner! + + The selected path does not exist! + Der gewählte Pfad existiert nicht! - - There is already a sync from the server to this local folder. Please pick another local folder! - Es existiert bereits eine Synchronisierung vom Server zu diesem lokalen Ordner. Bitte wählen Sie einen anderen lokalen Ordner! + + The selected path is not a folder! + Der gewählte Pfad ist kein Ordner! - - Undefined state. - Undefinierter Zustand. + + There is already a sync from the server to this local folder. Please pick another local folder! + Es existiert bereits eine Synchronisierung vom Server zu diesem lokalen Ordner. Bitte wählen Sie einen anderen lokalen Ordner! - - Waiting to start syncing. - Wartet auf Beginn der Synchronisierung. + + Undefined state. + Undefinierter Zustand. - - You have no permission to write to the selected folder! - Sie haben keine Schreibberechtigung für den ausgewählten Ordner! + + Waiting to start syncing. + Wartet auf Beginn der Synchronisierung. - - + + + + You have no permission to write to the selected folder! + Sie haben keine Schreibberechtigung für den ausgewählten Ordner! + + + OCC::FolderStatusDelegate - - Add live backup - Ordner-Synchronisierung hinzufügen + Add live backup + Ordner-Synchronisierung hinzufügen + + + + Add Folder Sync + Ordner Sync hinzufügen - - File - Datei + + File + Datei - - Synchronize any other local folder with your %1 - Synchronisieren Sie jeden anderen lokalen Ordner mit Ihrem %1 + + Synchronize any other local folder with your %1 + Synchronisieren Sie jeden anderen lokalen Ordner mit Ihrem %1 - - + + OCC::FolderStatusModel - - , - , + , + , + + + + + %1 (%2) + %1 (%2) - - %1 (%2) - %1 (%2) + + %1 %2 + Example text: "uploading foobar.png" + %1 %2 - - %1 %2 - %1 %2 + + %1 %2 (%3 of %4) + Example text: "uploading foobar.png (2MB of 2MB)" + %1 %2 (%3 von %4) - - %1 %2 (%3 of %4) - %1 %2 (%3 von %4) + + %1 of %2, file %3 of %4 + Example text: "12 MB of 345 MB, file 6 of 7" + %1 of %2, Datei %3 von %4 - - %1 of %2, file %3 of %4 - %1 of %2, Datei %3 von %4 + + %5 left, %1 of %2, file %3 of %4 + %5 übrig, %1 von %2, Datei %3 von %4 - - %5 left, %1 of %2, file %3 of %4 - %5 übrig, %1 von %2, Datei %3 von %4 + + ↑ %1/s + ↑ %1/s - - ↑ %1/s - ↑ %1/s + + ↓ %1/s + ↓ %1/s - - ↓ %1/s - ↓ %1/s + + A few seconds left, %1 of %2, file %3 of %4 + Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" + Noch ein paar Sekunden, %1 von %2, Datei %3 von %4 - - A few seconds left, %1 of %2, file %3 of %4 - Noch ein paar Sekunden, %1 von %2, Datei %3 von %4 + + Checking for changes in local "%1" + Nach Änderungen in lokalem "%1" suchen - - Checking for changes in local "%1" - Nach Änderungen in lokalem "%1" suchen + + Checking for changes in remote "%1" + Nach Änderungen in entfernten "%1" suchen - - Checking for changes in remote "%1" - Nach Änderungen in entfernten "%1" suchen + + Click this button to add a folder to synchronize. + Wählen Sie diese Schaltfläche, um einen zu synchronisierenden Ordner hinzuzufügen. - - Click this button to add a folder to synchronize. - Wählen Sie diese Schaltfläche, um einen zu synchronisierenden Ordner hinzuzufügen. + + Could not decrypt! + Konnte nicht entschlüsseln! - - Could not decrypt! - Konnte nicht entschlüsseln! + + download %1/s + Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) + Download %1/s - - download %1/s - Download %1/s + + Error while loading the list of folders from the server. + Fehler beim Empfang der Ordnerliste vom Server. - - Error while loading the list of folders from the server. - Fehler beim Empfang der Ordnerliste vom Server. + + Fetching folder list from server … + Rufe Ordnerliste vom Server ab … - - Fetching folder list from server … - Rufe Ordnerliste vom Server ab … + + Signed out + Abgemeldet - - file %1 of %2 - Datei %1 von %2 + + Syncing %1 + Example text: "Syncing 'foo.txt', 'bar.txt'" + Synchronisiere %1 - - Preparing to sync … - Synchronisierung wird vorbereitet … + + + , + - - Reconciling changes - Änderungen zusammenführen + + file %1 of %2 + Datei %1 von %2 - - Synchronizing VirtualFiles with local folder - Synchronisiere VirtualFiles mit lokalem Ordner + + Preparing to sync … + Synchronisierung wird vorbereitet … - - Synchronizing with local folder - Synchronisiere mit lokalem Ordner + + Reconciling changes + Änderungen zusammenführen - - There are unresolved conflicts. Click for details. - Es existieren ungelöste Konflikte. Für Details klicken. + + Synchronizing VirtualFiles with local folder + Synchronisiere VirtualFiles mit lokalem Ordner - - upload %1/s - Upload %1/s + + Synchronizing with local folder + Synchronisiere mit lokalem Ordner - - Virtual file support is enabled. - Unterstützung für virtuelle Dateien ist aktiviert. + + There are unresolved conflicts. Click for details. + Es existieren ungelöste Konflikte. Für Details klicken. - - Waiting … - Warte … + + upload %1/s + Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) + Upload %1/s + + + + Virtual file support is enabled. + Unterstützung für virtuelle Dateien ist aktiviert. + + + + Waiting … + Warte … - - Waiting for %n other folder(s) … - - - - - + + Waiting for %n other folder(s) … + + + + - - You need to be connected to add a folder - Sie müssen verbunden sein, um einen Ordner hinzuzufügen + + You need to be connected to add a folder + Sie müssen verbunden sein, um einen Ordner hinzuzufügen - - + + OCC::FolderWatcher - - The watcher did not receive a test notification. - Der Beobachter hat keine Testbenachrichtigung erhalten. + + The watcher did not receive a test notification. + Der Beobachter hat keine Testbenachrichtigung erhalten. - - + + OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. - Dieses Problem tritt zumeist auf, wenn die Inotify-Zähler voll sind. Details finden Sie im FAQ. + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + Dieses Problem tritt zumeist auf, wenn die Inotify-Zähler voll sind. Details finden Sie im FAQ. - - + + OCC::FolderWizard - Add Folder Sync Connection - Ordner-Synchronisierung hinzufügen + + Add Folder Sync Connection + Ordner-Synchronisierung hinzufügen - - Add Sync Connection - Synchronisierung hinzufügen + + Add Sync Connection + Synchronisierung hinzufügen - - + + OCC::FolderWizardLocalPath - - Choose - Wählen Sie + + Choose + Wählen Sie + + + + Click to select a local folder to sync. + Hier klicken um einen lokalen Ordner zum Synchronisieren auszuwählen. + + + + Enter the path to the local folder. + Pfad zum lokalen Ordner eingeben + + + + Select the source folder + Quellordner auswählen - - Click to select a local folder to sync. - Hier klicken um einen lokalen Ordner zum Synchronisieren auszuwählen. + + Add Folder Sync + Ordner Sync hinzufügen - - Enter the path to the local folder. - Pfad zum lokalen Ordner eingeben + + Step 1 of 3: Select local folder + Schritt 1 von 3: Lokalen Ordner auswählen - - Select the source folder - Quellordner auswählen + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Wählen Sie einen Ordner auf Ihrer Festplatte, der dauerhaft mit Ihrem %1 verbunden sein soll. Alle Dateien und Unterordner werden automatisch hochgeladen und synchronisiert. - - + + OCC::FolderWizardRemotePath - - Authentication failed accessing %1 - Beim Zugriff auf %1 ist die Authentifizierung fehlgeschlagen + + Authentication failed accessing %1 + Beim Zugriff auf %1 ist die Authentifizierung fehlgeschlagen + + + + Choose this to sync the entire account + Wählen Sie dies, um das gesamte Konto zu synchronisieren + + + + Create Remote Folder + Entfernten Ordner erstellen - - Choose this to sync the entire account - Wählen Sie dies, um das gesamte Konto zu synchronisieren + + Enter the name of the new folder to be created below "%1": + Geben Sie den Namen des neuen, unter "%1" zu erstellenden Ordners ein: - - Create Remote Folder - Entfernten Ordner erstellen + + Failed to create the folder on %1. Please check manually. + Die Erstellung des Ordners auf %1 ist fehlgeschlagen. Bitte prüfen Sie dies manuell. - - Enter the name of the new folder to be created below "%1": - Geben Sie den Namen des neuen, unter "%1" zu erstellenden Ordners ein: + + Failed to list a folder. Error: %1 + Konnte Ordner nicht listen. Fehler: %1 - - Failed to create the folder on %1. Please check manually. - Die Erstellung des Ordners auf %1 ist fehlgeschlagen. Bitte prüfen Sie dies manuell. + + Add Folder Sync + Ordner Sync hinzufügen - - Failed to list a folder. Error: %1 - Konnte Ordner nicht listen. Fehler: %1 + + Step 2 of 3: Directory in your %1 + Schritt 2 von 3: Verzeichnis in Ihrem %1 - - Folder was successfully created on %1. - Ordner auf %1 erstellt. + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + Bitte wählen oder erstellen Sie nun einen Zielordner in Ihrem %1, in den der Inhalt hochgeladen und synchronisiert werden soll. - - This folder is already being synced. - Dieser Ordner wird bereits synchronisiert. + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Beide Ordner sind dauerhaft miteinander verknüpft und die jeweiligen Inhalte werden automatisch synchronisiert und aktualisiert. - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - Sie synchronisieren bereits <i>%1</i>, der ein übergeordneter Ordner von <i>%2</i> ist. + + Refresh + Aktualisieren - - You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - Sie synchronisieren bereits <i>%1</i>, der ein Unterordner von <i>%2</i> ist. + + Create folder + Ordner erstellen - - + + + Folder was successfully created on %1. + Ordner auf %1 erstellt. + + + + This folder is already being synced. + Dieser Ordner wird bereits synchronisiert. + + + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + Sie synchronisieren bereits <i>%1</i>, der ein übergeordneter Ordner von <i>%2</i> ist. + + + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + Sie synchronisieren bereits <i>%1</i>, der ein Unterordner von <i>%2</i> ist. + + + OCC::FolderWizardSelectiveSync - - Use virtual files instead of downloading content immediately %1 - Virtuelle Dateien verwenden, anstatt den Inhalt sofort herunterzuladen %1 + + + Use virtual files instead of downloading content immediately %1 + Virtuelle Dateien verwenden, anstatt den Inhalt sofort herunterzuladen %1 + + + + + (experimental) + (experimentell) + + + + Add Folder Sync + Ordner Sync hinzufügen + + + + Step 3 of 3: Selektive Synchronisation + Schritt 3 von 3: Selektive Synchronisierung - - Virtual files are not available for the selected folder - Virtuelle Dateien sind für den ausgewählten Ordner nicht verfügbar + + Virtual files are not available for the selected folder + Virtuelle Dateien sind für den ausgewählten Ordner nicht verfügbar - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Virtuelle Dateien werden für die Wurzel von Windows-Partitionen als lokaler Ordner nicht unterstützt. Bitte wählen Sie einen gültigen Unterordner unter dem Laufwerksbuchstaben. + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Virtuelle Dateien werden für die Wurzel von Windows-Partitionen als lokaler Ordner nicht unterstützt. Bitte wählen Sie einen gültigen Unterordner unter dem Laufwerksbuchstaben. - - + + OCC::FormatWarningsWizardPage - - %1 - %1 + + %1 + %1 - <b>Warning:</b> - <b>Warnung:</b> + <b>Warning:</b> + <b>Warnung:</b> - <b>Warning:</b> %1 - <b>Warnung:</b> %1 + <b>Warning:</b> %1 + <b>Warnung:</b> %1 - - + + OCC::GETFileJob - - Connection Timeout - Zeitüberschreitung der Verbindung + + Connection Timeout + Zeitüberschreitung der Verbindung - - No E-Tag received from server, check Proxy/Gateway - Kein E-Tag vom Server empfangen, bitte Proxy/Gateway überprüfen + + No E-Tag received from server, check Proxy/Gateway + Kein E-Tag vom Server empfangen, bitte Proxy/Gateway überprüfen - - Server returned wrong content-range - Server hat falschen Bereich für den Inhalt zurückgegeben + + Server returned wrong content-range + Server hat falschen Bereich für den Inhalt zurückgegeben - - We received a different E-Tag for resuming. Retrying next time. - Es wurde ein unterschiedliches E-Tag zum Fortfahren empfangen. Bitte beim nächsten mal nochmal versuchen. + + We received a different E-Tag for resuming. Retrying next time. + Es wurde ein unterschiedliches E-Tag zum Fortfahren empfangen. Bitte beim nächsten mal nochmal versuchen. - - We received an unexpected download Content-Length. - Wir haben eine unerwartete Download-Content-Länge erhalten. + + We received an unexpected download Content-Length. + Wir haben eine unerwartete Download-Content-Länge erhalten. - - + + OCC::GeneralSettings - - &Analysis data collection for needs-based design - &Analyse der Datenerhebung für bedarfsgerechte Gestaltung + &Analysis data collection for needs-based design + &Analyse der Datenerhebung für bedarfsgerechte Gestaltung + + + + &Automatically check for updates + &Automatisch auf Aktualisierungen prüfen + + + &Channel + &Kanal + + + &Check for Update now + &Jetzt auf Aktualisierungen prüfen - - &Automatically check for updates - &Automatisch auf Aktualisierungen prüfen + + &Launch on system startup + Beim &Systemstart starten - &Channel - &Kanal + + Advanced + Erweitert - &Check for Update now - &Jetzt auf Aktualisierungen prüfen + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + - - &Launch on system startup - Beim &Systemstart starten + + &Analysis data collection for needs-based design + - - &Restart && Update - &Neustarten && aktualisieren + + &Restart && Update + &Neustarten && aktualisieren - About - Über + About + Über - - Ask for confirmation before + + Ask for confirmation before synchronizing new folders larger than - Fragen Sie nach einer Bestätigung, bevor Sie neue Ordner synchronisieren, die größer sind als + Fragen Sie nach einer Bestätigung, bevor Sie neue Ordner synchronisieren, die größer sind als - - Ask for confirmation before synchronizing + + Ask for confirmation before synchronizing external storages - Vor der Synchronisierung externer Speicher nach einer Bestätigung fragen + Vor der Synchronisierung externer Speicher nach einer Bestätigung fragen - Ask for confirmation before synchronizing external storages - Bestätigung erfragen, bevor externe Speicher synchronisiert werden + Ask for confirmation before synchronizing external storages + Bestätigung erfragen, bevor externe Speicher synchronisiert werden - Ask for confirmation before synchronizing folders larger than - Bestätigung erfragen, bevor Ordner synchronisiert werden. Grenze: + Ask for confirmation before synchronizing folders larger than + Bestätigung erfragen, bevor Ordner synchronisiert werden. Grenze: - Ask for confirmation before synchronizing new folders larger than - Um eine Bestätigung bitten, bevor Sie neue Ordner synchronisieren, die größer sind als + Ask for confirmation before synchronizing new folders larger than + Um eine Bestätigung bitten, bevor Sie neue Ordner synchronisieren, die größer sind als - - Automatically disable synchronisation of + + Automatically disable synchronisation of folders that overcome limit - Automatisches Deaktivieren der Synchronisierung von Ordnern, die das Limit überschreiten + Automatisches Deaktivieren der Synchronisierung von Ordnern, die das Limit überschreiten - Automatically disable synchronisation of folders that overcome limit - Automatisch die Synchronisierung von Ordnern beenden, die das Limit überschreiten + Automatically disable synchronisation of folders that overcome limit + Automatisch die Synchronisierung von Ordnern beenden, die das Limit überschreiten - - beta - Beta + + + beta + Beta - - Change update channel - Update-Kanal ändern + + Change update channel + Update-Kanal ändern - - Change update channel? - Update-Kanal ändern? + + Change update channel? + Update-Kanal ändern? - - Check Now - Jetzt prüfen + + Check Now + Jetzt prüfen - - Create Debug Archive - Debug-Archiv erstellen + + + Create Debug Archive + Debug-Archiv erstellen - - Data Protection - Datenschutzbestimmungen + + Data Protection + Datenschutzbestimmungen - - Debug Archive Created - Debug-Archiv erstellt + + Debug Archive Created + Debug-Archiv erstellt - - Debug archive is created at %1 - Debug-Archiv erstellt in %1 + + Debug archive is created at %1 + Debug-Archiv erstellt in %1 - - Desktop client x.x.x - Desktop-Client x.x.x + + Desktop client x.x.x + Desktop-Client x.x.x - - Edit &Ignored Files - I&gnorierte Dateien bearbeiten + + Edit &Ignored Files + I&gnorierte Dateien bearbeiten - - For System Tray - Für das Systembenachrichtungsfeld + + For System Tray + Für das Systembenachrichtungsfeld - - General Settings - Allgemeine Einstellungen + + General Settings + Allgemeine Einstellungen - Info - Info + Info + Info - - Legal Notice - Impressum + + Legal Notice + Impressum - MB - MB + MB + MB - - More Information - Mehr Informationen + + More Information + Mehr Informationen - - Move removed files to trash - Gelöschte Dateien in den Papierkorb verschieben + + Move removed files to trash + Gelöschte Dateien in den Papierkorb verschieben - - Notify when synchronised folders grow + + Notify when synchronised folders grow larger than specified limit - Benachrichtigung, wenn synchronisierte Ordner größer als die angegebene Grenze werden. + Benachrichtigung, wenn synchronisierte Ordner größer als die angegebene Grenze werden. - Notify when synchronised folders grow larger than specified limit - Benachrichtigen, wenn synchronisierte Ordner größer werden als die angegebene Grenze + Notify when synchronised folders grow larger than specified limit + Benachrichtigen, wenn synchronisierte Ordner größer werden als die angegebene Grenze - - Open Source Software - Open-Source-Software + + Open Source Software + Open-Source-Software - - Privacy Policy - Datenschutzerklärung + + Privacy Policy + Datenschutzerklärung - - S&how crash reporter - &Crash-Reporter anzeigen + + S&how crash reporter + &Crash-Reporter anzeigen - - Server notifications that require attention. - Server-Benachrichtigungen, die Aufmerksamkeit erfordern. + + Server notifications that require attention. + Server-Benachrichtigungen, die Aufmerksamkeit erfordern. - - Show call notification dialogs. - Dialog zu Anrufbenachrichtigungen anzeigen + + Show call notification dialogs. + Dialog zu Anrufbenachrichtigungen anzeigen - - Show call notifications - Anrufbenachrichtigungen anzeigen + + Show call notifications + Anrufbenachrichtigungen anzeigen - - Show server &notifications - Server-&Benachrichtigungen anzeigen + + Show server &notifications + Server-&Benachrichtigungen anzeigen - - Show sync folders in &Explorer's navigation + + Show sync folders in &Explorer's navigation pane - Sync-Ordner im Navigationsbereich von &Explorer anzeigen + Sync-Ordner im Navigationsbereich von &Explorer anzeigen - Show sync folders in &Explorer's Navigation Pane - Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen + Show sync folders in &Explorer's Navigation Pane + Synchronisierungsordner im Navigationsbereich des &Explorers anzeigen - - stable - Stabil + + + stable + Stabil - - The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. - Der Update-Kanal bestimmt, welche Client-Updates zur Installation angeboten werden. Der "stabile" Kanal enthält nur Upgrades, die als zuverlässig gelten, während die Versionen im "Beta" -Kanal unter Umständen neuere Funktionen und Bugfixes enthalten, die jedoch noch nicht gründlich getestet wurden. + Der Update-Kanal bestimmt, welche Client-Updates zur Installation angeboten werden. Der "stabile" Kanal enthält nur Upgrades, die als zuverlässig gelten, während die Versionen im "Beta" -Kanal unter Umständen neuere Funktionen und Bugfixes enthalten, die jedoch noch nicht gründlich getestet wurden. Beachten Sie bitte, dass hierdurch nur ausgewählt wird, aus welchem Pool Upgrades heruntergeladen werden und dass Downgrades nicht möglich sind. Die Rückkehr vom Beta- zum stabilen Kanal kann daher zumeist nicht sofort erfolgen, sondern es muss auf eine neue stabile Version gewartet werden, die neuer als die aktuell installierte Beta ist. - - Update channel - Update-Kanal + + Update channel + Update-Kanal - - Updates - Aktualisierungen + + Updates + Aktualisierungen - - Usage Documentation - Nutzungsdokumentation + + Usage Documentation + Nutzungsdokumentation - - Use &monochrome icons - &Monochrome Symbole verwenden + + Use &monochrome icons + &Monochrome Symbole verwenden - - You cannot disable autostart because system-wide autostart is enabled. - Sie können den Autostart nicht deaktivieren, da der systemweite Autostart aktiviert ist. + + You cannot disable autostart because system-wide autostart is enabled. + Sie können den Autostart nicht deaktivieren, da der systemweite Autostart aktiviert ist. - - Zip Archives - Zip-Archive + + Cancel + Abbrechen - - + + + Zip Archives + Zip-Archive + + + OCC::GetOrCreatePublicLinkShare - - Could not retrieve or create the public link share. Error: + + Could not retrieve or create the public link share. Error: %1 - Der Link für das öffentliche Teilen konnte nicht erstellt oder empfangen werden. Fehler: + Der Link für das öffentliche Teilen konnte nicht erstellt oder empfangen werden. Fehler: %1 - - Password for share required - Passwort für die Freigabe erforderlich + + Password for share required + Passwort für die Freigabe erforderlich - - Please enter a password for your link share: - Bitte Passwort für die Link-Freigabe eingeben: + + Please enter a password for your link share: + Bitte Passwort für die Link-Freigabe eingeben: - - Sharing error - Fehler beim Teilen + + Sharing error + Fehler beim Teilen - - + + OCC::HttpCredentialsGui - - <a href="%1">Click here</a> to request an app password from the web interface. - <a href="%1">Hier klicken</a>, um von der Web-Oberfläche ein App-Passwort zu erhalten. + + <a href="%1">Click here</a> to request an app password from the web interface. + <a href="%1">Hier klicken</a>, um von der Web-Oberfläche ein App-Passwort zu erhalten. - - Enter Password - Passwort eingeben + + Enter Password + Passwort eingeben - - Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - Bitte %1 Passwort:<br><br>Benutzername: %2<br>Konto: %3<br>eingeben + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + Bitte %1 Passwort:<br><br>Benutzername: %2<br>Konto: %3<br>eingeben - - Reading from keychain failed with error: "%1" - Lesen vom Schlüsselbund fehlgeschlagen mit Fehler: "%1" + + Reading from keychain failed with error: "%1" + Lesen vom Schlüsselbund fehlgeschlagen mit Fehler: "%1" - - + + OCC::IgnoreListEditor - - Files Ignored by Patterns - Nach Muster ignorierte Dateien + + Files Ignored by Patterns + Nach Muster ignorierte Dateien - - Global Ignore Settings - Globale Ignorier-Einstellungen + + Global Ignore Settings + Globale Ignorier-Einstellungen - - Ignored Files Editor - Editor für ignorierte Dateien + + Ignored Files Editor + Editor für ignorierte Dateien - - Sync hidden files - Synchronisiere versteckte Dateien + + Sync hidden files + Synchronisiere versteckte Dateien - - This entry is provided by the system at "%1" and cannot be modified in this view. - Dieser Eintrag wird vom System auf "%1" bereitgestellt und kann in dieser Ansicht nicht geändert werden. + + This entry is provided by the system at "%1" and cannot be modified in this view. + Dieser Eintrag wird vom System auf "%1" bereitgestellt und kann in dieser Ansicht nicht geändert werden. - - + + OCC::IgnoreListTableWidget - - Add - Hinzufügen + + Add + Hinzufügen - Add a new ignore pattern: - Neues Ignoriermuster hinzufügen + Add a new ignore pattern: + Neues Ignoriermuster hinzufügen - Add Ignore Pattern - Ignoriermuster hinzufügen + Add Ignore Pattern + Ignoriermuster hinzufügen - - Add New Ignore Pattern - Neues Ignorieren-Muster hinzufügen + + Add New Ignore Pattern + Neues Ignorieren-Muster hinzufügen - - Allow Deletion - Löschen erlauben + + Allow Deletion + Löschen erlauben - - Cannot write changes to "%1". - Konnte Änderungen nicht in "%1" schreiben. + + Cannot write changes to "%1". + Konnte Änderungen nicht in "%1" schreiben. - - Could not open file - Datei konnte nicht geöffnet werden + + Could not open file + Datei konnte nicht geöffnet werden - Files or folders matching a pattern will not be synchronized. + Files or folders matching a pattern will not be synchronized. Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Dateien oder Ordner, die diesem Muster entsprechen, werden nicht synchronisiert. + Dateien oder Ordner, die diesem Muster entsprechen, werden nicht synchronisiert. Objekte, bei denen Löschen erlaubt ist, werden gelöscht, wenn diese das Löschen eines Ordners verhindern würden. Dies ist für Metadaten nützlich. - - Files or folders that match this pattern will not be synchronized. + + Files or folders that match this pattern will not be synchronized. Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - Dateien oder Ordner, die diesem Muster entsprechen, werden nicht synchronisiert. + Dateien oder Ordner, die diesem Muster entsprechen, werden nicht synchronisiert. Objekte, die gelöscht werden dürfen, werden gelöscht, wenn sie das Löschen eines Ordners verhindern würden. Dies ist nützlich für Metadaten. - - Ignore Pattern - Muster ignorieren + + Ignore Pattern + Muster ignorieren - - Pattern - Muster + + Pattern + Muster - - Remove - Entfernen + + Remove + Entfernen - - Remove all - Alle entfernen + + Remove all + Alle entfernen - - + + OCC::InvalidFilenameDialog - - Cannot rename file because a file with the same name does already exist on the server. Please pick another name. - Die Datei kann nicht umbenannt werden, da eine Datei mit demselben Namen bereits auf dem Server existiert. Bitte wählen Sie einen anderen Namen. + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + Die Datei kann nicht umbenannt werden, da eine Datei mit demselben Namen bereits auf dem Server existiert. Bitte wählen Sie einen anderen Namen. + + + + Checking rename permissions … + Prüfe Umbenennungs-Rechte … + + + + Rename file + Datei umbenennen + + + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Sie haben nicht die Berechtigung, diese Datei umzubenennen. Bitte wenden Sie sich zum Umbenennen der Datei an dereren Ersteller. + + + + Failed to fetch permissions with error %1 + Fehler beim Abrufen der Berechtigungen. Fehler %1 + + + + Filename contains leading and trailing spaces. + Dateiname enthält Leerzeichen am Anfang und am Ende. + + + + Filename contains leading spaces. + Dateiname enthält Leerzeichen am Anfang. + + + + Filename contains trailing spaces. + Dateiname enthält Leerzeichen am Ende. + + + + Use invalid name + Ungültigen Namen verwenden + + + + Filename contains illegal characters: %1 + Dateiname enthält unzulässige Zeichen: %1 - - Checking rename permissions … - Prüfe Umbenennungs-Rechte … + + Could not rename file. Please make sure you are connected to the server. + Datei konnte nicht umbenannt werden. Bitte stellen Sie sicher, dass Sie mit dem Server verbunden sind. - - Could not rename local file. %1 - Lokale Datei konnte nicht umbenannt werden. %1 + + Could not rename local file. %1 + Lokale Datei konnte nicht umbenannt werden. %1 - - Invalid filename - Ungültiger Dateiname + + Invalid filename + Ungültiger Dateiname - - Please enter a new name for the file: - Bitte geben Sie einen neuen Namen für die Datei ein: + + Error + Fehler - - The file "%1" could not be synced because the name contains characters which are not allowed on this system. - Die Datei "%1" konnte nicht synchronisiert werden, da der Name Zeichen enthält, die auf diesem System nicht zulässig sind. + + Please enter a new name for the file: + Bitte geben Sie einen neuen Namen für die Datei ein: - - The file could not be synced because it contains characters which are not allowed on this system. - Die Datei konnte nicht synchronisiert werden, da der Name Zeichen enthält, die auf diesem System nicht zulässig sind. + + New filename + Neuer Dateiname - - The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - Die folgenden Zeichen sind auf dem System nicht erlaubt: * " | & ? , ; : \ / ~ < > Leerzeichen am Anfang/Ende + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + Die Datei "%1" konnte nicht synchronisiert werden, da der Name Zeichen enthält, die auf diesem System nicht zulässig sind. - - + + + The file could not be synced because it contains characters which are not allowed on this system. + Die Datei konnte nicht synchronisiert werden, da der Name Zeichen enthält, die auf diesem System nicht zulässig sind. + + + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + Die folgenden Zeichen sind auf dem System nicht erlaubt: * " | & ? , ; : \ / ~ < > Leerzeichen am Anfang/Ende + + + OCC::LegalNotice - - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> - <p>Lizensiert unter der GNU General Public License (GPL) Version 2.0 oder jeder neueren Version.</p> + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + <p>Lizensiert unter der GNU General Public License (GPL) Version 2.0 oder jeder neueren Version.</p> - Legal notice - Impressum + + + Legal notice + Impressum - - + + + Close + Schliessen + + + OCC::LogBrowser - - Enable logging to temporary folder - Protokollierung in temporären Ordner aktivieren + + Enable logging to temporary folder + Protokollierung in temporären Ordner aktivieren - - Log Output - Protokoll-Ausgabe + + Log Output + Protokoll-Ausgabe - - The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. If enabled, logs will be written to %1 - Der Client kann Debug-Protokolle in einen temporären Ordner schreiben. Diese Protokolle sind sehr hilfreich bei der Diagnose von Problemen. + Der Client kann Debug-Protokolle in einen temporären Ordner schreiben. Diese Protokolle sind sehr hilfreich bei der Diagnose von Problemen. Da die Protokolldateien sehr groß werden können, erstellt der Client für jeden Synchronisierungslauf eine neue Datei und komprimiert ältere. Außerdem werden die Protokolldateien nach ein paar Stunden gelöscht, um nicht zu viel Speicherplatz zu verbrauchen. Wenn aktiviert, werden die Protokolle nach %1 geschrieben. - - This setting persists across client restarts. + + This setting persists across client restarts. Note that using any logging command line options will override this setting. - Diese Einstellung bleibt über Client-Neustarts hinweg bestehen. + Diese Einstellung bleibt über Client-Neustarts hinweg bestehen. Beachten Sie, dass die Verwendung von Befehlszeilenoptionen für die Protokollierung diese Einstellung außer Kraft setzt. - - + + + Open folder + Ordner öffnen + + + OCC::Logger - - <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> - <nobr>Datei "%1"<br/>kann nicht zum Schreiben geöffnet werden.<br/><br/>Die Protokolldatei kann <b>nicht</b> gespeichert werden!</nobr> + + Error + Fehler + + + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + <nobr>Datei "%1"<br/>kann nicht zum Schreiben geöffnet werden.<br/><br/>Die Protokolldatei kann <b>nicht</b> gespeichert werden!</nobr> - - + + OCC::NSISUpdater - - <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> - <p>Eine neue Version des %1 - Clients ist verfügbar, aber die Aktualisierung ist fehlgeschlagen.</p><p><b>%2</b> wurde heruntergeladen. Die installierte Version ist %3. Wenn Sie Neustart und Aktualisieren bestätigen, wird Ihr Computer möglicherweise neu gestartet, um die Installation abzuschließen.</p> + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + <p>Eine neue Version des %1 - Clients ist verfügbar, aber die Aktualisierung ist fehlgeschlagen.</p><p><b>%2</b> wurde heruntergeladen. Die installierte Version ist %3. Wenn Sie Neustart und Aktualisieren bestätigen, wird Ihr Computer möglicherweise neu gestartet, um die Installation abzuschließen.</p> - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - <p>Eine neue Version des %1 - Clients ist verfügbar.</p><p><b>%2</b> steht zum Herunterladen bereit. Die installierte Version ist %3.</p> + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + <p>Eine neue Version des %1 - Clients ist verfügbar.</p><p><b>%2</b> steht zum Herunterladen bereit. Die installierte Version ist %3.</p> - - Ask again later - Versuchen Sie es später erneut + + Ask again later + Versuchen Sie es später erneut - - Get update - Aktualisierung durchführen + + Get update + Aktualisierung durchführen - - New Version Available - Eine neue Version ist verfügbar + + New Version Available + Eine neue Version ist verfügbar - - Restart and update - Neustarten und aktualisieren + + Restart and update + Neustarten und aktualisieren - - Skip this time - Dieses Mal überspringen + + Skip this time + Dieses Mal überspringen - - Update Failed - Aktualisierung fehlgeschlagen + + Update Failed + Aktualisierung fehlgeschlagen - - Update manually - Manuell aktualisieren + + Update manually + Manuell aktualisieren - - + + OCC::NetworkSettings - - Download Bandwidth - Download-Bandbreite + + Download Bandwidth + Download-Bandbreite - - Host - Host + + Host + Host - - Hostname of proxy server - Hostname des Proxy-Servers + + Hostname of proxy server + Hostname des Proxy-Servers - - HTTP(S) proxy - HTTP(S)-Proxy + + HTTP(S) proxy + HTTP(S)-Proxy - - KBytes/s - KBytes/s + + + KBytes/s + KBytes/s - - Limit automatically - Automatisch begrenzen + + + Limit automatically + Automatisch begrenzen - - Limit to - Begrenzen auf + + + Limit to + Begrenzen auf - - Limit to 3/4 of estimated bandwidth - Auf 3/4 der geschätzten Bandbreite begrenzen + + + Limit to 3/4 of estimated bandwidth + Auf 3/4 der geschätzten Bandbreite begrenzen - - Manually specify proxy - Proxy manuell festlegen + + Manually specify proxy + Proxy manuell festlegen - - No limit - Keine Begrenzung + + + No limit + Keine Begrenzung - - No proxy - Kein Proxy + + No proxy + Kein Proxy - - Note: proxy settings have no effects for accounts on localhost - Hinweis: Proxy-Einstellungen haben keine Auswirkungen für Konten auf localhost + + Note: proxy settings have no effects for accounts on localhost + Hinweis: Proxy-Einstellungen haben keine Auswirkungen für Konten auf localhost - - Password for proxy server - Passwort für den Proxy-Server + + Password for proxy server + Passwort für den Proxy-Server - - Proxy server requires authentication - Proxy-Server erfordert eine Authentifizierung + + Proxy server requires authentication + Proxy-Server erfordert eine Authentifizierung - - Proxy Settings - Proxy-Einstellungen + + Proxy Settings + Proxy-Einstellungen - - SOCKS5 proxy - SOCKS5-Proxy + + SOCKS5 proxy + SOCKS5-Proxy - Specify proxy manually as - Proxy manuell definieren als + Specify proxy manually as + Proxy manuell definieren als - - Upload Bandwidth - Upload-Bandbreite + + Upload Bandwidth + Upload-Bandbreite - - Use system proxy - System-Proxy verwenden + + Use system proxy + System-Proxy verwenden - - Username for proxy server - Benutzername für den Proxy-Server + + Username for proxy server + Benutzername für den Proxy-Server - - + + OCC::OAuth - <h1>Login Error</h1><p>%1</p> - <h1>Anmeldefehler </h1><p>%1</p> + <h1>Login Error</h1><p>%1</p> + <h1>Anmeldefehler </h1><p>%1</p> - <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> - <h1>Falsches Konto</h1><p>Sie haben sich mit dem Konto <em>%1</em> angemeldet, müssen aber das Konto <em>%2</em> verwenden.<br>Bitte melden von %3 in einem anderen Tab abmelden und <a href='%4'>klicken Sie hier</a> um sich mit %2 anzumelden</p> + <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> + <h1>Falsches Konto</h1><p>Sie haben sich mit dem Konto <em>%1</em> angemeldet, müssen aber das Konto <em>%2</em> verwenden.<br>Bitte melden von %3 in einem anderen Tab abmelden und <a href='%4'>klicken Sie hier</a> um sich mit %2 anzumelden</p> - Empty JSON from OAuth2 redirect - Leeres JSON aus OAuth2-Redirect + Empty JSON from OAuth2 redirect + Leeres JSON aus OAuth2-Redirect - - + + OCC::OCUpdater - - %1 available. Restart application to start the update. - %1-Version verfügbar. Anwendung zum Start der Aktualisierung neustarten. + + %1 available. Restart application to start the update. + %1-Version verfügbar. Anwendung zum Start der Aktualisierung neustarten. - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - Eine neue Aktualisierung für %1 wird installiert. Während des Aktualisierungsvorgangs werden Sie eventuell aufgefordert, zusätzliche Berechtigungen zu gewähren. Ihr Computer wird möglicherweise neu gestartet, um die Installation abzuschließen. + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + Eine neue Aktualisierung für %1 wird installiert. Während des Aktualisierungsvorgangs werden Sie eventuell aufgefordert, zusätzliche Berechtigungen zu gewähren. Ihr Computer wird möglicherweise neu gestartet, um die Installation abzuschließen. - - Checking update server … - Aktualisierungsserver wird überprüft … + + Checking update server … + Aktualisierungsserver wird überprüft … - - Could not check for new updates. - Auf neue Aktualisierungen kann nicht geprüft werden. + + Could not check for new updates. + Auf neue Aktualisierungen kann nicht geprüft werden. - - Could not download update. Please open %1 to download the update manually. - Aktualisierung kann nicht herunter geladen werden. Bitte öffnen Sie %1 um die Aktualisierung manuell herunterzuladen. + + Could not download update. Please open %1 to download the update manually. + Aktualisierung kann nicht herunter geladen werden. Bitte öffnen Sie %1 um die Aktualisierung manuell herunterzuladen. - - Could not download update. Please open <a href='%1'>%1</a> to download the update manually. - Aktualisierung kann nicht herunter geladen werden. Bitte öffnen Sie <a href='%1'>%1</a>, um die Aktualisierung manuell herunterzuladen. + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + Aktualisierung kann nicht herunter geladen werden. Bitte öffnen Sie <a href='%1'>%1</a>, um die Aktualisierung manuell herunterzuladen. - - Downloading %1. Please wait … - Lade %1 herunter. Bitte warten … + + Downloading %1. Please wait … + Lade %1 herunter. Bitte warten … - - New %1 is available. Please open %2 to download the update. - Neue Version von %1 vorhanden. Bitte öffnen Sie %2 um die Aktualisierung herunterzuladen. + + New %1 is available. Please open %2 to download the update. + Neue Version von %1 vorhanden. Bitte öffnen Sie %2 um die Aktualisierung herunterzuladen. - - New %1 is available. Please open <a href='%2'>%2</a> to download the update. - Neue Version von %1 vorhanden. Bitte öffnen Sie <a href='%2'>%2</a> um die Aktualisierung herunterzuladen. + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + Neue Version von %1 vorhanden. Bitte öffnen Sie <a href='%2'>%2</a> um die Aktualisierung herunterzuladen. - - New %1 update ready - Neue %1 Aktualisierung verfügbar + + New %1 update ready + Neue %1 Aktualisierung verfügbar - - No updates available. Your installation is at the latest version. - Keine Aktualisierungen verfügbar. Ihre Installation ist die aktuelle Version. + + No updates available. Your installation is at the latest version. + Keine Aktualisierungen verfügbar. Ihre Installation ist die aktuelle Version. - - Update Check - Aktualitätsprüfung + + Update Check + Aktualitätsprüfung - - Update status is unknown: Did not check for new updates. - Aktualisierungsstatus unbekannt: Auf neue Aktualisierungen wurde nicht geprüft. + + Update status is unknown: Did not check for new updates. + Aktualisierungsstatus unbekannt: Auf neue Aktualisierungen wurde nicht geprüft. - - + + OCC::OwncloudAdvancedSetupPage - - (%1) - (%1) + + + (%1) + (%1) + + + + %1 folder "%2" is synced to local folder "%3" + %1 Ordner "%2" wird mit dem lokalen Ordner "%3" synchronisiert + + + %1 free space + %1 freier Platz - - %1 folder "%2" is synced to local folder "%3" - %1 Ordner "%2" wird mit dem lokalen Ordner "%3" synchronisiert + + Connect + Verbinden - - %1 free space - %1 freier Platz + + + (experimental) + (experimentell) - - Connect - Verbinden + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Virtuelle Dateien werden für die Wurzel von Windows-Partitionen als lokaler Ordner nicht unterstützt. Bitte wählen Sie einen gültigen Unterordner unter dem Laufwerksbuchstaben. - - Local Sync Folder - Lokaler Ordner für die Synchronisierung + + %1 free space + %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB + %1 freier Platz - - Sync the folder "%1" - Ordner "%1" synchronisieren + + Virtual files are not available for the selected folder + Virtuelle Dateien sind für den ausgewählten Ordner nicht verfügbar - - There isn't enough free space in the local folder! - Nicht genug freier Platz im lokalen Ordner vorhanden! + + Local Sync Folder + Lokaler Ordner für die Synchronisierung - - Use &virtual files instead of downloading content immediately %1 - &Virtuelle Dateien verwenden, anstatt den Inhalt sofort herunterzuladen %1 + + Sync the folder "%1" + Ordner "%1" synchronisieren - - Warning: The local folder is not empty. Pick a resolution! - Achtung: Der lokale Ordner ist nicht leer. Bitte wählen Sie eine entsprechende Lösung! + + There isn't enough free space in the local folder! + Nicht genug freier Platz im lokalen Ordner vorhanden! - - + + + + Use &virtual files instead of downloading content immediately %1 + &Virtuelle Dateien verwenden, anstatt den Inhalt sofort herunterzuladen %1 + + + + Warning: The local folder is not empty. Pick a resolution! + Achtung: Der lokale Ordner ist nicht leer. Bitte wählen Sie eine entsprechende Lösung! + + + OCC::OwncloudConnectionMethodDialog - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Sichere Verbindung zur Serveradresse <em>%1</em> fehlgeschlagen. Wie wollen Sie fortfahren?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Sichere Verbindung zur Serveradresse <em>%1</em> fehlgeschlagen. Wie wollen Sie fortfahren?</p></body></html> - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Verbindung mit der angegebenen sicheren Serveradresse fehlgeschlagen. Wie möchten Sie fortfahren?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Verbindung mit der angegebenen sicheren Serveradresse fehlgeschlagen. Wie möchten Sie fortfahren?</p></body></html> - - Configure client-side TLS certificate - Clientseitiges TLS-Zertifikat konfigurieren. + + Configure client-side TLS certificate + Clientseitiges TLS-Zertifikat konfigurieren. - - Connection failed - Verbindung fehlgeschlagen + + Connection failed + Verbindung fehlgeschlagen - - Retry unencrypted over HTTP (insecure) - Unverschlüsselt über HTTP versuchen (unsicher) + + Retry unencrypted over HTTP (insecure) + Unverschlüsselt über HTTP versuchen (unsicher) - - Select a different URL - Andere URL wählen + + Select a different URL + Andere URL wählen - - + + OCC::OwncloudHttpCredsPage - - &Email - &E-Mail + + &Email + &E-Mail - - Connect to %1 - Verbinden mit %1 + + Connect to %1 + Verbinden mit %1 - - Enter user credentials - Geben Sie Ihre Benutzer-Anmeldeinformationen ein + + Enter user credentials + Geben Sie Ihre Benutzer-Anmeldeinformationen ein - - + + OCC::OwncloudOAuthCredsPage - Login in your browser - Melden Sie sich in Ihrem Browser an + Login in your browser + Melden Sie sich in Ihrem Browser an - - + + OCC::OwncloudPropagator - Error with the metadata. Getting unexpected metadata format. - Fehler bei den Metadaten. Unerwartetes Metadatenformat erhalten. + Error with the metadata. Getting unexpected metadata format. + Fehler bei den Metadaten. Unerwartetes Metadatenformat erhalten. - - Impossible to get modification time for file in conflict %1 - Es ist nicht möglich, die Änderungszeit für die in Konflikt stehende Datei abzurufen %1 + + + Impossible to get modification time for file in conflict %1 + Es ist nicht möglich, die Änderungszeit für die in Konflikt stehende Datei abzurufen %1 - - + + OCC::OwncloudSetupPage - - &Next > - &Weiter > + + The link to your %1 web interface when you open it in the browser. + %1 will be replaced with the application name + Der Link zu Ihrer %1 Webseite, wenn Sie diese im Browser öffnen. - - Could not load certificate. Maybe wrong password? - Das Zertifikat konnte nicht geladen werden. Vielleicht ein falsches Passwort? + + &Next > + &Weiter > - - Server address does not seem to be valid - Serveradresse scheint nicht gültig zu sein + + Could not load certificate. Maybe wrong password? + Das Zertifikat konnte nicht geladen werden. Vielleicht ein falsches Passwort? - - The link to your %1 web interface when you open it in the browser. - Der Link zu Ihrer %1 Webseite, wenn Sie diese im Browser öffnen. + + Server address does not seem to be valid + Serveradresse scheint nicht gültig zu sein - - + + The link to your %1 web interface when you open it in the browser. + Der Link zu Ihrer %1 Webseite, wenn Sie diese im Browser öffnen. + + + OCC::OwncloudSetupWizard - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> - <font color="green"><b>Lokaler Sync-Ordner %1 erfolgreich erstellt!</b></font> + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + <font color="green"><b>Lokaler Sync-Ordner %1 erfolgreich erstellt!</b></font> - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - <font color="green">Erfolgreich mit %1 verbunden: %2 Version %3 (%4)</font><br/><br/> + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + <font color="green">Erfolgreich mit %1 verbunden: %2 Version %3 (%4)</font><br/><br/> - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - <p><font color="red">Die Erstellung des entfernten Ordners ist fehlgeschlagen, vermutlich sind die angegebenen Zugangsdaten falsch.</font><br/>Bitte gehen Sie zurück und überprüfen Sie Ihre Zugangsdaten.</p> + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + Die genehmigte Anfrage an den Server wurde an "%1“ umgeleitet. Die URL ist fehlerhaft, der Server ist falsch konfiguriert. - - A sync connection from %1 to remote directory %2 was set up. - Eine Synchronisierungsverbindung für Ordner %1 zum entfernten Ordner %2 wurde eingerichtet. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Zugriff durch Server verboten. Um zu überprüfen, ob Sie über den richtigen Zugriff verfügen, <a href="%1">klicken Sie hier</a>, um mit Ihrem Browser auf den Dienst zuzugreifen. - - Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - Der Ordner kann nicht entfernt und gesichert werden, da der Ordner oder einer seiner Dateien in einem anderen Programm geöffnet ist. Bitte schließen Sie den Ordner oder die Datei und versuchen Sie es erneut oder beenden Sie die Installation. + + There was an invalid response to an authenticated WebDAV request + Es gab eine ungültige Antwort auf eine authentifizierte WebDAV-Anfrage - - Connection to %1 could not be established. Please check again. - Die Verbindung zu %1 konnte nicht hergestellt werden. Bitte prüfen Sie die Einstellungen erneut. + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + <p><font color="red">Die Erstellung des entfernten Ordners ist fehlgeschlagen, vermutlich sind die angegebenen Zugangsdaten falsch.</font><br/>Bitte gehen Sie zurück und überprüfen Sie Ihre Zugangsdaten.</p> - - Could not create local folder %1 - Der lokale Ordner %1 konnte nicht erstellt werden + + A sync connection from %1 to remote directory %2 was set up. + Eine Synchronisierungsverbindung für Ordner %1 zum entfernten Ordner %2 wurde eingerichtet. - - creating folder on Nextcloud: %1 - Erstelle Ordner auf Nextcloud: %1 + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + Der Ordner kann nicht entfernt und gesichert werden, da der Ordner oder einer seiner Dateien in einem anderen Programm geöffnet ist. Bitte schließen Sie den Ordner oder die Datei und versuchen Sie es erneut oder beenden Sie die Installation. - - Creating local sync folder %1 … - Lokaler Ordner %1 für die Synchronisierung wird erstellt … + + Connection to %1 could not be established. Please check again. + Die Verbindung zu %1 konnte nicht hergestellt werden. Bitte prüfen Sie die Einstellungen erneut. - - Error: %1 - Fehler: %1 + + Could not create local folder %1 + Der lokale Ordner %1 konnte nicht erstellt werden - - Failed to connect to %1 at %2:<br/>%3 - Die Verbindung zu %1 auf %2 konnte nicht hergestellt werden: <br/>%3 + + creating folder on Nextcloud: %1 + Erstelle Ordner auf Nextcloud: %1 - - failed. - fehlgeschlagen. + + Creating local sync folder %1 … + Lokaler Ordner %1 für die Synchronisierung wird erstellt … - - Folder rename failed - Ordner umbenennen fehlgeschlagen. + + Error: %1 + Fehler: %1 - - Invalid URL - Ungültige URL + + Failed to connect to %1 at %2:<br/>%3 + Die Verbindung zu %1 auf %2 konnte nicht hergestellt werden: <br/>%3 - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> - Lokaler Sync-Ordner %1 existiert bereits, aktiviere Synchronistation.<br/><br/> + + failed. + fehlgeschlagen. - - No remote folder specified! - Kein entfernter Ordner angegeben! + + Folder rename failed + Ordner umbenennen fehlgeschlagen. - - OK - OK + + Invalid URL + Ungültige URL - - Remote folder %1 created successfully. - Entfernter Ordner %1 erfolgreich erstellt. + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + Lokaler Sync-Ordner %1 existiert bereits, aktiviere Synchronistation.<br/><br/> - - Remote folder %1 creation failed with error <tt>%2</tt>. - Entfernter Ordner %1 konnte mit folgendem Fehler nicht erstellt werden: <tt>%2</tt>. + + No remote folder specified! + Kein entfernter Ordner angegeben! - - Successfully connected to %1! - Erfolgreich verbunden mit %1! + + OK + OK - - The folder creation resulted in HTTP error code %1 - Das Erstellen des Ordners erzeugte den HTTP-Fehler-Code %1 + + Remote folder %1 created successfully. + Entfernter Ordner %1 erfolgreich erstellt. - - The remote folder %1 already exists. Connecting it for syncing. - Der Ordner %1 ist auf dem Server bereits vorhanden. Verbinde zur Synchronisierung. + + + Remote folder %1 creation failed with error <tt>%2</tt>. + Entfernter Ordner %1 konnte mit folgendem Fehler nicht erstellt werden: <tt>%2</tt>. - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - Die Erstellung des entfernten Ordners ist fehlgeschlagen, weil die angegebenen Zugangsdaten falsch sind. <br/>Bitte gehen Sie zurück und überprüfen Sie die Zugangsdaten.</p> + + Successfully connected to %1! + Erfolgreich verbunden mit %1! - - Timeout while trying to connect to %1 at %2. - Zeitüberschreitung beim Verbindungsversuch mit %1 unter %2. + + + The folder creation resulted in HTTP error code %1 + Das Erstellen des Ordners erzeugte den HTTP-Fehler-Code %1 - - Trying to connect to %1 at %2 … - Verbindungsversuch mit %1 unter %2 … + + The remote folder %1 already exists. Connecting it for syncing. + Der Ordner %1 ist auf dem Server bereits vorhanden. Verbinde zur Synchronisierung. - - + + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + Die Erstellung des entfernten Ordners ist fehlgeschlagen, weil die angegebenen Zugangsdaten falsch sind. <br/>Bitte gehen Sie zurück und überprüfen Sie die Zugangsdaten.</p> + + + + Timeout while trying to connect to %1 at %2. + Zeitüberschreitung beim Verbindungsversuch mit %1 unter %2. + + + + Trying to connect to %1 at %2 … + Verbindungsversuch mit %1 unter %2 … + + + OCC::OwncloudWizard - - Add %1 account - %1 Konto hinzufügen + + Add %1 account + %1 Konto hinzufügen - - Enable experimental feature? - Experimentelle Funktion aktivieren? + + Cancel + Abbrechen - - Enable experimental placeholder mode - Experimentellen Platzhaltermodus aktivieren + + Enable experimental feature? + Experimentelle Funktion aktivieren? - - Skip folders configuration - Ordner-Konfiguration überspringen + + Enable experimental placeholder mode + Experimentellen Platzhaltermodus aktivieren - - Stay safe - Bleiben Sie sicher + + Skip folders configuration + Ordner-Konfiguration überspringen - - When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + + Stay safe + Bleiben Sie sicher + + + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. Switching to this mode will abort any currently running synchronization. This is a new, experimental mode. If you decide to use it, please report any issues that come up. - Wenn der Modus "virtuelle Dateien" aktiviert ist, werden zunächst keine Dateien heruntergeladen. Stattdessen wird für jede Datei, die auf dem Server existiert, eine winzige "%1"-Datei erstellt. Der Inhalt kann heruntergeladen werden, indem diese Dateien ausgeführt werden oder indem deren Kontextmenü verwendet wird. + Wenn der Modus "virtuelle Dateien" aktiviert ist, werden zunächst keine Dateien heruntergeladen. Stattdessen wird für jede Datei, die auf dem Server existiert, eine winzige "%1"-Datei erstellt. Der Inhalt kann heruntergeladen werden, indem diese Dateien ausgeführt werden oder indem deren Kontextmenü verwendet wird. -Der Modus "Virtuelle Dateien" schließt sich mit der ausgewählten Synchronisierung gegenseitig aus. Derzeit nicht ausgewählte Ordner werden in reine Online-Ordner umgewandelt und Ihre Einstellungen für die selektive Synchronisierung werden zurückgesetzt. +Der Modus "Virtuelle Dateien" schließt sich mit der ausgewählten Synchronisierung gegenseitig aus. Derzeit nicht ausgewählte Ordner werden in reine Online-Ordner umgewandelt und Ihre Einstellungen für die selektive Synchronisierung werden zurückgesetzt. Wenn Sie in diesen Modus wechseln, wird eine aktuell laufende Synchronisierung abgebrochen. Dies ist ein neuer, experimenteller Modus. Wenn Sie sich entscheiden, ihn zu verwenden, melden Sie bitte alle auftretenden Probleme. - - + + OCC::PasswordInputDialog - - Please enter a password for your share: - Bitte vergeben sie für die Freigabe ein Passwort: + + Password for share required + Passwort für die Freigabe erforderlich + + + + Please enter a password for your share: + Bitte vergeben sie für die Freigabe ein Passwort: - - + + OCC::PollJob - - Invalid JSON reply from the poll URL - Ungültige JSON-Antwort von der Poll-URL + + Invalid JSON reply from the poll URL + Ungültige JSON-Antwort von der Poll-URL - - + + OCC::ProcessDirectoryJob - - Cannot sync due to invalid modification time - Synchronisierung wegen ungültiger Änderungszeit nicht möglich + + Cannot sync due to invalid modification time + Synchronisierung wegen ungültiger Änderungszeit nicht möglich + + + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. + Problem der Groß- und Kleinschreibung: Serverdatei heruntergeladen und umbenannt, um Konflikte zu vermeiden. + + + + Conflict when uploading a file. It's going to get removed! + Konflikt beim Hochladen einer Datei. Sie wird entfernt! - - Case Clash Conflict: Server file downloaded and renamed to avoid clash. - Problem der Groß- und Kleinschreibung: Serverdatei heruntergeladen und umbenannt, um Konflikte zu vermeiden. + + Conflict when uploading a folder. It's going to get cleared! + Konflikt beim Hochladen eines Ordners. Er wird gelöscht! - - Conflict when uploading a file. It's going to get removed! - Konflikt beim Hochladen einer Datei. Sie wird entfernt! + + Filename contains trailing spaces. + Dateiname enthält Leerzeichen am Ende. - - Conflict when uploading a folder. It's going to get cleared! - Konflikt beim Hochladen eines Ordners. Er wird gelöscht! + + Filename contains leading spaces. + Dateiname enthält Leerzeichen am Anfang. - - Conflict: Server version downloaded, local copy renamed and not uploaded. - Konflikt: Serverversion heruntergeladen, lokale Kopie umbenannt und nicht hochgeladen. + + Filename contains leading and trailing spaces. + Dateiname enthält Leerzeichen am Anfang und am Ende. - - Could not upload file, because it is open in "%1". - Datei konnte nicht hochgeladen werden, da sie in "%1" geöffnet ist. + + Conflict: Server version downloaded, local copy renamed and not uploaded. + Konflikt: Serverversion heruntergeladen, lokale Kopie umbenannt und nicht hochgeladen. - - Error while deleting file record %1 from the database - Fehler beim Löschen des Dateisatzes %1 aus der Datenbank + + Could not upload file, because it is open in "%1". + Datei konnte nicht hochgeladen werden, da sie in "%1" geöffnet ist. - - Error while reading the database - Fehler beim Lesen der Datenbank + + Error while deleting file record %1 from the database + Fehler beim Löschen des Dateisatzes %1 aus der Datenbank - - File has extension reserved for virtual files. - Die Endung der Datei ist für virtuelle Dateien reserviert. + + Error while reading the database + Fehler beim Lesen der Datenbank - - file id - Datei-ID + + File has extension reserved for virtual files. + Die Endung der Datei ist für virtuelle Dateien reserviert. - - File is listed on the ignore list. - Die Datei ist in der Ignorierliste aufgeführt. + + file id + Datei-ID - - File name contains at least one invalid character - Der Dateiname enthält mindestens ein ungültiges Zeichen + + File is listed on the ignore list. + Die Datei ist in der Ignorierliste aufgeführt. - - File names containing the character "%1" are not supported on this file system. - Dateinamen, welche das Zeichen "%1" enthalten, werden von diesem Dateisystem nicht unterstützt. + + File name contains at least one invalid character + Der Dateiname enthält mindestens ein ungültiges Zeichen - - File names ending with a period are not supported on this file system. - Dateinamen, die mit einem Punkt enden, werden von diesem Dateisystem nicht unterstützt. + + File names containing the character "%1" are not supported on this file system. + Dateinamen, welche das Zeichen "%1" enthalten, werden von diesem Dateisystem nicht unterstützt. - - File/Folder is ignored because it's hidden. - Datei/Ordner wird ignoriert, weil sie unsichtbar ist. + + File names ending with a period are not supported on this file system. + Dateinamen, die mit einem Punkt enden, werden von diesem Dateisystem nicht unterstützt. - - Filename is too long. - Der Dateiname ist zu lang. + + File/Folder is ignored because it's hidden. + Datei/Ordner wird ignoriert, weil sie unsichtbar ist. - - Ignored because of the "choose what to sync" blacklist - Ignoriert wegen der "Choose what to sync"-Blacklist + + Filename is too long. + Der Dateiname ist zu lang. - - Moved to invalid target, restoring - Auf ungültiges Ziel verschoben, wiederherstellen. + + Ignored because of the "choose what to sync" blacklist + Ignoriert wegen der "Choose what to sync"-Blacklist - - Not allowed because you don't have permission to add files in that folder - Nicht erlaubt, da Sie keine Berechtigung zum Hinzufügen von Dateien in diesen Ordner haben. + + + Moved to invalid target, restoring + Auf ungültiges Ziel verschoben, wiederherstellen. - - Not allowed because you don't have permission to add subfolders to that folder - Nicht erlaubt, da Sie nicht die Berechtigung haben, Unterordner zu diesem Ordner hinzuzufügen. + + Not allowed because you don't have permission to add files in that folder + Nicht erlaubt, da Sie keine Berechtigung zum Hinzufügen von Dateien in diesen Ordner haben. - - Not allowed to remove, restoring - Entfernen nicht erlaubt, wiederherstellen. + + + Not allowed because you don't have permission to add subfolders to that folder + Nicht erlaubt, da Sie nicht die Berechtigung haben, Unterordner zu diesem Ordner hinzuzufügen. - - Not allowed to upload this file because it is read-only on the server, restoring - Das Hochladen dieser Datei ist nicht erlaubt, da die Datei auf dem Server schreibgeschützt ist. Wiederherstellen. + + Not allowed to remove, restoring + Entfernen nicht erlaubt, wiederherstellen. - - permission - Berechtigung + + Not allowed to upload this file because it is read-only on the server, restoring + Das Hochladen dieser Datei ist nicht erlaubt, da die Datei auf dem Server schreibgeschützt ist. Wiederherstellen. - - Server replied with an error while reading directory "%1" : %2 - Der Server hat während des Lesens des Verzeichnisses "%1" mit einem Fehler geantwortet: %2 + + permission + Berechtigung - - Server reported no %1 - Server meldet keine %1 + + Server replied with an error while reading directory "%1" : %2 + Der Server hat während des Lesens des Verzeichnisses "%1" mit einem Fehler geantwortet: %2 - - size - Größe + + Server reported no %1 + Server meldet keine %1 - - Stat failed. - Stat fehlgeschlagen. + + size + Größe - - Symbolic links are not supported in syncing. - Symbolische Verknüpfungen werden bei der Synchronisierung nicht unterstützt. + + Stat failed. + Stat fehlgeschlagen. - - The file name is a reserved name on this file system. - Der Dateiname ist ein reservierter Name in diesem Dateisystem. + + Symbolic links are not supported in syncing. + Symbolische Verknüpfungen werden bei der Synchronisierung nicht unterstützt. - - The filename cannot be encoded on your file system. - Der Dateiname kann auf Ihrem Dateisystem nicht entschlüsselt werden. + + The file name is a reserved name on this file system. + Der Dateiname ist ein reservierter Name in diesem Dateisystem. - - The filename is blacklisted on the server. - Der Dateiname steht auf dem Server auf einer schwarzen Liste. + + The filename cannot be encoded on your file system. + Der Dateiname kann auf Ihrem Dateisystem nicht entschlüsselt werden. - - + + + The filename is blacklisted on the server. + Der Dateiname steht auf dem Server auf einer schwarzen Liste. + + + OCC::PropagateDirectory - - could not delete file %1 from local DB - Datei %1 konnte nicht aus lokaler Datenbank gelöscht werden + + could not delete file %1 from local DB + Datei %1 konnte nicht aus lokaler Datenbank gelöscht werden + + + + Error updating metadata due to invalid modification time + Fehler beim Aktualisieren der Metadaten aufgrund einer ungültigen Änderungszeit - - Error updating metadata due to invalid modification time - Fehler beim Aktualisieren der Metadaten aufgrund einer ungültigen Änderungszeit + + Error updating metadata: %1 + Fehler beim Aktualisieren der Metadaten: %1 - - File is currently in use - Datei ist aktuell in Benutzung + + File is currently in use + Datei ist aktuell in Benutzung - - The folder %1 cannot be made read-only: %2 - Der Ordner %1 kann nicht schreibgeschützt werden: %2 + + + The folder %1 cannot be made read-only: %2 + Der Ordner %1 kann nicht schreibgeschützt werden: %2 - - + + OCC::PropagateDownloadFile - - Could not delete file record %1 from local DB - Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden + + + Could not delete file record %1 from local DB + Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden + + + + could not get file %1 from local DB + Datei %1 konnte nicht aus der lokalen Datenbank abgerufen werden - - could not get file %1 from local DB - Datei %1 konnte nicht aus der lokalen Datenbank abgerufen werden + + File %1 can not be downloaded because of a local file name clash! + Die Datei %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht herunter geladen werden! - - File %1 can not be downloaded because of a local file name clash! - Die Datei %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht herunter geladen werden! + + File %1 cannot be downloaded because encryption information is missing. + Die Datei %1 kann nicht heruntergeladen werden, da die Verschlüsselungsinformationen fehlen. - - File %1 cannot be downloaded because encryption information is missing. - Die Datei %1 kann nicht heruntergeladen werden, da die Verschlüsselungsinformationen fehlen. + + File %1 downloaded but it resulted in a local file name clash! + Datei %1 heruntergeladen, aber dies führte zu einem lokalen Dateinamenskonflikt! - - File %1 downloaded but it resulted in a local file name clash! - Datei %1 heruntergeladen, aber dies führte zu einem lokalen Dateinamenskonflikt! + + + File %1 has invalid modified time reported by server. Do not save it. + Datei %1 hat eine ungültige Änderungszeit, die vom Server gemeldet wurde. Speichern Sie sie nicht. - - File %1 has invalid modified time reported by server. Do not save it. - Datei %1 hat eine ungültige Änderungszeit, die vom Server gemeldet wurde. Speichern Sie sie nicht. + + + File has changed since discovery + Datei ist seit der Entdeckung geändert worden - - File has changed since discovery - Datei ist seit der Entdeckung geändert worden + + File was deleted from server + Die Datei wurde vom Server gelöscht - - File was deleted from server - Die Datei wurde vom Server gelöscht + + Error updating metadata: %1 + Fehler beim Aktualisieren der Metadaten: %1 - - Free space on disk is less than %1 - Der freie Speicher auf der Festplatte ist weniger als %1 + + The file %1 is currently in use + Die Datei %1 wird aktuell verwendet - - The download would reduce free local disk space below the limit - Das Herunterladen würde den lokalen freien Speicherplatz unter die Grenze reduzieren + + Free space on disk is less than %1 + Der freie Speicher auf der Festplatte ist weniger als %1 - - The downloaded file is empty, but the server said it should have been %1. - Die heruntergeladene Datei ist leer, obwohl der Server %1 als Größe übermittelt hat. + + The download would reduce free local disk space below the limit + Das Herunterladen würde den lokalen freien Speicherplatz unter die Grenze reduzieren - - The file could not be downloaded completely. - Die Datei konnte nicht vollständig heruntergeladen werden. + + The downloaded file is empty, but the server said it should have been %1. + Die heruntergeladene Datei ist leer, obwohl der Server %1 als Größe übermittelt hat. - - + + + The file could not be downloaded completely. + Die Datei konnte nicht vollständig heruntergeladen werden. + + + OCC::PropagateItemJob - - ; Restoration Failed: %1 - ; Wiederherstellung fehlgeschlagen: %1 + + ; Restoration Failed: %1 + ; Wiederherstellung fehlgeschlagen: %1 - - A file or folder was removed from a read only share, but restoring failed: %1 - Eine Datei oder ein Ordner wurde von einer Nur-Lese-Freigabe wiederhergestellt, aber die Wiederherstellung ist mit folgendem Fehler fehlgeschlagen: %1 + + A file or folder was removed from a read only share, but restoring failed: %1 + Eine Datei oder ein Ordner wurde von einer Nur-Lese-Freigabe wiederhergestellt, aber die Wiederherstellung ist mit folgendem Fehler fehlgeschlagen: %1 - - + + OCC::PropagateLocalMkdir - - Could not create folder %1 - Ordner %1 konnte nicht erstellt werden + + Could not create folder %1 + Ordner %1 konnte nicht erstellt werden + + + + could not delete file %1, error: %2 + Konnte Datei %1 nicht löschen. Fehler: %2 - - could not delete file %1, error: %2 - Konnte Datei %1 nicht löschen. Fehler: %2 + + Folder %1 cannot be created because of a local file or folder name clash! + Ordner %1 kann aufgrund einer lokalen Datei- oder Ordnernamenskollision nicht erstellt werden! - - Folder %1 cannot be created because of a local file or folder name clash! - Ordner %1 kann aufgrund einer lokalen Datei- oder Ordnernamenskollision nicht erstellt werden! + + The folder %1 cannot be made read-only: %2 + Der Ordner %1 kann nicht schreibgeschützt werden: %2 - - + + + Error updating metadata: %1 + Fehler beim Aktualisieren der Metadaten: %1 + + + + The file %1 is currently in use + Die Datei %1 wird aktuell verwendet + + + OCC::PropagateLocalRemove - - Could not remove %1 because of a local file name clash - %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht gelöscht werden + + Could not remove %1 because of a local file name clash + %1 kann aufgrund eines Konfliktes mit dem lokalen Dateinamen nicht gelöscht werden + + + + Could not delete file record %1 from local DB + Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden - - + + OCC::PropagateLocalRename - - Error setting pin state - Fehler beim Setzen des PIN-Status + + File %1 downloaded but it resulted in a local file name clash! + Datei %1 heruntergeladen, aber dies führte zu einem lokalen Dateinamenskonflikt! + + + + + + could not get file %1 from local DB + Datei %1 konnte nicht aus der lokalen Datenbank abgerufen werden + + + + + Error setting pin state + Fehler beim Setzen des PIN-Status + + + + + Error updating metadata: %1 + Fehler beim Aktualisieren der Metadaten: %1 + + + + The file %1 is currently in use + Die Datei %1 wird aktuell verwendet + + + + + Could not delete file record %1 from local DB + Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden - - Failed to propagate directory rename in hierarchy - Die Umbenennung des Verzeichnisses in der Hierarchie konnte nicht weitergegeben werden + + Failed to propagate directory rename in hierarchy + Die Umbenennung des Verzeichnisses in der Hierarchie konnte nicht weitergegeben werden - - Failed to rename file - Konnte Datei nicht umbenennen + + Failed to rename file + Konnte Datei nicht umbenennen - - Folder %1 cannot be renamed because of a local file or folder name clash! - Ordner %1 kann nicht umbenannt werden, da ein Konflikt zwischen lokalen Datei- oder Ordnernamen besteht! + + Folder %1 cannot be renamed because of a local file or folder name clash! + Ordner %1 kann nicht umbenannt werden, da ein Konflikt zwischen lokalen Datei- oder Ordnernamen besteht! - - + + + OCC::PropagateRemoteDelete + + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Falscher HTTP-Code vom Server zurückgegeben. 204 erwartet, aber "%1 %2" erhalten. + + + + Could not delete file record %1 from local DB + Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden + + + + OCC::PropagateRemoteDeleteEncryptedRootFolder + + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Falscher HTTP-Code vom Server zurückgegeben. 204 erwartet, aber "%1 %2" erhalten. + + + OCC::PropagateRemoteMkdir - - Error writing metadata to the database: %1 - Fehler beim Schreiben der Metadaten in die Datenbank: %1 + + Error writing metadata to the database: %1 + Fehler beim Schreiben der Metadaten in die Datenbank: %1 - - Failed to encrypt a folder %1 - Ordner konnte nicht verschlüsselt werden %1 + + Failed to encrypt a folder %1 + Ordner konnte nicht verschlüsselt werden %1 - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 201, aber gesendet wurde "%1 %2". + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 201, aber gesendet wurde "%1 %2". - - + + + The file %1 is currently in use + Die Datei %1 wird aktuell verwendet + + + OCC::PropagateRemoteMove - - Could not rename %1 to %2, error: %3 - Konnte %1 nicht nach %2 umbenennen. Fehler: %3 + + Could not rename %1 to %2, error: %3 + Konnte %1 nicht nach %2 umbenennen. Fehler: %3 + + + + + Error updating metadata: %1 + Fehler beim Aktualisieren der Metadaten: %1 + + + + + The file %1 is currently in use + Die Datei %1 wird aktuell verwendet + + + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Es wurde ein falscher HTTP-Status-Code vom Server gesendet. Erwartet wurde 201, aber gesendet wurde "%1 %2". + + + + could not get file %1 from local DB + Datei %1 konnte nicht aus der lokalen Datenbank abgerufen werden + + + + Could not delete file record %1 from local DB + Der Dateidatensatz %1 konnte nicht aus der lokalen Datenbank gelöscht werden + + + + Error setting pin state + Fehler beim Setzen des PIN-Status - - + + + Error writing metadata to the database + Fehler beim Schreiben der Metadaten in die Datenbank + + + OCC::PropagateUploadFileCommon - - Failed to unlock encrypted folder. - Der verschlüsselte Ordner konnte nicht entsperrt werden. + + Failed to unlock encrypted folder. + Der verschlüsselte Ordner konnte nicht entsperrt werden. + + + + Failed to upload encrypted file. + Das Hochladen der verschlüsselten Datei ist fehlgeschlagen. + + + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Die Datei %1 kann nicht hochgeladen werden, da eine andere Datei mit dem selben Namen, nur unterschiedlicher Groß-/Kleinschreibung, existiert + + + + + + File %1 has invalid modification time. Do not upload to the server. + Die Datei %1 hat eine ungültige Änderungszeit. Nicht auf den Server hochladen. + + + + File Removed (start upload) %1 + Datei entfernt (starte das Hochladen) %1 + + + + Local file changed during syncing. It will be resumed. + Lokale Datei hat sich während der Synchronisierung geändert. Die Synchronisierung wird wieder aufgenommen. + + + + Local file changed during sync. + Lokale Datei wurde während der Synchronisierung geändert. - - Failed to upload encrypted file. - Das Hochladen der verschlüsselten Datei ist fehlgeschlagen. + + Unable to upload an item with invalid characters + Ein Element mit ungültigen Zeichen kann nicht hochgeladen werden - - Unable to upload an item with invalid characters - Ein Element mit ungültigen Zeichen kann nicht hochgeladen werden + + Error updating metadata: %1 + Fehler beim Aktualisieren der Metadaten: %1 - - Upload of %1 exceeds the quota for the folder - Das Hochladen von %1 überschreitet das Speicherkontingent des Ordners + + The file %1 is currently in use + Die Datei %1 wird aktuell verwendet - - + + + + Upload of %1 exceeds the quota for the folder + Das Hochladen von %1 überschreitet das Speicherkontingent des Ordners + + + OCC::PropagateUploadFileNG - - Missing ETag from server - Fehlender ETag vom Server + + Missing ETag from server + Fehlender ETag vom Server + + + + Missing File ID from server + Fehlende Datei-ID vom Server - - Missing File ID from server - Fehlende Datei-ID vom Server + + The local file was removed during sync. + Die lokale Datei wurde während der Synchronisierung gelöscht. - - Poll URL missing - Poll-URL fehlt + + Local file changed during sync. + Lokale Datei wurde während der Synchronisierung geändert. - - Unexpected return code from server (%1) - Unerwarteter Rückgabe-Code Antwort vom Server (%1) + + Poll URL missing + Poll-URL fehlt - - + + + Unexpected return code from server (%1) + Unerwarteter Rückgabe-Code Antwort vom Server (%1) + + + OCC::PropagateUploadFileV1 - - The server did not acknowledge the last chunk. (No e-tag was present) - Der Server hat den letzten Block nicht bestätigt. (Kein E-Tag vorhanden) + + Poll URL missing + Poll-URL fehlt - - + + + The local file was removed during sync. + Die lokale Datei wurde während der Synchronisierung gelöscht. + + + + Local file changed during sync. + Lokale Datei wurde während der Synchronisierung geändert. + + + + The server did not acknowledge the last chunk. (No e-tag was present) + Der Server hat den letzten Block nicht bestätigt. (Kein E-Tag vorhanden) + + + OCC::ProxyAuthDialog - - Password: - Passwort: + + Password: + Passwort: - - Proxy authentication required - Proxy-Authentifzierung erforderlich + + Proxy authentication required + Proxy-Authentifzierung erforderlich - - Proxy: - Proxy: + + Proxy: + Proxy: - - The proxy server needs a username and password. - Der Proxy-Server benötigt Benutzername und Passwort + + The proxy server needs a username and password. + Der Proxy-Server benötigt Benutzername und Passwort - - Username: - Benutzername: + + Username: + Benutzername: - - + + OCC::SelectiveSyncDialog - - Choose What to Sync - Zu synchronisierende Elemente auswählen + + Choose What to Sync + Zu synchronisierende Elemente auswählen - - + + OCC::SelectiveSyncWidget - - An error occurred while loading the list of sub folders. - Es ist ein Fehler während des Ladens der Liste der Unterordner aufgetreten. + + An error occurred while loading the list of sub folders. + Es ist ein Fehler während des Ladens der Liste der Unterordner aufgetreten. - - Deselect remote folders you do not wish to synchronize. - Entfernte Ordner abwählen, die nicht synchronisiert werden sollen. + + Deselect remote folders you do not wish to synchronize. + Entfernte Ordner abwählen, die nicht synchronisiert werden sollen. - - Loading … - Lade … + + Loading … + Lade … - - Name - Name + + Name + Name - - No subfolders currently on the server. - Aktuell befinden sich keine Unterordner auf dem Server. + + + No subfolders currently on the server. + Aktuell befinden sich keine Unterordner auf dem Server. - - Size - Größe + + Size + Größe - - + + OCC::ServerNotificationHandler - - Reply - Antworten + + Reply + Antworten - - + + OCC::SettingsDialog - - %1 Settings - %1-Einstellungen + + %1 Settings + This name refers to the application name e.g Nextcloud + %1-Einstellungen + + + + Account + Benutzerkonto + + + + General + Allgemein - - Account - Benutzerkonto + Network + Netzwerk - - General - Allgemein + + New Account + Neues Konto - Network - Netzwerk + + Settings + Einstellungen + + + OCC::ShareManager - - New Account - Neues Konto + + Error + Fehler - - + + OCC::ShareModel - - Could not find local folder for %1 - Lokaler Ordner für %1 nicht gefunden + + Could not find local folder for %1 + Lokaler Ordner für %1 nicht gefunden - Enter a note for the recipient - Geben Sie eine Notiz für den Empfänger ein + Enter a note for the recipient + Geben Sie eine Notiz für den Empfänger ein - - Internal link - Interner Link + + Internal link + Interner Link - - Link share - Link teilen + + Link share + Link teilen - - Secure file drop - Sichere Dateiablage + + Secure file drop + Sichere Dateiablage - - Secure file drop link - Sicherer Link zur Dateiablage + + Secure file drop link + Sicherer Link zur Dateiablage - - Share link - Freigabe-Link + + Share link + Freigabe-Link - - + + OCC::ShareUserLine - Can edit - Kann bearbeiten + Can edit + Kann bearbeiten - Expires: - Läuft ab: + Expires: + Läuft ab: - Note: - Notiz: + Note: + Notiz: - - + + OCC::ShareeModel - - Global search results - Globale Suchergebnisse + + Global search results + Globale Suchergebnisse - - No results found - Keine Ergebnisse gefunden + + No results found + Keine Ergebnisse gefunden - - Search globally - Global suchen + + %1 (%2) + sharee (shareWithAdditionalInfo) + %1 (%2) - - + + + + Search globally + Global suchen + + + OCC::SocketApi - Activity - Aktivität + + + Activity + Aktivität - - Context menu share - Kontextmenü Freigabe + + Context menu share + Kontextmenü Freigabe - - Copy internal link - Internen Link kopieren + + Copy internal link + Internen Link kopieren - - Copy private link to clipboard - Privater Link in die Zwischenablage kopiert + + Copy private link to clipboard + Privater Link in die Zwischenablage kopiert - - Copy public link - Öffentlichen Link kopieren + + + Copy public link + Öffentlichen Link kopieren - - Copy secure file drop link - Link zur sicheren Dateiablage kopieren + + Copy secure file drop link + Link zur sicheren Dateiablage kopieren - - Copy secure filedrop link - Link zur sicheren Dateiablage kopieren + + Copy secure filedrop link + Link zur sicheren Dateiablage kopieren - - Could not encrypt the following folder: "%1". + + Could not encrypt the following folder: "%1". Server replied with error: %2 - Der folgende Ordner konnte nicht verschlüsselt werden: "%1". + Der folgende Ordner konnte nicht verschlüsselt werden: "%1". Server antwortete mit Fehler: %2 - - Delete local changes - Lokale Änderungen löschen + + Delete local changes + Lokale Änderungen löschen - - Edit - Bearbeiten + + Edit + Bearbeiten - - - Expires in %1 minutes - - - - Läuft in %1 Minuten ab - + + + Failed to encrypt folder + Ordner konnte nicht verschlüsselt werden - - Failed to encrypt folder - Ordner konnte nicht verschlüsselt werden + + Failed to encrypt folder at "%1" + Fehler beim Verschlüsseln des Ordners unter "%1" - - Failed to encrypt folder at "%1" - Fehler beim Verschlüsseln des Ordners unter "%1" + + Folder encrypted successfully + Ordner erfolgreich verschlüsselt - - Folder encrypted successfully - Ordner erfolgreich verschlüsselt + + I shared something with you + Ich habe etwas mit Ihnen geteilt - - I shared something with you - Ich habe etwas mit Ihnen geteilt + + Leave this share + Freigabe verlassen - - Leave this share - Freigabe verlassen + + Encrypt + Verschlüsseln - - Lock file - Datei sperren + + Lock file + Datei sperren - - Locked by %1 - Gesperrt von %1 + + Locked by %1 + Gesperrt von %1 + + + + Expires in %1 minutes + remaining time before lock expires + + + + + + + + Move and rename … + Verschieben und umbenennen … - - Move and rename … - Verschieben und umbenennen … + + Move and upload … + Verschieben und hochladen … - - Move and upload … - Verschieben und hochladen … + + Delete + Löschen - - Move, rename and upload … - Verschieben, umbenennen und hochladen … + + Move, rename and upload … + Verschieben, umbenennen und hochladen … - - Open in browser - Im Browser öffnen + + Open in browser + Im Browser öffnen - - Resharing this file is not allowed - Weiterteilen dieser Datei ist nicht erlaubt + + Resharing this file is not allowed + Weiterteilen dieser Datei ist nicht erlaubt - - Resharing this folder is not allowed - Weiterteilen dieses Ordners ist nicht erlaubt + + Resharing this folder is not allowed + Weiterteilen dieses Ordners ist nicht erlaubt - - Resolve conflict … - Konflikt lösen… + + Resolve conflict … + Konflikt lösen… - - Select new location … - Neuen Ort auswählen … + + Select new location … + Neuen Ort auswählen … - - Send private link by email … - Privaten Link als E-Mail verschicken … + + Send private link by email … + Privaten Link als E-Mail verschicken … - - Share options - Freigabeoptionen + + + Share options + Freigabeoptionen - - The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - Für das Konto %1 ist keine Ende-zu-Ende-Verschlüsselung konfiguriert. Bitte konfigurieren Sie diese in Ihren Kontoeinstellungen, um die Ordnerverschlüsselung zu aktivieren. + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. + Für das Konto %1 ist keine Ende-zu-Ende-Verschlüsselung konfiguriert. Bitte konfigurieren Sie diese in Ihren Kontoeinstellungen, um die Ordnerverschlüsselung zu aktivieren. - - The following folder was encrypted successfully: "%1" - Der folgende Ordner wurde erfolgreich verschlüsselt: "%1" + + The following folder was encrypted successfully: "%1" + Der folgende Ordner wurde erfolgreich verschlüsselt: "%1" - - Unlock file - Datei entsperren + + Unlock file + Datei entsperren - - + + OCC::SslButton - - %1 (self-signed) - %1 (selbst signiert) + + %1 (self-signed) + %1 (selbst signiert) - - <h3>Certificate Details</h3> - <h3>Zertifikatdetails</h3> + + <h3>Certificate Details</h3> + <h3>Zertifikatdetails</h3> - - <h3>Fingerprints</h3> - <h3>Fingerabdrücke</h3> + + <h3>Fingerprints</h3> + <h3>Fingerabdrücke</h3> - - <h3>Issuer</h3> - <h3>Aussteller</h3> + + <h3>Issuer</h3> + <h3>Aussteller</h3> - - <p><b>Note:</b> This certificate was manually approved</p> - <p><b>Hinweis:</b> Dieses Zertifikat wurde manuell bestätigt</p> + + <p><b>Note:</b> This certificate was manually approved</p> + <p><b>Hinweis:</b> Dieses Zertifikat wurde manuell bestätigt</p> - - Certificate information: - Zertifikatsinformation: + + Certificate information: + Zertifikatsinformation: - - Common Name (CN): - Gemeinsamer Name (CN): + + Common Name (CN): + Gemeinsamer Name (CN): - - Country: - Land: + + Country: + Land: - - Expires on: - Ablaufdatum: + + Expires on: + Ablaufdatum: - - Issued on: - Ausgestellt am: + + Issued on: + Ausgestellt am: - - Issuer: - Aussteller: + + Issuer: + Aussteller: - - No support for SSL session tickets/identifiers - Keine Unterstützung für SSL session tickets + + No support for SSL session tickets/identifiers + Keine Unterstützung für SSL session tickets - - Organization (O): - Organisation (O): + + Organization (O): + Organisation (O): - - Organizational Unit (OU): - Organisationseinheit (OU): + + Organizational Unit (OU): + Organisationseinheit (OU): - - Serial: - Seriennummer: + + Serial: + Seriennummer: - - Server version: %1 - Serverversion: %1 + + %1 + %1 - - SHA-1: - SHA-1: + + This connection is encrypted using %1 bit %2. + + - - SHA-256: - SHA-256: + + This connection is NOT secure as it is not encrypted. + + - - State/Province: - Staat/Provinz: + + Server version: %1 + Serverversion: %1 - - Subject Alternative Names: - Subject Alternative Names: + + SHA-1: + SHA-1: - - The connection is not secure - Die Verbindung ist nicht sicher + + SHA-256: + SHA-256: - - This connection is encrypted using %1 bit %2. - Diese Verbindung ist verschlüsselt mit %1 Bit %2. + + State/Province: + Staat/Provinz: - - This connection is NOT secure as it is not encrypted. - Diese Verbindung ist NICHT sicher, da diese nicht verschlüsselt ist. + + Subject Alternative Names: + Subject Alternative Names: - - + + + The connection is not secure + Die Verbindung ist nicht sicher + + + This connection is encrypted using %1 bit %2. + Diese Verbindung ist verschlüsselt mit %1 Bit %2. + + + This connection is NOT secure as it is not encrypted. + Diese Verbindung ist NICHT sicher, da diese nicht verschlüsselt ist. + + + OCC::SslErrorDialog - - &lt;not specified&gt; - &lt;nicht angegeben&gt; + + + + &lt;not specified&gt; + &lt;nicht angegeben&gt; - - Additional errors: - Zusätzliche Fehler: + + Additional errors: + Zusätzliche Fehler: - - Cannot connect securely to <i>%1</i>: - Kann keine sichere Verbindung zu <i>%1</i> herstellen: + + Cannot connect securely to <i>%1</i>: + Kann keine sichere Verbindung zu <i>%1</i> herstellen: - - Country: %1 - Land: %1 + + + Country: %1 + Land: %1 - - Effective Date: %1 - Datum des Inkrafttretens: %1 + + Effective Date: %1 + Datum des Inkrafttretens: %1 - - Expiration Date: %1 - Ablaufdatum: %1 + + Expiration Date: %1 + Ablaufdatum: %1 - - Fingerprint (SHA-256): <tt>%1</tt> - Fingerabdruck (SHA-256): <tt>%1</tt> + + Fingerprint (SHA-256): <tt>%1</tt> + Fingerabdruck (SHA-256): <tt>%1</tt> - - Fingerprint (SHA-512): <tt>%1</tt> - Fingerabdruck (SHA-512): <tt>%1</tt> + + Fingerprint (SHA-512): <tt>%1</tt> + Fingerabdruck (SHA-512): <tt>%1</tt> - - Fingerprint (SHA1): <tt>%1</tt> - Fingerabdruck (SHA1): <tt>%1</tt> + + Fingerprint (SHA1): <tt>%1</tt> + Fingerabdruck (SHA1): <tt>%1</tt> - - Issuer: %1 - Aussteller: %1 + + Issuer: %1 + Aussteller: %1 - - Organization: %1 - Organisation: %1 + + + Organization: %1 + Organisation: %1 - - Trust this certificate anyway - Diesem Zertifikat trotzdem vertrauen + + Trust this certificate anyway + Diesem Zertifikat trotzdem vertrauen - - Unit: %1 - Einheit: %1 + + + Unit: %1 + Einheit: %1 - - Untrusted Certificate - Nicht vertrauenswürdiges Zertifikat + + Untrusted Certificate + Nicht vertrauenswürdiges Zertifikat - - with Certificate %1 - mit Zertifikat %1 + + with Certificate %1 + mit Zertifikat %1 - - + + OCC::SyncEngine - - %1 (skipped due to earlier error, trying again in %2) - %1 (übersprungen aufgrund des früheren Fehlers, erneuter Versuch in %2) + + %1 (skipped due to earlier error, trying again in %2) + %1 (übersprungen aufgrund des früheren Fehlers, erneuter Versuch in %2) - - Cannot open the sync journal - Synchronisierungsprotokoll kann nicht geöffnet werden + + Cannot open the sync journal + Synchronisierungsprotokoll kann nicht geöffnet werden - - Could not set file record to local DB: %1 - Dateidatensatz konnte nicht auf lokale DB gesetzt werden: %1 + + Could not set file record to local DB: %1 + Dateidatensatz konnte nicht auf lokale DB gesetzt werden: %1 - - Could not update file metadata: %1 - Die Metadaten der Datei konnten nicht aktualisiert werden: %1 + + Could not update file metadata: %1 + Die Metadaten der Datei konnten nicht aktualisiert werden: %1 - - Could not update file: %1 - Datei konnte nicht aktualisiert werden: %1 + + Could not update file: %1 + Datei konnte nicht aktualisiert werden: %1 - - Could not update virtual file metadata: %1 - Metadaten der virtuellen Datei konnten nicht aktualisiert werden: %1 + + Could not update virtual file metadata: %1 + Metadaten der virtuellen Datei konnten nicht aktualisiert werden: %1 - - Disk space is low: Downloads that would reduce free space below %1 were skipped. - Der freie Speicherplatz wird knapp: Downloads, die den freien Speicher unter %1 reduzieren, wurden ausgelassen. + + Only %1 are available, need at least %2 to start + Placeholders are postfixed with file sizes using Utility::octetsToString() + Nur %1 sind verfügbar. Zum Beginnen werden mindestens %2 benötigt. - - Only %1 are available, need at least %2 to start - Nur %1 sind verfügbar. Zum Beginnen werden mindestens %2 benötigt. + + Disk space is low: Downloads that would reduce free space below %1 were skipped. + Der freie Speicherplatz wird knapp: Downloads, die den freien Speicher unter %1 reduzieren, wurden ausgelassen. - - There is insufficient space available on the server for some uploads. - Auf dem Server ist für einige Dateien zum Hochladen nicht genug Platz. + Only %1 are available, need at least %2 to start + Nur %1 sind verfügbar. Zum Beginnen werden mindestens %2 benötigt. - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. - Öffnen oder erstellen der Sync-Datenbank nicht möglich. Bitte sicherstellen, dass Schreibrechte für den zu synchronisierenden Ordner existieren. + + There is insufficient space available on the server for some uploads. + Auf dem Server ist für einige Dateien zum Hochladen nicht genug Platz. - - Unable to read from the sync journal. - Fehler beim Einlesen des Synchronisierungsprotokolls. + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. + Öffnen oder erstellen der Sync-Datenbank nicht möglich. Bitte sicherstellen, dass Schreibrechte für den zu synchronisierenden Ordner existieren. - - Unable to read the blacklist from the local database - Fehler beim Einlesen der Blacklist aus der lokalen Datenbank + + Unable to read from the sync journal. + Fehler beim Einlesen des Synchronisierungsprotokolls. - - Unresolved conflict. - Ungelöster Konflikt. + + Unable to read the blacklist from the local database + Fehler beim Einlesen der Blacklist aus der lokalen Datenbank - - Using virtual files with suffix, but suffix is not set - Virtuelle Dateien mit Endung verwenden, aber Endung ist nicht gesetzt. + + Unresolved conflict. + Ungelöster Konflikt. - - + + + Using virtual files with suffix, but suffix is not set + Virtuelle Dateien mit Endung verwenden, aber Endung ist nicht gesetzt. + + + OCC::SyncJournalDb - - Failed to connect database. - Fehler beim Verbinden mit der Datenbank. + + Failed to connect database. + Fehler beim Verbinden mit der Datenbank. - - + + OCC::SyncStatusSummary - - %1 of %2 - %1 von %2 + + %1 of %2 + %1 von %2 + + + + %1 of %2 · %3 left + %1 von %2 · %3 verbleiben - - %1 of %2 · %3 left - %1 von %2 · %3 verbleiben + + + Offline + Offline - - Offline - Offline + + + + All synced! + Alles synchronisiert! - - Preparing sync - Synchronisierung wird vorbereitet + + Preparing sync + Synchronisierung wird vorbereitet - - See below for errors - Warnungen siehe unten + + See below for errors + Warnungen siehe unten - - See below for warnings - Warnungen siehe unten + + See below for warnings + Warnungen siehe unten - - Some files could not be synced! - Einige Dateien konnten nicht synchronisiert werden! + + Some files could not be synced! + Einige Dateien konnten nicht synchronisiert werden! - - Some files couldn't be synced! - Einige Dateien konnten nicht synchronisiert werden! + + Some files couldn't be synced! + Einige Dateien konnten nicht synchronisiert werden! - - Syncing file %1 of %2 - Synchronisiere Datei %1 von %2 + + + Syncing + Synchronisiere - - + + + Sync paused + Synchronisierung pausiert + + + + Syncing file %1 of %2 + Synchronisiere Datei %1 von %2 + + + OCC::Systray - - %1: %2 - %1: %2 + + %1: %2 + %1: %2 + + + + Add account + Konto hinzufügen - - Add account - Konto hinzufügen + + Download + Herunterladen - - Download - Herunterladen + + + Pause sync + Synchronisierung pausieren - - Exit %1 - %1 beenden + + + Resume sync + Synchronisierung fortsetzen - - Open main dialog - Hauptfenster öffnen + + Settings + Einstellungen - - Pause sync for all - Synchronisierung für alle pausieren + + Help + Hilfe - - Resume sync for all - Synchronisierung für alle fortsetzen + + Exit %1 + %1 beenden - - + + + Open main dialog + Hauptfenster öffnen + + + + Pause sync for all + Synchronisierung für alle pausieren + + + + Resume sync for all + Synchronisierung für alle fortsetzen + + + OCC::Theme - - <p>%1 desktop client %2</p> - <p>%1 Desktop-Client %2</p> + + <p>%1 desktop client %2</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + <p>%1 Desktop-Client %2</p> + + + <p>%1 Desktop Client</p> + <p>%1 Desktop-Client</p> - <p>%1 Desktop Client</p> - <p>%1 Desktop-Client</p> + + easy/0118 + Redirect URL Parameter + - - <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>%1 Desktop-Client</p><p>Version %1. Für weitere Informationen bitte <a href='%2'>hier</a> klicken.</p> + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + <p>%1 Desktop-Client</p><p>Version %1. Für weitere Informationen bitte <a href='%2'>hier</a> klicken.</p> - - <p><small>Using virtual files plugin: %1</small></p> - <p><small>Plugin für virtuelle Dateien: %1</small></p> + + <p><small>Using virtual files plugin: %1</small></p> + <p><small>Plugin für virtuelle Dateien: %1</small></p> - - <p>This release was supplied by %1.</p> - <p>Diese Version wird von %1 bereitgestellt</p>. + + <p>This release was supplied by %1.</p> + <p>Diese Version wird von %1 bereitgestellt</p>. - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>Version %1. Für weitere Informationen klicken Sie bitte <a href='%2'>hier</a>.</p> + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>Version %1. Für weitere Informationen klicken Sie bitte <a href='%2'>hier</a>.</p> - - + + OCC::UnifiedSearchResultsListModel - - Failed to fetch providers. - Anbieter konnten nicht abgerufen werden. + + Failed to fetch providers. + Anbieter konnten nicht abgerufen werden. - - Failed to fetch search providers for '%1'. Error: %2 - Konnte Suchanbieter für '%1' nicht abrufen. Fehler: %2 + + Failed to fetch search providers for '%1'. Error: %2 + Konnte Suchanbieter für '%1' nicht abrufen. Fehler: %2 - - Search has failed for '%1'. Error: %2 - Suche nach '%1' fehlgeschlagen. Fehler: %2 + + Search has failed for '%1'. Error: %2 + Suche nach '%1' fehlgeschlagen. Fehler: %2 - - Search has failed for '%2'. - Suche nach '%2' fehlgeschlagen. + + Search has failed for '%2'. + Suche nach '%2' fehlgeschlagen. - - + + OCC::UpdateE2eeFolderMetadataJob - - Failed to finalize item. - Fehler beim Fertigstellen des Elements. + + Failed to unlock encrypted folder. + Der verschlüsselte Ordner konnte nicht entsperrt werden. + + + + Failed to finalize item. + Fehler beim Fertigstellen des Elements. - - Failed to update folder metadata. - Fehler beim Aktualisieren der Ordner-Metadaten. + + Failed to update folder metadata. + Fehler beim Aktualisieren der Ordner-Metadaten. - - + + OCC::UpdateE2eeFolderUsersMetadataJob - Could not add or remove a folder user %1, for folder %2 - Ordner konnte nicht hinzugefügt oder entfernt werden. Benutzer %1 für Ordner %2 + Could not add or remove a folder user %1, for folder %2 + Ordner konnte nicht hinzugefügt oder entfernt werden. Benutzer %1 für Ordner %2 - - Could not add or remove user %1 to access folder %2 - Benutzer %1 konnte nicht zum Zugriffsordner %2 hinzugefügt oder entfernt werden + + Could not add or remove user %1 to access folder %2 + Benutzer %1 konnte nicht zum Zugriffsordner %2 hinzugefügt oder entfernt werden - - Could not fetch public key for user %1 - Öffentlicher Schlüssel für den Benutzer %1 konnte nicht abgerufen werden + + Could not fetch public key for user %1 + Öffentlicher Schlüssel für den Benutzer %1 konnte nicht abgerufen werden - - Could not find root encrypted folder for folder %1 - Verschlüsselter Stammordner für den Ordner %1 nicht gefunden + + Could not find root encrypted folder for folder %1 + Verschlüsselter Stammordner für den Ordner %1 nicht gefunden - - Error updating metadata for a folder %1 - Fehler beim Aktualisieren der Metadaten für einen Ordner %1 + + + + + + + + + + Error updating metadata for a folder %1 + Fehler beim Aktualisieren der Metadaten für einen Ordner %1 - - Failed to unlock a folder. - Fehler beim Entsperren eines Ordners. + + Failed to unlock a folder. + Fehler beim Entsperren eines Ordners. - - + + OCC::User - - %1 notifications - %1 Benachrichtigungen + + %1 notifications + %1 Benachrichtigungen - - Resolve conflict - Konflikt lösen + + + Resolve conflict + Konflikt lösen - - Retry all uploads - Alle Uploads neu starten + + Retry all uploads + Alle Uploads neu starten - - + + OCC::UserModel - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Möchten Sie wirklich die Verbindung zum Konto <i>%1</i> entfernen?</p><p><b>Hinweis:</b> Es werden <b>keine</b> Dateien gelöscht.</p> + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Möchten Sie wirklich die Verbindung zum Konto <i>%1</i> entfernen?</p><p><b>Hinweis:</b> Es werden <b>keine</b> Dateien gelöscht.</p> - - Confirm Account Removal - Kontenentfernung bestätigen + + Confirm Account Removal + Kontenentfernung bestätigen - - Remove connection - Verbindung entfernen + + Cancel + Abbrechen - - + + + Remove connection + Verbindung entfernen + + + OCC::UserStatusSelectorModel - - %1 days - %1 Tage + + %1 days + %1 Tage - - %1 hours - %1 Stunden + + %1 hours + %1 Stunden - - %1 minutes - %1 Minuten + + %1 minutes + %1 Minuten - - 1 day - 1 Tag + + 1 day + 1 Tag - - 1 hour - 1 Stunde + + + 1 hour + 1 Stunde - - 1 minute - 1 Minute + + 1 minute + 1 Minute - - 30 minutes - 30 Minuten + + 30 minutes + 30 Minuten - - 4 hours - 4 Stunden + + 4 hours + 4 Stunden - - Could not clear status message. Make sure you are connected to the server. - Statusnachricht konnte nicht gelöscht werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. + + Could not clear status message. Make sure you are connected to the server. + Statusnachricht konnte nicht gelöscht werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. - - Could not fetch predefined statuses. Make sure you are connected to the server. - Vordefinierte Status konnten nicht abgerufen werden. Stellen Sie bitte sicher, dass Sie mit dem Server verbunden sind. + + Could not fetch predefined statuses. Make sure you are connected to the server. + Vordefinierte Status konnten nicht abgerufen werden. Stellen Sie bitte sicher, dass Sie mit dem Server verbunden sind. - - Could not fetch status. Make sure you are connected to the server. - Benutzerstatus konnte nicht abgerufen werden. Bitte sicherstellen, dass Sie mit dem Server verbunden sind. + + Could not fetch status. Make sure you are connected to the server. + Benutzerstatus konnte nicht abgerufen werden. Bitte sicherstellen, dass Sie mit dem Server verbunden sind. - - Could not set status. Make sure you are connected to the server. - Benutzerstatus konnte nicht gesetzt werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. + + Could not set status. Make sure you are connected to the server. + Benutzerstatus konnte nicht gesetzt werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. - - Don't clear - Nicht löschen + + + Don't clear + Nicht löschen - - Emojis are not supported. Some status functionality may not work. - Emoji-Funktion wird nicht unterstützt. Einige Benutzerstatus-Funktionen funktionieren unter Umständen nicht. + + Emojis are not supported. Some status functionality may not work. + Emoji-Funktion wird nicht unterstützt. Einige Benutzerstatus-Funktionen funktionieren unter Umständen nicht. - - Less than a minute - Weniger als eine Minute + + Less than a minute + Weniger als eine Minute - - Status feature is not supported. You will not be able to set your status. - Benutzerstatus-Funktion wird nicht unterstützt. Benutzerstatus kann nicht gesetzt werden. + + Status feature is not supported. You will not be able to set your status. + Benutzerstatus-Funktion wird nicht unterstützt. Benutzerstatus kann nicht gesetzt werden. - - This week - Diese Woche + + + This week + Diese Woche - - Today - Heute + + + Today + Heute - - + + OCC::ValidateChecksumHeader - - The checksum header contained an unknown checksum type "%1" - Der Prüfsummen-Header enthielt einen unbekannten Prüfsummentyp "%1" + + The checksum header contained an unknown checksum type "%1" + Der Prüfsummen-Header enthielt einen unbekannten Prüfsummentyp "%1" - - The checksum header is malformed. - Der Prüfsummen-Header hat ein fehlerhaftes Format. + + The checksum header is malformed. + Der Prüfsummen-Header hat ein fehlerhaftes Format. - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Die heruntergeladene Datei stimmt nicht mit der Prüfsumme überein, sie wird fortgesetzt. "%1" != "%2" + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + Die heruntergeladene Datei stimmt nicht mit der Prüfsumme überein, sie wird fortgesetzt. "%1" != "%2" - - + + OCC::Vfs - - The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - Die Funktion "Virtuelles Dateisystem" erfordert ein NTFS-Dateisystem, %1 verwendet %2 + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 + Die Funktion "Virtuelles Dateisystem" erfordert ein NTFS-Dateisystem, %1 verwendet %2 - - + + OCC::VfsDownloadErrorDialog - - %1 could not be downloaded. - %1 konnte nicht heruntergeladen werden. + + %1 could not be downloaded. + %1 konnte nicht heruntergeladen werden. + + + + > More details + > Weitere Details - - > More details - > Weitere Details + + could not be downloaded + Konnte nicht heruntergeladen werden - - could not be downloaded - Konnte nicht heruntergeladen werden + + Download error + Fehler beim Herunterladen - - Download error - Fehler beim Herunterladen + + Error downloading + Fehler beim Herunterladen - - Error downloading - Fehler beim Herunterladen + + Error downloading %1 + Fehler beim Herunterladen von %1 - - Error downloading %1 - Fehler beim Herunterladen von %1 + + More details + Weitere Details + + + OCC::VfsSuffix - - More details - Weitere Details + + + Error updating metadata due to invalid modification time + Fehler beim Aktualisieren der Metadaten aufgrund einer ungültigen Änderungszeit - - + + + OCC::VfsXAttr + + + + Error updating metadata due to invalid modification time + Fehler beim Aktualisieren der Metadaten aufgrund einer ungültigen Änderungszeit + + + OCC::WebEnginePage - - Invalid certificate detected - Ungültiges Zertifikat gefunden + + Invalid certificate detected + Ungültiges Zertifikat gefunden - - The host "%1" provided an invalid certificate. Continue? - Der Server "%1" hat ein ungültiges Zertifikat. Fortsetzen? + + The host "%1" provided an invalid certificate. Continue? + Der Server "%1" hat ein ungültiges Zertifikat. Fortsetzen? - - + + OCC::WebFlowCredentials - - <b>You have been logged out of your account %1 at %2. Please login again.</b> - <b>Sie wurden von Ihrem Konto %1 bei %2 abgemeldet. Bitte melden Sie sich erneut an.</b> + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + <b>Sie wurden von Ihrem Konto %1 bei %2 abgemeldet. Bitte melden Sie sich erneut an.</b> - Please login with the account: %1 - Bitte mit folgendem Konto anmelden: %1 + Please login with the account: %1 + Bitte mit folgendem Konto anmelden: %1 - You have been logged out of your account %1 at %2. Please login again. - Sie wurden von Ihrem Konto %1 als %2 abgemeldet. Bitte melden Sie sich erneut an. + You have been logged out of your account %1 at %2. Please login again. + Sie wurden von Ihrem Konto %1 als %2 abgemeldet. Bitte melden Sie sich erneut an. - - + + OCC::WelcomePage - Easy-to-use web mail, calendaring & contacts - Einfach zu bedienende Webmail, Kalender & Kontakte + Easy-to-use web mail, calendaring & contacts + Einfach zu bedienende Webmail, Kalender & Kontakte - - Form - Formular + + Form + Formular - - Host your own server - Eigenen Server betreiben + + Host your own server + Eigenen Server betreiben - - Keep your data secure and under your control - Halten Sie Ihre Daten sicher und unter Ihrer Kontrolle + + Keep your data secure and under your control + Halten Sie Ihre Daten sicher und unter Ihrer Kontrolle - - Log in - Anmelden + + Log in + Anmelden - Screensharing, online meetings & web conferences - Bildschirmfreigabe, Online-Meetings & Webkonferenzen + Screensharing, online meetings & web conferences + Bildschirmfreigabe, Online-Meetings & Webkonferenzen - Secure collaboration & file exchange - Sichere Zusammenarbeit & Dateiaustausch + Secure collaboration & file exchange + Sichere Zusammenarbeit & Dateiaustausch - - Sign up with provider - Mit Provider anmelden + + Sign up with provider + Mit Provider anmelden - - + + OCC::ownCloudGui - - Account %1: %2 - Konto %1: %2 + + Account %1: %2 + Konto %1: %2 + + + + Account synchronization is disabled + Konto-Synchronisierung ist deaktiviert - - Account synchronization is disabled - Konto-Synchronisierung ist deaktiviert + + Disconnected from %1 + Von %1 getrennt - - Disconnected from %1 - Von %1 getrennt + + Disconnected from accounts: + Verbindungen zu Konten getrennt: - - Disconnected from accounts: - Verbindungen zu Konten getrennt: + + Disconnected from some accounts + Verbindungen zu einigen Konten getrennt - - Disconnected from some accounts - Verbindungen zu einigen Konten getrennt + + Error during synchronization + Fehler bei der Synchronisierung - - Error during synchronization - Fehler bei der Synchronisierung + + Folder %1: %2 + Ordner %1: %2 - - Folder %1: %2 - Ordner %1: %2 + + No sync folders configured + Keine Ordner zur Synchronisierung konfiguriert - - No sync folders configured - Keine Ordner zur Synchronisierung konfiguriert + + Please sign in + Bitte melden Sie sich an - - Please sign in - Bitte melden Sie sich an + + Disconnected + Getrennt - - Synchronization is paused - Synchronisierung ist pausiert + + Signed out + Abgemeldet - - Syncing %1 of %2 (%3 left) - Synchronisiere %1 von %2 (%3 übrig) + + + Synchronization is paused + Synchronisierung ist pausiert - - The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - Der Server auf Konto %1 verwendet die nicht unterstützte Version %2. Die Verwendung dieses Clients mit nicht unterstützten Serverversionen ist ungetestet und potenziell gefährlich. Die Verwendung erfolgt auf eigene Gefahr. + + Checking for changes in remote "%1" + Nach Änderungen in entfernten "%1" suchen - - There are no sync folders configured. - Es wurden keine Synchronisierungsordner konfiguriert. + + Checking for changes in local "%1" + Nach Änderungen in lokalem "%1" suchen - - Unresolved conflicts - Ungelöste Konflikte + + Syncing %1 of %2 (%3 left) + Synchronisiere %1 von %2 (%3 übrig) - - Unsupported Server Version - Nicht unterstütze Server-Version + + Syncing %1 of %2 + Synchronisiere %1 von %2 - - Up to date - Aktuell + + Syncing %1 (%2 left) + Synchronisiere %1 (%2 übrig) - - + + + Syncing %1 + Synchronisiere %1 + + + + %1 (%2, %3) + %1 (%2, %3) + + + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + Der Server auf Konto %1 verwendet die nicht unterstützte Version %2. Die Verwendung dieses Clients mit nicht unterstützten Serverversionen ist ungetestet und potenziell gefährlich. Die Verwendung erfolgt auf eigene Gefahr. + + + + There are no sync folders configured. + Es wurden keine Synchronisierungsordner konfiguriert. + + + + Unresolved conflicts + Ungelöste Konflikte + + + + Unsupported Server Version + Nicht unterstütze Server-Version + + + + Up to date + Aktuell + + + OCC::sesSnackBar - - Success - Erfolg + + Error + Fehler + + + + Warning + Warnung - - + + + Success + Erfolg + + + OwncloudAdvancedSetupPage - - &Local Folder - &Lokaler Ordner + + &Local Folder + &Lokaler Ordner - - <html><head/><body><p>If this box is checked, + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Wenn dieses Kästchen markiert ist, + <html><head/><body><p>Wenn dieses Kästchen markiert ist, wird der vorhandene Inhalt im lokalen Ordner gelöscht, um eine saubere Synchronisierung vom Server zu starten.</p><p>Klicken Sie dies nicht an, wenn der lokale Inhalt in den Serverordner hochgeladen werden soll.</p></body></html> - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Wenn diese Option gesetzt ist, werden bestehende Inhalte im lokalen Ordner gelöscht, um eine saubere Synchronisierung nur der Serverdaten zu ermöglichen.</p><p>Wählen Sie diese Option nicht, wenn die lokalen Inhalte auf den Server übertragen werden sollen.</p></body></html> + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Wenn diese Option gesetzt ist, werden bestehende Inhalte im lokalen Ordner gelöscht, um eine saubere Synchronisierung nur der Serverdaten zu ermöglichen.</p><p>Wählen Sie diese Option nicht, wenn die lokalen Inhalte auf den Server übertragen werden sollen.</p></body></html> - - Ask before syncing external storages - Fragen bevor externe Speicher synchronisiert werden + + Ask before syncing external storages + Fragen bevor externe Speicher synchronisiert werden - - Ask before syncing folders larger than - Fragen bevor Ordner synchronisiert werden. Grenze: + + Ask before syncing folders larger than + Fragen bevor Ordner synchronisiert werden. Grenze: - - Choose different folder - Anderen Ordner wählen + + Choose different folder + Anderen Ordner wählen - - Erase local folder and start a clean sync - Lokalen Ordner löschen und eine saubere Synchronisierung starten + + + MB + + Trailing part of "Ask confirmation before syncing folder larger than" + - - Keep local data - Lokale Daten behalten + + Choose what to sync + Zu synchronisierende Elemente auswählen - - Local Folder - Lokaler Ordner + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + + - - Server address - Serveradresse + + Erase local folder and start a clean sync + Lokalen Ordner löschen und eine saubere Synchronisierung starten - - Sync Logo - Sync-Logo + + Keep local data + Lokale Daten behalten - - Synchronize everything from server - Alle Daten vom Server synchronisieren + + Local Folder + Lokaler Ordner - Username - Benutzername + + Server address + Serveradresse - - + + + Sync Logo + Sync-Logo + + + + Synchronize everything from server + Alle Daten vom Server synchronisieren + + + + Username + Benutzername + + + OwncloudHttpCredsPage - - &Password - &Passwort + + &Password + &Passwort - - &Username - &Benutzername + + &Username + &Benutzername - - + + OwncloudOAuthCredsPage - Please switch to your browser to proceed. - Bitte wechseln Sie zum Fortfahren in Ihren Browser. + Please switch to your browser to proceed. + Bitte wechseln Sie zum Fortfahren in Ihren Browser. - Re-open Browser - Browser erneut öffnen + Re-open Browser + Browser erneut öffnen - - + + OwncloudSetupPage - - TextLabel - TextLabel + + + TextLabel + TextLabel - - This is the link to your %1 web interface when you open it in the browser. - Dies ist der Link zu Ihrer %1 Webseite, wenn Sie diese im Browser öffnen. + + Server address + Serveradresse - - + + + This is the link to your %1 web interface when you open it in the browser. + Dies ist der Link zu Ihrer %1 Webseite, wenn Sie diese im Browser öffnen. + + + QObject - - - %nd - - - - %nd - + + 1m + 1m - - - %nh - - - - %nh - + + + Could not create debug archive in selected location! + Es konnte kein Debug-Archiv am ausgewählten Ort erstellt werden! + + + + Failed to create debug archive + Fehler beim Erstellen des Debug-Archivs - - %nm - - - - %nm - + + %nd + delay in days after an activity + + + + - - 1m - 1m + + in the future + in der Zukunft + + + + %nh + delay in hours after an activity + + + + - - Could not create debug archive in selected location! - Es konnte kein Debug-Archiv am ausgewählten Ort erstellt werden! + + 1m + one minute after activity date and time + 1m + + + + %nm + delay in minutes after an activity + + + + - - Failed to create debug archive - Fehler beim Erstellen des Debug-Archivs + + New folder + Neuer Ordner - - in the future - in der Zukunft + + now + jetzt - - New folder - Neuer Ordner + + Paths beginning with '#' character are not supported in VFS mode. + Pfade, die mit dem Zeichen '#' beginnen, werden im VFS-Modus nicht unterstützt. - - now - jetzt + + Some time ago + Vor einiger Zeit - - Paths beginning with '#' character are not supported in VFS mode. - Pfade, die mit dem Zeichen '#' beginnen, werden im VFS-Modus nicht unterstützt. + + Synced %1 + %1 synchronisiert - - Some time ago - Vor einiger Zeit + + The directory %1 cannot be part of your sync directory. Please choose another folder. + Das Verzeichnis %1 kann nicht Teil Ihres Synchronisationsverzeichnisses sein. Bitte wählen Sie einen anderen Ordner. - - Synced %1 - %1 synchronisiert + + You changed %1 + Sie haben %1 geändert - - The directory %1 cannot be part of your sync directory. Please choose another folder. - Das Verzeichnis %1 kann nicht Teil Ihres Synchronisationsverzeichnisses sein. Bitte wählen Sie einen anderen Ordner. + + You created %1 + Sie haben %1 erstellt - - You changed %1 - Sie haben %1 geändert + + You deleted %1 + Sie haben %1 gelöscht - - You created %1 - Sie haben %1 erstellt + + You renamed %1 + Sie haben %1 umbenannt - - You deleted %1 - Sie haben %1 gelöscht + + %1: %2 + this displays an error string (%2) for a file %1 + %1: %2 - - You renamed %1 - Sie haben %1 umbenannt + + Reply + Antworten - - + + ResolveConflictsDialog - - %1 files in conflict - - %1 Datei im Konflikt - %1 Dateien im Konflikt - %1 Dateien im Konflikt - + %1 files in conflict + + %1 Datei im Konflikt + %1 Dateien im Konflikt + + + + + All local versions + Alle lokalen Versionen - - All local versions - Alle lokalen Versionen + + All server versions + Alle Serverversionen + + + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. + Wählen Sie, ob Sie die lokale Version, die Serverversion oder beide behalten möchten. Wenn Sie beide auswählen, wird dem Namen der lokalen Datei eine Nummer hinzugefügt. + + + + %1 files in conflict + indicate the number of conflicts to resolve + + %1 Datei im Konflikt + %1 Dateien im Konflikt + - - All server versions - Alle Serverversionen + + Resolve conflicts + Konflikte lösen - - Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - Wählen Sie, ob Sie die lokale Version, die Serverversion oder beide behalten möchten. Wenn Sie beide auswählen, wird dem Namen der lokalen Datei eine Nummer hinzugefügt. + + Cancel + Abbrechen - - Resolve conflicts - Konflikte lösen + + Solve sync conflicts + Synchronisationskonflikte lösen + + + SesErrorBox - - Solve sync conflicts - Synchronisationskonflikte lösen + + Error + Fehler - - + + SesTrayHeader - - Open local or group folders - Lokale- oder Gruppen-Ordner öffnen + + Open local or group folders + Lokale- oder Gruppen-Ordner öffnen - - Open Nextcloud in browser - HiDrive Next im Browser öffnen + + Open Nextcloud in browser + HiDrive Next im Browser öffnen - - Website - Website + + Website + Website - - + + ShareDelegate - - Copied! - Kopiert! + + Copied! + Kopiert! + + + + Copy share link location + Standort des Freigabelinks kopieren - - Copy share link location - Standort des Freigabelinks kopieren + + Create a new share link + Neuen Freigabe-Link erstellen - - Create a new share link - Neuen Freigabe-Link erstellen + + Share options + Freigabeoptionen - - + + ShareDetailsPage - - Add another link - Weiteren Link hinzufügen + + Add another link + Weiteren Link hinzufügen - - Allow resharing - Weiterteilen erlauben + + Allow resharing + Weiterteilen erlauben - - Allow upload and editing - Hochladen und Bearbeiten erlauben + + + Allow upload and editing + Hochladen und Bearbeiten erlauben - - An error occurred setting the share password. - Es ist ein Fehler beim Festlegen des Freigabekennworts aufgetreten. + + An error occurred setting the share password. + Es ist ein Fehler beim Festlegen des Freigabekennworts aufgetreten. - - Copy share link - Freigabe-Link kopieren + + Copy share link + Freigabe-Link kopieren - - Custom Permissions - Benutzerdefinierte Berechtigungen + + Custom Permissions + Benutzerdefinierte Berechtigungen - Edit share - Freigabe bearbeiten + Edit share + Freigabe bearbeiten - - Enter the note to recipient - Geben Sie eine Notiz an den Empfänger ein + + Enter the note to recipient + Geben Sie eine Notiz an den Empfänger ein - - File drop (upload only) - Dateien ablegen (nur Hochladen) + + File drop (upload only) + Dateien ablegen (nur Hochladen) - - Hide download - Download verbergen + + Hide download + Download verbergen - - Note to recipient - Notiz an Empfänger + + Note to recipient + Notiz an Empfänger - - Password protect - Passwortschutz + + Dismiss + Ablehnen - - Set expiration date - Ablaufdatum setzen + + Password protect + Passwortschutz - Share label - Freigabe-Label + + Set expiration date + Ablaufdatum setzen - - Share link copied! - Freigabelink kopiert! + Share label + Freigabe-Label - - Unshare - Freigabe aufheben + + Share link copied! + Freigabelink kopiert! - - View only - Nur anzeigen + + Unshare + Freigabe aufheben - - + + + View only + Nur anzeigen + + + ShareView - - Password required for new share - Passwort für neue Freigabe erforderlich + + Password required for new share + Passwort für neue Freigabe erforderlich - - Share password - Freigabe-Passwort + + Share password + Freigabe-Passwort - - Sharing is disabled - Teilen ist deaktiviert + + Sharing is disabled + Teilen ist deaktiviert - - Sharing is disabled. - Teilen ist deaktiviert. + + Sharing is disabled. + Teilen ist deaktiviert. - - This item cannot be shared. - Dieses Element kann nicht geteilt werden + + This item cannot be shared. + Dieses Element kann nicht geteilt werden - - + + ShareeSearchField - - Search for users or groups… - Suche nach Benutzern oder Gruppen… + + Search for users or groups… + Suche nach Benutzern oder Gruppen… - - Sharing is not available for this folder - Teilen ist für diesen Ordner nicht verfügbar + + Sharing is not available for this folder + Teilen ist für diesen Ordner nicht verfügbar - - + + SyncStatus - - Sync now - Jetzt synchronisieren + + Sync now + Jetzt synchronisieren + + + + Resolve conflicts + Konflikte lösen - - + + TalkReplyTextField - - Reply to … - Antworten an … + + Reply to … + Antworten an … - - Send reply to chat message - Antwort auf Chat-Nachricht senden + + Send reply to chat message + Antwort auf Chat-Nachricht senden - - + + TestSetUserStatusDialog - - 7 days - 7 Tage + + + 1 day + 1 Tag - - + + + + + + + Don't clear + Nicht löschen + + + + + + + + 1 hour + 1 Stunde + + + + + + + 30 minutes + 30 Minuten + + + + + + 4 hours + 4 Stunden + + + + + + Today + Heute + + + + + + This week + Diese Woche + + + + Less than a minute + Weniger als eine Minute + + + + 1 minute + 1 Minute + + + + 7 days + 7 Tage + + + + Could not fetch predefined statuses. Make sure you are connected to the server. + Vordefinierte Status konnten nicht abgerufen werden. Stellen Sie bitte sicher, dass Sie mit dem Server verbunden sind. + + + + Could not fetch status. Make sure you are connected to the server. + Benutzerstatus konnte nicht abgerufen werden. Bitte sicherstellen, dass Sie mit dem Server verbunden sind. + + + + Status feature is not supported. You will not be able to set your status. + Benutzerstatus-Funktion wird nicht unterstützt. Benutzerstatus kann nicht gesetzt werden. + + + + Could not set status. Make sure you are connected to the server. + Benutzerstatus konnte nicht gesetzt werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. + + + + Emojis are not supported. Some status functionality may not work. + Emoji-Funktion wird nicht unterstützt. Einige Benutzerstatus-Funktionen funktionieren unter Umständen nicht. + + + + Could not clear status message. Make sure you are connected to the server. + Statusnachricht konnte nicht gelöscht werden. Bitte sicherstellen, dass eine Verbindung mit dem Server besteht. + + + TrayFoldersMenuButton - - Files - Dateien + + Files + Dateien + + + Group folder button + Schaltfläche Gruppenordner + + + + Open %1 in file explorer + "%1" im Dateiexplorer öffnen - Group folder button - Schaltfläche Gruppenordner + + Open group folder "%1" + Gruppenordner "%1" öffnen - - Open %1 in file explorer - "%1" im Dateiexplorer öffnen + + Open local folder + Lokalen Ordner öffnen - - Open group folder "%1" - Gruppenordner "%1" öffnen + + Open local or group folders + Lokale- oder Gruppen-Ordner öffnen - - Open local folder - Lokalen Ordner öffnen + + Connected + Verbunden - - Open local folder "%1" - Lokalen Ordner "%1" öffnen + + Disconnected + Getrennt - - User group and local folders menu - Menü für Benutzergruppen und lokale Ordner + + Open local folder "%1" + Lokalen Ordner "%1" öffnen - - + + + User group and local folders menu + Menü für Benutzergruppen und lokale Ordner + + + TrayWindowAccountMenu - - Account switcher and settings menu - Konto-Umschalter und Einstellungsmenü + + Account switcher and settings menu + Konto-Umschalter und Einstellungsmenü + + + + Current account + Aktuelles Konto + + + + Resume sync for all + Synchronisierung für alle fortsetzen - - Current account - Aktuelles Konto + + Pause sync for all + Synchronisierung für alle pausieren - - Current account avatar - Avatar des aktuellen Kontos + + Add account + Konto hinzufügen - - Current account status is do not disturb - Aktueller Kontostatus ist "Nicht stören" + + Settings + Einstellungen - - Current account status is online - Aktueller Kontostatus ist online + + Current account avatar + Avatar des aktuellen Kontos - - Exit - Beenden + + Current account status is do not disturb + Aktueller Kontostatus ist "Nicht stören" - - + + + Current account status is online + Aktueller Kontostatus ist online + + + + Exit + Beenden + + + TrayWindowHeaderBar - - More apps - Weitere Apps + + Website + Website - - Open %1 in browser - %1 im Browser öffnen + + Open Nextcloud in browser + HiDrive Next im Browser öffnen - - Open Nextcloud Talk in browser - Nextcloud Talk im Browser öffnen + + Open local or group folders + Lokale- oder Gruppen-Ordner öffnen - - + + + More apps + Weitere Apps + + + + Open %1 in browser + %1 im Browser öffnen + + + + Open Nextcloud Talk in browser + Nextcloud Talk im Browser öffnen + + + UnifiedSearchInputContainer - - Search files, messages, events … - Suche Dateien, Nachrichten und Termine … + + Search files, messages, events … + Suche Dateien, Nachrichten und Termine … - - + + UnifiedSearchResultFetchMoreTrigger - - Load more results - Weitere Ergebnisse laden + + Load more results + Weitere Ergebnisse laden - - + + UnifiedSearchResultItemSkeleton - - Search result skeleton. - Suchergebnis-Skelett. + + Search result skeleton. + Suchergebnis-Skelett. - - + + + UnifiedSearchResultListItem + + + Load more results + Weitere Ergebnisse laden + + + UnifiedSearchResultNothingFound - - No results for - Keine Ergebnisse für + + No results for + Keine Ergebnisse für - - + + UnifiedSearchResultSectionItem - - Search results section %1 - Suchergebnisse Abschnitt %1 + + Search results section %1 + Suchergebnisse Abschnitt %1 - - + + UserLine - - Account actions - Konto-Aktionen + + Account actions + Konto-Aktionen + + + + + Log out + Abmelden + + + + + Log in + Anmelden - - Remove account - Konto löschen + + Remove account + Konto löschen - - Set status - Status setzen + + Set status + Status setzen - - Switch to account - Zu Konto wechseln + + Switch to account + Zu Konto wechseln - - + + UserStatusSelector - - Appear offline - Offline erscheinen + + Appear offline + Offline erscheinen - - Away - Abwesend + + Away + Abwesend - - Clear status message - Statusnachricht löschen + + Cancel + Abbrechen - - Clear status message after - Statusnachricht löschen nach + + Clear status message + Statusnachricht löschen - - Do not disturb - Nicht stören + + Clear status message after + Statusnachricht löschen nach - - Invisible - Unsichtbar + + Do not disturb + Nicht stören - - Mute all notifications - Alle Benachrichtigungen stummschalten + + Invisible + Unsichtbar - - Online - Online + + Mute all notifications + Alle Benachrichtigungen stummschalten - - Online status - Online-Status + + Online + Online - - Set status message - Statusnachricht setzen + + Online status + Online-Status - - Status message - Statusnachricht + + Set status message + Statusnachricht setzen - - What is your status? - Wie ist Ihr Status? + + Status message + Statusnachricht - - + + + What is your status? + Wie ist Ihr Status? + + + Utility - - %L1 B - %L1 B + + %L1 B + %L1 B - - %L1 GB - %L1 GB + + %L1 GB + %L1 GB - - %L1 KB - %L1 KB + + %L1 KB + %L1 KB - - %L1 MB - %L1 MB + + %L1 MB + %L1 MB - - %L1 TB - %L1 TB + + %L1 TB + %L1 TB - - %n day(s) - - - - - + + %n day(s) + + + + - - %n hour(s) - - - - - + + %n hour(s) + + + + - - %n minute(s) - - - - - + + %n minute(s) + + + + + + + + %1 %2 + %1 %2 - - %n month(s) - - - - - + + %n month(s) + + + + - - %n second(s) - - - - - + + %n second(s) + + + + - - %n year(s) - - - - - - - - + + %n year(s) + + + + + + + Window - Add new account - Neues Konto hinzufügen + Add new account + Neues Konto hinzufügen - - New activities - Neue Aktivitäten + + New activities + Neue Aktivitäten - - Nextcloud desktop main dialog - Nextcloud Desktop-Hauptdialog + + Nextcloud desktop main dialog + Nextcloud Desktop-Hauptdialog - - Unified search results list - Einheitliche Suchergebnisliste + + Unified search results list + Einheitliche Suchergebnisliste - - + + main.cpp - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - %1 benötigt ein funktionierendes Benachrichtigungsfeld. Falls Sie XFCE einsetzen, dann folgen Sie bitte <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">diesen Anweisungen</a>. Andernfalls installieren Sie bitte ein Benachrichtigungsfeld wie zum Beispiel "Trayer“ und versuchen es nochmal. + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. + %1 benötigt ein funktionierendes Benachrichtigungsfeld. Falls Sie XFCE einsetzen, dann folgen Sie bitte <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">diesen Anweisungen</a>. Andernfalls installieren Sie bitte ein Benachrichtigungsfeld wie zum Beispiel "Trayer“ und versuchen es nochmal. - - System Tray not available - Benachrichtigungsfeld (Taskleiste) ist nicht verfügbar. + + System Tray not available + Benachrichtigungsfeld (Taskleiste) ist nicht verfügbar. - - + + nextcloudTheme::aboutInfo() - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Gebaut von der git-Revision <a href="%1">%2</a> auf %3, %4 verwendet Qt %5, %6</small></p> + + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Gebaut von der git-Revision <a href="%1">%2</a> auf %3, %4 verwendet Qt %5, %6</small></p> - - + + progress - - Deleted - Gelöscht + + Deleted + Gelöscht + + + + Downloaded + Heruntergeladen + + + + downloading + Herunterladen + + + + error + Fehler - - Downloaded - Heruntergeladen + + Filesystem access error + Zugriffsfehler im Dateisystem - - downloading - Herunterladen + + Ignored + Ignoriert - - error - Fehler + + Moved to %1 + Verschoben nach %1 - - Filesystem access error - Zugriffsfehler im Dateisystem + + moving + Verschiebe - - Ignored - Ignoriert + + Replaced by virtual file + Ersetzt durch virtuelle Datei - - Moved to %1 - Verschoben nach %1 + + Server version downloaded, copied changed local file into case conflict conflict file + Serverversion heruntergeladen, geänderte lokale Datei in Fallkonflikt-Konfliktdatei kopiert - - moving - Verschiebe + + Server version downloaded, copied changed local file into conflict file + Serverversion heruntergeladen. Die bearbeitete lokale Datei wurde in eine Konfliktdatei kopiert. - - Replaced by virtual file - Ersetzt durch virtuelle Datei + + + Unknown + Unbekannt - - Server version downloaded, copied changed local file into case conflict conflict file - Serverversion heruntergeladen, geänderte lokale Datei in Fallkonflikt-Konfliktdatei kopiert + + Updated local metadata + Lokale Metadaten aktualisiert - - Server version downloaded, copied changed local file into conflict file - Serverversion heruntergeladen. Die bearbeitete lokale Datei wurde in eine Konfliktdatei kopiert. + + Error + Fehler - - Unknown - Unbekannt + + Updated local virtual files metadata + Aktualisierte Metadaten für lokale virtuelle Dateien - - Updated local metadata - Lokale Metadaten aktualisiert + + deleting + Lösche - - Updated local virtual files metadata - Aktualisierte Metadaten für lokale virtuelle Dateien + + ignoring + Ignoriere - - updating local metadata - Aktualisiere lokale Metadaten + + updating local metadata + Aktualisiere lokale Metadaten - - updating local virtual files metadata - Aktualisierung der Metadaten lokaler virtueller Dateien + + updating local virtual files metadata + Aktualisierung der Metadaten lokaler virtueller Dateien - - Uploaded - Hochgeladen + + Uploaded + Hochgeladen - - uploading - Lade hoch + + uploading + Lade hoch - - Virtual file created - Virtuelle Datei erstellt + + Virtual file created + Virtuelle Datei erstellt - - + + theme - - Aborting … - Breche ab … + + Aborting … + Breche ab … - - Preparing to sync - Synchronisierung wird vorbereitet + + Preparing to sync + Synchronisierung wird vorbereitet - - Setup Error - Installationsfehler + + Setup Error + Installationsfehler - - Status undefined - Status undefiniert + + Status undefined + Status undefiniert - - Sync Error - Synchronisierungsfehler + + Sync Error + Synchronisierungsfehler - - Sync is paused - Synchronisierung ist angehalten. + + Sync is paused + Synchronisierung ist angehalten. - - Sync is running - Synchronisierung läuft + + Sync is running + Synchronisierung läuft - - Sync Success - Synchronisierung erfolgreich + + Sync Success + Synchronisierung erfolgreich - - Sync Success, some files were ignored. - Synchronisierung abgeschlossen, einige Dateien wurden ignoriert. + + Sync Success, some files were ignored. + Synchronisierung abgeschlossen, einige Dateien wurden ignoriert. - - Waiting to start sync - Warte, um mit der Synchronisierung zu beginnen + + Waiting to start sync + Warte, um mit der Synchronisierung zu beginnen - - + + utility - - Always available locally - Immer lokal verfügbar + + Always available locally + Immer lokal verfügbar - - Available online only - Nur online verfügbar + + Available online only + Nur online verfügbar - - Could not open browser - Konnte Browser nicht öffnen + + Could not open browser + Konnte Browser nicht öffnen - - Could not open email client - Die E-Mail-Anwendung konnte nicht geöffnet werden + + Could not open email client + Die E-Mail-Anwendung konnte nicht geöffnet werden - - Currently available locally - Derzeit lokal verfügbar + + Currently available locally + Derzeit lokal verfügbar - - Free up local space - Lokalen Speicherplatz freigeben + + Free up local space + Lokalen Speicherplatz freigeben - - Make always available locally - Immer lokal verfügbar machen + + Make always available locally + Immer lokal verfügbar machen - - Some available online only - Einige sind nur online abrufbar + + Some available online only + Einige sind nur online abrufbar - - There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - Die URL %1 konnte aufgrund eines Fehlers beim Start des Browsers nicht aufgerufen werden. Ist vielleicht kein Standardbrowser konfiguriert? + + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? + Die URL %1 konnte aufgrund eines Fehlers beim Start des Browsers nicht aufgerufen werden. Ist vielleicht kein Standardbrowser konfiguriert? - - There was an error when launching the email client to create a new message. Maybe no default email client is configured? - Fehler beim Öffnen der E-Mail-Anwendung zum Erstellen einer neuen Nachricht. Vielleicht ist keine Standard-E-Mail Anwendung eingerichtet? + + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + Fehler beim Öffnen der E-Mail-Anwendung zum Erstellen einer neuen Nachricht. Vielleicht ist keine Standard-E-Mail Anwendung eingerichtet? - + diff --git a/translations/client_en.ts b/translations/client_en.ts index 947bb0c82fc95..8a6cca5ae0f79 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -1,6314 +1,7323 @@ - - - + + + + + - &Automatically check for Updates - &Automatically check for Updates + &Automatically check for Updates + &Automatically check for Updates - &Launch on System Startup - &Launch on System Startup + &Launch on System Startup + &Launch on System Startup - Copy link - Copy link + Copy link + Copy link - No Proxy - No Proxy + No Proxy + No Proxy - Remove All Files? - Remove All Files? + Remove All Files? + Remove All Files? - Show Call Notifications - + Show Server &Notifications + Show Server &Notifications - Show Server &Notifications - Show Server &Notifications + Use &Monochrome Icons + Use &Monochrome Icons - - Show sync folders in &Explorer's navigation pane - - - - Use &Monochrome Icons - Use &Monochrome Icons - - - + + ActivityItem - - In %1 - In %1 + + In %1 + In %1 - - Open %1 locally - Open %1 locally + + Open %1 locally + Open %1 locally - - + + ActivityItemContent - - Dismiss - Dismiss + + Dismiss + Dismiss - - Open file details - Open file details + + Open file details + Open file details - - + + ActivityList - - Activity list - Activity list + + Activity list + Activity list - - No activities yet - No activities yet + + No activities yet + No activities yet - - + + BasicComboBox - - Clear status message menu - Delete status message menu + + Clear status message menu + Delete status message menu - - + + CallNotificationDialog - - Answer Talk call notification - + + Answer Talk call notification + - - Decline - Decline + + Decline + Decline - - Decline Talk call notification - Decline Talk call notification + + Decline Talk call notification + Decline Talk call notification - - Talk notification caller avatar - Talk notification caller avatar + + Talk notification caller avatar + Talk notification caller avatar - - + + CloudProviderWrapper - - %1 (%2, %3) - %1 (%2, %3) + + %1 (%2, %3) + %1 (%2, %3) - - Checking for changes in "%1" - Checking for changes in "%1" + + Checking for changes in "%1" + Checking for changes in "%1" - - Help - Help + + Help + Help - - Log out - Log out + + Log out + Log out - - No recently changed files - + + + No recently changed files + - - Open website - Open website + + Open website + Open website - - Pause synchronization - + + Pause synchronization + - - Quit sync client - + + Quit sync client + - - Recently changed - + + Recently changed + - - Settings - Settings + + Settings + Settings - - Sync paused - Sync paused + + Sync paused + Sync paused - - Syncing - Syncing + + Syncing + Syncing - - Syncing %1 - + + Syncing %1 + - - Syncing %1 (%2 left) - + + Syncing %1 (%2 left) + - - Syncing %1 of %2 - + + Syncing %1 of %2 + - - Syncing %1 of %2 (%3 left) - + + Syncing %1 of %2 (%3 left) + - - + + ConflictDelegate - - Local version - + + Local version + - - Server version - + + Server version + - - + + CrashReporter - - <html><head/><body><p><br/></p></body></html> - + + <html><head/><body><p><br/></p></body></html> + + + + + Abort + Abort - - Abort - Abort + + + + + + Close + - - Close - + + Failed to send crash info. + - - Don't send - + + Don't send + - - Gathering debug information... - Gathering debug information... + + Gathering debug information... + Gathering debug information... - - Ready to send debug information (<a href="%1">view backtrace</a>). - + + Ready to send debug information (<a href="%1">view backtrace</a>). + - - Send this report - + + Send this report + - - Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. - + + Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. + - - Tomahawk Crash Reporter - + + Tomahawk Crash Reporter + - - Uploaded %L1 of %L2 KB. - + + Uploaded %L1 of %L2 KB. + - - We cannot gather useful debug information on your system. - + + + + We cannot gather useful debug information on your system. + - - You can disable sending crash reports in the configuration dialog. - + + You can disable sending crash reports in the configuration dialog. + - - + + EditFileLocallyLoadingDialog - - Opening file for local editing - + + Opening file for local editing + - - + + EmojiPicker - - No recent emojis - + + No recent emojis + - - + + ErrorBox - - Error - Error + + Error + Error - - + + FakeHangingReply - - Operation canceled - Operation canceled + + Operation canceled + Operation canceled - - + + FileDetailsPage - Sharing - Sharing + Sharing + Sharing - - + + + Dismiss + Dismiss + + + FileDetailsWindow - - File details of %1 · %2 - + + File details of %1 · %2 + - - + + FileProviderEvictionDialog - - Evict materialised files - + + Evict materialised files + - - Materialised items - + + Materialised items + - - Reload - + + Reload + - - + + FileProviderFastEnumerationSettings - - Enable fast sync - + + Enable fast sync + - - Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + - - + + FileProviderFileDelegate - - Delete - + + Delete + - - + + FileProviderSettings - - Advanced - + + Advanced + - - Create debug archive - + + Create debug archive + - - Enable virtual files - + + Enable virtual files + - - General settings - + + General settings + - - Signal file provider domain - + + Signal file provider domain + - - Virtual files settings - + + Virtual files settings + - - + + FileProviderStorageInfo - - %1 GB of %2 GB remote files synced - + + %1 GB of %2 GB remote files synced + - - Evict local copies... - Evict local copies... + + Evict local copies... + Evict local copies... - - Local storage use - + + Local storage use + - - + + FileProviderSyncStatus - - All synced! - All synced! + + All synced! + All synced! + + + + Syncing + Syncing - - + + FileSystem - Could not make directories in trash - Could not make directories in trash + Could not make directories in trash + Could not make directories in trash - Could not move "%1" to "%2" - Could not move "%1" to "%2" + Could not move "%1" to "%2" + Could not move "%1" to "%2" - - Could not remove folder "%1" - + + Could not remove folder "%1" + - - Error removing "%1": %2 - + + Error removing "%1": %2 + - Moving to the trash is not implemented on this platform - Moving to the trash is not implemented on this platform + Moving to the trash is not implemented on this platform + Moving to the trash is not implemented on this platform - - + + Flow2AuthWidget - - An error occurred while connecting. Please try again. - + + An error occurred while connecting. Please try again. + - - Browser Authentication - + + Browser Authentication + - - Copy Link - Copy Link + + Copy Link + Copy Link - - Logo - Logo + + Logo + Logo - - Reopen Browser - Reopen Browser + + Reopen Browser + Reopen Browser - - Switch to your browser to connect your account - + + Switch to your browser to connect your account + - - + + FolderWizardSelectiveSync - - Add Folder Sync - Add Folder Sync + + Add Folder Sync + Add Folder Sync - - Step 3 of 3: Selektive Synchronisation - Step 3 of 3: Selektive Synchronisation + + Step 3 of 3: Selektive Synchronisation + Step 3 of 3: Selektive Synchronisation - - + + FolderWizardSourcePage - - &Choose - &Choose + + Add Folder Sync + Add Folder Sync + + + + &Choose + &Choose - &Choose … - &Choose … + &Choose … + &Choose … - Pick a local folder on your computer to sync - Pick a local folder on your computer to sync + Pick a local folder on your computer to sync + Pick a local folder on your computer to sync - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized. + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized. - - Step 1 of 3: Select local folder - Step 1 of 3: Select local folder + + Step 1 of 3: Select local folder + Step 1 of 3: Select local folder - - + + FolderWizardTargetPage - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - Both folders are permanently linked and the respective contents are automatically synchronized and updated. + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Both folders are permanently linked and the respective contents are automatically synchronized and updated. - - Create folder - Create folder + + Create folder + Create folder - - Folders - + + Folders + - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + + Add Folder Sync + Add Folder Sync - - Refresh - Refresh + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - Select a remote destination folder - Select a remote destination folder + + Refresh + Refresh - - Step 2 of 3: Directory in your %1 - Step 2 of 3: Directory in your %1 + Select a remote destination folder + Select a remote destination folder - - + + + Step 2 of 3: Directory in your %1 + Step 2 of 3: Directory in your %1 + + + KMessageWidget - - &Close - &Close + + &Close + &Close - - Close message - + + Close message + - - + + OCC::AbstractNetworkJob - - Connection timed out - + + Connection timed out + - - Server replied "%1 %2" to "%3 %4" - + + Server replied "%1 %2" to "%3 %4" + - - Unknown error: network reply was deleted - + + Unknown error: network reply was deleted + - - + + OCC::Account - - File %1 is already locked by %2. - + + File %1 is already locked by %2. + - - Lock operation on %1 failed with error %2 - + + Lock operation on %1 failed with error %2 + - - Unlock operation on %1 failed with error %2 - + + Unlock operation on %1 failed with error %2 + - - + + OCC::AccountManager - - %1 accounts were detected from a legacy desktop client. + + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - %1 accounts were detected from a legacy desktop client. + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - - 1 account was detected from a legacy desktop client. + + 1 account was detected from a legacy desktop client. Should the account be imported? - + - An existing configuration from a legacy desktop client was detected. + An existing configuration from a legacy desktop client was detected. Should an account import be attempted? - An existing configuration from a legacy desktop client was detected. + An existing configuration from a legacy desktop client was detected. Should an account import be attempted? - - Could not import accounts from legacy client configuration. - - - - - Import - + + Could not import accounts from legacy client configuration. + - - Legacy import - + + Import + - - Skip - Skip + + + Legacy import + - Successfully imported account from legacy client: %1 - + + Skip + Skip - - + + OCC::AccountSettings - - (experimental) - + + (experimental) + - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + - - %1 as %2 - + + %1 as %2 + - - %1 in use - + + %1 in use + - - %1 of %2 in use - + + %1 of %2 in use + - - <p>Could not create local folder <i>%1</i>.</p> - + + <p>Could not create local folder <i>%1</i>.</p> + - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + - - Apply - + + Apply + - - Apply manual changes - + + Apply manual changes + - - Availability - + + + Availability + - - Cancel - + + + + Cancel + - - Choose what to sync - + + Choose what to sync + - - Confirm Folder Sync Connection Removal - + + Confirm Folder Sync Connection Removal + - - Connected to %1. - + + Connected to %1. + - - Connected with <server> as <user> - + + Connected with <server> as <user> + - - Connecting to %1 … - + + Connecting to %1 … + - - Could not encrypt folder because the folder does not exist anymore - + + Could not encrypt folder because the folder does not exist anymore + - - Create new folder - + + + Create new folder + - - Currently there is no storage usage information available. - + + Currently there is no storage usage information available. + - - Disable encryption - + + Disable encryption + - - Disable end-to-end encryption - + + Disable end-to-end encryption + - - Disable end-to-end encryption for %1? - + + Disable end-to-end encryption for %1? + - - Disable support - + + Disable support + - - Disable virtual file support … - + + Disable virtual file support … + - - Disable virtual file support? - + + Disable virtual file support? + - - Display mnemonic - + + Display mnemonic + - - Do not encrypt folder - + + + Do not encrypt folder + - - Edit Ignored Files - + + + Edit Ignored Files + - - Enable virtual file support %1 … - + + Enable virtual file support %1 … + - - Encrypt - + + Encrypt + - - Encrypt folder - + + + Encrypt folder + - - Encryption failed - + + Encryption failed + - - End-to-end Encryption - + + End-to-end Encryption + - - End-to-end encryption has been enabled for this account - + + End-to-end encryption has been enabled for this account + - - End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. + - - End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. Would you like to set up end-to-end encryption? - + - - End-to-end encryption mnemonic - + + End-to-end encryption mnemonic + - - End-to-end Encryption with Virtual Files - + + End-to-end Encryption with Virtual Files + - - Expand Memory - Expand Memory + + Expand Memory + Expand Memory - - Folder creation failed - + + Folder creation failed + - - Force sync now - + + Force sync now + - - https://wl.hidrive.com/easy/0057 - https://wl.hidrive.com/easy/0077 + + https://wl.hidrive.com/easy/0057 + https://wl.hidrive.com/easy/0077 - - No %1 connection configured. - + + No %1 connection configured. + - - No account configured. - + + No account configured. + - No connection to %1 at %2. - No connection to %1 at %2. + No connection to %1 at %2. + No connection to %1 at %2. - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - - Open folder - + + + Open folder + - - Pause sync - + + Pause sync + - - Please wait for the folder to sync before trying to encrypt it. - + + Please wait for the folder to sync before trying to encrypt it. + - - Remove folder sync connection - + + Remove folder sync connection + - - Remove Folder Sync Connection - + + Remove Folder Sync Connection + - - Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. + - - Restart sync - + + Restart sync + - - Resume sync - + + Resume sync + - - Server %1 is currently being redirected, or your connection is behind a captive portal. - + + Server %1 is currently being redirected, or your connection is behind a captive portal. + - - Server %1 is currently in maintenance mode. - + + Server %1 is currently in maintenance mode. + - - Server %1 is temporarily unavailable. - + + Server %1 is temporarily unavailable. + - - Server configuration error: %1 at %2. - + + Server configuration error: %1 at %2. + - - Set up encryption - + + There are folders that were not synchronized because they are too big: + - - Signed out from %1. - + + There are folders that were not synchronized because they are external storages: + - - Standard file sync - + + There are folders that were not synchronized because they are too big or external storages: + - - Storage space %1% occupied - Storage space %1% occupied + + Set up encryption + - - Storage space: … - + + Signed out from %1. + - - Sync Running - + + Standard file sync + - - Synchronize all - + + Storage space %1% occupied + Storage space %1% occupied - - Synchronize none - + + + Storage space: … + - - The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - + + Sync Running + - - The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - + + Synchronize all + - - The server version %1 is unsupported! Proceed at your own risk. - + + Synchronize none + - - The syncing operation is running.<br/>Do you want to terminate it? - + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully + - - There are folders that have grown in size beyond %1MB: %2 - + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully + - - There are folders that were not synchronized because they are external storages: - + + The server version %1 is unsupported! Proceed at your own risk. + - - There are folders that were not synchronized because they are too big or external storages: - + + The syncing operation is running.<br/>Do you want to terminate it? + - - There are folders that were not synchronized because they are too big: - + + There are folders that have grown in size beyond %1MB: %2 + - - This account supports end-to-end encryption - + + This account supports end-to-end encryption + - - This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. The only advantage of disabling virtual file support is that the selective sync feature will become available again. This action will abort any currently running synchronization. - + - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + - - Unable to connect to %1. - + + Unable to connect to %1. + - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + - - Virtual file sync - + + Virtual file sync + - - Warning - + + Warning + - - You cannot encrypt a folder with contents, please remove the files. + + You cannot encrypt a folder with contents, please remove the files. Wait for the new sync, then encrypt it. - + - - You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". + - - + + OCC::AccountSetupFromCommandLineJob - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + - - There was an invalid response to an authenticated WebDAV request - + + There was an invalid response to an authenticated WebDAV request + - - + + OCC::AccountState - - Asking Credentials - + + Asking Credentials + - - Configuration error - + + Configuration error + - - Connected - + + Connected + - - Disconnected - + + Disconnected + - - Maintenance mode - + + Maintenance mode + - - Network error - + + Network error + - - Redirect detected - + + Redirect detected + - - Service unavailable - + + Service unavailable + - - Signed out - + + Signed out + - - Unknown account state - + + Unknown account state + - - + + OCC::ActivityListModel - - Fetching activities … - + + Fetching activities … + - - Files from the ignore list as well as symbolic links are not synced. - + + Files from the ignore list as well as symbolic links are not synced. + - - For more activities please open the Activity app. - + + For more activities please open the Activity app. + - - Network error occurred: client will retry syncing. - + + Network error occurred: client will retry syncing. + - - + + OCC::AddCertificateDialog - - An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. + - - Browse … - + + Browse … + - - Certificate & Key (pkcs12): - + + Certificate & Key (pkcs12): + - - Certificate files (*.p12 *.pfx) - + + Certificate files (*.p12 *.pfx) + - - Certificate password: - + + Certificate password: + - - Select a certificate - + + Select a certificate + - - SSL client certificate authentication - + + SSL client certificate authentication + - - This server probably requires a SSL client certificate. - + + This server probably requires a SSL client certificate. + - - + + OCC::Application - - %1 accounts - + + 1 account + + + + + 1 folder + - - %1 folders - + + Continue + - - 1 account - + + newer + newer software version + - - 1 folder - + + older + older software version + - - Continue - + + deleting + - - deleting - + + %1 accounts + number of accounts imported + - - Error accessing the configuration file - + + %1 folders + number of folders imported + - - ignoring - + + Legacy import + - - Imported %1 and %2 from a legacy desktop client. + + Imported %1 and %2 from a legacy desktop client. %3 - + number of accounts and folders imported. list of users. + - - newer - + + Error accessing the configuration file + - - older - + + ignoring + - - Quit - + + Quit + - - Quit %1 - + + Quit %1 + - - Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. + - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + - - + + OCC::AuthenticationDialog - - &Password: - + + &Password: + - - &Username: - + + &Username: + - - Authentication Required - + + Authentication Required + - - Enter username and password for "%1" at %2. - + + Enter username and password for "%1" at %2. + - - + + OCC::BasePropagateRemoteDeleteEncrypted - "%1 Failed to unlock encrypted folder %2". - + + "%1 Failed to unlock encrypted folder %2". + - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + - - + + OCC::BulkPropagatorJob - - Error updating metadata: %1 - + + Error updating metadata: %1 + - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + - - File %1 has invalid modification time. Do not upload to the server. - + + File %1 has invalid modification time. Do not upload to the server. + - - File %1 has invalid modified time. Do not upload to the server. - + + File %1 has invalid modified time. Do not upload to the server. + - - File Removed (start upload) %1 - + + File Removed (start upload) %1 + - - Local file changed during sync. - + + + Local file changed during sync. + - - Local file changed during syncing. It will be resumed. - + + Local file changed during syncing. It will be resumed. + - - Network error: %1 - + + Network error: %1 + - - Restoration failed: %1 - + + Restoration failed: %1 + - - The file %1 is currently in use - + + The file %1 is currently in use + - - The local file was removed during sync. - + + The local file was removed during sync. + - - + + OCC::CaseClashConflictSolver - - Cannot rename file because a file with the same name already exists on the server. Please pick another name. - + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + - - Could not rename file. Please make sure you are connected to the server. - + + Could not rename file. Please make sure you are connected to the server. + - - Failed to fetch permissions with error %1 - + + Failed to fetch permissions with error %1 + - - Filename contains leading and trailing spaces. - + + Filename contains leading and trailing spaces. + - - Filename contains leading spaces. - + + Filename contains leading spaces. + - - Filename contains trailing spaces. - + + Filename contains trailing spaces. + - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + - - + + OCC::CaseClashFilenameDialog - - %1 does not support equal file names with only letter casing differences. - + + %1 does not support equal file names with only letter casing differences. + + + + + + 0 byte + + + + + Case Clash Conflict + + + + + Case clashing file + - - 0 byte - + + Existing file + - - Case Clash Conflict - + + Error + Error - - Case clashing file - + + file A + - - Existing file - + + file B + - - file A - + + Filename contains illegal characters: %1 + - - file B - + + New filename + - - Filename contains illegal characters: %1 - + + + Open clashing file + - - New filename - + + + Open existing file + - - Open clashing file - + + Please enter a new name for the clashing file: + - - Open existing file - + + Rename file + - - Please enter a new name for the clashing file: - + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + - - Rename file - + + Filename contains leading and trailing spaces. + - - The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - + + Filename contains leading spaces. + - - The file could not be synced because it generates a case clash conflict with an existing file on this system. - + + Filename contains trailing spaces. + - - today - + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + - - Use invalid name - + + + today + - - + + + Use invalid name + + + + OCC::CleanupPollsJob - - Error writing metadata to the database - + + Error writing metadata to the database + - - + + OCC::ClientSideEncryption - - Enter E2E passphrase - + + Enter E2E passphrase + - - Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + - - + + OCC::ConflictDialog - - <a href="%1">Open local version</a> - + + Local version + + + + + + today + + + + + + 0 byte + - - <a href="%1">Open server version</a> - + + <a href="%1">Open local version</a> + - - Click to open the file - + + Server version + - - Conflicting versions of %1. - + + <a href="%1">Open server version</a> + - - Keep both versions - + + + Click to open the file + - - Keep local version - + + + Conflicting versions of %1. + - - Keep selected version - + + Keep both versions + - - Keep server version - + + Keep local version + - - Open local version - + + + Keep selected version + - - Open server version - + + Keep server version + - - Sync Conflict - + + Open local version + - - Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. - + + Open server version + - - + + + Sync Conflict + + + + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + + + + OCC::ConflictSolver - - Confirm deletion - + + Confirm deletion + - - Do you want to delete the directory <i>%1</i> and all its contents permanently? - + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + - - Do you want to delete the file <i>%1</i> permanently? - + + Do you want to delete the file <i>%1</i> permanently? + - - Moving file failed: + + + Moving file failed: %1 - + + + + + + Error + Error - - + + OCC::ConnectionValidator - - Authentication error: Either username or password are wrong. - + + Authentication error: Either username or password are wrong. + - - Connection issue - + + Connection issue + - - No Nextcloud account configured - + + No Nextcloud account configured + - - Please update to the latest server and restart the client. - + + Please update to the latest server and restart the client. + - - The configured server for this client is too old - + + The configured server for this client is too old + - - The provided credentials are not correct - + + The provided credentials are not correct + - - Timeout - + + Timeout + - - + + OCC::DiscoveryPhase - - Error while canceling deletion of %1 - + + Error while canceling deletion of %1 + - - Error while canceling deletion of a file - + + Error while canceling deletion of a file + - - + + OCC::DiscoverySingleDirectoryJob - - Encrypted metadata setup error: initial signature from server is empty. - Encrypted metadata setup error: initial signature from server is empty. + + Encrypted metadata setup error: initial signature from server is empty. + Encrypted metadata setup error: initial signature from server is empty. - - Encrypted metadata setup error! - + + + Encrypted metadata setup error! + - - Server error: PROPFIND reply is not XML formatted! - + + + Server error: PROPFIND reply is not XML formatted! + - - + + OCC::DiscoverySingleLocalDirectoryJob - - Directory not accessible on client, permission denied - + + Directory not accessible on client, permission denied + - - Directory not found: %1 - + + Directory not found: %1 + - - Error while opening directory %1 - + + Error while opening directory %1 + - - Error while reading directory %1 - + + Error while reading directory %1 + - - Filename encoding is not valid - + + Filename encoding is not valid + - - + + OCC::EditLocallyJob - - An error occurred during data retrieval. - + + + + An error occurred during data retrieval. + - - An error occurred during setup. - + + An error occurred during setup. + - - An error occurred trying to synchronise the file to edit locally. - + + + An error occurred trying to synchronise the file to edit locally. + - - An error occurred trying to verify the request to edit locally. - + + An error occurred trying to verify the request to edit locally. + - - Could not find a file for local editing. Make sure it is not excluded via selective sync. - + + + + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + - - Could not find a file for local editing. Make sure its path is valid and it is synced locally. - + + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + - - Could not find a remote file info for local editing. Make sure its path is valid. - + + Could not find a remote file info for local editing. Make sure its path is valid. + - - Could not find an account for local editing. - + + Could not find an account for local editing. + - - Could not open %1 - + + Could not open %1 + - - Could not start editing locally. - + + + + + + + + + Could not start editing locally. + - - Could not validate the request to open a file from server. - + + + Could not validate the request to open a file from server. + - - File %1 already locked. - + + Server error: PROPFIND reply is not XML formatted! + - - File %1 could not be locked. - + + File %1 already locked. + - - File %1 now locked. - + + File %1 could not be locked. + - - Invalid file path was provided. - + + File %1 now locked. + - - Invalid local file path. - + + Invalid file path was provided. + - - Invalid token received. - + + Invalid local file path. + - - Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - + + Invalid token received. + - - Please try again. - + + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + - - + + + + + + + + Please try again. + + + + OCC::EncryptFolderJob - - Could not generate the metadata for encryption, Unlocking the folder. + + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. - + - - + + OCC::EncryptedFolderMetadataHandler - - Error fetching encrypted folder ID. - + + Error fetching encrypted folder ID. + - - Error fetching metadata. - + + + + + + + Error fetching metadata. + - - Error locking folder. - + + + + Error locking folder. + - - Error parsing or decrypting metadata. - + + Error parsing or decrypting metadata. + - - Failed to upload metadata - + + Failed to upload metadata + - - + + OCC::FileDetails - - %1 day(s) ago - - - - %1 day(s) ago - + + %1 second(s) ago + seconds elapsed since file last modified + + + + - - %1 hour(s) ago - - - - %1 hour(s) ago - + + %1 minute(s) ago + minutes elapsed since file last modified + + + + - - %1 minute(s) ago - - - - %1 minute(s) ago - + + %1 hour(s) ago + hours elapsed since file last modified + + + + - - %1 month(s) ago - - - - %1 month(s) ago - + + %1 day(s) ago + days elapsed since file last modified + + + + - - %1 second(s) ago - - - - %1 second(s) ago - + + %1 month(s) ago + months elapsed since file last modified + + + + - - %1 year(s) ago - - - - %1 year(s) ago - + + %1 year(s) ago + years elapsed since file last modified + + + + - - Locked by %1 - Expires in %2 minute(s) - - - - Locked by %1 - Expires in %2 minute(s) - - - - + + Locked by %1 - Expires in %2 minute(s) + remaining time before lock expires + + + + + + + OCC::Flow2Auth - - Could not parse the JSON returned from the server: <br><em>%1</em> - + + + Could not parse the JSON returned from the server: <br><em>%1</em> + - - Error returned from the server: <em>%1</em> - + + + Error returned from the server: <em>%1</em> + - - The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + - - The reply from the server did not contain all expected fields - + + + The reply from the server did not contain all expected fields + - - The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + - - There was an error accessing the "token" endpoint: <br><em>%1</em> - + + + There was an error accessing the "token" endpoint: <br><em>%1</em> + - - + + OCC::Flow2AuthWidget - - Link copied to clipboard. - + + Link copied to clipboard. + - - Open Browser - Open Browser + + Open Browser + Open Browser - - Polling for authorization - + + Polling for authorization + - - Starting authorization - + + + Error + Error - - Unable to open the Browser, please copy the link to your Browser. - + + Starting authorization + - - Waiting for authorization - + + Copy Link + Copy Link - - - OCC::Folder - - - %1 and %n other file(s) are currently locked. - - - - - + + + Switch to your browser to connect your account + + + + Unable to open the Browser, please copy the link to your Browser. + + + + + Waiting for authorization + + + + + OCC::Folder - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - - - - - + + %1 and %n other file(s) are currently locked. + + + + - - %1 and %n other file(s) have been added. - - - - - + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + + + - - %1 and %n other file(s) have been removed. - - - - - + + %1 and %n other file(s) have been added. + + + + - - %1 and %n other file(s) have been updated. - - - - - + + %1 and %n other file(s) have been removed. + + + + - - %1 could not be synced due to an error. See the log for details. - + + %1 has been removed. + %1 names a file. + - - %1 has a sync conflict. Please check the conflict file! - + + %1 has been added. + %1 names a file. + - - %1 has and %n other file(s) have sync conflicts. - - - - - + + %1 and %n other file(s) have been updated. + + + + - - %1 has been added. - + + %1 has been updated. + %1 names a file. + - - - %1 has been moved to %2 and %n other file(s) have been moved. - - - - - + + + %1 has been renamed to %2. + %1 and %2 name files. + - - %1 has been moved to %2. - + + %1 could not be synced due to an error. See the log for details. + - - %1 has been removed. - + + %1 has a sync conflict. Please check the conflict file! + - - %1 has been renamed to %2 and %n other file(s) have been renamed. - - - - - + + %1 has and %n other file(s) have sync conflicts. + + + + - - - %1 has been renamed to %2. - + + + %1 has been moved to %2 and %n other file(s) have been moved. + + + + - - %1 has been updated. - + + %1 has been moved to %2. + - - - %1 is currently locked. - + + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + + + - - %1 is not readable. - + + %1 is currently locked. + - - %1 should be a folder but is not. - + + %1 is not readable. + - - A folder from an external storage has been added. - + + %1 should be a folder but is not. + - - A folder has surpassed the set folder size limit of %1MB: %2. + + A folder has surpassed the set folder size limit of %1MB: %2. %3 - + - - A large number of files in the server have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. - A large number of files on the server have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + A large number of files on the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. - - A large number of files in your local '%1' folder have been deleted. -Please confirm if you'd like to proceed with these deletions. + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. Alternatively, you can restore all deleted files by downloading them from the server. - A large number of files in your local '%1' folder have been deleted. -Please confirm if you'd like to proceed with these deletions. + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. Alternatively, you can restore all deleted files by downloading them from the server. - - A new folder larger than %1 MB has been added: %2. - - - - All files in the local folder "%1" were deleted. + All files in the local folder "%1" were deleted. If you restore the files, they will be downloaded again from the server. - All files in the local folder "%1" were deleted. + All files in the local folder "%1" were deleted. If you restore the files, they will be downloaded again from the server. - All files in the server folder "%1" were deleted. + All files in the server folder "%1" were deleted. If you restore the files, they will be uploaded again to the server. - All files in the server folder "%1" were deleted. + All files in the server folder "%1" were deleted. If you restore the files, they will be uploaded again to the server. - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - - Changes in synchronized folders could not be tracked reliably. + + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). %1 - + + + + + Could not read system exclude file + - - Could not read system exclude file - + Keep files + Keep files - Keep files - Keep files + + Keep syncing + - - Keep syncing - + + Local folder %1 does not exist. + - - Local folder %1 does not exist. - + + Please go in the settings to select it if you wish to download it. + - - Please go in the settings to select it if you wish to download it. - + Proceed to remove all files + Proceed to remove all files - Proceed to remove all files - Proceed to remove all files + + Proceed with Deletion + Proceed with deletion - - Proceed with Deletion - Proceed with deletion + Remove all files + Remove all files - Remove all files - Remove all files + + Remove all files? + Remove all files? - - Remove all files? - Remove all files? + Restore files + Restore files - Restore files - Restore files + + Restore Files from Server + Restore files from server - - Restore Files from Server - Restore files from server + + Restore Files to Server + Restore files to server - - Restore Files to Server - Restore files to server + + Stop syncing + - - Stop syncing - + + Sync Activity + - - Sync Activity - + + A new folder larger than %1 MB has been added: %2. + + - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. - + + A folder from an external storage has been added. + + - - The folder %1 has surpassed the set folder size limit of %2MB. - + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. - + + The folder %1 has surpassed the set folder size limit of %2MB. + - - Virtual file download failed with code "%1", status "%2" and error message "%3" - + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + - - Would you like to stop syncing this folder? - + + Virtual file download failed with code "%1", status "%2" and error message "%3" + - - + + + Would you like to stop syncing this folder? + + + + OCC::FolderCreationDialog - - %1 Create new folder - %1 Create new folder + + %1 Create new folder + %1 Create new folder + + + + Could not create a folder! Check your write permissions. + + + + + Error + Error - - Could not create a folder! Check your write permissions. - + + Create new folder + - - Enter folder name - + + Enter folder name + - - Folder already exists - + + Folder already exists + - - + + OCC::FolderMan - - (backup %1) - + + %1 (Sync is paused) + - - (backup) - + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + - - %1 (Sync is paused) - + + Could not reset folder state + - - An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. - + + (backup) + - - Could not reset folder state - + + (backup %1) + - - Last sync was successful. - + + Last sync was successful. + - - No valid folder selected! - + + No valid folder selected! + - - Preparing for sync. - + + Preparing for sync. + - - Setup error. - + + Setup error. + - - Sync finished with unresolved conflicts. - + + Sync finished with unresolved conflicts. + - - Sync is paused. - + + Sync is paused. + - - Sync is running. - + + Sync is running. + - - Sync request was cancelled. - + + Sync request was cancelled. + - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! - + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! - + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + - - The selected path does not exist! - + + The selected path does not exist! + - - The selected path is not a folder! - + + The selected path is not a folder! + - - There is already a sync from the server to this local folder. Please pick another local folder! - + + There is already a sync from the server to this local folder. Please pick another local folder! + - - Undefined state. - + + Undefined state. + - - Waiting to start syncing. - + + Waiting to start syncing. + - - You have no permission to write to the selected folder! - + + + You have no permission to write to the selected folder! + - - + + OCC::FolderStatusDelegate - - Add live backup - Add Folder Sync Connection + Add live backup + Add Folder Sync Connection - - File - + + Add Folder Sync + Add Folder Sync - - Synchronize any other local folder with your %1 - Synchronize any other local folder with your %1 + + File + - - + + + Synchronize any other local folder with your %1 + Synchronize any other local folder with your %1 + + + OCC::FolderStatusModel - - , - + + + %1 (%2) + + + + + %1 %2 + Example text: "uploading foobar.png" + + + + + %1 %2 (%3 of %4) + Example text: "uploading foobar.png (2MB of 2MB)" + - - %1 (%2) - + + %1 of %2, file %3 of %4 + Example text: "12 MB of 345 MB, file 6 of 7" + - - %1 %2 - + + %5 left, %1 of %2, file %3 of %4 + - - %1 %2 (%3 of %4) - + + ↑ %1/s + - - %1 of %2, file %3 of %4 - + + ↓ %1/s + - - %5 left, %1 of %2, file %3 of %4 - + + A few seconds left, %1 of %2, file %3 of %4 + Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" + - - ↑ %1/s - + + Checking for changes in local "%1" + - - ↓ %1/s - + + Checking for changes in remote "%1" + - - A few seconds left, %1 of %2, file %3 of %4 - + + Click this button to add a folder to synchronize. + - - Checking for changes in local "%1" - + + Could not decrypt! + - - Checking for changes in remote "%1" - + + download %1/s + Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) + - - Click this button to add a folder to synchronize. - + + Error while loading the list of folders from the server. + - - Could not decrypt! - + + Fetching folder list from server … + - - download %1/s - + + Signed out + - - Error while loading the list of folders from the server. - + + Syncing %1 + Example text: "Syncing 'foo.txt', 'bar.txt'" + - - Fetching folder list from server … - + + + , + - - file %1 of %2 - + + file %1 of %2 + - - Preparing to sync … - + + Preparing to sync … + - - Reconciling changes - + + Reconciling changes + - - Synchronizing VirtualFiles with local folder - + + Synchronizing VirtualFiles with local folder + - - Synchronizing with local folder - + + Synchronizing with local folder + - - There are unresolved conflicts. Click for details. - + + There are unresolved conflicts. Click for details. + - - upload %1/s - + + upload %1/s + Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) + - - Virtual file support is enabled. - + + Virtual file support is enabled. + - - Waiting … - + + Waiting … + - - Waiting for %n other folder(s) … - - - - - + + Waiting for %n other folder(s) … + + + + - - You need to be connected to add a folder - + + You need to be connected to add a folder + - - + + OCC::FolderWatcher - - The watcher did not receive a test notification. - + + The watcher did not receive a test notification. + - - + + OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. - + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + - - + + OCC::FolderWizard - Add Folder Sync Connection - + + Add Folder Sync Connection + - - Add Sync Connection - + + Add Sync Connection + - - + + OCC::FolderWizardLocalPath - - Choose - Choose + + Choose + Choose - - Click to select a local folder to sync. - + + Click to select a local folder to sync. + - - Enter the path to the local folder. - + + Enter the path to the local folder. + - - Select the source folder - + + Select the source folder + - - + + + Add Folder Sync + Add Folder Sync + + + + Step 1 of 3: Select local folder + Step 1 of 3: Select local folder + + + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized. + + + OCC::FolderWizardRemotePath - - Authentication failed accessing %1 - + + Authentication failed accessing %1 + + + + + Choose this to sync the entire account + + + + + Create Remote Folder + + + + + Enter the name of the new folder to be created below "%1": + - - Choose this to sync the entire account - + + Failed to create the folder on %1. Please check manually. + - - Create Remote Folder - + + Failed to list a folder. Error: %1 + - - Enter the name of the new folder to be created below "%1": - + + Add Folder Sync + Add Folder Sync - - Failed to create the folder on %1. Please check manually. - + + Step 2 of 3: Directory in your %1 + Step 2 of 3: Directory in your %1 - - Failed to list a folder. Error: %1 - + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - - Folder was successfully created on %1. - + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Both folders are permanently linked and the respective contents are automatically synchronized and updated. - - This folder is already being synced. - + + Refresh + Refresh - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - + + Create folder + Create folder - - You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - + + Folder was successfully created on %1. + - - + + + This folder is already being synced. + + + + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + + + + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + + + + OCC::FolderWizardSelectiveSync - - Use virtual files instead of downloading content immediately %1 - + + + Use virtual files instead of downloading content immediately %1 + - - Virtual files are not available for the selected folder - + + + (experimental) + - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - + + Add Folder Sync + Add Folder Sync - - + + + Step 3 of 3: Selektive Synchronisation + Step 3 of 3: Selektive Synchronisation + + + + Virtual files are not available for the selected folder + + + + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + + + + OCC::FormatWarningsWizardPage - - %1 - + + %1 + - <b>Warning:</b> - <b>Warning:</b> + <b>Warning:</b> + <b>Warning:</b> - <b>Warning:</b> %1 - <b>Warning:</b> %1 + <b>Warning:</b> %1 + <b>Warning:</b> %1 - - + + OCC::GETFileJob - - Connection Timeout - + + Connection Timeout + - - No E-Tag received from server, check Proxy/Gateway - + + No E-Tag received from server, check Proxy/Gateway + - - Server returned wrong content-range - + + Server returned wrong content-range + - - We received a different E-Tag for resuming. Retrying next time. - + + We received a different E-Tag for resuming. Retrying next time. + - - We received an unexpected download Content-Length. - + + We received an unexpected download Content-Length. + - - + + OCC::GeneralSettings - - &Analysis data collection for needs-based design - &Analysis data collection for needs-based design + &Analysis data collection for needs-based design + &Analysis data collection for needs-based design - - &Automatically check for updates - + + &Automatically check for updates + - &Channel - &Channel + &Channel + &Channel - &Check for Update now - &Check for Update now + &Check for Update now + &Check for Update now - - &Launch on system startup - + + &Launch on system startup + - - &Restart && Update - + + Advanced + - About - About + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + - - Ask for confirmation before - synchronizing new folders larger than - Ask for confirmation before synchronizing new folders larger than + + &Analysis data collection for needs-based design + - - Ask for confirmation before synchronizing - external storages - Ask for confirmation before synchronizing external storages + + &Restart && Update + - Ask for confirmation before synchronizing external storages - Ask for confirmation before synchronizing external storages + About + About - Ask for confirmation before synchronizing folders larger than - Ask for confirmation before synchronizing folders larger than + + Ask for confirmation before + synchronizing new folders larger than + Ask for confirmation before synchronizing new folders larger than - Ask for confirmation before synchronizing new folders larger than - + + Ask for confirmation before synchronizing + external storages + Ask for confirmation before synchronizing external storages - - Automatically disable synchronisation of - folders that overcome limit - Automatically disable synchronisation of folders that overcome limit + Ask for confirmation before synchronizing external storages + Ask for confirmation before synchronizing external storages - Automatically disable synchronisation of folders that overcome limit - + Ask for confirmation before synchronizing folders larger than + Ask for confirmation before synchronizing folders larger than - - beta - + + Automatically disable synchronisation of + folders that overcome limit + Automatically disable synchronisation of folders that overcome limit - - Change update channel - + + + beta + - - Change update channel? - + + Change update channel + - - Check Now - + + Change update channel? + - - Create Debug Archive - + + Check Now + - - Data Protection - Data Protection + + + Create Debug Archive + - - Debug Archive Created - + + Data Protection + Data Protection - - Debug archive is created at %1 - + + Debug Archive Created + - - Desktop client x.x.x - + + Debug archive is created at %1 + - - Edit &Ignored Files - + + Desktop client x.x.x + - - For System Tray - + + Edit &Ignored Files + - - General Settings - + + For System Tray + - Info - + + General Settings + - - Legal Notice - + + Legal Notice + - MB - MB + MB + MB - - More Information - More Information + + More Information + More Information - - Move removed files to trash - + + Move removed files to trash + - - Notify when synchronised folders grow + + Notify when synchronised folders grow larger than specified limit - Notify when synchronised folders grow larger than specified limit. - - - Notify when synchronised folders grow larger than specified limit - + Notify when synchronised folders grow larger than specified limit. - - Open Source Software - Open Source Software + + Open Source Software + Open Source Software - - Privacy Policy - Privacy Policy + + Privacy Policy + Privacy Policy - - S&how crash reporter - + + S&how crash reporter + - - Server notifications that require attention. - + + Server notifications that require attention. + - - Show call notification dialogs. - + + Show call notification dialogs. + - - Show call notifications - + + Show call notifications + - - Show server &notifications - + + Show server &notifications + - - Show sync folders in &Explorer's navigation + + Show sync folders in &Explorer's navigation pane - Show sync folders in &Explorer's navigation pane + Show sync folders in &Explorer's navigation pane - Show sync folders in &Explorer's Navigation Pane - Show sync folders in &Explorer's Navigation Pane + Show sync folders in &Explorer's Navigation Pane + Show sync folders in &Explorer's Navigation Pane - - stable - + + + stable + - - The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. - + - - Update channel - + + Update channel + - - Updates - + + Updates + - - Usage Documentation - + + Usage Documentation + - - Use &monochrome icons - + + Use &monochrome icons + - - You cannot disable autostart because system-wide autostart is enabled. - + + You cannot disable autostart because system-wide autostart is enabled. + - - Zip Archives - + + Cancel + - - + + + Zip Archives + + + + OCC::GetOrCreatePublicLinkShare - - Could not retrieve or create the public link share. Error: + + Could not retrieve or create the public link share. Error: %1 - + - - Password for share required - + + Password for share required + - - Please enter a password for your link share: - + + Please enter a password for your link share: + - - Sharing error - + + Sharing error + - - + + OCC::HttpCredentialsGui - - <a href="%1">Click here</a> to request an app password from the web interface. - + + <a href="%1">Click here</a> to request an app password from the web interface. + - - Enter Password - + + Enter Password + - - Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + - - Reading from keychain failed with error: "%1" - + + Reading from keychain failed with error: "%1" + - - + + OCC::IgnoreListEditor - - Files Ignored by Patterns - + + Files Ignored by Patterns + - - Global Ignore Settings - + + Global Ignore Settings + - - Ignored Files Editor - + + Ignored Files Editor + - - Sync hidden files - + + Sync hidden files + - - This entry is provided by the system at "%1" and cannot be modified in this view. - + + This entry is provided by the system at "%1" and cannot be modified in this view. + - - + + OCC::IgnoreListTableWidget - - Add - + + Add + - Add a new ignore pattern: - Add a new ignore pattern: + Add a new ignore pattern: + Add a new ignore pattern: - Add Ignore Pattern - Add Ignore Pattern + Add Ignore Pattern + Add Ignore Pattern - - Add New Ignore Pattern - Add New Ignore Pattern + + Add New Ignore Pattern + Add New Ignore Pattern - - Allow Deletion - + + Allow Deletion + - - Cannot write changes to "%1". - + + Cannot write changes to "%1". + - - Could not open file - + + Could not open file + - Files or folders matching a pattern will not be synchronized. + Files or folders matching a pattern will not be synchronized. Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Files or folders matching a pattern will not be synchronized. + Files or folders matching a pattern will not be synchronized. Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - - Files or folders that match this pattern will not be synchronized. + + Files or folders that match this pattern will not be synchronized. Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - Files or folders that match this pattern will not be synchronized. + Files or folders that match this pattern will not be synchronized. Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - - Ignore Pattern - Ignore Pattern + + Ignore Pattern + Ignore Pattern - - Pattern - + + Pattern + - - Remove - + + Remove + - - Remove all - + + Remove all + - - + + OCC::InvalidFilenameDialog - - Cannot rename file because a file with the same name does already exist on the server. Please pick another name. - + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + + + + + Checking rename permissions … + + + + + Rename file + + + + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + + + + + Failed to fetch permissions with error %1 + + + + + Filename contains leading and trailing spaces. + + + + + Filename contains leading spaces. + + + + + Filename contains trailing spaces. + + + + + Use invalid name + - - Checking rename permissions … - + + Filename contains illegal characters: %1 + - - Could not rename local file. %1 - + + Could not rename file. Please make sure you are connected to the server. + - - Invalid filename - + + Could not rename local file. %1 + - - Please enter a new name for the file: - + + Invalid filename + - - The file "%1" could not be synced because the name contains characters which are not allowed on this system. - + + Error + Error - - The file could not be synced because it contains characters which are not allowed on this system. - + + Please enter a new name for the file: + - - The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - + + New filename + - - + + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + + + + + The file could not be synced because it contains characters which are not allowed on this system. + + + + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + + + + OCC::LegalNotice - - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> - + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + - Legal notice - + + + Legal notice + - - + + + Close + + + + OCC::LogBrowser - - Enable logging to temporary folder - + + Enable logging to temporary folder + - - Log Output - + + Log Output + - - The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. If enabled, logs will be written to %1 - + - - This setting persists across client restarts. + + This setting persists across client restarts. Note that using any logging command line options will override this setting. - + + + + + Open folder + - - + + OCC::Logger - - <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> - + + Error + Error + + + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + - - + + OCC::NSISUpdater - - <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> - + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + - - Ask again later - + + Ask again later + - - Get update - + + Get update + - - New Version Available - + + New Version Available + - - Restart and update - + + Restart and update + - - Skip this time - + + Skip this time + - - Update Failed - + + Update Failed + - - Update manually - + + Update manually + - - + + OCC::NetworkSettings - - Download Bandwidth - + + Download Bandwidth + - - Host - + + Host + - - Hostname of proxy server - + + Hostname of proxy server + - - HTTP(S) proxy - + + HTTP(S) proxy + - - KBytes/s - + + + KBytes/s + - - Limit automatically - + + + Limit automatically + - - Limit to - + + + Limit to + - - Limit to 3/4 of estimated bandwidth - + + + Limit to 3/4 of estimated bandwidth + - - Manually specify proxy - + + Manually specify proxy + - - No limit - + + + No limit + - - No proxy - + + No proxy + - - Note: proxy settings have no effects for accounts on localhost - + + Note: proxy settings have no effects for accounts on localhost + - - Password for proxy server - + + Password for proxy server + - - Proxy server requires authentication - + + Proxy server requires authentication + - - Proxy Settings - + + Proxy Settings + - - SOCKS5 proxy - + + SOCKS5 proxy + - Specify proxy manually as - Specify proxy manually as + Specify proxy manually as + Specify proxy manually as - - Upload Bandwidth - + + Upload Bandwidth + - - Use system proxy - + + Use system proxy + - - Username for proxy server - + + Username for proxy server + - - + + OCC::OAuth - <h1>Login Error</h1><p>%1</p> - <h1>Login Error</h1><p>%1</p> + <h1>Login Error</h1><p>%1</p> + <h1>Login Error</h1><p>%1</p> - <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> - + Empty JSON from OAuth2 redirect + Empty JSON from OAuth2 redirect - - Empty JSON from OAuth2 redirect - Empty JSON from OAuth2 redirect - - - + + OCC::OCUpdater - - %1 available. Restart application to start the update. - + + %1 available. Restart application to start the update. + - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + - - Checking update server … - + + Checking update server … + - - Could not check for new updates. - + + Could not check for new updates. + - - Could not download update. Please open %1 to download the update manually. - + + Could not download update. Please open %1 to download the update manually. + - - Could not download update. Please open <a href='%1'>%1</a> to download the update manually. - + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + - - Downloading %1. Please wait … - + + Downloading %1. Please wait … + - - New %1 is available. Please open %2 to download the update. - + + New %1 is available. Please open %2 to download the update. + - - New %1 is available. Please open <a href='%2'>%2</a> to download the update. - + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + - - New %1 update ready - + + New %1 update ready + - - No updates available. Your installation is at the latest version. - + + No updates available. Your installation is at the latest version. + - - Update Check - + + Update Check + - - Update status is unknown: Did not check for new updates. - + + Update status is unknown: Did not check for new updates. + - - + + OCC::OwncloudAdvancedSetupPage - - (%1) - + + + (%1) + + + + + %1 folder "%2" is synced to local folder "%3" + + + + + Connect + - - %1 folder "%2" is synced to local folder "%3" - + + + (experimental) + - - %1 free space - + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + - - Connect - + + %1 free space + %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB + - - Local Sync Folder - + + Virtual files are not available for the selected folder + - - Sync the folder "%1" - + + Local Sync Folder + - - There isn't enough free space in the local folder! - + + Sync the folder "%1" + - - Use &virtual files instead of downloading content immediately %1 - + + There isn't enough free space in the local folder! + - - Warning: The local folder is not empty. Pick a resolution! - + + + Use &virtual files instead of downloading content immediately %1 + - - + + + Warning: The local folder is not empty. Pick a resolution! + + + + OCC::OwncloudConnectionMethodDialog - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> - + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> - + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + - - Configure client-side TLS certificate - + + Configure client-side TLS certificate + - - Connection failed - + + Connection failed + - - Retry unencrypted over HTTP (insecure) - + + Retry unencrypted over HTTP (insecure) + - - Select a different URL - + + Select a different URL + - - + + OCC::OwncloudHttpCredsPage - - &Email - + + &Email + - - Connect to %1 - + + Connect to %1 + - - Enter user credentials - + + Enter user credentials + - - + + OCC::OwncloudOAuthCredsPage - Login in your browser - Login in your browser + Login in your browser + Login in your browser - - + + OCC::OwncloudPropagator - Error with the metadata. Getting unexpected metadata format. - + + + Impossible to get modification time for file in conflict %1 + - - - Impossible to get modification time for file in conflict %1 - - - - + + OCC::OwncloudSetupPage - - &Next > - + + The link to your %1 web interface when you open it in the browser. + %1 will be replaced with the application name + - - Could not load certificate. Maybe wrong password? - + + &Next > + - - Server address does not seem to be valid - + + Could not load certificate. Maybe wrong password? + - - The link to your %1 web interface when you open it in the browser. - + + Server address does not seem to be valid + - - + + OCC::OwncloudSetupWizard - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> - + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + + + + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + + + + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - + + There was an invalid response to an authenticated WebDAV request + - - A sync connection from %1 to remote directory %2 was set up. - + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + - - Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - + + A sync connection from %1 to remote directory %2 was set up. + - - Connection to %1 could not be established. Please check again. - + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + - - Could not create local folder %1 - + + Connection to %1 could not be established. Please check again. + - - creating folder on Nextcloud: %1 - + + Could not create local folder %1 + - - Creating local sync folder %1 … - + + creating folder on Nextcloud: %1 + - - Error: %1 - + + Creating local sync folder %1 … + - - Failed to connect to %1 at %2:<br/>%3 - + + Error: %1 + - - failed. - + + Failed to connect to %1 at %2:<br/>%3 + - - Folder rename failed - + + failed. + - - Invalid URL - + + Folder rename failed + - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> - + + Invalid URL + - - No remote folder specified! - + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + - - OK - + + No remote folder specified! + - - Remote folder %1 created successfully. - + + OK + - - Remote folder %1 creation failed with error <tt>%2</tt>. - + + Remote folder %1 created successfully. + - - Successfully connected to %1! - + + + Remote folder %1 creation failed with error <tt>%2</tt>. + - - The folder creation resulted in HTTP error code %1 - + + Successfully connected to %1! + - - The remote folder %1 already exists. Connecting it for syncing. - + + + The folder creation resulted in HTTP error code %1 + - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - + + The remote folder %1 already exists. Connecting it for syncing. + - - Timeout while trying to connect to %1 at %2. - + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + - - Trying to connect to %1 at %2 … - + + Timeout while trying to connect to %1 at %2. + - - + + + Trying to connect to %1 at %2 … + + + + OCC::OwncloudWizard - - Add %1 account - + + Add %1 account + + + + + Cancel + - - Enable experimental feature? - + + Enable experimental feature? + - - Enable experimental placeholder mode - + + Enable experimental placeholder mode + - - Skip folders configuration - + + Skip folders configuration + - - Stay safe - + + Stay safe + - - When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. Switching to this mode will abort any currently running synchronization. This is a new, experimental mode. If you decide to use it, please report any issues that come up. - + - - + + OCC::PasswordInputDialog - - Please enter a password for your share: - + + Password for share required + + + + + Please enter a password for your share: + - - + + OCC::PollJob - - Invalid JSON reply from the poll URL - + + Invalid JSON reply from the poll URL + - - + + OCC::ProcessDirectoryJob - - Cannot sync due to invalid modification time - + + Cannot sync due to invalid modification time + + + + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. + + + + + Conflict when uploading a file. It's going to get removed! + + + + + Conflict when uploading a folder. It's going to get cleared! + - - Case Clash Conflict: Server file downloaded and renamed to avoid clash. - + + Filename contains trailing spaces. + - - Conflict when uploading a file. It's going to get removed! - + + Filename contains leading spaces. + - - Conflict when uploading a folder. It's going to get cleared! - + + Filename contains leading and trailing spaces. + - - Conflict: Server version downloaded, local copy renamed and not uploaded. - + + Conflict: Server version downloaded, local copy renamed and not uploaded. + - - Could not upload file, because it is open in "%1". - + + Could not upload file, because it is open in "%1". + - - Error while deleting file record %1 from the database - + + Error while deleting file record %1 from the database + - - Error while reading the database - + + Error while reading the database + - - File has extension reserved for virtual files. - + + File has extension reserved for virtual files. + - - file id - + + file id + - - File is listed on the ignore list. - + + File is listed on the ignore list. + - - File name contains at least one invalid character - + + File name contains at least one invalid character + - - File names containing the character "%1" are not supported on this file system. - + + File names containing the character "%1" are not supported on this file system. + - - File names ending with a period are not supported on this file system. - + + File names ending with a period are not supported on this file system. + - - File/Folder is ignored because it's hidden. - + + File/Folder is ignored because it's hidden. + - - Filename is too long. - + + Filename is too long. + - - Ignored because of the "choose what to sync" blacklist - + + Ignored because of the "choose what to sync" blacklist + - - Moved to invalid target, restoring - + + + Moved to invalid target, restoring + - - Not allowed because you don't have permission to add files in that folder - + + Not allowed because you don't have permission to add files in that folder + - - Not allowed because you don't have permission to add subfolders to that folder - + + + Not allowed because you don't have permission to add subfolders to that folder + - - Not allowed to remove, restoring - + + Not allowed to remove, restoring + - - Not allowed to upload this file because it is read-only on the server, restoring - + + Not allowed to upload this file because it is read-only on the server, restoring + - - permission - + + permission + - - Server replied with an error while reading directory "%1" : %2 - + + Server replied with an error while reading directory "%1" : %2 + - - Server reported no %1 - + + Server reported no %1 + - - size - + + size + - - Stat failed. - + + Stat failed. + - - Symbolic links are not supported in syncing. - + + Symbolic links are not supported in syncing. + - - The file name is a reserved name on this file system. - + + The file name is a reserved name on this file system. + - - The filename cannot be encoded on your file system. - + + The filename cannot be encoded on your file system. + - - The filename is blacklisted on the server. - + + The filename is blacklisted on the server. + - - + + OCC::PropagateDirectory - - could not delete file %1 from local DB - + + could not delete file %1 from local DB + - - Error updating metadata due to invalid modification time - + + Error updating metadata due to invalid modification time + - - File is currently in use - + + Error updating metadata: %1 + - - The folder %1 cannot be made read-only: %2 - + + File is currently in use + - - + + + + The folder %1 cannot be made read-only: %2 + + + + OCC::PropagateDownloadFile - - Could not delete file record %1 from local DB - + + + Could not delete file record %1 from local DB + + + + + could not get file %1 from local DB + + + + + File %1 can not be downloaded because of a local file name clash! + - - could not get file %1 from local DB - + + File %1 cannot be downloaded because encryption information is missing. + - - File %1 can not be downloaded because of a local file name clash! - + + File %1 downloaded but it resulted in a local file name clash! + - - File %1 cannot be downloaded because encryption information is missing. - + + + File %1 has invalid modified time reported by server. Do not save it. + - - File %1 downloaded but it resulted in a local file name clash! - + + + File has changed since discovery + - - File %1 has invalid modified time reported by server. Do not save it. - + + File was deleted from server + - - File has changed since discovery - + + Error updating metadata: %1 + - - File was deleted from server - + + The file %1 is currently in use + - - Free space on disk is less than %1 - + + Free space on disk is less than %1 + - - The download would reduce free local disk space below the limit - + + The download would reduce free local disk space below the limit + - - The downloaded file is empty, but the server said it should have been %1. - + + The downloaded file is empty, but the server said it should have been %1. + - - The file could not be downloaded completely. - + + The file could not be downloaded completely. + - - + + OCC::PropagateItemJob - - ; Restoration Failed: %1 - + + ; Restoration Failed: %1 + - - A file or folder was removed from a read only share, but restoring failed: %1 - + + A file or folder was removed from a read only share, but restoring failed: %1 + - - + + OCC::PropagateLocalMkdir - - Could not create folder %1 - + + Could not create folder %1 + - - could not delete file %1, error: %2 - + + could not delete file %1, error: %2 + - - Folder %1 cannot be created because of a local file or folder name clash! - + + Folder %1 cannot be created because of a local file or folder name clash! + - - + + + The folder %1 cannot be made read-only: %2 + + + + + Error updating metadata: %1 + + + + + The file %1 is currently in use + + + + OCC::PropagateLocalRemove - - Could not remove %1 because of a local file name clash - + + Could not remove %1 because of a local file name clash + - - + + + Could not delete file record %1 from local DB + + + + OCC::PropagateLocalRename - - Error setting pin state - + + File %1 downloaded but it resulted in a local file name clash! + + + + + + + could not get file %1 from local DB + + + + + + Error setting pin state + - - Failed to propagate directory rename in hierarchy - + + + Error updating metadata: %1 + - - Failed to rename file - + + The file %1 is currently in use + - - Folder %1 cannot be renamed because of a local file or folder name clash! - Folder %1 cannot be renamed because of a local file or folder name clash! + + + Could not delete file record %1 from local DB + - - + + + Failed to propagate directory rename in hierarchy + + + + + Failed to rename file + + + + + Folder %1 cannot be renamed because of a local file or folder name clash! + Folder %1 cannot be renamed because of a local file or folder name clash! + + + + OCC::PropagateRemoteDelete + + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + + + + + Could not delete file record %1 from local DB + + + + + OCC::PropagateRemoteDeleteEncryptedRootFolder + + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + + + + OCC::PropagateRemoteMkdir - - Error writing metadata to the database: %1 - + + Error writing metadata to the database: %1 + + + + + Failed to encrypt a folder %1 + - - Failed to encrypt a folder %1 - + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - + + The file %1 is currently in use + - - + + OCC::PropagateRemoteMove - - Could not rename %1 to %2, error: %3 - + + Could not rename %1 to %2, error: %3 + - - + + + + Error updating metadata: %1 + + + + + + The file %1 is currently in use + + + + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + + + + + could not get file %1 from local DB + + + + + Could not delete file record %1 from local DB + + + + + Error setting pin state + + + + + Error writing metadata to the database + + + + OCC::PropagateUploadFileCommon - - Failed to unlock encrypted folder. - + + Failed to unlock encrypted folder. + + + + + Failed to upload encrypted file. + + + + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + + + + + + + File %1 has invalid modification time. Do not upload to the server. + + + + + File Removed (start upload) %1 + + + + + Local file changed during syncing. It will be resumed. + - - Failed to upload encrypted file. - + + Local file changed during sync. + - - Unable to upload an item with invalid characters - + + Unable to upload an item with invalid characters + - - Upload of %1 exceeds the quota for the folder - + + Error updating metadata: %1 + - - + + + The file %1 is currently in use + + + + + + Upload of %1 exceeds the quota for the folder + + + + OCC::PropagateUploadFileNG - - Missing ETag from server - + + Missing ETag from server + + + + + Missing File ID from server + - - Missing File ID from server - + + The local file was removed during sync. + - - Poll URL missing - + + Local file changed during sync. + - - Unexpected return code from server (%1) - + + Poll URL missing + - - + + + Unexpected return code from server (%1) + + + + OCC::PropagateUploadFileV1 - - The server did not acknowledge the last chunk. (No e-tag was present) - + + Poll URL missing + + + + + The local file was removed during sync. + + + + + Local file changed during sync. + - - + + + The server did not acknowledge the last chunk. (No e-tag was present) + + + + OCC::ProxyAuthDialog - - Password: - + + Password: + - - Proxy authentication required - + + Proxy authentication required + - - Proxy: - + + Proxy: + - - The proxy server needs a username and password. - + + The proxy server needs a username and password. + - - Username: - + + Username: + - - + + OCC::SelectiveSyncDialog - - Choose What to Sync - + + Choose What to Sync + - - + + OCC::SelectiveSyncWidget - - An error occurred while loading the list of sub folders. - + + An error occurred while loading the list of sub folders. + - - Deselect remote folders you do not wish to synchronize. - + + Deselect remote folders you do not wish to synchronize. + - - Loading … - + + Loading … + - - Name - + + Name + - - No subfolders currently on the server. - + + + No subfolders currently on the server. + - - Size - + + Size + - - + + OCC::ServerNotificationHandler - - Reply - + + Reply + - - + + OCC::SettingsDialog - - %1 Settings - + + %1 Settings + This name refers to the application name e.g Nextcloud + - - Account - + + Account + - - General - + + General + - Network - Network + Network + Network - - New Account - New Account + + New Account + New Account - - - OCC::ShareModel - - Could not find local folder for %1 - + + Settings + Settings + + + OCC::ShareManager + + + Error + Error + + + + OCC::ShareModel - Enter a note for the recipient - + + Could not find local folder for %1 + - - Internal link - + + Internal link + - - Link share - + + Link share + - - Secure file drop - + + Secure file drop + - - Secure file drop link - + + Secure file drop link + - - Share link - + + Share link + - - + + OCC::ShareUserLine - Can edit - Can edit + Can edit + Can edit - Expires: - Expires: + Expires: + Expires: - Note: - Note: + Note: + Note: - - + + OCC::ShareeModel - - Global search results - + + Global search results + - - No results found - + + No results found + - - Search globally - + + %1 (%2) + sharee (shareWithAdditionalInfo) + - - + + + + Search globally + + + + OCC::SocketApi - Activity - + + + Activity + - - Context menu share - + + Context menu share + - - Copy internal link - + + Copy internal link + - - Copy private link to clipboard - + + Copy private link to clipboard + - - Copy public link - + + + Copy public link + - - Copy secure file drop link - + + Copy secure file drop link + - - Copy secure filedrop link - + + Copy secure filedrop link + - - Could not encrypt the following folder: "%1". + + Could not encrypt the following folder: "%1". Server replied with error: %2 - + - - Delete local changes - + + Delete local changes + - - Edit - + + Edit + - - - Expires in %1 minutes - - - - Expires in %1 minutes - + + + Failed to encrypt folder + + + + + Failed to encrypt folder at "%1" + - - Failed to encrypt folder - + + Folder encrypted successfully + - - Failed to encrypt folder at "%1" - + + I shared something with you + - - Folder encrypted successfully - + + Leave this share + - - I shared something with you - + + Encrypt + - - Leave this share - + + Lock file + - - Lock file - + + Locked by %1 + + + + + Expires in %1 minutes + remaining time before lock expires + + + + - - Locked by %1 - + + Move and rename … + - - Move and rename … - + + Move and upload … + - - Move and upload … - + + Delete + - - Move, rename and upload … - + + Move, rename and upload … + - - Open in browser - + + Open in browser + - - Resharing this file is not allowed - + + Resharing this file is not allowed + - - Resharing this folder is not allowed - + + Resharing this folder is not allowed + - - Resolve conflict … - + + Resolve conflict … + - - Select new location … - + + Select new location … + - - Send private link by email … - + + Send private link by email … + - - Share options - + + + Share options + - - The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. + - - The following folder was encrypted successfully: "%1" - + + The following folder was encrypted successfully: "%1" + - - Unlock file - + + Unlock file + - - + + OCC::SslButton - - %1 (self-signed) - + + %1 (self-signed) + - - <h3>Certificate Details</h3> - + + <h3>Certificate Details</h3> + - - <h3>Fingerprints</h3> - + + <h3>Fingerprints</h3> + - - <h3>Issuer</h3> - + + <h3>Issuer</h3> + - - <p><b>Note:</b> This certificate was manually approved</p> - + + <p><b>Note:</b> This certificate was manually approved</p> + - - Certificate information: - + + Certificate information: + - - Common Name (CN): - + + Common Name (CN): + - - Country: - + + Country: + - - Expires on: - + + Expires on: + - - Issued on: - + + Issued on: + - - Issuer: - + + Issuer: + - - No support for SSL session tickets/identifiers - + + No support for SSL session tickets/identifiers + - - Organization (O): - + + Organization (O): + - - Organizational Unit (OU): - + + Organizational Unit (OU): + - - Serial: - + + Serial: + - - Server version: %1 - + + %1 + - - SHA-1: - + + This connection is encrypted using %1 bit %2. + + - - SHA-256: - + + This connection is NOT secure as it is not encrypted. + + - - State/Province: - + + Server version: %1 + - - Subject Alternative Names: - + + SHA-1: + - - The connection is not secure - + + SHA-256: + - - This connection is encrypted using %1 bit %2. - + + State/Province: + - - This connection is NOT secure as it is not encrypted. - + + Subject Alternative Names: + - - + + + The connection is not secure + + + + OCC::SslErrorDialog - - &lt;not specified&gt; - + + + + &lt;not specified&gt; + - - Additional errors: - + + Additional errors: + - - Cannot connect securely to <i>%1</i>: - + + Cannot connect securely to <i>%1</i>: + - - Country: %1 - + + + Country: %1 + - - Effective Date: %1 - + + Effective Date: %1 + - - Expiration Date: %1 - + + Expiration Date: %1 + - - Fingerprint (SHA-256): <tt>%1</tt> - + + Fingerprint (SHA-256): <tt>%1</tt> + - - Fingerprint (SHA-512): <tt>%1</tt> - + + Fingerprint (SHA-512): <tt>%1</tt> + - - Fingerprint (SHA1): <tt>%1</tt> - + + Fingerprint (SHA1): <tt>%1</tt> + - - Issuer: %1 - + + Issuer: %1 + - - Organization: %1 - + + + Organization: %1 + - - Trust this certificate anyway - + + Trust this certificate anyway + - - Unit: %1 - + + + Unit: %1 + - - Untrusted Certificate - + + Untrusted Certificate + - - with Certificate %1 - + + with Certificate %1 + - - + + OCC::SyncEngine - - %1 (skipped due to earlier error, trying again in %2) - + + %1 (skipped due to earlier error, trying again in %2) + - - Cannot open the sync journal - + + Cannot open the sync journal + - - Could not set file record to local DB: %1 - + + Could not set file record to local DB: %1 + - - Could not update file metadata: %1 - + + Could not update file metadata: %1 + - - Could not update file: %1 - + + Could not update file: %1 + - - Could not update virtual file metadata: %1 - + + Could not update virtual file metadata: %1 + - - Disk space is low: Downloads that would reduce free space below %1 were skipped. - + + Only %1 are available, need at least %2 to start + Placeholders are postfixed with file sizes using Utility::octetsToString() + - - Only %1 are available, need at least %2 to start - + + Disk space is low: Downloads that would reduce free space below %1 were skipped. + - - There is insufficient space available on the server for some uploads. - + + There is insufficient space available on the server for some uploads. + - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. - + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. + - - Unable to read from the sync journal. - + + Unable to read from the sync journal. + - - Unable to read the blacklist from the local database - + + Unable to read the blacklist from the local database + - - Unresolved conflict. - + + Unresolved conflict. + - - Using virtual files with suffix, but suffix is not set - + + Using virtual files with suffix, but suffix is not set + - - + + OCC::SyncJournalDb - - Failed to connect database. - + + Failed to connect database. + - - + + OCC::SyncStatusSummary - - %1 of %2 - + + %1 of %2 + + + + + %1 of %2 · %3 left + + + + + + Offline + - - %1 of %2 · %3 left - + + + + All synced! + All synced! - - Offline - + + Preparing sync + - - Preparing sync - + + See below for errors + - - See below for errors - + + See below for warnings + - - See below for warnings - + + Some files could not be synced! + - - Some files could not be synced! - + + Some files couldn't be synced! + - - Some files couldn't be synced! - + + + Syncing + Syncing - - Syncing file %1 of %2 - + + Sync paused + Sync paused - - + + + Syncing file %1 of %2 + + + + OCC::Systray - - %1: %2 - + + %1: %2 + + + + + Add account + + + + + Download + + + + + + Pause sync + + + + + + Resume sync + - - Add account - + + Settings + Settings - - Download - + + Help + Help - - Exit %1 - + + Exit %1 + - - Open main dialog - + + Open main dialog + - - Pause sync for all - + + Pause sync for all + - - Resume sync for all - + + Resume sync for all + - - + + OCC::Theme - - <p>%1 desktop client %2</p> - + + <p>%1 desktop client %2</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + + + + <p>%1 Desktop Client</p> + <p>%1 Desktop Client</p> - <p>%1 Desktop Client</p> - <p>%1 Desktop Client</p> + + easy/0118 + Redirect URL Parameter + - - <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> - + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + - - <p><small>Using virtual files plugin: %1</small></p> - + + <p><small>Using virtual files plugin: %1</small></p> + - - <p>This release was supplied by %1.</p> - + + <p>This release was supplied by %1.</p> + - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + - - + + OCC::UnifiedSearchResultsListModel - - Failed to fetch providers. - + + Failed to fetch providers. + - - Failed to fetch search providers for '%1'. Error: %2 - + + Failed to fetch search providers for '%1'. Error: %2 + - - Search has failed for '%1'. Error: %2 - + + Search has failed for '%1'. Error: %2 + - - Search has failed for '%2'. - + + Search has failed for '%2'. + - - + + OCC::UpdateE2eeFolderMetadataJob - - Failed to finalize item. - + + Failed to unlock encrypted folder. + - - Failed to update folder metadata. - + + Failed to finalize item. + - - - OCC::UpdateE2eeFolderUsersMetadataJob - Could not add or remove a folder user %1, for folder %2 - + + Failed to update folder metadata. + + + + OCC::UpdateE2eeFolderUsersMetadataJob - - Could not add or remove user %1 to access folder %2 - Could not add or remove user %1 to access folder %2 + + Could not add or remove user %1 to access folder %2 + Could not add or remove user %1 to access folder %2 - - Could not fetch public key for user %1 - + + Could not fetch public key for user %1 + - - Could not find root encrypted folder for folder %1 - + + Could not find root encrypted folder for folder %1 + - - Error updating metadata for a folder %1 - + + + + + + + + + + Error updating metadata for a folder %1 + - - Failed to unlock a folder. - + + Failed to unlock a folder. + - - + + OCC::User - - %1 notifications - %1 notifications + + %1 notifications + %1 notifications - - Resolve conflict - + + + Resolve conflict + - - Retry all uploads - + + Retry all uploads + - - + + OCC::UserModel - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + - - Confirm Account Removal - + + Confirm Account Removal + - - Remove connection - + + Cancel + - - + + + Remove connection + + + + OCC::UserStatusSelectorModel - - %1 days - + + %1 days + - - %1 hours - + + %1 hours + - - %1 minutes - + + %1 minutes + - - 1 day - + + 1 day + - - 1 hour - + + + 1 hour + - - 1 minute - + + 1 minute + - - 30 minutes - + + 30 minutes + - - 4 hours - + + 4 hours + - - Could not clear status message. Make sure you are connected to the server. - + + Could not clear status message. Make sure you are connected to the server. + - - Could not fetch predefined statuses. Make sure you are connected to the server. - + + Could not fetch predefined statuses. Make sure you are connected to the server. + - - Could not fetch status. Make sure you are connected to the server. - + + Could not fetch status. Make sure you are connected to the server. + - - Could not set status. Make sure you are connected to the server. - + + Could not set status. Make sure you are connected to the server. + - - Don't clear - + + + Don't clear + - - Emojis are not supported. Some status functionality may not work. - + + Emojis are not supported. Some status functionality may not work. + - - Less than a minute - + + Less than a minute + - - Status feature is not supported. You will not be able to set your status. - + + Status feature is not supported. You will not be able to set your status. + - - This week - + + + This week + - - Today - + + + Today + - - + + OCC::ValidateChecksumHeader - - The checksum header contained an unknown checksum type "%1" - + + The checksum header contained an unknown checksum type "%1" + - - The checksum header is malformed. - + + The checksum header is malformed. + - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + - - + + OCC::Vfs - - The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 + - - + + OCC::VfsDownloadErrorDialog - - %1 could not be downloaded. - + + %1 could not be downloaded. + - - > More details - + + > More details + - - could not be downloaded - + + could not be downloaded + - - Download error - + + Download error + - - Error downloading - + + Error downloading + - - Error downloading %1 - + + Error downloading %1 + - - More details - + + More details + - - - OCC::WebEnginePage + + + OCC::VfsSuffix - - Invalid certificate detected - + + + Error updating metadata due to invalid modification time + + + + OCC::VfsXAttr - - The host "%1" provided an invalid certificate. Continue? - + + + Error updating metadata due to invalid modification time + - - - OCC::WebFlowCredentials + + + OCC::WebEnginePage - - <b>You have been logged out of your account %1 at %2. Please login again.</b> - <b>You have been logged out of your account %1 at %2. Please login again.</b> + + Invalid certificate detected + - Please login with the account: %1 - + + The host "%1" provided an invalid certificate. Continue? + + + + OCC::WebFlowCredentials - You have been logged out of your account %1 at %2. Please login again. - + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + <b>You have been logged out of your account %1 at %2. Please login again.</b> - - + + OCC::WelcomePage - Easy-to-use web mail, calendaring & contacts - Easy-to-use web mail, calendaring & contacts + Easy-to-use web mail, calendaring & contacts + Easy-to-use web mail, calendaring & contacts - - Form - + + Form + - - Host your own server - + + Host your own server + - - Keep your data secure and under your control - + + Keep your data secure and under your control + - - Log in - + + Log in + - Screensharing, online meetings & web conferences - Screensharing, online meetings & web conferences + Screensharing, online meetings & web conferences + Screensharing, online meetings & web conferences - Secure collaboration & file exchange - Secure collaboration & file exchange + Secure collaboration & file exchange + Secure collaboration & file exchange - - Sign up with provider - + + Sign up with provider + - - + + OCC::ownCloudGui - - Account %1: %2 - + + Account %1: %2 + + + + + Account synchronization is disabled + + + + + Disconnected from %1 + - - Account synchronization is disabled - + + Disconnected from accounts: + - - Disconnected from %1 - + + Disconnected from some accounts + - - Disconnected from accounts: - + + Error during synchronization + - - Disconnected from some accounts - + + Folder %1: %2 + - - Error during synchronization - + + No sync folders configured + - - Folder %1: %2 - + + Please sign in + - - No sync folders configured - + + Disconnected + - - Please sign in - + + Signed out + - - Synchronization is paused - + + + Synchronization is paused + - - Syncing %1 of %2 (%3 left) - + + Checking for changes in remote "%1" + - - The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - + + Checking for changes in local "%1" + - - There are no sync folders configured. - + + Syncing %1 of %2 (%3 left) + - - Unresolved conflicts - + + Syncing %1 of %2 + - - Unsupported Server Version - + + Syncing %1 (%2 left) + - - Up to date - + + Syncing %1 + - - + + + %1 (%2, %3) + %1 (%2, %3) + + + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + + + + + There are no sync folders configured. + + + + + Unresolved conflicts + + + + + Unsupported Server Version + + + + + Up to date + + + + OCC::sesSnackBar - - Success - Success + + Error + Error + + + + Warning + - - + + + Success + Success + + + OwncloudAdvancedSetupPage - - &Local Folder - + + &Local Folder + - - <html><head/><body><p>If this box is checked, + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>If this box is checked, + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + + + + Ask before syncing external storages + + + + + Ask before syncing folders larger than + - - Ask before syncing external storages - + + Choose different folder + - - Ask before syncing folders larger than - + + + MB + + Trailing part of "Ask confirmation before syncing folder larger than" + - - Choose different folder - + + Choose what to sync + - - Erase local folder and start a clean sync - + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + + + + + + Erase local folder and start a clean sync + - - Keep local data - + + Keep local data + - - Local Folder - + + Local Folder + - - Server address - + + Server address + - - Sync Logo - + + Sync Logo + - - Synchronize everything from server - + + Synchronize everything from server + - Username - + + Username + - - + + OwncloudHttpCredsPage - - &Password - + + &Password + - - &Username - + + &Username + - - + + OwncloudOAuthCredsPage - Please switch to your browser to proceed. - Please switch to your browser to proceed. + Please switch to your browser to proceed. + Please switch to your browser to proceed. - Re-open Browser - Re-open Browser + Re-open Browser + Re-open Browser - - + + OwncloudSetupPage - - TextLabel - + + + TextLabel + + + + + Server address + - - This is the link to your %1 web interface when you open it in the browser. - + + This is the link to your %1 web interface when you open it in the browser. + - - + + QObject - - - %nd - - - - %nd - + + + Could not create debug archive in selected location! + Could not create debug archive in selected location! - - - %nh - - - - %nh - + + + Failed to create debug archive + Failed to create debug archive - - %nm - - - - %nm - + + %nd + delay in days after an activity + + + + - - 1m - + + in the future + + + + + %nh + delay in hours after an activity + + + + - - Could not create debug archive in selected location! - Could not create debug archive in selected location! + + 1m + one minute after activity date and time + + + + + %nm + delay in minutes after an activity + + + + - - Failed to create debug archive - Failed to create debug archive + + New folder + - - in the future - + + now + - - New folder - + + Paths beginning with '#' character are not supported in VFS mode. + - - now - + + Some time ago + - - Paths beginning with '#' character are not supported in VFS mode. - + + Synced %1 + - - Some time ago - + + The directory %1 cannot be part of your sync directory. Please choose another folder. + The directory %1 cannot be part of your sync directory. Please choose another folder. - - Synced %1 - + + You changed %1 + - - The directory %1 cannot be part of your sync directory. Please choose another folder. - The directory %1 cannot be part of your sync directory. Please choose another folder. + + You created %1 + - - You changed %1 - + + You deleted %1 + - - You created %1 - + + You renamed %1 + - - You deleted %1 - + + %1: %2 + this displays an error string (%2) for a file %1 + - - You renamed %1 - + + Reply + - - + + ResolveConflictsDialog - - %1 files in conflict - - %1 file in conflict - %1 files in conflict - %1 files in conflict - + %1 files in conflict + + %1 file in conflict + %1 files in conflict + + + + + All local versions + - - All local versions - + + All server versions + - - All server versions - + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. + + + + + %1 files in conflict + indicate the number of conflicts to resolve + + %1 file in conflict + %1 files in conflict + - - Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - + + Resolve conflicts + - - Resolve conflicts - + + Cancel + - - Solve sync conflicts - + + Solve sync conflicts + - - + + + SesErrorBox + + + Error + Error + + + SesTrayHeader - - Open local or group folders - + + Open local or group folders + - - Open Nextcloud in browser - Open HiDrive Next in browser + + Open Nextcloud in browser + Open HiDrive Next in browser - - Website - Website + + Website + Website - - + + ShareDelegate - - Copied! - + + Copied! + - - Copy share link location - + + Copy share link location + - - Create a new share link - + + Create a new share link + - - - ShareDetailsPage - - Add another link - + + Share options + + + + ShareDetailsPage - - Allow resharing - + + Add another link + - - Allow upload and editing - + + Allow resharing + - - An error occurred setting the share password. - + + + Allow upload and editing + - - Copy share link - + + An error occurred setting the share password. + - - Custom Permissions - Custom Permissions + + Copy share link + - Edit share - + + Custom Permissions + Custom Permissions - - Enter the note to recipient - Enter the note to recipient + + Enter the note to recipient + Enter the note to recipient - - File drop (upload only) - + + File drop (upload only) + - - Hide download - + + Hide download + - - Note to recipient - + + Note to recipient + - - Password protect - + + Dismiss + Dismiss - - Set expiration date - + + Password protect + - Share label - + + Set expiration date + - - Share link copied! - + + Share link copied! + - - Unshare - + + Unshare + - - View only - + + View only + - - + + ShareView - - Password required for new share - + + Password required for new share + - - Share password - + + Share password + - - Sharing is disabled - + + Sharing is disabled + - - Sharing is disabled. - + + Sharing is disabled. + - - This item cannot be shared. - + + This item cannot be shared. + - - + + ShareeSearchField - - Search for users or groups… - + + Search for users or groups… + - - Sharing is not available for this folder - + + Sharing is not available for this folder + - - + + SyncStatus - - Sync now - + + Sync now + + + + + Resolve conflicts + - - + + TalkReplyTextField - - Reply to … - + + Reply to … + - - Send reply to chat message - + + Send reply to chat message + - - + + TestSetUserStatusDialog - - 7 days - 7 days + + + 1 day + + + + + + + + + Don't clear + + + + + + + + + 1 hour + + + + + + + + 30 minutes + + + + + + + 4 hours + + + + + + + Today + + + + + + + This week + + + + + Less than a minute + + + + + 1 minute + + + + + 7 days + 7 days + + + + Could not fetch predefined statuses. Make sure you are connected to the server. + + + + + Could not fetch status. Make sure you are connected to the server. + + + + + Status feature is not supported. You will not be able to set your status. + + + + + Could not set status. Make sure you are connected to the server. + + + + + Emojis are not supported. Some status functionality may not work. + + + + + Could not clear status message. Make sure you are connected to the server. + - - + + TrayFoldersMenuButton - - Files - Files + + Files + Files + + + + Open %1 in file explorer + - Group folder button - + + Open group folder "%1" + - - Open %1 in file explorer - + + Open local folder + - - Open group folder "%1" - + + Open local or group folders + - - Open local folder - + + Connected + - - Open local folder "%1" - + + Disconnected + - - User group and local folders menu - + + Open local folder "%1" + - - + + + User group and local folders menu + + + + TrayWindowAccountMenu - - Account switcher and settings menu - + + Account switcher and settings menu + + + + + Current account + + + + + Resume sync for all + - - Current account - + + Pause sync for all + - - Current account avatar - + + Add account + - - Current account status is do not disturb - + + Settings + Settings - - Current account status is online - + + Current account avatar + - - Exit - + + Current account status is do not disturb + - - + + + Current account status is online + + + + + Exit + + + + TrayWindowHeaderBar - - More apps - + + Website + Website + + + + Open Nextcloud in browser + Open HiDrive Next in browser + + + + Open local or group folders + + + + + More apps + - - Open %1 in browser - + + Open %1 in browser + - - Open Nextcloud Talk in browser - + + Open Nextcloud Talk in browser + - - + + UnifiedSearchInputContainer - - Search files, messages, events … - + + Search files, messages, events … + - - + + UnifiedSearchResultFetchMoreTrigger - - Load more results - + + Load more results + - - + + UnifiedSearchResultItemSkeleton - - Search result skeleton. - + + Search result skeleton. + + + + + UnifiedSearchResultListItem + + + Load more results + - - + + UnifiedSearchResultNothingFound - - No results for - + + No results for + - - + + UnifiedSearchResultSectionItem - - Search results section %1 - + + Search results section %1 + - - + + UserLine - - Account actions - + + Account actions + - - Remove account - + + + Log out + Log out - - Set status - + + + Log in + - - Switch to account - + + Remove account + - - + + + Set status + + + + + Switch to account + + + + UserStatusSelector - - Appear offline - + + Appear offline + + + + + Away + - - Away - + + Cancel + - - Clear status message - + + Clear status message + - - Clear status message after - + + Clear status message after + - - Do not disturb - + + Do not disturb + - - Invisible - + + Invisible + - - Mute all notifications - + + Mute all notifications + - - Online - + + Online + - - Online status - + + Online status + - - Set status message - + + Set status message + - - Status message - + + Status message + - - What is your status? - + + What is your status? + - - + + Utility - - %L1 B - + + %L1 B + - - %L1 GB - + + %L1 GB + - - %L1 KB - + + %L1 KB + - - %L1 MB - + + %L1 MB + - - %L1 TB - + + %L1 TB + - - %n day(s) - - - - - + + %n day(s) + + + + - - %n hour(s) - - - - - + + %n hour(s) + + + + - - %n minute(s) - - - - - + + %n minute(s) + + + + + + + + %1 %2 + - - %n month(s) - - - - - + + %n month(s) + + + + - - %n second(s) - - - - - + + %n second(s) + + + + - - %n year(s) - - - - - - - - + + %n year(s) + + + + + + + Window - Add new account - Add new account + Add new account + Add new account - - New activities - + + New activities + - - Nextcloud desktop main dialog - + + Nextcloud desktop main dialog + - - Unified search results list - + + Unified search results list + - - + + main.cpp - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. + - - System Tray not available - + + System Tray not available + - - + + nextcloudTheme::aboutInfo() - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - + + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + - - + + progress - - Deleted - + + Deleted + + + + + Downloaded + + + + + downloading + + + + + error + - - Downloaded - + + Filesystem access error + - - downloading - + + Ignored + - - error - + + Moved to %1 + - - Filesystem access error - + + moving + - - Ignored - + + Replaced by virtual file + - - Moved to %1 - + + Server version downloaded, copied changed local file into case conflict conflict file + - - moving - + + Server version downloaded, copied changed local file into conflict file + - - Replaced by virtual file - + + + Unknown + - - Server version downloaded, copied changed local file into case conflict conflict file - + + Updated local metadata + - - Server version downloaded, copied changed local file into conflict file - + + Error + Error - - Unknown - + + Updated local virtual files metadata + Updated local virtual files metadata - - Updated local metadata - + + deleting + - - Updated local virtual files metadata - Updated local virtual files metadata + + ignoring + - - updating local metadata - + + updating local metadata + - - updating local virtual files metadata - Updating local virtual files metadata + + updating local virtual files metadata + Updating local virtual files metadata - - Uploaded - + + Uploaded + - - uploading - + + uploading + - - Virtual file created - + + Virtual file created + - - + + theme - - Aborting … - + + Aborting … + - - Preparing to sync - + + Preparing to sync + - - Setup Error - + + Setup Error + - - Status undefined - + + Status undefined + - - Sync Error - + + Sync Error + - - Sync is paused - + + Sync is paused + - - Sync is running - + + Sync is running + - - Sync Success - + + Sync Success + - - Sync Success, some files were ignored. - + + Sync Success, some files were ignored. + - - Waiting to start sync - + + Waiting to start sync + - - + + utility - - Always available locally - + + Always available locally + - - Available online only - + + Available online only + - - Could not open browser - + + Could not open browser + - - Could not open email client - + + Could not open email client + - - Currently available locally - + + Currently available locally + - - Free up local space - + + Free up local space + - - Make always available locally - + + Make always available locally + - - Some available online only - + + Some available online only + - - There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - + + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? + - - There was an error when launching the email client to create a new message. Maybe no default email client is configured? - + + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + - + diff --git a/translations/client_es.ts b/translations/client_es.ts index fae7714776b8e..042316c582923 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -1,3734 +1,4254 @@ - - - + + + + + - &Automatically check for Updates - Comprobación automática de actualizaciones + &Automatically check for Updates + Comprobación automática de actualizaciones - &Launch on System Startup - &Launch al iniciar el sistema + &Launch on System Startup + &Launch al iniciar el sistema - Copy link - Copiar enlace + Copy link + Copiar enlace - No Proxy - No Proxy + No Proxy + No Proxy - Remove All Files? - ¿Eliminar todos los archivos? + Remove All Files? + ¿Eliminar todos los archivos? - Show Call Notifications - + Show Server &Notifications + Mostrar servidor &notificaciones - Show Server &Notifications - Mostrar servidor &notificaciones + Use &Monochrome Icons + Utilizar &Iconos monocromos - - Show sync folders in &Explorer's navigation pane - - - - Use &Monochrome Icons - Utilizar &Iconos monocromos - - - + + ActivityItem - - In %1 - En %1 + + In %1 + En %1 - - Open %1 locally - Abrir %1 localmente + + Open %1 locally + Abrir %1 localmente - - + + ActivityItemContent - - Dismiss - Descartar + + Dismiss + Descartar - - Open file details - Abrir detalles del archivo + + Open file details + Abrir detalles del archivo - - + + ActivityList - - Activity list - Lista de actividad + + Activity list + Lista de actividad - - No activities yet - Aún no hay actividades + + No activities yet + Aún no hay actividades - - + + BasicComboBox - - Clear status message menu - Borrar el menú de mensajes de estado + + Clear status message menu + Borrar el menú de mensajes de estado - - + + CallNotificationDialog - - Answer Talk call notification - Aviso de llamada de Answer Talk + + Answer Talk call notification + Aviso de llamada de Answer Talk - - Decline - Rechazar + + Decline + Rechazar - - Decline Talk call notification - Rechazar la notificación de llamadas de Talk + + Decline Talk call notification + Rechazar la notificación de llamadas de Talk - - Talk notification caller avatar - Avatar de la notificación de llamada + + Talk notification caller avatar + Avatar de la notificación de llamada - - + + CloudProviderWrapper - - %1 (%2, %3) - %1 (%2, %3) + + %1 (%2, %3) + %1 (%2, %3) - - Checking for changes in "%1" - Buscando cambios en "%1" + + Checking for changes in "%1" + Buscando cambios en "%1" - - Help - Ayuda + + Help + Ayuda - - Log out - Cerrar sesión + + Log out + Cerrar sesión - - No recently changed files - No hay archivos modificados recientemente + + + No recently changed files + No hay archivos modificados recientemente - - Open website - Abrir página web + + Open website + Abrir página web - - Pause synchronization - Pausar sincronización + + Pause synchronization + Pausar sincronización - - Quit sync client - Cerrar cliente de sincronización + + Quit sync client + Cerrar cliente de sincronización - - Recently changed - Cambiado recientemente + + Recently changed + Cambiado recientemente - - Settings - Configuración + + Settings + Configuración - - Sync paused - Sincronización pausada + + Sync paused + Sincronización pausada - - Syncing - Sincronizando + + Syncing + Sincronizando - - Syncing %1 - Sincronizando %1 + + Syncing %1 + Sincronizando %1 - - Syncing %1 (%2 left) - Sincronizando %1 (quedan %2) + + Syncing %1 (%2 left) + Sincronizando %1 (quedan %2) - - Syncing %1 of %2 - Sincronizando %1 de %2 + + Syncing %1 of %2 + Sincronizando %1 de %2 - - Syncing %1 of %2 (%3 left) - Sincronizando %1 de %2 (%3 restantes) + + Syncing %1 of %2 (%3 left) + Sincronizando %1 de %2 (%3 restantes) - - + + ConflictDelegate - - Local version - Versión local + + Local version + Versión local - - Server version - Versión del servidor + + Server version + Versión del servidor - - + + CrashReporter - - Close - Cerrar + + + + We cannot gather useful debug information on your system. + + + + + + + + + Close + Cerrar + + + + Ready to send debug information (<a href="%1">view backtrace</a>). + + + + + Gathering debug information... + + + + + Uploaded %L1 of %L2 KB. + + + + + Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. + + + + + Failed to send crash info. + + + + + Tomahawk Crash Reporter + + + + + <html><head/><body><p><br/></p></body></html> + + + + + Abort + + + + + Send this report + + + + + Don't send + + + + + You can disable sending crash reports in the configuration dialog. + - - + + EditFileLocallyLoadingDialog - - Opening file for local editing - Abriendo archivo para editarlo en local + + Opening file for local editing + Abriendo archivo para editarlo en local - - + + EmojiPicker - - No recent emojis - No hay emojis recientes + + No recent emojis + No hay emojis recientes - - + + ErrorBox - - Error - Error + + Error + Error - - + + FakeHangingReply - - Operation canceled - Operación cancelada + + Operation canceled + Operación cancelada - - + + FileDetailsPage - Sharing - Compartir + Sharing + Compartir - - + + + Dismiss + Descartar + + + FileDetailsWindow - - File details of %1 · %2 - Detalles del archivo de %1 · %2 + + File details of %1 · %2 + Detalles del archivo de %1 · %2 - - + + FileProviderEvictionDialog - - Evict materialised files - Evitar los archivos materializados + + Evict materialised files + Evitar los archivos materializados - - Materialised items - Elementos materializados + + Materialised items + Elementos materializados - - Reload - Recargar + + Reload + Recargar - - + + FileProviderFastEnumerationSettings - - Enable fast sync - Habilitar sincronización rápida + + Enable fast sync + Habilitar sincronización rápida + + + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + - - Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - La sincronización rápida sólo sincronizará los cambios en archivos y carpetas dentro de las carpetas que se han explorado. Esto puede incrementar significativamente la capacidad de respuesta en la configuración inicial de archivos virtuales. Sin embargo, esto provocará descargas redundantes de archivos movidos a carpetas inexploradas. + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + La sincronización rápida sólo sincronizará los cambios en archivos y carpetas dentro de las carpetas que se han explorado. Esto puede incrementar significativamente la capacidad de respuesta en la configuración inicial de archivos virtuales. Sin embargo, esto provocará descargas redundantes de archivos movidos a carpetas inexploradas. - - + + FileProviderFileDelegate - - Delete - Borrar + + Delete + Borrar - - + + FileProviderSettings - - Advanced - Avanzado + + Advanced + Avanzado - - Create debug archive - Crear archivo de depuración + + Create debug archive + Crear archivo de depuración - - Enable virtual files - Activar archivos virtuales + + Enable virtual files + Activar archivos virtuales - - General settings - Configuración general + + General settings + Configuración general - - Signal file provider domain - Dominio del proveedor de archivos de firmas + + Signal file provider domain + Dominio del proveedor de archivos de firmas - - Virtual files settings - Configuración de archivos virtuales + + Virtual files settings + Configuración de archivos virtuales - - + + FileProviderStorageInfo - - %1 GB of %2 GB remote files synced - %1 GB de %2 GB de archivos remotos sincronizados + + %1 GB of %2 GB remote files synced + %1 GB de %2 GB de archivos remotos sincronizados - - Evict local copies... - Desalojar las copias locales... + + Evict local copies... + Desalojar las copias locales... - - Local storage use - Uso de almacenamiento local + + Local storage use + Uso de almacenamiento local - - + + FileProviderSyncStatus - - All synced! - ¡Todo está sincronizado! + + All synced! + ¡Todo está sincronizado! - - + + + Syncing + Sincronizando + + + FileSystem - Could not make directories in trash - No se pueden crear directorios en la papelera + Could not make directories in trash + No se pueden crear directorios en la papelera - Could not move "%1" to "%2" - No se pudo mover "%1" a "%2" + Could not move "%1" to "%2" + No se pudo mover "%1" a "%2" - - Could not remove folder "%1" - No se ha podido eliminar la carpeta "%1" + + Could not remove folder "%1" + No se ha podido eliminar la carpeta "%1" - - Error removing "%1": %2 - Error al eliminar "%1": %2 + + Error removing "%1": %2 + Error al eliminar "%1": %2 - Moving to the trash is not implemented on this platform - Mover a la papelera no está implementado en esta plataforma + Moving to the trash is not implemented on this platform + Mover a la papelera no está implementado en esta plataforma - - + + Flow2AuthWidget - - An error occurred while connecting. Please try again. - Se ha producido un error al conectarse. Por favor, inténtelo de nuevo. + + An error occurred while connecting. Please try again. + Se ha producido un error al conectarse. Por favor, inténtelo de nuevo. - - Browser Authentication - Autentificación del navegador + + Browser Authentication + Autentificación del navegador - - Copy Link - Copiar Link + + Copy Link + Copiar Link - - Logo - Logo + + Logo + Logo - - Reopen Browser - Reabrir el navegador + + Reopen Browser + Reabrir el navegador - - Switch to your browser to connect your account - Cambiar al navegador para conectar con tu cuenta + + Switch to your browser to connect your account + Cambiar al navegador para conectar con tu cuenta - - + + FolderWizardSelectiveSync - - Add Folder Sync - Añadir sincronización de carpetas + + Add Folder Sync + Añadir sincronización de carpetas - - Step 3 of 3: Selektive Synchronisation - Paso 3 de 3: Sincronización selectiva + + Step 3 of 3: Selektive Synchronisation + Paso 3 de 3: Sincronización selectiva - - + + FolderWizardSourcePage - - &Choose - &Elegir + + Add Folder Sync + Añadir sincronización de carpetas + + + + &Choose + &Elegir - &Choose … - &Elige ... + &Choose … + &Elige ... - Pick a local folder on your computer to sync - Elige una carpeta local de tu ordenador para sincronizarla + Pick a local folder on your computer to sync + Elige una carpeta local de tu ordenador para sincronizarla - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - Selecciona una carpeta de tu disco duro que deba estar permanentemente conectada a tu %1. Todos los archivos y subcarpetas se cargan y sincronizan automáticamente. + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Selecciona una carpeta de tu disco duro que deba estar permanentemente conectada a tu %1. Todos los archivos y subcarpetas se cargan y sincronizan automáticamente. - - Step 1 of 3: Select local folder - Paso 1 de 3: Seleccionar carpeta local + + Step 1 of 3: Select local folder + Paso 1 de 3: Seleccionar carpeta local - - + + FolderWizardTargetPage - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - Ambas carpetas están permanentemente vinculadas y sus respectivos contenidos se sincronizan y actualizan automáticamente. + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Ambas carpetas están permanentemente vinculadas y sus respectivos contenidos se sincronizan y actualizan automáticamente. + + + + Create folder + Crear carpeta + + + + Folders + Carpetas + + + + Add Folder Sync + Añadir sincronización de carpetas - - Create folder - Crear carpeta + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + Por favor, ahora seleccione o cree una carpeta de destino en su %1 donde el contenido debe ser cargado y sincronizado. - - Folders - Carpetas + + Refresh + Actualizar - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - Por favor, ahora seleccione o cree una carpeta de destino en su %1 donde el contenido debe ser cargado y sincronizado. + Select a remote destination folder + Seleccione una carpeta de destino remota - - Refresh - Actualizar + + Step 2 of 3: Directory in your %1 + Paso 2 de 3: Directorio en su %1 + + + KMessageWidget - Select a remote destination folder - Seleccione una carpeta de destino remota + + &Close + - - Step 2 of 3: Directory in your %1 - Paso 2 de 3: Directorio en su %1 + + Close message + - - + + OCC::AbstractNetworkJob - - Connection timed out - Tiempo de conexión agotado + + Connection timed out + Tiempo de conexión agotado - - Server replied "%1 %2" to "%3 %4" - El servidor respondió "%1 %2" a "%3 %4" + + Server replied "%1 %2" to "%3 %4" + El servidor respondió "%1 %2" a "%3 %4" - - Unknown error: network reply was deleted - Error desconocido: la respuesta de red fue eliminada + + Unknown error: network reply was deleted + Error desconocido: la respuesta de red fue eliminada - - + + OCC::Account - - File %1 is already locked by %2. - El archivo %1 ya está bloqueado por %2. + + File %1 is already locked by %2. + El archivo %1 ya está bloqueado por %2. - - Lock operation on %1 failed with error %2 - La operación de bloqueo en %1 ha fallado con el error %2. + + Lock operation on %1 failed with error %2 + La operación de bloqueo en %1 ha fallado con el error %2. - - Unlock operation on %1 failed with error %2 - La operación de desbloqueo en %1 ha fallado con el error %2. + + Unlock operation on %1 failed with error %2 + La operación de desbloqueo en %1 ha fallado con el error %2. - - + + OCC::AccountManager - - %1 accounts were detected from a legacy desktop client. + + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - %1 cuentas se detectaron con un cliente de escritorio antiguo. + %1 cuentas se detectaron con un cliente de escritorio antiguo. ¿Deben estas cuentas ser importadas? - - 1 account was detected from a legacy desktop client. + + 1 account was detected from a legacy desktop client. Should the account be imported? - 1 cuenta se detectó desde un cliente de escritorio antiguo. + 1 cuenta se detectó desde un cliente de escritorio antiguo. ¿Debe importarse esta cuenta? - An existing configuration from a legacy desktop client was detected. + An existing configuration from a legacy desktop client was detected. Should an account import be attempted? - Se ha reconocido una configuración existente de un cliente de escritorio anterior. + Se ha reconocido una configuración existente de un cliente de escritorio anterior. Se debe intentar importar una cuenta? - - Could not import accounts from legacy client configuration. - No se pudieron importar las cuentas desde la configuración del cliente antiguo. + + Could not import accounts from legacy client configuration. + No se pudieron importar las cuentas desde la configuración del cliente antiguo. - - Import - Importar + + Import + Importar - - Legacy import - Importación antigua + + + Legacy import + Importación antigua - - Skip - Saltar + + Skip + Saltar - - Successfully imported account from legacy client: %1 - - - - + + OCC::AccountSettings - - (experimental) - (experimental) + + (experimental) + (experimental) - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - %1 (%3%) de %2 en uso. Algunas carpetas, como carpetas de red o compartidas, podrían tener límites diferentes. + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + %1 (%3%) de %2 en uso. Algunas carpetas, como carpetas de red o compartidas, podrían tener límites diferentes. - - %1 as %2 - %1 como %2 + + %1 as %2 + %1 como %2 - - %1 in use - %1 en uso + + %1 in use + %1 en uso - - %1 of %2 in use - %1 de %2 en uso + + %1 of %2 in use + %1 de %2 en uso - - <p>Could not create local folder <i>%1</i>.</p> - <p>No pudo crear la carpeta local <i>%1</i>.</p> + + <p>Could not create local folder <i>%1</i>.</p> + <p>No pudo crear la carpeta local <i>%1</i>.</p> - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>¿De verdad quiere dejar de sincronizar la carpeta <i>%1</i>?</p><p><b>Nota:</b> Esto <b>no</b> elminará los archivo.</p> + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>¿De verdad quiere dejar de sincronizar la carpeta <i>%1</i>?</p><p><b>Nota:</b> Esto <b>no</b> elminará los archivo.</p> - - Apply - Aplicar + + Apply + Aplicar - - Apply manual changes - Aplicar cambios manuales + + Apply manual changes + Aplicar cambios manuales - - Availability - Disponibilidad + + + Availability + Disponibilidad - - Cancel - Cancelar + + + + Cancel + Cancelar - - Choose what to sync - Elija qué sincronizar + + Choose what to sync + Elija qué sincronizar - - Confirm Folder Sync Connection Removal - Confirme la sincronización para la eliminación de la carpeta conectada + + Confirm Folder Sync Connection Removal + Confirme la sincronización para la eliminación de la carpeta conectada - - Connected to %1. - Conectado a %1. + + Connected to %1. + Conectado a %1. - - Connected with <server> as <user> - Conectado a <server> como <user> + + Connected with <server> as <user> + Conectado a <server> como <user> - - Connecting to %1 … - Conectando a %1 ... + + Connecting to %1 … + Conectando a %1 ... - - Could not encrypt folder because the folder does not exist anymore - No es posible cifrar la carpeta porque ya no existe + + Could not encrypt folder because the folder does not exist anymore + No es posible cifrar la carpeta porque ya no existe - - Create new folder - Crear nueva carpeta + + + Create new folder + Crear nueva carpeta - - Currently there is no storage usage information available. - Actualmente no hay información disponible sobre el uso de almacenamiento. + + Currently there is no storage usage information available. + Actualmente no hay información disponible sobre el uso de almacenamiento. - - Disable encryption - Deshabilitar cifrado + + Disable encryption + Deshabilitar cifrado - - Disable end-to-end encryption - Deshabilitar cifrado de extremo a extremo + + Disable end-to-end encryption + Deshabilitar cifrado de extremo a extremo - - Disable end-to-end encryption for %1? - Deshabilitar cifrado de extremo a extremo para %1? + + Disable end-to-end encryption for %1? + Deshabilitar cifrado de extremo a extremo para %1? - - Disable support - Desactivar soporte + + Disable support + Desactivar soporte - - Disable virtual file support … - Desactivar soporte para archivos virtuales … + + Disable virtual file support … + Desactivar soporte para archivos virtuales … - - Disable virtual file support? - ¿Desactivar soporte para archivos virtuales? + + Disable virtual file support? + ¿Desactivar soporte para archivos virtuales? - - Display mnemonic - Mostrar regla mnemotécnica + + Display mnemonic + Mostrar regla mnemotécnica - - Do not encrypt folder - No cifrar carpeta + + + Do not encrypt folder + No cifrar carpeta - - Edit Ignored Files - Editar archivos ignorados + + + Edit Ignored Files + Editar archivos ignorados - - Enable virtual file support %1 … - Activar soporte para archivos virtuales %1 ... + + Enable virtual file support %1 … + Activar soporte para archivos virtuales %1 ... - - Encrypt - Cifrar + + Encrypt + Cifrar - - Encrypt folder - Cifrar carpeta + + + Encrypt folder + Cifrar carpeta - - Encryption failed - Ha fallado el cifrado + + Encryption failed + Ha fallado el cifrado - - End-to-end Encryption - Cifrado de extremo a extremo + + End-to-end Encryption + Cifrado de extremo a extremo - - End-to-end encryption has been enabled for this account - El cifrado de extremo a extremo a sido habilitado para esta cuenta + + End-to-end encryption has been enabled for this account + El cifrado de extremo a extremo a sido habilitado para esta cuenta - - End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - El cifrado de extremo a extremo ha sido habilitado en esta cuenta con otro dispositivo.<br> puede ser habilitado en este dispositivo ingresando su mnemónico.<br> Esto habilitará la sincronización de las carpetas cifradas existentes + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. + El cifrado de extremo a extremo ha sido habilitado en esta cuenta con otro dispositivo.<br> puede ser habilitado en este dispositivo ingresando su mnemónico.<br> Esto habilitará la sincronización de las carpetas cifradas existentes - - End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. Would you like to set up end-to-end encryption? - El cifrado de extremo a extremo no está configurado en este dispositivo. Una vez que esté configurado, podrás cifrar esta carpeta. + El cifrado de extremo a extremo no está configurado en este dispositivo. Una vez que esté configurado, podrás cifrar esta carpeta. ¿Deseas configurar el cifrado de extremo a extremo? - - End-to-end encryption mnemonic - Mnemónico para cifrado de extremo a extremo + + End-to-end encryption mnemonic + Mnemónico para cifrado de extremo a extremo + + + + End-to-end Encryption with Virtual Files + Cifrado de extremo a extremo con Archivos Virtuales - - End-to-end Encryption with Virtual Files - Cifrado de extremo a extremo con Archivos Virtuales + + Expand Memory + Ampliar la memoria - - Expand Memory - Ampliar la memoria + + Folder creation failed + Ha fallado la creación de la carpeta - - Folder creation failed - Ha fallado la creación de la carpeta + + Force sync now + Forzar la sincronización ahora - - Force sync now - Forzar la sincronización ahora + + https://wl.hidrive.com/easy/0057 + https://wl.hidrive.com/easy/0087 - - https://wl.hidrive.com/easy/0057 - https://wl.hidrive.com/easy/0087 + + No %1 connection configured. + No hay ninguna conexión de %1 configurada. - - No %1 connection configured. - No hay ninguna conexión de %1 configurada. + + No account configured. + No se ha configurado ninguna cuenta. - - No account configured. - No se ha configurado ninguna cuenta. + No connection to %1 at %2. + No hay conexión con %1 en %2. - No connection to %1 at %2. - No hay conexión con %1 en %2. + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + Obtener autorización del navegador. <a href='%1'>Haga clic aquí</a> para volver a abrir el navegador. - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - Obtener autorización del navegador. <a href='%1'>Haga clic aquí</a> para volver a abrir el navegador. + + + Open folder + Abrir carpeta - - Open folder - Abrir carpeta + + Pause sync + Pausar sincronización - - Pause sync - Pausar sincronización + + Please wait for the folder to sync before trying to encrypt it. + Por favor, espere a que la carpeta se sincronice antes de intentar cifrarla. - - Please wait for the folder to sync before trying to encrypt it. - Por favor, espere a que la carpeta se sincronice antes de intentar cifrarla. + + Remove folder sync connection + Eliminar la sincronización de carpetas conectadas - - Remove folder sync connection - Eliminar la sincronización de carpetas conectadas + + Remove Folder Sync Connection + Eliminar carpeta de sincronización conectada - - Remove Folder Sync Connection - Eliminar carpeta de sincronización conectada + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. + Quitar el cifrado de extremo a extremo borrará los archivos sincronizados localmente que se encuentran encriptados.<br>Los archivos encriptados se mantendrán en el servidor. - - Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - Quitar el cifrado de extremo a extremo borrará los archivos sincronizados localmente que se encuentran encriptados.<br>Los archivos encriptados se mantendrán en el servidor. + + Restart sync + Reiniciar sync - - Restart sync - Reiniciar sync + + Resume sync + Continuar sincronización - - Resume sync - Continuar sincronización + + Server %1 is currently being redirected, or your connection is behind a captive portal. + El servidor %1 está siendo redirigido actualmente o tu conexión está detrás de un portal cautivo. - - Server %1 is currently being redirected, or your connection is behind a captive portal. - El servidor %1 está siendo redirigido actualmente o tu conexión está detrás de un portal cautivo. + + Server %1 is currently in maintenance mode. + El servidor %1 se encuentra en modo mantenimiento. - - Server %1 is currently in maintenance mode. - El servidor %1 se encuentra en modo mantenimiento. + + Server %1 is temporarily unavailable. + Servidor %1 no está disponible temporalmente. - - Server %1 is temporarily unavailable. - Servidor %1 no está disponible temporalmente. + + Server configuration error: %1 at %2. + Error de configuración del servidor: %1 en %2, - - Server configuration error: %1 at %2. - Error de configuración del servidor: %1 en %2, + + There are folders that were not synchronized because they are too big: + - - Set up encryption - Configurar cifrado + + There are folders that were not synchronized because they are external storages: + - - Signed out from %1. - Cerró sesión desde %1. + + There are folders that were not synchronized because they are too big or external storages: + - - Standard file sync - Sincronización de archivos estándar + + Set up encryption + Configurar cifrado - - Storage space %1% occupied - Espacio de almacenamiento %1% ocupado + + Signed out from %1. + Cerró sesión desde %1. - - Storage space: … - Espacio de almacenamiento: ... + + Standard file sync + Sincronización de archivos estándar - - Sync Running - Sincronización en curso + + Storage space %1% occupied + Espacio de almacenamiento %1% ocupado - - Synchronize all - Sincronizar todo + + + Storage space: … + Espacio de almacenamiento: ... - - Synchronize none - No sincronizar nada + + Sync Running + Sincronización en curso - - The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - La carpeta tiene un pequeño problema de sincronización. El cifrado de esta carpeta será posible cuando se haya sincronizado correctamente. + + Synchronize all + Sincronizar todo - - The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - La carpeta tiene un problema de sincronización. El cifrado de esta carpeta será posible cuando se haya sincronizado correctamente. + + Synchronize none + No sincronizar nada - - The server version %1 is unsupported! Proceed at your own risk. - ¡La versión %1 del servidor no está soportada! Si continúas, lo haces bajo tu propio riesgo. + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully + La carpeta tiene un pequeño problema de sincronización. El cifrado de esta carpeta será posible cuando se haya sincronizado correctamente. - - The syncing operation is running.<br/>Do you want to terminate it? - La sincronización está en curso.<br/>¿Desea interrumpirla? + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully + La carpeta tiene un problema de sincronización. El cifrado de esta carpeta será posible cuando se haya sincronizado correctamente. - - There are folders that have grown in size beyond %1MB: %2 - Existen carpetas que han aumentado de tamaño más alla de %1MB: %2 + + The server version %1 is unsupported! Proceed at your own risk. + ¡La versión %1 del servidor no está soportada! Si continúas, lo haces bajo tu propio riesgo. - - There are folders that were not synchronized because they are external storages: - Hay carpetas que no se han sincronizado porque están en el almacenamiento externo: + + The syncing operation is running.<br/>Do you want to terminate it? + La sincronización está en curso.<br/>¿Desea interrumpirla? - - There are folders that were not synchronized because they are too big or external storages: - Hay carpetas que no se han sincronizado porque son demasiado grandes o están en el almacenamiento externo: + + There are folders that have grown in size beyond %1MB: %2 + Existen carpetas que han aumentado de tamaño más alla de %1MB: %2 - - There are folders that were not synchronized because they are too big: - Hay carpetas que no se han sincronizado porque son demasiado grandes: + There are folders that were not synchronized because they are external storages: + Hay carpetas que no se han sincronizado porque están en el almacenamiento externo: - - This account supports end-to-end encryption - Esta cuenta soporta cifrado punto a punto + There are folders that were not synchronized because they are too big or external storages: + Hay carpetas que no se han sincronizado porque son demasiado grandes o están en el almacenamiento externo: - - This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + There are folders that were not synchronized because they are too big: + Hay carpetas que no se han sincronizado porque son demasiado grandes: + + + + This account supports end-to-end encryption + Esta cuenta soporta cifrado punto a punto + + + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. The only advantage of disabling virtual file support is that the selective sync feature will become available again. This action will abort any currently running synchronization. - Esta acción deshabilitará el soporte de archivos virtuales. Como consecuencia, se descargará el contenido de las carpetas que estén marcadas como "disponible solo en línea". + Esta acción deshabilitará el soporte de archivos virtuales. Como consecuencia, se descargará el contenido de las carpetas que estén marcadas como "disponible solo en línea". La única ventaja de deshabilitar el soporte de archivos virtuales es para la característica de sincronización selectiva que estará disponible de nuevo. Además, esta acción interrumpirá cualquier sincronización en curso. - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - Esto encriptará tu carpeta y todos los archivos que contenga. Estos archivos ya no serán accesibles sin tu clave mnemotécnica de encriptación. + Esto encriptará tu carpeta y todos los archivos que contenga. Estos archivos ya no serán accesibles sin tu clave mnemotécnica de encriptación. <b>Este proceso no es reversible. ¿Está seguro de que desea continuar?</b> - - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - Esto cifrará su carpeta y todos los archivos contenidos en ella. Ya no se podrá acceder a estos archivos sin su clave de cifrado. + Esto cifrará su carpeta y todos los archivos contenidos en ella. Ya no se podrá acceder a estos archivos sin su clave de cifrado. <b>Este proceso no es reversible. ¿Seguro que quiere continuar?</b> - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - Para proteger tu identidad criptográfica, la ciframos con una regla mnemotécnica de 12 palabras del diccionario. Por favor, anótalas y mantenlas a salvo. Estas palabras serán necesarias para añadir otros dispositivos a su cuenta (como un teléfono móvil o un portátil). + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + Para proteger tu identidad criptográfica, la ciframos con una regla mnemotécnica de 12 palabras del diccionario. Por favor, anótalas y mantenlas a salvo. Estas palabras serán necesarias para añadir otros dispositivos a su cuenta (como un teléfono móvil o un portátil). - - Unable to connect to %1. - No es posible conectarse con %1. + + Unable to connect to %1. + No es posible conectarse con %1. - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - Las carpetas no seleccionadas serán <b>eliminadas</b> de su carpeta local y ya no serán sincronizadas en este ordenador + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + Las carpetas no seleccionadas serán <b>eliminadas</b> de su carpeta local y ya no serán sincronizadas en este ordenador - - Virtual file sync - Sincronización de archivos virtual + + Virtual file sync + Sincronización de archivos virtual - - Warning - Aviso + + Warning + Aviso - - You cannot encrypt a folder with contents, please remove the files. + + You cannot encrypt a folder with contents, please remove the files. Wait for the new sync, then encrypt it. - No puede cifrar una carpeta con contenidos, por favor, elimine los archivos. + No puede cifrar una carpeta con contenidos, por favor, elimine los archivos. Espere a una nueva sincronización, luego cifrala. - - You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - Parece que tienes la función de Archivos Virtuales activada en esta carpeta. Por el momento, no es posible descargar implícitamente los archivos virtuales que están cifrados de extremo a extremo. Para obtener la mejor experiencia con los archivos virtuales y el cifrado de extremo a extremo, asegúrate de que la carpeta cifrada está marcada con "Hacer que esté siempre disponible localmente". + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". + Parece que tienes la función de Archivos Virtuales activada en esta carpeta. Por el momento, no es posible descargar implícitamente los archivos virtuales que están cifrados de extremo a extremo. Para obtener la mejor experiencia con los archivos virtuales y el cifrado de extremo a extremo, asegúrate de que la carpeta cifrada está marcada con "Hacer que esté siempre disponible localmente". - - + + OCC::AccountSetupFromCommandLineJob - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Acceso denegado por el servidor. Para verificar que tiene acceso, <a href="%1">haga clic aquí</a> para acceder al servicio desde el navegador. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Acceso denegado por el servidor. Para verificar que tiene acceso, <a href="%1">haga clic aquí</a> para acceder al servicio desde el navegador. - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - La petición autenticada al servidor ha sido redirigida a "%1". La URL es errónea, el servidor está mal configurado. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + La petición autenticada al servidor ha sido redirigida a "%1". La URL es errónea, el servidor está mal configurado. - - There was an invalid response to an authenticated WebDAV request - Ha habido una respuesta no válida a una solicitud autenticada de WebDAV + + There was an invalid response to an authenticated WebDAV request + Ha habido una respuesta no válida a una solicitud autenticada de WebDAV - - + + OCC::AccountState - - Asking Credentials - Solicitando credenciales + + Asking Credentials + Solicitando credenciales - - Configuration error - Error en la configuración + + Configuration error + Error en la configuración - - Connected - Conectado + + Connected + Conectado - - Disconnected - Desconectado + + Disconnected + Desconectado - - Maintenance mode - Modo mantenimiento + + Maintenance mode + Modo mantenimiento - - Network error - Error en la red + + Network error + Error en la red - - Redirect detected - Redirección detectada + + Redirect detected + Redirección detectada - - Service unavailable - Servicio no disponible + + Service unavailable + Servicio no disponible - - Signed out - Cerrar sesión + + Signed out + Cerrar sesión - - Unknown account state - Estado de cuenta desconocido + + Unknown account state + Estado de cuenta desconocido - - + + OCC::ActivityListModel - - Fetching activities … - Actividades de búsqueda … + + Fetching activities … + Actividades de búsqueda … - - Files from the ignore list as well as symbolic links are not synced. - Los archivos de la lista de ignorados así como los enlace simbólicos no estarán sincronizados. + + Files from the ignore list as well as symbolic links are not synced. + Los archivos de la lista de ignorados así como los enlace simbólicos no estarán sincronizados. - - For more activities please open the Activity app. - Para más detalles, por favor, abre la app Actividades. + + For more activities please open the Activity app. + Para más detalles, por favor, abre la app Actividades. - - Network error occurred: client will retry syncing. - Ha ocurrido un error de red: el cliente reintentará la sincronización. + + Network error occurred: client will retry syncing. + Ha ocurrido un error de red: el cliente reintentará la sincronización. - - + + OCC::AddCertificateDialog - - An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - Usar encriptación pkcs12 es muy recomendable, puesto que una copia se guardará en el archivo de configuración. + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. + Usar encriptación pkcs12 es muy recomendable, puesto que una copia se guardará en el archivo de configuración. - - Browse … - Explorar ... + + Browse … + Explorar ... - - Certificate & Key (pkcs12): - Certificado & Key (pkcs12): + + Certificate & Key (pkcs12): + Certificado & Key (pkcs12): - - Certificate files (*.p12 *.pfx) - Archivos de certificado (*.p12 *.pfx) + + Certificate files (*.p12 *.pfx) + Archivos de certificado (*.p12 *.pfx) - - Certificate password: - Contraseña del certificado: + + Certificate password: + Contraseña del certificado: - - Select a certificate - Seleccione un certificado + + Select a certificate + Seleccione un certificado - - SSL client certificate authentication - Certificado de autentificación SSL del cliente + + SSL client certificate authentication + Certificado de autentificación SSL del cliente - - This server probably requires a SSL client certificate. - Probablemente este servidor requiera un certificado SSL del cliente. + + This server probably requires a SSL client certificate. + Probablemente este servidor requiera un certificado SSL del cliente. - - + + OCC::Application - - %1 accounts - %1 cuentas + %1 accounts + %1 cuentas + + + %1 folders + %1 carpetas - - %1 folders - %1 carpetas + + 1 account + 1 cuenta - - 1 account - 1 cuenta + + 1 folder + 1 carpeta - - 1 folder - 1 carpeta + + Continue + Continuar - - Continue - Continuar + + newer + newer software version + recientes - - deleting - eliminando + + older + older software version + antiguos - - Error accessing the configuration file - Error al acceder al archivo de configuración + + deleting + eliminando - - ignoring - ignorando + + %1 accounts + number of accounts imported + %1 cuentas - - Imported %1 and %2 from a legacy desktop client. + + %1 folders + number of folders imported + %1 carpetas + + + + Legacy import + Importación antigua + + + + Imported %1 and %2 from a legacy desktop client. +%3 + number of accounts and folders imported. list of users. + Se importaron %1 y %2 desde un cliente de escritorio legado. +%3 + + + + Error accessing the configuration file + Error al acceder al archivo de configuración + + + + ignoring + ignorando + + + Imported %1 and %2 from a legacy desktop client. %3 - Se importaron %1 y %2 desde un cliente de escritorio legado. + Se importaron %1 y %2 desde un cliente de escritorio legado. %3 - - newer - recientes + newer + recientes - - older - antiguos + older + antiguos - - Quit - Salir + + Quit + Salir - - Quit %1 - Salir %1 + + Quit %1 + Salir %1 - - Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - Algunos ajustes fueron configurados en %1 versiones de este cliente y utilizan características que no están disponibles en esta versión.<br><br>Continuar implica <b>%2 estos ajustes</b>.<br><br>El archivo de configuración actual ya fue respaldado a <i>%3</i>. + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. + Algunos ajustes fueron configurados en %1 versiones de este cliente y utilizan características que no están disponibles en esta versión.<br><br>Continuar implica <b>%2 estos ajustes</b>.<br><br>El archivo de configuración actual ya fue respaldado a <i>%3</i>. - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - Se ha producido un error al acceder al archivo de configuración en %1. Por favor, asegúrese de que su cuenta del sistema puede acceder al archivo. + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + Se ha producido un error al acceder al archivo de configuración en %1. Por favor, asegúrese de que su cuenta del sistema puede acceder al archivo. - - + + OCC::AuthenticationDialog - - &Password: - &Contraseña: + + &Password: + &Contraseña: - - &Username: - &Username: + + &Username: + &Username: - - Authentication Required - Se requiere autenticación + + Authentication Required + Se requiere autenticación - - Enter username and password for "%1" at %2. - Introduce usuario y contraseña para "%1" en %2. + + Enter username and password for "%1" at %2. + Introduce usuario y contraseña para "%1" en %2. - - + + OCC::BasePropagateRemoteDeleteEncrypted - "%1 Failed to unlock encrypted folder %2". - "%1 Fallo al desbloquear la carpeta cifrada %2". + + "%1 Failed to unlock encrypted folder %2". + "%1 Fallo al desbloquear la carpeta cifrada %2". - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - El código HTTP devuelto por el servidor es erróneo. Se esperaba 204, pero se recibió "%1 %2". + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + El código HTTP devuelto por el servidor es erróneo. Se esperaba 204, pero se recibió "%1 %2". - - + + OCC::BulkPropagatorJob - - Error updating metadata: %1 - Error al actualizar los metadatos: %1 + + Error updating metadata: %1 + Error al actualizar los metadatos: %1 - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - El archivo %1 no se puede subir porque ya existe otro con el mismo nombre, solo difiere en las mayúsculas/minúsculas + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + El archivo %1 no se puede subir porque ya existe otro con el mismo nombre, solo difiere en las mayúsculas/minúsculas - - File %1 has invalid modification time. Do not upload to the server. - El archivo %1 tiene una hora de modificación no válida. No subir al servidor. + + File %1 has invalid modification time. Do not upload to the server. + El archivo %1 tiene una hora de modificación no válida. No subir al servidor. - - File %1 has invalid modified time. Do not upload to the server. - El archivo %1 tiene una hora de modificación no válida. No subir al servidor. + + File %1 has invalid modified time. Do not upload to the server. + El archivo %1 tiene una hora de modificación no válida. No subir al servidor. - - File Removed (start upload) %1 - Archivo eliminado (comenzar subida) %1 + + File Removed (start upload) %1 + Archivo eliminado (comenzar subida) %1 - - Local file changed during sync. - Un archivo local ha cambiado durante la sincronización. + + + Local file changed during sync. + Un archivo local ha cambiado durante la sincronización. - - Local file changed during syncing. It will be resumed. - Un archivo local ha cambiado durante la sincronización. Será subido. + + Local file changed during syncing. It will be resumed. + Un archivo local ha cambiado durante la sincronización. Será subido. - - Network error: %1 - Error de red: %1 + + Network error: %1 + Error de red: %1 - - Restoration failed: %1 - Fallo al restaurar: %1 + + Restoration failed: %1 + Fallo al restaurar: %1 - - The file %1 is currently in use - El archivo %1 se encuentra en uso + + The file %1 is currently in use + El archivo %1 se encuentra en uso - - The local file was removed during sync. - El archivo local ha sido eliminado durante la sincronización. + + The local file was removed during sync. + El archivo local ha sido eliminado durante la sincronización. - - + + OCC::CaseClashConflictSolver - - Cannot rename file because a file with the same name already exists on the server. Please pick another name. - No se puede renombrar el archivo porque hay un archivo con el mismo nombre en el servidor. Por favor, elija otro nombre. + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + No se puede renombrar el archivo porque hay un archivo con el mismo nombre en el servidor. Por favor, elija otro nombre. - - Could not rename file. Please make sure you are connected to the server. - No se ha podido renombrar el archivo. Por favor, asegúrese de que está conectado al servidor. + + Could not rename file. Please make sure you are connected to the server. + No se ha podido renombrar el archivo. Por favor, asegúrese de que está conectado al servidor. - - Failed to fetch permissions with error %1 - Fallo en la obtención de permisos con error %1 + + Failed to fetch permissions with error %1 + Fallo en la obtención de permisos con error %1 - - Filename contains leading and trailing spaces. - El nombre del archivo contiene espacios iniciales y finales. + + Filename contains leading and trailing spaces. + El nombre del archivo contiene espacios iniciales y finales. - - Filename contains leading spaces. - El nombre del archivo contiene espacios al inicio. + + Filename contains leading spaces. + El nombre del archivo contiene espacios al inicio. - - Filename contains trailing spaces. - El nombre del archivo contiene espacios al final. + + Filename contains trailing spaces. + El nombre del archivo contiene espacios al final. - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - No tienes permisos para renombrar este archivo. Por favor, dile al autor del archivo que lo renombre. + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + No tienes permisos para renombrar este archivo. Por favor, dile al autor del archivo que lo renombre. - - + + OCC::CaseClashFilenameDialog - - %1 does not support equal file names with only letter casing differences. - %1 no soporta nombres de archivo idénticos con diferencias de capitalización de letras. + + %1 does not support equal file names with only letter casing differences. + %1 no soporta nombres de archivo idénticos con diferencias de capitalización de letras. + + + + + 0 byte + 0 bytes - - 0 byte - 0 bytes + + Case Clash Conflict + Conflicto de capitalización - - Case Clash Conflict - Conflicto de capitalización + + Case clashing file + Archivo con conflicto de capitalización - - Case clashing file - Archivo con conflicto de capitalización + + Existing file + Archivo existente - - Existing file - Archivo existente + + Error + Error - - file A - Archivo A + + file A + Archivo A - - file B - Archivo B + + file B + Archivo B - - Filename contains illegal characters: %1 - El nombre del archivo contiene caracteres ilegales: %1 + + Filename contains illegal characters: %1 + El nombre del archivo contiene caracteres ilegales: %1 - - New filename - Nuevo nombre de archivo + + New filename + Nuevo nombre de archivo - - Open clashing file - Abrir archivo con problema de capitalización + + + Open clashing file + Abrir archivo con problema de capitalización - - Open existing file - Abrir archivo existente + + + Open existing file + Abrir archivo existente - - Please enter a new name for the clashing file: - Por favor ingrese un nombre nuevo para el archivo con el problema de capitalización: + + Please enter a new name for the clashing file: + Por favor ingrese un nombre nuevo para el archivo con el problema de capitalización: - - Rename file - Renombrar archivo + + Rename file + Renombrar archivo - - The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - El archivo "%1" no pudo ser sincronizado porque genera un conflicto de capitalización con un archivo que ya existe en este sistema. + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + El archivo "%1" no pudo ser sincronizado porque genera un conflicto de capitalización con un archivo que ya existe en este sistema. - - The file could not be synced because it generates a case clash conflict with an existing file on this system. - El archivo no puede ser sincronizado porque genera un conflicto de capitalización con un archivo que ya existe en este sistema. + + Filename contains leading and trailing spaces. + El nombre del archivo contiene espacios iniciales y finales. - - today - hoy + + Filename contains leading spaces. + El nombre del archivo contiene espacios al inicio. - - Use invalid name - Usar nombre inválido + + Filename contains trailing spaces. + El nombre del archivo contiene espacios al final. - - + + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + El archivo no puede ser sincronizado porque genera un conflicto de capitalización con un archivo que ya existe en este sistema. + + + + + today + hoy + + + + Use invalid name + Usar nombre inválido + + + OCC::CleanupPollsJob - - Error writing metadata to the database - Error al escribir los metadatos en la base de datos + + Error writing metadata to the database + Error al escribir los metadatos en la base de datos - - + + OCC::ClientSideEncryption - - Enter E2E passphrase - Introduce la frase de acceso E2E + + Enter E2E passphrase + Introduce la frase de acceso E2E - - Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - Por favor, introduzca su frase de cifrado de extremo a extremo:<br><br>Nombre de usuario: %2<br> Cuenta: %3<br> + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + Por favor, introduzca su frase de cifrado de extremo a extremo:<br><br>Nombre de usuario: %2<br> Cuenta: %3<br> - - + + OCC::ConflictDialog - - <a href="%1">Open local version</a> - <a href="%1">Abrir versión local</a> + + Local version + Versión local + + + + + today + hoy + + + + + 0 byte + 0 bytes - - <a href="%1">Open server version</a> - <a href="%1">Abrir versión en servidor</a> + + <a href="%1">Open local version</a> + <a href="%1">Abrir versión local</a> - - Click to open the file - Clic para abrir el archivo + + Server version + Versión del servidor - - Conflicting versions of %1. - Versión conflictiva de %1. + + <a href="%1">Open server version</a> + <a href="%1">Abrir versión en servidor</a> - - Keep both versions - Mantener ambas versiones + + + Click to open the file + Clic para abrir el archivo - - Keep local version - Mantener versión local + + + Conflicting versions of %1. + Versión conflictiva de %1. - - Keep selected version - Mantener la versión seleccionada + + Keep both versions + Mantener ambas versiones - - Keep server version - Mantener la versión del servidor + + Keep local version + Mantener versión local - - Open local version - Abrir la versión local + + + Keep selected version + Mantener la versión seleccionada - - Open server version - Abrir la versión en servidor + + Keep server version + Mantener la versión del servidor - - Sync Conflict - Conflicto de sincronización + + Open local version + Abrir la versión local - - Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. - ¿Qué versión del archivo quiere mantener?<br/>Si selecciona ambas versiones, al archivo local se le añadirá un número a su nombre + + Open server version + Abrir la versión en servidor - - + + + Sync Conflict + Conflicto de sincronización + + + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + ¿Qué versión del archivo quiere mantener?<br/>Si selecciona ambas versiones, al archivo local se le añadirá un número a su nombre + + + OCC::ConflictSolver - - Confirm deletion - Confirmar borrado + + Confirm deletion + Confirmar borrado - - Do you want to delete the directory <i>%1</i> and all its contents permanently? - ¿Quieres eliminar la carpeta <i>%1</i> y todo su contenido permanentemente? + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + ¿Quieres eliminar la carpeta <i>%1</i> y todo su contenido permanentemente? - - Do you want to delete the file <i>%1</i> permanently? - ¿Quieres eliminar el archivo <i>%1</i> permanentemente? + + Do you want to delete the file <i>%1</i> permanently? + ¿Quieres eliminar el archivo <i>%1</i> permanentemente? - - Moving file failed: + + + Moving file failed: %1 - Fallo al mover el archivo: + Fallo al mover el archivo: %1 - - + + + + Error + Error + + + OCC::ConnectionValidator - - Authentication error: Either username or password are wrong. - Error de autenticación: El usuario o la contraseña son incorrectos + + Authentication error: Either username or password are wrong. + Error de autenticación: El usuario o la contraseña son incorrectos - - Connection issue - Problema en la conexión + + Connection issue + Problema en la conexión - - No Nextcloud account configured - La cuenta Nextcloud no está configurada + + No Nextcloud account configured + La cuenta Nextcloud no está configurada - - Please update to the latest server and restart the client. - Por favor, actualice a la última versión del servidor y reinicie el cliente. + + Please update to the latest server and restart the client. + Por favor, actualice a la última versión del servidor y reinicie el cliente. - - The configured server for this client is too old - La configuración del servidor para este cliente es demasiado antigua + + The configured server for this client is too old + La configuración del servidor para este cliente es demasiado antigua - - The provided credentials are not correct - Las credenciales proporcionadas no son correctas + + The provided credentials are not correct + Las credenciales proporcionadas no son correctas - - Timeout - Tiempo de espera superado + + Timeout + Tiempo de espera superado - - + + OCC::DiscoveryPhase - - Error while canceling deletion of %1 - Error al cancelar la eliminación de %1 + + Error while canceling deletion of %1 + Error al cancelar la eliminación de %1 - - Error while canceling deletion of a file - Error al cancelar la eliminación de un archivo + + Error while canceling deletion of a file + Error al cancelar la eliminación de un archivo - - + + OCC::DiscoverySingleDirectoryJob - - Encrypted metadata setup error: initial signature from server is empty. - Error de configuración de metadatos encriptados: la firma inicial del servidor está vacía. + + Encrypted metadata setup error: initial signature from server is empty. + Error de configuración de metadatos encriptados: la firma inicial del servidor está vacía. - - Encrypted metadata setup error! - ¡Hubo un error al configurar los metadatos cifrados! + + + Encrypted metadata setup error! + ¡Hubo un error al configurar los metadatos cifrados! - - Server error: PROPFIND reply is not XML formatted! - Error del servidor: ¡la respuesta de PROPFIND no tiene formato XML! + + + Server error: PROPFIND reply is not XML formatted! + Error del servidor: ¡la respuesta de PROPFIND no tiene formato XML! - - + + OCC::DiscoverySingleLocalDirectoryJob - - Directory not accessible on client, permission denied - Directorio no accesible en el cliente, permiso denegado + + Directory not accessible on client, permission denied + Directorio no accesible en el cliente, permiso denegado - - Directory not found: %1 - Directorio no encontrado: %1 + + Directory not found: %1 + Directorio no encontrado: %1 - - Error while opening directory %1 - Error al abrir el directorio %1 + + Error while opening directory %1 + Error al abrir el directorio %1 - - Error while reading directory %1 - Error al leer el directorio %1 + + Error while reading directory %1 + Error al leer el directorio %1 - - Filename encoding is not valid - La codificación del nombre del archivo no es válida + + Filename encoding is not valid + La codificación del nombre del archivo no es válida - - + + OCC::EditLocallyJob - - An error occurred during data retrieval. - Ocurrió un error mientras se recababan los datos. + + + + An error occurred during data retrieval. + Ocurrió un error mientras se recababan los datos. - - An error occurred during setup. - Ocurrió un error mientras se hacía la configuración. + + An error occurred during setup. + Ocurrió un error mientras se hacía la configuración. - - An error occurred trying to synchronise the file to edit locally. - Ocurrió un error mientras se intentaba sincronizar el archivo para edición local. + + + An error occurred trying to synchronise the file to edit locally. + Ocurrió un error mientras se intentaba sincronizar el archivo para edición local. - - An error occurred trying to verify the request to edit locally. - Ocurrió un error intentando verificar la solicitud de edición local. + + An error occurred trying to verify the request to edit locally. + Ocurrió un error intentando verificar la solicitud de edición local. - - Could not find a file for local editing. Make sure it is not excluded via selective sync. - No fue posible encontrar un archivo para edición local. Asegúrese de que no está excluida a través de la sincronización selectiva. + + + + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + No fue posible encontrar un archivo para edición local. Asegúrese de que no está excluida a través de la sincronización selectiva. - - Could not find a file for local editing. Make sure its path is valid and it is synced locally. - No fue posible encontrar un archivo para edición local. Asegúrese de que la ruta es válida y que este se encuentra sincronizado localmente. + + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + No fue posible encontrar un archivo para edición local. Asegúrese de que la ruta es válida y que este se encuentra sincronizado localmente. - - Could not find a remote file info for local editing. Make sure its path is valid. - No fue posible encontrar la información del archivo remoto para edición local. Asegúrese de que la ruta es válida. + + Could not find a remote file info for local editing. Make sure its path is valid. + No fue posible encontrar la información del archivo remoto para edición local. Asegúrese de que la ruta es válida. - - Could not find an account for local editing. - No fue posible encontrar una cuenta para edición local + + Could not find an account for local editing. + No fue posible encontrar una cuenta para edición local - - Could not open %1 - No fue posible abrir %1 + + Could not open %1 + No fue posible abrir %1 - - Could not start editing locally. - No se pudo iniciar la edición local. + + + + + + + + + Could not start editing locally. + No se pudo iniciar la edición local. - - Could not validate the request to open a file from server. - No se pudo validar la solicitud de apertura de archivo desde el servidor. + + + Could not validate the request to open a file from server. + No se pudo validar la solicitud de apertura de archivo desde el servidor. - - File %1 already locked. - El archivo %1 ya está bloqueado. + + Server error: PROPFIND reply is not XML formatted! + Error del servidor: ¡la respuesta de PROPFIND no tiene formato XML! - - File %1 could not be locked. - El archivo %1 no pudo ser bloqueado. + + File %1 already locked. + El archivo %1 ya está bloqueado. - - File %1 now locked. - El archivo %1 ahora está bloqueado. + + File %1 could not be locked. + El archivo %1 no pudo ser bloqueado. - - Invalid file path was provided. - Se proporcionó una ruta al archivo inválida. + + File %1 now locked. + El archivo %1 ahora está bloqueado. - - Invalid local file path. - Ruta al archivo local inválida. + + Invalid file path was provided. + Se proporcionó una ruta al archivo inválida. - - Invalid token received. - Se recibió un token inválido. + + Invalid local file path. + Ruta al archivo local inválida. - - Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - El bloqueo se mantendrá por %1 minutos. Puede también desbloquear este archivo manualmente una vez que termine de editarlo. + + Invalid token received. + Se recibió un token inválido. - - Please try again. - Por favor intente de nuevo. + + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + El bloqueo se mantendrá por %1 minutos. Puede también desbloquear este archivo manualmente una vez que termine de editarlo. - - + + + + + + + + Please try again. + Por favor intente de nuevo. + + + OCC::EncryptFolderJob - - Could not generate the metadata for encryption, Unlocking the folder. + + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. - No se pueden generar los metadatos para el cifrado, desbloquea la carpeta. + No se pueden generar los metadatos para el cifrado, desbloquea la carpeta. Esto podría ser un problema con tu librería OpenSSL - - + + OCC::EncryptedFolderMetadataHandler - - Error fetching encrypted folder ID. - Error al obtener el ID de la carpeta cifrada. + + Error fetching encrypted folder ID. + Error al obtener el ID de la carpeta cifrada. - - Error fetching metadata. - Error al obtener los metadatos. + + + + + + + Error fetching metadata. + Error al obtener los metadatos. - - Error locking folder. - Error al bloquear la carpeta. + + + + Error locking folder. + Error al bloquear la carpeta. - - Error parsing or decrypting metadata. - Error al analizar o descifrar los metadatos. + + Error parsing or decrypting metadata. + Error al analizar o descifrar los metadatos. - - Failed to upload metadata - Fallo al subir los metadatos + + Failed to upload metadata + Fallo al subir los metadatos - - + + OCC::FileDetails - - %1 day(s) ago - - - - hace %1 día(s) - + + %1 second(s) ago + seconds elapsed since file last modified + + + + - - %1 hour(s) ago - - - - hace %1 hora(s) - + + %1 minute(s) ago + minutes elapsed since file last modified + + + + - - %1 minute(s) ago - - - - Hace %1 minuto(s) - + + %1 hour(s) ago + hours elapsed since file last modified + + + + - - %1 month(s) ago - - - - hace %1 mes(es) - + + %1 day(s) ago + days elapsed since file last modified + + + + - - %1 second(s) ago - - - - Hace %1 segundo(s) - + + %1 month(s) ago + months elapsed since file last modified + + + + - - %1 year(s) ago - - - - hace %1 año(s) - + + %1 year(s) ago + years elapsed since file last modified + + + + - - Locked by %1 - Expires in %2 minute(s) - - - - Bloqueado por %1 - Expira en %2 minuto(s) - - - - + + Locked by %1 - Expires in %2 minute(s) + remaining time before lock expires + + + + + + + OCC::Flow2Auth - - Could not parse the JSON returned from the server: <br><em>%1</em> - No se pudo procesar el código JSON recibido del servidor: <br><em>%1</em> + + + Could not parse the JSON returned from the server: <br><em>%1</em> + No se pudo procesar el código JSON recibido del servidor: <br><em>%1</em> - - Error returned from the server: <em>%1</em> - Error devuelto por el servidor: <em>%1</em> + + + Error returned from the server: <em>%1</em> + Error devuelto por el servidor: <em>%1</em> - - The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - La URL de la consulta no comienza con HTTPS a pesar de que la URL de inicio de sesión comenzó con HTTPS. El inicio de sesión no será posible porque esto podría ser un problema de seguridad. Por favor, póngase en contacto con su administrador. + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + La URL de la consulta no comienza con HTTPS a pesar de que la URL de inicio de sesión comenzó con HTTPS. El inicio de sesión no será posible porque esto podría ser un problema de seguridad. Por favor, póngase en contacto con su administrador. - - The reply from the server did not contain all expected fields - La respuesta del servidor no contiene todos los campos esperados + + + The reply from the server did not contain all expected fields + La respuesta del servidor no contiene todos los campos esperados - - The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - La URL de consulta no comienza con HTTPS a pesar de que la URL de inicio de sesión comenzó con HTTPS. El inicio de sesión no será posible porque esto podría ser un problema de seguridad. Por favor, póngase en contacto con su administrador. + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + La URL de consulta no comienza con HTTPS a pesar de que la URL de inicio de sesión comenzó con HTTPS. El inicio de sesión no será posible porque esto podría ser un problema de seguridad. Por favor, póngase en contacto con su administrador. - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Hubo un error accediendo al "token" endpoint: <br><em>%1</em> + + + There was an error accessing the "token" endpoint: <br><em>%1</em> + Hubo un error accediendo al "token" endpoint: <br><em>%1</em> - - + + OCC::Flow2AuthWidget - - Link copied to clipboard. - Enlace copiado al portapapeles. + + Link copied to clipboard. + Enlace copiado al portapapeles. + + + + Open Browser + Abrir en el navegador + + + + Polling for authorization + Pidiendo autorización + + + + + Error + Error - - Open Browser - Abrir en el navegador + + Starting authorization + Iniciando autorización - - Polling for authorization - Pidiendo autorización + + Copy Link + Copiar Link - - Starting authorization - Iniciando autorización + + Switch to your browser to connect your account + Cambiar al navegador para conectar con tu cuenta - - Unable to open the Browser, please copy the link to your Browser. - No se ha podido abrir el navegador, por favor copie el enlace en su navegador. + + Unable to open the Browser, please copy the link to your Browser. + No se ha podido abrir el navegador, por favor copie el enlace en su navegador. - - Waiting for authorization - Esperando autorización + + Waiting for authorization + Esperando autorización - - + + OCC::Folder - - %1 and %n other file(s) are currently locked. - - - - - + + %1 and %n other file(s) are currently locked. + + + + - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - - - - - + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + + + - - %1 and %n other file(s) have been added. - - - - - + + %1 and %n other file(s) have been added. + + + + - - %1 and %n other file(s) have been removed. - - - - - + + %1 and %n other file(s) have been removed. + + + + + + + + %1 has been removed. + %1 names a file. + %1 ha sido eliminado. + + + + %1 has been added. + %1 names a file. + %1 ha sido añadido. - - %1 and %n other file(s) have been updated. - - - - - + + %1 and %n other file(s) have been updated. + + + + + + + + %1 has been updated. + %1 names a file. + %1 ha sido actualizado. - - %1 could not be synced due to an error. See the log for details. - %1 no se ha podido sincronizar debido a un error. Para más detalles, vea el registro. + + %1 has been renamed to %2. + %1 and %2 name files. + %1 ha sido renombrado a %2. - - %1 has a sync conflict. Please check the conflict file! - Conflicto al sincronizar %1. ¡Por favor compruebe el archivo! + + %1 could not be synced due to an error. See the log for details. + %1 no se ha podido sincronizar debido a un error. Para más detalles, vea el registro. + + + + %1 has a sync conflict. Please check the conflict file! + Conflicto al sincronizar %1. ¡Por favor compruebe el archivo! - - %1 has and %n other file(s) have sync conflicts. - - - - - + + %1 has and %n other file(s) have sync conflicts. + + + + - - %1 has been added. - %1 ha sido añadido. + %1 has been added. + %1 ha sido añadido. - - %1 has been moved to %2 and %n other file(s) have been moved. - - - - - + + %1 has been moved to %2 and %n other file(s) have been moved. + + + + - - %1 has been moved to %2. - %1 ha sido movido a %2. + + %1 has been moved to %2. + %1 ha sido movido a %2. - - %1 has been removed. - %1 ha sido eliminado. + %1 has been removed. + %1 ha sido eliminado. - - %1 has been renamed to %2 and %n other file(s) have been renamed. - - - - - + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + + + - - %1 has been renamed to %2. - %1 ha sido renombrado a %2. + %1 has been renamed to %2. + %1 ha sido renombrado a %2. - - %1 has been updated. - %1 ha sido actualizado. + %1 has been updated. + %1 ha sido actualizado. - - %1 is currently locked. - %1 está actualmente bloqueado. + + %1 is currently locked. + %1 está actualmente bloqueado. - - %1 is not readable. - %1 es ilegible. + + %1 is not readable. + %1 es ilegible. - - %1 should be a folder but is not. - %1 debería ser una carpeta, pero no lo es. + + %1 should be a folder but is not. + %1 debería ser una carpeta, pero no lo es. - - A folder from an external storage has been added. - Una carpeta de almacenamiento externo ha sido añadida. + A folder from an external storage has been added. + Una carpeta de almacenamiento externo ha sido añadida. - - A folder has surpassed the set folder size limit of %1MB: %2. + + A folder has surpassed the set folder size limit of %1MB: %2. %3 - Una carpeta ha sobrepasado el límite establecido de tamaño de %1MB: %2. + Una carpeta ha sobrepasado el límite establecido de tamaño de %1MB: %2. %3 - - A large number of files in the server have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. - Se ha eliminado un gran número de archivos del servidor. + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + Se ha eliminado un gran número de archivos del servidor. Por favor, confirme si desea proceder con estos borrados. -Alternativamente, puede restaurar todos los archivos borrados subiendo desde la carpeta '%1' al servidor. +Alternativamente, puede restaurar todos los archivos borrados subiendo desde la carpeta '%1' al servidor. - - A large number of files in your local '%1' folder have been deleted. -Please confirm if you'd like to proceed with these deletions. + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. Alternatively, you can restore all deleted files by downloading them from the server. - Se ha eliminado un gran número de archivos de tu carpeta local '%1'. + Se ha eliminado un gran número de archivos de tu carpeta local '%1'. Por favor, confirme si desea proceder con estos borrados. Alternativamente, puedes restaurar todos los archivos borrados descargándolos del servidor. - - A new folder larger than %1 MB has been added: %2. - Una carpeta mayor de %1 MB ha sido añadida: %2. + A new folder larger than %1 MB has been added: %2. + Una carpeta mayor de %1 MB ha sido añadida: %2. - All files in the local folder "%1" were deleted. + All files in the local folder "%1" were deleted. If you restore the files, they will be downloaded again from the server. - Se han eliminado todos los archivos de la carpeta local "%1". + Se han eliminado todos los archivos de la carpeta local "%1". Si restaura los archivos, se descargarán de nuevo del servidor. - All files in the server folder "%1" were deleted. + All files in the server folder "%1" were deleted. If you restore the files, they will be uploaded again to the server. - Se han eliminado todos los archivos de la carpeta del servidor "%1". + Se han eliminado todos los archivos de la carpeta del servidor "%1". Si restaura los archivos, se cargarán de nuevo en el servidor. - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Todos los archivos de la carpeta de sincronización "%1" han sido borrados en el servidor. + Todos los archivos de la carpeta de sincronización "%1" han sido borrados en el servidor. Estos borrados se sincronizarán con tu carpeta de sincronización local, haciendo que dichos archivos no estén disponibles a menos que tengas derecho a restaurarlos. Si decide restaurar los archivos, se volverán a sincronizar con el servidor si tiene derecho a hacerlo. Si decides eliminar los archivos, no estarán disponibles para ti, a menos que seas el propietario. - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Todos los archivos de la carpeta de sincronización "%1" han sido borrados en el servidor. + Todos los archivos de la carpeta de sincronización "%1" han sido borrados en el servidor. Estos borrados se sincronizarán con tu carpeta de sincronización local, haciendo que dichos archivos no estén disponibles a menos que tengas derecho a restaurarlos. Si decide restaurar los archivos, se volverán a sincronizar con el servidor si tiene derecho a hacerlo. Si decides eliminar los archivos, no estarán disponibles para ti, a menos que seas el propietario. - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - Se han borrado todos los archivos de su carpeta de sincronización local "%1". Estos borrados se sincronizarán con tu servidor, haciendo que dichos archivos no estén disponibles a menos que se restauren. + Se han borrado todos los archivos de su carpeta de sincronización local "%1". Estos borrados se sincronizarán con tu servidor, haciendo que dichos archivos no estén disponibles a menos que se restauren. ¿Estás seguro de que quieres sincronizar esas acciones con el servidor? Si ha sido un accidente y decides conservar tus archivos, se volverán a sincronizar desde el servidor. - - Changes in synchronized folders could not be tracked reliably. + + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). %1 - Los cambios en las carpetas sincronizadas no se han podido rastrear de manera fiable. + Los cambios en las carpetas sincronizadas no se han podido rastrear de manera fiable. Esto significa que el cliente de sincronización podría no subir inmediatamente los cambios de las carpetas locales, y en lugar de eso solo escaneará buscando cambios locales y los subirá ocasionalmente (cada dos horas por defecto). %1 - - Could not read system exclude file - No se ha podido leer el archivo de exclusión del sistema + + Could not read system exclude file + No se ha podido leer el archivo de exclusión del sistema + + + Keep files + Guardar archivos - Keep files - Guardar archivos + + Keep syncing + Continuar sincronización - - Keep syncing - Continuar sincronización + + Local folder %1 does not exist. + La carpeta local %1 no existe. - - Local folder %1 does not exist. - La carpeta local %1 no existe. + + Please go in the settings to select it if you wish to download it. + Por favor vaya a opciones a seleccionarlo si desea descargar esto. - - Please go in the settings to select it if you wish to download it. - Por favor vaya a opciones a seleccionarlo si desea descargar esto. + Proceed to remove all files + Proceda a eliminar todos los archivos - Proceed to remove all files - Proceda a eliminar todos los archivos + + Proceed with Deletion + Proceder a la supresión - - Proceed with Deletion - Proceder a la supresión + Remove all files + Eliminar todos los archivos - Remove all files - Eliminar todos los archivos + + Remove all files? + ¿Eliminar todos los archivos? - - Remove all files? - ¿Eliminar todos los archivos? + Restore files + Restaurar archivos - Restore files - Restaurar archivos + + Restore Files from Server + Restaurar archivos del servidor - - Restore Files from Server - Restaurar archivos del servidor + + Restore Files to Server + Restaurar archivos en el servidor - - Restore Files to Server - Restaurar archivos en el servidor + + Stop syncing + Detener sincronización - - Stop syncing - Detener sincronización + + Sync Activity + Actividad de la sincronización - - Sync Activity - Actividad de la sincronización + + A new folder larger than %1 MB has been added: %2. + + - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. - Se ha creado el archivo %1 pero se excluyó de la sincronización con anterioridad. No se sincronizará. + + A folder from an external storage has been added. + + - - The folder %1 has surpassed the set folder size limit of %2MB. - La carpeta %1 ha sobrepasado el límite establecido de tamaño de %2MB. + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + Se ha creado el archivo %1 pero se excluyó de la sincronización con anterioridad. No se sincronizará. - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. - Se ha creado la carpeta %1 pero se excluyó de la sincronización con anterioridad. Los datos en su interior no se sincronizarán. + + The folder %1 has surpassed the set folder size limit of %2MB. + La carpeta %1 ha sobrepasado el límite establecido de tamaño de %2MB. - - Virtual file download failed with code "%1", status "%2" and error message "%3" - La descarga de archivo virtual ha fallado con código "%1" , estado "%2" y mensaje de error "%3" + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + Se ha creado la carpeta %1 pero se excluyó de la sincronización con anterioridad. Los datos en su interior no se sincronizarán. - - Would you like to stop syncing this folder? - ¿Desea detener la sincronización de esta carpeta? + + Virtual file download failed with code "%1", status "%2" and error message "%3" + La descarga de archivo virtual ha fallado con código "%1" , estado "%2" y mensaje de error "%3" - - + + + Would you like to stop syncing this folder? + ¿Desea detener la sincronización de esta carpeta? + + + OCC::FolderCreationDialog - - %1 Create new folder - %1 Crear nueva carpeta + + %1 Create new folder + %1 Crear nueva carpeta - - Could not create a folder! Check your write permissions. - ¡No se pudo crear la carpeta! Comprueba los permisos de escritura. + + Could not create a folder! Check your write permissions. + ¡No se pudo crear la carpeta! Comprueba los permisos de escritura. - - Enter folder name - Escriba el nombre de la carpeta + + Error + Error - - Folder already exists - Ya existe la carpeta + + Create new folder + Crear nueva carpeta - - + + + Enter folder name + Escriba el nombre de la carpeta + + + + Folder already exists + Ya existe la carpeta + + + OCC::FolderMan - - (backup %1) - (copia de seguridad %1) + (backup %1) + (copia de seguridad %1) + + + (backup) + (copia de seguridad) + + + + %1 (Sync is paused) + %1 (Sincronización en pausa) - - (backup) - (copia de seguridad) + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + Se ha encontrado un registro de sincronización antiguo "%1", que no se ha podido eliminar. Por favor, asegúrese de que ninguna aplicación lo está utilizando en este momento. - - %1 (Sync is paused) - %1 (Sincronización en pausa) + + Could not reset folder state + No se ha podido restablecer el estado de la carpeta - - An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. - Se ha encontrado un registro de sincronización antiguo "%1", que no se ha podido eliminar. Por favor, asegúrese de que ninguna aplicación lo está utilizando en este momento. + + (backup) + - - Could not reset folder state - No se ha podido restablecer el estado de la carpeta + + (backup %1) + - - Last sync was successful. - La última sincronización se ha realizado con éxito. + + Last sync was successful. + La última sincronización se ha realizado con éxito. - - No valid folder selected! - ¡La carpeta seleccionada no es válida! + + No valid folder selected! + ¡La carpeta seleccionada no es válida! - - Preparing for sync. - Preparándose para sincronizar. + + Preparing for sync. + Preparándose para sincronizar. - - Setup error. - Error de configuración. + + Setup error. + Error de configuración. - - Sync finished with unresolved conflicts. - La sincronización finalizó pero con conflictos sin resolver. + + Sync finished with unresolved conflicts. + La sincronización finalizó pero con conflictos sin resolver. - - Sync is paused. - La sincronización está en pausa. + + Sync is paused. + La sincronización está en pausa. - - Sync is running. - Sincronización en funcionamiento. + + Sync is running. + Sincronización en funcionamiento. - - Sync request was cancelled. - La solicitud de sincronización fue cancelada. + + Sync request was cancelled. + La solicitud de sincronización fue cancelada. - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! - El directorio local %1 ya contiene un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro. + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + El directorio local %1 ya contiene un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro. - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! - El directorio local %1 está dentro de un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro. + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + El directorio local %1 está dentro de un directorio usado en una conexión de sincronización de directorios. Por favor, elija otro. - - The selected path does not exist! - ¡La ruta seleccionada no existe! + + The selected path does not exist! + ¡La ruta seleccionada no existe! - - The selected path is not a folder! - ¡La ruta seleccionada no es una carpeta! + + The selected path is not a folder! + ¡La ruta seleccionada no es una carpeta! - - There is already a sync from the server to this local folder. Please pick another local folder! - Ya existe una tarea de sincronización entre el servidor y esta carpeta. Por favor elija otra carpeta local. + + There is already a sync from the server to this local folder. Please pick another local folder! + Ya existe una tarea de sincronización entre el servidor y esta carpeta. Por favor elija otra carpeta local. - - Undefined state. - Estado no definido. + + Undefined state. + Estado no definido. - - Waiting to start syncing. - Esperando para comenzar la sincronización. + + Waiting to start syncing. + Esperando para comenzar la sincronización. - - You have no permission to write to the selected folder! - ¡No tiene permiso para escribir en la carpeta seleccionada! + + + You have no permission to write to the selected folder! + ¡No tiene permiso para escribir en la carpeta seleccionada! - - + + OCC::FolderStatusDelegate - - Add live backup - Añadir conexión de sincronización de carpetas + Add live backup + Añadir conexión de sincronización de carpetas + + + + Add Folder Sync + Añadir sincronización de carpetas - - File - Archivo + + File + Archivo - - Synchronize any other local folder with your %1 - Sincroniza cualquier otra carpeta local con tu %1 + + Synchronize any other local folder with your %1 + Sincroniza cualquier otra carpeta local con tu %1 - - + + OCC::FolderStatusModel - - , - , + , + , + + + + + %1 (%2) + %1 (%2) + + + + %1 %2 + Example text: "uploading foobar.png" + %1 %2 - - %1 (%2) - %1 (%2) + + %1 %2 (%3 of %4) + Example text: "uploading foobar.png (2MB of 2MB)" + %1 %2 (%3 de %4) - - %1 %2 - %1 %2 + + %1 of %2, file %3 of %4 + Example text: "12 MB of 345 MB, file 6 of 7" + %1 de %2, archivo %3 de %4 - - %1 %2 (%3 of %4) - %1 %2 (%3 de %4) + + %5 left, %1 of %2, file %3 of %4 + %5 restantes, %1 de %2, archivo %3 de %4 - - %1 of %2, file %3 of %4 - %1 de %2, archivo %3 de %4 + + ↑ %1/s + ↑ %1/s - - %5 left, %1 of %2, file %3 of %4 - %5 restantes, %1 de %2, archivo %3 de %4 + + ↓ %1/s + ↓ %1/s - - ↑ %1/s - ↑ %1/s + + A few seconds left, %1 of %2, file %3 of %4 + Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" + Quedan pocos segundos, %1 de %2, archivo %3 de %4 - - ↓ %1/s - ↓ %1/s + + Checking for changes in local "%1" + Buscando cambios en carpeta local "%1" - - A few seconds left, %1 of %2, file %3 of %4 - Quedan pocos segundos, %1 de %2, archivo %3 de %4 + + Checking for changes in remote "%1" + Buscando cambios en carpeta remota "%1" - - Checking for changes in local "%1" - Buscando cambios en carpeta local "%1" + + Click this button to add a folder to synchronize. + Haga clic en este botón para añadir una carpeta a sincronizar - - Checking for changes in remote "%1" - Buscando cambios en carpeta remota "%1" + + Could not decrypt! + ¡No fue posible desencriptar! - - Click this button to add a folder to synchronize. - Haga clic en este botón para añadir una carpeta a sincronizar + + download %1/s + Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) + descargando: %1/s - - Could not decrypt! - ¡No fue posible desencriptar! + + Error while loading the list of folders from the server. + Error mientras se cargaba la lista de carpetas desde el servidor. - - download %1/s - descargando: %1/s + + Fetching folder list from server … + Obteniendo la lista de carpetas del servidor ... - - Error while loading the list of folders from the server. - Error mientras se cargaba la lista de carpetas desde el servidor. + + Signed out + Cerrar sesión - - Fetching folder list from server … - Obteniendo la lista de carpetas del servidor ... + + Syncing %1 + Example text: "Syncing 'foo.txt', 'bar.txt'" + Sincronizando %1 - - file %1 of %2 - archivo %1 de %2 + + + , + - - Preparing to sync … - Preparando la sincronización ... + + file %1 of %2 + archivo %1 de %2 - - Reconciling changes - Reconciliando cambios + + Preparing to sync … + Preparando la sincronización ... - - Synchronizing VirtualFiles with local folder - Sincronizando archivos virtuales con carpeta local + + Reconciling changes + Reconciliando cambios - - Synchronizing with local folder - Sincronizando con carpeta local + + Synchronizing VirtualFiles with local folder + Sincronizando archivos virtuales con carpeta local - - There are unresolved conflicts. Click for details. - Hay conflictos sin resolver. Haz clic para más detalles. + + Synchronizing with local folder + Sincronizando con carpeta local - - upload %1/s - cargar %1/s + + There are unresolved conflicts. Click for details. + Hay conflictos sin resolver. Haz clic para más detalles. - - Virtual file support is enabled. - El soporte para archivos virtuales está activado. + + upload %1/s + Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) + cargar %1/s - - Waiting … - Esperando ... + + Virtual file support is enabled. + El soporte para archivos virtuales está activado. + + + + Waiting … + Esperando ... - - Waiting for %n other folder(s) … - - - - - + + Waiting for %n other folder(s) … + + + + - - You need to be connected to add a folder - Necesita estar conectado para añadir una carpeta + + You need to be connected to add a folder + Necesita estar conectado para añadir una carpeta - - + + OCC::FolderWatcher - - The watcher did not receive a test notification. - El vigilante no recibió una notificación de prueba. + + The watcher did not receive a test notification. + El vigilante no recibió una notificación de prueba. - - + + OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. - Este problema sucede habitualmente cuando las "inotify watches" están agotadas. Comprueba el FAQ para más detalles. + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + Este problema sucede habitualmente cuando las "inotify watches" están agotadas. Comprueba el FAQ para más detalles. - - + + OCC::FolderWizard - Add Folder Sync Connection - Añadir conexión para el directorio de sincronización + + Add Folder Sync Connection + Añadir conexión para el directorio de sincronización - - Add Sync Connection - Añadir conexión de sincronización + + Add Sync Connection + Añadir conexión de sincronización - - + + OCC::FolderWizardLocalPath - - Choose - Seleccione + + Choose + Seleccione + + + + Click to select a local folder to sync. + Haga clic para seleccionar una carpeta local que sincronizar. + + + + Enter the path to the local folder. + Introduzca la ubicación de la carpeta local. + + + + Select the source folder + Seleccione la carpeta de origen - - Click to select a local folder to sync. - Haga clic para seleccionar una carpeta local que sincronizar. + + Add Folder Sync + Añadir sincronización de carpetas - - Enter the path to the local folder. - Introduzca la ubicación de la carpeta local. + + Step 1 of 3: Select local folder + Paso 1 de 3: Seleccionar carpeta local - - Select the source folder - Seleccione la carpeta de origen + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Selecciona una carpeta de tu disco duro que deba estar permanentemente conectada a tu %1. Todos los archivos y subcarpetas se cargan y sincronizan automáticamente. - - + + OCC::FolderWizardRemotePath - - Authentication failed accessing %1 - Fallo de autenticación al acceder a %1 + + Authentication failed accessing %1 + Fallo de autenticación al acceder a %1 + + + + Choose this to sync the entire account + Elija esto para sincronizar la cuenta entera + + + + Create Remote Folder + Crear carpeta remota + + + + Enter the name of the new folder to be created below "%1": + Introduce el nombre de la nueva carpeta que se creará debajo de "%1": - - Choose this to sync the entire account - Elija esto para sincronizar la cuenta entera + + Failed to create the folder on %1. Please check manually. + Fallo al crear la carpeta %1. Por favor, revíselo manualmente. - - Create Remote Folder - Crear carpeta remota + + Failed to list a folder. Error: %1 + Fallo al listar una carpeta. Error: %1 - - Enter the name of the new folder to be created below "%1": - Introduce el nombre de la nueva carpeta que se creará debajo de "%1": + + Add Folder Sync + Añadir sincronización de carpetas - - Failed to create the folder on %1. Please check manually. - Fallo al crear la carpeta %1. Por favor, revíselo manualmente. + + Step 2 of 3: Directory in your %1 + Paso 2 de 3: Directorio en su %1 - - Failed to list a folder. Error: %1 - Fallo al listar una carpeta. Error: %1 + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + Por favor, ahora seleccione o cree una carpeta de destino en su %1 donde el contenido debe ser cargado y sincronizado. - - Folder was successfully created on %1. - La carpeta ha sido creada con éxito en %1. + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Ambas carpetas están permanentemente vinculadas y sus respectivos contenidos se sincronizan y actualizan automáticamente. - - This folder is already being synced. - Esta carpeta ya se ha sincronizado. + + Refresh + Actualizar - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - Ya ha sincronizado <i>%1</i>, el cual es la carpeta de <i>%2</i>. + + Create folder + Crear carpeta - - You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - Ya estás sincronizando <i>%1</i>, que es una subcarpeta de <i>%2</i>. + + Folder was successfully created on %1. + La carpeta ha sido creada con éxito en %1. - - + + + This folder is already being synced. + Esta carpeta ya se ha sincronizado. + + + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + Ya ha sincronizado <i>%1</i>, el cual es la carpeta de <i>%2</i>. + + + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + Ya estás sincronizando <i>%1</i>, que es una subcarpeta de <i>%2</i>. + + + OCC::FolderWizardSelectiveSync - - Use virtual files instead of downloading content immediately %1 - Usa archivos virtuales en vez de descargar el contenido inmediatamente %1 + + + Use virtual files instead of downloading content immediately %1 + Usa archivos virtuales en vez de descargar el contenido inmediatamente %1 - - Virtual files are not available for the selected folder - Los archivos virtuales no están disponibles para la carpeta seleccionada + + + (experimental) + (experimental) - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Los archivos virtuales no son compatibles con la carpeta raíz de la partición de Windows como carpeta local. Por favor, elija una subcarpeta válida bajo la letra de la unidad. + + Add Folder Sync + Añadir sincronización de carpetas - - + + + Step 3 of 3: Selektive Synchronisation + Paso 3 de 3: Sincronización selectiva + + + + Virtual files are not available for the selected folder + Los archivos virtuales no están disponibles para la carpeta seleccionada + + + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Los archivos virtuales no son compatibles con la carpeta raíz de la partición de Windows como carpeta local. Por favor, elija una subcarpeta válida bajo la letra de la unidad. + + + OCC::FormatWarningsWizardPage - - %1 - %1 + + %1 + %1 - <b>Warning:</b> - <b>Advertencia:</b> + <b>Warning:</b> + <b>Advertencia:</b> - <b>Warning:</b> %1 - <b>Atención:</b> %1 + <b>Warning:</b> %1 + <b>Atención:</b> %1 - - + + OCC::GETFileJob - - Connection Timeout - Tiempo de espera de conexión agotado + + Connection Timeout + Tiempo de espera de conexión agotado - - No E-Tag received from server, check Proxy/Gateway - No se ha recibido ninguna E-Tag del servidor, revise el proxy/puerta de enlace + + No E-Tag received from server, check Proxy/Gateway + No se ha recibido ninguna E-Tag del servidor, revise el proxy/puerta de enlace - - Server returned wrong content-range - El servidor ha devuelto un content-range erróneo + + Server returned wrong content-range + El servidor ha devuelto un content-range erróneo - - We received a different E-Tag for resuming. Retrying next time. - Se ha recibido una E-Tag distinta para reanudar. Se volverá a intentar. + + We received a different E-Tag for resuming. Retrying next time. + Se ha recibido una E-Tag distinta para reanudar. Se volverá a intentar. - - We received an unexpected download Content-Length. - Hemos recibido una longitud inesperada de contenido de la descarga. + + We received an unexpected download Content-Length. + Hemos recibido una longitud inesperada de contenido de la descarga. - - + + OCC::GeneralSettings - - &Analysis data collection for needs-based design - &Recogida de datos de análisis para un diseño basado en las necesidades + &Analysis data collection for needs-based design + &Recogida de datos de análisis para un diseño basado en las necesidades - - &Automatically check for updates - Comprobar &actualizaciones automáticamente + + &Automatically check for updates + Comprobar &actualizaciones automáticamente - &Channel - &Canal + &Channel + &Canal - &Check for Update now - &Compruebe la actualización ahora + &Check for Update now + &Compruebe la actualización ahora - - &Launch on system startup - &Lanzar al iniciar el sistema + + &Launch on system startup + &Lanzar al iniciar el sistema - - &Restart && Update - &Reiniciar && Actualizar + + Advanced + Avanzado - About - Acerca de + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + - - Ask for confirmation before - synchronizing new folders larger than - Pide confirmación antes de sincronizar nuevas carpetas de más de + + &Analysis data collection for needs-based design + - - Ask for confirmation before synchronizing - external storages - Pide confirmación antes de sincronizar almacenamientos externos + + &Restart && Update + &Reiniciar && Actualizar - Ask for confirmation before synchronizing external storages - Pide confirmación antes de sincronizar almacenamientos externos + About + Acerca de - Ask for confirmation before synchronizing folders larger than - Pide confirmación antes de sincronizar carpetas de más de + + Ask for confirmation before + synchronizing new folders larger than + Pide confirmación antes de sincronizar nuevas carpetas de más de - Ask for confirmation before synchronizing new folders larger than - + + Ask for confirmation before synchronizing + external storages + Pide confirmación antes de sincronizar almacenamientos externos - - Automatically disable synchronisation of - folders that overcome limit - Desactivar automáticamente la sincronización de carpetas que superen el límite + Ask for confirmation before synchronizing external storages + Pide confirmación antes de sincronizar almacenamientos externos - Automatically disable synchronisation of folders that overcome limit - + Ask for confirmation before synchronizing folders larger than + Pide confirmación antes de sincronizar carpetas de más de - - beta - beta + + Automatically disable synchronisation of + folders that overcome limit + Desactivar automáticamente la sincronización de carpetas que superen el límite - - Change update channel - Cambiar canal de actualización + + + beta + beta - - Change update channel? - ¿Cambiar el canal de actualización? + + Change update channel + Cambiar canal de actualización - - Check Now - Comprobar ahora + + Change update channel? + ¿Cambiar el canal de actualización? - - Create Debug Archive - Crear archivo de depuración + + Check Now + Comprobar ahora - - Data Protection - Protección de datos + + + Create Debug Archive + Crear archivo de depuración - - Debug Archive Created - Archivo de depuración creado + + Data Protection + Protección de datos - - Debug archive is created at %1 - El archivo de depuración se ha creado en %1 + + Debug Archive Created + Archivo de depuración creado - - Desktop client x.x.x - Cliente de escritorio x.x.x + + Debug archive is created at %1 + El archivo de depuración se ha creado en %1 - - Edit &Ignored Files - Editar archivos &ignorados + + Desktop client x.x.x + Cliente de escritorio x.x.x - - For System Tray - A la bandeja del sistema + + Edit &Ignored Files + Editar archivos &ignorados - - General Settings - Ajustes generales + + For System Tray + A la bandeja del sistema - Info - + + General Settings + Ajustes generales - - Legal Notice - Aviso Legal + + Legal Notice + Aviso Legal - MB - MB + MB + MB - - More Information - Más información + + More Information + Más información - - Move removed files to trash - Mover archivos eliminados a la papelera + + Move removed files to trash + Mover archivos eliminados a la papelera - - Notify when synchronised folders grow + + Notify when synchronised folders grow larger than specified limit - Notificar cuando las carpetas sincronizadas superan el límite especificado. + Notificar cuando las carpetas sincronizadas superan el límite especificado. - Notify when synchronised folders grow larger than specified limit - + + Open Source Software + Software de código abierto - - Open Source Software - Software de código abierto + + Privacy Policy + Política de privacidad - - Privacy Policy - Política de privacidad + + S&how crash reporter + M&ostrar el informe de fallos - - S&how crash reporter - M&ostrar el informe de fallos + + Server notifications that require attention. + Notificaciones del servidor que requieren atención. - - Server notifications that require attention. - Notificaciones del servidor que requieren atención. + + Show call notification dialogs. + Mostrar diálogos de notificación de llamadas. - - Show call notification dialogs. - Mostrar diálogos de notificación de llamadas. + + Show call notifications + Mostrar notificaciones de llamadas - - Show call notifications - Mostrar notificaciones de llamadas + + Show server &notifications + Mostrar &notificaciones del servidor - - Show server &notifications - Mostrar &notificaciones del servidor - - - - Show sync folders in &Explorer's navigation + + Show sync folders in &Explorer's navigation pane - Mostrar carpetas de sincronización en el panel de navegación de &Explorer + Mostrar carpetas de sincronización en el panel de navegación de &Explorer - Show sync folders in &Explorer's Navigation Pane - Mostrar carpetas de sincronización en el panel de navegación de &Explorer + Show sync folders in &Explorer's Navigation Pane + Mostrar carpetas de sincronización en el panel de navegación de &Explorer - - stable - stable + + + stable + stable - - The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. - El canal de actualización determina qué actualizaciones del cliente se ofrecerán para su instalación. El canal "estable" sólo contiene actualizaciones que se consideran fiables, mientras que las versiones del canal "beta" pueden contener nuevas características y correcciones de errores, pero aún no se han probado a fondo. + El canal de actualización determina qué actualizaciones del cliente se ofrecerán para su instalación. El canal "estable" sólo contiene actualizaciones que se consideran fiables, mientras que las versiones del canal "beta" pueden contener nuevas características y correcciones de errores, pero aún no se han probado a fondo. -Tenga en cuenta que esto sólo selecciona de qué grupo se tomarán las actualizaciones, y que no hay vuelta atrás: Por lo tanto volver del canal "beta" al canal "estable" normalmente no puede hacerse inmediatamente y significa esperar a una versión estable que sea más reciente que la versión beta instalada actualmente. +Tenga en cuenta que esto sólo selecciona de qué grupo se tomarán las actualizaciones, y que no hay vuelta atrás: Por lo tanto volver del canal "beta" al canal "estable" normalmente no puede hacerse inmediatamente y significa esperar a una versión estable que sea más reciente que la versión beta instalada actualmente. - - Update channel - Canal de actualización + + Update channel + Canal de actualización - - Updates - Actualizaciones + + Updates + Actualizaciones - - Usage Documentation - Documentación de uso + + Usage Documentation + Documentación de uso - - Use &monochrome icons - Usar iconos &monocromáticos + + Use &monochrome icons + Usar iconos &monocromáticos - - You cannot disable autostart because system-wide autostart is enabled. - No puedes desactivar el inicio automático porque el inicio automático de todo el sistema está activado. + + You cannot disable autostart because system-wide autostart is enabled. + No puedes desactivar el inicio automático porque el inicio automático de todo el sistema está activado. - - Zip Archives - Archivos Zip + + Cancel + Cancelar - - + + + Zip Archives + Archivos Zip + + + OCC::GetOrCreatePublicLinkShare - - Could not retrieve or create the public link share. Error: + + Could not retrieve or create the public link share. Error: %1 - No se ha podido recuperar o crear el enlace público compartido. Error: + No se ha podido recuperar o crear el enlace público compartido. Error: %1 - - Password for share required - Se requiere contraseña para compartir + + Password for share required + Se requiere contraseña para compartir - - Please enter a password for your link share: - Por favor, introduce una contraseña para tu enlace compartido: + + Please enter a password for your link share: + Por favor, introduce una contraseña para tu enlace compartido: - - Sharing error - Error al compartir + + Sharing error + Error al compartir - - + + OCC::HttpCredentialsGui - - <a href="%1">Click here</a> to request an app password from the web interface. - <a href="%1">Haga clic aquí</a> para solicitar una contraseña de aplicación desde la interfaz web. + + <a href="%1">Click here</a> to request an app password from the web interface. + <a href="%1">Haga clic aquí</a> para solicitar una contraseña de aplicación desde la interfaz web. - - Enter Password - Introduzca la contraseña + + Enter Password + Introduzca la contraseña - - Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - Por favor, introduzca la contraseña de %1:<br><br>Usuario: %2<br>Cuenta: %3<br> + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + Por favor, introduzca la contraseña de %1:<br><br>Usuario: %2<br>Cuenta: %3<br> - - Reading from keychain failed with error: "%1" - La lectura del keychain falló con el error "%1" + + Reading from keychain failed with error: "%1" + La lectura del keychain falló con el error "%1" - - + + OCC::IgnoreListEditor - - Files Ignored by Patterns - Archivos ignorados por patrones + + Files Ignored by Patterns + Archivos ignorados por patrones - - Global Ignore Settings - Ajustes de Ignorar de modo global + + Global Ignore Settings + Ajustes de Ignorar de modo global - - Ignored Files Editor - Editor de archivos ignorados + + Ignored Files Editor + Editor de archivos ignorados - - Sync hidden files - Sincronizar archivos ocultos + + Sync hidden files + Sincronizar archivos ocultos - - This entry is provided by the system at "%1" and cannot be modified in this view. - Esta entrada la proporciona el sistema en "%1" y no se puede modificar en esta vista. + + This entry is provided by the system at "%1" and cannot be modified in this view. + Esta entrada la proporciona el sistema en "%1" y no se puede modificar en esta vista. - - + + OCC::IgnoreListTableWidget - - Add - Añadir + + Add + Añadir - Add a new ignore pattern: - Añadir un nuevo patrón de ignorar: + Add a new ignore pattern: + Añadir un nuevo patrón de ignorar: - Add Ignore Pattern - Añadir patrón de ignorar + Add Ignore Pattern + Añadir patrón de ignorar - - Add New Ignore Pattern - Añadir nuevo patrón de ignorar + + Add New Ignore Pattern + Añadir nuevo patrón de ignorar - - Allow Deletion - Permitir borrado + + Allow Deletion + Permitir borrado - - Cannot write changes to "%1". - No se pudo escribir los cambios a "%1". + + Cannot write changes to "%1". + No se pudo escribir los cambios a "%1". - - Could not open file - No se ha podido abrir el archivo + + Could not open file + No se ha podido abrir el archivo - Files or folders matching a pattern will not be synchronized. + Files or folders matching a pattern will not be synchronized. Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Los archivos o carpetas que coincidan con un patrón no se sincronizarán. + Los archivos o carpetas que coincidan con un patrón no se sincronizarán. Los elementos cuya eliminación esté permitida se eliminarán si impiden la eliminación de un directorio. Esto es útil para los metadatos. - - Files or folders that match this pattern will not be synchronized. + + Files or folders that match this pattern will not be synchronized. Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - Los archivos o carpetas que coincidan con este patrón no se sincronizarán. + Los archivos o carpetas que coincidan con este patrón no se sincronizarán. Los objetos cuyo borrado esté permitido se eliminarán si impiden que se borre una carpeta. Esto es útil para los metadatos. - - Ignore Pattern - Ignorar patrón + + Ignore Pattern + Ignorar patrón - - Pattern - Patrón + + Pattern + Patrón - - Remove - Eliminar + + Remove + Eliminar - - Remove all - Eliminar todos + + Remove all + Eliminar todos - - + + OCC::InvalidFilenameDialog - - Cannot rename file because a file with the same name does already exist on the server. Please pick another name. - No se puede renombrar el archivo porque hay un archivo con el mismo nombre en el servidor. Por favor, elija otro nombre. + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + No se puede renombrar el archivo porque hay un archivo con el mismo nombre en el servidor. Por favor, elija otro nombre. + + + + Checking rename permissions … + Comprobando los permisos de renombramiento ... + + + + Rename file + Renombrar archivo + + + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + No tienes permisos para renombrar este archivo. Por favor, dile al autor del archivo que lo renombre. + + + + Failed to fetch permissions with error %1 + Fallo en la obtención de permisos con error %1 + + + + Filename contains leading and trailing spaces. + El nombre del archivo contiene espacios iniciales y finales. + + + + Filename contains leading spaces. + El nombre del archivo contiene espacios al inicio. - - Checking rename permissions … - Comprobando los permisos de renombramiento ... + + Filename contains trailing spaces. + El nombre del archivo contiene espacios al final. - - Could not rename local file. %1 - No se ha podido renombrar el archivo local. %1 + + Use invalid name + Usar nombre inválido - - Invalid filename - Nombre de archivo no válido + + Filename contains illegal characters: %1 + El nombre del archivo contiene caracteres ilegales: %1 - - Please enter a new name for the file: - Por favor, escribe un nuevo nombre para el archivo: + + Could not rename file. Please make sure you are connected to the server. + No se ha podido renombrar el archivo. Por favor, asegúrese de que está conectado al servidor. - - The file "%1" could not be synced because the name contains characters which are not allowed on this system. - El archivo "%1" no pudo ser sincronizado porque el nombre contiene caracteres no permitidos en este sistema. + + Could not rename local file. %1 + No se ha podido renombrar el archivo local. %1 - - The file could not be synced because it contains characters which are not allowed on this system. - El archivo no puede ser sincronizado porque contiene caracteres que no se permiten en el sistema. + + Invalid filename + Nombre de archivo no válido - - The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - Los siguientes caracteres no se permiten en el sistema: * " | & ? , ; : \ / ~ < > espacios de entrada/salida + + Error + Error - - + + + Please enter a new name for the file: + Por favor, escribe un nuevo nombre para el archivo: + + + + New filename + Nuevo nombre de archivo + + + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + El archivo "%1" no pudo ser sincronizado porque el nombre contiene caracteres no permitidos en este sistema. + + + + The file could not be synced because it contains characters which are not allowed on this system. + El archivo no puede ser sincronizado porque contiene caracteres que no se permiten en el sistema. + + + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + Los siguientes caracteres no se permiten en el sistema: * " | & ? , ; : \ / ~ < > espacios de entrada/salida + + + OCC::LegalNotice - - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> - <p>Bajo la Licencia Pública General de GNU (GPL) versión 2.0 o posterior.</p> + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + <p>Bajo la Licencia Pública General de GNU (GPL) versión 2.0 o posterior.</p> - Legal notice - Aviso legal + + + Legal notice + Aviso legal - - + + + Close + Cerrar + + + OCC::LogBrowser - - Enable logging to temporary folder - Activar la escritura de registros a una carpeta temporal + + Enable logging to temporary folder + Activar la escritura de registros a una carpeta temporal - - Log Output - Salida del registro + + Log Output + Salida del registro - - The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. If enabled, logs will be written to %1 - El cliente puede escribir registros de depuración a una carpeta temporal. Estos registros son muy útiles para diagnosticar problemas. + El cliente puede escribir registros de depuración a una carpeta temporal. Estos registros son muy útiles para diagnosticar problemas. Ya que los archivos de registro pueden acabar siendo grandes, el cliente creará uno nuevo para cada sincronización y comprimirá los anteriores. También eliminará los archivos de registro tras un par de horas para evitar consumir demasiado espacio de disco. Si está activado, los registros serán escritos en %1 - - This setting persists across client restarts. + + This setting persists across client restarts. Note that using any logging command line options will override this setting. - Este ajuste persiste tras el reinicio del cliente. + Este ajuste persiste tras el reinicio del cliente. Nótese que usar cualquier opción de toma de registros a través de línea de comandos anulará este ajuste. - - + + + Open folder + Abrir carpeta + + + OCC::Logger - - <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> - <nobr>El archivo "%1"<br/>no se puede abrir para escritura.<br/><br/>¡El archivo de registro <b>no se puede</b> guardar!</nobr> + + Error + Error - - + + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + <nobr>El archivo "%1"<br/>no se puede abrir para escritura.<br/><br/>¡El archivo de registro <b>no se puede</b> guardar!</nobr> + + + OCC::NSISUpdater - - <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> - <p>Una nueva versión del Cliente %1 está disponible pero el proceso de actualización ha fallado.</p><p><b>%2</b> se ha descargado. La versión instalada es %3. Si confirmas el reinicio y la actualización, es posible que su ordenador se reinicie para completar la instalación. + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + <p>Una nueva versión del Cliente %1 está disponible pero el proceso de actualización ha fallado.</p><p><b>%2</b> se ha descargado. La versión instalada es %3. Si confirmas el reinicio y la actualización, es posible que su ordenador se reinicie para completar la instalación. - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - <p>Una nueva versión del programa cliente de %1 está disponible.</p><p><b>%2</b> está disponible para descargar. La versión instalada es la %3.</p> + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + <p>Una nueva versión del programa cliente de %1 está disponible.</p><p><b>%2</b> está disponible para descargar. La versión instalada es la %3.</p> - - Ask again later - Preguntar de nuevo más tarde + + Ask again later + Preguntar de nuevo más tarde - - Get update - Actualizar + + Get update + Actualizar - - New Version Available - Nueva versión disponible + + New Version Available + Nueva versión disponible - - Restart and update - Reiniciar y actualizar + + Restart and update + Reiniciar y actualizar - - Skip this time - Omitir esta vez + + Skip this time + Omitir esta vez - - Update Failed - La actualización falló + + Update Failed + La actualización falló - - Update manually - Actualizar manualmente + + Update manually + Actualizar manualmente - - + + OCC::NetworkSettings - - Download Bandwidth - Velocidad de descarga + + Download Bandwidth + Velocidad de descarga - - Host - Servidor + + Host + Servidor - - Hostname of proxy server - Nombre del host para servidor proxy + + Hostname of proxy server + Nombre del host para servidor proxy - - HTTP(S) proxy - Proxy HTTP(S) + + HTTP(S) proxy + Proxy HTTP(S) - - KBytes/s - KBytes/s + + + KBytes/s + KBytes/s - - Limit automatically - Limitar automáticamente + + + Limit automatically + Limitar automáticamente - - Limit to - Limitar a + + + Limit to + Limitar a - - Limit to 3/4 of estimated bandwidth - Limitar a 3/4 de la velocidad estimada + + + Limit to 3/4 of estimated bandwidth + Limitar a 3/4 de la velocidad estimada - - Manually specify proxy - Proxy especificado manualmente + + Manually specify proxy + Proxy especificado manualmente - - No limit - Ilimitado + + + No limit + Ilimitado - - No proxy - Sin proxy + + No proxy + Sin proxy - - Note: proxy settings have no effects for accounts on localhost - Nota: los ajustes de proxy no tienen efecto para cuentas en el sistema local. + + Note: proxy settings have no effects for accounts on localhost + Nota: los ajustes de proxy no tienen efecto para cuentas en el sistema local. - - Password for proxy server - Contraseña para el servidor proxy + + Password for proxy server + Contraseña para el servidor proxy - - Proxy server requires authentication - El servidor proxy requiere autenticación + + Proxy server requires authentication + El servidor proxy requiere autenticación - - Proxy Settings - Configuración del proxy + + Proxy Settings + Configuración del proxy - - SOCKS5 proxy - Proxy SOCKS5 + + SOCKS5 proxy + Proxy SOCKS5 - Specify proxy manually as - Especifique el proxy manualmente como + Specify proxy manually as + Especifique el proxy manualmente como - - Upload Bandwidth - Velocidad de subida + + Upload Bandwidth + Velocidad de subida - - Use system proxy - Usar proxy del sistema + + Use system proxy + Usar proxy del sistema - - Username for proxy server - Nombre de usuario para el servidor proxy + + Username for proxy server + Nombre de usuario para el servidor proxy - - + + OCC::OAuth - <h1>Login Error</h1><p>%1</p> - <h1>Error al iniciar sesión</h1><p>%1</p> - - - <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> - + <h1>Login Error</h1><p>%1</p> + <h1>Error al iniciar sesión</h1><p>%1</p> - Empty JSON from OAuth2 redirect - Vaciar JSON de la redirección OAuth2 + Empty JSON from OAuth2 redirect + Vaciar JSON de la redirección OAuth2 - - + + OCC::OCUpdater - - %1 available. Restart application to start the update. - %1 disponible. Reinicia la aplicación para empezar la actualización. + + %1 available. Restart application to start the update. + %1 disponible. Reinicia la aplicación para empezar la actualización. - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - Está a punto de ser instalada una nueva actualización para %1 . Es posible que el actualizador solicite privilegios adicionales durante el proceso. Es posible que su ordenador se deba reiniciar para completar la instalación. + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + Está a punto de ser instalada una nueva actualización para %1 . Es posible que el actualizador solicite privilegios adicionales durante el proceso. Es posible que su ordenador se deba reiniciar para completar la instalación. - - Checking update server … - Consultando al servidor de actualizaciones ... + + Checking update server … + Consultando al servidor de actualizaciones ... - - Could not check for new updates. - No se puede comprobar si hay actualizaciones. + + Could not check for new updates. + No se puede comprobar si hay actualizaciones. - - Could not download update. Please open %1 to download the update manually. - No se pudo descargar la actualización. Por favor, abra %1 para descargarla manualmente. + + Could not download update. Please open %1 to download the update manually. + No se pudo descargar la actualización. Por favor, abra %1 para descargarla manualmente. - - Could not download update. Please open <a href='%1'>%1</a> to download the update manually. - No se puede descargar la actualización. Por favor, abra <a href='%1'>%1</a> para descargar la actualización manualmente. + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + No se puede descargar la actualización. Por favor, abra <a href='%1'>%1</a> para descargar la actualización manualmente. - - Downloading %1. Please wait … - Descargando %1. Por favor, espere … + + Downloading %1. Please wait … + Descargando %1. Por favor, espere … - - New %1 is available. Please open %2 to download the update. - La nueva %1 está disponible. Por favor, abra %2 para descargar la actualización. + + New %1 is available. Please open %2 to download the update. + La nueva %1 está disponible. Por favor, abra %2 para descargar la actualización. - - New %1 is available. Please open <a href='%2'>%2</a> to download the update. - La nueva %1 está disponible. Por favor, abra<a href='%2'>%2</a> para descargar la actualización. + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + La nueva %1 está disponible. Por favor, abra<a href='%2'>%2</a> para descargar la actualización. - - New %1 update ready - La nueva %1 actualización está lista + + New %1 update ready + La nueva %1 actualización está lista - - No updates available. Your installation is at the latest version. - No hay actualizaciones disponibles. Tiene la última versión. + + No updates available. Your installation is at the latest version. + No hay actualizaciones disponibles. Tiene la última versión. - - Update Check - Comprobar si hay actualizaciones + + Update Check + Comprobar si hay actualizaciones - - Update status is unknown: Did not check for new updates. - Estado de actualización desconocido: no se buscaron nuevas actualizaciones. + + Update status is unknown: Did not check for new updates. + Estado de actualización desconocido: no se buscaron nuevas actualizaciones. - - + + OCC::OwncloudAdvancedSetupPage - - (%1) - (%1) + + + (%1) + (%1) - - %1 folder "%2" is synced to local folder "%3" - %1 carpeta "%2" está sincronizada con la carpeta local "%3" + + %1 folder "%2" is synced to local folder "%3" + %1 carpeta "%2" está sincronizada con la carpeta local "%3" - - %1 free space - %1 espacio libre + %1 free space + %1 espacio libre - - Connect - Conectar + + Connect + Conectar - - Local Sync Folder - Carpeta local de sincronización + + + (experimental) + (experimental) - - Sync the folder "%1" - Sincronizar la carpeta "%1" + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Los archivos virtuales no son compatibles con la carpeta raíz de la partición de Windows como carpeta local. Por favor, elija una subcarpeta válida bajo la letra de la unidad. - - There isn't enough free space in the local folder! - ¡No hay suficiente espacio libre en la carpeta local! + + %1 free space + %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB + %1 espacio libre - - Use &virtual files instead of downloading content immediately %1 - Usa &archivos virtuales en vez de descargar el contenido inmediatamente %1 + + Virtual files are not available for the selected folder + Los archivos virtuales no están disponibles para la carpeta seleccionada - - Warning: The local folder is not empty. Pick a resolution! - Advertencia: La carpeta local no está vacía. ¡Elija una solución! + + Local Sync Folder + Carpeta local de sincronización - - + + + Sync the folder "%1" + Sincronizar la carpeta "%1" + + + + There isn't enough free space in the local folder! + ¡No hay suficiente espacio libre en la carpeta local! + + + + + Use &virtual files instead of downloading content immediately %1 + Usa &archivos virtuales en vez de descargar el contenido inmediatamente %1 + + + + Warning: The local folder is not empty. Pick a resolution! + Advertencia: La carpeta local no está vacía. ¡Elija una solución! + + + OCC::OwncloudConnectionMethodDialog - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Fallo al conectar con la dirección del servidor seguro <em>%1</em>. ¿Cómo desea proceder?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Fallo al conectar con la dirección del servidor seguro <em>%1</em>. ¿Cómo desea proceder?</p></body></html> - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Fallo al conectar con la dirección del servidor seguro especificado. ¿Cómo desea proceder?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Fallo al conectar con la dirección del servidor seguro especificado. ¿Cómo desea proceder?</p></body></html> - - Configure client-side TLS certificate - Configurar certificado TLS del cliente + + Configure client-side TLS certificate + Configurar certificado TLS del cliente - - Connection failed - La conexión ha fallado + + Connection failed + La conexión ha fallado - - Retry unencrypted over HTTP (insecure) - Reintentar sin cifrado sobre HTTP (inseguro) + + Retry unencrypted over HTTP (insecure) + Reintentar sin cifrado sobre HTTP (inseguro) - - Select a different URL - Seleccionar una URL diferente + + Select a different URL + Seleccionar una URL diferente - - + + OCC::OwncloudHttpCredsPage - - &Email - &Correo electrónico + + &Email + &Correo electrónico - - Connect to %1 - Conectarse a %1 + + Connect to %1 + Conectarse a %1 - - Enter user credentials - Introduzca las credenciales de usuario + + Enter user credentials + Introduzca las credenciales de usuario - - + + OCC::OwncloudOAuthCredsPage - Login in your browser - Inicie sesión en su navegador + Login in your browser + Inicie sesión en su navegador - - + + OCC::OwncloudPropagator - Error with the metadata. Getting unexpected metadata format. - + + + Impossible to get modification time for file in conflict %1 + Es imposible leer la hora de modificación del archivo en conflicto %1 + + + OCC::OwncloudSetupPage - - Impossible to get modification time for file in conflict %1 - Es imposible leer la hora de modificación del archivo en conflicto %1 + + The link to your %1 web interface when you open it in the browser. + %1 will be replaced with the application name + El link a su interfaz web %1 cuando la abra en el navegador. - - - OCC::OwncloudSetupPage - - &Next > - &Siguiente > + + &Next > + &Siguiente > - - Could not load certificate. Maybe wrong password? - No se ha podido guardar el certificado. ¿Quizás la contraseña sea incorrecta? + + Could not load certificate. Maybe wrong password? + No se ha podido guardar el certificado. ¿Quizás la contraseña sea incorrecta? - - Server address does not seem to be valid - La dirección del servidor no es válida + + Server address does not seem to be valid + La dirección del servidor no es válida - - The link to your %1 web interface when you open it in the browser. - El link a su interfaz web %1 cuando la abra en el navegador. + The link to your %1 web interface when you open it in the browser. + El link a su interfaz web %1 cuando la abra en el navegador. - - + + OCC::OwncloudSetupWizard - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> - <font color="green"><b>Carpeta de sincronización local %1 creada con éxito</b></font> + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + <font color="green"><b>Carpeta de sincronización local %1 creada con éxito</b></font> + + + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + <font color="green">Conectado con éxito a %1: versión %2 %3 (%4)</font><br/><br/> + + + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + La petición autenticada al servidor ha sido redirigida a "%1". La URL es errónea, el servidor está mal configurado. + + + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Acceso denegado por el servidor. Para verificar que tiene acceso, <a href="%1">haga clic aquí</a> para acceder al servicio desde el navegador. - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - <font color="green">Conectado con éxito a %1: versión %2 %3 (%4)</font><br/><br/> + + There was an invalid response to an authenticated WebDAV request + Ha habido una respuesta no válida a una solicitud autenticada de WebDAV - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - <p><font color="red">La creación de la carpeta remota ha fallado, probablemente porque las credenciales proporcionadas son incorrectas.</font><br/>Por favor, vuelva atrás y compruebe sus credenciales.</p> + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + <p><font color="red">La creación de la carpeta remota ha fallado, probablemente porque las credenciales proporcionadas son incorrectas.</font><br/>Por favor, vuelva atrás y compruebe sus credenciales.</p> - - A sync connection from %1 to remote directory %2 was set up. - Se ha configarado una conexión de sincronización desde %1 al directorio remoto %2 + + A sync connection from %1 to remote directory %2 was set up. + Se ha configarado una conexión de sincronización desde %1 al directorio remoto %2 - - Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - No se pudo eliminar y restaurar la carpeta porque ella o un archivo dentro de ella está abierto por otro programa. Por favor, cierre la carpeta o el archivo y pulsa en reintentar o cancelar la instalación. + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + No se pudo eliminar y restaurar la carpeta porque ella o un archivo dentro de ella está abierto por otro programa. Por favor, cierre la carpeta o el archivo y pulsa en reintentar o cancelar la instalación. - - Connection to %1 could not be established. Please check again. - No se ha podido establecer la conexión con %1. Por favor, compruébelo de nuevo. + + Connection to %1 could not be established. Please check again. + No se ha podido establecer la conexión con %1. Por favor, compruébelo de nuevo. - - Could not create local folder %1 - No se ha podido crear la carpeta local %1 + + Could not create local folder %1 + No se ha podido crear la carpeta local %1 - - creating folder on Nextcloud: %1 - Creando carpeta en Nextcloud: %1 + + creating folder on Nextcloud: %1 + Creando carpeta en Nextcloud: %1 - - Creating local sync folder %1 … - Creando carpeta de sincronización local %1 ... + + Creating local sync folder %1 … + Creando carpeta de sincronización local %1 ... - - Error: %1 - Error: %1 + + Error: %1 + Error: %1 - - Failed to connect to %1 at %2:<br/>%3 - Fallo al conectar %1 a %2:<br/>%3 + + Failed to connect to %1 at %2:<br/>%3 + Fallo al conectar %1 a %2:<br/>%3 - - failed. - ha fallado. + + failed. + ha fallado. - - Folder rename failed - Error al renombrar la carpeta + + Folder rename failed + Error al renombrar la carpeta - - Invalid URL - URL no válida. + + Invalid URL + URL no válida. - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> - La carpeta de sincronización local %1 ya existe, configurándola para la sincronización.<br/><br/> + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + La carpeta de sincronización local %1 ya existe, configurándola para la sincronización.<br/><br/> - - No remote folder specified! - ¡No se ha especificado ninguna carpeta remota! + + No remote folder specified! + ¡No se ha especificado ninguna carpeta remota! - - OK - OK + + OK + OK - - Remote folder %1 created successfully. - Carpeta remota %1 creado correctamente. + + Remote folder %1 created successfully. + Carpeta remota %1 creado correctamente. - - Remote folder %1 creation failed with error <tt>%2</tt>. - Creación %1 de carpeta remota ha fallado con el error <tt>%2</tt>. + + + Remote folder %1 creation failed with error <tt>%2</tt>. + Creación %1 de carpeta remota ha fallado con el error <tt>%2</tt>. - - Successfully connected to %1! - ¡Conectado con éxito a %1! + + Successfully connected to %1! + ¡Conectado con éxito a %1! - - The folder creation resulted in HTTP error code %1 - La creación de la carpeta ha producido el código de error HTTP %1 + + + The folder creation resulted in HTTP error code %1 + La creación de la carpeta ha producido el código de error HTTP %1 - - The remote folder %1 already exists. Connecting it for syncing. - La carpeta remota %1 ya existe. Conectándola para sincronizacion. + + The remote folder %1 already exists. Connecting it for syncing. + La carpeta remota %1 ya existe. Conectándola para sincronizacion. - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - ¡La creación de la carpeta remota ha fallado debido a que las credenciales proporcionadas son incorrectas!<br/>Por favor, vuelva atrás y compruebe sus credenciales</p> + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + ¡La creación de la carpeta remota ha fallado debido a que las credenciales proporcionadas son incorrectas!<br/>Por favor, vuelva atrás y compruebe sus credenciales</p> - - Timeout while trying to connect to %1 at %2. - Tiempo de espera agotado mientras se intentaba conectar a %1 en %2 + + Timeout while trying to connect to %1 at %2. + Tiempo de espera agotado mientras se intentaba conectar a %1 en %2 - - Trying to connect to %1 at %2 … - Intentando conectar a %1 desde %2 ... + + Trying to connect to %1 at %2 … + Intentando conectar a %1 desde %2 ... - - + + OCC::OwncloudWizard - - Add %1 account - Añadir %1 cuenta + + Add %1 account + Añadir %1 cuenta - - Enable experimental feature? - ¿Activar característica experimental? + + Cancel + Cancelar - - Enable experimental placeholder mode - Activar modo experimental de marcador de posición + + Enable experimental feature? + ¿Activar característica experimental? - - Skip folders configuration - Omitir la configuración de carpetas + + Enable experimental placeholder mode + Activar modo experimental de marcador de posición - - Stay safe - Mantente a salvo + + Skip folders configuration + Omitir la configuración de carpetas - - When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + + Stay safe + Mantente a salvo + + + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. Switching to this mode will abort any currently running synchronization. This is a new, experimental mode. If you decide to use it, please report any issues that come up. - Cuando el modo de «archivos virtuales» está activado, ningún archivo será descargado de entrada. Por el contrario, un pequeño archivo «%1» será creado para cada archivo que existe en el servidor. Los contenidos pueden ser descargados ejecutando esos archivos, o usando el menú contextual. + Cuando el modo de «archivos virtuales» está activado, ningún archivo será descargado de entrada. Por el contrario, un pequeño archivo «%1» será creado para cada archivo que existe en el servidor. Los contenidos pueden ser descargados ejecutando esos archivos, o usando el menú contextual. El modo de archivos virtuales es incompatible con la sincronización selectiva. Si se activa, las carpetas no sincronizadas serán transformadas en carpetas de acceso solo en línea, y los ajustes de sincronización selectiva serán eliminados. @@ -3736,2542 +4256,3197 @@ Cambiar a este modo interrumpirá cualquier sincronización en proceso. Esta es un modo nuevo y experimental. Si decides usarlo, por favor, informa de cualquier tipo de problema que pueda surgir. - - + + OCC::PasswordInputDialog - - Please enter a password for your share: - Por favor, introduce una contraseña para tu recurso compartido: + + Password for share required + Se requiere contraseña para compartir + + + + Please enter a password for your share: + Por favor, introduce una contraseña para tu recurso compartido: - - + + OCC::PollJob - - Invalid JSON reply from the poll URL - Respuesta JSON invalida de la poll URL + + Invalid JSON reply from the poll URL + Respuesta JSON invalida de la poll URL - - + + OCC::ProcessDirectoryJob - - Cannot sync due to invalid modification time - No se puede sincronizar debido a una hora de modificación no válida + + Cannot sync due to invalid modification time + No se puede sincronizar debido a una hora de modificación no válida - - Case Clash Conflict: Server file downloaded and renamed to avoid clash. - Conflicto de capitalización: Se descargó el archivo del servidor y se renombró para evitar el conflicto. + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. + Conflicto de capitalización: Se descargó el archivo del servidor y se renombró para evitar el conflicto. - - Conflict when uploading a file. It's going to get removed! - Se ha producido un conflicto al subir un archivo. ¡Se eliminará! + + Conflict when uploading a file. It's going to get removed! + Se ha producido un conflicto al subir un archivo. ¡Se eliminará! - - Conflict when uploading a folder. It's going to get cleared! - Se ha producido un conflicto al subir una carpeta. ¡Se eliminará! + + Conflict when uploading a folder. It's going to get cleared! + Se ha producido un conflicto al subir una carpeta. ¡Se eliminará! - - Conflict: Server version downloaded, local copy renamed and not uploaded. - Conflicto: Versión del servidor descargada, la copia local ha sido renombrada pero no se ha podido subir. + + Filename contains trailing spaces. + El nombre del archivo contiene espacios al final. - - Could not upload file, because it is open in "%1". - No es posible subir el archivo, porque está abierto en "%1". + + Filename contains leading spaces. + El nombre del archivo contiene espacios al inicio. - - Error while deleting file record %1 from the database - Error mientras se borraba el registro de archivo %1 de la base de datos + + Filename contains leading and trailing spaces. + El nombre del archivo contiene espacios iniciales y finales. - - Error while reading the database - Error mientras se leía la base de datos + + Conflict: Server version downloaded, local copy renamed and not uploaded. + Conflicto: Versión del servidor descargada, la copia local ha sido renombrada pero no se ha podido subir. - - File has extension reserved for virtual files. - El archivo tiene una extensión reservada para archivos virtuales. + + Could not upload file, because it is open in "%1". + No es posible subir el archivo, porque está abierto en "%1". - - file id - identificador de archivo + + Error while deleting file record %1 from the database + Error mientras se borraba el registro de archivo %1 de la base de datos - - File is listed on the ignore list. - El archivo está en la lista de ignorados. + + Error while reading the database + Error mientras se leía la base de datos - - File name contains at least one invalid character - El nombre del archivo contiene al menos un carácter no válido + + File has extension reserved for virtual files. + El archivo tiene una extensión reservada para archivos virtuales. - - File names containing the character "%1" are not supported on this file system. - Los nombres de archivo que contienen el carácter "%1" no son compatibles con este sistema de archivos. + + file id + identificador de archivo - - File names ending with a period are not supported on this file system. - Los nombres de archivo que terminan con un punto no son compatibles con este sistema de archivos. + + File is listed on the ignore list. + El archivo está en la lista de ignorados. - - File/Folder is ignored because it's hidden. - El archivo o carpeta es ignorado porque está oculto. + + File name contains at least one invalid character + El nombre del archivo contiene al menos un carácter no válido - - Filename is too long. - El nombre del archivo es demasiado largo. + + File names containing the character "%1" are not supported on this file system. + Los nombres de archivo que contienen el carácter "%1" no son compatibles con este sistema de archivos. - - Ignored because of the "choose what to sync" blacklist - Ignorado porque se encuentra en la lista negra de «elija qué va a sincronizar» + + File names ending with a period are not supported on this file system. + Los nombres de archivo que terminan con un punto no son compatibles con este sistema de archivos. - - Moved to invalid target, restoring - Movido a un lugar no válido, restaurando + + File/Folder is ignored because it's hidden. + El archivo o carpeta es ignorado porque está oculto. - - Not allowed because you don't have permission to add files in that folder - No permitido porque no tienes permiso para añadir archivos a esa carpeta. + + Filename is too long. + El nombre del archivo es demasiado largo. - - Not allowed because you don't have permission to add subfolders to that folder - No permitido porque no tienes permiso para añadir subcarpetas a esa carpeta. + + Ignored because of the "choose what to sync" blacklist + Ignorado porque se encuentra en la lista negra de «elija qué va a sincronizar» - - Not allowed to remove, restoring - No está permitido borrar, restaurando + + + Moved to invalid target, restoring + Movido a un lugar no válido, restaurando - - Not allowed to upload this file because it is read-only on the server, restoring - No está permitido subir este archivo porque es de solo lectura en el servidor, restaurando. + + Not allowed because you don't have permission to add files in that folder + No permitido porque no tienes permiso para añadir archivos a esa carpeta. - - permission - permisos + + + Not allowed because you don't have permission to add subfolders to that folder + No permitido porque no tienes permiso para añadir subcarpetas a esa carpeta. - - Server replied with an error while reading directory "%1" : %2 - El servidor contestó con un error al leer el directorio "%1" : %2 + + Not allowed to remove, restoring + No está permitido borrar, restaurando - - Server reported no %1 - El servidor informó de no %1 + + Not allowed to upload this file because it is read-only on the server, restoring + No está permitido subir este archivo porque es de solo lectura en el servidor, restaurando. - - size - tamaño + + permission + permisos - - Stat failed. - Stat ha fallado. + + Server replied with an error while reading directory "%1" : %2 + El servidor contestó con un error al leer el directorio "%1" : %2 - - Symbolic links are not supported in syncing. - Los enlaces simbólicos no están soportados en la sincronización. + + Server reported no %1 + El servidor informó de no %1 - - The file name is a reserved name on this file system. - El nombre del archivo es una palabra reservada del sistema de archivos. + + size + tamaño - - The filename cannot be encoded on your file system. - El nombre de archivo no se puede codificar en tu sistema de archivos. + + Stat failed. + Stat ha fallado. - - The filename is blacklisted on the server. - El nombre del archivo está prohibido en el servidor. + + Symbolic links are not supported in syncing. + Los enlaces simbólicos no están soportados en la sincronización. - - + + + The file name is a reserved name on this file system. + El nombre del archivo es una palabra reservada del sistema de archivos. + + + + The filename cannot be encoded on your file system. + El nombre de archivo no se puede codificar en tu sistema de archivos. + + + + The filename is blacklisted on the server. + El nombre del archivo está prohibido en el servidor. + + + OCC::PropagateDirectory - - could not delete file %1 from local DB - no fue posible borrar el archivo %1 de la base de datos local + + could not delete file %1 from local DB + no fue posible borrar el archivo %1 de la base de datos local - - Error updating metadata due to invalid modification time - Error al actualizar los metadatos debido a una hora de modificación no válida + + Error updating metadata due to invalid modification time + Error al actualizar los metadatos debido a una hora de modificación no válida - - File is currently in use - El archivo se encuentra en uso + + Error updating metadata: %1 + Error al actualizar los metadatos: %1 - - The folder %1 cannot be made read-only: %2 - La carpeta %1 no se puede hacer de sólo lectura: %2 + + File is currently in use + El archivo se encuentra en uso - - + + + + The folder %1 cannot be made read-only: %2 + La carpeta %1 no se puede hacer de sólo lectura: %2 + + + OCC::PropagateDownloadFile - - Could not delete file record %1 from local DB - No fue posible borrar el registro del archivo %1 de la base de datos local + + + Could not delete file record %1 from local DB + No fue posible borrar el registro del archivo %1 de la base de datos local + + + + could not get file %1 from local DB + no fue posible obtener el archivo %1 de la base de datos local - - could not get file %1 from local DB - no fue posible obtener el archivo %1 de la base de datos local + + File %1 can not be downloaded because of a local file name clash! + ¡El archivo %1 no se puede descargar a causa de un conflicto con el nombre de un archivo local! - - File %1 can not be downloaded because of a local file name clash! - ¡El archivo %1 no se puede descargar a causa de un conflicto con el nombre de un archivo local! + + File %1 cannot be downloaded because encryption information is missing. + El archivo %1 no puede ser descargado porque falta la información de cifrado, - - File %1 cannot be downloaded because encryption information is missing. - El archivo %1 no puede ser descargado porque falta la información de cifrado, + + File %1 downloaded but it resulted in a local file name clash! + ¡El archivo %1 se descargó pero resultó en un conflicto con el nombre de un archivo local! - - File %1 downloaded but it resulted in a local file name clash! - ¡El archivo %1 se descargó pero resultó en un conflicto con el nombre de un archivo local! + + + File %1 has invalid modified time reported by server. Do not save it. + El servidor informa que el archivo %1 tiene una hora de modificación no válida. No lo guardes. - - File %1 has invalid modified time reported by server. Do not save it. - El servidor informa que el archivo %1 tiene una hora de modificación no válida. No lo guardes. + + + File has changed since discovery + El archivo ha cambiado desde que fue descubierto - - File has changed since discovery - El archivo ha cambiado desde que fue descubierto + + File was deleted from server + Se ha eliminado el archivo del servidor - - File was deleted from server - Se ha eliminado el archivo del servidor + + Error updating metadata: %1 + Error al actualizar los metadatos: %1 - - Free space on disk is less than %1 - El espacio libre en el disco es inferior a %1 + + The file %1 is currently in use + El archivo %1 se encuentra en uso - - The download would reduce free local disk space below the limit - La descarga reducirá el espacio libre local por debajo del límite. + + Free space on disk is less than %1 + El espacio libre en el disco es inferior a %1 - - The downloaded file is empty, but the server said it should have been %1. - El archivo descargado está vacío, aunque el servidor dijo que debía ocupar %1. + + The download would reduce free local disk space below the limit + La descarga reducirá el espacio libre local por debajo del límite. - - The file could not be downloaded completely. - No se ha podido descargar el archivo completamente. + + The downloaded file is empty, but the server said it should have been %1. + El archivo descargado está vacío, aunque el servidor dijo que debía ocupar %1. - - + + + The file could not be downloaded completely. + No se ha podido descargar el archivo completamente. + + + OCC::PropagateItemJob - - ; Restoration Failed: %1 - ; Fallo al restaurar: %1 + + ; Restoration Failed: %1 + ; Fallo al restaurar: %1 - - A file or folder was removed from a read only share, but restoring failed: %1 - Un archivo o directorio ha sido eliminado de una carpeta compartida de solo lectura pero la recuperación ha fallado: %1 + + A file or folder was removed from a read only share, but restoring failed: %1 + Un archivo o directorio ha sido eliminado de una carpeta compartida de solo lectura pero la recuperación ha fallado: %1 - - + + OCC::PropagateLocalMkdir - - Could not create folder %1 - No se pudo crear la carpeta %1 + + Could not create folder %1 + No se pudo crear la carpeta %1 + + + + could not delete file %1, error: %2 + no se ha podido borrar el archivo %1, error: %2 + + + + Folder %1 cannot be created because of a local file or folder name clash! + ¡La carpeta %1 no se pudo crear a causa de un conflicto con el nombre de un archivo o carpeta local! - - could not delete file %1, error: %2 - no se ha podido borrar el archivo %1, error: %2 + + The folder %1 cannot be made read-only: %2 + La carpeta %1 no se puede hacer de sólo lectura: %2 - - Folder %1 cannot be created because of a local file or folder name clash! - ¡La carpeta %1 no se pudo crear a causa de un conflicto con el nombre de un archivo o carpeta local! + + Error updating metadata: %1 + Error al actualizar los metadatos: %1 - - + + + The file %1 is currently in use + El archivo %1 se encuentra en uso + + + OCC::PropagateLocalRemove - - Could not remove %1 because of a local file name clash - No se ha podido eliminar %1 por causa de un conflicto con el nombre de un archivo local + + Could not remove %1 because of a local file name clash + No se ha podido eliminar %1 por causa de un conflicto con el nombre de un archivo local + + + + Could not delete file record %1 from local DB + No fue posible borrar el registro del archivo %1 de la base de datos local - - + + OCC::PropagateLocalRename - - Error setting pin state - Error al configurar el estado fijado + + File %1 downloaded but it resulted in a local file name clash! + ¡El archivo %1 se descargó pero resultó en un conflicto con el nombre de un archivo local! + + + + + + could not get file %1 from local DB + no fue posible obtener el archivo %1 de la base de datos local + + + + + Error setting pin state + Error al configurar el estado fijado + + + + + Error updating metadata: %1 + Error al actualizar los metadatos: %1 + + + + The file %1 is currently in use + El archivo %1 se encuentra en uso + + + + + Could not delete file record %1 from local DB + No fue posible borrar el registro del archivo %1 de la base de datos local - - Failed to propagate directory rename in hierarchy - Fallo al propagar el renombrado de carpeta en la jerarquía + + Failed to propagate directory rename in hierarchy + Fallo al propagar el renombrado de carpeta en la jerarquía - - Failed to rename file - Fallo al renombrar el archivo + + Failed to rename file + Fallo al renombrar el archivo - - Folder %1 cannot be renamed because of a local file or folder name clash! - La carpeta %1 no puede renombrarse debido a un conflicto de nombres de archivos o carpetas locales. + + Folder %1 cannot be renamed because of a local file or folder name clash! + La carpeta %1 no puede renombrarse debido a un conflicto de nombres de archivos o carpetas locales. - - + + + OCC::PropagateRemoteDelete + + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + El código HTTP devuelto por el servidor es erróneo. Se esperaba 204, pero se recibió "%1 %2". + + + + Could not delete file record %1 from local DB + No fue posible borrar el registro del archivo %1 de la base de datos local + + + + OCC::PropagateRemoteDeleteEncryptedRootFolder + + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + El código HTTP devuelto por el servidor es erróneo. Se esperaba 204, pero se recibió "%1 %2". + + + OCC::PropagateRemoteMkdir - - Error writing metadata to the database: %1 - Error al escribir los metadatos en la base de datos: %1 + + Error writing metadata to the database: %1 + Error al escribir los metadatos en la base de datos: %1 + + + + Failed to encrypt a folder %1 + Fallo al cifrar una carpeta %1 - - Failed to encrypt a folder %1 - Fallo al cifrar una carpeta %1 + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + El código HTTP devuelto por el servidor es erróneo. Se esperaba 201, pero se recibió "%1 %2". - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - El código HTTP devuelto por el servidor es erróneo. Se esperaba 201, pero se recibió "%1 %2". + + The file %1 is currently in use + El archivo %1 se encuentra en uso - - + + OCC::PropagateRemoteMove - - Could not rename %1 to %2, error: %3 - No se puede renombrar %1 a %2, error: %3 + + Could not rename %1 to %2, error: %3 + No se puede renombrar %1 a %2, error: %3 + + + + + Error updating metadata: %1 + Error al actualizar los metadatos: %1 + + + + + The file %1 is currently in use + El archivo %1 se encuentra en uso + + + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + El código HTTP devuelto por el servidor es erróneo. Se esperaba 201, pero se recibió "%1 %2". - - + + + could not get file %1 from local DB + no fue posible obtener el archivo %1 de la base de datos local + + + + Could not delete file record %1 from local DB + No fue posible borrar el registro del archivo %1 de la base de datos local + + + + Error setting pin state + Error al configurar el estado fijado + + + + Error writing metadata to the database + Error al escribir los metadatos en la base de datos + + + OCC::PropagateUploadFileCommon - - Failed to unlock encrypted folder. - Fallo al desbloquear la carpeta cifrada. + + Failed to unlock encrypted folder. + Fallo al desbloquear la carpeta cifrada. + + + + Failed to upload encrypted file. + Fallo al subir el archivo cifrado. + + + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + El archivo %1 no se puede subir porque ya existe otro con el mismo nombre, solo difiere en las mayúsculas/minúsculas + + + + + + File %1 has invalid modification time. Do not upload to the server. + El archivo %1 tiene una hora de modificación no válida. No subir al servidor. - - Failed to upload encrypted file. - Fallo al subir el archivo cifrado. + + File Removed (start upload) %1 + Archivo eliminado (comenzar subida) %1 - - Unable to upload an item with invalid characters - No se puede subir un elemento con caracteres no válidos + + Local file changed during syncing. It will be resumed. + Un archivo local ha cambiado durante la sincronización. Será subido. - - Upload of %1 exceeds the quota for the folder - La subida %1 excede el límite de tamaño de la carpeta + + Local file changed during sync. + Un archivo local ha cambiado durante la sincronización. - - + + + Unable to upload an item with invalid characters + No se puede subir un elemento con caracteres no válidos + + + + Error updating metadata: %1 + Error al actualizar los metadatos: %1 + + + + The file %1 is currently in use + El archivo %1 se encuentra en uso + + + + + Upload of %1 exceeds the quota for the folder + La subida %1 excede el límite de tamaño de la carpeta + + + OCC::PropagateUploadFileNG - - Missing ETag from server - Perdido ETag del servidor + + Missing ETag from server + Perdido ETag del servidor + + + + Missing File ID from server + ID perdido del archivo del servidor - - Missing File ID from server - ID perdido del archivo del servidor + + The local file was removed during sync. + El archivo local ha sido eliminado durante la sincronización. - - Poll URL missing - Falta la URL de la encuesta + + Local file changed during sync. + Un archivo local ha cambiado durante la sincronización. - - Unexpected return code from server (%1) - Respuesta inesperada del servidor (%1) + + Poll URL missing + Falta la URL de la encuesta - - + + + Unexpected return code from server (%1) + Respuesta inesperada del servidor (%1) + + + OCC::PropagateUploadFileV1 - - The server did not acknowledge the last chunk. (No e-tag was present) - El servidor no ha reconocido la última parte. (No había una e-tag presente) + + Poll URL missing + Falta la URL de la encuesta - - + + + The local file was removed during sync. + El archivo local ha sido eliminado durante la sincronización. + + + + Local file changed during sync. + Un archivo local ha cambiado durante la sincronización. + + + + The server did not acknowledge the last chunk. (No e-tag was present) + El servidor no ha reconocido la última parte. (No había una e-tag presente) + + + OCC::ProxyAuthDialog - - Password: - Contraseña: + + Password: + Contraseña: - - Proxy authentication required - Autenticación de proxy necesaria + + Proxy authentication required + Autenticación de proxy necesaria - - Proxy: - Proxy: + + Proxy: + Proxy: - - The proxy server needs a username and password. - El servidor de proxy necesita de un usuario y contraseña. + + The proxy server needs a username and password. + El servidor de proxy necesita de un usuario y contraseña. - - Username: - Nombre de usuario: + + Username: + Nombre de usuario: - - + + OCC::SelectiveSyncDialog - - Choose What to Sync - Escoja qué sincronizar + + Choose What to Sync + Escoja qué sincronizar - - + + OCC::SelectiveSyncWidget - - An error occurred while loading the list of sub folders. - Se ha producido un error al cargar la lista de carpetas. + + An error occurred while loading the list of sub folders. + Se ha producido un error al cargar la lista de carpetas. - - Deselect remote folders you do not wish to synchronize. - Deseleccione las carpetas remotas que no desea sincronizar. + + Deselect remote folders you do not wish to synchronize. + Deseleccione las carpetas remotas que no desea sincronizar. - - Loading … - Cargando ... + + Loading … + Cargando ... - - Name - Nombre + + Name + Nombre - - No subfolders currently on the server. - No hay subcarpetas actualmente en el servidor. + + + No subfolders currently on the server. + No hay subcarpetas actualmente en el servidor. - - Size - Tamaño + + Size + Tamaño - - + + OCC::ServerNotificationHandler - - Reply - Responder + + Reply + Responder - - + + OCC::SettingsDialog - - %1 Settings - %1 Configuración + + %1 Settings + This name refers to the application name e.g Nextcloud + %1 Configuración - - Account - Cuenta + + Account + Cuenta - - General - General + + General + General - Network - Red + Network + Red - - New Account - Nueva cuenta + + New Account + Nueva cuenta - - - OCC::ShareModel - - Could not find local folder for %1 - No se ha podido encontrar una carpeta local para %1 + + Settings + Configuración + + + + OCC::ShareManager + + + Error + Error + + + OCC::ShareModel - Enter a note for the recipient - + + Could not find local folder for %1 + No se ha podido encontrar una carpeta local para %1 - - Internal link - Enlace interno + + Internal link + Enlace interno - - Link share - Compartición de enlace + + Link share + Compartición de enlace - - Secure file drop - Entrega de archivos segura + + Secure file drop + Entrega de archivos segura - - Secure file drop link - Enlace para entrega de archivos segura + + Secure file drop link + Enlace para entrega de archivos segura - - Share link - Compartir enlace + + Share link + Compartir enlace - - + + OCC::ShareUserLine - Can edit - Puede editar + Can edit + Puede editar - Expires: - Caduca: + Expires: + Caduca: - Note: - Nota: + Note: + Nota: - - + + OCC::ShareeModel - - Global search results - Resultados de búsqueda global + + Global search results + Resultados de búsqueda global + + + + No results found + No se encontraron resultados - - No results found - No se encontraron resultados + + %1 (%2) + sharee (shareWithAdditionalInfo) + %1 (%2) - - Search globally - Buscar globalmente + + + Search globally + Buscar globalmente - - + + OCC::SocketApi - Activity - Actividad + + + Activity + Actividad - - Context menu share - Compartir en menú contextual + + Context menu share + Compartir en menú contextual - - Copy internal link - Copiar enlace interno + + Copy internal link + Copiar enlace interno - - Copy private link to clipboard - Copiar enlace privado al portapapeles + + Copy private link to clipboard + Copiar enlace privado al portapapeles - - Copy public link - Copiar enlace público + + + Copy public link + Copiar enlace público - - Copy secure file drop link - Copiar enlace para entrega de archivos segura + + Copy secure file drop link + Copiar enlace para entrega de archivos segura - - Copy secure filedrop link - Copiar enlace para entrega de archivos segura + + Copy secure filedrop link + Copiar enlace para entrega de archivos segura - - Could not encrypt the following folder: "%1". + + Could not encrypt the following folder: "%1". Server replied with error: %2 - No se pudo cifrar la siguiente carpeta: "%1" + No se pudo cifrar la siguiente carpeta: "%1" El servidor respondió con el error: %2 - - Delete local changes - Borra cambios en local + + Delete local changes + Borra cambios en local - - Edit - Editar + + Edit + Editar - - - Expires in %1 minutes - - - - Expira en %1 minutos - + + + Failed to encrypt folder + Fallo al cifrar la carpeta - - Failed to encrypt folder - Fallo al cifrar la carpeta + + Failed to encrypt folder at "%1" + No se pudo cifrar carpeta en "%1" - - Failed to encrypt folder at "%1" - No se pudo cifrar carpeta en "%1" + + Folder encrypted successfully + Se cifró la carpeta exitosamente - - Folder encrypted successfully - Se cifró la carpeta exitosamente + + I shared something with you + He compartido algo contigo - - I shared something with you - He compartido algo contigo + + Leave this share + Salir de este compartido - - Leave this share - Salir de este compartido + + Encrypt + Cifrar - - Lock file - Bloquear archivo + + Lock file + Bloquear archivo - - Locked by %1 - Bloqueado por %1 + + Locked by %1 + Bloqueado por %1 + + + + Expires in %1 minutes + remaining time before lock expires + + + + + + + + Move and rename … + Mover y renombrar … - - Move and rename … - Mover y renombrar … + + Move and upload … + Mover y subir … - - Move and upload … - Mover y subir … + + Delete + Borrar - - Move, rename and upload … - Mover, renombrar y subir … + + Move, rename and upload … + Mover, renombrar y subir … - - Open in browser - Abrir en navegador + + Open in browser + Abrir en navegador - - Resharing this file is not allowed - No está permitido compartir de nuevo + + Resharing this file is not allowed + No está permitido compartir de nuevo - - Resharing this folder is not allowed - No está permitido compartir de nuevo esta carpeta + + Resharing this folder is not allowed + No está permitido compartir de nuevo esta carpeta - - Resolve conflict … - Resolver conflicto … + + Resolve conflict … + Resolver conflicto … - - Select new location … - Seleccione nueva ubicación … + + Select new location … + Seleccione nueva ubicación … - - Send private link by email … - Enviar enlace privado por correo electrónico ... + + Send private link by email … + Enviar enlace privado por correo electrónico ... - - Share options - Opciones de compartir + + + Share options + Opciones de compartir - - The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - La cuenta %1 no tiene el cifrado de extremo a extremo configurado. Por favor configure esto en sus opciones de cuenta para habilitar el cifrado de carpetas. + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. + La cuenta %1 no tiene el cifrado de extremo a extremo configurado. Por favor configure esto en sus opciones de cuenta para habilitar el cifrado de carpetas. - - The following folder was encrypted successfully: "%1" - La siguiente carpeta se cifró con éxito: "%1" + + The following folder was encrypted successfully: "%1" + La siguiente carpeta se cifró con éxito: "%1" - - Unlock file - Desbloquear archivo + + Unlock file + Desbloquear archivo - - + + OCC::SslButton - - %1 (self-signed) - %1 (autofirmado) + + %1 (self-signed) + %1 (autofirmado) + + + + <h3>Certificate Details</h3> + <h3>Detalles del certificado</h3> + + + + <h3>Fingerprints</h3> + <h3>Firma</h3> - - <h3>Certificate Details</h3> - <h3>Detalles del certificado</h3> + + <h3>Issuer</h3> + <h3>Emisor</h3> - - <h3>Fingerprints</h3> - <h3>Firma</h3> + + <p><b>Note:</b> This certificate was manually approved</p> + <p><b>Notificación:</b> Este certificado fue aprobado manualmente</p> - - <h3>Issuer</h3> - <h3>Emisor</h3> + + Certificate information: + Información del certificado: - - <p><b>Note:</b> This certificate was manually approved</p> - <p><b>Notificación:</b> Este certificado fue aprobado manualmente</p> + + Common Name (CN): + Nombre común (NC): - - Certificate information: - Información del certificado: + + Country: + País: - - Common Name (CN): - Nombre común (NC): + + Expires on: + Caduca el: - - Country: - País: + + Issued on: + Emitido en: - - Expires on: - Caduca el: + + Issuer: + Emisor: - - Issued on: - Emitido en: + + No support for SSL session tickets/identifiers + No admite tickets de sesión/identificadores SSL - - Issuer: - Emisor: + + Organization (O): + Organización (O): - - No support for SSL session tickets/identifiers - No admite tickets de sesión/identificadores SSL + + Organizational Unit (OU): + Unidad organizativa (UO): - - Organization (O): - Organización (O): + + Serial: + Nº de serie: - - Organizational Unit (OU): - Unidad organizativa (UO): + + %1 + %1 - - Serial: - Nº de serie: + + This connection is encrypted using %1 bit %2. + + - - Server version: %1 - Versión del servidor: %1 + + This connection is NOT secure as it is not encrypted. + + - - SHA-1: - SHA-1: + + Server version: %1 + Versión del servidor: %1 - - SHA-256: - SHA-256: + + SHA-1: + SHA-1: - - State/Province: - Estado/Provincia: + + SHA-256: + SHA-256: - - Subject Alternative Names: - Nombres alternativos del sujeto: + + State/Province: + Estado/Provincia: - - The connection is not secure - La conexión no es segura + + Subject Alternative Names: + Nombres alternativos del sujeto: - - This connection is encrypted using %1 bit %2. - Esta conexión está cifrada con %1 bit %2. + + The connection is not secure + La conexión no es segura - - This connection is NOT secure as it is not encrypted. - Esta conexión NO ES SEGURA, pues no está cifrada. + This connection is encrypted using %1 bit %2. + Esta conexión está cifrada con %1 bit %2. - - + + This connection is NOT secure as it is not encrypted. + Esta conexión NO ES SEGURA, pues no está cifrada. + + + OCC::SslErrorDialog - - &lt;not specified&gt; - &lt;no especificado&gt; + + + + &lt;not specified&gt; + &lt;no especificado&gt; - - Additional errors: - Errores adicionales: + + Additional errors: + Errores adicionales: - - Cannot connect securely to <i>%1</i>: - No puedo conectar de forma segura a <i>%1</i>: + + Cannot connect securely to <i>%1</i>: + No puedo conectar de forma segura a <i>%1</i>: - - Country: %1 - País: %1 + + + Country: %1 + País: %1 - - Effective Date: %1 - Fecha de vigencia: %1 + + Effective Date: %1 + Fecha de vigencia: %1 - - Expiration Date: %1 - Fecha de caducidad: %1 + + Expiration Date: %1 + Fecha de caducidad: %1 - - Fingerprint (SHA-256): <tt>%1</tt> - Huella digital (SHA-256):<tt>%1</tt> + + Fingerprint (SHA-256): <tt>%1</tt> + Huella digital (SHA-256):<tt>%1</tt> - - Fingerprint (SHA-512): <tt>%1</tt> - Huella digital (SHA-512): <tt>%1</tt> + + Fingerprint (SHA-512): <tt>%1</tt> + Huella digital (SHA-512): <tt>%1</tt> - - Fingerprint (SHA1): <tt>%1</tt> - Huella dactilar (SHA1): <tt>%1</tt> + + Fingerprint (SHA1): <tt>%1</tt> + Huella dactilar (SHA1): <tt>%1</tt> - - Issuer: %1 - Emisor: %1 + + Issuer: %1 + Emisor: %1 - - Organization: %1 - Organización: %1 + + + Organization: %1 + Organización: %1 - - Trust this certificate anyway - Confiar en este certificado de todas maneras + + Trust this certificate anyway + Confiar en este certificado de todas maneras - - Unit: %1 - Unidad: %1 + + + Unit: %1 + Unidad: %1 - - Untrusted Certificate - Certificado sin verificar + + Untrusted Certificate + Certificado sin verificar - - with Certificate %1 - con certificado %1 + + with Certificate %1 + con certificado %1 - - + + OCC::SyncEngine - - %1 (skipped due to earlier error, trying again in %2) - %1 (no realizado por el error anterior, intente de nuevo %2) + + %1 (skipped due to earlier error, trying again in %2) + %1 (no realizado por el error anterior, intente de nuevo %2) + + + + Cannot open the sync journal + No es posible abrir el diario de sincronización - - Cannot open the sync journal - No es posible abrir el diario de sincronización + + Could not set file record to local DB: %1 + No fue posible establecer el registro del archivo a la base de datos local: %1 - - Could not set file record to local DB: %1 - No fue posible establecer el registro del archivo a la base de datos local: %1 + + Could not update file metadata: %1 + No se pudo actualizar los metadatos del archivo: %1 - - Could not update file metadata: %1 - No se pudo actualizar los metadatos del archivo: %1 + + Could not update file: %1 + No se pudo actualizar el archivo: %1 - - Could not update file: %1 - No se pudo actualizar el archivo: %1 + + Could not update virtual file metadata: %1 + No se ha podido actualizar los metadatos del archivo virtual: %1 - - Could not update virtual file metadata: %1 - No se ha podido actualizar los metadatos del archivo virtual: %1 + + Only %1 are available, need at least %2 to start + Placeholders are postfixed with file sizes using Utility::octetsToString() + Solo %1 disponible, se necesita por lo menos %2 para comenzar - - Disk space is low: Downloads that would reduce free space below %1 were skipped. - Poco espacio libre en disco: La descarga lo reducirá por debajo del %1, deberia abortar. + + Disk space is low: Downloads that would reduce free space below %1 were skipped. + Poco espacio libre en disco: La descarga lo reducirá por debajo del %1, deberia abortar. - - Only %1 are available, need at least %2 to start - Solo %1 disponible, se necesita por lo menos %2 para comenzar + Only %1 are available, need at least %2 to start + Solo %1 disponible, se necesita por lo menos %2 para comenzar - - There is insufficient space available on the server for some uploads. - No hay suficiente espacio libre en el servidor para algunas subidas. + + There is insufficient space available on the server for some uploads. + No hay suficiente espacio libre en el servidor para algunas subidas. - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. - Imposible abrir o crear la BBDD local de sync. Asegurese de que tiene permisos de escritura en la carpeta de sync. + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. + Imposible abrir o crear la BBDD local de sync. Asegurese de que tiene permisos de escritura en la carpeta de sync. - - Unable to read from the sync journal. - No se ha podido leer desde el registro de sincronización + + Unable to read from the sync journal. + No se ha podido leer desde el registro de sincronización - - Unable to read the blacklist from the local database - No se pudo leer la lista de bloqueo de la base de datos local + + Unable to read the blacklist from the local database + No se pudo leer la lista de bloqueo de la base de datos local - - Unresolved conflict. - Conflicto sin resolver. + + Unresolved conflict. + Conflicto sin resolver. - - Using virtual files with suffix, but suffix is not set - Usando archivos virtuales con sufijo, pero el sufijo no está establecido + + Using virtual files with suffix, but suffix is not set + Usando archivos virtuales con sufijo, pero el sufijo no está establecido - - + + OCC::SyncJournalDb - - Failed to connect database. - Fallo en la conexión a la base de datos. + + Failed to connect database. + Fallo en la conexión a la base de datos. - - + + OCC::SyncStatusSummary - - %1 of %2 - %1 de %2 + + %1 of %2 + %1 de %2 + + + + %1 of %2 · %3 left + %1 de %2 · quedan %3 - - %1 of %2 · %3 left - %1 de %2 · quedan %3 + + + Offline + No conectado - - Offline - No conectado + + + + All synced! + ¡Todo está sincronizado! - - Preparing sync - Preparando sincronización + + Preparing sync + Preparando sincronización - - See below for errors - Comprueba abajo los errores + + See below for errors + Comprueba abajo los errores - - See below for warnings - Comprueba abajo los avisos + + See below for warnings + Comprueba abajo los avisos - - Some files could not be synced! - ¡Algunos archivos no pueden ser sincronizados! + + Some files could not be synced! + ¡Algunos archivos no pueden ser sincronizados! - - Some files couldn't be synced! - ¡Algunos archivos no han podido ser sincronizados! + + Some files couldn't be synced! + ¡Algunos archivos no han podido ser sincronizados! - - Syncing file %1 of %2 - Sincronizando archivo %1 de %2 + + + Syncing + Sincronizando - - + + + Sync paused + Sincronización pausada + + + + Syncing file %1 of %2 + Sincronizando archivo %1 de %2 + + + OCC::Systray - - %1: %2 - %1: %2 + + %1: %2 + %1: %2 + + + + Add account + Agregar cuenta + + + + Download + Descargar + + + + + Pause sync + Pausar sincronización - - Add account - Agregar cuenta + + + Resume sync + Continuar sincronización - - Download - Descargar + + Settings + Configuración - - Exit %1 - Salir %1 + + Help + Ayuda - - Open main dialog - Abrir diálogo principal + + Exit %1 + Salir %1 - - Pause sync for all - Pausar sincronización para todo + + Open main dialog + Abrir diálogo principal - - Resume sync for all - Continuar sincronización a todos + + Pause sync for all + Pausar sincronización para todo - - + + + Resume sync for all + Continuar sincronización a todos + + + OCC::Theme - - <p>%1 desktop client %2</p> - <p>%1 cliente de escritorio %2</p> + + <p>%1 desktop client %2</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + <p>%1 cliente de escritorio %2</p> + + + <p>%1 Desktop Client</p> + <p>%1 Cliente de escritorio</p> - <p>%1 Desktop Client</p> - <p>%1 Cliente de escritorio</p> + + easy/0118 + Redirect URL Parameter + - - <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>%1 Cliente de Escritorio</p><p>Versión %1. Para más información, por favor pulsa <a href='%2'>aquí</a>.</p> + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + <p>%1 Cliente de Escritorio</p><p>Versión %1. Para más información, por favor pulsa <a href='%2'>aquí</a>.</p> - - <p><small>Using virtual files plugin: %1</small></p> - <p><small>Usando el plugin de archivos virtuales: %1</small></p> + + <p><small>Using virtual files plugin: %1</small></p> + <p><small>Usando el plugin de archivos virtuales: %1</small></p> - - <p>This release was supplied by %1.</p> - <p>Esta versión ha sido suministrada por %1.</p> + + <p>This release was supplied by %1.</p> + <p>Esta versión ha sido suministrada por %1.</p> - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>Versión %1. Para obtener más información, haga clic <a href='%2'> aquí </a>.</p> + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>Versión %1. Para obtener más información, haga clic <a href='%2'> aquí </a>.</p> - - + + OCC::UnifiedSearchResultsListModel - - Failed to fetch providers. - Fallo al recuperar los proveedores. + + Failed to fetch providers. + Fallo al recuperar los proveedores. - - Failed to fetch search providers for '%1'. Error: %2 - Fallo al recuperar los proveedores de búsqueda para '%1'. Error: %2 + + Failed to fetch search providers for '%1'. Error: %2 + Fallo al recuperar los proveedores de búsqueda para '%1'. Error: %2 - - Search has failed for '%1'. Error: %2 - La búsqueda ha fallado para '%1'. Error: %2 + + Search has failed for '%1'. Error: %2 + La búsqueda ha fallado para '%1'. Error: %2 - - Search has failed for '%2'. - La búsqueda ha fallado para '%2'. + + Search has failed for '%2'. + La búsqueda ha fallado para '%2'. - - + + OCC::UpdateE2eeFolderMetadataJob - - Failed to finalize item. - Fallo al finalizar ítem. + + Failed to unlock encrypted folder. + Fallo al desbloquear la carpeta cifrada. - - Failed to update folder metadata. - Fallo al actualizar los metadatos de la carpeta. + + Failed to finalize item. + Fallo al finalizar ítem. - - - OCC::UpdateE2eeFolderUsersMetadataJob - Could not add or remove a folder user %1, for folder %2 - + + Failed to update folder metadata. + Fallo al actualizar los metadatos de la carpeta. + + + OCC::UpdateE2eeFolderUsersMetadataJob - - Could not add or remove user %1 to access folder %2 - No se ha podido añadir o eliminar el usuario %1 para acceder a la carpeta %2 + + Could not add or remove user %1 to access folder %2 + No se ha podido añadir o eliminar el usuario %1 para acceder a la carpeta %2 - - Could not fetch public key for user %1 - No se pudo obtener la llave pública para el usuario %1 + + Could not fetch public key for user %1 + No se pudo obtener la llave pública para el usuario %1 - - Could not find root encrypted folder for folder %1 - No se ha podido encontrar la carpeta cifrada para la carpeta %1 + + Could not find root encrypted folder for folder %1 + No se ha podido encontrar la carpeta cifrada para la carpeta %1 - - Error updating metadata for a folder %1 - Error al actualizar los metadatos de una carpeta %1 + + + + + + + + + + Error updating metadata for a folder %1 + Error al actualizar los metadatos de una carpeta %1 - - Failed to unlock a folder. - Fallo al desbloquear una carpeta. + + Failed to unlock a folder. + Fallo al desbloquear una carpeta. - - + + OCC::User - - %1 notifications - %1 notificaciones + + %1 notifications + %1 notificaciones - - Resolve conflict - Resolver conflicto + + + Resolve conflict + Resolver conflicto - - Retry all uploads - Reintentar todas las subidas + + Retry all uploads + Reintentar todas las subidas - - + + OCC::UserModel - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>¿De verdad quieres eliminar la conexión con la cuenta <i>%1</i>?</p><p><b>Aviso:</b> Esto <b>no eliminará</b> ningún archivo.</p> + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>¿De verdad quieres eliminar la conexión con la cuenta <i>%1</i>?</p><p><b>Aviso:</b> Esto <b>no eliminará</b> ningún archivo.</p> + + + + Confirm Account Removal + Confirma la eliminación de cuenta - - Confirm Account Removal - Confirma la eliminación de cuenta + + Cancel + Cancelar - - Remove connection - Eliminar vinculación + + Remove connection + Eliminar vinculación - - + + OCC::UserStatusSelectorModel - - %1 days - %1 días + + %1 days + %1 días - - %1 hours - %1 horas + + %1 hours + %1 horas - - %1 minutes - %1 minutos + + %1 minutes + %1 minutos - - 1 day - 1 día + + 1 day + 1 día - - 1 hour - 1 hora + + + 1 hour + 1 hora - - 1 minute - 1 minuto + + 1 minute + 1 minuto - - 30 minutes - 30 minutos + + 30 minutes + 30 minutos - - 4 hours - 4 horas + + 4 hours + 4 horas - - Could not clear status message. Make sure you are connected to the server. - No se ha podido borrar el mensaje de estado. Asegúrese de que está conectado al servidor. + + Could not clear status message. Make sure you are connected to the server. + No se ha podido borrar el mensaje de estado. Asegúrese de que está conectado al servidor. - - Could not fetch predefined statuses. Make sure you are connected to the server. - No se han podido recuperar los estados predefinidos. Asegúrese de que está conectado al servidor. + + Could not fetch predefined statuses. Make sure you are connected to the server. + No se han podido recuperar los estados predefinidos. Asegúrese de que está conectado al servidor. - - Could not fetch status. Make sure you are connected to the server. - No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. + + Could not fetch status. Make sure you are connected to the server. + No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. - - Could not set status. Make sure you are connected to the server. - No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. + + Could not set status. Make sure you are connected to the server. + No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. - - Don't clear - No borrar + + + Don't clear + No borrar - - Emojis are not supported. Some status functionality may not work. - La función de emojis no es compatible. Es posible que algunas funciones de estado del usuario no funcionen. + + Emojis are not supported. Some status functionality may not work. + La función de emojis no es compatible. Es posible que algunas funciones de estado del usuario no funcionen. - - Less than a minute - Hace menos de un minuto + + Less than a minute + Hace menos de un minuto - - Status feature is not supported. You will not be able to set your status. - La función de estado no es compatible. No podrás establecer tu estado. + + Status feature is not supported. You will not be able to set your status. + La función de estado no es compatible. No podrás establecer tu estado. - - This week - Esta semana + + + This week + Esta semana - - Today - Hoy + + + Today + Hoy - - + + OCC::ValidateChecksumHeader - - The checksum header contained an unknown checksum type "%1" - El encabezado del checksum contenía un tipo de comprobación desconocido: "%1" + + The checksum header contained an unknown checksum type "%1" + El encabezado del checksum contenía un tipo de comprobación desconocido: "%1" - - The checksum header is malformed. - El encabezado de checksum está malformado. + + The checksum header is malformed. + El encabezado de checksum está malformado. - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - El archivo descargado no coincide con la suma de comprobación (checksum), se reanudará. "%1" != "%2" + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + El archivo descargado no coincide con la suma de comprobación (checksum), se reanudará. "%1" != "%2" - - + + OCC::Vfs - - The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - La característica de archivos virtuales necesita un sistema de archivos NTFS, %1 está usando %2 + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 + La característica de archivos virtuales necesita un sistema de archivos NTFS, %1 está usando %2 - - + + OCC::VfsDownloadErrorDialog - - %1 could not be downloaded. - %1 no pudo ser descargado. + + %1 could not be downloaded. + %1 no pudo ser descargado. - - > More details - > Más detalles + + > More details + > Más detalles - - could not be downloaded - no pudo ser descargado + + could not be downloaded + no pudo ser descargado - - Download error - Error de descarga + + Download error + Error de descarga - - Error downloading - Error al descargar + + Error downloading + Error al descargar - - Error downloading %1 - Error descargando %1 + + Error downloading %1 + Error descargando %1 - - More details - Más detalles + + More details + Más detalles - - - OCC::WebEnginePage + + + OCC::VfsSuffix - - Invalid certificate detected - Certificado inválido detectado + + + Error updating metadata due to invalid modification time + Error al actualizar los metadatos debido a una hora de modificación no válida + + + OCC::VfsXAttr - - The host "%1" provided an invalid certificate. Continue? - El host "%1" ha entregado un certificado no válido. ¿Continuar? + + + Error updating metadata due to invalid modification time + Error al actualizar los metadatos debido a una hora de modificación no válida - - - OCC::WebFlowCredentials + + + OCC::WebEnginePage - - <b>You have been logged out of your account %1 at %2. Please login again.</b> - <b>Se ha cerrado la sesión de su cuenta %1 en %2. Vuelva a iniciar sesión.</b> + + Invalid certificate detected + Certificado inválido detectado - Please login with the account: %1 - + + The host "%1" provided an invalid certificate. Continue? + El host "%1" ha entregado un certificado no válido. ¿Continuar? + + + OCC::WebFlowCredentials - You have been logged out of your account %1 at %2. Please login again. - + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + <b>Se ha cerrado la sesión de su cuenta %1 en %2. Vuelva a iniciar sesión.</b> - - + + OCC::WelcomePage - Easy-to-use web mail, calendaring & contacts - Correo web, calendario y contactos fáciles de usar + Easy-to-use web mail, calendaring & contacts + Correo web, calendario y contactos fáciles de usar - - Form - Formulario + + Form + Formulario - - Host your own server - Aloja tu propio servidor + + Host your own server + Aloja tu propio servidor - - Keep your data secure and under your control - Mantén tus datos seguros y bajo tu control + + Keep your data secure and under your control + Mantén tus datos seguros y bajo tu control - - Log in - Entrar + + Log in + Entrar - Screensharing, online meetings & web conferences - Compartir pantalla, reuniones en línea y conferencias web + Screensharing, online meetings & web conferences + Compartir pantalla, reuniones en línea y conferencias web - Secure collaboration & file exchange - Colaboración e intercambio de archivos seguros + Secure collaboration & file exchange + Colaboración e intercambio de archivos seguros - - Sign up with provider - Registrarse con un proveedor + + Sign up with provider + Registrarse con un proveedor - - + + OCC::ownCloudGui - - Account %1: %2 - Cuenta %1: %2 + + Account %1: %2 + Cuenta %1: %2 + + + + Account synchronization is disabled + La sincronización está deshabilitada + + + + Disconnected from %1 + Desconectado de %1 + + + + Disconnected from accounts: + Desconectado desde cuentas: + + + + Disconnected from some accounts + Desconectado desde varias cuentas + + + + Error during synchronization + Error durante la sincronización + + + + Folder %1: %2 + Archivo %1: %2 - - Account synchronization is disabled - La sincronización está deshabilitada + + No sync folders configured + No hay carpetas sincronizado configuradas - - Disconnected from %1 - Desconectado de %1 + + Please sign in + Por favor, inicie sesión - - Disconnected from accounts: - Desconectado desde cuentas: + + Disconnected + Desconectado - - Disconnected from some accounts - Desconectado desde varias cuentas + + Signed out + Cerrar sesión - - Error during synchronization - Error durante la sincronización + + + Synchronization is paused + La sincronización se ha detenido - - Folder %1: %2 - Archivo %1: %2 + + Checking for changes in remote "%1" + Buscando cambios en carpeta remota "%1" - - No sync folders configured - No hay carpetas sincronizado configuradas + + Checking for changes in local "%1" + Buscando cambios en carpeta local "%1" - - Please sign in - Por favor, inicie sesión + + Syncing %1 of %2 (%3 left) + Sincronizando %1 de %2 (quedan %3) - - Synchronization is paused - La sincronización se ha detenido + + Syncing %1 of %2 + Sincronizando %1 de %2 - - Syncing %1 of %2 (%3 left) - Sincronizando %1 de %2 (quedan %3) + + Syncing %1 (%2 left) + Sincronizando %1 (quedan %2) - - The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - El servidor en la cuenta %1 usa una versión no soportada %2. El uso de este cliente con versiones de servidor no soportadas no ha sido probado y es potencialmente peligroso. Continúa bajo tu propio riesgo. + + Syncing %1 + Sincronizando %1 - - There are no sync folders configured. - No hay carpetas configuradas para sincronizar. + + %1 (%2, %3) + %1 (%2, %3) - - Unresolved conflicts - Conflictos sin resolver + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + El servidor en la cuenta %1 usa una versión no soportada %2. El uso de este cliente con versiones de servidor no soportadas no ha sido probado y es potencialmente peligroso. Continúa bajo tu propio riesgo. - - Unsupported Server Version - Versión del servidor no soportada + + There are no sync folders configured. + No hay carpetas configuradas para sincronizar. - - Up to date - Actualizado + + Unresolved conflicts + Conflictos sin resolver - - + + + Unsupported Server Version + Versión del servidor no soportada + + + + Up to date + Actualizado + + + OCC::sesSnackBar - - Success - Éxito + + Error + Error + + + + Warning + Aviso + + + + Success + Éxito - - + + OwncloudAdvancedSetupPage - - &Local Folder - Carpeta &local + + &Local Folder + Carpeta &local - - <html><head/><body><p>If this box is checked, + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Si esta casilla está marcada, + <html><head/><body><p>Si esta casilla está marcada, el contenido existente en la carpeta local se borrará para iniciar una sincronización limpia desde el servidor. desde el servidor.</p><p>No marque esta casilla si el contenido local debe cargarse en la carpeta del servidor.</p></body></html> - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Si esta casilla está marcada, el contenido existente en la carpeta local se borrará para iniciar una sincronización limpia desde el servidor.</p><p>No marque esta casilla si el contenido local debe cargarse en la carpeta de los servidores.</p></body></html>. + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Si esta casilla está marcada, el contenido existente en la carpeta local se borrará para iniciar una sincronización limpia desde el servidor.</p><p>No marque esta casilla si el contenido local debe cargarse en la carpeta de los servidores.</p></body></html>. + + + + Ask before syncing external storages + Preguntar antes sincronizar almacenamientos externos + + + + Ask before syncing folders larger than + Preguntar antes sincronizar carpetas mayores de + + + + Choose different folder + Elegir una carpeta distinta - - Ask before syncing external storages - Preguntar antes sincronizar almacenamientos externos + + + MB + + Trailing part of "Ask confirmation before syncing folder larger than" + - - Ask before syncing folders larger than - Preguntar antes sincronizar carpetas mayores de + + Choose what to sync + Elija qué sincronizar - - Choose different folder - Elegir una carpeta distinta + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + + - - Erase local folder and start a clean sync - Borrar carpeta local e iniciar una sincronización limpia + + Erase local folder and start a clean sync + Borrar carpeta local e iniciar una sincronización limpia - - Keep local data - Mantener datos locales + + Keep local data + Mantener datos locales - - Local Folder - Carpeta Local + + Local Folder + Carpeta Local - - Server address - Nombre del servidor + + Server address + Nombre del servidor - - Sync Logo - Sync Logo + + Sync Logo + Sync Logo - - Synchronize everything from server - Sincronizar todo desde el servidor + + Synchronize everything from server + Sincronizar todo desde el servidor - Username - Usuario + + Username + Usuario - - + + OwncloudHttpCredsPage - - &Password - &Contraseña + + &Password + &Contraseña - - &Username - &Nombre de usuario + + &Username + &Nombre de usuario - - + + OwncloudOAuthCredsPage - Please switch to your browser to proceed. - Por favor, cambie a su navegador para continuar. + Please switch to your browser to proceed. + Por favor, cambie a su navegador para continuar. - Re-open Browser - Volver a abrir el navegador + Re-open Browser + Volver a abrir el navegador - - + + OwncloudSetupPage - - TextLabel - TextLabel + + + TextLabel + TextLabel + + + + Server address + Nombre del servidor - - This is the link to your %1 web interface when you open it in the browser. - Este es el link a su interfaz web %1 cuando la abra en el navegador. + + This is the link to your %1 web interface when you open it in the browser. + Este es el link a su interfaz web %1 cuando la abra en el navegador. - - + + QObject - - - %nd - - - - %y - + + 1m + 1min - - - %nh - - - - %nh - + + + Could not create debug archive in selected location! + No se ha podido crear el archivo de depuración en la ubicación seleccionada. + + + + Failed to create debug archive + Error al crear el archivo de depuración - - %nm - - - - %nm - + + %nd + delay in days after an activity + + + + - - 1m - 1min + + in the future + en el futuro + + + + %nh + delay in hours after an activity + + + + - - Could not create debug archive in selected location! - No se ha podido crear el archivo de depuración en la ubicación seleccionada. + + 1m + one minute after activity date and time + 1min + + + + %nm + delay in minutes after an activity + + + + - - Failed to create debug archive - Error al crear el archivo de depuración + + New folder + Nueva carpeta - - in the future - en el futuro + + now + ahora - - New folder - Nueva carpeta + + Paths beginning with '#' character are not supported in VFS mode. + Las rutas que empiecen con el carácter '#' no son compatibles con el modo VFS. - - now - ahora + + Some time ago + Hace tiempo - - Paths beginning with '#' character are not supported in VFS mode. - Las rutas que empiecen con el carácter '#' no son compatibles con el modo VFS. + + Synced %1 + Sincronizado %1 - - Some time ago - Hace tiempo + + The directory %1 cannot be part of your sync directory. Please choose another folder. + El directorio %1 no puede formar parte de su directorio de sincronización. Por favor, elija otra carpeta. - - Synced %1 - Sincronizado %1 + + You changed %1 + Has cambiado %1 - - The directory %1 cannot be part of your sync directory. Please choose another folder. - El directorio %1 no puede formar parte de su directorio de sincronización. Por favor, elija otra carpeta. + + You created %1 + Has creado %1 - - You changed %1 - Has cambiado %1 + + You deleted %1 + Has borrado %1 - - You created %1 - Has creado %1 + + You renamed %1 + Has renombrado %1 - - You deleted %1 - Has borrado %1 + + %1: %2 + this displays an error string (%2) for a file %1 + %1: %2 - - You renamed %1 - Has renombrado %1 + + Reply + Responder - - + + ResolveConflictsDialog - - %1 files in conflict - - %1 fichero en conflicto - %1 ficheros en conflicto - %1 ficheros en conflicto - + %1 files in conflict + + %1 fichero en conflicto + %1 ficheros en conflicto + - - All local versions - Todas las versiones locales + + All local versions + Todas las versiones locales - - All server versions - Todas las versiones del servidor + + All server versions + Todas las versiones del servidor - - Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - Escoja si quiere mantener la versión local, la versión del servidor, o ambas. Si escoge ambas, se le añadirá un número al nombre del archivo local. + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. + Escoja si quiere mantener la versión local, la versión del servidor, o ambas. Si escoge ambas, se le añadirá un número al nombre del archivo local. + + + + %1 files in conflict + indicate the number of conflicts to resolve + + %1 fichero en conflicto + %1 ficheros en conflicto + + + + + Resolve conflicts + Resolver conflictos - - Resolve conflicts - Resolver conflictos + + Cancel + Cancelar - - Solve sync conflicts - Resolver conflictos de sincronización + + Solve sync conflicts + Resolver conflictos de sincronización - - + + + SesErrorBox + + + Error + Error + + + SesTrayHeader - - Open local or group folders - Abrir carpetas locales de de grupo + + Open local or group folders + Abrir carpetas locales de de grupo - - Open Nextcloud in browser - Abrir HiDrive Next en el navegador + + Open Nextcloud in browser + Abrir HiDrive Next en el navegador - - Website - Sitio web + + Website + Sitio web - - + + ShareDelegate - - Copied! - ¡Copiado! + + Copied! + ¡Copiado! - - Copy share link location - Copiar dirección del recurso compartido + + Copy share link location + Copiar dirección del recurso compartido - - Create a new share link - Crear un nuevo enlace de recurso compartido + + Create a new share link + Crear un nuevo enlace de recurso compartido - - - ShareDetailsPage - - Add another link - Añadir otro enlace + + Share options + Opciones de compartir + + + ShareDetailsPage - - Allow resharing - Permitir que los otros compartan + + Add another link + Añadir otro enlace - - Allow upload and editing - Permitir la subida y edición + + Allow resharing + Permitir que los otros compartan - - An error occurred setting the share password. - Ocurrió un error al establecer la contraseña del recurso compartido + + + Allow upload and editing + Permitir la subida y edición - - Copy share link - Copiar enlace de recurso compartido + + An error occurred setting the share password. + Ocurrió un error al establecer la contraseña del recurso compartido - - Custom Permissions - Permisos personalizados + + Copy share link + Copiar enlace de recurso compartido - Edit share - + + Custom Permissions + Permisos personalizados - - Enter the note to recipient - Introducir la nota al destinatario + + Enter the note to recipient + Introducir la nota al destinatario - - File drop (upload only) - Soltar archivo (solo carga) + + File drop (upload only) + Soltar archivo (solo carga) - - Hide download - Ocultar descarga + + Hide download + Ocultar descarga - - Note to recipient - Nota para el destinatario + + Note to recipient + Nota para el destinatario - - Password protect - Proteger con contraseña + + Dismiss + Descartar - - Set expiration date - Fijar fecha de caducidad + + Password protect + Proteger con contraseña - Share label - + + Set expiration date + Fijar fecha de caducidad - - Share link copied! - ¡Enlace compartido copiado! + + Share link copied! + ¡Enlace compartido copiado! - - Unshare - Dejar de compartir + + Unshare + Dejar de compartir - - View only - Solo lectura + + View only + Solo lectura - - + + ShareView - - Password required for new share - Se requiere una contraseña para la nueva compartición + + Password required for new share + Se requiere una contraseña para la nueva compartición - - Share password - Contraseña de la compartición + + Share password + Contraseña de la compartición - - Sharing is disabled - Compartir está deshabilitado + + Sharing is disabled + Compartir está deshabilitado - - Sharing is disabled. - Compartir está deshabilitado. + + Sharing is disabled. + Compartir está deshabilitado. - - This item cannot be shared. - Este ítem no puede ser compartido. + + This item cannot be shared. + Este ítem no puede ser compartido. - - + + ShareeSearchField - - Search for users or groups… - Buscar usuarios o grupos... + + Search for users or groups… + Buscar usuarios o grupos... - - Sharing is not available for this folder - Compartir no está disponible para esta carpeta + + Sharing is not available for this folder + Compartir no está disponible para esta carpeta - - + + SyncStatus - - Sync now - Sincronizar ahora + + Sync now + Sincronizar ahora + + + + Resolve conflicts + Resolver conflictos - - + + TalkReplyTextField - - Reply to … - Responder a ... + + Reply to … + Responder a ... - - Send reply to chat message - Enviar respuesta al mensaje de chat + + Send reply to chat message + Enviar respuesta al mensaje de chat - - + + TestSetUserStatusDialog - - 7 days - 7 días + + + 1 day + 1 día + + + + + + + + Don't clear + No borrar + + + + + + + + 1 hour + 1 hora + + + + + + + 30 minutes + 30 minutos + + + + + + 4 hours + 4 horas + + + + + + Today + Hoy - - + + + + + This week + Esta semana + + + + Less than a minute + Hace menos de un minuto + + + + 1 minute + 1 minuto + + + + 7 days + 7 días + + + + Could not fetch predefined statuses. Make sure you are connected to the server. + No se han podido recuperar los estados predefinidos. Asegúrese de que está conectado al servidor. + + + + Could not fetch status. Make sure you are connected to the server. + No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. + + + + Status feature is not supported. You will not be able to set your status. + La función de estado no es compatible. No podrás establecer tu estado. + + + + Could not set status. Make sure you are connected to the server. + No se ha podido obtener el estado. Asegúrese de que está conectado al servidor. + + + + Emojis are not supported. Some status functionality may not work. + La función de emojis no es compatible. Es posible que algunas funciones de estado del usuario no funcionen. + + + + Could not clear status message. Make sure you are connected to the server. + No se ha podido borrar el mensaje de estado. Asegúrese de que está conectado al servidor. + + + TrayFoldersMenuButton - - Files - Archivos + + Files + Archivos - Group folder button - + + Open %1 in file explorer + Abrir "%1" en el explorador de archivos - - Open %1 in file explorer - Abrir "%1" en el explorador de archivos + + Open group folder "%1" + Abrir carpeta de grupo "%1" - - Open group folder "%1" - Abrir carpeta de grupo "%1" + + Open local folder + Abrir carpeta local - - Open local folder - Abrir carpeta local + + Open local or group folders + Abrir carpetas locales de de grupo - - Open local folder "%1" - Abrir carpeta local "%1" + + Connected + Conectado - - User group and local folders menu - Menú de usuario de carpetas de grupo o locales + + Disconnected + Desconectado - - + + + Open local folder "%1" + Abrir carpeta local "%1" + + + + User group and local folders menu + Menú de usuario de carpetas de grupo o locales + + + TrayWindowAccountMenu - - Account switcher and settings menu - Cambiador de cuentas y menú de configuración + + Account switcher and settings menu + Cambiador de cuentas y menú de configuración + + + + Current account + Cuenta actual + + + + Resume sync for all + Continuar sincronización a todos + + + + Pause sync for all + Pausar sincronización para todo - - Current account - Cuenta actual + + Add account + Agregar cuenta - - Current account avatar - Avatar del usuario actual + + Settings + Configuración - - Current account status is do not disturb - El estado actual del usuario es no molestar + + Current account avatar + Avatar del usuario actual - - Current account status is online - El estado actual del usuario es en línea + + Current account status is do not disturb + El estado actual del usuario es no molestar - - Exit - Salir + + Current account status is online + El estado actual del usuario es en línea - - + + + Exit + Salir + + + TrayWindowHeaderBar - - More apps - Más aplicaciones + + Website + Sitio web + + + + Open Nextcloud in browser + Abrir HiDrive Next en el navegador - - Open %1 in browser - Abrir %1 en el navegador + + Open local or group folders + Abrir carpetas locales de de grupo - - Open Nextcloud Talk in browser - Abrir Nextcloud Talk en el navegador + + More apps + Más aplicaciones - - + + + Open %1 in browser + Abrir %1 en el navegador + + + + Open Nextcloud Talk in browser + Abrir Nextcloud Talk en el navegador + + + UnifiedSearchInputContainer - - Search files, messages, events … - Buscando archivos, mensajes, eventos … + + Search files, messages, events … + Buscando archivos, mensajes, eventos … - - + + UnifiedSearchResultFetchMoreTrigger - - Load more results - Cargar más resultados + + Load more results + Cargar más resultados - - + + UnifiedSearchResultItemSkeleton - - Search result skeleton. - Árbol de resultados de la búsqueda + + Search result skeleton. + Árbol de resultados de la búsqueda - - + + + UnifiedSearchResultListItem + + + Load more results + Cargar más resultados + + + UnifiedSearchResultNothingFound - - No results for - No se encontraron resultados para + + No results for + No se encontraron resultados para - - + + UnifiedSearchResultSectionItem - - Search results section %1 - Sección %1 de resultados de búsqueda + + Search results section %1 + Sección %1 de resultados de búsqueda - - + + UserLine - - Account actions - Acciones de la cuenta + + Account actions + Acciones de la cuenta - - Remove account - Eliminar cuenta + + + Log out + Cerrar sesión - - Set status - Establecer estado + + + Log in + Entrar - - Switch to account - Cambiar a la cuenta + + Remove account + Eliminar cuenta - - + + + Set status + Establecer estado + + + + Switch to account + Cambiar a la cuenta + + + UserStatusSelector - - Appear offline - Mostrar como fuera de línea + + Appear offline + Mostrar como fuera de línea - - Away - Ausente + + Away + Ausente - - Clear status message - Borrar el mensaje de estado + + Cancel + Cancelar - - Clear status message after - Borrar el mensaje de estado después de + + Clear status message + Borrar el mensaje de estado - - Do not disturb - No molestar + + Clear status message after + Borrar el mensaje de estado después de - - Invisible - Invisible + + Do not disturb + No molestar - - Mute all notifications - Silenciar todas las notificaciones + + Invisible + Invisible - - Online - En línea + + Mute all notifications + Silenciar todas las notificaciones - - Online status - Estado en línea + + Online + En línea - - Set status message - Establecer un mensaje de estado + + Online status + Estado en línea - - Status message - Mensaje de estado + + Set status message + Establecer un mensaje de estado - - What is your status? - ¿Cuál es su estado? + + Status message + Mensaje de estado - - + + + What is your status? + ¿Cuál es su estado? + + + Utility - - %L1 B - %L1 B + + %L1 B + %L1 B - - %L1 GB - %L1 GB + + %L1 GB + %L1 GB - - %L1 KB - %L1 KB + + %L1 KB + %L1 KB - - %L1 MB - %L1 MB + + %L1 MB + %L1 MB - - %L1 TB - %L1 TB + + %L1 TB + %L1 TB - - %n day(s) - - - - - + + %n day(s) + + + + - - %n hour(s) - - - - - + + %n hour(s) + + + + - - %n minute(s) - - - - - + + %n minute(s) + + + + + + + + %1 %2 + %1 %2 - - %n month(s) - - - - - + + %n month(s) + + + + - - %n second(s) - - - - - + + %n second(s) + + + + - - %n year(s) - - - - - - - - + + %n year(s) + + + + + + + Window - Add new account - Añadir nueva cuenta + Add new account + Añadir nueva cuenta - - New activities - Nuevas actividades + + New activities + Nuevas actividades - - Nextcloud desktop main dialog - Cuadro de diálogo principal de escritorio de Nextcloud + + Nextcloud desktop main dialog + Cuadro de diálogo principal de escritorio de Nextcloud - - Unified search results list - Unificar la lista de resultados de la búsqueda + + Unified search results list + Unificar la lista de resultados de la búsqueda - - + + main.cpp - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - %1 requiere una bandeja del sistema de trabajo. Si estás ejecutando XFCE, por favor, siga <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">estas instrucciones</a>. Por otro lado, instale una bandeja del sistema de aplicaciones como "trayer" e inténtelo de nuevo. + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. + %1 requiere una bandeja del sistema de trabajo. Si estás ejecutando XFCE, por favor, siga <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">estas instrucciones</a>. Por otro lado, instale una bandeja del sistema de aplicaciones como "trayer" e inténtelo de nuevo. - - System Tray not available - La bandeja del sistema no está disponible + + System Tray not available + La bandeja del sistema no está disponible - - + + nextcloudTheme::aboutInfo() - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Creado desde la revisión Git <a href="%1">%2</a> en %3, %4 con Qt %5, %6</small></p> + + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Creado desde la revisión Git <a href="%1">%2</a> en %3, %4 con Qt %5, %6</small></p> - - + + progress - - Deleted - Eliminado + + Deleted + Eliminado + + + + Downloaded + Descargado + + + + downloading + descargando + + + + error + error - - Downloaded - Descargado + + Filesystem access error + Error de acceso al sistema de archivos - - downloading - descargando + + Ignored + Ignorado - - error - error + + Moved to %1 + Movido a %1 - - Filesystem access error - Error de acceso al sistema de archivos + + moving + moviendo - - Ignored - Ignorado + + Replaced by virtual file + Reemplazado por un archivo virtual - - Moved to %1 - Movido a %1 + + Server version downloaded, copied changed local file into case conflict conflict file + Se descargó la versión del servidor, se copió el archivo local cambiado hacia archivo con conflictos de capitalización - - moving - moviendo + + Server version downloaded, copied changed local file into conflict file + Versión del servidor descargada, se ha copiado el fichero local cambiado al fichero en conflicto - - Replaced by virtual file - Reemplazado por un archivo virtual + + + Unknown + Desconocido - - Server version downloaded, copied changed local file into case conflict conflict file - Se descargó la versión del servidor, se copió el archivo local cambiado hacia archivo con conflictos de capitalización + + Updated local metadata + Actualizados metadatos locales - - Server version downloaded, copied changed local file into conflict file - Versión del servidor descargada, se ha copiado el fichero local cambiado al fichero en conflicto + + Error + Error - - Unknown - Desconocido + + Updated local virtual files metadata + Actualizados los metadatos de los archivos virtuales locales - - Updated local metadata - Actualizados metadatos locales + + deleting + eliminando - - Updated local virtual files metadata - Actualizados los metadatos de los archivos virtuales locales + + ignoring + ignorando - - updating local metadata - actualizando metadatos locales + + updating local metadata + actualizando metadatos locales - - updating local virtual files metadata - Actualización de los metadatos de los archivos virtuales locales + + updating local virtual files metadata + Actualización de los metadatos de los archivos virtuales locales - - Uploaded - Subido + + Uploaded + Subido - - uploading - subiendo + + uploading + subiendo - - Virtual file created - Archivo virtual creado + + Virtual file created + Archivo virtual creado - - + + theme - - Aborting … - Cancelando ... + + Aborting … + Cancelando ... - - Preparing to sync - Preparando para sincronizar + + Preparing to sync + Preparando para sincronizar - - Setup Error - Error en la instalación + + Setup Error + Error en la instalación - - Status undefined - Estado indefinido + + Status undefined + Estado indefinido - - Sync Error - Error de sincronización. + + Sync Error + Error de sincronización. - - Sync is paused - La sincronización está en pausa. + + Sync is paused + La sincronización está en pausa. - - Sync is running - Sincronizado en proceso + + Sync is running + Sincronizado en proceso - - Sync Success - Sincronizado con éxito + + Sync Success + Sincronizado con éxito - - Sync Success, some files were ignored. - Sincronizado con éxito, algunos archivos han sido ignorados. + + Sync Success, some files were ignored. + Sincronizado con éxito, algunos archivos han sido ignorados. - - Waiting to start sync - Esperando para comenzar la sincronización + + Waiting to start sync + Esperando para comenzar la sincronización - - + + utility - - Always available locally - Siempre disponible localmente + + Always available locally + Siempre disponible localmente - - Available online only - Disponible solo en línea + + Available online only + Disponible solo en línea - - Could not open browser - No se ha podido abrir el navegador + + Could not open browser + No se ha podido abrir el navegador - - Could not open email client - No se ha podido abrir el cliente de correo electrónico + + Could not open email client + No se ha podido abrir el cliente de correo electrónico - - Currently available locally - Disponible localmente ahora + + Currently available locally + Disponible localmente ahora - - Free up local space - Liberar espacio local + + Free up local space + Liberar espacio local - - Make always available locally - Hacer que esté siempre localmente disponible + + Make always available locally + Hacer que esté siempre localmente disponible - - Some available online only - Algunos solo disponibles en línea + + Some available online only + Algunos solo disponibles en línea - - There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - Se ha producido un error al lanzar el navegador para ir a la URL: %1 , ¿puede ser que no tenga ningún navegador por defecto? + + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? + Se ha producido un error al lanzar el navegador para ir a la URL: %1 , ¿puede ser que no tenga ningún navegador por defecto? - - There was an error when launching the email client to create a new message. Maybe no default email client is configured? - Se ha producido un error al lanzar el cliente de correo electrónico para crear un nuevo mensaje. ¿Puede ser que no haya ningún cliente de correo electrónico configurado? + + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + Se ha producido un error al lanzar el cliente de correo electrónico para crear un nuevo mensaje. ¿Puede ser que no haya ningún cliente de correo electrónico configurado? - + diff --git a/translations/client_fr.ts b/translations/client_fr.ts index 41ab4f7deaddd..e03723a2cd555 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -1,6271 +1,7510 @@ - - - + + + + + - &Automatically check for Updates - &Vérifier automatiquement la présence de nouvelles mises à jour + &Automatically check for Updates + &Vérifier automatiquement la présence de nouvelles mises à jour - &Launch on System Startup - &Lancer au démarrage du système + &Launch on System Startup + &Lancer au démarrage du système - Copy link - Copier le lien + Copy link + Copier le lien - No Proxy - Aucun serveur proxy + No Proxy + Aucun serveur proxy - Remove All Files? - Retirer tous les fichiers ? + Remove All Files? + Retirer tous les fichiers ? - Show Call Notifications - Afficher les notifications des appels + Show Call Notifications + Afficher les notifications des appels - Show Server &Notifications - Afficher les &notifications serveur + Show Server &Notifications + Afficher les &notifications serveur - Show sync folders in &Explorer's navigation pane - Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers + Show sync folders in &Explorer's navigation pane + Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers - Use &Monochrome Icons - Utiliser les icônes &monochromes + Use &Monochrome Icons + Utiliser les icônes &monochromes - - + + ActivityItem - - In %1 - Dans %1 + + In %1 + Dans %1 - - Open %1 locally - Ouvrir %1 localement + + Open %1 locally + Ouvrir %1 localement - - + + ActivityItemContent - - Dismiss - Rejeter + + Dismiss + Rejeter - - Open file details - Ouvrir les détails du fichier + + Open file details + Ouvrir les détails du fichier - - + + ActivityList - - Activity list - Liste des activités + + Activity list + Liste des activités - - No activities yet - Pas encore d'activité + + No activities yet + Pas encore d'activité - - + + BasicComboBox - - Clear status message menu - Menu d'effacement du message de statut + + Clear status message menu + Menu d'effacement du message de statut - - + + CallNotificationDialog - - Answer Talk call notification - Répondre à la notification d'appel de Talk + + Answer Talk call notification + Répondre à la notification d'appel de Talk - - Decline - Décliner + + Decline + Décliner - - Decline Talk call notification - Décliner la notification d'appel de Talk + + Decline Talk call notification + Décliner la notification d'appel de Talk - - Talk notification caller avatar - Avatar de l'appelant de la notification Talk + + Talk notification caller avatar + Avatar de l'appelant de la notification Talk - - + + CloudProviderWrapper - - %1 (%2, %3) - %1 (%2, %3) + + %1 (%2, %3) + %1 (%2, %3) - - Checking for changes in "%1" - Vérification des modifications dans "%1" + + Checking for changes in "%1" + Vérification des modifications dans "%1" - - Help - Aide + + Help + Aide - - Log out - Se déconnecter + + Log out + Se déconnecter - - No recently changed files - Aucun fichier modifié récemment + + + No recently changed files + Aucun fichier modifié récemment - - Open website - Consulter le site web + + Open website + Consulter le site web - - Pause synchronization - Suspendre la synchronisation + + Pause synchronization + Suspendre la synchronisation - - Quit sync client - Quitter le client de synchro + + Quit sync client + Quitter le client de synchro - - Recently changed - Modifié récemment + + Recently changed + Modifié récemment - - Settings - Paramètres + + Settings + Paramètres - - Sync paused - Synchronisation en pause + + Sync paused + Synchronisation en pause - - Syncing - Synchronisation en cours + + Syncing + Synchronisation en cours - - Syncing %1 - Synchronisation de %1 + + Syncing %1 + Synchronisation de %1 - - Syncing %1 (%2 left) - Synchronisation de %1 (%2 restant) + + Syncing %1 (%2 left) + Synchronisation de %1 (%2 restant) - - Syncing %1 of %2 - Synchronisation de %1 sur %2 + + Syncing %1 of %2 + Synchronisation de %1 sur %2 - - Syncing %1 of %2 (%3 left) - Synchronisation de %1 sur %2 (%3 restant) + + Syncing %1 of %2 (%3 left) + Synchronisation de %1 sur %2 (%3 restant) - - + + ConflictDelegate - - Local version - Version locale + + Local version + Version locale - - Server version - Version du serveur + + Server version + Version du serveur - - + + CrashReporter - - Close - Fermer + + + + We cannot gather useful debug information on your system. + - - + + + + + + + Close + Fermer + + + + Ready to send debug information (<a href="%1">view backtrace</a>). + + + + + Gathering debug information... + + + + + Uploaded %L1 of %L2 KB. + + + + + Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. + + + + + Failed to send crash info. + + + + + Tomahawk Crash Reporter + + + + + <html><head/><body><p><br/></p></body></html> + + + + + Abort + + + + + Send this report + + + + + Don't send + + + + + You can disable sending crash reports in the configuration dialog. + + + + EditFileLocallyLoadingDialog - - Opening file for local editing - Ouverture du fichier pour édition locale + + Opening file for local editing + Ouverture du fichier pour édition locale - - + + EmojiPicker - - No recent emojis - Pas d'émojis récents + + No recent emojis + Pas d'émojis récents - - + + ErrorBox - - Error - Erreur + + Error + Erreur - - + + FakeHangingReply - - Operation canceled - Opération annulée + + Operation canceled + Opération annulée - - + + FileDetailsPage - Sharing - Partage + Sharing + Partage - - + + + Dismiss + Rejeter + + + FileDetailsWindow - - File details of %1 · %2 - Détails du fichier de %1 · %2 + + File details of %1 · %2 + Détails du fichier de %1 · %2 - - + + FileProviderEvictionDialog - - Evict materialised files - Supprimer les fichiers matérialisés + + Evict materialised files + Supprimer les fichiers matérialisés - - Materialised items - Éléments matérialisés + + Materialised items + Éléments matérialisés - - Reload - Recharger + + Reload + Recharger - - + + FileProviderFastEnumerationSettings - - Enable fast sync - Activer la sync. rapide + + Enable fast sync + Activer la sync. rapide + + + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + - - Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - La synchronisation rapide va uniquement synchroniser les modifications des fichiers et des dossiers dans les dossiers qui ont été explorés. Ceci peut significativement augmenter la réactivité sur la configuration initiale des fichiers virtuelles. Cependant, cela va causer des téléchargements redondants de fichiers déplacés dans un dossier non exploré. + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + La synchronisation rapide va uniquement synchroniser les modifications des fichiers et des dossiers dans les dossiers qui ont été explorés. Ceci peut significativement augmenter la réactivité sur la configuration initiale des fichiers virtuelles. Cependant, cela va causer des téléchargements redondants de fichiers déplacés dans un dossier non exploré. - - + + FileProviderFileDelegate - - Delete - Supprimer + + Delete + Supprimer - - + + FileProviderSettings - - Advanced - Avancés + + Advanced + Avancés - - Create debug archive - Créer l'archive de débogage + + Create debug archive + Créer l'archive de débogage - - Enable virtual files - Activer les fichiers virtuels + + Enable virtual files + Activer les fichiers virtuels - - General settings - Paramètres généraux + + General settings + Paramètres généraux - - Signal file provider domain - Indiquer le domaine du fournisseur de fichiers + + Signal file provider domain + Indiquer le domaine du fournisseur de fichiers - - Virtual files settings - Paramètres des fichiers virtuels + + Virtual files settings + Paramètres des fichiers virtuels - - + + FileProviderStorageInfo - - %1 GB of %2 GB remote files synced - %1 Go sur %2 Go de fichiers distants synchronisés + + %1 GB of %2 GB remote files synced + %1 Go sur %2 Go de fichiers distants synchronisés - - Evict local copies... - Supprimer les copies locales + + Evict local copies... + Supprimer les copies locales - - Local storage use - Utilisation du stockage local + + Local storage use + Utilisation du stockage local - - + + FileProviderSyncStatus - - All synced! - Tout est synchronisé ! + + All synced! + Tout est synchronisé ! + + + + Syncing + Synchronisation en cours - - + + FileSystem - Could not make directories in trash - Impossible de créer des dossiers dans la corbeille + Could not make directories in trash + Impossible de créer des dossiers dans la corbeille - Could not move "%1" to "%2" - Impossible de déplacer "%1" vers "%2" + Could not move "%1" to "%2" + Impossible de déplacer "%1" vers "%2" - - Could not remove folder "%1" - Impossible de supprimer le dossier "%1" + + Could not remove folder "%1" + Impossible de supprimer le dossier "%1" - - Error removing "%1": %2 - Erreur lors de la suppression de "%1" : %2 + + Error removing "%1": %2 + Erreur lors de la suppression de "%1" : %2 - Moving to the trash is not implemented on this platform - Mettre à la corbeille n'est pas disponible sur cette plateforme + Moving to the trash is not implemented on this platform + Mettre à la corbeille n'est pas disponible sur cette plateforme - - + + Flow2AuthWidget - - An error occurred while connecting. Please try again. - Une erreur s'est produite pendant la connexion. Veuillez ré-essayer. + + An error occurred while connecting. Please try again. + Une erreur s'est produite pendant la connexion. Veuillez ré-essayer. - - Browser Authentication - Authentification avec le navigateur Internet + + Browser Authentication + Authentification avec le navigateur Internet - - Copy Link - Copier le lien + + Copy Link + Copier le lien - - Logo - Logo + + Logo + Logo - - Reopen Browser - Rouvrir le navigateur + + Reopen Browser + Rouvrir le navigateur - - Switch to your browser to connect your account - Basculez sur votre navigateur pour connecter votre compte + + Switch to your browser to connect your account + Basculez sur votre navigateur pour connecter votre compte - - + + FolderWizardSelectiveSync - - Add Folder Sync - Ajouter une synchronisation de dossiers + + Add Folder Sync + Ajouter une synchronisation de dossiers - - Step 3 of 3: Selektive Synchronisation - Étape 3 sur 3 : synchronisation sélective + + Step 3 of 3: Selektive Synchronisation + Étape 3 sur 3 : synchronisation sélective - - + + FolderWizardSourcePage - - &Choose - &Choisir + + Add Folder Sync + Ajouter une synchronisation de dossiers - &Choose … - &Sélectionner … + + &Choose + &Choisir - Pick a local folder on your computer to sync - Sélectionnez un dossier local de votre ordinateur à synchroniser + &Choose … + &Sélectionner … - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés. + Pick a local folder on your computer to sync + Sélectionnez un dossier local de votre ordinateur à synchroniser - - Step 1 of 3: Select local folder - Étape 1 sur 3 : sélectionner un dossier local + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés. - - + + + Step 1 of 3: Select local folder + Étape 1 sur 3 : sélectionner un dossier local + + + FolderWizardTargetPage - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. + + + + Create folder + Créer un dossier - - Create folder - Créer un dossier + + Folders + Dossiers - - Folders - Dossiers + + Add Folder Sync + Ajouter une synchronisation de dossiers - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - À présent, sélectionnez ou créez dans votre %1 un dossier cible dans lequel le contenu doit être importé et synchronisé. + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + À présent, sélectionnez ou créez dans votre %1 un dossier cible dans lequel le contenu doit être importé et synchronisé. - - Refresh - Rafraîchir + + Refresh + Rafraîchir - Select a remote destination folder - Veuillez sélectionner un dossier distant + Select a remote destination folder + Veuillez sélectionner un dossier distant - - Step 2 of 3: Directory in your %1 - Étape 2 sur 3 : répertoire dans votre %1 + + Step 2 of 3: Directory in your %1 + Étape 2 sur 3 : répertoire dans votre %1 - - + + + KMessageWidget + + + &Close + + + + + Close message + + + + OCC::AbstractNetworkJob - - Connection timed out - Délai de connexion dépassé + + Connection timed out + Délai de connexion dépassé - - Server replied "%1 %2" to "%3 %4" - Le serveur a répondu "%1 %2" à "%3 %4" + + Server replied "%1 %2" to "%3 %4" + Le serveur a répondu "%1 %2" à "%3 %4" - - Unknown error: network reply was deleted - Erreur inconnue : La réponse du réseau a été supprimée + + Unknown error: network reply was deleted + Erreur inconnue : La réponse du réseau a été supprimée - - + + OCC::Account - - File %1 is already locked by %2. - Le fichier %1 est déjà verrouillé par %2. + + File %1 is already locked by %2. + Le fichier %1 est déjà verrouillé par %2. - - Lock operation on %1 failed with error %2 - L'opération de verrouillage de %1 a échoué avec l'erreur %2 + + Lock operation on %1 failed with error %2 + L'opération de verrouillage de %1 a échoué avec l'erreur %2 - - Unlock operation on %1 failed with error %2 - L'opération de déverrouillage de %1 a échoué avec l'erreur %2 + + Unlock operation on %1 failed with error %2 + L'opération de déverrouillage de %1 a échoué avec l'erreur %2 - - + + OCC::AccountManager - - %1 accounts were detected from a legacy desktop client. + + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - %1 comptes ont été détectés à partir d'un ancien client de bureau. + %1 comptes ont été détectés à partir d'un ancien client de bureau. Doivent-ils être importés ? - - 1 account was detected from a legacy desktop client. + + 1 account was detected from a legacy desktop client. Should the account be imported? - 1 compte a été détecté à partir d'un ancien client de bureau. + 1 compte a été détecté à partir d'un ancien client de bureau. Le compte doit-il être importé ? - An existing configuration from a legacy desktop client was detected. + An existing configuration from a legacy desktop client was detected. Should an account import be attempted? - Un configuration existante du client d'origine a été détectée -Est-ce qu'une tentative d'importation du compte doit être lancée ? + Un configuration existante du client d'origine a été détectée +Est-ce qu'une tentative d'importation du compte doit être lancée ? - - Could not import accounts from legacy client configuration. - Impossible d'importer des comptes à partir de l'ancienne configuration client. + + Could not import accounts from legacy client configuration. + Impossible d'importer des comptes à partir de l'ancienne configuration client. - - Import - Importer + + Import + Importer - - Legacy import - Importation de l'héritage + + + Legacy import + Importation de l'héritage - - Skip - Ignorer + + Skip + Ignorer - Successfully imported account from legacy client: %1 - Importation réussie du compte de l'ancien client : %1 + Successfully imported account from legacy client: %1 + Importation réussie du compte de l'ancien client : %1 - - + + OCC::AccountSettings - - (experimental) - (expérimental) + + (experimental) + (expérimental) - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - %1 (%3%) utilisés sur %2. Certains dossiers, montés depuis le réseau ou partagés, peuvent avoir des limites différentes. + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + %1 (%3%) utilisés sur %2. Certains dossiers, montés depuis le réseau ou partagés, peuvent avoir des limites différentes. - - %1 as %2 - %1 avec le compte %2 + + %1 as %2 + %1 avec le compte %2 - - %1 in use - %1 utilisé(s) + + %1 in use + %1 utilisé(s) - - %1 of %2 in use - %1 utilisés sur %2 + + %1 of %2 in use + %1 utilisés sur %2 - - <p>Could not create local folder <i>%1</i>.</p> - <p>Impossible de créer le dossier local <i>%1</i>.</p> + + <p>Could not create local folder <i>%1</i>.</p> + <p>Impossible de créer le dossier local <i>%1</i>.</p> - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Voulez-vous vraiment arrêter de synchroniser le dossier <i>%1</i> ?</p><p><b>Note :</b> Aucun fichier ne sera supprimé.</p> + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Voulez-vous vraiment arrêter de synchroniser le dossier <i>%1</i> ?</p><p><b>Note :</b> Aucun fichier ne sera supprimé.</p> - - Apply - Appliquer + + Apply + Appliquer - - Apply manual changes - Appliquer les changements manuels + + Apply manual changes + Appliquer les changements manuels - - Availability - Disponibilités + + + Availability + Disponibilités - - Cancel - Annuler + + + + Cancel + Annuler - - Choose what to sync - Sélectionner le contenu à synchroniser + + Choose what to sync + Sélectionner le contenu à synchroniser - - Confirm Folder Sync Connection Removal - Confirmer le retrait de la synchronisation de dossier + + Confirm Folder Sync Connection Removal + Confirmer le retrait de la synchronisation de dossier - - Connected to %1. - Connecté au serveur %1. + + Connected to %1. + Connecté au serveur %1. - - Connected with <server> as <user> - Connecté au serveur <server> avec le compte <user> + + Connected with <server> as <user> + Connecté au serveur <server> avec le compte <user> - - Connecting to %1 … - Connexion à %1 ... + + Connecting to %1 … + Connexion à %1 ... - - Could not encrypt folder because the folder does not exist anymore - Impossible de chiffrer le dossier car il n'existe plus + + Could not encrypt folder because the folder does not exist anymore + Impossible de chiffrer le dossier car il n'existe plus - - Create new folder - Créer un nouveau dossier + + + Create new folder + Créer un nouveau dossier - - Currently there is no storage usage information available. - Actuellement aucune information d'utilisation de stockage n'est disponible. + + Currently there is no storage usage information available. + Actuellement aucune information d'utilisation de stockage n'est disponible. - - Disable encryption - Désactiver le chiffrement + + Disable encryption + Désactiver le chiffrement - - Disable end-to-end encryption - Désactiver le chiffrement de bout en bout + + Disable end-to-end encryption + Désactiver le chiffrement de bout en bout - - Disable end-to-end encryption for %1? - Désactiver le chiffrement de bout en bout pour %1 ? + + Disable end-to-end encryption for %1? + Désactiver le chiffrement de bout en bout pour %1 ? - - Disable support - Désactiver le support + + Disable support + Désactiver le support - - Disable virtual file support … - Désactiver la prise en charge du fichier virtuel… + + Disable virtual file support … + Désactiver la prise en charge du fichier virtuel… - - Disable virtual file support? - Désactiver le support des fichiers virtuels ? + + Disable virtual file support? + Désactiver le support des fichiers virtuels ? - - Display mnemonic - Afficher la phrase secrète + + Display mnemonic + Afficher la phrase secrète - - Do not encrypt folder - Ne pas chiffrer le dossier + + + Do not encrypt folder + Ne pas chiffrer le dossier - - Edit Ignored Files - Modifier les fichiers ignorés + + + Edit Ignored Files + Modifier les fichiers ignorés - - Enable virtual file support %1 … - Activer la prise en charge du fichier virtuel %1 … + + Enable virtual file support %1 … + Activer la prise en charge du fichier virtuel %1 … - - Encrypt - Chiffrer + + Encrypt + Chiffrer - - Encrypt folder - Chiffrer le dossier + + + Encrypt folder + Chiffrer le dossier - - Encryption failed - Le chiffrement a échoué + + Encryption failed + Le chiffrement a échoué - - End-to-end Encryption - Chiffrement de bout en bout + + End-to-end Encryption + Chiffrement de bout en bout - - End-to-end encryption has been enabled for this account - Le chiffrement de bout en bout a été activé sur ce compte + + End-to-end encryption has been enabled for this account + Le chiffrement de bout en bout a été activé sur ce compte - - End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - Le chiffrement de bout en bout a été activé sur ce compte avec un autre appareil.<br>Il peut être activé sur cet appareil en entrant votre phrase secrète.<br>Cela permettra la synchronisation des dossiers chiffrés existants. + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. + Le chiffrement de bout en bout a été activé sur ce compte avec un autre appareil.<br>Il peut être activé sur cet appareil en entrant votre phrase secrète.<br>Cela permettra la synchronisation des dossiers chiffrés existants. - - End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. Would you like to set up end-to-end encryption? - Le chiffrement de bout en bout n'est pas configuré sur cet appareil. Une fois qu'il sera configuré, vous serez en mesure de chiffrer ce dossier. + Le chiffrement de bout en bout n'est pas configuré sur cet appareil. Une fois qu'il sera configuré, vous serez en mesure de chiffrer ce dossier. Souhaitez-vous configurer le chiffrement de bout en bout ? - - End-to-end encryption mnemonic - Phrase secrète du chiffrement de bout en bout + + End-to-end encryption mnemonic + Phrase secrète du chiffrement de bout en bout - - End-to-end Encryption with Virtual Files - Chiffrement de bout en bout avec fichiers virtuels + + End-to-end Encryption with Virtual Files + Chiffrement de bout en bout avec fichiers virtuels - - Expand Memory - Augmenter la mémoire + + Expand Memory + Augmenter la mémoire - - Folder creation failed - Échec de la création du dossier + + Folder creation failed + Échec de la création du dossier - - Force sync now - Forcer la synchronisation maintenant + + Force sync now + Forcer la synchronisation maintenant - - https://wl.hidrive.com/easy/0057 - https://wl.hidrive.com/easy/0057 + + https://wl.hidrive.com/easy/0057 + https://wl.hidrive.com/easy/0057 - - No %1 connection configured. - Aucune connexion à %1 configurée + + No %1 connection configured. + Aucune connexion à %1 configurée - - No account configured. - Aucun compte configuré. + + No account configured. + Aucun compte configuré. - No connection to %1 at %2. - Aucune connexion au serveur %1 à l'adresse %2. + No connection to %1 at %2. + Aucune connexion au serveur %1 à l'adresse %2. - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - En attente d'autorisation du navigateur. <a href='%1'>Cliquer ici</a> pour recharger le navigateur. + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + En attente d'autorisation du navigateur. <a href='%1'>Cliquer ici</a> pour recharger le navigateur. - - Open folder - Ouvrir le dossier + + + Open folder + Ouvrir le dossier - - Pause sync - Mettre en pause la synchronisation + + Pause sync + Mettre en pause la synchronisation - - Please wait for the folder to sync before trying to encrypt it. - Merci d'attendre que le dossier soit synchronisé avant d'essayer de le chiffrer. + + Please wait for the folder to sync before trying to encrypt it. + Merci d'attendre que le dossier soit synchronisé avant d'essayer de le chiffrer. - - Remove folder sync connection - Retirer la connexion de synchronisation de dossier + + Remove folder sync connection + Retirer la connexion de synchronisation de dossier - - Remove Folder Sync Connection - Retirer la synchronisation de ce dossier + + Remove Folder Sync Connection + Retirer la synchronisation de ce dossier - - Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - Le retrait du chiffrage de bout en bout supprimera localement les fichiers chiffrés synchronisés.<br>Les fichiers chiffrés demeureront sur le serveur. + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. + Le retrait du chiffrage de bout en bout supprimera localement les fichiers chiffrés synchronisés.<br>Les fichiers chiffrés demeureront sur le serveur. - - Restart sync - Redémarrer la synchronisation + + Restart sync + Redémarrer la synchronisation - - Resume sync - Reprendre la synchronisation + + Resume sync + Reprendre la synchronisation - - Server %1 is currently being redirected, or your connection is behind a captive portal. - Le serveur %1 est actuellement redirigé ou votre connexion est derrière un portail captif. + + Server %1 is currently being redirected, or your connection is behind a captive portal. + Le serveur %1 est actuellement redirigé ou votre connexion est derrière un portail captif. - - Server %1 is currently in maintenance mode. - Le serveur %1 est en cours de maintenance. + + Server %1 is currently in maintenance mode. + Le serveur %1 est en cours de maintenance. - - Server %1 is temporarily unavailable. - Le serveur %1 est temporairement indisponible. + + Server %1 is temporarily unavailable. + Le serveur %1 est temporairement indisponible. - - Server configuration error: %1 at %2. - Erreur de configuration serveur : %1 à %2. + + Server configuration error: %1 at %2. + Erreur de configuration serveur : %1 à %2. - - Set up encryption - Configurer le chiffrement + + There are folders that were not synchronized because they are too big: + - - Signed out from %1. - Session sur %1 fermée. + + There are folders that were not synchronized because they are external storages: + - - Standard file sync - Synchronisation de fichiers standards + + There are folders that were not synchronized because they are too big or external storages: + - - Storage space %1% occupied - Espace de stockage %1% occupé + + Set up encryption + Configurer le chiffrement - - Storage space: … - Espace de stockage : ... + + Signed out from %1. + Session sur %1 fermée. - - Sync Running - Synchronisation en cours + + Standard file sync + Synchronisation de fichiers standards - - Synchronize all - Tout synchroniser + + Storage space %1% occupied + Espace de stockage %1% occupé - - Synchronize none - Ne rien synchroniser + + + Storage space: … + Espace de stockage : ... - - The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - Le dossier a un défaut de synchronisation mineur. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. + + Sync Running + Synchronisation en cours - - The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - Le dossier a une erreur de synchronisation. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. + + Synchronize all + Tout synchroniser - - The server version %1 is unsupported! Proceed at your own risk. - La version %1 du serveur n'est pas maintenue ! + + Synchronize none + Ne rien synchroniser + + + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully + Le dossier a un défaut de synchronisation mineur. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. + + + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully + Le dossier a une erreur de synchronisation. Le chiffrement de ce dossier sera possible quand la synchronisation aura réussi. + + + + The server version %1 is unsupported! Proceed at your own risk. + La version %1 du serveur n'est pas maintenue ! Vous prenez vos propres risques. - - The syncing operation is running.<br/>Do you want to terminate it? - La synchronisation est en cours.<br/>Voulez-vous l'arrêter ? + + The syncing operation is running.<br/>Do you want to terminate it? + La synchronisation est en cours.<br/>Voulez-vous l'arrêter ? - - There are folders that have grown in size beyond %1MB: %2 - Il y a des dossiers qui ont augmenté de taille au-delà de %1MB: %2 + + There are folders that have grown in size beyond %1MB: %2 + Il y a des dossiers qui ont augmenté de taille au-delà de %1MB: %2 - - There are folders that were not synchronized because they are external storages: - Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe : + There are folders that were not synchronized because they are external storages: + Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe : - - There are folders that were not synchronized because they are too big or external storages: - Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe ou qu'ils sont de taille trop importante : + There are folders that were not synchronized because they are too big or external storages: + Certains dossiers n'ont pas été synchronisés parce qu'ils sont localisés sur un stockage externe ou qu'ils sont de taille trop importante : - - There are folders that were not synchronized because they are too big: - Certains dossiers n'ont pas été synchronisés parce qu'ils sont de taille trop importante : + There are folders that were not synchronized because they are too big: + Certains dossiers n'ont pas été synchronisés parce qu'ils sont de taille trop importante : - - This account supports end-to-end encryption - Ce compte prend en charge le chiffrement de bout en bout. + + This account supports end-to-end encryption + Ce compte prend en charge le chiffrement de bout en bout. - - This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. The only advantage of disabling virtual file support is that the selective sync feature will become available again. This action will abort any currently running synchronization. - Cette action désactivera la prise en charge du fichier virtuel. Par conséquent, les contenus des dossiers habituellement marqués comme "disponibles en ligne seulement" seront téléchargés. + Cette action désactivera la prise en charge du fichier virtuel. Par conséquent, les contenus des dossiers habituellement marqués comme "disponibles en ligne seulement" seront téléchargés. Le seul avantage de désactiver la prise en charge du fichier virtuel est que les fonctionnalités de synchronisation sélective seront de nouveau disponibles. -Cette action entraînera l'interruption de toute synchronisation en cours. +Cette action entraînera l'interruption de toute synchronisation en cours. - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - Cela va chiffrer votre dossier et tous les fichiers qu'il contient. Ces fichiers ne seront plus accessibles sans votre clé de chiffrement mnémonique. -<b>Ce processus n'est pas réversible. Êtes-vous sûr de vouloir le faire ?</b> + Cela va chiffrer votre dossier et tous les fichiers qu'il contient. Ces fichiers ne seront plus accessibles sans votre clé de chiffrement mnémonique. +<b>Ce processus n'est pas réversible. Êtes-vous sûr de vouloir le faire ?</b> - - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - Cette opération cryptera votre dossier et tous les fichiers qu'il contient. Ces fichiers ne seront plus accessibles sans votre clé mnémonique de cryptage. -<b>Ce processus n'est pas réversible. Êtes-vous sûr de vouloir continuer ? + Cette opération cryptera votre dossier et tous les fichiers qu'il contient. Ces fichiers ne seront plus accessibles sans votre clé mnémonique de cryptage. +<b>Ce processus n'est pas réversible. Êtes-vous sûr de vouloir continuer ? - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - Pour protéger votre identité cryptographique, nous la chiffrons avec une phrase secrète de 12 mots du dictionnaire. Veuillez la noter et la garder en sécurité. Elle sera nécessaire pour ajouter d’autres appareils à votre compte (comme votre smartphone ou votre ordinateur portable). + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + Pour protéger votre identité cryptographique, nous la chiffrons avec une phrase secrète de 12 mots du dictionnaire. Veuillez la noter et la garder en sécurité. Elle sera nécessaire pour ajouter d’autres appareils à votre compte (comme votre smartphone ou votre ordinateur portable). - - Unable to connect to %1. - Impossible de se connecter à %1. + + Unable to connect to %1. + Impossible de se connecter à %1. - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - Les dossiers décochés seront <b>supprimés</b> de votre système de fichiers local et ne seront plus synchronisés sur cet ordinateur + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + Les dossiers décochés seront <b>supprimés</b> de votre système de fichiers local et ne seront plus synchronisés sur cet ordinateur - - Virtual file sync - Synchronisation de fichiers virtuels + + Virtual file sync + Synchronisation de fichiers virtuels - - Warning - Attention + + Warning + Attention - - You cannot encrypt a folder with contents, please remove the files. + + You cannot encrypt a folder with contents, please remove the files. Wait for the new sync, then encrypt it. - Vous ne pouvez pas chiffrer un dossier avec son contenu, veuillez enlever les fichiers. Attendez une nouvelle synchronisation puis chiffrez le dossier. + Vous ne pouvez pas chiffrer un dossier avec son contenu, veuillez enlever les fichiers. Attendez une nouvelle synchronisation puis chiffrez le dossier. - - You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - Il semble que la fonctionnalité des Fichiers Virtuels soit activée sur ce dossier. Pour l'instant, il n'est pas possible de télécharger implicitement des fichiers virtuels qui sont chiffrés de bout en bout. Pour bénéficier d'une expérience optimale avec les fichiers virtuels et le chiffrement de bout en bout, assurez-vous que le dossier chiffré soit marqué par l'option "Toujours rendre disponible localement". + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". + Il semble que la fonctionnalité des Fichiers Virtuels soit activée sur ce dossier. Pour l'instant, il n'est pas possible de télécharger implicitement des fichiers virtuels qui sont chiffrés de bout en bout. Pour bénéficier d'une expérience optimale avec les fichiers virtuels et le chiffrement de bout en bout, assurez-vous que le dossier chiffré soit marqué par l'option "Toujours rendre disponible localement". - - + + OCC::AccountSetupFromCommandLineJob - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Accès refusé par le serveur. Pour vérifier que vous disposez d'un accès approprié, <a href="%1">cliquez ici</a> pour accéder au service avec votre navigateur Web. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Accès refusé par le serveur. Pour vérifier que vous disposez d'un accès approprié, <a href="%1">cliquez ici</a> pour accéder au service avec votre navigateur Web. - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - La requête authentifiée au serveur a été redirigée vers « %1 ». L'URL est mauvaise, le serveur est mal configuré. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + La requête authentifiée au serveur a été redirigée vers « %1 ». L'URL est mauvaise, le serveur est mal configuré. - - There was an invalid response to an authenticated WebDAV request - Réponse invalide reçue suite à une requête WebDav authentifiée. + + There was an invalid response to an authenticated WebDAV request + Réponse invalide reçue suite à une requête WebDav authentifiée. - - + + OCC::AccountState - - Asking Credentials - informations d'identification demandées + + Asking Credentials + informations d'identification demandées - - Configuration error - Erreur de configuration + + Configuration error + Erreur de configuration - - Connected - Connecté + + Connected + Connecté - - Disconnected - Déconnecté + + Disconnected + Déconnecté - - Maintenance mode - mode maintenance + + Maintenance mode + mode maintenance - - Network error - Erreur réseau + + Network error + Erreur réseau - - Redirect detected - Redirection détectée + + Redirect detected + Redirection détectée - - Service unavailable - Service indisponible + + Service unavailable + Service indisponible - - Signed out - Session fermée + + Signed out + Session fermée - - Unknown account state - État du compte inconnu + + Unknown account state + État du compte inconnu - - + + OCC::ActivityListModel - - Fetching activities … - Récupération des activités... + + Fetching activities … + Récupération des activités... - - Files from the ignore list as well as symbolic links are not synced. - Les fichiers présents dans la liste d'exclusion ainsi que les liens symboliques ne sont pas synchronisés. + + Files from the ignore list as well as symbolic links are not synced. + Les fichiers présents dans la liste d'exclusion ainsi que les liens symboliques ne sont pas synchronisés. - - For more activities please open the Activity app. - Pour plus d'activités veuillez lancer l'application Activité. + + For more activities please open the Activity app. + Pour plus d'activités veuillez lancer l'application Activité. - - Network error occurred: client will retry syncing. - Une erreur de réseau est survenue : le client va réessayer la synchronisation. + + Network error occurred: client will retry syncing. + Une erreur de réseau est survenue : le client va réessayer la synchronisation. - - + + OCC::AddCertificateDialog - - An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - Un paquet pkcs12 chiffré est vivement recommandé vu qu'une copie sera stockée dans le fichier de configuration. + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. + Un paquet pkcs12 chiffré est vivement recommandé vu qu'une copie sera stockée dans le fichier de configuration. - - Browse … - Parcourir … + + Browse … + Parcourir … - - Certificate & Key (pkcs12): - Certificat & clé (pkcs12) : + + Certificate & Key (pkcs12): + Certificat & clé (pkcs12) : - - Certificate files (*.p12 *.pfx) - Fichiers de certificats (*.p12 *.pfx) + + Certificate files (*.p12 *.pfx) + Fichiers de certificats (*.p12 *.pfx) - - Certificate password: - Mot de passe du certificat : + + Certificate password: + Mot de passe du certificat : - - Select a certificate - Sélectionner un certificat + + Select a certificate + Sélectionner un certificat - - SSL client certificate authentication - Authentification par certificat SSL client + + SSL client certificate authentication + Authentification par certificat SSL client - - This server probably requires a SSL client certificate. - Ce serveur requiert probablement un certificat SSL client. + + This server probably requires a SSL client certificate. + Ce serveur requiert probablement un certificat SSL client. - - + + OCC::Application - - %1 accounts - %1 comptes + %1 accounts + %1 comptes + + + %1 folders + %1 dossiers + + + + 1 account + 1 compte + + + + 1 folder + 1 dossier + + + + Continue + Continuer + + + + newer + newer software version + ultérieures - - %1 folders - %1 dossiers + + older + older software version + antérieures - - 1 account - 1 compte + + deleting + supprimés - - 1 folder - 1 dossier + + %1 accounts + number of accounts imported + %1 comptes - - Continue - Continuer + + %1 folders + number of folders imported + %1 dossiers - - deleting - supprimés + + Legacy import + Importation de l'héritage - - Error accessing the configuration file - Erreur lors de l'accès au fichier de configuration + + Imported %1 and %2 from a legacy desktop client. +%3 + number of accounts and folders imported. list of users. + Import de %1 et %2 à partir d'un ancien client de bureau. +%3 + + + + Error accessing the configuration file + Erreur lors de l'accès au fichier de configuration - - ignoring - ignorés + + ignoring + ignorés - - Imported %1 and %2 from a legacy desktop client. + Imported %1 and %2 from a legacy desktop client. %3 - Import de %1 et %2 à partir d'un ancien client de bureau. + Import de %1 et %2 à partir d'un ancien client de bureau. %3 - - newer - ultérieures + newer + ultérieures - - older - antérieures + older + antérieures - - Quit - Quitter + + Quit + Quitter - - Quit %1 - Quitter %1 + + Quit %1 + Quitter %1 - - Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - Des paramètres ont été configurés dans des versions %1 de ce client et utilisent des fonctionnalités non disponibles dans la version actuelle. <br><br>Continuer impliquera que <b>ces paramètres seront %2</b>.<br><br> Le fichier de configuration actuel a été sauvegardé dans <i>%3</i>. + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. + Des paramètres ont été configurés dans des versions %1 de ce client et utilisent des fonctionnalités non disponibles dans la version actuelle. <br><br>Continuer impliquera que <b>ces paramètres seront %2</b>.<br><br> Le fichier de configuration actuel a été sauvegardé dans <i>%3</i>. - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - Une erreur est survenue lors de l'accès au fichier de configuration à %1. Merci de vérifier que le fichier est accessible du compte système. + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + Une erreur est survenue lors de l'accès au fichier de configuration à %1. Merci de vérifier que le fichier est accessible du compte système. - - + + OCC::AuthenticationDialog - - &Password: - &Password: + + &Password: + &Password: - - &Username: - &Username: + + &Username: + &Username: - - Authentication Required - Authentification requise + + Authentication Required + Authentification requise - - Enter username and password for "%1" at %2. - Saisir le nom d’utilisateur et le mot de passe pour « %1 » sur %2. + + Enter username and password for "%1" at %2. + Saisir le nom d’utilisateur et le mot de passe pour « %1 » sur %2. - - + + OCC::BasePropagateRemoteDeleteEncrypted - "%1 Failed to unlock encrypted folder %2". - "%1 Impossible de déverrouiller le dossier chiffré %2". + + "%1 Failed to unlock encrypted folder %2". + "%1 Impossible de déverrouiller le dossier chiffré %2". - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". - - + + OCC::BulkPropagatorJob - - Error updating metadata: %1 - Erreur à la mise à jour des méta-données : %1 + + Error updating metadata: %1 + Erreur à la mise à jour des méta-données : %1 - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Le fichier %1 ne peut être téléversé parce qu'un autre fichier avec le même nom hormis la casse existe + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Le fichier %1 ne peut être téléversé parce qu'un autre fichier avec le même nom hormis la casse existe - - File %1 has invalid modification time. Do not upload to the server. - Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. + + File %1 has invalid modification time. Do not upload to the server. + Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. - - File %1 has invalid modified time. Do not upload to the server. - Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. + + File %1 has invalid modified time. Do not upload to the server. + Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. - - File Removed (start upload) %1 - Fichier supprimé (démarrer l'envoi) %1 + + File Removed (start upload) %1 + Fichier supprimé (démarrer l'envoi) %1 - - Local file changed during sync. - Fichier local modifié pendant la synchronisation. + + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. - - Local file changed during syncing. It will be resumed. - Fichier local modifié pendant la synchronisation. La synchronisation sera reprise. + + Local file changed during syncing. It will be resumed. + Fichier local modifié pendant la synchronisation. La synchronisation sera reprise. - - Network error: %1 - Erreur réseau : %1 + + Network error: %1 + Erreur réseau : %1 - - Restoration failed: %1 - Échec de la restauration : %1 + + Restoration failed: %1 + Échec de la restauration : %1 - - The file %1 is currently in use - Le fichier %1 est en cours d'utilisation + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - The local file was removed during sync. - Le fichier local a été supprimé pendant la synchronisation. + + The local file was removed during sync. + Le fichier local a été supprimé pendant la synchronisation. - - + + OCC::CaseClashConflictSolver - - Cannot rename file because a file with the same name already exists on the server. Please pick another name. - Impossible de renommer le fichier parce qu'un fichier portant le même nom existe déjà sur le serveur. Veuillez choisir un autre nom. + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + Impossible de renommer le fichier parce qu'un fichier portant le même nom existe déjà sur le serveur. Veuillez choisir un autre nom. - - Could not rename file. Please make sure you are connected to the server. - Impossible de renommer le fichier. Assurez-vous de bien être connecté au serveur. + + Could not rename file. Please make sure you are connected to the server. + Impossible de renommer le fichier. Assurez-vous de bien être connecté au serveur. - - Failed to fetch permissions with error %1 - Échec de récupération de permissions avec l'erreur %1 + + Failed to fetch permissions with error %1 + Échec de récupération de permissions avec l'erreur %1 - - Filename contains leading and trailing spaces. - Le nom de fichier contient des espaces de début et de fin. + + Filename contains leading and trailing spaces. + Le nom de fichier contient des espaces de début et de fin. - - Filename contains leading spaces. - Le nom de fichier contient des espaces de début. + + Filename contains leading spaces. + Le nom de fichier contient des espaces de début. - - Filename contains trailing spaces. - Le nom de fichier contient des espaces de fin. + + Filename contains trailing spaces. + Le nom de fichier contient des espaces de fin. - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Vous n'avez pas les permissions de renommer ce fichier. Veuillez demander à son auteur de le renommer. + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Vous n'avez pas les permissions de renommer ce fichier. Veuillez demander à son auteur de le renommer. - - + + OCC::CaseClashFilenameDialog - - %1 does not support equal file names with only letter casing differences. - %1 ne supporte pas les noms de fichiers identiques avec seulement des différences de casse de caractère. + + %1 does not support equal file names with only letter casing differences. + %1 ne supporte pas les noms de fichiers identiques avec seulement des différences de casse de caractère. + + + + + 0 byte + 0 octets + + + + Case Clash Conflict + Case Clash Conflict + + + + Case clashing file + Fichier avec conflit de casse - - 0 byte - 0 octets + + Existing file + Dossier existant - - Case Clash Conflict - Case Clash Conflict + + Error + Erreur - - Case clashing file - Fichier avec conflit de casse + + file A + fichier A - - Existing file - Dossier existant + + file B + fichier B - - file A - fichier A + + Filename contains illegal characters: %1 + Le nom du fichier contient des caractères illégaux : %1 - - file B - fichier B + + New filename + Nouveau nom de fichier - - Filename contains illegal characters: %1 - Le nom du fichier contient des caractères illégaux : %1 + + + Open clashing file + Ouvrir le fichier conflictuel - - New filename - Nouveau nom de fichier + + + Open existing file + Ouvrir un fichier existant - - Open clashing file - Ouvrir le fichier conflictuel + + Please enter a new name for the clashing file: + Veuillez saisir un nouveau nom pour le fichier conflictuel : - - Open existing file - Ouvrir un fichier existant + + Rename file + Renomer le fichier - - Please enter a new name for the clashing file: - Veuillez saisir un nouveau nom pour le fichier conflictuel : + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + Le fichier "%1" n'a pas pu être synchronisé à cause d'un conflit de casse avec un fichier existant dans ce système. - - Rename file - Renomer le fichier + + Filename contains leading and trailing spaces. + Le nom de fichier contient des espaces de début et de fin. - - The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - Le fichier "%1" n'a pas pu être synchronisé à cause d'un conflit de casse avec un fichier existant dans ce système. + + Filename contains leading spaces. + Le nom de fichier contient des espaces de début. - - The file could not be synced because it generates a case clash conflict with an existing file on this system. - Le fichier n'a pas pu être synchronisé car il génère un conflit de cas avec un fichier existant sur ce système. + + Filename contains trailing spaces. + Le nom de fichier contient des espaces de fin. - - today - aujourd'hui + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + Le fichier n'a pas pu être synchronisé car il génère un conflit de cas avec un fichier existant sur ce système. - - Use invalid name - Nom invalide + + + today + aujourd'hui - - + + + Use invalid name + Nom invalide + + + OCC::CleanupPollsJob - - Error writing metadata to the database - Erreur à l'écriture des métadonnées dans la base de données + + Error writing metadata to the database + Erreur à l'écriture des métadonnées dans la base de données - - + + OCC::ClientSideEncryption - - Enter E2E passphrase - Entrez la phrase secrète E2E + + Enter E2E passphrase + Entrez la phrase secrète E2E - - Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - Veuillez entrer votre phrase de passe de chiffrement de bout en bout :<br><br>Nom d'utilisateur : %2<br>Compte : %3<br> + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + Veuillez entrer votre phrase de passe de chiffrement de bout en bout :<br><br>Nom d'utilisateur : %2<br>Compte : %3<br> - - + + OCC::ConflictDialog - - <a href="%1">Open local version</a> - <a href="%1">Ouvrir la version locale</a> + + Local version + Version locale + + + + + today + aujourd'hui - - <a href="%1">Open server version</a> - <a href="%1">Ouvrir la version serveur</a> + + + 0 byte + 0 octets - - Click to open the file - Cliquez pour ouvrir le fichier + + <a href="%1">Open local version</a> + <a href="%1">Ouvrir la version locale</a> - - Conflicting versions of %1. - Versions en conflit de %1. + + Server version + Version du serveur - - Keep both versions - Conserver les deux versions + + <a href="%1">Open server version</a> + <a href="%1">Ouvrir la version serveur</a> - - Keep local version - Conserver la version locale + + + Click to open the file + Cliquez pour ouvrir le fichier - - Keep selected version - Conserver la version sélectionnée + + + Conflicting versions of %1. + Versions en conflit de %1. - - Keep server version - Conserver la version serveur + + Keep both versions + Conserver les deux versions - - Open local version - Ouvrir la version locale + + Keep local version + Conserver la version locale - - Open server version - Ouvrir la version serveur + + + Keep selected version + Conserver la version sélectionnée - - Sync Conflict - Conflit de synchronisation + + Keep server version + Conserver la version serveur - - Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. - Quelle version du fichier souhaitez-vous garder ?<br/>Si vous sélectionnez les deux versions, le fichier local aura un numéro ajouté à son nom. + + Open local version + Ouvrir la version locale - - + + + Open server version + Ouvrir la version serveur + + + + Sync Conflict + Conflit de synchronisation + + + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + Quelle version du fichier souhaitez-vous garder ?<br/>Si vous sélectionnez les deux versions, le fichier local aura un numéro ajouté à son nom. + + + OCC::ConflictSolver - - Confirm deletion - Confirmer la suppression + + Confirm deletion + Confirmer la suppression - - Do you want to delete the directory <i>%1</i> and all its contents permanently? - Voulez-vous supprimer le dossier <i>%1</i> et tout son contenu définitivement ? + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + Voulez-vous supprimer le dossier <i>%1</i> et tout son contenu définitivement ? - - Do you want to delete the file <i>%1</i> permanently? - Voulez-vous supprimer le fichier <i>%1</i> définitivement ? + + Do you want to delete the file <i>%1</i> permanently? + Voulez-vous supprimer le fichier <i>%1</i> définitivement ? - - Moving file failed: + + + Moving file failed: %1 - Déplacement du fichier échoué + Déplacement du fichier échoué %1 - - + + + + Error + Erreur + + + OCC::ConnectionValidator - - Authentication error: Either username or password are wrong. - Erreur d'authentification : nom d’utilisateur et/ou mot de passe incorrect(s). + + Authentication error: Either username or password are wrong. + Erreur d'authentification : nom d’utilisateur et/ou mot de passe incorrect(s). - - Connection issue - Problème de connexion + + Connection issue + Problème de connexion - - No Nextcloud account configured - Aucun compte Nextcloud n'est paramétré + + No Nextcloud account configured + Aucun compte Nextcloud n'est paramétré - - Please update to the latest server and restart the client. - Veuillez mettre à jour le serveur vers la dernière version et redémarrer le client. + + Please update to the latest server and restart the client. + Veuillez mettre à jour le serveur vers la dernière version et redémarrer le client. - - The configured server for this client is too old - Le serveur configuré pour ce client est trop vieux + + The configured server for this client is too old + Le serveur configuré pour ce client est trop vieux - - The provided credentials are not correct - Les informations d'identification fournies ne sont pas correctes + + The provided credentials are not correct + Les informations d'identification fournies ne sont pas correctes - - Timeout - Délai d'attente + + Timeout + Délai d'attente - - + + OCC::DiscoveryPhase - - Error while canceling deletion of %1 - Erreur lors de l'annulation de la suppression de %1 + + Error while canceling deletion of %1 + Erreur lors de l'annulation de la suppression de %1 - - Error while canceling deletion of a file - Erreur lors de l'annulation de la suppression d'un fichier + + Error while canceling deletion of a file + Erreur lors de l'annulation de la suppression d'un fichier - - + + OCC::DiscoverySingleDirectoryJob - - Encrypted metadata setup error: initial signature from server is empty. - Erreur de configuration des métadonnées cryptées : la signature initiale du serveur est vide. + + Encrypted metadata setup error: initial signature from server is empty. + Erreur de configuration des métadonnées cryptées : la signature initiale du serveur est vide. - - Encrypted metadata setup error! - Erreur de configuration des métadonnées chiffrées ! + + + Encrypted metadata setup error! + Erreur de configuration des métadonnées chiffrées ! - - Server error: PROPFIND reply is not XML formatted! - Erreur du serveur : La réponse PROPFIND n'est pas au format XML ! + + + Server error: PROPFIND reply is not XML formatted! + Erreur du serveur : La réponse PROPFIND n'est pas au format XML ! - - + + OCC::DiscoverySingleLocalDirectoryJob - - Directory not accessible on client, permission denied - Dossier non accessible au client, permission refusée + + Directory not accessible on client, permission denied + Dossier non accessible au client, permission refusée - - Directory not found: %1 - Dossier non trouvé : %1 + + Directory not found: %1 + Dossier non trouvé : %1 - - Error while opening directory %1 - Erreur à l’ouverture du dossier %1 + + Error while opening directory %1 + Erreur à l’ouverture du dossier %1 - - Error while reading directory %1 - Erreur de lecture du dossier %1 + + Error while reading directory %1 + Erreur de lecture du dossier %1 - - Filename encoding is not valid - L’encodage du nom de fichier n’est pas valide + + Filename encoding is not valid + L’encodage du nom de fichier n’est pas valide - - + + OCC::EditLocallyJob - - An error occurred during data retrieval. - Une erreur est survenue pendant le rapatriement des données. + + + + An error occurred during data retrieval. + Une erreur est survenue pendant le rapatriement des données. + + + + An error occurred during setup. + Une erreur est survenue pendant la configuration. - - An error occurred during setup. - Une erreur est survenue pendant la configuration. + + + An error occurred trying to synchronise the file to edit locally. + Une erreur s'est produite lors de la synchronisation du fichier à éditer localement. - - An error occurred trying to synchronise the file to edit locally. - Une erreur s'est produite lors de la synchronisation du fichier à éditer localement. + + An error occurred trying to verify the request to edit locally. + Une erreur est survenue pendant la vérification de la requête d'édition locale. - - An error occurred trying to verify the request to edit locally. - Une erreur est survenue pendant la vérification de la requête d'édition locale. + + + + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + Impossible de trouver le fichier pour l'édition locale. Assurez-vous qu'il n'est pas exclus par un filtre de synchronisation. - - Could not find a file for local editing. Make sure it is not excluded via selective sync. - Impossible de trouver le fichier pour l'édition locale. Assurez-vous qu'il n'est pas exclus par un filtre de synchronisation. + + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + Impossible de trouver le fichier pour l'édition locale. Assurez-vous que le chemin est valide et qu'il est synchronisé localement. - - Could not find a file for local editing. Make sure its path is valid and it is synced locally. - Impossible de trouver le fichier pour l'édition locale. Assurez-vous que le chemin est valide et qu'il est synchronisé localement. + + Could not find a remote file info for local editing. Make sure its path is valid. + Impossible de trouver une info fichier distante pour l'édition locale. Assurez-vous que son chemin est valide. - - Could not find a remote file info for local editing. Make sure its path is valid. - Impossible de trouver une info fichier distante pour l'édition locale. Assurez-vous que son chemin est valide. + + Could not find an account for local editing. + Impossible de trouver un compte pour l'édition locale. - - Could not find an account for local editing. - Impossible de trouver un compte pour l'édition locale. + + Could not open %1 + Impossible d'ouvrir %1 - - Could not open %1 - Impossible d'ouvrir %1 + + + + + + + + + Could not start editing locally. + Impossible de démarrer l'édition localement. - - Could not start editing locally. - Impossible de démarrer l'édition localement. + + + Could not validate the request to open a file from server. + Impossible de valider la requête pour ouvrir un fichier du serveur. - - Could not validate the request to open a file from server. - Impossible de valider la requête pour ouvrir un fichier du serveur. + + Server error: PROPFIND reply is not XML formatted! + Erreur du serveur : La réponse PROPFIND n'est pas au format XML ! - - File %1 already locked. - Fichier %1 déjà verrouillé. + + File %1 already locked. + Fichier %1 déjà verrouillé. - - File %1 could not be locked. - Impossible de verrouiller le fichier %1. + + File %1 could not be locked. + Impossible de verrouiller le fichier %1. - - File %1 now locked. - Fichier %1 désormais verrouillé. + + File %1 now locked. + Fichier %1 désormais verrouillé. - - Invalid file path was provided. - Un chemin d'accès au fichier invalide a été fourni. + + Invalid file path was provided. + Un chemin d'accès au fichier invalide a été fourni. - - Invalid local file path. - Chemin d'accès au fichier local non valide. + + Invalid local file path. + Chemin d'accès au fichier local non valide. - - Invalid token received. - Jeton invalide reçu. + + Invalid token received. + Jeton invalide reçu. - - Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - Le verrouillage durera %1 minutes. Vous pouvez également déverrouiller ce fichier manuellement une fois que vous avez terminé l'édition. + + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + Le verrouillage durera %1 minutes. Vous pouvez également déverrouiller ce fichier manuellement une fois que vous avez terminé l'édition. - - Please try again. - Merci de réessayer. + + + + + + + Please try again. + Merci de réessayer. - - + + OCC::EncryptFolderJob - - Could not generate the metadata for encryption, Unlocking the folder. + + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. - Impossible de générer les métadonnées pour le chiffrement, déverrouillage du dossier. + Impossible de générer les métadonnées pour le chiffrement, déverrouillage du dossier. Cela peut être un problème avec vos bibliothèques OpenSSL. - - + + OCC::EncryptedFolderMetadataHandler - - Error fetching encrypted folder ID. - Erreur dans la récupération de l’ID du dossier chiffré. + + Error fetching encrypted folder ID. + Erreur dans la récupération de l’ID du dossier chiffré. - - Error fetching metadata. - Erreur à la récupération des méta-données. + + + + + + + Error fetching metadata. + Erreur à la récupération des méta-données. - - Error locking folder. - Erreur de verrouillage du dossier. + + + + Error locking folder. + Erreur de verrouillage du dossier. - - Error parsing or decrypting metadata. - Erreur lors du parsing ou du déchiffrement des métadonnées. + + Error parsing or decrypting metadata. + Erreur lors du parsing ou du déchiffrement des métadonnées. - - Failed to upload metadata - Échec du téléversement des métadonnées + + Failed to upload metadata + Échec du téléversement des métadonnées - - + + OCC::FileDetails - - %1 day(s) ago - - - - Il y a 1 jour(s) - + + %1 second(s) ago + seconds elapsed since file last modified + + + + - - %1 hour(s) ago - - - - Il y a %1 heure(s) - + + %1 minute(s) ago + minutes elapsed since file last modified + + + + - - %1 minute(s) ago - - - - Il y a %1 minute(s) - + + %1 hour(s) ago + hours elapsed since file last modified + + + + - - %1 month(s) ago - - - - Il y a 1 mois - + + %1 day(s) ago + days elapsed since file last modified + + + + - - %1 second(s) ago - - - - Il y a %1 seconde(s) - + + %1 month(s) ago + months elapsed since file last modified + + + + - - %1 year(s) ago - - - - Il y a 1 année(s) - + + %1 year(s) ago + years elapsed since file last modified + + + + - - Locked by %1 - Expires in %2 minute(s) - - - - Verrouillé par %1 - Expire dans %2 minute(s) - - - - + + Locked by %1 - Expires in %2 minute(s) + remaining time before lock expires + + + + + + + OCC::Flow2Auth - - Could not parse the JSON returned from the server: <br><em>%1</em> - Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> + + + Could not parse the JSON returned from the server: <br><em>%1</em> + Impossible d'analyser le JSON renvoyé par le serveur : <br><em>%1</em> - - Error returned from the server: <em>%1</em> - Erreur renvoyée par le serveur : <em>%1</em> + + + Error returned from the server: <em>%1</em> + Erreur renvoyée par le serveur : <em>%1</em> - - The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - L'URL du sondage ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + L'URL du sondage ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. - - The reply from the server did not contain all expected fields - La réponse du serveur ne contient pas tous les champs attendus + + + The reply from the server did not contain all expected fields + La réponse du serveur ne contient pas tous les champs attendus - - The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - L'URL renvoyée par le serveur ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + L'URL renvoyée par le serveur ne commence pas par HTTPS alors que l'URL de connexion commence par HTTPS. La connexion ne sera pas possible car cela pourrait être un problème de sécurité. Veuillez contacter votre administrateur. - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> + + + There was an error accessing the "token" endpoint: <br><em>%1</em> + Une erreur est survenue en accédant au "jeton" : <br><em>%1</em> - - + + OCC::Flow2AuthWidget - - Link copied to clipboard. - Lien copié dans le presse-papier + + Link copied to clipboard. + Lien copié dans le presse-papier + + + + Open Browser + Ouvrir le navigateur + + + + Polling for authorization + En attente de l'autorisation + + + + + Error + Erreur - - Open Browser - Ouvrir le navigateur + + Starting authorization + Démarrage de l'autorisation - - Polling for authorization - En attente de l'autorisation + + Copy Link + Copier le lien - - Starting authorization - Démarrage de l'autorisation + + Switch to your browser to connect your account + Basculez sur votre navigateur pour connecter votre compte - - Unable to open the Browser, please copy the link to your Browser. - Impossible d'ouvrir le navigateur, veuillez copier le lien dans votre navigateur Web. + + Unable to open the Browser, please copy the link to your Browser. + Impossible d'ouvrir le navigateur, veuillez copier le lien dans votre navigateur Web. - - Waiting for authorization - En attente de l'autorisation + + Waiting for authorization + En attente de l'autorisation - - + + OCC::Folder - - %1 and %n other file(s) are currently locked. - - - - - + + %1 and %n other file(s) are currently locked. + + + + - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - - - - - + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + + + - - %1 and %n other file(s) have been added. - - - - - + + %1 and %n other file(s) have been added. + + + + - - %1 and %n other file(s) have been removed. - - - - - + + %1 and %n other file(s) have been removed. + + + + + + + + %1 has been removed. + %1 names a file. + %1 a été supprimé. + + + + %1 has been added. + %1 names a file. + %1 a été ajouté. - - %1 and %n other file(s) have been updated. - - - - - + + %1 and %n other file(s) have been updated. + + + + - - %1 could not be synced due to an error. See the log for details. - %1 n'a pu être synchronisé pour cause d'erreur. Consultez les logs pour les détails. + + %1 has been updated. + %1 names a file. + %1 a été mis à jour. - - %1 has a sync conflict. Please check the conflict file! - %1 a un problème de synchronisation. Merci de vérifier le fichier conflit ! + + %1 has been renamed to %2. + %1 and %2 name files. + %1 a été renommé en %2. + + + + %1 could not be synced due to an error. See the log for details. + %1 n'a pu être synchronisé pour cause d'erreur. Consultez les logs pour les détails. + + + + %1 has a sync conflict. Please check the conflict file! + %1 a un problème de synchronisation. Merci de vérifier le fichier conflit ! - - %1 has and %n other file(s) have sync conflicts. - - - - - + + %1 has and %n other file(s) have sync conflicts. + + + + - - %1 has been added. - %1 a été ajouté. + %1 has been added. + %1 a été ajouté. - - %1 has been moved to %2 and %n other file(s) have been moved. - - - - - + + %1 has been moved to %2 and %n other file(s) have been moved. + + + + - - %1 has been moved to %2. - %1 a été déplacé vers %2. + + %1 has been moved to %2. + %1 a été déplacé vers %2. - - %1 has been removed. - %1 a été supprimé. + %1 has been removed. + %1 a été supprimé. - - %1 has been renamed to %2 and %n other file(s) have been renamed. - - - - - + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + + + - - %1 has been renamed to %2. - %1 a été renommé en %2. + %1 has been renamed to %2. + %1 a été renommé en %2. - - %1 has been updated. - %1 a été mis à jour. + %1 has been updated. + %1 a été mis à jour. - - %1 is currently locked. - %1 est actuellement verrouillé. + + %1 is currently locked. + %1 est actuellement verrouillé. - - %1 is not readable. - %1 ne peut pas être lu. + + %1 is not readable. + %1 ne peut pas être lu. - - %1 should be a folder but is not. - %1 devrait être un dossier mais ne l'est pas. + + %1 should be a folder but is not. + %1 devrait être un dossier mais ne l'est pas. - - A folder from an external storage has been added. - Un nouveau dossier localisé sur un stockage externe a été ajouté. + A folder from an external storage has been added. + Un nouveau dossier localisé sur un stockage externe a été ajouté. - - A folder has surpassed the set folder size limit of %1MB: %2. + + A folder has surpassed the set folder size limit of %1MB: %2. %3 - Un dossier a dépassé la taille limite fixée de %1MB: %2. + Un dossier a dépassé la taille limite fixée de %1MB: %2. %3 - - A large number of files in the server have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. - Un grand nombre de fichiers ont été supprimés sur le serveur. + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + Un grand nombre de fichiers ont été supprimés sur le serveur. Veuillez confirmer si vous souhaitez procéder à ces suppressions. -Vous pouvez également restaurer tous les fichiers supprimés en les téléchargeant depuis le dossier '%1' vers le serveur. +Vous pouvez également restaurer tous les fichiers supprimés en les téléchargeant depuis le dossier '%1' vers le serveur. - - A large number of files in your local '%1' folder have been deleted. -Please confirm if you'd like to proceed with these deletions. + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. Alternatively, you can restore all deleted files by downloading them from the server. - Un grand nombre de fichiers de votre dossier local "%1" ont été supprimés. + Un grand nombre de fichiers de votre dossier local "%1" ont été supprimés. Veuillez confirmer si vous souhaitez procéder à ces suppressions. Vous pouvez également restaurer tous les fichiers supprimés en les téléchargeant depuis le serveur. - - A new folder larger than %1 MB has been added: %2. - Un nouveau dossier de taille supérieure à %1 Mo a été ajouté : %2. + A new folder larger than %1 MB has been added: %2. + Un nouveau dossier de taille supérieure à %1 Mo a été ajouté : %2. - All files in the local folder "%1" were deleted. + All files in the local folder "%1" were deleted. If you restore the files, they will be downloaded again from the server. - "Tous les fichiers du dossier local "%1" ont été supprimés. + "Tous les fichiers du dossier local "%1" ont été supprimés. -Si vous restaurez les fichiers, ils seront à nouveau téléchargés depuis le serveur. " +Si vous restaurez les fichiers, ils seront à nouveau téléchargés depuis le serveur. " - All files in the server folder "%1" were deleted. + All files in the server folder "%1" were deleted. If you restore the files, they will be uploaded again to the server. - "Tous les fichiers du dossier "%1" du serveur ont été supprimés. + "Tous les fichiers du dossier "%1" du serveur ont été supprimés. -Si vous restaurez les fichiers, ils seront à nouveau téléchargés sur le serveur." +Si vous restaurez les fichiers, ils seront à nouveau téléchargés sur le serveur." - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Tous les fichiers du dossier de synchronisation "%1" ont été supprimés sur le serveur. + Tous les fichiers du dossier de synchronisation "%1" ont été supprimés sur le serveur. Ces suppressions seront synchronisées avec votre dossier local, ce qui rendra les fichiers non disponibles à moins que vous ayez les droits de les restaurer. Si vous décidez de garder ces fichiers, ils seront resynchronisés avec le serveur si vous avez les droits pour le faire. Si vous décidez de supprimer ces fichiers, ils ne vous seront plus accessibles à moins que vous en soyez le propriétaire. - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Tous les fichiers du dossier de synchronisation "%1" ont été supprimés sur le serveur. -Ces suppressions seront synchronisées avec votre dossier de synchronisation local, ce qui rendra ces fichiers indisponibles à moins que vous n'ayez le droit de les restaurer. + Tous les fichiers du dossier de synchronisation "%1" ont été supprimés sur le serveur. +Ces suppressions seront synchronisées avec votre dossier de synchronisation local, ce qui rendra ces fichiers indisponibles à moins que vous n'ayez le droit de les restaurer. Si vous décidez de restaurer les fichiers, ils seront resynchronisés avec le serveur si vous en avez le droit. -Si vous décidez de supprimer les fichiers, ils seront indisponibles pour vous, à moins que vous n'en soyez le propriétaire. +Si vous décidez de supprimer les fichiers, ils seront indisponibles pour vous, à moins que vous n'en soyez le propriétaire. - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - Tous les fichiers contenus dans le dossier synchronisé "%1" ont été supprimés. Ces suppressions seront synchronisées avec votre serveur, rendant ces fichiers inaccessibles sauf s'ils sont restaurés ultérieurement. + Tous les fichiers contenus dans le dossier synchronisé "%1" ont été supprimés. Ces suppressions seront synchronisées avec votre serveur, rendant ces fichiers inaccessibles sauf s'ils sont restaurés ultérieurement. Êtes-vous sûr de vouloir synchroniser ces actions avec le serveur ? -S'il s'agissait d'un accident et que vous choisissiez de conserver vos fichiers, ils seront synchronisés à nouveau depuis le serveur. +S'il s'agissait d'un accident et que vous choisissiez de conserver vos fichiers, ils seront synchronisés à nouveau depuis le serveur. - - Changes in synchronized folders could not be tracked reliably. + + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). %1 - Les modifications apportées aux dossiers synchronisés ne peuvent pas être suivies de manière fiable. + Les modifications apportées aux dossiers synchronisés ne peuvent pas être suivies de manière fiable. -Cela signifie que le client de synchronisation ne va pas téléverser immédiatement les modifications locales, mais va à la place rechercher et téléverser les modifications locales qu'occasionnellement (toutes les deux heures par défaut). +Cela signifie que le client de synchronisation ne va pas téléverser immédiatement les modifications locales, mais va à la place rechercher et téléverser les modifications locales qu'occasionnellement (toutes les deux heures par défaut). %1 - - Could not read system exclude file - Impossible de lire le fichier d'exclusion du système + + Could not read system exclude file + Impossible de lire le fichier d'exclusion du système - Keep files - Conserver les fichiers + Keep files + Conserver les fichiers - - Keep syncing - Continuer la synchronisation + + Keep syncing + Continuer la synchronisation - - Local folder %1 does not exist. - Le dossier local %1 n'existe pas. + + Local folder %1 does not exist. + Le dossier local %1 n'existe pas. - - Please go in the settings to select it if you wish to download it. - Merci d'aller dans les Paramètres pour indiquer si vous souhaitez le télécharger. + + Please go in the settings to select it if you wish to download it. + Merci d'aller dans les Paramètres pour indiquer si vous souhaitez le télécharger. - Proceed to remove all files - Confirmer la suppression de tous les fichiers + Proceed to remove all files + Confirmer la suppression de tous les fichiers - - Proceed with Deletion - Procéder à la suppression + + Proceed with Deletion + Procéder à la suppression - Remove all files - Retirer tous les fichiers + Remove all files + Retirer tous les fichiers - - Remove all files? - Supprimer tous les fichiers ? + + Remove all files? + Supprimer tous les fichiers ? - Restore files - Restaurer les fichiers + Restore files + Restaurer les fichiers - - Restore Files from Server - Restaurer des fichiers à partir du serveur + + Restore Files from Server + Restaurer des fichiers à partir du serveur - - Restore Files to Server - Restaurer les fichiers sur le serveur + + Restore Files to Server + Restaurer les fichiers sur le serveur - - Stop syncing - Arrêter la synchronisation + + Stop syncing + Arrêter la synchronisation - - Sync Activity - Activité de synchronisation + + Sync Activity + Activité de synchronisation - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. - Le fichier %1 a été créé mais il était exclu de la synchronisation auparavant. Il ne sera pas synchronisé. + + A new folder larger than %1 MB has been added: %2. + + - - The folder %1 has surpassed the set folder size limit of %2MB. - Le dossier %1 a dépassé la taille limite fixée de %2MB. + + A folder from an external storage has been added. + + - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. - Le dossier %1 a été créé mais il était exclu de la synchronisation auparavant. Les données qu'il contient ne seront pas synchronisées. + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + Le fichier %1 a été créé mais il était exclu de la synchronisation auparavant. Il ne sera pas synchronisé. - - Virtual file download failed with code "%1", status "%2" and error message "%3" - Le téléchargement du fichier virtuel a échoué avec le code « %1 », état « %2 » et le message d'erreur « %3 » + + The folder %1 has surpassed the set folder size limit of %2MB. + Le dossier %1 a dépassé la taille limite fixée de %2MB. - - Would you like to stop syncing this folder? - Voulez vous arrêter la synchronisation de ce dossier ? + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + Le dossier %1 a été créé mais il était exclu de la synchronisation auparavant. Les données qu'il contient ne seront pas synchronisées. - - + + + Virtual file download failed with code "%1", status "%2" and error message "%3" + Le téléchargement du fichier virtuel a échoué avec le code « %1 », état « %2 » et le message d'erreur « %3 » + + + + Would you like to stop syncing this folder? + Voulez vous arrêter la synchronisation de ce dossier ? + + + OCC::FolderCreationDialog - - %1 Create new folder - %1 Créer un nouveau dossier + + %1 Create new folder + %1 Créer un nouveau dossier + + + + Could not create a folder! Check your write permissions. + Impossible de créer le dossier ! Veuillez vérifier vos permissions d’écriture. - - Could not create a folder! Check your write permissions. - Impossible de créer le dossier ! Veuillez vérifier vos permissions d’écriture. + + Error + Erreur - - Enter folder name - Saisissez le nom du dossier + + Create new folder + Créer un nouveau dossier - - Folder already exists - Le dossier existe déjà + + Enter folder name + Saisissez le nom du dossier - - + + + Folder already exists + Le dossier existe déjà + + + OCC::FolderMan - - (backup %1) - (sauvegarde %1) + (backup %1) + (sauvegarde %1) + + + (backup) + (sauvegarde) - - (backup) - (sauvegarde) + + %1 (Sync is paused) + %1 (Synchronisation en pause) - - %1 (Sync is paused) - %1 (Synchronisation en pause) + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + Un ancien fichier journal "%1" a été trouvé, mais ne peut être supprimé. Veuillez vous assurer qu’aucune application ne l'utilise en ce moment. - - An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. - Un ancien fichier journal "%1" a été trouvé, mais ne peut être supprimé. Veuillez vous assurer qu’aucune application ne l'utilise en ce moment. + + Could not reset folder state + Impossible de réinitialiser l'état du dossier - - Could not reset folder state - Impossible de réinitialiser l'état du dossier + + (backup) + - - Last sync was successful. - Synchronisation terminée avec succès + + (backup %1) + - - No valid folder selected! - Aucun dossier valable sélectionné ! + + Last sync was successful. + Synchronisation terminée avec succès - - Preparing for sync. - Préparation de la synchronisation. + + No valid folder selected! + Aucun dossier valable sélectionné ! - - Setup error. - Erreur de paramétrage. + + Preparing for sync. + Préparation de la synchronisation. - - Sync finished with unresolved conflicts. - Synchronisation terminée avec des conflits non résolus. + + Setup error. + Erreur de paramétrage. - - Sync is paused. - La synchronisation est en pause. + + Sync finished with unresolved conflicts. + Synchronisation terminée avec des conflits non résolus. - - Sync is running. - Synchronisation en cours + + Sync is paused. + La synchronisation est en pause. - - Sync request was cancelled. - La requête de synchronisation a été annulée. + + Sync is running. + Synchronisation en cours - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! - Le dossier local %1 contient un dossier déjà utilisé pour une synchronisation de dossiers. Veuillez en choisir un autre ! + + Sync request was cancelled. + La requête de synchronisation a été annulée. - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! - Le dossier local %1 se trouve dans un dossier déjà configuré pour une synchronisation de dossier. Veuillez en choisir un autre ! + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + Le dossier local %1 contient un dossier déjà utilisé pour une synchronisation de dossiers. Veuillez en choisir un autre ! - - The selected path does not exist! - Le chemin sélectionné n'existe pas ! + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + Le dossier local %1 se trouve dans un dossier déjà configuré pour une synchronisation de dossier. Veuillez en choisir un autre ! - - The selected path is not a folder! - Le chemin sélectionné n'est pas un dossier ! + + The selected path does not exist! + Le chemin sélectionné n'existe pas ! - - There is already a sync from the server to this local folder. Please pick another local folder! - Il y a déjà une synchronisation depuis le serveur vers ce dossier local. Merci de choisir un autre dossier local ! + + The selected path is not a folder! + Le chemin sélectionné n'est pas un dossier ! - - Undefined state. - Statut indéfini. + + There is already a sync from the server to this local folder. Please pick another local folder! + Il y a déjà une synchronisation depuis le serveur vers ce dossier local. Merci de choisir un autre dossier local ! - - Waiting to start syncing. - En attente de synchronisation. + + Undefined state. + Statut indéfini. - - You have no permission to write to the selected folder! - Vous n'avez pas la permission d'écrire dans le dossier sélectionné ! + + Waiting to start syncing. + En attente de synchronisation. - - + + + + You have no permission to write to the selected folder! + Vous n'avez pas la permission d'écrire dans le dossier sélectionné ! + + + OCC::FolderStatusDelegate - - Add live backup - Ajouter une sauvegarde en temps réel + Add live backup + Ajouter une sauvegarde en temps réel + + + + Add Folder Sync + Ajouter une synchronisation de dossiers - - File - Fichier + + File + Fichier - - Synchronize any other local folder with your %1 - Synchronisez n’importe quel autre dossier local avec votre %1 + + Synchronize any other local folder with your %1 + Synchronisez n’importe quel autre dossier local avec votre %1 - - + + OCC::FolderStatusModel - - , - , + , + , + + + + + %1 (%2) + %1 (%2) - - %1 (%2) - %1 (%2) + + %1 %2 + Example text: "uploading foobar.png" + %1 %2 - - %1 %2 - %1 %2 + + %1 %2 (%3 of %4) + Example text: "uploading foobar.png (2MB of 2MB)" + %1 %2 (%3 sur %4) - - %1 %2 (%3 of %4) - %1 %2 (%3 sur %4) + + %1 of %2, file %3 of %4 + Example text: "12 MB of 345 MB, file 6 of 7" + %1 sur %2, fichier %3 sur %4 - - %1 of %2, file %3 of %4 - %1 sur %2, fichier %3 sur %4 + + %5 left, %1 of %2, file %3 of %4 + %5 restantes, %1 sur %2, fichier %3 sur %4 - - %5 left, %1 of %2, file %3 of %4 - %5 restantes, %1 sur %2, fichier %3 sur %4 + + ↑ %1/s + ↑ %1/s - - ↑ %1/s - ↑ %1/s + + ↓ %1/s + ↓ %1/s - - ↓ %1/s - ↓ %1/s + + A few seconds left, %1 of %2, file %3 of %4 + Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" + Quelques secondes restantes, %1 de %2, fichier %3 parmi %4 - - A few seconds left, %1 of %2, file %3 of %4 - Quelques secondes restantes, %1 de %2, fichier %3 parmi %4 + + Checking for changes in local "%1" + Vérification des modifications dans "%1" local - - Checking for changes in local "%1" - Vérification des modifications dans "%1" local + + Checking for changes in remote "%1" + Vérification des modifications dans "%1" distant - - Checking for changes in remote "%1" - Vérification des modifications dans "%1" distant + + Click this button to add a folder to synchronize. + Cliquez ce bouton pour ajouter un dossier à synchroniser. - - Click this button to add a folder to synchronize. - Cliquez ce bouton pour ajouter un dossier à synchroniser. + + Could not decrypt! + Déchiffrage impossible ! - - Could not decrypt! - Déchiffrage impossible ! + + download %1/s + Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) + réception %1/s - - download %1/s - réception %1/s + + Error while loading the list of folders from the server. + Une erreur est survenue lors du chargement de la liste des dossiers depuis le serveur. - - Error while loading the list of folders from the server. - Une erreur est survenue lors du chargement de la liste des dossiers depuis le serveur. + + Fetching folder list from server … + Récupération de la liste des dossiers depuis le serveur... - - Fetching folder list from server … - Récupération de la liste des dossiers depuis le serveur... + + Signed out + Session fermée - - file %1 of %2 - fichier %1 sur %2 + + Syncing %1 + Example text: "Syncing 'foo.txt', 'bar.txt'" + Synchronisation de %1 - - Preparing to sync … - Préparation de la synchronisation ... + + + , + - - Reconciling changes - Rapprochement des modifications + + file %1 of %2 + fichier %1 sur %2 - - Synchronizing VirtualFiles with local folder - Synchronisation des fichiers virtuels avec le dossier local + + Preparing to sync … + Préparation de la synchronisation ... - - Synchronizing with local folder - Synchronisation avec le dossier local + + Reconciling changes + Rapprochement des modifications - - There are unresolved conflicts. Click for details. - Il y a des conflits non résolus. Cliquez pour plus de détails. + + Synchronizing VirtualFiles with local folder + Synchronisation des fichiers virtuels avec le dossier local - - upload %1/s - Envoi %1/s + + Synchronizing with local folder + Synchronisation avec le dossier local - - Virtual file support is enabled. - Support des fichiers virtuels activé. + + There are unresolved conflicts. Click for details. + Il y a des conflits non résolus. Cliquez pour plus de détails. - - Waiting … - En attente ... + + upload %1/s + Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) + Envoi %1/s + + + + Virtual file support is enabled. + Support des fichiers virtuels activé. + + + + Waiting … + En attente ... - - Waiting for %n other folder(s) … - - - - - + + Waiting for %n other folder(s) … + + + + - - You need to be connected to add a folder - Vous devez être connecté pour ajouter un dossier + + You need to be connected to add a folder + Vous devez être connecté pour ajouter un dossier - - + + OCC::FolderWatcher - - The watcher did not receive a test notification. - L'observateur n'a pas reçu de notification de test. + + The watcher did not receive a test notification. + L'observateur n'a pas reçu de notification de test. - - + + OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. - Ce problème survient généralement lorsque les points de surveillance inotify sont épuisés. Consultez la FAQ pour plus de détails. + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + Ce problème survient généralement lorsque les points de surveillance inotify sont épuisés. Consultez la FAQ pour plus de détails. - - + + OCC::FolderWizard - Add Folder Sync Connection - Ajouter une synchronisation de dossier + + Add Folder Sync Connection + Ajouter une synchronisation de dossier - - Add Sync Connection - Ajouter la synchronisation + + Add Sync Connection + Ajouter la synchronisation - - + + OCC::FolderWizardLocalPath - - Choose - Choisissez + + Choose + Choisissez + + + + Click to select a local folder to sync. + Cliquez pour choisir un dossier local à synchroniser. + + + + Enter the path to the local folder. + Entrez le chemin du dossier local. + + + + Select the source folder + Sélectionnez le dossier source - - Click to select a local folder to sync. - Cliquez pour choisir un dossier local à synchroniser. + + Add Folder Sync + Ajouter une synchronisation de dossiers - - Enter the path to the local folder. - Entrez le chemin du dossier local. + + Step 1 of 3: Select local folder + Étape 1 sur 3 : sélectionner un dossier local - - Select the source folder - Sélectionnez le dossier source + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Sélectionnez sur votre disque dur un dossier qui doit être en permanence rattaché à votre %1. Tous les fichiers et sous-dossiers sont automatiquement importés et synchronisés. - - + + OCC::FolderWizardRemotePath - - Authentication failed accessing %1 - Erreur d'authentification lors de l'accès à %1 + + Authentication failed accessing %1 + Erreur d'authentification lors de l'accès à %1 + + + + Choose this to sync the entire account + Sélectionnez ceci pour synchroniser l'ensemble du compte + + + + Create Remote Folder + Créer un dossier distant - - Choose this to sync the entire account - Sélectionnez ceci pour synchroniser l'ensemble du compte + + Enter the name of the new folder to be created below "%1": + Entrez le nom du nouveau dossier à créer dans "%1" : - - Create Remote Folder - Créer un dossier distant + + Failed to create the folder on %1. Please check manually. + Échec à la création du dossier sur %1. Veuillez vérifier manuellement. - - Enter the name of the new folder to be created below "%1": - Entrez le nom du nouveau dossier à créer dans "%1" : + + Failed to list a folder. Error: %1 + Impossible de lister un dossier. Erreur : %1 - - Failed to create the folder on %1. Please check manually. - Échec à la création du dossier sur %1. Veuillez vérifier manuellement. + + Add Folder Sync + Ajouter une synchronisation de dossiers - - Failed to list a folder. Error: %1 - Impossible de lister un dossier. Erreur : %1 + + Step 2 of 3: Directory in your %1 + Étape 2 sur 3 : répertoire dans votre %1 - - Folder was successfully created on %1. - Le dossier a été créé sur %1 + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + À présent, sélectionnez ou créez dans votre %1 un dossier cible dans lequel le contenu doit être importé et synchronisé. - - This folder is already being synced. - Ce dossier est déjà en cours de synchronisation. + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Les deux dossiers sont en permanence rattachés et leur contenu respectif est automatiquement synchronisé et importé. - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - Vous synchronisez déjà <i>%1</i> qui est un dossier parent de <i>%2</i>. + + Refresh + Rafraîchir - - You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - Vous synchronisez déjà <i>%1</i> qui est un sous-dossier de <i>%2</i>. + + Create folder + Créer un dossier - - + + + Folder was successfully created on %1. + Le dossier a été créé sur %1 + + + + This folder is already being synced. + Ce dossier est déjà en cours de synchronisation. + + + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + Vous synchronisez déjà <i>%1</i> qui est un dossier parent de <i>%2</i>. + + + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + Vous synchronisez déjà <i>%1</i> qui est un sous-dossier de <i>%2</i>. + + + OCC::FolderWizardSelectiveSync - - Use virtual files instead of downloading content immediately %1 - Utiliser les fichiers virtuels + + + Use virtual files instead of downloading content immediately %1 + Utiliser les fichiers virtuels + + + + + (experimental) + (expérimental) + + + + Add Folder Sync + Ajouter une synchronisation de dossiers + + + + Step 3 of 3: Selektive Synchronisation + Étape 3 sur 3 : synchronisation sélective - - Virtual files are not available for the selected folder - Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné + + Virtual files are not available for the selected folder + Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Vous ne pouvez pas définir la racine d'une partition Windows pour votre dossier local. Veuillez choisir un (sous)dossier de la partition. + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Vous ne pouvez pas définir la racine d'une partition Windows pour votre dossier local. Veuillez choisir un (sous)dossier de la partition. - - + + OCC::FormatWarningsWizardPage - - %1 - %1 + + %1 + %1 - <b>Warning:</b> - <b>Avertissement :</b> + <b>Warning:</b> + <b>Avertissement :</b> - <b>Warning:</b> %1 - <b>Avertissement :</b> %1 + <b>Warning:</b> %1 + <b>Avertissement :</b> %1 - - + + OCC::GETFileJob - - Connection Timeout - Délai d'attente de connexion dépassé + + Connection Timeout + Délai d'attente de connexion dépassé - - No E-Tag received from server, check Proxy/Gateway - Aucun E-Tag reçu du serveur, vérifiez le proxy / la passerelle + + No E-Tag received from server, check Proxy/Gateway + Aucun E-Tag reçu du serveur, vérifiez le proxy / la passerelle - - Server returned wrong content-range - Le serveur a retourné une gamme de contenu erronée + + Server returned wrong content-range + Le serveur a retourné une gamme de contenu erronée - - We received a different E-Tag for resuming. Retrying next time. - Nous avons reçu un E-Tag différent pour reprendre le téléchargement. Nouvel essai la prochaine fois. + + We received a different E-Tag for resuming. Retrying next time. + Nous avons reçu un E-Tag différent pour reprendre le téléchargement. Nouvel essai la prochaine fois. - - We received an unexpected download Content-Length. - Nous avons reçu un téléchargement de Contenu-Longeur inattendu + + We received an unexpected download Content-Length. + Nous avons reçu un téléchargement de Contenu-Longeur inattendu - - + + OCC::GeneralSettings - - &Analysis data collection for needs-based design - &Collecte des données d’analyse pour une conception basée sur les besoins + &Analysis data collection for needs-based design + &Collecte des données d’analyse pour une conception basée sur les besoins + + + + &Automatically check for updates + &Vérifier automatiquement les nouvelles mises à jour + + + &Channel + &Canal + + + &Check for Update now + &Vérifier la présence de mises à jour maintenant - - &Automatically check for updates - &Vérifier automatiquement les nouvelles mises à jour + + &Launch on system startup + &Lancer au démarrage du système - &Channel - &Canal + + Advanced + Avancés - &Check for Update now - &Vérifier la présence de mises à jour maintenant + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + - - &Launch on system startup - &Lancer au démarrage du système + + &Analysis data collection for needs-based design + - - &Restart && Update - Redémarrer et Mettre à jour + + &Restart && Update + Redémarrer et Mettre à jour - About - À propos + About + À propos - - Ask for confirmation before + + Ask for confirmation before synchronizing new folders larger than - Demander une confirmation avant de synchroniser de nouveaux dossiers plus volumineux que + Demander une confirmation avant de synchroniser de nouveaux dossiers plus volumineux que - - Ask for confirmation before synchronizing + + Ask for confirmation before synchronizing external storages - Demander une confirmation avant de synchroniser des fichiers externes + Demander une confirmation avant de synchroniser des fichiers externes - Ask for confirmation before synchronizing external storages - Confirmation avant de synchroniser des stockages externes + Ask for confirmation before synchronizing external storages + Confirmation avant de synchroniser des stockages externes - Ask for confirmation before synchronizing folders larger than - Demander confirmation avant de synchroniser les dossiers de taille supérieure à + Ask for confirmation before synchronizing folders larger than + Demander confirmation avant de synchroniser les dossiers de taille supérieure à - Ask for confirmation before synchronizing new folders larger than - Demander la confirmation avant de synchroniser les dossiers plus grands que + Ask for confirmation before synchronizing new folders larger than + Demander la confirmation avant de synchroniser les dossiers plus grands que - - Automatically disable synchronisation of + + Automatically disable synchronisation of folders that overcome limit - Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite fixée + Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite fixée - Automatically disable synchronisation of folders that overcome limit - Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite + Automatically disable synchronisation of folders that overcome limit + Désactiver automatiquement la synchronisation des dossiers qui dépassent la limite - - beta - bêta + + + beta + bêta - - Change update channel - Changer de canal de mise à jour + + Change update channel + Changer de canal de mise à jour - - Change update channel? - Changer de canal de mise à jour ? + + Change update channel? + Changer de canal de mise à jour ? - - Check Now - Vérifier maintenant + + Check Now + Vérifier maintenant - - Create Debug Archive - Créer l’archive de débogage + + + Create Debug Archive + Créer l’archive de débogage - - Data Protection - Protection des données + + Data Protection + Protection des données - - Debug Archive Created - Archive de déboggage créée + + Debug Archive Created + Archive de déboggage créée - - Debug archive is created at %1 - Archive de déboggage créée à %1 + + Debug archive is created at %1 + Archive de déboggage créée à %1 - - Desktop client x.x.x - Client de bureau x.x.x + + Desktop client x.x.x + Client de bureau x.x.x - - Edit &Ignored Files - Modifier les fichiers exclus + + Edit &Ignored Files + Modifier les fichiers exclus - - For System Tray - Pour la zone de notification système + + For System Tray + Pour la zone de notification système - - General Settings - Paramètres généraux + + General Settings + Paramètres généraux - Info - Informations + Info + Informations - - Legal Notice - Mentions légales + + Legal Notice + Mentions légales - MB - Mo + MB + Mo - - More Information - Plus d’informations + + More Information + Plus d’informations - - Move removed files to trash - Déplacer les fichiers supprimés vers la corbeille + + Move removed files to trash + Déplacer les fichiers supprimés vers la corbeille - - Notify when synchronised folders grow + + Notify when synchronised folders grow larger than specified limit - Notifier lorsque les dossiers synchronisés dépassent la limite spécifiée. + Notifier lorsque les dossiers synchronisés dépassent la limite spécifiée. - Notify when synchronised folders grow larger than specified limit - Notifier quand des dossiers synchronisés deviennent plus grand que la limite spécifiée + Notify when synchronised folders grow larger than specified limit + Notifier quand des dossiers synchronisés deviennent plus grand que la limite spécifiée - - Open Source Software - Logiciel libre + + Open Source Software + Logiciel libre - - Privacy Policy - Politique de confidentialité + + Privacy Policy + Politique de confidentialité - - S&how crash reporter - Affic&her le rapport d'incident + + S&how crash reporter + Affic&her le rapport d'incident - - Server notifications that require attention. - Les notifications du serveur requérant votre attention. + + Server notifications that require attention. + Les notifications du serveur requérant votre attention. - - Show call notification dialogs. - Montre les fenêtres de notification d'appel. + + Show call notification dialogs. + Montre les fenêtres de notification d'appel. - - Show call notifications - Afficher les notifications des appels + + Show call notifications + Afficher les notifications des appels - - Show server &notifications - Afficher les &notifications serveur + + Show server &notifications + Afficher les &notifications serveur - - Show sync folders in &Explorer's navigation + + Show sync folders in &Explorer's navigation pane - Afficher les dossiers de synchronisation dans le volet de navigation de &Explorer + Afficher les dossiers de synchronisation dans le volet de navigation de &Explorer - Show sync folders in &Explorer's Navigation Pane - Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers + Show sync folders in &Explorer's Navigation Pane + Afficher les dossiers synchronisés dans le panneau de navigation de l'&Explorateur de fichiers - - stable - stable + + + stable + stable - - The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. - Le canal de mise à jour détermine quelles mises à jour du client seront proposées pour l'installation. Le canal "stable" ne contient que les mises à jour considérées comme fiables, tandis que les versions du canal "bêta" peuvent contenir des fonctionnalités plus récentes et des corrections de bogues, mais n'ont pas encore été testées de manière approfondie. + Le canal de mise à jour détermine quelles mises à jour du client seront proposées pour l'installation. Le canal "stable" ne contient que les mises à jour considérées comme fiables, tandis que les versions du canal "bêta" peuvent contenir des fonctionnalités plus récentes et des corrections de bogues, mais n'ont pas encore été testées de manière approfondie. -Notez que cela ne permet seulement que de sélectionner où sont récupérées les mises à jour et qu'il n'y a pas de possibilité de rétrograder : ainsi, le retour du canal "bêta" au canal "stable" ne peut généralement pas être fait immédiatement, et implique d'attendre une version stable plus récente que la version bêta actuellement installée. +Notez que cela ne permet seulement que de sélectionner où sont récupérées les mises à jour et qu'il n'y a pas de possibilité de rétrograder : ainsi, le retour du canal "bêta" au canal "stable" ne peut généralement pas être fait immédiatement, et implique d'attendre une version stable plus récente que la version bêta actuellement installée. - - Update channel - Canal de mise à jour + + Update channel + Canal de mise à jour - - Updates - Mises à jour + + Updates + Mises à jour - - Usage Documentation - Documentation d'utilisation + + Usage Documentation + Documentation d'utilisation - - Use &monochrome icons - Utiliser les icônes &monochromes + + Use &monochrome icons + Utiliser les icônes &monochromes - - You cannot disable autostart because system-wide autostart is enabled. - Vous ne pouvez pas désactiver le démarrage automatique parce que le démarrage automatique à l'échelle du système est activé. + + You cannot disable autostart because system-wide autostart is enabled. + Vous ne pouvez pas désactiver le démarrage automatique parce que le démarrage automatique à l'échelle du système est activé. - - Zip Archives - Archives Zip + + Cancel + Annuler - - + + + Zip Archives + Archives Zip + + + OCC::GetOrCreatePublicLinkShare - - Could not retrieve or create the public link share. Error: + + Could not retrieve or create the public link share. Error: %1 - Impossible de récupérer ou de créer le lien public pour le partage. + Impossible de récupérer ou de créer le lien public pour le partage. %1 - - Password for share required - Mot de passe requis + + Password for share required + Mot de passe requis - - Please enter a password for your link share: - Veuillez saisir un mot de passe pour votre lien partagé : + + Please enter a password for your link share: + Veuillez saisir un mot de passe pour votre lien partagé : - - Sharing error - Erreur de partage + + Sharing error + Erreur de partage - - + + OCC::HttpCredentialsGui - - <a href="%1">Click here</a> to request an app password from the web interface. - <a href="%1">Cliquez ici</a> pour demander un mot de passe d'application depuis l'interface web. + + <a href="%1">Click here</a> to request an app password from the web interface. + <a href="%1">Cliquez ici</a> pour demander un mot de passe d'application depuis l'interface web. - - Enter Password - Saisissez le mot de passe + + Enter Password + Saisissez le mot de passe - - Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - Merci de saisir %1 mot de passe :<br><br>Identifiant : %2<br>Compte : %3<br> + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + Merci de saisir %1 mot de passe :<br><br>Identifiant : %2<br>Compte : %3<br> - - Reading from keychain failed with error: "%1" - La lecture à partir du trousseau a échoué avec l'erreur : "%1" + + Reading from keychain failed with error: "%1" + La lecture à partir du trousseau a échoué avec l'erreur : "%1" - - + + OCC::IgnoreListEditor - - Files Ignored by Patterns - Fichiers exclus sur motif de nom + + Files Ignored by Patterns + Fichiers exclus sur motif de nom - - Global Ignore Settings - Paramètres globaux d'exclusion + + Global Ignore Settings + Paramètres globaux d'exclusion - - Ignored Files Editor - Éditeur d'exclusion de fichiers + + Ignored Files Editor + Éditeur d'exclusion de fichiers - - Sync hidden files - Synchroniser les fichiers masqués + + Sync hidden files + Synchroniser les fichiers masqués - - This entry is provided by the system at "%1" and cannot be modified in this view. - Cette entrée est fournie par le système dans "%1" et ne peut être modifiée dans cette vue. + + This entry is provided by the system at "%1" and cannot be modified in this view. + Cette entrée est fournie par le système dans "%1" et ne peut être modifiée dans cette vue. - - + + OCC::IgnoreListTableWidget - - Add - Ajouter + + Add + Ajouter - Add a new ignore pattern: - Ajouter un nouveau motif d'exclusion : + Add a new ignore pattern: + Ajouter un nouveau motif d'exclusion : - Add Ignore Pattern - Ajouter un motif d'exclusion + Add Ignore Pattern + Ajouter un motif d'exclusion - - Add New Ignore Pattern - Ajouter nouveau Ignorer le modèle + + Add New Ignore Pattern + Ajouter nouveau Ignorer le modèle - - Allow Deletion - Autoriser la suppression + + Allow Deletion + Autoriser la suppression - - Cannot write changes to "%1". - Impossible d'écrire les modifications sur "%1". + + Cannot write changes to "%1". + Impossible d'écrire les modifications sur "%1". - - Could not open file - Impossible d'ouvrir le fichier + + Could not open file + Impossible d'ouvrir le fichier - Files or folders matching a pattern will not be synchronized. + Files or folders matching a pattern will not be synchronized. Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Les fichiers ou dossiers correspondant à un motif ne seront pas synchronisés. -Les éléments ayant l'option « Autoriser la suppression » pourront être supprimés pour ne pas bloquer la suppression d'un dossier. Utile pour les méta-données. + Les fichiers ou dossiers correspondant à un motif ne seront pas synchronisés. +Les éléments ayant l'option « Autoriser la suppression » pourront être supprimés pour ne pas bloquer la suppression d'un dossier. Utile pour les méta-données. - - Files or folders that match this pattern will not be synchronized. + + Files or folders that match this pattern will not be synchronized. Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - Les fichiers ou dossiers qui correspondent à ce modèle ne seront pas synchronisés. + Les fichiers ou dossiers qui correspondent à ce modèle ne seront pas synchronisés. -Les objets autorisés à être supprimés le seront s'ils empêchent la suppression d'un dossier. Ceci est utile pour les métadonnées. +Les objets autorisés à être supprimés le seront s'ils empêchent la suppression d'un dossier. Ceci est utile pour les métadonnées. - - Ignore Pattern - Ignorer le modèle + + Ignore Pattern + Ignorer le modèle - - Pattern - Motif + + Pattern + Motif - - Remove - Supprimer + + Remove + Supprimer - - Remove all - Supprimer tout + + Remove all + Supprimer tout - - + + OCC::InvalidFilenameDialog - - Cannot rename file because a file with the same name does already exist on the server. Please pick another name. - Impossible de renommer le fichier parce qu'un fichier avec le même nom existe déjà sur le serveur. Merci de choisir un autre nom. + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + Impossible de renommer le fichier parce qu'un fichier avec le même nom existe déjà sur le serveur. Merci de choisir un autre nom. + + + + Checking rename permissions … + Vérification des permissions de renommage... + + + + Rename file + Renomer le fichier + + + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Vous n'avez pas les permissions de renommer ce fichier. Veuillez demander à son auteur de le renommer. + + + + Failed to fetch permissions with error %1 + Échec de récupération de permissions avec l'erreur %1 + + + + Filename contains leading and trailing spaces. + Le nom de fichier contient des espaces de début et de fin. + + + + Filename contains leading spaces. + Le nom de fichier contient des espaces de début. + + + + Filename contains trailing spaces. + Le nom de fichier contient des espaces de fin. + + + + Use invalid name + Nom invalide + + + + Filename contains illegal characters: %1 + Le nom du fichier contient des caractères illégaux : %1 - - Checking rename permissions … - Vérification des permissions de renommage... + + Could not rename file. Please make sure you are connected to the server. + Impossible de renommer le fichier. Assurez-vous de bien être connecté au serveur. - - Could not rename local file. %1 - Impossible de renommer le dossier local %1 + + Could not rename local file. %1 + Impossible de renommer le dossier local %1 - - Invalid filename - Nom de fichier invalide + + Invalid filename + Nom de fichier invalide - - Please enter a new name for the file: - Veuillez saisir le nouveau nom du fichier : + + Error + Erreur - - The file "%1" could not be synced because the name contains characters which are not allowed on this system. - Le fichier "%1" n'a pas pu être synchronisé car son nom contient des caractères qui ne sont pas autorisés sur ce système. + + Please enter a new name for the file: + Veuillez saisir le nouveau nom du fichier : - - The file could not be synced because it contains characters which are not allowed on this system. - Le fichier n'a pas pu être synchronisé parce qu'il contiens des caractères invalides ou non-supportés par votre système. + + New filename + Nouveau nom de fichier - - The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - Les caractères suivants ne sont pas autorisés dans les noms de fichier sur ce système : * " | & ? , ; : \ / ~ < > espaces en début et fin de chaîne + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + Le fichier "%1" n'a pas pu être synchronisé car son nom contient des caractères qui ne sont pas autorisés sur ce système. - - + + + The file could not be synced because it contains characters which are not allowed on this system. + Le fichier n'a pas pu être synchronisé parce qu'il contiens des caractères invalides ou non-supportés par votre système. + + + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + Les caractères suivants ne sont pas autorisés dans les noms de fichier sur ce système : * " | & ? , ; : \ / ~ < > espaces en début et fin de chaîne + + + OCC::LegalNotice - - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> - <p>Sous licence GNU General Public License (GPL) Version 2.0 ou supérieure.</p> + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + <p>Sous licence GNU General Public License (GPL) Version 2.0 ou supérieure.</p> - Legal notice - Notice légale + + + Legal notice + Notice légale - - + + + Close + Fermer + + + OCC::LogBrowser - - Enable logging to temporary folder - Activer la journalisation dans le dossier temporaire + + Enable logging to temporary folder + Activer la journalisation dans le dossier temporaire - - Log Output - Consigner la sortie dans des fichiers de log + + Log Output + Consigner la sortie dans des fichiers de log - - The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. If enabled, logs will be written to %1 - Le client peut écrire des fichiers de log pour le déboguage dans un dossier temporaire. Ces logs sont très utiles pour diagnostiquer les problèmes. -Comme ces fichiers de log peuvent devenir lourds, le client en commence un nouveau à chaque synchronisation et compresse les anciens. Il supprime aussi les logs après quelques heures pour économiser l'espace disque. + Le client peut écrire des fichiers de log pour le déboguage dans un dossier temporaire. Ces logs sont très utiles pour diagnostiquer les problèmes. +Comme ces fichiers de log peuvent devenir lourds, le client en commence un nouveau à chaque synchronisation et compresse les anciens. Il supprime aussi les logs après quelques heures pour économiser l'espace disque. Si activés, les logs seront écrits dans %1 - - This setting persists across client restarts. + + This setting persists across client restarts. Note that using any logging command line options will override this setting. - Ce paramètre persiste lors des redémarrages du client. -Notez que l'utilisation de toute option de ligne de commande de journalisation remplacera ce paramètre. + Ce paramètre persiste lors des redémarrages du client. +Notez que l'utilisation de toute option de ligne de commande de journalisation remplacera ce paramètre. + + + + Open folder + Ouvrir le dossier - - + + OCC::Logger - - <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> - <nobr>Le fichier "%1"<br/>ne peut pas être ouvert en écriture.<br/><br/>Le fichier journal <b>ne peut pas</b> être sauvegardé !</nobr> + + Error + Erreur + + + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + <nobr>Le fichier "%1"<br/>ne peut pas être ouvert en écriture.<br/><br/>Le fichier journal <b>ne peut pas</b> être sauvegardé !</nobr> - - + + OCC::NSISUpdater - - <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> - <p>Une nouvelle version du Client %1 est disponible mais la mise à jour a échoué.</p><p><b>%2</b> a été téléchargé. La version installée est %3. Si vous confirmez le redémarrage et la mise à jour, votre ordinateur peut redémarrer pour terminer l'installation.</p> + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + <p>Une nouvelle version du Client %1 est disponible mais la mise à jour a échoué.</p><p><b>%2</b> a été téléchargé. La version installée est %3. Si vous confirmez le redémarrage et la mise à jour, votre ordinateur peut redémarrer pour terminer l'installation.</p> - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - <p>Une nouvelle version du client %1 est disponible.</p><p><b>%2</b> est disponible en téléchargement. La version actuellement installée est %3.<p> + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + <p>Une nouvelle version du client %1 est disponible.</p><p><b>%2</b> est disponible en téléchargement. La version actuellement installée est %3.<p> - - Ask again later - Demander plus tard + + Ask again later + Demander plus tard - - Get update - Télécharger la version + + Get update + Télécharger la version - - New Version Available - Nouvelle version disponible + + New Version Available + Nouvelle version disponible - - Restart and update - Redémarrer et mettre à jour + + Restart and update + Redémarrer et mettre à jour - - Skip this time - Ignorer pour cette fois + + Skip this time + Ignorer pour cette fois - - Update Failed - Échec de mise à jour + + Update Failed + Échec de mise à jour - - Update manually - Mettre à jour manuellement + + Update manually + Mettre à jour manuellement - - + + OCC::NetworkSettings - - Download Bandwidth - Bande passante de réception + + Download Bandwidth + Bande passante de réception - - Host - Hôte + + Host + Hôte - - Hostname of proxy server - Nom d'hôte du serveur proxy + + Hostname of proxy server + Nom d'hôte du serveur proxy - - HTTP(S) proxy - Proxy HTTP(S) + + HTTP(S) proxy + Proxy HTTP(S) - - KBytes/s - Ko/s + + + KBytes/s + Ko/s - - Limit automatically - Limiter automatiquement + + + Limit automatically + Limiter automatiquement - - Limit to - Limiter à + + + Limit to + Limiter à - - Limit to 3/4 of estimated bandwidth - Limiter aux 3/4 de la bande passante estimée + + + Limit to 3/4 of estimated bandwidth + Limiter aux 3/4 de la bande passante estimée - - Manually specify proxy - Spécifier manuellement le serveur proxy + + Manually specify proxy + Spécifier manuellement le serveur proxy - - No limit - Aucune limite + + + No limit + Aucune limite - - No proxy - Aucun serveur proxy + + No proxy + Aucun serveur proxy - - Note: proxy settings have no effects for accounts on localhost - Remarque: les paramètres de proxy n'ont aucun effet sur les comptes sur localhost + + Note: proxy settings have no effects for accounts on localhost + Remarque: les paramètres de proxy n'ont aucun effet sur les comptes sur localhost - - Password for proxy server - Mot de passe pour le serveur proxy + + Password for proxy server + Mot de passe pour le serveur proxy - - Proxy server requires authentication - Le serveur proxy requiert une authentification + + Proxy server requires authentication + Le serveur proxy requiert une authentification - - Proxy Settings - Paramètres de serveur proxy + + Proxy Settings + Paramètres de serveur proxy - - SOCKS5 proxy - Proxy SOCKS5 + + SOCKS5 proxy + Proxy SOCKS5 - Specify proxy manually as - Indiquer un proxy manuellement + Specify proxy manually as + Indiquer un proxy manuellement - - Upload Bandwidth - Bande passante d'émission + + Upload Bandwidth + Bande passante d'émission - - Use system proxy - Utiliser les paramètres du système + + Use system proxy + Utiliser les paramètres du système - - Username for proxy server - Nom d’utilisateur pour le serveur proxy + + Username for proxy server + Nom d’utilisateur pour le serveur proxy - - + + OCC::OAuth - <h1>Login Error</h1><p>%1</p> - <h1>Erreur de connexion</h1><p>%1</p> + <h1>Login Error</h1><p>%1</p> + <h1>Erreur de connexion</h1><p>%1</p> - <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> - <h1>Erreur de compte</h1><p>Vous êtes connecté(e) avec le compte <em>%1</em>, mais devez vous connecter avec le compte <em>%2</em>.<br>Merci de vous déconnecter de %3 dans un autre onglet, puis <a href='%4'>cliquez ici</a> et connectez-vous avec %2.</p> + <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> + <h1>Erreur de compte</h1><p>Vous êtes connecté(e) avec le compte <em>%1</em>, mais devez vous connecter avec le compte <em>%2</em>.<br>Merci de vous déconnecter de %3 dans un autre onglet, puis <a href='%4'>cliquez ici</a> et connectez-vous avec %2.</p> - Empty JSON from OAuth2 redirect - Vider le JSON de la redirection OAuth2 + Empty JSON from OAuth2 redirect + Vider le JSON de la redirection OAuth2 - - + + OCC::OCUpdater - - %1 available. Restart application to start the update. - %1 disponible. Redémarrez l'application pour effectuer la mise à jour. + + %1 available. Restart application to start the update. + %1 disponible. Redémarrez l'application pour effectuer la mise à jour. - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - Une nouvelle mise à jour pour %1 est sur le point d'être installée. Le dispositif de mise à jour peut demander des autorisations supplémentaires au cours du processus. Votre ordinateur peut nécessiter un redémarrage pour terminer l'installation. + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + Une nouvelle mise à jour pour %1 est sur le point d'être installée. Le dispositif de mise à jour peut demander des autorisations supplémentaires au cours du processus. Votre ordinateur peut nécessiter un redémarrage pour terminer l'installation. - - Checking update server … - Vérification du serveur de mises à jour ... + + Checking update server … + Vérification du serveur de mises à jour ... - - Could not check for new updates. - Impossible de vérifier la présence de nouvelles mises à jour. + + Could not check for new updates. + Impossible de vérifier la présence de nouvelles mises à jour. - - Could not download update. Please open %1 to download the update manually. - Impossible de télécharger la mise à jour. Ouvrez %1 pour télécharger manuellement la mise à jour. + + Could not download update. Please open %1 to download the update manually. + Impossible de télécharger la mise à jour. Ouvrez %1 pour télécharger manuellement la mise à jour. - - Could not download update. Please open <a href='%1'>%1</a> to download the update manually. - Impossible de télécharger la mise à jour. Merci d'ouvrir <a href='%1'>%1</a> pour télécharger la mise à jour manuellement. + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + Impossible de télécharger la mise à jour. Merci d'ouvrir <a href='%1'>%1</a> pour télécharger la mise à jour manuellement. - - Downloading %1. Please wait … - Réception en cours de %1. Veuillez patienter... + + Downloading %1. Please wait … + Réception en cours de %1. Veuillez patienter... - - New %1 is available. Please open %2 to download the update. - Un nouveau %1 est disponible. Merci d'ouvrir %2 pour télécharger la mise à jour. + + New %1 is available. Please open %2 to download the update. + Un nouveau %1 est disponible. Merci d'ouvrir %2 pour télécharger la mise à jour. - - New %1 is available. Please open <a href='%2'>%2</a> to download the update. - Un nouveau %1 est disponible. Merci d'ouvrir <a href='%2'>%2</a> pour télécharger la mise à jour. + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + Un nouveau %1 est disponible. Merci d'ouvrir <a href='%2'>%2</a> pour télécharger la mise à jour. - - New %1 update ready - Une nouvelle mise à jour de %1 est disponible + + New %1 update ready + Une nouvelle mise à jour de %1 est disponible - - No updates available. Your installation is at the latest version. - Aucune mise à jour disponible. Votre installation est à jour. + + No updates available. Your installation is at the latest version. + Aucune mise à jour disponible. Votre installation est à jour. - - Update Check - Recherche de mise à jour + + Update Check + Recherche de mise à jour - - Update status is unknown: Did not check for new updates. - L'état du processus de mise à jour est inconnu. Impossible de vérifier la présence de mises à jour. + + Update status is unknown: Did not check for new updates. + L'état du processus de mise à jour est inconnu. Impossible de vérifier la présence de mises à jour. - - + + OCC::OwncloudAdvancedSetupPage - - (%1) - (%1) + + + (%1) + (%1) + + + + %1 folder "%2" is synced to local folder "%3" + Le dossier %1 "%2" est synchronisé avec le dossier local "%3". + + + %1 free space + espace libre %1 - - %1 folder "%2" is synced to local folder "%3" - Le dossier %1 "%2" est synchronisé avec le dossier local "%3". + + Connect + Connexion - - %1 free space - espace libre %1 + + + (experimental) + (expérimental) - - Connect - Connexion + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Vous ne pouvez pas définir la racine d'une partition Windows pour votre dossier local. Veuillez choisir un (sous)dossier de la partition. - - Local Sync Folder - Dossier de synchronisation local + + %1 free space + %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB + espace libre %1 - - Sync the folder "%1" - Synchroniser le dossier "%1" + + Virtual files are not available for the selected folder + Les fichiers virtuels ne sont pas disponibles pour le dossier sélectionné - - There isn't enough free space in the local folder! - L'espace libre dans le dossier local est insuffisant ! + + Local Sync Folder + Dossier de synchronisation local - - Use &virtual files instead of downloading content immediately %1 - Utiliser les fichiers virtuels %1 + + Sync the folder "%1" + Synchroniser le dossier "%1" - - Warning: The local folder is not empty. Pick a resolution! - Avertissement : Le dossier local n'est pas vide. Choisissez une option. + + There isn't enough free space in the local folder! + L'espace libre dans le dossier local est insuffisant ! - - + + + + Use &virtual files instead of downloading content immediately %1 + Utiliser les fichiers virtuels %1 + + + + Warning: The local folder is not empty. Pick a resolution! + Avertissement : Le dossier local n'est pas vide. Choisissez une option. + + + OCC::OwncloudConnectionMethodDialog - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Impossible de se connecter à l'adresse sécurisée <em>%1</em>. Que souhaitez-vous faire ?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Impossible de se connecter à l'adresse sécurisée <em>%1</em>. Que souhaitez-vous faire ?</p></body></html> - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Impossible de se connecter au serveur via l'adresse sécurisée indiquée. Que souhaitez-vous faire ?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Impossible de se connecter au serveur via l'adresse sécurisée indiquée. Que souhaitez-vous faire ?</p></body></html> - - Configure client-side TLS certificate - Configurer le certificat TLS client + + Configure client-side TLS certificate + Configurer le certificat TLS client - - Connection failed - Échec de la connexion + + Connection failed + Échec de la connexion - - Retry unencrypted over HTTP (insecure) - Essayer en clair sur HTTP (non sécurisé) + + Retry unencrypted over HTTP (insecure) + Essayer en clair sur HTTP (non sécurisé) - - Select a different URL - Choisir une URL différente + + Select a different URL + Choisir une URL différente - - + + OCC::OwncloudHttpCredsPage - - &Email - &Adresse mail + + &Email + &Adresse mail - - Connect to %1 - Connexion à %1 + + Connect to %1 + Connexion à %1 - - Enter user credentials - Saisissez les identifiants de connexion de l'utilisateur + + Enter user credentials + Saisissez les identifiants de connexion de l'utilisateur - - + + OCC::OwncloudOAuthCredsPage - Login in your browser - Connectez vous sur votre navigateur + Login in your browser + Connectez vous sur votre navigateur - - + + OCC::OwncloudPropagator - Error with the metadata. Getting unexpected metadata format. - Erreur avec la métadonnée. Le format de la métadonnée est inattendu. + Error with the metadata. Getting unexpected metadata format. + Erreur avec la métadonnée. Le format de la métadonnée est inattendu. - - Impossible to get modification time for file in conflict %1 - Impossible de récupérer la date de modification du fichier en conflit %1 + + + Impossible to get modification time for file in conflict %1 + Impossible de récupérer la date de modification du fichier en conflit %1 - - + + OCC::OwncloudSetupPage - - &Next > - &Suivant > + + The link to your %1 web interface when you open it in the browser. + %1 will be replaced with the application name + Adresse URL visible dans la barre d'adresse de votre navigateur Web lorsque vous êtes connecté à %1. - - Could not load certificate. Maybe wrong password? - Impossible de charger le certificat. Vérifiez le mot de passe saisi. + + &Next > + &Suivant > - - Server address does not seem to be valid - L'adresse du serveur ne semble pas être valide + + Could not load certificate. Maybe wrong password? + Impossible de charger le certificat. Vérifiez le mot de passe saisi. - - The link to your %1 web interface when you open it in the browser. - Adresse URL visible dans la barre d'adresse de votre navigateur Web lorsque vous êtes connecté à %1. + + Server address does not seem to be valid + L'adresse du serveur ne semble pas être valide - - + + The link to your %1 web interface when you open it in the browser. + Adresse URL visible dans la barre d'adresse de votre navigateur Web lorsque vous êtes connecté à %1. + + + OCC::OwncloudSetupWizard - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> - <font color="green"><b>Dossier de synchronisation local %1 créé avec succès !</b></font> + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + <font color="green"><b>Dossier de synchronisation local %1 créé avec succès !</b></font> - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - <font color="green">Connecté avec succès à %1 : %2 version %3 (%4)</font><br/><br/> + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + <font color="green">Connecté avec succès à %1 : %2 version %3 (%4)</font><br/><br/> - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - <p><font color="red">La création du dossier distant a échoué, probablement parce que les informations d'identification fournies sont fausses.</font><br/>Veuillez revenir en arrière et les vérifier.</p> + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + La requête authentifiée au serveur a été redirigée vers « %1 ». L'URL est mauvaise, le serveur est mal configuré. - - A sync connection from %1 to remote directory %2 was set up. - Une synchronisation entre le dossier local %1 et le dossier distant %2 a été configurée. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Accès refusé par le serveur. Pour vérifier que vous disposez d'un accès approprié, <a href="%1">cliquez ici</a> pour accéder au service avec votre navigateur Web. - - Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - Impossible de supprimer et sauvegarder le dossier parce que le dossier ou un fichier qu'il contient est ouvert dans un autre programme. Merci de fermer le dossier ou le fichier et recommencer ou annuler la configuration. + + There was an invalid response to an authenticated WebDAV request + Réponse invalide reçue suite à une requête WebDav authentifiée. - - Connection to %1 could not be established. Please check again. - La connexion à %1 n'a pu être établie. Veuillez réessayer. + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + <p><font color="red">La création du dossier distant a échoué, probablement parce que les informations d'identification fournies sont fausses.</font><br/>Veuillez revenir en arrière et les vérifier.</p> - - Could not create local folder %1 - Impossible de créer le dossier local %1 + + A sync connection from %1 to remote directory %2 was set up. + Une synchronisation entre le dossier local %1 et le dossier distant %2 a été configurée. - - creating folder on Nextcloud: %1 - Création du dossier sur Nextcloud : %1 + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + Impossible de supprimer et sauvegarder le dossier parce que le dossier ou un fichier qu'il contient est ouvert dans un autre programme. Merci de fermer le dossier ou le fichier et recommencer ou annuler la configuration. - - Creating local sync folder %1 … - Création du dossier local de synchronisation %1 ... + + Connection to %1 could not be established. Please check again. + La connexion à %1 n'a pu être établie. Veuillez réessayer. - - Error: %1 - Erreur : %1 + + Could not create local folder %1 + Impossible de créer le dossier local %1 - - Failed to connect to %1 at %2:<br/>%3 - Échec de la connexion à %1 sur %2 :<br/>%3 + + creating folder on Nextcloud: %1 + Création du dossier sur Nextcloud : %1 - - failed. - échoué. + + Creating local sync folder %1 … + Création du dossier local de synchronisation %1 ... - - Folder rename failed - Echec du renommage du dossier + + Error: %1 + Erreur : %1 - - Invalid URL - URL invalide + + Failed to connect to %1 at %2:<br/>%3 + Échec de la connexion à %1 sur %2 :<br/>%3 - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> - Le dossier de synchronisation local %1 existe déjà, configuration de la synchronisation.<br/><br/> + + failed. + échoué. - - No remote folder specified! - Aucun dossier distant spécifié ! + + Folder rename failed + Echec du renommage du dossier - - OK - OK + + Invalid URL + URL invalide - - Remote folder %1 created successfully. - Le dossier distant %1 a été créé avec succès. + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + Le dossier de synchronisation local %1 existe déjà, configuration de la synchronisation.<br/><br/> - - Remote folder %1 creation failed with error <tt>%2</tt>. - La création du dossier distant "%1" a échouée avec l'erreur <tt>%2</tt>. + + No remote folder specified! + Aucun dossier distant spécifié ! - - Successfully connected to %1! - Connecté avec succès à %1 ! + + OK + OK - - The folder creation resulted in HTTP error code %1 - La création du dossier a généré le code d'erreur HTTP %1 + + Remote folder %1 created successfully. + Le dossier distant %1 a été créé avec succès. - - The remote folder %1 already exists. Connecting it for syncing. - Le dossier distant %1 existe déjà. Connexion. + + + Remote folder %1 creation failed with error <tt>%2</tt>. + La création du dossier distant "%1" a échouée avec l'erreur <tt>%2</tt>. - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - La création du dossier distant a échoué car les identifiants de connexion sont erronés !<br/>Veuillez revenir en arrière et vérifier ces derniers.</p> + + Successfully connected to %1! + Connecté avec succès à %1 ! - - Timeout while trying to connect to %1 at %2. - Délai d'attente dépassé lors de la connexion à %1 sur %2. + + + The folder creation resulted in HTTP error code %1 + La création du dossier a généré le code d'erreur HTTP %1 - - Trying to connect to %1 at %2 … - Tentative de connexion à %1 sur %2 ... + + The remote folder %1 already exists. Connecting it for syncing. + Le dossier distant %1 existe déjà. Connexion. - - + + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + La création du dossier distant a échoué car les identifiants de connexion sont erronés !<br/>Veuillez revenir en arrière et vérifier ces derniers.</p> + + + + Timeout while trying to connect to %1 at %2. + Délai d'attente dépassé lors de la connexion à %1 sur %2. + + + + Trying to connect to %1 at %2 … + Tentative de connexion à %1 sur %2 ... + + + OCC::OwncloudWizard - - Add %1 account - Ajout du compte %1 + + Add %1 account + Ajout du compte %1 - - Enable experimental feature? - Activer la fonction expérimentale ? + + Cancel + Annuler - - Enable experimental placeholder mode - Activer la fonction expérimentale de fichiers virtuels ? + + Enable experimental feature? + Activer la fonction expérimentale ? - - Skip folders configuration - Ignorer la configuration des dossiers + + Enable experimental placeholder mode + Activer la fonction expérimentale de fichiers virtuels ? - - Stay safe - Restez en sécurité + + Skip folders configuration + Ignorer la configuration des dossiers - - When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + + Stay safe + Restez en sécurité + + + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. Switching to this mode will abort any currently running synchronization. This is a new, experimental mode. If you decide to use it, please report any issues that come up. - Lorsque le mode « fichiers virtuels » est activé, aucun fichier ne sera téléchargé initialement. Au lieu de cela, un petit fichier "%1" sera créé pour chaque fichier existant sur le serveur. Le contenu peut être téléchargé en exécutant ces fichiers ou en utilisant leur menu contextuel. + Lorsque le mode « fichiers virtuels » est activé, aucun fichier ne sera téléchargé initialement. Au lieu de cela, un petit fichier "%1" sera créé pour chaque fichier existant sur le serveur. Le contenu peut être téléchargé en exécutant ces fichiers ou en utilisant leur menu contextuel. Le mode fichiers virtuels est mutuellement exclusif avec synchronisation sélective. Les dossiers actuellement non sélectionnés seront convertis en dossiers en ligne uniquement et vos paramètres de synchronisation sélective seront réinitialisés. Le passage à ce mode annulera toute synchronisation en cours. -Il s'agit d'un nouveau mode expérimental. Si vous décidez de l'utiliser, veuillez signaler tout problème qui surviendrait. +Il s'agit d'un nouveau mode expérimental. Si vous décidez de l'utiliser, veuillez signaler tout problème qui surviendrait. - - + + OCC::PasswordInputDialog - - Please enter a password for your share: - Veuillez saisir un mot de passe pour votre partage : + + Password for share required + Mot de passe requis + + + + Please enter a password for your share: + Veuillez saisir un mot de passe pour votre partage : - - + + OCC::PollJob - - Invalid JSON reply from the poll URL - L'URL de sondage a renvoyé une réponse JSON non valide + + Invalid JSON reply from the poll URL + L'URL de sondage a renvoyé une réponse JSON non valide - - + + OCC::ProcessDirectoryJob - - Cannot sync due to invalid modification time - Impossible de synchroniser à cause d'une date de modification invalide + + Cannot sync due to invalid modification time + Impossible de synchroniser à cause d'une date de modification invalide + + + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. + Conflit de casse : fichier serveur téléchargé et renommé pour éviter le conflit. + + + + Conflict when uploading a file. It's going to get removed! + Conflit lors de l'envoi d'un fichier. Il va être supprimé ! - - Case Clash Conflict: Server file downloaded and renamed to avoid clash. - Conflit de casse : fichier serveur téléchargé et renommé pour éviter le conflit. + + Conflict when uploading a folder. It's going to get cleared! + Conflit lors de l'envoi d'un dossier. Il va être supprimé ! - - Conflict when uploading a file. It's going to get removed! - Conflit lors de l'envoi d'un fichier. Il va être supprimé ! + + Filename contains trailing spaces. + Le nom de fichier contient des espaces de fin. - - Conflict when uploading a folder. It's going to get cleared! - Conflit lors de l'envoi d'un dossier. Il va être supprimé ! + + Filename contains leading spaces. + Le nom de fichier contient des espaces de début. - - Conflict: Server version downloaded, local copy renamed and not uploaded. - Conflit : la version du serveur a été téléchargée, la version locale renommée et non téléversée. + + Filename contains leading and trailing spaces. + Le nom de fichier contient des espaces de début et de fin. - - Could not upload file, because it is open in "%1". - Impossible de téléverser le fichier, car il est ouvert dans « %1 ». + + Conflict: Server version downloaded, local copy renamed and not uploaded. + Conflit : la version du serveur a été téléchargée, la version locale renommée et non téléversée. - - Error while deleting file record %1 from the database - Erreur à la suppression de l'enregistrement du fichier %1 de la base de données + + Could not upload file, because it is open in "%1". + Impossible de téléverser le fichier, car il est ouvert dans « %1 ». - - Error while reading the database - Erreur de lecture de la base de données + + Error while deleting file record %1 from the database + Erreur à la suppression de l'enregistrement du fichier %1 de la base de données - - File has extension reserved for virtual files. - Le fichier a une extension réservée pour les fichiers virtuels. + + Error while reading the database + Erreur de lecture de la base de données - - file id - ID du fichier + + File has extension reserved for virtual files. + Le fichier a une extension réservée pour les fichiers virtuels. - - File is listed on the ignore list. - Le fichier est présent dans la liste des fichiers ignorés. + + file id + ID du fichier - - File name contains at least one invalid character - Le nom du fichier contient au moins un caractère interdit + + File is listed on the ignore list. + Le fichier est présent dans la liste des fichiers ignorés. - - File names containing the character "%1" are not supported on this file system. - Les noms de fichiers contenant le caractère "%1" ne sont pas pris en charge par ce système de fichiers. + + File name contains at least one invalid character + Le nom du fichier contient au moins un caractère interdit - - File names ending with a period are not supported on this file system. - Les noms de fichier se terminant par un point ne sont pas pris en charge sur votre système. + + File names containing the character "%1" are not supported on this file system. + Les noms de fichiers contenant le caractère "%1" ne sont pas pris en charge par ce système de fichiers. - - File/Folder is ignored because it's hidden. - Le fichier ou dossier a été ignoré car il est masqué. + + File names ending with a period are not supported on this file system. + Les noms de fichier se terminant par un point ne sont pas pris en charge sur votre système. - - Filename is too long. - Le nom du fichier est trop long. + + File/Folder is ignored because it's hidden. + Le fichier ou dossier a été ignoré car il est masqué. - - Ignored because of the "choose what to sync" blacklist - Ignoré en raison de la liste noire "Sélectionner le contenu à synchroniser". + + Filename is too long. + Le nom du fichier est trop long. - - Moved to invalid target, restoring - Déplacé vers une cible invalide, restauration + + Ignored because of the "choose what to sync" blacklist + Ignoré en raison de la liste noire "Sélectionner le contenu à synchroniser". - - Not allowed because you don't have permission to add files in that folder - Non autorisé car vous n'avez pas la permission d'ajouter des fichiers dans ce dossier + + + Moved to invalid target, restoring + Déplacé vers une cible invalide, restauration - - Not allowed because you don't have permission to add subfolders to that folder - Non autorisé car vous n'avez pas la permission d'ajouter des sous-dossiers dans ce dossier + + Not allowed because you don't have permission to add files in that folder + Non autorisé car vous n'avez pas la permission d'ajouter des fichiers dans ce dossier - - Not allowed to remove, restoring - Suppression non autorisée, restauration en cours + + + Not allowed because you don't have permission to add subfolders to that folder + Non autorisé car vous n'avez pas la permission d'ajouter des sous-dossiers dans ce dossier - - Not allowed to upload this file because it is read-only on the server, restoring - Non autorisé à téléverser ce fichier, car il est en lecture seule sur le serveur, restauration en cours + + Not allowed to remove, restoring + Suppression non autorisée, restauration en cours - - permission - permission + + Not allowed to upload this file because it is read-only on the server, restoring + Non autorisé à téléverser ce fichier, car il est en lecture seule sur le serveur, restauration en cours - - Server replied with an error while reading directory "%1" : %2 - Le serveur a répondu avec une erreur lors de la lecture du dossier "%1" : %2 + + permission + permission - - Server reported no %1 - Le serveur n'a signalé aucun %1 + + Server replied with an error while reading directory "%1" : %2 + Le serveur a répondu avec une erreur lors de la lecture du dossier "%1" : %2 - - size - taille + + Server reported no %1 + Le serveur n'a signalé aucun %1 - - Stat failed. - Stat échoué. + + size + taille - - Symbolic links are not supported in syncing. - Les liens symboliques ne sont pas pris en charge par la synchronisation. + + Stat failed. + Stat échoué. - - The file name is a reserved name on this file system. - Le nom du fichier est un nom réservé dans le système de fichier + + Symbolic links are not supported in syncing. + Les liens symboliques ne sont pas pris en charge par la synchronisation. - - The filename cannot be encoded on your file system. - Le nom de fichier ne peut pas être encodé sur votre système de fichiers. + + The file name is a reserved name on this file system. + Le nom du fichier est un nom réservé dans le système de fichier - - The filename is blacklisted on the server. - Le nom du fichier est sur la liste noire du serveur. + + The filename cannot be encoded on your file system. + Le nom de fichier ne peut pas être encodé sur votre système de fichiers. - - + + + The filename is blacklisted on the server. + Le nom du fichier est sur la liste noire du serveur. + + + OCC::PropagateDirectory - - could not delete file %1 from local DB - Impossible de supprimer le fichier %1 de la base de données locale + + could not delete file %1 from local DB + Impossible de supprimer le fichier %1 de la base de données locale + + + + Error updating metadata due to invalid modification time + Erreur de mise à jour des métadonnées à cause d'une date de modification invalide - - Error updating metadata due to invalid modification time - Erreur de mise à jour des métadonnées à cause d'une date de modification invalide + + Error updating metadata: %1 + Erreur à la mise à jour des méta-données : %1 - - File is currently in use - Le fichier est actuellement en cours d'utilisation + + File is currently in use + Le fichier est actuellement en cours d'utilisation - - The folder %1 cannot be made read-only: %2 - Le dossier %1 ne peut être rendu en lecture seule : %2 + + + The folder %1 cannot be made read-only: %2 + Le dossier %1 ne peut être rendu en lecture seule : %2 - - + + OCC::PropagateDownloadFile - - Could not delete file record %1 from local DB - Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale + + + Could not delete file record %1 from local DB + Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale + + + + could not get file %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale - - could not get file %1 from local DB - Impossible de récupérer le fichier %1 depuis la base de données locale + + File %1 can not be downloaded because of a local file name clash! + Le fichier %1 ne peut pas être téléchargé en raison d'un conflit sur le nom de fichier local. - - File %1 can not be downloaded because of a local file name clash! - Le fichier %1 ne peut pas être téléchargé en raison d'un conflit sur le nom de fichier local. + + File %1 cannot be downloaded because encryption information is missing. + Le fichier %1 ne peut pas être téléchargé car les informations de chiffrement sont manquantes. - - File %1 cannot be downloaded because encryption information is missing. - Le fichier %1 ne peut pas être téléchargé car les informations de chiffrement sont manquantes. + + File %1 downloaded but it resulted in a local file name clash! + Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! - - File %1 downloaded but it resulted in a local file name clash! - Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! + + + File %1 has invalid modified time reported by server. Do not save it. + Le fichier %1 présente une date de modification invalide sur le serveur. Enregistrement impossible. - - File %1 has invalid modified time reported by server. Do not save it. - Le fichier %1 présente une date de modification invalide sur le serveur. Enregistrement impossible. + + + File has changed since discovery + Le fichier a changé depuis sa découverte - - File has changed since discovery - Le fichier a changé depuis sa découverte + + File was deleted from server + Le fichier a été supprimé du serveur - - File was deleted from server - Le fichier a été supprimé du serveur + + Error updating metadata: %1 + Erreur à la mise à jour des méta-données : %1 - - Free space on disk is less than %1 - Il y a moins de %1 d'espace libre sur le disque + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - The download would reduce free local disk space below the limit - Le téléchargement réduira l'espace disque libre en dessous de la limite + + Free space on disk is less than %1 + Il y a moins de %1 d'espace libre sur le disque - - The downloaded file is empty, but the server said it should have been %1. - Le fichier téléchargé est vide bien que le serveur indique que sa taille devrait être de %1. + + The download would reduce free local disk space below the limit + Le téléchargement réduira l'espace disque libre en dessous de la limite - - The file could not be downloaded completely. - Le fichier n'a pas pu être téléchargé intégralement. + + The downloaded file is empty, but the server said it should have been %1. + Le fichier téléchargé est vide bien que le serveur indique que sa taille devrait être de %1. - - + + + The file could not be downloaded completely. + Le fichier n'a pas pu être téléchargé intégralement. + + + OCC::PropagateItemJob - - ; Restoration Failed: %1 - ; Échec de la restauration : %1 + + ; Restoration Failed: %1 + ; Échec de la restauration : %1 - - A file or folder was removed from a read only share, but restoring failed: %1 - Un fichier ou un dossier a été supprimé d'un partage en lecture seule, mais la restauration a échoué : %1 + + A file or folder was removed from a read only share, but restoring failed: %1 + Un fichier ou un dossier a été supprimé d'un partage en lecture seule, mais la restauration a échoué : %1 - - + + OCC::PropagateLocalMkdir - - Could not create folder %1 - Impossible de créer le dossier %1 + + Could not create folder %1 + Impossible de créer le dossier %1 + + + + could not delete file %1, error: %2 + impossible de supprimer le fichier %1. Erreur : %2 - - could not delete file %1, error: %2 - impossible de supprimer le fichier %1. Erreur : %2 + + Folder %1 cannot be created because of a local file or folder name clash! + Le dossier %1 n'a pu être créé à cause d'un conflit local de nom de fichier ou de dossier ! - - Folder %1 cannot be created because of a local file or folder name clash! - Le dossier %1 n'a pu être créé à cause d'un conflit local de nom de fichier ou de dossier ! + + The folder %1 cannot be made read-only: %2 + Le dossier %1 ne peut être rendu en lecture seule : %2 - - + + + Error updating metadata: %1 + Erreur à la mise à jour des méta-données : %1 + + + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation + + + OCC::PropagateLocalRemove - - Could not remove %1 because of a local file name clash - Impossible de retirer %1 en raison d'un conflit de nom de fichier local + + Could not remove %1 because of a local file name clash + Impossible de retirer %1 en raison d'un conflit de nom de fichier local + + + + Could not delete file record %1 from local DB + Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale - - + + OCC::PropagateLocalRename - - Error setting pin state - Erreur lors de la modification de l'état du fichier + + File %1 downloaded but it resulted in a local file name clash! + Fichier %1 téléchargé, mais a abouti à un conflit de casse du nom de fichier local ! + + + + + + could not get file %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale + + + + + Error setting pin state + Erreur lors de la modification de l'état du fichier + + + + + Error updating metadata: %1 + Erreur à la mise à jour des méta-données : %1 + + + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation + + + + + Could not delete file record %1 from local DB + Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale - - Failed to propagate directory rename in hierarchy - Impossible de propager le renommage du dossier dans la hiérarchie + + Failed to propagate directory rename in hierarchy + Impossible de propager le renommage du dossier dans la hiérarchie - - Failed to rename file - Échec lors du changement de nom du fichier + + Failed to rename file + Échec lors du changement de nom du fichier - - Folder %1 cannot be renamed because of a local file or folder name clash! - Le dossier %1 ne peut pas être renommé en raison d’un conflit de nom avec un fichier ou un dossier local ! + + Folder %1 cannot be renamed because of a local file or folder name clash! + Le dossier %1 ne peut pas être renommé en raison d’un conflit de nom avec un fichier ou un dossier local ! - - + + + OCC::PropagateRemoteDelete + + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". + + + + Could not delete file record %1 from local DB + Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale + + + + OCC::PropagateRemoteDeleteEncryptedRootFolder + + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 204 mais la valeur retournée est "%1 %2". + + + OCC::PropagateRemoteMkdir - - Error writing metadata to the database: %1 - Erreur d'écriture des métadonnées dans la base de données : %1 + + Error writing metadata to the database: %1 + Erreur d'écriture des métadonnées dans la base de données : %1 - - Failed to encrypt a folder %1 - Échec du chiffrement d'un dossier %1 + + Failed to encrypt a folder %1 + Échec du chiffrement d'un dossier %1 - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". - - + + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation + + + OCC::PropagateRemoteMove - - Could not rename %1 to %2, error: %3 - Impossible de renommer %1 en %2, erreur: %3 + + Could not rename %1 to %2, error: %3 + Impossible de renommer %1 en %2, erreur: %3 + + + + + Error updating metadata: %1 + Erreur à la mise à jour des méta-données : %1 + + + + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation + + + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Le code HTTP retourné par le serveur n'est pas valide. La valeur attendue est 201 mais la valeur reçue est "%1 %2". + + + + could not get file %1 from local DB + Impossible de récupérer le fichier %1 depuis la base de données locale + + + + Could not delete file record %1 from local DB + Impossible de supprimer l'enregistrement du fichier %1 depuis la base de données locale + + + + Error setting pin state + Erreur lors de la modification de l'état du fichier - - + + + Error writing metadata to the database + Erreur à l'écriture des métadonnées dans la base de données + + + OCC::PropagateUploadFileCommon - - Failed to unlock encrypted folder. - Impossible de déverrouiller le dossier chiffré. + + Failed to unlock encrypted folder. + Impossible de déverrouiller le dossier chiffré. + + + + Failed to upload encrypted file. + Échec d'envoi du fichier chiffré. + + + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Le fichier %1 ne peut être téléversé parce qu'un autre fichier avec le même nom hormis la casse existe + + + + + + File %1 has invalid modification time. Do not upload to the server. + Le fichier %1 présente une date de modification invalide. Envoi au serveur impossible. + + + + File Removed (start upload) %1 + Fichier supprimé (démarrer l'envoi) %1 + + + + Local file changed during syncing. It will be resumed. + Fichier local modifié pendant la synchronisation. La synchronisation sera reprise. + + + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. - - Failed to upload encrypted file. - Échec d'envoi du fichier chiffré. + + Unable to upload an item with invalid characters + Impossible de téléverser un élément contenant des caractères non valides - - Unable to upload an item with invalid characters - Impossible de téléverser un élément contenant des caractères non valides + + Error updating metadata: %1 + Erreur à la mise à jour des méta-données : %1 - - Upload of %1 exceeds the quota for the folder - L'envoi de %1 amène un dépassement de quota pour le dossier + + The file %1 is currently in use + Le fichier %1 est en cours d'utilisation - - + + + + Upload of %1 exceeds the quota for the folder + L'envoi de %1 amène un dépassement de quota pour le dossier + + + OCC::PropagateUploadFileNG - - Missing ETag from server - L'information Etag de modification de fichier est manquante sur le serveur + + Missing ETag from server + L'information Etag de modification de fichier est manquante sur le serveur + + + + Missing File ID from server + L'identifiant de fichier est manquant sur le serveur - - Missing File ID from server - L'identifiant de fichier est manquant sur le serveur + + The local file was removed during sync. + Le fichier local a été supprimé pendant la synchronisation. - - Poll URL missing - URL du sondage manquante + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. - - Unexpected return code from server (%1) - Le serveur a retourné un code inattendu (%1) + + Poll URL missing + URL du sondage manquante - - + + + Unexpected return code from server (%1) + Le serveur a retourné un code inattendu (%1) + + + OCC::PropagateUploadFileV1 - - The server did not acknowledge the last chunk. (No e-tag was present) - Le serveur n'a pas confirmé la réception du dernier morceau. (Aucun e-tag n'était présent). + + Poll URL missing + URL du sondage manquante - - + + + The local file was removed during sync. + Le fichier local a été supprimé pendant la synchronisation. + + + + Local file changed during sync. + Fichier local modifié pendant la synchronisation. + + + + The server did not acknowledge the last chunk. (No e-tag was present) + Le serveur n'a pas confirmé la réception du dernier morceau. (Aucun e-tag n'était présent). + + + OCC::ProxyAuthDialog - - Password: - Mot de passe : + + Password: + Mot de passe : - - Proxy authentication required - Authentification requise sur le proxy + + Proxy authentication required + Authentification requise sur le proxy - - Proxy: - Proxy : + + Proxy: + Proxy : - - The proxy server needs a username and password. - Le serveur proxy requiert un identifiant et un mot de passe. + + The proxy server needs a username and password. + Le serveur proxy requiert un identifiant et un mot de passe. - - Username: - Nom d’utilisateur : + + Username: + Nom d’utilisateur : - - + + OCC::SelectiveSyncDialog - - Choose What to Sync - Sélectionner le contenu à synchroniser + + Choose What to Sync + Sélectionner le contenu à synchroniser - - + + OCC::SelectiveSyncWidget - - An error occurred while loading the list of sub folders. - Une erreur est survenue lors du chargement de la liste des sous-dossiers. + + An error occurred while loading the list of sub folders. + Une erreur est survenue lors du chargement de la liste des sous-dossiers. - - Deselect remote folders you do not wish to synchronize. - Désélectionnez les sous-dossiers distants que vous ne souhaitez pas synchroniser. + + Deselect remote folders you do not wish to synchronize. + Désélectionnez les sous-dossiers distants que vous ne souhaitez pas synchroniser. - - Loading … - Chargement… + + Loading … + Chargement… - - Name - Nom + + Name + Nom - - No subfolders currently on the server. - Aucun sous-dossier sur le serveur. + + + No subfolders currently on the server. + Aucun sous-dossier sur le serveur. - - Size - Taille + + Size + Taille - - + + OCC::ServerNotificationHandler - - Reply - Répondre + + Reply + Répondre - - + + OCC::SettingsDialog - - %1 Settings - Paramètres %1 + + %1 Settings + This name refers to the application name e.g Nextcloud + Paramètres %1 + + + + Account + Compte + + + + General + Paramètres - - Account - Compte + Network + Réseau - - General - Paramètres + + New Account + Nouveau compte - Network - Réseau + + Settings + Paramètres + + + OCC::ShareManager - - New Account - Nouveau compte + + Error + Erreur - - + + OCC::ShareModel - - Could not find local folder for %1 - Impossible de trouver le dossier local pour %1 + + Could not find local folder for %1 + Impossible de trouver le dossier local pour %1 - Enter a note for the recipient - Saisissez un commentaire pour le destinataire + Enter a note for the recipient + Saisissez un commentaire pour le destinataire - - Internal link - Lien interne + + Internal link + Lien interne - - Link share - Lien de partage + + Link share + Lien de partage - - Secure file drop - Dépôt de fichier sécurisé + + Secure file drop + Dépôt de fichier sécurisé - - Secure file drop link - Lien de dépôt sécurisé de fichier + + Secure file drop link + Lien de dépôt sécurisé de fichier - - Share link - Partager un lien + + Share link + Partager un lien - - + + OCC::ShareUserLine - Can edit - Peut modifier + Can edit + Peut modifier - Expires: - Expire le : + Expires: + Expire le : - Note: - Note : + Note: + Note : - - + + OCC::ShareeModel - - Global search results - Résultats de la recherche globale + + Global search results + Résultats de la recherche globale - - No results found - Aucun résultat trouvé + + No results found + Aucun résultat trouvé - - Search globally - Rechercher globalement + + %1 (%2) + sharee (shareWithAdditionalInfo) + %1 (%2) - - + + + + Search globally + Rechercher globalement + + + OCC::SocketApi - Activity - Activité + + + Activity + Activité - - Context menu share - Partage du menu contextuel + + Context menu share + Partage du menu contextuel - - Copy internal link - Copier le lien interne + + Copy internal link + Copier le lien interne - - Copy private link to clipboard - Copier le lien privé dans le presse-papier + + Copy private link to clipboard + Copier le lien privé dans le presse-papier - - Copy public link - Copier le lien public + + + Copy public link + Copier le lien public - - Copy secure file drop link - Copier le lien de dépôt sécurisé de fichier + + Copy secure file drop link + Copier le lien de dépôt sécurisé de fichier - - Copy secure filedrop link - Copier le lien de dépôt de fichier sécurisé + + Copy secure filedrop link + Copier le lien de dépôt de fichier sécurisé - - Could not encrypt the following folder: "%1". + + Could not encrypt the following folder: "%1". Server replied with error: %2 - Impossible de chiffrer le dossier suivant : "%1". + Impossible de chiffrer le dossier suivant : "%1". -Le serveur a répondu avec l'erreur : %2 +Le serveur a répondu avec l'erreur : %2 - - Delete local changes - Supprimer les modifications locales + + Delete local changes + Supprimer les modifications locales - - Edit - Éditer + + Edit + Éditer - - - Expires in %1 minutes - - - - Expire dans %1 minutes - + + + Failed to encrypt folder + Échec du chiffrement du dossier - - Failed to encrypt folder - Échec du chiffrement du dossier + + Failed to encrypt folder at "%1" + Échec du chiffrement du dossier à "%1" - - Failed to encrypt folder at "%1" - Échec du chiffrement du dossier à "%1" + + Folder encrypted successfully + Dossier chiffré avec succès - - Folder encrypted successfully - Dossier chiffré avec succès + + I shared something with you + J'ai partagé quelque chose avec vous - - I shared something with you - J'ai partagé quelque chose avec vous + + Leave this share + Quitter ce partage - - Leave this share - Quitter ce partage + + Encrypt + Chiffrer - - Lock file - Verrouiller le fichier + + Lock file + Verrouiller le fichier - - Locked by %1 - Verrouillé par %1 + + Locked by %1 + Verrouillé par %1 + + + + Expires in %1 minutes + remaining time before lock expires + + + + + + + + Move and rename … + Déplacer et renommer... - - Move and rename … - Déplacer et renommer... + + Move and upload … + Déplacer et téléverser… - - Move and upload … - Déplacer et téléverser… + + Delete + Supprimer - - Move, rename and upload … - Déplacer, renommer et téléverser… + + Move, rename and upload … + Déplacer, renommer et téléverser… - - Open in browser - Ouvrir dans le navigateur + + Open in browser + Ouvrir dans le navigateur - - Resharing this file is not allowed - Repartager ce fichier est interdit + + Resharing this file is not allowed + Repartager ce fichier est interdit - - Resharing this folder is not allowed - Repartager ce dossier est interdit + + Resharing this folder is not allowed + Repartager ce dossier est interdit - - Resolve conflict … - Résoudre le conflit… + + Resolve conflict … + Résoudre le conflit… - - Select new location … - Sélectionnez le nouvel emplacement ... + + Select new location … + Sélectionnez le nouvel emplacement ... - - Send private link by email … - Envoyer le lien privé par e-mail ... + + Send private link by email … + Envoyer le lien privé par e-mail ... - - Share options - Options de partage + + + Share options + Options de partage - - The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - Le compte %1 n'a pas de chiffrement de bout en bout configuré. Veuillez le configurer dans les paramètres de votre compte pour activer le chiffrement des dossiers. + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. + Le compte %1 n'a pas de chiffrement de bout en bout configuré. Veuillez le configurer dans les paramètres de votre compte pour activer le chiffrement des dossiers. - - The following folder was encrypted successfully: "%1" - Le dossier suivant a été chiffré avec succès : "%1" + + The following folder was encrypted successfully: "%1" + Le dossier suivant a été chiffré avec succès : "%1" - - Unlock file - Déverrouiller le fichier + + Unlock file + Déverrouiller le fichier - - + + OCC::SslButton - - %1 (self-signed) - %1 (auto-signé) + + %1 (self-signed) + %1 (auto-signé) - - <h3>Certificate Details</h3> - <h3>Détails du certificat</h3> + + <h3>Certificate Details</h3> + <h3>Détails du certificat</h3> - - <h3>Fingerprints</h3> - <h3>Empreintes numériques</h3> + + <h3>Fingerprints</h3> + <h3>Empreintes numériques</h3> - - <h3>Issuer</h3> - <h3>Émetteur</h3> + + <h3>Issuer</h3> + <h3>Émetteur</h3> - - <p><b>Note:</b> This certificate was manually approved</p> - <p><b>Note :</b> Ce certificat a été approuvé manuellement</p> + + <p><b>Note:</b> This certificate was manually approved</p> + <p><b>Note :</b> Ce certificat a été approuvé manuellement</p> - - Certificate information: - Informations du certificat : + + Certificate information: + Informations du certificat : - - Common Name (CN): - Nom commun (CN) : + + Common Name (CN): + Nom commun (CN) : - - Country: - Pays : + + Country: + Pays : - - Expires on: - Expire le : + + Expires on: + Expire le : - - Issued on: - Émis le : + + Issued on: + Émis le : - - Issuer: - Émetteur : + + Issuer: + Émetteur : - - No support for SSL session tickets/identifiers - Identifiants/tickets de sessions SSL non pris en charge + + No support for SSL session tickets/identifiers + Identifiants/tickets de sessions SSL non pris en charge - - Organization (O): - Organisation (O) : + + Organization (O): + Organisation (O) : - - Organizational Unit (OU): - Unité d'organisation (OU) : + + Organizational Unit (OU): + Unité d'organisation (OU) : - - Serial: - Numéro de série : + + Serial: + Numéro de série : - - Server version: %1 - Version du serveur : %1 + + %1 + %1 - - SHA-1: - SHA-1 : + + This connection is encrypted using %1 bit %2. + + - - SHA-256: - SHA-256 : + + This connection is NOT secure as it is not encrypted. + + - - State/Province: - État/Région : + + Server version: %1 + Version du serveur : %1 - - Subject Alternative Names: - Noms alternatifs du sujet : + + SHA-1: + SHA-1 : - - The connection is not secure - La connexion n'est pas sécurisée + + SHA-256: + SHA-256 : - - This connection is encrypted using %1 bit %2. - Cette connexion est chiffrée en utilisant %1 bit %2. + + State/Province: + État/Région : - - This connection is NOT secure as it is not encrypted. - Cette connexion n'est PAS sécurisée car elle n'est pas chiffrée. + + Subject Alternative Names: + Noms alternatifs du sujet : - - + + + The connection is not secure + La connexion n'est pas sécurisée + + + This connection is encrypted using %1 bit %2. + Cette connexion est chiffrée en utilisant %1 bit %2. + + + This connection is NOT secure as it is not encrypted. + Cette connexion n'est PAS sécurisée car elle n'est pas chiffrée. + + + OCC::SslErrorDialog - - &lt;not specified&gt; - &lt;non spécifié&gt; + + + + &lt;not specified&gt; + &lt;non spécifié&gt; - - Additional errors: - Erreurs supplémentaires : + + Additional errors: + Erreurs supplémentaires : - - Cannot connect securely to <i>%1</i>: - Impossible de se connecter de manière sécurisée à <i>%1</i> : + + Cannot connect securely to <i>%1</i>: + Impossible de se connecter de manière sécurisée à <i>%1</i> : - - Country: %1 - Pays : %1 + + + Country: %1 + Pays : %1 - - Effective Date: %1 - Date de début de validité : %1 + + Effective Date: %1 + Date de début de validité : %1 - - Expiration Date: %1 - Date d'expiration : %1 + + Expiration Date: %1 + Date d'expiration : %1 - - Fingerprint (SHA-256): <tt>%1</tt> - Empreinte (SHA-256): <tt>%1</tt> + + Fingerprint (SHA-256): <tt>%1</tt> + Empreinte (SHA-256): <tt>%1</tt> - - Fingerprint (SHA-512): <tt>%1</tt> - Empreinte (SHA-512): <tt>%1</tt> + + Fingerprint (SHA-512): <tt>%1</tt> + Empreinte (SHA-512): <tt>%1</tt> - - Fingerprint (SHA1): <tt>%1</tt> - Empreinte (SHA1) : <tt>%1</tt> + + Fingerprint (SHA1): <tt>%1</tt> + Empreinte (SHA1) : <tt>%1</tt> - - Issuer: %1 - Émetteur : %1 + + Issuer: %1 + Émetteur : %1 - - Organization: %1 - Organisation : %1 + + + Organization: %1 + Organisation : %1 - - Trust this certificate anyway - Faire confiance à ce certificat malgré tout + + Trust this certificate anyway + Faire confiance à ce certificat malgré tout - - Unit: %1 - Unité : %1 + + + Unit: %1 + Unité : %1 - - Untrusted Certificate - Certificat non fiable + + Untrusted Certificate + Certificat non fiable - - with Certificate %1 - avec certificat %1 + + with Certificate %1 + avec certificat %1 - - + + OCC::SyncEngine - - %1 (skipped due to earlier error, trying again in %2) - %1 (ignoré à cause d'une précédente erreur, nouvel essai dans %2) + + %1 (skipped due to earlier error, trying again in %2) + %1 (ignoré à cause d'une précédente erreur, nouvel essai dans %2) - - Cannot open the sync journal - Impossible d'ouvrir le journal de synchronisation + + Cannot open the sync journal + Impossible d'ouvrir le journal de synchronisation - - Could not set file record to local DB: %1 - Impossible de définir l'enregistrement du fichier dans la base de données locale : %1 + + Could not set file record to local DB: %1 + Impossible de définir l'enregistrement du fichier dans la base de données locale : %1 - - Could not update file metadata: %1 - Impossible de mettre à jour les métadonnées du fichier : %1 + + Could not update file metadata: %1 + Impossible de mettre à jour les métadonnées du fichier : %1 - - Could not update file: %1 - Impossible de mettre à jour le fichier : %1 + + Could not update file: %1 + Impossible de mettre à jour le fichier : %1 - - Could not update virtual file metadata: %1 - Impossible de mettre à jour les métadonnées du fichier virutel : %1 + + Could not update virtual file metadata: %1 + Impossible de mettre à jour les métadonnées du fichier virutel : %1 - - Disk space is low: Downloads that would reduce free space below %1 were skipped. - L'espace disque est faible : les téléchargements qui amèneraient à réduire l'espace libre en dessous de %1 ont été ignorés. + + Only %1 are available, need at least %2 to start + Placeholders are postfixed with file sizes using Utility::octetsToString() + Seulement %1 disponibles, il faut au moins %2 pour démarrer - - Only %1 are available, need at least %2 to start - Seulement %1 disponibles, il faut au moins %2 pour démarrer + + Disk space is low: Downloads that would reduce free space below %1 were skipped. + L'espace disque est faible : les téléchargements qui amèneraient à réduire l'espace libre en dessous de %1 ont été ignorés. - - There is insufficient space available on the server for some uploads. - Il n'y a pas suffisamment d’espace disponible sur le serveur pour certains envois. + Only %1 are available, need at least %2 to start + Seulement %1 disponibles, il faut au moins %2 pour démarrer - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. - Impossible d'accéder ou de créer une base de données locale de synchronisation. Assurez vous de disposer des droits d'écriture dans le dossier de synchronisation. + + There is insufficient space available on the server for some uploads. + Il n'y a pas suffisamment d’espace disponible sur le serveur pour certains envois. - - Unable to read from the sync journal. - Impossible de lire le journal de synchronisation. + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. + Impossible d'accéder ou de créer une base de données locale de synchronisation. Assurez vous de disposer des droits d'écriture dans le dossier de synchronisation. - - Unable to read the blacklist from the local database - Impossible de lire la liste noire de la base de données locale + + Unable to read from the sync journal. + Impossible de lire le journal de synchronisation. - - Unresolved conflict. - conflit non résolu. + + Unable to read the blacklist from the local database + Impossible de lire la liste noire de la base de données locale - - Using virtual files with suffix, but suffix is not set - Utilisation de fichiers virtuels avec suffixe, mais le suffixe n'est pas défini + + Unresolved conflict. + conflit non résolu. - - + + + Using virtual files with suffix, but suffix is not set + Utilisation de fichiers virtuels avec suffixe, mais le suffixe n'est pas défini + + + OCC::SyncJournalDb - - Failed to connect database. - Impossible de connecter la base de données. + + Failed to connect database. + Impossible de connecter la base de données. - - + + OCC::SyncStatusSummary - - %1 of %2 - %1 sur 2% + + %1 of %2 + %1 sur 2% + + + + %1 of %2 · %3 left + %1 sur %2 · %3 restants - - %1 of %2 · %3 left - %1 sur %2 · %3 restants + + + Offline + Hors ligne - - Offline - Hors ligne + + + + All synced! + Tout est synchronisé ! - - Preparing sync - Préparation de la synchronisation + + Preparing sync + Préparation de la synchronisation - - See below for errors - Voir ci-dessous pour les erreurs + + See below for errors + Voir ci-dessous pour les erreurs - - See below for warnings - Voir ci-dessous pour les avertissements + + See below for warnings + Voir ci-dessous pour les avertissements - - Some files could not be synced! - Certains fichiers n’ont pas pu être synchronisés ! + + Some files could not be synced! + Certains fichiers n’ont pas pu être synchronisés ! - - Some files couldn't be synced! - Certains fichiers n’ont pas pu être synchronisés ! + + Some files couldn't be synced! + Certains fichiers n’ont pas pu être synchronisés ! - - Syncing file %1 of %2 - Synchronisation du fichier %1 sur %2 + + + Syncing + Synchronisation en cours - - + + + Sync paused + Synchronisation en pause + + + + Syncing file %1 of %2 + Synchronisation du fichier %1 sur %2 + + + OCC::Systray - - %1: %2 - %1 : %2 + + %1: %2 + %1 : %2 + + + + Add account + Ajouter un compte - - Add account - Ajouter un compte + + Download + Télécharger - - Download - Télécharger + + + Pause sync + Mettre en pause la synchronisation - - Exit %1 - Quitter %1 + + + Resume sync + Reprendre la synchronisation - - Open main dialog - Ouvrir la boîte de dialogue principale + + Settings + Paramètres - - Pause sync for all - Suspendre toutes les synchros + + Help + Aide - - Resume sync for all - Relancer toutes les synchros + + Exit %1 + Quitter %1 - - + + + Open main dialog + Ouvrir la boîte de dialogue principale + + + + Pause sync for all + Suspendre toutes les synchros + + + + Resume sync for all + Relancer toutes les synchros + + + OCC::Theme - - <p>%1 desktop client %2</p> - <p>%1 %2</p> + + <p>%1 desktop client %2</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + <p>%1 %2</p> + + + <p>%1 Desktop Client</p> + <p>Client de bureau %1</p> - <p>%1 Desktop Client</p> - <p>Client de bureau %1</p> + + easy/0118 + Redirect URL Parameter + - - <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>Client de bureau %1</p> <p>Version %1. Pour plus d'informations, cliquez <a href='%2'>ici</a>.</p> + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + <p>Client de bureau %1</p> <p>Version %1. Pour plus d'informations, cliquez <a href='%2'>ici</a>.</p> - - <p><small>Using virtual files plugin: %1</small></p> - <p><small>Utilise l'extension de fichiers virtuels : %1</small></p> + + <p><small>Using virtual files plugin: %1</small></p> + <p><small>Utilise l'extension de fichiers virtuels : %1</small></p> - - <p>This release was supplied by %1.</p> - <p>Cette version a été fournie par %1.</p> + + <p>This release was supplied by %1.</p> + <p>Cette version a été fournie par %1.</p> - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>Version %1. Pour plus d’informations, veuillez cliquer <a href='%2'>ici</a>.</p> + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>Version %1. Pour plus d’informations, veuillez cliquer <a href='%2'>ici</a>.</p> - - + + OCC::UnifiedSearchResultsListModel - - Failed to fetch providers. - Échec de la récupération des fournisseurs. + + Failed to fetch providers. + Échec de la récupération des fournisseurs. - - Failed to fetch search providers for '%1'. Error: %2 - Échec de la récupération des fournisseurs de recherche pour '%1'. Erreur : %2 + + Failed to fetch search providers for '%1'. Error: %2 + Échec de la récupération des fournisseurs de recherche pour '%1'. Erreur : %2 - - Search has failed for '%1'. Error: %2 - La recherche de '%1' a échoué. Erreur: %2 + + Search has failed for '%1'. Error: %2 + La recherche de '%1' a échoué. Erreur: %2 - - Search has failed for '%2'. - La recherche de '%2' a échoué. + + Search has failed for '%2'. + La recherche de '%2' a échoué. - - + + OCC::UpdateE2eeFolderMetadataJob - - Failed to finalize item. - Échec de finalisation de l’élément. + + Failed to unlock encrypted folder. + Impossible de déverrouiller le dossier chiffré. + + + + Failed to finalize item. + Échec de finalisation de l’élément. - - Failed to update folder metadata. - Échec du téléversement du dossier des métadonnées. + + Failed to update folder metadata. + Échec du téléversement du dossier des métadonnées. - - + + OCC::UpdateE2eeFolderUsersMetadataJob - Could not add or remove a folder user %1, for folder %2 - Impossible d'ajouter ou de supprimer un dossier utilisateur %1, pour le dossier %2. + Could not add or remove a folder user %1, for folder %2 + Impossible d'ajouter ou de supprimer un dossier utilisateur %1, pour le dossier %2. - - Could not add or remove user %1 to access folder %2 - Impossible de supprimer l’utilisateur %1 au dossier d’accès %2 ou de l’y ajouter + + Could not add or remove user %1 to access folder %2 + Impossible de supprimer l’utilisateur %1 au dossier d’accès %2 ou de l’y ajouter - - Could not fetch public key for user %1 - Impossible de récupérer la clé publique pour l'utilisateur %1 + + Could not fetch public key for user %1 + Impossible de récupérer la clé publique pour l'utilisateur %1 - - Could not find root encrypted folder for folder %1 - Impossible de trouver le dossier racine chiffré pour le dossier %1 + + Could not find root encrypted folder for folder %1 + Impossible de trouver le dossier racine chiffré pour le dossier %1 - - Error updating metadata for a folder %1 - Erreur lors de la mise à jour des métadonnées pour un dossier %1 + + + + + + + + + + Error updating metadata for a folder %1 + Erreur lors de la mise à jour des métadonnées pour un dossier %1 - - Failed to unlock a folder. - Échec du déverrouillage d’un dossier. + + Failed to unlock a folder. + Échec du déverrouillage d’un dossier. - - + + OCC::User - - %1 notifications - %1 notifications + + %1 notifications + %1 notifications - - Resolve conflict - Résoudre le conflit + + + Resolve conflict + Résoudre le conflit - - Retry all uploads - Relancer tous les envois + + Retry all uploads + Relancer tous les envois - - + + OCC::UserModel - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Êtes-vous certain de vouloir retirer la connexion au compte <i>%1</i> ?</p><p><b>Note :</b> cette opération <b>ne supprimera aucun de vos fichiers</b> et ne supprimera pas non plus votre compte du serveur.</p> + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Êtes-vous certain de vouloir retirer la connexion au compte <i>%1</i> ?</p><p><b>Note :</b> cette opération <b>ne supprimera aucun de vos fichiers</b> et ne supprimera pas non plus votre compte du serveur.</p> - - Confirm Account Removal - Confirmer le retrait du compte + + Confirm Account Removal + Confirmer le retrait du compte - - Remove connection - Supprimer la connexion + + Cancel + Annuler - - + + + Remove connection + Supprimer la connexion + + + OCC::UserStatusSelectorModel - - %1 days - %1 jours + + %1 days + %1 jours - - %1 hours - %1 heures + + %1 hours + %1 heures - - %1 minutes - %1 minutes + + %1 minutes + %1 minutes - - 1 day - 1 jour + + 1 day + 1 jour - - 1 hour - 1 heure + + + 1 hour + 1 heure - - 1 minute - 1 minute + + 1 minute + 1 minute - - 30 minutes - 30 minutes + + 30 minutes + 30 minutes - - 4 hours - 4 heures + + 4 hours + 4 heures - - Could not clear status message. Make sure you are connected to the server. - Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. + + Could not clear status message. Make sure you are connected to the server. + Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. - - Could not fetch predefined statuses. Make sure you are connected to the server. - Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. + + Could not fetch predefined statuses. Make sure you are connected to the server. + Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. - - Could not fetch status. Make sure you are connected to the server. - Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. + + Could not fetch status. Make sure you are connected to the server. + Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. - - Could not set status. Make sure you are connected to the server. - Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. + + Could not set status. Make sure you are connected to the server. + Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. - - Don't clear - Ne pas effacer + + + Don't clear + Ne pas effacer - - Emojis are not supported. Some status functionality may not work. - Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. + + Emojis are not supported. Some status functionality may not work. + Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. - - Less than a minute - Il y a moins d'une minute + + Less than a minute + Il y a moins d'une minute - - Status feature is not supported. You will not be able to set your status. - La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. + + Status feature is not supported. You will not be able to set your status. + La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. - - This week - Cette semaine + + + This week + Cette semaine - - Today - Aujourd'hui + + + Today + Aujourd'hui - - + + OCC::ValidateChecksumHeader - - The checksum header contained an unknown checksum type "%1" - L’en-tête de la somme de contrôle contenait un type de somme de contrôle inconnu « "%1" » + + The checksum header contained an unknown checksum type "%1" + L’en-tête de la somme de contrôle contenait un type de somme de contrôle inconnu « "%1" » - - The checksum header is malformed. - L’en-tête de la somme de contrôle est mal formé. + + The checksum header is malformed. + L’en-tête de la somme de contrôle est mal formé. - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Le fichier téléchargé ne correspond pas à la somme de contrôle, il sera repris. "%1" != "%2" + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + Le fichier téléchargé ne correspond pas à la somme de contrôle, il sera repris. "%1" != "%2" - - + + OCC::Vfs - - The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - La fonctionnalité système de fichiers virtuels requiert un système de fichiers de type NTFS alors que %1 utilise %2. + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 + La fonctionnalité système de fichiers virtuels requiert un système de fichiers de type NTFS alors que %1 utilise %2. - - + + OCC::VfsDownloadErrorDialog - - %1 could not be downloaded. - %1 ne peut pas être téléchargé. + + %1 could not be downloaded. + %1 ne peut pas être téléchargé. + + + + > More details + > Plus de détails - - > More details - > Plus de détails + + could not be downloaded + ne peut pas être téléchargé - - could not be downloaded - ne peut pas être téléchargé + + Download error + Erreur de téléchargement - - Download error - Erreur de téléchargement + + Error downloading + Erreur au téléchargement - - Error downloading - Erreur au téléchargement + + Error downloading %1 + Erreur au téléchargement %1 - - Error downloading %1 - Erreur au téléchargement %1 + + More details + Plus de détails + + + OCC::VfsSuffix - - More details - Plus de détails + + + Error updating metadata due to invalid modification time + Erreur de mise à jour des métadonnées à cause d'une date de modification invalide - - + + + OCC::VfsXAttr + + + + Error updating metadata due to invalid modification time + Erreur de mise à jour des métadonnées à cause d'une date de modification invalide + + + OCC::WebEnginePage - - Invalid certificate detected - Certificat invalide + + Invalid certificate detected + Certificat invalide - - The host "%1" provided an invalid certificate. Continue? - L’hôte "%1" utilise un certificat invalide. Continuer ? + + The host "%1" provided an invalid certificate. Continue? + L’hôte "%1" utilise un certificat invalide. Continuer ? - - + + OCC::WebFlowCredentials - - <b>You have been logged out of your account %1 at %2. Please login again.</b> - <b>Vous avez été déconnecté(e) de votre compte %1 à %2. Veuillez vous reconnecter.</b> + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + <b>Vous avez été déconnecté(e) de votre compte %1 à %2. Veuillez vous reconnecter.</b> - Please login with the account: %1 - Veuillez vous connecter avec le compte : %1 + Please login with the account: %1 + Veuillez vous connecter avec le compte : %1 - You have been logged out of your account %1 at %2. Please login again. - Vous avez été déconnecté de votre compte %1 à %2. Merci de vous reconnecter. + You have been logged out of your account %1 at %2. Please login again. + Vous avez été déconnecté de votre compte %1 à %2. Merci de vous reconnecter. - - + + OCC::WelcomePage - Easy-to-use web mail, calendaring & contacts - Courrier électronique, calendrier et contacts en ligne faciles à utiliser + Easy-to-use web mail, calendaring & contacts + Courrier électronique, calendrier et contacts en ligne faciles à utiliser - - Form - Formulaire + + Form + Formulaire - - Host your own server - Hébergez votre propre serveur + + Host your own server + Hébergez votre propre serveur - - Keep your data secure and under your control - Gardez vos données en sécurité et sous votre contrôle + + Keep your data secure and under your control + Gardez vos données en sécurité et sous votre contrôle - - Log in - Se connecter + + Log in + Se connecter - Screensharing, online meetings & web conferences - Partage d'écran, réunions en ligne et conférences Web + Screensharing, online meetings & web conferences + Partage d'écran, réunions en ligne et conférences Web - Secure collaboration & file exchange - Collaboration et échange de fichiers sécurisés + Secure collaboration & file exchange + Collaboration et échange de fichiers sécurisés - - Sign up with provider - Se connecter avec un fournisseur + + Sign up with provider + Se connecter avec un fournisseur - - + + OCC::ownCloudGui - - Account %1: %2 - Compte %1 : %2 + + Account %1: %2 + Compte %1 : %2 + + + + Account synchronization is disabled + La synchronisation est en pause - - Account synchronization is disabled - La synchronisation est en pause + + Disconnected from %1 + Déconnecté de %1 - - Disconnected from %1 - Déconnecté de %1 + + Disconnected from accounts: + Déconnecté des comptes : - - Disconnected from accounts: - Déconnecté des comptes : + + Disconnected from some accounts + Déconnecté de certains comptes - - Disconnected from some accounts - Déconnecté de certains comptes + + Error during synchronization + Erreur durant la synchronisation - - Error during synchronization - Erreur durant la synchronisation + + Folder %1: %2 + Dossier %1 : %2 - - Folder %1: %2 - Dossier %1 : %2 + + No sync folders configured + Aucun dossier de synchronisation configuré - - No sync folders configured - Aucun dossier de synchronisation configuré + + Please sign in + Veuillez vous connecter - - Please sign in - Veuillez vous connecter + + Disconnected + Déconnecté - - Synchronization is paused - La synchronisation est en pause + + Signed out + Session fermée - - Syncing %1 of %2 (%3 left) - Synchronisation de %1 sur %2 (%3 restants) + + + Synchronization is paused + La synchronisation est en pause - - The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - Le serveur sur le compte %1 fonctionne avec une version non-supportée %2. Utiliser ce client avec des versions non-supportées du serveur n'est pas testé et est potentiellement dangereux. Procédez à vos risques et périls. + + Checking for changes in remote "%1" + Vérification des modifications dans "%1" distant - - There are no sync folders configured. - Aucun dossier à synchroniser n'est configuré + + Checking for changes in local "%1" + Vérification des modifications dans "%1" local - - Unresolved conflicts - Conflits non résolus + + Syncing %1 of %2 (%3 left) + Synchronisation de %1 sur %2 (%3 restants) - - Unsupported Server Version - Version du Serveur non prise en charge + + Syncing %1 of %2 + Synchronisation de %1 sur %2 - - Up to date - À jour + + Syncing %1 (%2 left) + Synchronisation de %1 (%2 restant) - - + + + Syncing %1 + Synchronisation de %1 + + + + %1 (%2, %3) + %1 (%2, %3) + + + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + Le serveur sur le compte %1 fonctionne avec une version non-supportée %2. Utiliser ce client avec des versions non-supportées du serveur n'est pas testé et est potentiellement dangereux. Procédez à vos risques et périls. + + + + There are no sync folders configured. + Aucun dossier à synchroniser n'est configuré + + + + Unresolved conflicts + Conflits non résolus + + + + Unsupported Server Version + Version du Serveur non prise en charge + + + + Up to date + À jour + + + OCC::sesSnackBar - - Success - Réussite + + Error + Erreur + + + + Warning + Attention - - + + + Success + Réussite + + + OwncloudAdvancedSetupPage - - &Local Folder - &Dossier local + + &Local Folder + &Dossier local - - <html><head/><body><p>If this box is checked, + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Si cette case est cochée, le contenu existant dans le dossier local sera effacé pour commencer une synchronisation propre à partir du serveur.</p><p>Ne cochez pas cette case si le contenu local doit être téléchargé dans le dossier du serveur..</p></body></html> + <html><head/><body><p>Si cette case est cochée, le contenu existant dans le dossier local sera effacé pour commencer une synchronisation propre à partir du serveur.</p><p>Ne cochez pas cette case si le contenu local doit être téléchargé dans le dossier du serveur..</p></body></html> - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Si cette case est cochée, le contenu existant du dossier local sera supprimé pour démarrer une synchronisation propre depuis le serveur.</p><p>Ne pas cocher si le contenu local doit être téléversé vers le serveur.</p></body></html> + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Si cette case est cochée, le contenu existant du dossier local sera supprimé pour démarrer une synchronisation propre depuis le serveur.</p><p>Ne pas cocher si le contenu local doit être téléversé vers le serveur.</p></body></html> - - Ask before syncing external storages - Confirmation avant de synchroniser des stockages externes + + Ask before syncing external storages + Confirmation avant de synchroniser des stockages externes - - Ask before syncing folders larger than - Demander confirmation avant de synchroniser les dossiers de taille supérieure à + + Ask before syncing folders larger than + Demander confirmation avant de synchroniser les dossiers de taille supérieure à - - Choose different folder - Choisir un autre dossier + + Choose different folder + Choisir un autre dossier - - Erase local folder and start a clean sync - Effacer le dossier local et démarrer une synchronisation complète + + + MB + + Trailing part of "Ask confirmation before syncing folder larger than" + - - Keep local data - Conserver les données locales + + Choose what to sync + Sélectionner le contenu à synchroniser - - Local Folder - Dossier local + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + + - - Server address - Adresse du serveur + + Erase local folder and start a clean sync + Effacer le dossier local et démarrer une synchronisation complète - - Sync Logo - Logo de synchronisation + + Keep local data + Conserver les données locales - - Synchronize everything from server - Tout synchroniser depuis le serveur + + Local Folder + Dossier local - Username - Nom d’utilisateur + + Server address + Adresse du serveur - - + + + Sync Logo + Logo de synchronisation + + + + Synchronize everything from server + Tout synchroniser depuis le serveur + + + + Username + Nom d’utilisateur + + + OwncloudHttpCredsPage - - &Password - &Mot de passe + + &Password + &Mot de passe - - &Username - &Nom d’utilisateur + + &Username + &Nom d’utilisateur - - + + OwncloudOAuthCredsPage - Please switch to your browser to proceed. - Merci de basculer vers votre navigateur pour terminer. + Please switch to your browser to proceed. + Merci de basculer vers votre navigateur pour terminer. - Re-open Browser - Redémarrez votre navigateur + Re-open Browser + Redémarrez votre navigateur - - + + OwncloudSetupPage - - TextLabel - Étiquette de texte + + + TextLabel + Étiquette de texte - - This is the link to your %1 web interface when you open it in the browser. - Il s'agit de l'adresse URL lorsque vous utilisez %1 dans un navigateur. + + Server address + Adresse du serveur - - + + + This is the link to your %1 web interface when you open it in the browser. + Il s'agit de l'adresse URL lorsque vous utilisez %1 dans un navigateur. + + + QObject - - - %nd - - - - %nd - + + 1m + 1m - - - %nh - - - - %nh - + + + Could not create debug archive in selected location! + Impossible de créer une archive de débogage à l’emplacement sélectionné ! + + + + Failed to create debug archive + Échec de création de l’archive de débogage - - %nm - - - - %nm - + + %nd + delay in days after an activity + + + + - - 1m - 1m + + in the future + Dans le futur + + + + %nh + delay in hours after an activity + + + + - - Could not create debug archive in selected location! - Impossible de créer une archive de débogage à l’emplacement sélectionné ! + + 1m + one minute after activity date and time + 1m + + + + %nm + delay in minutes after an activity + + + + - - Failed to create debug archive - Échec de création de l’archive de débogage + + New folder + Nouveau dossier - - in the future - Dans le futur + + now + A l'instant - - New folder - Nouveau dossier + + Paths beginning with '#' character are not supported in VFS mode. + Les chemins commençant par le caractère « # » ne sont pas pris en charge dans le mode VFS. - - now - A l'instant + + Some time ago + Il y a quelque temps - - Paths beginning with '#' character are not supported in VFS mode. - Les chemins commençant par le caractère « # » ne sont pas pris en charge dans le mode VFS. + + Synced %1 + %1 a été synchronisé - - Some time ago - Il y a quelque temps + + The directory %1 cannot be part of your sync directory. Please choose another folder. + La répertoire %1 ne peut pas faire partie de votre répertoire de synchronisation. Veuillez choisir un autre dossier. - - Synced %1 - %1 a été synchronisé + + You changed %1 + Vous avez modifié %1 - - The directory %1 cannot be part of your sync directory. Please choose another folder. - La répertoire %1 ne peut pas faire partie de votre répertoire de synchronisation. Veuillez choisir un autre dossier. + + You created %1 + Vous avez créé %1 - - You changed %1 - Vous avez modifié %1 + + You deleted %1 + Vous avez supprimé %1 - - You created %1 - Vous avez créé %1 + + You renamed %1 + Vous avez renommé %1 - - You deleted %1 - Vous avez supprimé %1 + + %1: %2 + this displays an error string (%2) for a file %1 + %1 : %2 - - You renamed %1 - Vous avez renommé %1 + + Reply + Répondre - - + + ResolveConflictsDialog - - %1 files in conflict - - %1 fichier in conflict - %1 files in conflict - %1 fichiers en conflit - + %1 files in conflict + + %1 fichier in conflict + %1 files in conflict + + + + + All local versions + Toutes les versions locales - - All local versions - Toutes les versions locales + + All server versions + Toutes les versions serveur + + + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. + Choisissez si vous souhaitez conserver la version locale, la version serveur, ou les deux. Si vous choisissez les deux, un numéro sera ajouté au nom du fichier local. + + + + %1 files in conflict + indicate the number of conflicts to resolve + + %1 fichier in conflict + %1 files in conflict + - - All server versions - Toutes les versions serveur + + Resolve conflicts + Résoudre les conflits - - Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - Choisissez si vous souhaitez conserver la version locale, la version serveur, ou les deux. Si vous choisissez les deux, un numéro sera ajouté au nom du fichier local. + + Cancel + Annuler - - Resolve conflicts - Résoudre les conflits + + Solve sync conflicts + Résoudre les conflits de synchronisation + + + SesErrorBox - - Solve sync conflicts - Résoudre les conflits de synchronisation + + Error + Erreur - - + + SesTrayHeader - - Open local or group folders - Ouvrir des dossiers locaux ou de groupe + + Open local or group folders + Ouvrir des dossiers locaux ou de groupe - - Open Nextcloud in browser - Ouvrir HiDrive Next dans le navigateur + + Open Nextcloud in browser + Ouvrir HiDrive Next dans le navigateur - - Website - Site Web + + Website + Site Web - - + + ShareDelegate - - Copied! - Copié ! + + Copied! + Copié ! + + + + Copy share link location + Copier le lien de partage - - Copy share link location - Copier le lien de partage + + Create a new share link + Créer un nouveau lien de partage - - Create a new share link - Créer un nouveau lien de partage + + Share options + Options de partage - - + + ShareDetailsPage - - Add another link - Ajouter un autre lien + + Add another link + Ajouter un autre lien - - Allow resharing - Permettre le repartage + + Allow resharing + Permettre le repartage - - Allow upload and editing - Autoriser le téléversement et l'édition + + + Allow upload and editing + Autoriser le téléversement et l'édition - - An error occurred setting the share password. - Une erreur est survenue lors de la configuration du mot de passe de partage. + + An error occurred setting the share password. + Une erreur est survenue lors de la configuration du mot de passe de partage. - - Copy share link - Copier le lien + + Copy share link + Copier le lien - - Custom Permissions - Autorisations personnalisées + + Custom Permissions + Autorisations personnalisées - Edit share - Modifier le partage + Edit share + Modifier le partage - - Enter the note to recipient - Saisir la remarque à l’attention du destinataire + + Enter the note to recipient + Saisir la remarque à l’attention du destinataire - - File drop (upload only) - Dépôt de fichiers (envoi uniquement) + + File drop (upload only) + Dépôt de fichiers (envoi uniquement) - - Hide download - Masquer le téléchargement + + Hide download + Masquer le téléchargement - - Note to recipient - Note au destinataire + + Note to recipient + Note au destinataire - - Password protect - Protéger par mot de passe + + Dismiss + Rejeter - - Set expiration date - Définir une date d'expiration + + Password protect + Protéger par mot de passe - Share label - Libellé du partage + + Set expiration date + Définir une date d'expiration - - Share link copied! - Lien copié ! + Share label + Libellé du partage - - Unshare - Cesser le partage + + Share link copied! + Lien copié ! - - View only - Afficher seulement + + Unshare + Cesser le partage - - + + + View only + Afficher seulement + + + ShareView - - Password required for new share - Mot de passe requis pour le nouveau partage + + Password required for new share + Mot de passe requis pour le nouveau partage - - Share password - Mot de passe du partage + + Share password + Mot de passe du partage - - Sharing is disabled - Le partage est désactivté + + Sharing is disabled + Le partage est désactivté - - Sharing is disabled. - Le partage est désactivé. + + Sharing is disabled. + Le partage est désactivé. - - This item cannot be shared. - L'élément ne peut pas être partagé. + + This item cannot be shared. + L'élément ne peut pas être partagé. - - + + ShareeSearchField - - Search for users or groups… - Rechercher des utilisateurs ou des groupes... + + Search for users or groups… + Rechercher des utilisateurs ou des groupes... - - Sharing is not available for this folder - Le partage n'est pas disponible pour ce dossier + + Sharing is not available for this folder + Le partage n'est pas disponible pour ce dossier - - + + SyncStatus - - Sync now - Synchroniser maintenant + + Sync now + Synchroniser maintenant + + + + Resolve conflicts + Résoudre les conflits - - + + TalkReplyTextField - - Reply to … - Répondre à... + + Reply to … + Répondre à... - - Send reply to chat message - Envoyer la réponse dans la discussion + + Send reply to chat message + Envoyer la réponse dans la discussion - - + + TestSetUserStatusDialog - - 7 days - 7 jours + + + 1 day + 1 jour - - + + + + + + + Don't clear + Ne pas effacer + + + + + + + + 1 hour + 1 heure + + + + + + + 30 minutes + 30 minutes + + + + + + 4 hours + 4 heures + + + + + + Today + Aujourd'hui + + + + + + This week + Cette semaine + + + + Less than a minute + Il y a moins d'une minute + + + + 1 minute + 1 minute + + + + 7 days + 7 jours + + + + Could not fetch predefined statuses. Make sure you are connected to the server. + Impossible de récupérer les statuts prédéfinis. Assurez-vous que vous êtes connecté au serveur. + + + + Could not fetch status. Make sure you are connected to the server. + Impossible de récupérer le statut. Merci de vérifier que vous êtes bien connecté(e) au serveur. + + + + Status feature is not supported. You will not be able to set your status. + La fonctionnalité "statut" n'est pas supporté. Vous ne pourrez pas définir votre statut. + + + + Could not set status. Make sure you are connected to the server. + Impossible de définir le statut. Merci de vérifier que vous êtes connecté(e) au serveur. + + + + Emojis are not supported. Some status functionality may not work. + Les Emojis ne sont pas supportés. Certaines fonctionnalités de statut pourront ne pas fonctionner. + + + + Could not clear status message. Make sure you are connected to the server. + Impossible d'effacer le message de statut. Assurez-vous que vous êtes connecté au serveur. + + + TrayFoldersMenuButton - - Files - Fichiers + + Files + Fichiers + + + Group folder button + Bouton du dossier de groupes + + + + Open %1 in file explorer + Ouvrir %1 dans l'explorateur de fichiers - Group folder button - Bouton du dossier de groupes + + Open group folder "%1" + Ouvrir le dossier de groupes "%1" - - Open %1 in file explorer - Ouvrir %1 dans l'explorateur de fichiers + + Open local folder + Ouvrir le dossier local - - Open group folder "%1" - Ouvrir le dossier de groupes "%1" + + Open local or group folders + Ouvrir des dossiers locaux ou de groupe - - Open local folder - Ouvrir le dossier local + + Connected + Connecté - - Open local folder "%1" - Ouvrir le dossier local « %1 » + + Disconnected + Déconnecté - - User group and local folders menu - Menu de groupe d'utilisateurs et dossiers locaux + + Open local folder "%1" + Ouvrir le dossier local « %1 » - - + + + User group and local folders menu + Menu de groupe d'utilisateurs et dossiers locaux + + + TrayWindowAccountMenu - - Account switcher and settings menu - Sélecteur de compte et menu des paramètres + + Account switcher and settings menu + Sélecteur de compte et menu des paramètres + + + + Current account + Compte actuel + + + + Resume sync for all + Relancer toutes les synchros - - Current account - Compte actuel + + Pause sync for all + Suspendre toutes les synchros - - Current account avatar - Avatar actuel du compte + + Add account + Ajouter un compte - - Current account status is do not disturb - Le statut du compte actuel est Ne pas déranger + + Settings + Paramètres - - Current account status is online - Le statut du compte actuel est En ligne + + Current account avatar + Avatar actuel du compte - - Exit - Quitter + + Current account status is do not disturb + Le statut du compte actuel est Ne pas déranger - - + + + Current account status is online + Le statut du compte actuel est En ligne + + + + Exit + Quitter + + + TrayWindowHeaderBar - - More apps - Plus d’applications + + Website + Site Web - - Open %1 in browser - Ouvrir %1 dans le navigateur + + Open Nextcloud in browser + Ouvrir HiDrive Next dans le navigateur - - Open Nextcloud Talk in browser - Ouvrez Nextcloud Talk dans le navigateur + + Open local or group folders + Ouvrir des dossiers locaux ou de groupe - - + + + More apps + Plus d’applications + + + + Open %1 in browser + Ouvrir %1 dans le navigateur + + + + Open Nextcloud Talk in browser + Ouvrez Nextcloud Talk dans le navigateur + + + UnifiedSearchInputContainer - - Search files, messages, events … - Rechercher des fichiers, des messages, des événements … + + Search files, messages, events … + Rechercher des fichiers, des messages, des événements … - - + + UnifiedSearchResultFetchMoreTrigger - - Load more results - Charger plus de résultats + + Load more results + Charger plus de résultats - - + + UnifiedSearchResultItemSkeleton - - Search result skeleton. - Squelette de résultat de recherche. + + Search result skeleton. + Squelette de résultat de recherche. - - + + + UnifiedSearchResultListItem + + + Load more results + Charger plus de résultats + + + UnifiedSearchResultNothingFound - - No results for - Aucun résultat pour + + No results for + Aucun résultat pour - - + + UnifiedSearchResultSectionItem - - Search results section %1 - Section de résultats de recherche %1 + + Search results section %1 + Section de résultats de recherche %1 - - + + UserLine - - Account actions - Actions du compte + + Account actions + Actions du compte + + + + + Log out + Se déconnecter + + + + + Log in + Se connecter - - Remove account - Retirer le compte + + Remove account + Retirer le compte - - Set status - Définir le statut + + Set status + Définir le statut - - Switch to account - Utiliser ce compte + + Switch to account + Utiliser ce compte - - + + UserStatusSelector - - Appear offline - Apparaitre hors-ligne + + Appear offline + Apparaitre hors-ligne - - Away - Absent(e) + + Away + Absent(e) - - Clear status message - Effacer le message de statut + + Cancel + Annuler - - Clear status message after - Effacer le message de statut après + + Clear status message + Effacer le message de statut - - Do not disturb - Ne pas déranger + + Clear status message after + Effacer le message de statut après - - Invisible - Invisible + + Do not disturb + Ne pas déranger - - Mute all notifications - Désactiver toutes les notifications + + Invisible + Invisible - - Online - En ligne + + Mute all notifications + Désactiver toutes les notifications - - Online status - Statut en ligne + + Online + En ligne - - Set status message - Définir le message de statut + + Online status + Statut en ligne - - Status message - Message de statut + + Set status message + Définir le message de statut - - What is your status? - Quel est votre statut ? + + Status message + Message de statut - - + + + What is your status? + Quel est votre statut ? + + + Utility - - %L1 B - %L1 octets + + %L1 B + %L1 octets - - %L1 GB - %L1 Go + + %L1 GB + %L1 Go - - %L1 KB - %L1 Ko + + %L1 KB + %L1 Ko - - %L1 MB - %L1 Mo + + %L1 MB + %L1 Mo - - %L1 TB - %L1 To + + %L1 TB + %L1 To - - %n day(s) - - - - - + + %n day(s) + + + + - - %n hour(s) - - - - - + + %n hour(s) + + + + - - %n minute(s) - - - - - + + %n minute(s) + + + + + + + + %1 %2 + %1 %2 - - %n month(s) - - - - - + + %n month(s) + + + + - - %n second(s) - - - - - + + %n second(s) + + + + - - %n year(s) - - - - - - - - + + %n year(s) + + + + + + + Window - Add new account - Ajouter un nouveau compte + Add new account + Ajouter un nouveau compte - - New activities - Nouvelles activités + + New activities + Nouvelles activités - - Nextcloud desktop main dialog - Boîte de dialogue principale du bureau Nextcloud + + Nextcloud desktop main dialog + Boîte de dialogue principale du bureau Nextcloud - - Unified search results list - Liste de résultats de recherche unifiée + + Unified search results list + Liste de résultats de recherche unifiée - - + + main.cpp - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - %1 nécessite une zone de notification système fonctionnelle. Si vous utiliser XFCE, veuillez suivre <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">ces instructions</a>. Sinon, installez une application de la barre d'état système telle que "trayer" et réessayez. + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. + %1 nécessite une zone de notification système fonctionnelle. Si vous utiliser XFCE, veuillez suivre <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">ces instructions</a>. Sinon, installez une application de la barre d'état système telle que "trayer" et réessayez. - - System Tray not available - Zone de notification système non disponible + + System Tray not available + Zone de notification système non disponible - - + + nextcloudTheme::aboutInfo() - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> + + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Généré à partir de la révision Git <a href="%1">%2</a> du %3, %4 en utilisant Qt %5, %6</small></p> - - + + progress - - Deleted - Supprimé + + Deleted + Supprimé + + + + Downloaded + Reçu + + + + downloading + téléchargement de + + + + error + erreur - - Downloaded - Reçu + + Filesystem access error + Erreur d'accès au système de fichiers - - downloading - téléchargement de + + Ignored + Ignoré - - error - erreur + + Moved to %1 + Déplacé vers %1 - - Filesystem access error - Erreur d'accès au système de fichiers + + moving + déplacement - - Ignored - Ignoré + + Replaced by virtual file + Remplacé par un fichier virtuel - - Moved to %1 - Déplacé vers %1 + + Server version downloaded, copied changed local file into case conflict conflict file + La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier de conflit de casse. - - moving - déplacement + + Server version downloaded, copied changed local file into conflict file + La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier conflit. - - Replaced by virtual file - Remplacé par un fichier virtuel + + + Unknown + Inconnu - - Server version downloaded, copied changed local file into case conflict conflict file - La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier de conflit de casse. + + Updated local metadata + Métadonnées locales mises à jour - - Server version downloaded, copied changed local file into conflict file - La version du serveur est téléchargée, les changements locaux ont été copiés dans un fichier conflit. + + Error + Erreur - - Unknown - Inconnu + + Updated local virtual files metadata + Métadonnées des fichiers virtuels locaux mises à jour - - Updated local metadata - Métadonnées locales mises à jour + + deleting + supprimés - - Updated local virtual files metadata - Métadonnées des fichiers virtuels locaux mises à jour + + ignoring + ignorés - - updating local metadata - Mise à jour des métadonnées locales + + updating local metadata + Mise à jour des métadonnées locales - - updating local virtual files metadata - Mise à jour des métadonnées des fichiers virtuels locaux + + updating local virtual files metadata + Mise à jour des métadonnées des fichiers virtuels locaux - - Uploaded - Envoyé + + Uploaded + Envoyé - - uploading - envoi + + uploading + envoi - - Virtual file created - Fichier virtuel créé + + Virtual file created + Fichier virtuel créé - - + + theme - - Aborting … - Annulation... + + Aborting … + Annulation... - - Preparing to sync - Préparation à la synchronisation + + Preparing to sync + Préparation à la synchronisation - - Setup Error - Erreur de configuration + + Setup Error + Erreur de configuration - - Status undefined - Statut indéfini + + Status undefined + Statut indéfini - - Sync Error - Erreur de synchronisation + + Sync Error + Erreur de synchronisation - - Sync is paused - La synchronisation est en pause + + Sync is paused + La synchronisation est en pause - - Sync is running - Synchronisation en cours + + Sync is running + Synchronisation en cours - - Sync Success - Synchronisation réussie + + Sync Success + Synchronisation réussie - - Sync Success, some files were ignored. - Synchronisation terminée avec succès, certains fichiers ont été ignorés. + + Sync Success, some files were ignored. + Synchronisation terminée avec succès, certains fichiers ont été ignorés. - - Waiting to start sync - Synchronisation en attente + + Waiting to start sync + Synchronisation en attente - - + + utility - - Always available locally - Toujours disponible localement + + Always available locally + Toujours disponible localement - - Available online only - Disponible seulement en ligne + + Available online only + Disponible seulement en ligne - - Could not open browser - Impossible de démarrer le navigateur + + Could not open browser + Impossible de démarrer le navigateur - - Could not open email client - Impossible d'ouvrir le client de messagerie + + Could not open email client + Impossible d'ouvrir le client de messagerie - - Currently available locally - Actuellement disponible en local + + Currently available locally + Actuellement disponible en local - - Free up local space - Libérer de l'espace local + + Free up local space + Libérer de l'espace local - - Make always available locally - Toujours rendre disponible localement + + Make always available locally + Toujours rendre disponible localement - - Some available online only - Certains sont disponibles en ligne seulement + + Some available online only + Certains sont disponibles en ligne seulement - - There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - Une erreur est survenue au lancement du navigateur pour visiter l'adresse %1. Il est possible qu'aucun navigateur par défaut ne soit configuré. + + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? + Une erreur est survenue au lancement du navigateur pour visiter l'adresse %1. Il est possible qu'aucun navigateur par défaut ne soit configuré. - - There was an error when launching the email client to create a new message. Maybe no default email client is configured? - Il y a eu une erreur lors du lancement du client de messagerie pour créer un nouveau message. Peut-être qu'aucun client de messagerie n'est configuré ? + + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + Il y a eu une erreur lors du lancement du client de messagerie pour créer un nouveau message. Peut-être qu'aucun client de messagerie n'est configuré ? - + diff --git a/translations/client_nl.ts b/translations/client_nl.ts index e746bff4631a4..f3b15071f5f69 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -1,3728 +1,4230 @@ - - - + + + + + - &Automatically check for Updates - &Controleer automatisch op updates + &Automatically check for Updates + &Controleer automatisch op updates - &Launch on System Startup - &Starten bij systeemstart + &Launch on System Startup + &Starten bij systeemstart - Copy link - Link kopiëren + Copy link + Link kopiëren - No Proxy - Geen Proxy + No Proxy + Geen Proxy - Remove All Files? - Alle bestanden verwijderen? + Remove All Files? + Alle bestanden verwijderen? - Show Call Notifications - + Show Server &Notifications + Tonen server&meldingen - Show Server &Notifications - Tonen server&meldingen + Use &Monochrome Icons + Gebruik &monochrome pictogrammen - - Show sync folders in &Explorer's navigation pane - - - - Use &Monochrome Icons - Gebruik &monochrome pictogrammen - - - + + ActivityItem - - In %1 - In %1 + + In %1 + In %1 - - Open %1 locally - %1 lokaal openen + + Open %1 locally + %1 lokaal openen - - + + ActivityItemContent - - Dismiss - Negeren + + Dismiss + Negeren - - Open file details - Bestandsdetails openen + + Open file details + Bestandsdetails openen - - + + ActivityList - - Activity list - Activiteitenlijst + + Activity list + Activiteitenlijst - - No activities yet - Nog geen activiteiten + + No activities yet + Nog geen activiteiten - - + + BasicComboBox - - Clear status message menu - Statusbericht wissen + + Clear status message menu + Statusbericht wissen - - + + CallNotificationDialog - - Answer Talk call notification - + + Answer Talk call notification + - - Decline - Afwijzen + + Decline + Afwijzen - - Decline Talk call notification - Afwijzingsmelding voor gesprek + + Decline Talk call notification + Afwijzingsmelding voor gesprek - - Talk notification caller avatar - Spraakmelding beller avatar + + Talk notification caller avatar + Spraakmelding beller avatar - - + + CloudProviderWrapper - - %1 (%2, %3) - %1 (%2, %3) + + %1 (%2, %3) + %1 (%2, %3) - - Checking for changes in "%1" - Controleren op wijzigingen in '%1' + + Checking for changes in "%1" + Controleren op wijzigingen in '%1' - - Help - Help + + Help + Help - - Log out - Uitloggen + + Log out + Uitloggen - - No recently changed files - Geen recent gewijzigde bestanden + + + No recently changed files + Geen recent gewijzigde bestanden - - Open website - Openen website + + Open website + Openen website - - Pause synchronization - Pauzeer synchronisatie + + Pause synchronization + Pauzeer synchronisatie - - Quit sync client - Afsluiten synchronisatieclient + + Quit sync client + Afsluiten synchronisatieclient - - Recently changed - Recent gewijzigd + + Recently changed + Recent gewijzigd - - Settings - Instellingen + + Settings + Instellingen - - Sync paused - Synchroniseren gepauzeerd + + Sync paused + Synchroniseren gepauzeerd - - Syncing - Synchroniseren + + Syncing + Synchroniseren - - Syncing %1 - Synchroniseren %1 + + Syncing %1 + Synchroniseren %1 - - Syncing %1 (%2 left) - Synchroniseren %1 (%2 over) + + Syncing %1 (%2 left) + Synchroniseren %1 (%2 over) - - Syncing %1 of %2 - Synchroniseren %1 van %2 + + Syncing %1 of %2 + Synchroniseren %1 van %2 - - Syncing %1 of %2 (%3 left) - Synchroniseer %1 van %2 (%3 over) + + Syncing %1 of %2 (%3 left) + Synchroniseer %1 van %2 (%3 over) - - + + ConflictDelegate - - Local version - Lokale versie + + Local version + Lokale versie - - Server version - Serverversie + + Server version + Serverversie - - + + CrashReporter - - Close - Sluiten + + + + We cannot gather useful debug information on your system. + + + + + + + + + Close + Sluiten + + + + Ready to send debug information (<a href="%1">view backtrace</a>). + + + + + Gathering debug information... + + + + + Uploaded %L1 of %L2 KB. + + + + + Sent! <b>Many thanks</b>. Please refer to crash <b>%1</b> in bug reports. + - - + + + Failed to send crash info. + + + + + Tomahawk Crash Reporter + + + + + <html><head/><body><p><br/></p></body></html> + + + + + Abort + + + + + Send this report + + + + + Don't send + + + + + You can disable sending crash reports in the configuration dialog. + + + + EditFileLocallyLoadingDialog - - Opening file for local editing - + + Opening file for local editing + - - + + EmojiPicker - - No recent emojis - + + No recent emojis + - - + + ErrorBox - - Error - Fout + + Error + Fout - - + + FakeHangingReply - - Operation canceled - Operatie geannuleerd + + Operation canceled + Operatie geannuleerd - - + + FileDetailsPage - Sharing - Delen + Sharing + Delen + + + + Dismiss + Negeren - - + + FileDetailsWindow - - File details of %1 · %2 - + + File details of %1 · %2 + - - + + FileProviderEvictionDialog - - Evict materialised files - + + Evict materialised files + - - Materialised items - + + Materialised items + - - Reload - + + Reload + - - + + FileProviderFastEnumerationSettings - - Enable fast sync - + + Enable fast sync + - - Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. - + + Fast sync will only sync changes in files and folders within folders that have been explored. This can significantly increase responsiveness on initial configuration of virtual files. However, it will cause redundant downloads of files moved to an unexplored folder. + - - + + FileProviderFileDelegate - - Delete - Verwijderen + + Delete + Verwijderen - - + + FileProviderSettings - - Advanced - Geavanceerd + + Advanced + Geavanceerd - - Create debug archive - + + Create debug archive + - - Enable virtual files - + + Enable virtual files + - - General settings - + + General settings + - - Signal file provider domain - + + Signal file provider domain + - - Virtual files settings - + + Virtual files settings + - - + + FileProviderStorageInfo - - %1 GB of %2 GB remote files synced - + + %1 GB of %2 GB remote files synced + - - Evict local copies... - Lokale kopieën verwijderen... + + Evict local copies... + Lokale kopieën verwijderen... - - Local storage use - + + Local storage use + - - + + FileProviderSyncStatus - - All synced! - Alles gesynchroniseerd! + + All synced! + Alles gesynchroniseerd! - - + + + Syncing + Synchroniseren + + + FileSystem - Could not make directories in trash - Kan geen mappen maken in de prullenbak + Could not make directories in trash + Kan geen mappen maken in de prullenbak - Could not move "%1" to "%2" - Kan "%1" niet verplaatsen naar "%2" + Could not move "%1" to "%2" + Kan "%1" niet verplaatsen naar "%2" - - Could not remove folder "%1" - Kan map "%1" niet verwijderen + + Could not remove folder "%1" + Kan map "%1" niet verwijderen - - Error removing "%1": %2 - Fout bij verwijderen '%1': %2 + + Error removing "%1": %2 + Fout bij verwijderen '%1': %2 - Moving to the trash is not implemented on this platform - Verplaatsen naar de prullenbak wordt niet ondersteund op dit platform + Moving to the trash is not implemented on this platform + Verplaatsen naar de prullenbak wordt niet ondersteund op dit platform - - + + Flow2AuthWidget - - An error occurred while connecting. Please try again. - Er is een fout opgetreden tijdens het verbinden. Probeer het opnieuw. + + An error occurred while connecting. Please try again. + Er is een fout opgetreden tijdens het verbinden. Probeer het opnieuw. - - Browser Authentication - Browserauthenticatie + + Browser Authentication + Browserauthenticatie - - Copy Link - Kopiëren link + + Copy Link + Kopiëren link - - Logo - Logo + + Logo + Logo - - Reopen Browser - Heropen browser + + Reopen Browser + Heropen browser - - Switch to your browser to connect your account - Schakel over naar je browser om je account te verbinden + + Switch to your browser to connect your account + Schakel over naar je browser om je account te verbinden - - + + FolderWizardSelectiveSync - - Add Folder Sync - Mapsynchronisatie toevoegen + + Add Folder Sync + Mapsynchronisatie toevoegen - - Step 3 of 3: Selektive Synchronisation - Stap 3 van 3: Selektieve synchronisatie + + Step 3 of 3: Selektive Synchronisation + Stap 3 van 3: Selektieve synchronisatie - - + + FolderWizardSourcePage - - &Choose - &Kiezen + + Add Folder Sync + Mapsynchronisatie toevoegen + + + + &Choose + &Kiezen - &Choose … - &Kies ... + &Choose … + &Kies ... - Pick a local folder on your computer to sync - Kies een map op je computer om te synchroniseren + Pick a local folder on your computer to sync + Kies een map op je computer om te synchroniseren - - Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized - Selecteer een map op je harde schijf die permanent verbonden moet zijn met je %1. Alle bestanden en submappen worden automatisch geüpload en gesynchroniseerd. + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Selecteer een map op je harde schijf die permanent verbonden moet zijn met je %1. Alle bestanden en submappen worden automatisch geüpload en gesynchroniseerd. - - Step 1 of 3: Select local folder - Stap 1 van 3: Selecteer lokale map + + Step 1 of 3: Select local folder + Stap 1 van 3: Selecteer lokale map - - + + FolderWizardTargetPage - - Both folders are permanently linked and the respective contents are automatically synchronized and updated. - Beide mappen zijn permanent gekoppeld en de respectieve inhoud wordt automatisch gesynchroniseerd en bijgewerkt. + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Beide mappen zijn permanent gekoppeld en de respectieve inhoud wordt automatisch gesynchroniseerd en bijgewerkt. + + + + Create folder + Maak map + + + + Folders + Mappen + + + + Add Folder Sync + Mapsynchronisatie toevoegen - - Create folder - Maak map + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + Selecteer of maak nu een doelmap in uw %1 waar de inhoud moet worden geüpload en gesynchroniseerd. - - Folders - Mappen + + Refresh + Vernieuwen - - Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. - Selecteer of maak nu een doelmap in uw %1 waar de inhoud moet worden geüpload en gesynchroniseerd. + Select a remote destination folder + Kies een externe doelmap - - Refresh - Vernieuwen + + Step 2 of 3: Directory in your %1 + Stap 2 van 3: Directory in uw %1 + + + KMessageWidget - Select a remote destination folder - Kies een externe doelmap + + &Close + - - Step 2 of 3: Directory in your %1 - Stap 2 van 3: Directory in uw %1 + + Close message + - - + + OCC::AbstractNetworkJob - - Connection timed out - De verbindingstijd is verstreken + + Connection timed out + De verbindingstijd is verstreken - - Server replied "%1 %2" to "%3 %4" - Server antwoordde "%1 %2" naar "%3 %4" + + Server replied "%1 %2" to "%3 %4" + Server antwoordde "%1 %2" naar "%3 %4" - - Unknown error: network reply was deleted - Onbekende fout: netwerkantwoord verwijderd + + Unknown error: network reply was deleted + Onbekende fout: netwerkantwoord verwijderd - - + + OCC::Account - - File %1 is already locked by %2. - + + File %1 is already locked by %2. + - - Lock operation on %1 failed with error %2 - + + Lock operation on %1 failed with error %2 + - - Unlock operation on %1 failed with error %2 - + + Unlock operation on %1 failed with error %2 + - - + + OCC::AccountManager - - %1 accounts were detected from a legacy desktop client. + + %1 accounts were detected from a legacy desktop client. Should the accounts be imported? - Er zijn %1 accounts gedetecteerd van een oudere desktopclient. + Er zijn %1 accounts gedetecteerd van een oudere desktopclient. Moeten de accounts worden geïmporteerd? - - 1 account was detected from a legacy desktop client. + + 1 account was detected from a legacy desktop client. Should the account be imported? - + - An existing configuration from a legacy desktop client was detected. + An existing configuration from a legacy desktop client was detected. Should an account import be attempted? - Een bestaande configuratie van een vorige desktopclient werd herkend. + Een bestaande configuratie van een vorige desktopclient werd herkend. Moet er worden geprobeerd een account te importeren? - - Could not import accounts from legacy client configuration. - + + Could not import accounts from legacy client configuration. + - - Import - + + Import + - - Legacy import - + + + Legacy import + - - Skip - skip + + Skip + skip - - Successfully imported account from legacy client: %1 - - - - + + OCC::AccountSettings - - (experimental) - (experimenteel) + + (experimental) + (experimenteel) - - %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. - %1 (%3%) van %2 in gebruik. Sommige mappen, inclusief netwerkmappen en gedeelde mappen, kunnen andere limieten hebben. + + %1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits. + %1 (%3%) van %2 in gebruik. Sommige mappen, inclusief netwerkmappen en gedeelde mappen, kunnen andere limieten hebben. - - %1 as %2 - %1 als %2 + + %1 as %2 + %1 als %2 - - %1 in use - %1 in gebruik + + %1 in use + %1 in gebruik - - %1 of %2 in use - %1 van %2 in gebruik + + %1 of %2 in use + %1 van %2 in gebruik - - <p>Could not create local folder <i>%1</i>.</p> - <p>Kan lokale map <i>%1</i> niet maken.</p> + + <p>Could not create local folder <i>%1</i>.</p> + <p>Kan lokale map <i>%1</i> niet maken.</p> - - <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Weet je zeker dat je het synchroniseren van map <i>%1</i> wilt stoppen?</p><p><b>Opmerking:</b> Dit zal <b>geen</b> bestanden verwijderen.</p> + + <p>Do you really want to stop syncing the folder <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Weet je zeker dat je het synchroniseren van map <i>%1</i> wilt stoppen?</p><p><b>Opmerking:</b> Dit zal <b>geen</b> bestanden verwijderen.</p> - - Apply - Toepassen + + Apply + Toepassen - - Apply manual changes - Handmatige wijzigingen toepassen + + Apply manual changes + Handmatige wijzigingen toepassen - - Availability - Beschikbaarheid + + + Availability + Beschikbaarheid - - Cancel - Annuleren + + + + Cancel + Annuleren - - Choose what to sync - Kies wat je wilt synchroniseren + + Choose what to sync + Kies wat je wilt synchroniseren - - Confirm Folder Sync Connection Removal - Bevestig het verwijderen van de verbinding voor mapsynchronisatie + + Confirm Folder Sync Connection Removal + Bevestig het verwijderen van de verbinding voor mapsynchronisatie - - Connected to %1. - Verbonden met %1. + + Connected to %1. + Verbonden met %1. - - Connected with <server> as <user> - Verbonden met <server> als <user> + + Connected with <server> as <user> + Verbonden met <server> als <user> - - Connecting to %1 … - Verbinden met %1 ... + + Connecting to %1 … + Verbinden met %1 ... - - Could not encrypt folder because the folder does not exist anymore - Kon map niet versleutelen omdat de map niet meer bestaat + + Could not encrypt folder because the folder does not exist anymore + Kon map niet versleutelen omdat de map niet meer bestaat - - Create new folder - Maak nieuwe map aan + + + Create new folder + Maak nieuwe map aan - - Currently there is no storage usage information available. - Er is nu geen informatie over het gebruik van de opslagruimte beschikbaar. + + Currently there is no storage usage information available. + Er is nu geen informatie over het gebruik van de opslagruimte beschikbaar. - - Disable encryption - Encryptie deactiveren + + Disable encryption + Encryptie deactiveren - - Disable end-to-end encryption - + + Disable end-to-end encryption + - - Disable end-to-end encryption for %1? - + + Disable end-to-end encryption for %1? + - - Disable support - Ondersteuning uitschakelen + + Disable support + Ondersteuning uitschakelen - - Disable virtual file support … - Ondersteuning voor virtuele bestanden uitschakelen... + + Disable virtual file support … + Ondersteuning voor virtuele bestanden uitschakelen... - - Disable virtual file support? - Ondersteuning voor virtuele bestanden uitschakelen? + + Disable virtual file support? + Ondersteuning voor virtuele bestanden uitschakelen? - - Display mnemonic - Geheugensteun weergeven + + Display mnemonic + Geheugensteun weergeven - - Do not encrypt folder - Map niet versleutelen + + + Do not encrypt folder + Map niet versleutelen - - Edit Ignored Files - Genegeerde bestanden bewerken + + + Edit Ignored Files + Genegeerde bestanden bewerken - - Enable virtual file support %1 … - Virtuele bestandsondersteuning inschakelen %1... + + Enable virtual file support %1 … + Virtuele bestandsondersteuning inschakelen %1... - - Encrypt - Versleutelen + + Encrypt + Versleutelen - - Encrypt folder - Versleutel map + + + Encrypt folder + Versleutel map - - Encryption failed - Versleuteling mislukt + + Encryption failed + Versleuteling mislukt - - End-to-end Encryption - + + End-to-end Encryption + - - End-to-end encryption has been enabled for this account - + + End-to-end encryption has been enabled for this account + - - End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. - + + End-to-end encryption has been enabled on this account with another device.<br>It can be enabled on this device by entering your mnemonic.<br>This will enable synchronisation of existing encrypted folders. + - - End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. + + End-to-end encryption is not configured on this device. Once it is configured, you will be able to encrypt this folder. Would you like to set up end-to-end encryption? - + + + + + End-to-end encryption mnemonic + - - End-to-end encryption mnemonic - + + End-to-end Encryption with Virtual Files + - - End-to-end Encryption with Virtual Files - + + Expand Memory + Geheugen uitbreiden - - Expand Memory - Geheugen uitbreiden + + Folder creation failed + Map maken mislukt - - Folder creation failed - Map maken mislukt + + Force sync now + Synchronisatie nu forceren - - Force sync now - Synchronisatie nu forceren + + https://wl.hidrive.com/easy/0057 + https://wl.hidrive.com/easy/0097 - - https://wl.hidrive.com/easy/0057 - https://wl.hidrive.com/easy/0097 + + No %1 connection configured. + Geen %1 connectie geconfigureerd. - - No %1 connection configured. - Geen %1 connectie geconfigureerd. + + No account configured. + Geen account ingesteld. - - No account configured. - Geen account ingesteld. + No connection to %1 at %2. + Geen verbinding met %1 op %2. - No connection to %1 at %2. - Geen verbinding met %1 op %2. + Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. + Autorisatie van de browser wordt verkregen. <a href='%1'>Klik hier</a> om de browser te heropenen. - Obtaining authorization from the browser. <a href='%1'>Click here</a> to re-open the browser. - Autorisatie van de browser wordt verkregen. <a href='%1'>Klik hier</a> om de browser te heropenen. + + + Open folder + Map openen - - Open folder - Map openen + + Pause sync + Synchronisatie pauzeren - - Pause sync - Synchronisatie pauzeren + + Please wait for the folder to sync before trying to encrypt it. + - - Please wait for the folder to sync before trying to encrypt it. - + + Remove folder sync connection + Verwijder verbinding voor mapsynchronisatie - - Remove folder sync connection - Verwijder verbinding voor mapsynchronisatie + + Remove Folder Sync Connection + Verwijder verbinding voor mapsynchronisatie - - Remove Folder Sync Connection - Verwijder verbinding voor mapsynchronisatie + + Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. + - - Removing end-to-end encryption will remove locally-synced files that are encrypted.<br>Encrypted files will remain on the server. - + + Restart sync + Synchronisatie herstarten - - Restart sync - Synchronisatie herstarten + + Resume sync + Synchronisatie hervatten - - Resume sync - Synchronisatie hervatten + + Server %1 is currently being redirected, or your connection is behind a captive portal. + - - Server %1 is currently being redirected, or your connection is behind a captive portal. - + + Server %1 is currently in maintenance mode. + Server %1 is momenteel in onderhoudsmodus. - - Server %1 is currently in maintenance mode. - Server %1 is momenteel in onderhoudsmodus. + + Server %1 is temporarily unavailable. + Server %1 is tijdelijk niet beschikbaar. - - Server %1 is temporarily unavailable. - Server %1 is tijdelijk niet beschikbaar. + + Server configuration error: %1 at %2. + Serverconfiguratiefout: %1 op %2. - - Server configuration error: %1 at %2. - Serverconfiguratiefout: %1 op %2. + + There are folders that were not synchronized because they are too big: + - - Set up encryption - + + There are folders that were not synchronized because they are external storages: + - - Signed out from %1. - Uitgelogd van %1. + + There are folders that were not synchronized because they are too big or external storages: + - - Standard file sync - + + Set up encryption + - - Storage space %1% occupied - Opslagruimte %1% bezet + + Signed out from %1. + Uitgelogd van %1. - - Storage space: … - Opslagruimte: ... + + Standard file sync + - - Sync Running - Bezig met synchroniseren + + Storage space %1% occupied + Opslagruimte %1% bezet - - Synchronize all - Alles synchroniseren + + + Storage space: … + Opslagruimte: ... - - Synchronize none - Niets synchroniseren + + Sync Running + Bezig met synchroniseren - - The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully - + + Synchronize all + Alles synchroniseren - - The folder has a sync error. Encryption of this folder will be possible once it has synced successfully - + + Synchronize none + Niets synchroniseren - - The server version %1 is unsupported! Proceed at your own risk. - De serverversie %1 wordt niet ondersteund! Verdergaan is op eigen risico. + + The folder has a minor sync problem. Encryption of this folder will be possible once it has synced successfully + - - The syncing operation is running.<br/>Do you want to terminate it? - Bezig met synchroniseren.<br/>Wil je stoppen met synchroniseren? + + The folder has a sync error. Encryption of this folder will be possible once it has synced successfully + - - There are folders that have grown in size beyond %1MB: %2 - + + The server version %1 is unsupported! Proceed at your own risk. + De serverversie %1 wordt niet ondersteund! Verdergaan is op eigen risico. - - There are folders that were not synchronized because they are external storages: - Er zijn mappen die niet gesynchroniseerd zijn, omdat ze op externe opslag staan: + + The syncing operation is running.<br/>Do you want to terminate it? + Bezig met synchroniseren.<br/>Wil je stoppen met synchroniseren? - - There are folders that were not synchronized because they are too big or external storages: - Er zijn mappen die niet gesynchroniseerd zijn, omdat ze te groot zijn of op externe opslag staan: + + There are folders that have grown in size beyond %1MB: %2 + - - There are folders that were not synchronized because they are too big: - Er zijn mappen die niet gesynchroniseerd zijn, omdat ze te groot zijn: + There are folders that were not synchronized because they are external storages: + Er zijn mappen die niet gesynchroniseerd zijn, omdat ze op externe opslag staan: - - This account supports end-to-end encryption - Dit account ondersteunt end-to-end-versleuteling + There are folders that were not synchronized because they are too big or external storages: + Er zijn mappen die niet gesynchroniseerd zijn, omdat ze te groot zijn of op externe opslag staan: - - This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. + There are folders that were not synchronized because they are too big: + Er zijn mappen die niet gesynchroniseerd zijn, omdat ze te groot zijn: + + + + This account supports end-to-end encryption + Dit account ondersteunt end-to-end-versleuteling + + + + This action will disable virtual file support. As a consequence contents of folders that are currently marked as "available online only" will be downloaded. The only advantage of disabling virtual file support is that the selective sync feature will become available again. This action will abort any currently running synchronization. - Deze actie schakelt ondersteuning voor virtuele bestanden uit. Hierdoor zullen de mappen, die gemarkeerd zijn als "alleen online beschikbaar", gedownload worden. + Deze actie schakelt ondersteuning voor virtuele bestanden uit. Hierdoor zullen de mappen, die gemarkeerd zijn als "alleen online beschikbaar", gedownload worden. Het enige voordeel van het uitschakelen van ondersteuning voor virtuele bestanden, is dat de optie voor selectieve synchronisatie weer beschikbaar komt. Dit zal alle synchronisaties, die op dit moment bezig zijn, afbreken. - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - Dit zal je map en alle bestanden erin versleutelen. Deze bestanden zullen niet langer toegankelijk zijn zonder je coderingssleutel. + Dit zal je map en alle bestanden erin versleutelen. Deze bestanden zullen niet langer toegankelijk zijn zonder je coderingssleutel. <b>Dit proces is niet omkeerbaar. Weet u zeker dat u wilt doorgaan? - - This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. + + This will encrypt your folder and all files within it. These files will no longer be accessible without your encryption mnemonic key. <b>This process is not reversible. Are you sure you want to proceed?</b> - Dit zal je map en alle bestanden erin versleutelen. Deze bestanden zullen niet langer toegankelijk zijn zonder je coderingssleutel. + Dit zal je map en alle bestanden erin versleutelen. Deze bestanden zullen niet langer toegankelijk zijn zonder je coderingssleutel. <b>Dit proces is niet omkeerbaar. Weet u zeker dat u wilt doorgaan? - - To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). - + + To protect your Cryptographic Identity, we encrypt it with a mnemonic of 12 dictionary words. Please note these down and keep them safe. They will be needed to add other devices to your account (like your mobile phone or laptop). + - - Unable to connect to %1. - + + Unable to connect to %1. + - - Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore - Niet-geselecteerde mappen worden <b>verwijderd</b> van je lokale bestandssysteem en zullen niet meer met deze computer worden gesynchroniseerd + + Unchecked folders will be <b>removed</b> from your local file system and will not be synchronized to this computer anymore + Niet-geselecteerde mappen worden <b>verwijderd</b> van je lokale bestandssysteem en zullen niet meer met deze computer worden gesynchroniseerd - - Virtual file sync - + + Virtual file sync + - - Warning - Waarschuwing + + Warning + Waarschuwing - - You cannot encrypt a folder with contents, please remove the files. + + You cannot encrypt a folder with contents, please remove the files. Wait for the new sync, then encrypt it. - Je kunt een map met inhoud niet versleutelen, verwijder de bestanden. Wacht op de nieuwe synchronisatie en versleutel ze vervolgens. + Je kunt een map met inhoud niet versleutelen, verwijder de bestanden. Wacht op de nieuwe synchronisatie en versleutel ze vervolgens. - - You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". - + + You seem to have the Virtual Files feature enabled on this folder. At the moment, it is not possible to implicitly download virtual files that are end-to-end encrypted. To get the best experience with virtual files and end-to-end encryption, make sure the encrypted folder is marked with "Make always available locally". + - - + + OCC::AccountSetupFromCommandLineJob - - Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. - Toegang door server verboden. Om te verifiëren dat je toegang mag hebben, <a href="%1">klik hier</a> om met je browser toegang tot de service te krijgen. + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Toegang door server verboden. Om te verifiëren dat je toegang mag hebben, <a href="%1">klik hier</a> om met je browser toegang tot de service te krijgen. - - The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. - De geauthentiseerde aanvraag voor de server werd omgeleid naar "%1". De URL is onjuist, de server is verkeerd geconfigureerd. + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + De geauthentiseerde aanvraag voor de server werd omgeleid naar "%1". De URL is onjuist, de server is verkeerd geconfigureerd. - - There was an invalid response to an authenticated WebDAV request - Er is een ongeldig antwoord ontvangen op een geauthenticeerde WebDAV opvraging + + There was an invalid response to an authenticated WebDAV request + Er is een ongeldig antwoord ontvangen op een geauthenticeerde WebDAV opvraging - - + + OCC::AccountState - - Asking Credentials - Vragen naar inloggegevens + + Asking Credentials + Vragen naar inloggegevens - - Configuration error - Configuratiefout + + Configuration error + Configuratiefout - - Connected - Verbonden + + Connected + Verbonden - - Disconnected - Niet verbonden + + Disconnected + Niet verbonden - - Maintenance mode - Onderhoudsmodus + + Maintenance mode + Onderhoudsmodus - - Network error - Netwerkfout + + Network error + Netwerkfout - - Redirect detected - + + Redirect detected + - - Service unavailable - Dienst niet beschikbaar + + Service unavailable + Dienst niet beschikbaar - - Signed out - Afgemeld + + Signed out + Afgemeld - - Unknown account state - Onbekende account-status + + Unknown account state + Onbekende account-status - - + + OCC::ActivityListModel - - Fetching activities … - + + Fetching activities … + - - Files from the ignore list as well as symbolic links are not synced. - Bestanden op de negeerlijst en symbolische links worden niet gesynchroniseerd. + + Files from the ignore list as well as symbolic links are not synced. + Bestanden op de negeerlijst en symbolische links worden niet gesynchroniseerd. - - For more activities please open the Activity app. - Voor meer activiteiten open de Activiteit app. + + For more activities please open the Activity app. + Voor meer activiteiten open de Activiteit app. - - Network error occurred: client will retry syncing. - + + Network error occurred: client will retry syncing. + - - + + OCC::AddCertificateDialog - - An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. - Een versleutelde pkcs12-bundel wordt sterk aanbevolen, aangezien er een kopie wordt opgeslagen in het configuratiebestand. + + An encrypted pkcs12 bundle is strongly recommended as a copy will be stored in the configuration file. + Een versleutelde pkcs12-bundel wordt sterk aanbevolen, aangezien er een kopie wordt opgeslagen in het configuratiebestand. - - Browse … - Bladeren ... + + Browse … + Bladeren ... - - Certificate & Key (pkcs12): - Certificaat & Sleutel (pkcs12): + + Certificate & Key (pkcs12): + Certificaat & Sleutel (pkcs12): - - Certificate files (*.p12 *.pfx) - Certificaat bestanden (*.p12 *.pfx) + + Certificate files (*.p12 *.pfx) + Certificaat bestanden (*.p12 *.pfx) - - Certificate password: - Wachtwoord certificaat: + + Certificate password: + Wachtwoord certificaat: - - Select a certificate - Selecteer een certificaat + + Select a certificate + Selecteer een certificaat - - SSL client certificate authentication - SSL client certificaat authenticatie + + SSL client certificate authentication + SSL client certificaat authenticatie - - This server probably requires a SSL client certificate. - De server vereist vermoedelijk een SSL client certificaat. + + This server probably requires a SSL client certificate. + De server vereist vermoedelijk een SSL client certificaat. - - + + OCC::Application - - %1 accounts - + + 1 account + + + + + 1 folder + - - %1 folders - + + Continue + Doorgaan - - 1 account - + + newer + newer software version + recenter - - 1 folder - + + older + older software version + ouder - - Continue - Doorgaan + + deleting + verwijderen - - deleting - verwijderen + + %1 accounts + number of accounts imported + - - Error accessing the configuration file - Fout bij benaderen configuratiebestand + + %1 folders + number of folders imported + - - ignoring - negerend + + Legacy import + - - Imported %1 and %2 from a legacy desktop client. + + Imported %1 and %2 from a legacy desktop client. %3 - + number of accounts and folders imported. list of users. + + + + + Error accessing the configuration file + Fout bij benaderen configuratiebestand + + + + ignoring + negerend - - newer - recenter + newer + recenter - - older - ouder + older + ouder - - Quit - Stoppen + + Quit + Stoppen - - Quit %1 - Afsluiten %1 + + Quit %1 + Afsluiten %1 - - Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. - + + Some settings were configured in %1 versions of this client and use features that are not available in this version.<br><br>Continuing will mean <b>%2 these settings</b>.<br><br>The current configuration file was already backed up to <i>%3</i>. + - - There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. - + + There was an error while accessing the configuration file at %1. Please make sure the file can be accessed by your system account. + - - + + OCC::AuthenticationDialog - - &Password: - &Wachtwoord: + + &Password: + &Wachtwoord: - - &Username: - + + &Username: + - - Authentication Required - Authenticatie vereist + + Authentication Required + Authenticatie vereist - - Enter username and password for "%1" at %2. - Geef gebruikersnaam en wachtwoord op voor "%1" bij %2. + + Enter username and password for "%1" at %2. + Geef gebruikersnaam en wachtwoord op voor "%1" bij %2. - - + + OCC::BasePropagateRemoteDeleteEncrypted - "%1 Failed to unlock encrypted folder %2". - "%1 kon versleutelde map %2" niet ontgrendelen. + + "%1 Failed to unlock encrypted folder %2". + "%1 kon versleutelde map %2" niet ontgrendelen. - Wrong HTTP code returned by server. Expected 204, but received "%1 %2". - Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". - - + + OCC::BulkPropagatorJob - - Error updating metadata: %1 - Fout bij bijwerken metadata: %1 + + Error updating metadata: %1 + Fout bij bijwerken metadata: %1 - - File %1 cannot be uploaded because another file with the same name, differing only in case, exists - Bestand %1 kan niet worden geüpload omdat er al een ander bestand met dezelfde naam bestaat, al verschillen hoofd/kleine letters + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Bestand %1 kan niet worden geüpload omdat er al een ander bestand met dezelfde naam bestaat, al verschillen hoofd/kleine letters - - File %1 has invalid modification time. Do not upload to the server. - Bestand %1 heeft een ongeldige laatste wijziging datum. Upload niet naar de server. + + File %1 has invalid modification time. Do not upload to the server. + Bestand %1 heeft een ongeldige laatste wijziging datum. Upload niet naar de server. - - File %1 has invalid modified time. Do not upload to the server. - Bestand %1 heeft een ongeldige wijzigingstijd. Niet uploaden naar de server. + + File %1 has invalid modified time. Do not upload to the server. + Bestand %1 heeft een ongeldige wijzigingstijd. Niet uploaden naar de server. - - File Removed (start upload) %1 - Bestand verwijderd (start upload) %1 + + File Removed (start upload) %1 + Bestand verwijderd (start upload) %1 - - Local file changed during sync. - Lokaal bestand gewijzigd tijdens synchronisatie. + + + Local file changed during sync. + Lokaal bestand gewijzigd tijdens synchronisatie. - - Local file changed during syncing. It will be resumed. - Lokaal bestand gewijzigd gedurende synchronisatie. Wordt opnieuw meegenomen. + + Local file changed during syncing. It will be resumed. + Lokaal bestand gewijzigd gedurende synchronisatie. Wordt opnieuw meegenomen. - - Network error: %1 - Netwerkfout: %1 + + Network error: %1 + Netwerkfout: %1 - - Restoration failed: %1 - Herstellen mislukt: %1 + + Restoration failed: %1 + Herstellen mislukt: %1 - - The file %1 is currently in use - Bestand %1 is momenteel in gebruik + + The file %1 is currently in use + Bestand %1 is momenteel in gebruik - - The local file was removed during sync. - Het lokale bestand werd verwijderd tijdens synchronisatie. + + The local file was removed during sync. + Het lokale bestand werd verwijderd tijdens synchronisatie. - - + + OCC::CaseClashConflictSolver - - Cannot rename file because a file with the same name already exists on the server. Please pick another name. - + + Cannot rename file because a file with the same name already exists on the server. Please pick another name. + - - Could not rename file. Please make sure you are connected to the server. - Kan het bestand niet hernoemen. Zorg ervoor dat je verbonden bent met de server. + + Could not rename file. Please make sure you are connected to the server. + Kan het bestand niet hernoemen. Zorg ervoor dat je verbonden bent met de server. - - Failed to fetch permissions with error %1 - + + Failed to fetch permissions with error %1 + - - Filename contains leading and trailing spaces. - De bestandsnaam bevat spaties vooraan en achteraan. + + Filename contains leading and trailing spaces. + De bestandsnaam bevat spaties vooraan en achteraan. - - Filename contains leading spaces. - De bestandsnaam bevat spaties vooraan. + + Filename contains leading spaces. + De bestandsnaam bevat spaties vooraan. - - Filename contains trailing spaces. - De bestandsnaam bevat spaties achteraan. + + Filename contains trailing spaces. + De bestandsnaam bevat spaties achteraan. - - You don't have the permission to rename this file. Please ask the author of the file to rename it. - Je bent niet gemachtigd om dit bestand te hernoemen. Vraag de auteur van het bestand om het te hernoemen. + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Je bent niet gemachtigd om dit bestand te hernoemen. Vraag de auteur van het bestand om het te hernoemen. - - + + OCC::CaseClashFilenameDialog - - %1 does not support equal file names with only letter casing differences. - + + %1 does not support equal file names with only letter casing differences. + + + + + + 0 byte + 0 bytes + + + + Case Clash Conflict + + + + + Case clashing file + - - 0 byte - 0 bytes + + Existing file + Bestaand bestand - - Case Clash Conflict - + + Error + Fout - - Case clashing file - + + file A + bestand A - - Existing file - Bestaand bestand + + file B + bestand B - - file A - bestand A + + Filename contains illegal characters: %1 + Bestandsnaam bevat ongeldige tekens: %1 - - file B - bestand B + + New filename + Nieuwe bestandsnaam - - Filename contains illegal characters: %1 - Bestandsnaam bevat ongeldige tekens: %1 + + + Open clashing file + - - New filename - Nieuwe bestandsnaam + + + Open existing file + - - Open clashing file - + + Please enter a new name for the clashing file: + - - Open existing file - + + Rename file + Bestand hernoemen - - Please enter a new name for the clashing file: - + + The file "%1" could not be synced because of a case clash conflict with an existing file on this system. + - - Rename file - Bestand hernoemen + + Filename contains leading and trailing spaces. + De bestandsnaam bevat spaties vooraan en achteraan. - - The file "%1" could not be synced because of a case clash conflict with an existing file on this system. - + + Filename contains leading spaces. + De bestandsnaam bevat spaties vooraan. - - The file could not be synced because it generates a case clash conflict with an existing file on this system. - + + Filename contains trailing spaces. + De bestandsnaam bevat spaties achteraan. - - today - vandaag + + The file could not be synced because it generates a case clash conflict with an existing file on this system. + - - Use invalid name - Gebruik ongeldige naam + + + today + vandaag - - + + + Use invalid name + Gebruik ongeldige naam + + + OCC::CleanupPollsJob - - Error writing metadata to the database - Fout bij schrijven van metadata naar de database + + Error writing metadata to the database + Fout bij schrijven van metadata naar de database - - + + OCC::ClientSideEncryption - - Enter E2E passphrase - Invoeren E2E wachtwoord + + Enter E2E passphrase + Invoeren E2E wachtwoord - - Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> - + + Please enter your end-to-end encryption passphrase:<br><br>Username: %2<br>Account: %3<br> + - - + + OCC::ConflictDialog - - <a href="%1">Open local version</a> - <a href="%1">Open lokale versie</a> + + Local version + Lokale versie + + + + + today + vandaag - - <a href="%1">Open server version</a> - <a href="%1">Open serverversie</a> + + + 0 byte + 0 bytes - - Click to open the file - Klik om het bestand te openen + + <a href="%1">Open local version</a> + <a href="%1">Open lokale versie</a> - - Conflicting versions of %1. - Conflicterende versies van %1. + + Server version + Serverversie - - Keep both versions - Bewaar beide versies + + <a href="%1">Open server version</a> + <a href="%1">Open serverversie</a> - - Keep local version - Bewaar lokale versie + + + Click to open the file + Klik om het bestand te openen - - Keep selected version - Bewaar geselecteerde versie + + + Conflicting versions of %1. + Conflicterende versies van %1. - - Keep server version - Bewaar serverversie + + Keep both versions + Bewaar beide versies - - Open local version - Open lokale versie + + Keep local version + Bewaar lokale versie - - Open server version - Open serverversie + + + Keep selected version + Bewaar geselecteerde versie - - Sync Conflict - Synchronisatieconflict + + Keep server version + Bewaar serverversie - - Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. - Welke versie van het bestand wil je bewaren? <br/>Als je beide versies selecteert, wordt er een getal achter de bestandsnaam van het lokale bestand gezet. + + Open local version + Open lokale versie - - + + + Open server version + Open serverversie + + + + Sync Conflict + Synchronisatieconflict + + + + Which version of the file do you want to keep?<br/>If you select both versions, the local file will have a number added to its name. + Welke versie van het bestand wil je bewaren? <br/>Als je beide versies selecteert, wordt er een getal achter de bestandsnaam van het lokale bestand gezet. + + + OCC::ConflictSolver - - Confirm deletion - Bevestig verwijderen + + Confirm deletion + Bevestig verwijderen - - Do you want to delete the directory <i>%1</i> and all its contents permanently? - Wil je de map <i>%1</i>met gehele inhoud permanent verwijderen? + + Do you want to delete the directory <i>%1</i> and all its contents permanently? + Wil je de map <i>%1</i>met gehele inhoud permanent verwijderen? - - Do you want to delete the file <i>%1</i> permanently? - Wil je het bestand <i>%1</i>permanent verwijderen? + + Do you want to delete the file <i>%1</i> permanently? + Wil je het bestand <i>%1</i>permanent verwijderen? - - Moving file failed: + + + Moving file failed: %1 - Bestand verplaatsen mislukt: + Bestand verplaatsen mislukt: %1 - - + + + + Error + Fout + + + OCC::ConnectionValidator - - Authentication error: Either username or password are wrong. - Authenticatiefout: Gebruikersnaam of wachtwoord onjuist. + + Authentication error: Either username or password are wrong. + Authenticatiefout: Gebruikersnaam of wachtwoord onjuist. - - Connection issue - + + Connection issue + - - No Nextcloud account configured - Geen Nextcloud-account geconfigureerd + + No Nextcloud account configured + Geen Nextcloud-account geconfigureerd - - Please update to the latest server and restart the client. - Werk de server bij naar de nieuwste versie en herstart het programma. + + Please update to the latest server and restart the client. + Werk de server bij naar de nieuwste versie en herstart het programma. - - The configured server for this client is too old - De voor dit programma ingestelde server is te oud + + The configured server for this client is too old + De voor dit programma ingestelde server is te oud - - The provided credentials are not correct - De verstrekte inloggegevens zijn niet juist + + The provided credentials are not correct + De verstrekte inloggegevens zijn niet juist - - Timeout - Time-out + + Timeout + Time-out - - + + OCC::DiscoveryPhase - - Error while canceling deletion of %1 - Fout bij annuleren verwijderen van %1 + + Error while canceling deletion of %1 + Fout bij annuleren verwijderen van %1 - - Error while canceling deletion of a file - Fout bij het annuleren van verwijdering van een bestand + + Error while canceling deletion of a file + Fout bij het annuleren van verwijdering van een bestand - - + + OCC::DiscoverySingleDirectoryJob - - Encrypted metadata setup error: initial signature from server is empty. - Fout bij opzetten versleutelde metagegevens: initiële handtekening van server is leeg. + + Encrypted metadata setup error: initial signature from server is empty. + Fout bij opzetten versleutelde metagegevens: initiële handtekening van server is leeg. - - Encrypted metadata setup error! - + + + Encrypted metadata setup error! + - - Server error: PROPFIND reply is not XML formatted! - Serverfout: PROPFIND-antwoord heeft geen XML-opmaak! + + + Server error: PROPFIND reply is not XML formatted! + Serverfout: PROPFIND-antwoord heeft geen XML-opmaak! - - + + OCC::DiscoverySingleLocalDirectoryJob - - Directory not accessible on client, permission denied - Map niet toegankelijk op client, toegang geweigerd + + Directory not accessible on client, permission denied + Map niet toegankelijk op client, toegang geweigerd - - Directory not found: %1 - Map niet gevonden: %1 + + Directory not found: %1 + Map niet gevonden: %1 - - Error while opening directory %1 - Fout bij het openen van map %1 + + Error while opening directory %1 + Fout bij het openen van map %1 - - Error while reading directory %1 - Fout tijdens lezen van map %1 + + Error while reading directory %1 + Fout tijdens lezen van map %1 - - Filename encoding is not valid - Bestandsnaamcodering is niet geldig + + Filename encoding is not valid + Bestandsnaamcodering is niet geldig - - + + OCC::EditLocallyJob - - An error occurred during data retrieval. - + + + + An error occurred during data retrieval. + + + + + An error occurred during setup. + - - An error occurred during setup. - + + + An error occurred trying to synchronise the file to edit locally. + - - An error occurred trying to synchronise the file to edit locally. - + + An error occurred trying to verify the request to edit locally. + - - An error occurred trying to verify the request to edit locally. - + + + + + Could not find a file for local editing. Make sure it is not excluded via selective sync. + - - Could not find a file for local editing. Make sure it is not excluded via selective sync. - + + + Could not find a file for local editing. Make sure its path is valid and it is synced locally. + Kon geen bestand vinden om lokaal te bewerken. Zorg ervoor dat het pad juist is en dat het lokaal gesynchroniseerd is. - - Could not find a file for local editing. Make sure its path is valid and it is synced locally. - Kon geen bestand vinden om lokaal te bewerken. Zorg ervoor dat het pad juist is en dat het lokaal gesynchroniseerd is. + + Could not find a remote file info for local editing. Make sure its path is valid. + - - Could not find a remote file info for local editing. Make sure its path is valid. - + + Could not find an account for local editing. + - - Could not find an account for local editing. - + + Could not open %1 + - - Could not open %1 - + + + + + + + + + Could not start editing locally. + - - Could not start editing locally. - + + + Could not validate the request to open a file from server. + - - Could not validate the request to open a file from server. - + + Server error: PROPFIND reply is not XML formatted! + Serverfout: PROPFIND-antwoord heeft geen XML-opmaak! - - File %1 already locked. - + + File %1 already locked. + - - File %1 could not be locked. - + + File %1 could not be locked. + - - File %1 now locked. - + + File %1 now locked. + - - Invalid file path was provided. - Ongeldig pad was ingegeven. + + Invalid file path was provided. + Ongeldig pad was ingegeven. - - Invalid local file path. - + + Invalid local file path. + - - Invalid token received. - + + Invalid token received. + - - Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. - + + + Lock will last for %1 minutes. You can also unlock this file manually once you are finished editing. + - - Please try again. - + + + + + + + Please try again. + - - + + OCC::EncryptFolderJob - - Could not generate the metadata for encryption, Unlocking the folder. + + Could not generate the metadata for encryption, Unlocking the folder. This can be an issue with your OpenSSL libraries. - Kan de metadata voor versleuteling niet genereren, de map wordt ontgrendeld. + Kan de metadata voor versleuteling niet genereren, de map wordt ontgrendeld. Dit kan een probleem zijn met je OpenSSL-bibliotheken. - - + + OCC::EncryptedFolderMetadataHandler - - Error fetching encrypted folder ID. - + + Error fetching encrypted folder ID. + - - Error fetching metadata. - + + + + + + + Error fetching metadata. + - - Error locking folder. - + + + + Error locking folder. + - - Error parsing or decrypting metadata. - + + Error parsing or decrypting metadata. + - - Failed to upload metadata - + + Failed to upload metadata + - - + + OCC::FileDetails - - %1 day(s) ago - - - - %1 dag(en) geleden - + + %1 second(s) ago + seconds elapsed since file last modified + + + + - - %1 hour(s) ago - - - - %1 uur(en) geleden - + + %1 minute(s) ago + minutes elapsed since file last modified + + + + - - %1 minute(s) ago - - - - %1 minuut(en) geleden - + + %1 hour(s) ago + hours elapsed since file last modified + + + + - - %1 month(s) ago - - - - %1 maand(en) geleden - + + %1 day(s) ago + days elapsed since file last modified + + + + - - %1 second(s) ago - - - - %1 seconde(n) geleden - + + %1 month(s) ago + months elapsed since file last modified + + + + - - %1 year(s) ago - - - - %1 jaar(en) geleden - + + %1 year(s) ago + years elapsed since file last modified + + + + - - Locked by %1 - Expires in %2 minute(s) - - - - Vergrendeld door %1 - Verloopt in %2 minuut(pen) - - - - + + Locked by %1 - Expires in %2 minute(s) + remaining time before lock expires + + + + + + + OCC::Flow2Auth - - Could not parse the JSON returned from the server: <br><em>%1</em> - Kan de van de server ontvangen JSON niet verwerken: <br><em>%1</em> + + + Could not parse the JSON returned from the server: <br><em>%1</em> + Kan de van de server ontvangen JSON niet verwerken: <br><em>%1</em> - - Error returned from the server: <em>%1</em> - Fout gemeld door de server: <em>%1</em> + + + Error returned from the server: <em>%1</em> + Fout gemeld door de server: <em>%1</em> - - The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - De polling-URL begint niet met HTTPS, ondanks dat de login-URL met HTTPS begint. Inloggen is niet mogelijk omdat dit een beveiligingsprobleem kan zijn. Neem contact op met je beheerder. + + The polling URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + De polling-URL begint niet met HTTPS, ondanks dat de login-URL met HTTPS begint. Inloggen is niet mogelijk omdat dit een beveiligingsprobleem kan zijn. Neem contact op met je beheerder. - - The reply from the server did not contain all expected fields - Het antwoord van de server bevatte niet alle verwachte velden + + + The reply from the server did not contain all expected fields + Het antwoord van de server bevatte niet alle verwachte velden - - The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. - De geretourneerde server-URL begint niet met HTTPS, ondanks dat de inlog-URL begint met HTTPS. Inloggen is niet mogelijk omdat dit een beveiligingsprobleem kan zijn. Neem contact op met je beheerder. + + The returned server URL does not start with HTTPS despite the login URL started with HTTPS. Login will not be possible because this might be a security issue. Please contact your administrator. + De geretourneerde server-URL begint niet met HTTPS, ondanks dat de inlog-URL begint met HTTPS. Inloggen is niet mogelijk omdat dit een beveiligingsprobleem kan zijn. Neem contact op met je beheerder. - - There was an error accessing the "token" endpoint: <br><em>%1</em> - Er trad een fout op bij het benaderen van het "token" endpoint: <br><em>%1</em> + + + There was an error accessing the "token" endpoint: <br><em>%1</em> + Er trad een fout op bij het benaderen van het "token" endpoint: <br><em>%1</em> - - + + OCC::Flow2AuthWidget - - Link copied to clipboard. - Link gekopieerd naar het klembord. + + Link copied to clipboard. + Link gekopieerd naar het klembord. + + + + Open Browser + Browser openen + + + + Polling for authorization + Controleren op autorisatie + + + + + Error + Fout - - Open Browser - Browser openen + + Starting authorization + Starten autorisatie - - Polling for authorization - Controleren op autorisatie + + Copy Link + Kopiëren link - - Starting authorization - Starten autorisatie + + Switch to your browser to connect your account + Schakel over naar je browser om je account te verbinden - - Unable to open the Browser, please copy the link to your Browser. - Kan de browser niet openen, kopieer de link naar je browser. + + Unable to open the Browser, please copy the link to your Browser. + Kan de browser niet openen, kopieer de link naar je browser. - - Waiting for authorization - Wachten op autorisatie + + Waiting for authorization + Wachten op autorisatie - - + + OCC::Folder - - %1 and %n other file(s) are currently locked. - - - - - + + %1 and %n other file(s) are currently locked. + + + + - - %1 and %n other file(s) could not be synced due to errors. See the log for details. - - - - - + + %1 and %n other file(s) could not be synced due to errors. See the log for details. + + + + - - %1 and %n other file(s) have been added. - - - - - + + %1 and %n other file(s) have been added. + + + + - - %1 and %n other file(s) have been removed. - - - - - + + %1 and %n other file(s) have been removed. + + + + + + + + %1 has been removed. + %1 names a file. + %1 is verwijderd. + + + + %1 has been added. + %1 names a file. + %1 is toegevoegd. - - %1 and %n other file(s) have been updated. - - - - - + + %1 and %n other file(s) have been updated. + + + + - - %1 could not be synced due to an error. See the log for details. - %1 kon niet worden gesynchroniseerd door een fout. Bekijk het log voor details. + + %1 has been updated. + %1 names a file. + %1 is bijgewerkt. - - %1 has a sync conflict. Please check the conflict file! - %1 heeft een synchronisatie-conflict. Controleer het conflictbestand! + + %1 has been renamed to %2. + %1 and %2 name files. + %1 is hernoemd naar %2. + + + + %1 could not be synced due to an error. See the log for details. + %1 kon niet worden gesynchroniseerd door een fout. Bekijk het log voor details. + + + + %1 has a sync conflict. Please check the conflict file! + %1 heeft een synchronisatie-conflict. Controleer het conflictbestand! - - %1 has and %n other file(s) have sync conflicts. - - - - - + + %1 has and %n other file(s) have sync conflicts. + + + + - - %1 has been added. - %1 is toegevoegd. + %1 has been added. + %1 is toegevoegd. - - %1 has been moved to %2 and %n other file(s) have been moved. - - - - - + + %1 has been moved to %2 and %n other file(s) have been moved. + + + + - - %1 has been moved to %2. - %1 is verplaatst naar %2. + + %1 has been moved to %2. + %1 is verplaatst naar %2. - - %1 has been removed. - %1 is verwijderd. + %1 has been removed. + %1 is verwijderd. - - %1 has been renamed to %2 and %n other file(s) have been renamed. - - - - - + + %1 has been renamed to %2 and %n other file(s) have been renamed. + + + + - - %1 has been renamed to %2. - %1 is hernoemd naar %2. + %1 has been renamed to %2. + %1 is hernoemd naar %2. - - %1 has been updated. - %1 is bijgewerkt. + %1 has been updated. + %1 is bijgewerkt. - - %1 is currently locked. - %1 is momenteel op slot. + + %1 is currently locked. + %1 is momenteel op slot. - - %1 is not readable. - %1 is niet leesbaar. + + %1 is not readable. + %1 is niet leesbaar. - - %1 should be a folder but is not. - %1 zou een map moeten zijn, maar is dat niet. + + %1 should be a folder but is not. + %1 zou een map moeten zijn, maar is dat niet. - - A folder from an external storage has been added. - Er is een map op externe opslag toegevoegd. + A folder from an external storage has been added. + Er is een map op externe opslag toegevoegd. - - A folder has surpassed the set folder size limit of %1MB: %2. + + A folder has surpassed the set folder size limit of %1MB: %2. %3 - + - - A large number of files in the server have been deleted. -Please confirm if you'd like to proceed with these deletions. -Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. - Een groot aantal bestanden op de server is verwijderd. + + A large number of files in the server have been deleted. +Please confirm if you'd like to proceed with these deletions. +Alternatively, you can restore all deleted files by uploading from '%1' folder to the server. + Een groot aantal bestanden op de server is verwijderd. Bevestig alstublieft of u door wilt gaan met deze verwijderingen. -U kunt ook alle verwijderde bestanden terugzetten door vanuit de map '%1' te uploaden naar de server. +U kunt ook alle verwijderde bestanden terugzetten door vanuit de map '%1' te uploaden naar de server. - - A large number of files in your local '%1' folder have been deleted. -Please confirm if you'd like to proceed with these deletions. + + A large number of files in your local '%1' folder have been deleted. +Please confirm if you'd like to proceed with these deletions. Alternatively, you can restore all deleted files by downloading them from the server. - Een groot aantal bestanden in uw lokale map '%1' is verwijderd. + Een groot aantal bestanden in uw lokale map '%1' is verwijderd. Bevestig alstublieft of u door wilt gaan met deze verwijderingen. U kunt ook alle verwijderde bestanden herstellen door ze van de server te downloaden. - - A new folder larger than %1 MB has been added: %2. - Er is een nieuwe map groter dan %1 MB toegevoegd: %2. + A new folder larger than %1 MB has been added: %2. + Er is een nieuwe map groter dan %1 MB toegevoegd: %2. - All files in the local folder "%1" were deleted. + All files in the local folder "%1" were deleted. If you restore the files, they will be downloaded again from the server. - Alle bestanden in de lokale map "%1" zijn verwijderd. + Alle bestanden in de lokale map "%1" zijn verwijderd. Als u de bestanden terugzet, worden ze opnieuw gedownload van de server. - All files in the server folder "%1" were deleted. + All files in the server folder "%1" were deleted. If you restore the files, they will be uploaded again to the server. - Alle bestanden in de servermap "%1" zijn verwijderd. + Alle bestanden in de servermap "%1" zijn verwijderd. Als u de bestanden terugzet, worden ze opnieuw geüpload naar de server. - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Alle bestanden in de syncmap"'%1" map werden verwijderd van de server. + Alle bestanden in de syncmap"'%1" map werden verwijderd van de server. Deze verwijderingen worden gesynchroniseerd naar je lokale syncmap, waardoor deze bestanden niet meer beschikbaar zijn, tenzij je het recht hebt om ze te herstellen. Als je de bestanden wilt behouden, worden ze opnieuw gesynchroniseerd met de server als je die autorisatie hebt. Als je de bestanden wilt verwijderen, worden ze niet beschikbaar, tenzij je de eigenaar bent. - All files in the sync folder "%1" folder were deleted on the server. + All files in the sync folder "%1" folder were deleted on the server. These deletes will be synchronized to your local sync folder, making such files unavailable unless you have a right to restore. If you decide to restore the files, they will be re-synced with the server if you have rights to do so. If you decide to delete the files, they will be unavailable to you, unless you are the owner. - Alle bestanden in de syncmap"'%1" map werden verwijderd van de server. + Alle bestanden in de syncmap"'%1" map werden verwijderd van de server. Deze verwijderingen worden gesynchroniseerd naar je lokale syncmap, waardoor deze bestanden niet meer beschikbaar zijn, tenzij je het recht hebt om ze te herstellen. Als je de bestanden wilt behouden, worden ze opnieuw gesynchroniseerd met de server als je die autorisatie hebt. Als je de bestanden wilt verwijderen, worden ze niet beschikbaar, tenzij je de eigenaar bent. - All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. + All the files in your local sync folder "%1" were deleted. These deletes will be synchronized with your server, making such files unavailable unless restored. Are you sure you want to sync those actions with the server? If this was an accident and you decide to keep your files, they will be re-synced from the server. - Alle bestanden in je lokale syncmap "%1" werden verwijderd. Deze verwijderingen worden gesynchroniseerd naar je server, waardoor de bestanden niet beschikbaar zijn, tenzij ze worden teruggezet. Weet je zeker dat je deze acties wilt synchroniseren met de server? + Alle bestanden in je lokale syncmap "%1" werden verwijderd. Deze verwijderingen worden gesynchroniseerd naar je server, waardoor de bestanden niet beschikbaar zijn, tenzij ze worden teruggezet. Weet je zeker dat je deze acties wilt synchroniseren met de server? Als dit een ongelukje was en je de bestanden wilt behouden, worden ze opnieuw gesynchroniseerd met de server. - - Changes in synchronized folders could not be tracked reliably. + + Changes in synchronized folders could not be tracked reliably. This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default). %1 - Wijzigingen in gesynchroniseerde mappen konden niet betrouwbaar worden getraceerd. + Wijzigingen in gesynchroniseerde mappen konden niet betrouwbaar worden getraceerd. Dit betekent dat de synchronisatieclient misschien niet meteen lokale wijzigingen uploadt maar slechts periodiek scant op lokale wijzigingen en die uploadt (standaard eens per twee uur). %1 - - Could not read system exclude file - Kon het systeem-uitsluitingsbestand niet lezen + + Could not read system exclude file + Kon het systeem-uitsluitingsbestand niet lezen + + + Keep files + Bestanden bewaren - Keep files - Bestanden bewaren + + Keep syncing + - - Keep syncing - + + Local folder %1 does not exist. + Lokale map %1 bestaat niet. - - Local folder %1 does not exist. - Lokale map %1 bestaat niet. + + Please go in the settings to select it if you wish to download it. + Ga naar de instellingen om het te selecteren als u deze wilt downloaden. - - Please go in the settings to select it if you wish to download it. - Ga naar de instellingen om het te selecteren als u deze wilt downloaden. + Proceed to remove all files + Alle bestanden verwijderen - Proceed to remove all files - Alle bestanden verwijderen + + Proceed with Deletion + Doorgaan met verwijderen - - Proceed with Deletion - Doorgaan met verwijderen + Remove all files + Alle bestanden verwijderen - Remove all files - Alle bestanden verwijderen + + Remove all files? + Alle bestanden verwijderen? - - Remove all files? - Alle bestanden verwijderen? + Restore files + Bestanden herstellen - Restore files - Bestanden herstellen + + Restore Files from Server + Bestanden terugzetten van server - - Restore Files from Server - Bestanden terugzetten van server + + Restore Files to Server + Bestanden terugzetten naar server - - Restore Files to Server - Bestanden terugzetten naar server + + Stop syncing + - - Stop syncing - + + Sync Activity + Synchronisatie-activiteit - - Sync Activity - Synchronisatie-activiteit + + A new folder larger than %1 MB has been added: %2. + + - - The file %1 was created but was excluded from synchronization previously. It will not be synchronized. - Bestand %1 is gecreëerd, maar eerder uitgesloten van synchronisatie. Het wordt niet gesynchroniseerd. + + A folder from an external storage has been added. + + - - The folder %1 has surpassed the set folder size limit of %2MB. - + + The file %1 was created but was excluded from synchronization previously. It will not be synchronized. + Bestand %1 is gecreëerd, maar eerder uitgesloten van synchronisatie. Het wordt niet gesynchroniseerd. - - The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. - Map %1 is gecreëerd, maar eerder uitgesloten van synchronisatie. Bestanden erin worden niet gesynchroniseerd. + + The folder %1 has surpassed the set folder size limit of %2MB. + - - Virtual file download failed with code "%1", status "%2" and error message "%3" - + + The folder %1 was created but was excluded from synchronization previously. Data inside it will not be synchronized. + Map %1 is gecreëerd, maar eerder uitgesloten van synchronisatie. Bestanden erin worden niet gesynchroniseerd. - - Would you like to stop syncing this folder? - + + Virtual file download failed with code "%1", status "%2" and error message "%3" + - - + + + Would you like to stop syncing this folder? + + + + OCC::FolderCreationDialog - - %1 Create new folder - %1 Nieuwe map maken + + %1 Create new folder + %1 Nieuwe map maken + + + + Could not create a folder! Check your write permissions. + Kan map niet aanmaken! Controleer je schrijfmachtiging. + + + + Error + Fout - - Could not create a folder! Check your write permissions. - Kan map niet aanmaken! Controleer je schrijfmachtiging. + + Create new folder + Maak nieuwe map aan - - Enter folder name - Geef mapnaam op + + Enter folder name + Geef mapnaam op - - Folder already exists - Map bestaat al + + Folder already exists + Map bestaat al - - + + OCC::FolderMan - - (backup %1) - (backup %1) + (backup %1) + (backup %1) + + + (backup) + (backup) + + + + %1 (Sync is paused) + %1 (Synchronisatie onderbroken) - - (backup) - (backup) + + An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. + Een oud synchronisatieverslag "%1" is gevonden maar kan niet worden verwijderd. Zorg ervoor dat geen applicatie dit bestand gebruikt. - - %1 (Sync is paused) - %1 (Synchronisatie onderbroken) + + Could not reset folder state + Kan de beginstaat van de map niet terugzetten - - An old sync journal "%1" was found, but could not be removed. Please make sure that no application is currently using it. - Een oud synchronisatieverslag "%1" is gevonden maar kan niet worden verwijderd. Zorg ervoor dat geen applicatie dit bestand gebruikt. + + (backup) + - - Could not reset folder state - Kan de beginstaat van de map niet terugzetten + + (backup %1) + - - Last sync was successful. - + + Last sync was successful. + - - No valid folder selected! - Geen geldige map geselecteerd! + + No valid folder selected! + Geen geldige map geselecteerd! - - Preparing for sync. - Synchronisatie wordt voorbereid + + Preparing for sync. + Synchronisatie wordt voorbereid - - Setup error. - + + Setup error. + - - Sync finished with unresolved conflicts. - Synchronisatie beëindigd met niet opgeloste conflicten. + + Sync finished with unresolved conflicts. + Synchronisatie beëindigd met niet opgeloste conflicten. - - Sync is paused. - Synchronisatie gepauzeerd. + + Sync is paused. + Synchronisatie gepauzeerd. - - Sync is running. - Bezig met synchroniseren. + + Sync is running. + Bezig met synchroniseren. - - Sync request was cancelled. - + + Sync request was cancelled. + - - The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! - Lokale map %1 bevat al een map die wordt gebruikt voor een mapsync verbinding. Kies een andere! + + The local folder %1 already contains a folder used in a folder sync connection. Please pick another one! + Lokale map %1 bevat al een map die wordt gebruikt voor een mapsync verbinding. Kies een andere! - - The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! - Lokale map %1 zit al in een map die wordt gebruikt voor een mapsync verbinding. Kies een andere! + + The local folder %1 is already contained in a folder used in a folder sync connection. Please pick another one! + Lokale map %1 zit al in een map die wordt gebruikt voor een mapsync verbinding. Kies een andere! - - The selected path does not exist! - Het geselecteerde pad bestaat niet! + + The selected path does not exist! + Het geselecteerde pad bestaat niet! - - The selected path is not a folder! - Het geselecteerde pad is geen map! + + The selected path is not a folder! + Het geselecteerde pad is geen map! - - There is already a sync from the server to this local folder. Please pick another local folder! - Er wordt vanaf de server al naar deze lokale map gesynchroniseerd. Kies een andere lokale map! + + There is already a sync from the server to this local folder. Please pick another local folder! + Er wordt vanaf de server al naar deze lokale map gesynchroniseerd. Kies een andere lokale map! - - Undefined state. - + + Undefined state. + - - Waiting to start syncing. - In afwachting van synchronisatie. + + Waiting to start syncing. + In afwachting van synchronisatie. - - You have no permission to write to the selected folder! - U heeft geen machtiging om te schrijven naar de geselecteerde map! + + + You have no permission to write to the selected folder! + U heeft geen machtiging om te schrijven naar de geselecteerde map! - - + + OCC::FolderStatusDelegate - - Add live backup - Map-synchronisatieverbinding toevoegen + Add live backup + Map-synchronisatieverbinding toevoegen - - File - Bestand + + Add Folder Sync + Mapsynchronisatie toevoegen - - Synchronize any other local folder with your %1 - Synchroniseer een andere lokale map met uw %1 + + File + Bestand - - + + + Synchronize any other local folder with your %1 + Synchroniseer een andere lokale map met uw %1 + + + OCC::FolderStatusModel - - , - , + , + , + + + + + %1 (%2) + %1 (%2) + + + + %1 %2 + Example text: "uploading foobar.png" + %1 %2 - - %1 (%2) - %1 (%2) + + %1 %2 (%3 of %4) + Example text: "uploading foobar.png (2MB of 2MB)" + %1 %2 (%3 van %4) - - %1 %2 - %1 %2 + + %1 of %2, file %3 of %4 + Example text: "12 MB of 345 MB, file 6 of 7" + %1 van %2, bestand %3 van %4 - - %1 %2 (%3 of %4) - %1 %2 (%3 van %4) + + %5 left, %1 of %2, file %3 of %4 + %5 over, %1 van %2, bestand %3 van %4 - - %1 of %2, file %3 of %4 - %1 van %2, bestand %3 van %4 + + ↑ %1/s + ↑ %1/s - - %5 left, %1 of %2, file %3 of %4 - %5 over, %1 van %2, bestand %3 van %4 + + ↓ %1/s + ↓ %1/s - - ↑ %1/s - ↑ %1/s + + A few seconds left, %1 of %2, file %3 of %4 + Example text: "5 minutes left, 12 MB of 345 MB, file 6 of 7" + - - ↓ %1/s - ↓ %1/s + + Checking for changes in local "%1" + Controleren op wijzigingen in lokale "%1" - - A few seconds left, %1 of %2, file %3 of %4 - + + Checking for changes in remote "%1" + Controleren op wijzigingen in externe "%1" - - Checking for changes in local "%1" - Controleren op wijzigingen in lokale "%1" + + Click this button to add a folder to synchronize. + Klik op deze knop om een te synchroniseren map toe te voegen. - - Checking for changes in remote "%1" - Controleren op wijzigingen in externe "%1" + + Could not decrypt! + - - Click this button to add a folder to synchronize. - Klik op deze knop om een te synchroniseren map toe te voegen. + + download %1/s + Example text: "download 24Kb/s" (%1 is replaced by 24Kb (translated)) + download %1/s - - Could not decrypt! - + + Error while loading the list of folders from the server. + Fout bij ophalen mappenlijst van de server. - - download %1/s - download %1/s + + Fetching folder list from server … + Mappenlijst ophalen van de server ... - - Error while loading the list of folders from the server. - Fout bij ophalen mappenlijst van de server. + + Signed out + Afgemeld - - Fetching folder list from server … - Mappenlijst ophalen van de server ... + + Syncing %1 + Example text: "Syncing 'foo.txt', 'bar.txt'" + Synchroniseren %1 - - file %1 of %2 - bestand %1 van %2 + + + , + - - Preparing to sync … - Voorbereiden synchronisatie ... + + file %1 of %2 + bestand %1 van %2 - - Reconciling changes - Wijzigingen in overeenstemming brengen + + Preparing to sync … + Voorbereiden synchronisatie ... - - Synchronizing VirtualFiles with local folder - Synchroniseren VirtualFiles met lokale map + + Reconciling changes + Wijzigingen in overeenstemming brengen - - Synchronizing with local folder - Synchroniseren met lokale map + + Synchronizing VirtualFiles with local folder + Synchroniseren VirtualFiles met lokale map - - There are unresolved conflicts. Click for details. - Er zijn nog niet-opgehelderde conflicten. Klik voor details. + + Synchronizing with local folder + Synchroniseren met lokale map - - upload %1/s - upload %1/s + + There are unresolved conflicts. Click for details. + Er zijn nog niet-opgehelderde conflicten. Klik voor details. - - Virtual file support is enabled. - Virtuele bestandsondersteuning is ingeschakeld. + + upload %1/s + Example text: "upload 24Kb/s" (%1 is replaced by 24Kb (translated)) + upload %1/s - - Waiting … - Wachten ... + + Virtual file support is enabled. + Virtuele bestandsondersteuning is ingeschakeld. + + + + Waiting … + Wachten ... - - Waiting for %n other folder(s) … - - - - - + + Waiting for %n other folder(s) … + + + + - - You need to be connected to add a folder - U moet verbonden zijn om een map toe te voegen + + You need to be connected to add a folder + U moet verbonden zijn om een map toe te voegen - - + + OCC::FolderWatcher - - The watcher did not receive a test notification. - De kijker ontving geen testmelding. + + The watcher did not receive a test notification. + De kijker ontving geen testmelding. - - + + OCC::FolderWatcherPrivate - - This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. - Dit gebeurt gewoonlijk wanneer de inotify monitors op zijn. Klik op de FAQ voor details. + + This problem usually happens when the inotify watches are exhausted. Check the FAQ for details. + Dit gebeurt gewoonlijk wanneer de inotify monitors op zijn. Klik op de FAQ voor details. - - + + OCC::FolderWizard - Add Folder Sync Connection - Toevoegen mapsynchronisatie verbinding + + Add Folder Sync Connection + Toevoegen mapsynchronisatie verbinding - - Add Sync Connection - Toevoegen Sync verbinding + + Add Sync Connection + Toevoegen Sync verbinding - - + + OCC::FolderWizardLocalPath - - Choose - Kies + + Choose + Kies + + + + Click to select a local folder to sync. + Klikken om een lokale map te selecteren voor synchronisatie + + + + Enter the path to the local folder. + Geef het pad op naar de lokale map. + + + + Select the source folder + Selecteer de bronmap - - Click to select a local folder to sync. - Klikken om een lokale map te selecteren voor synchronisatie + + Add Folder Sync + Mapsynchronisatie toevoegen - - Enter the path to the local folder. - Geef het pad op naar de lokale map. + + Step 1 of 3: Select local folder + Stap 1 van 3: Selecteer lokale map - - Select the source folder - Selecteer de bronmap + + Select a folder on your hard drive that should be permanetly connected to your %1. All files and subfolders are automatically uploaded and synchronized + Selecteer een map op je harde schijf die permanent verbonden moet zijn met je %1. Alle bestanden en submappen worden automatisch geüpload en gesynchroniseerd. - - + + OCC::FolderWizardRemotePath - - Authentication failed accessing %1 - Authenticatie mislukt bij benaderen %1 + + Authentication failed accessing %1 + Authenticatie mislukt bij benaderen %1 + + + + Choose this to sync the entire account + Kies dit om je volledige account te synchroniseren + + + + Create Remote Folder + Externe map aanmaken + + + + Enter the name of the new folder to be created below "%1": + Voer de naam van de hieronder te maken nieuwe map in "%1": - - Choose this to sync the entire account - Kies dit om je volledige account te synchroniseren + + Failed to create the folder on %1. Please check manually. + Aanmaken van de map op %1 mislukt. Controleer handmatig. - - Create Remote Folder - Externe map aanmaken + + Failed to list a folder. Error: %1 + Tonen mappenlijst mislukt. Fout: %1 - - Enter the name of the new folder to be created below "%1": - Voer de naam van de hieronder te maken nieuwe map in "%1": + + Add Folder Sync + Mapsynchronisatie toevoegen - - Failed to create the folder on %1. Please check manually. - Aanmaken van de map op %1 mislukt. Controleer handmatig. + + Step 2 of 3: Directory in your %1 + Stap 2 van 3: Directory in uw %1 - - Failed to list a folder. Error: %1 - Tonen mappenlijst mislukt. Fout: %1 + + Please now select or create a target folder in your %1 where the content should be uploaded and synchronized. + Selecteer of maak nu een doelmap in uw %1 waar de inhoud moet worden geüpload en gesynchroniseerd. - - Folder was successfully created on %1. - Map is succesvol aangemaakt op %1. + + Both folders are permanently linked and the respective contents are automatically synchronized and updated. + Beide mappen zijn permanent gekoppeld en de respectieve inhoud wordt automatisch gesynchroniseerd en bijgewerkt. - - This folder is already being synced. - Deze map is al gesynchroniseerd. + + Refresh + Vernieuwen - - You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. - U synchroniseert <i>%1</i> al, dat is de bovenliggende map van <i>%2</i>. + + Create folder + Maak map - - You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. - Je synchroniseert <i>%1</i> al, dat is de bovenliggende map van <i>%2</i>. + + Folder was successfully created on %1. + Map is succesvol aangemaakt op %1. - - + + + This folder is already being synced. + Deze map is al gesynchroniseerd. + + + + You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>. + U synchroniseert <i>%1</i> al, dat is de bovenliggende map van <i>%2</i>. + + + + You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>. + Je synchroniseert <i>%1</i> al, dat is de bovenliggende map van <i>%2</i>. + + + OCC::FolderWizardSelectiveSync - - Use virtual files instead of downloading content immediately %1 - Gebruik virtuele bestanden in plaats van de content direct te downloaden %1 + + + Use virtual files instead of downloading content immediately %1 + Gebruik virtuele bestanden in plaats van de content direct te downloaden %1 - - Virtual files are not available for the selected folder - Virtuele bestanden zijn niet beschikbaar voor de geselecteerde map + + + (experimental) + (experimenteel) - - Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. - Virtuele bestanden worden niet ondersteund voor Windows-partitie-hoofdmappen als lokale map. Kies een geldige submap onder de stationsletter. + + Add Folder Sync + Mapsynchronisatie toevoegen - - + + + Step 3 of 3: Selektive Synchronisation + Stap 3 van 3: Selektieve synchronisatie + + + + Virtual files are not available for the selected folder + Virtuele bestanden zijn niet beschikbaar voor de geselecteerde map + + + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Virtuele bestanden worden niet ondersteund voor Windows-partitie-hoofdmappen als lokale map. Kies een geldige submap onder de stationsletter. + + + OCC::FormatWarningsWizardPage - - %1 - %1 + + %1 + %1 - <b>Warning:</b> - <b>Waarschuwing:</b> + <b>Warning:</b> + <b>Waarschuwing:</b> - <b>Warning:</b> %1 - <b>Waarschuwing:</b> %1 + <b>Warning:</b> %1 + <b>Waarschuwing:</b> %1 - - + + OCC::GETFileJob - - Connection Timeout - Verbindingstime-out + + Connection Timeout + Verbindingstime-out - - No E-Tag received from server, check Proxy/Gateway - Geen E-Tag ontvangen van de server, controleer Proxy/Gateway + + No E-Tag received from server, check Proxy/Gateway + Geen E-Tag ontvangen van de server, controleer Proxy/Gateway - - Server returned wrong content-range - Server retourneerde verkeerde content-bandbreedte + + Server returned wrong content-range + Server retourneerde verkeerde content-bandbreedte - - We received a different E-Tag for resuming. Retrying next time. - We ontvingen een afwijkende E-Tag om door te gaan. We proberen het later opnieuw. + + We received a different E-Tag for resuming. Retrying next time. + We ontvingen een afwijkende E-Tag om door te gaan. We proberen het later opnieuw. - - We received an unexpected download Content-Length. - We ontvingen een onverwachte download Content-Lengte. + + We received an unexpected download Content-Length. + We ontvingen een onverwachte download Content-Lengte. - - + + OCC::GeneralSettings - - &Analysis data collection for needs-based design - &Analyse van gegevensverzameling voor een op behoeften gebaseerd ontwerp + &Analysis data collection for needs-based design + &Analyse van gegevensverzameling voor een op behoeften gebaseerd ontwerp - - &Automatically check for updates - + + &Automatically check for updates + - &Channel - &Kanaal + &Channel + &Kanaal - &Check for Update now - &Controleer nu op update + &Check for Update now + &Controleer nu op update - - &Launch on system startup - + + &Launch on system startup + - - &Restart && Update - &Herstarten && Bijwerken + + Advanced + Geavanceerd - About - Over + + + MB + Trailing part of "Ask confirmation before syncing folder larger than" + - - Ask for confirmation before - synchronizing new folders larger than - Vraag om bevestiging voordat u nieuwe mappen synchroniseert die groter zijn dan + + &Analysis data collection for needs-based design + - - Ask for confirmation before synchronizing - external storages - Vraag om bevestiging voordat je externe opslag synchroniseert + + &Restart && Update + &Herstarten && Bijwerken - Ask for confirmation before synchronizing external storages - Vraag bevestiging voor synchronisatie van mappen op externe opslag + About + Over - Ask for confirmation before synchronizing folders larger than - Vraag bevestiging voordat mappen worden gedownload groter dan + + Ask for confirmation before + synchronizing new folders larger than + Vraag om bevestiging voordat u nieuwe mappen synchroniseert die groter zijn dan - Ask for confirmation before synchronizing new folders larger than - + + Ask for confirmation before synchronizing + external storages + Vraag om bevestiging voordat je externe opslag synchroniseert - - Automatically disable synchronisation of - folders that overcome limit - Automatisch synchronisatie uitschakelen van mappen die limiet overschrijden + Ask for confirmation before synchronizing external storages + Vraag bevestiging voor synchronisatie van mappen op externe opslag - Automatically disable synchronisation of folders that overcome limit - + Ask for confirmation before synchronizing folders larger than + Vraag bevestiging voordat mappen worden gedownload groter dan - - beta - beta + + Automatically disable synchronisation of + folders that overcome limit + Automatisch synchronisatie uitschakelen van mappen die limiet overschrijden - - Change update channel - Wijzigen bijwerkkanaal + + + beta + beta - - Change update channel? - Wijzigen bijwerkkanaal? + + Change update channel + Wijzigen bijwerkkanaal - - Check Now - + + Change update channel? + Wijzigen bijwerkkanaal? - - Create Debug Archive - Debugarchief maken + + Check Now + - - Data Protection - Gegevensbescherming + + + Create Debug Archive + Debugarchief maken - - Debug Archive Created - Debugarchief Aangemaakt + + Data Protection + Gegevensbescherming - - Debug archive is created at %1 - Debugarchief is gemaakt op %1 + + Debug Archive Created + Debugarchief Aangemaakt - - Desktop client x.x.x - + + Debug archive is created at %1 + Debugarchief is gemaakt op %1 - - Edit &Ignored Files - Bewerken &genegeerde bestanden + + Desktop client x.x.x + - - For System Tray - Voor systeemvak + + Edit &Ignored Files + Bewerken &genegeerde bestanden - - General Settings - Algemene instellingen + + For System Tray + Voor systeemvak - Info - + + General Settings + Algemene instellingen - - Legal Notice - + + Legal Notice + - MB - MB + MB + MB - - More Information - Meer informatie + + More Information + Meer informatie - - Move removed files to trash - + + Move removed files to trash + - - Notify when synchronised folders grow + + Notify when synchronised folders grow larger than specified limit - Waarschuwing wanneer gesynchroniseerde mappen groter worden dan de opgegeven limiet. - - - Notify when synchronised folders grow larger than specified limit - + Waarschuwing wanneer gesynchroniseerde mappen groter worden dan de opgegeven limiet. - - Open Source Software - Open source software + + Open Source Software + Open source software - - Privacy Policy - Privacybeleid + + Privacy Policy + Privacybeleid - - S&how crash reporter - T&onen crash reporter + + S&how crash reporter + T&onen crash reporter - - Server notifications that require attention. - Servermeldingen die aandacht nodig hebben. + + Server notifications that require attention. + Servermeldingen die aandacht nodig hebben. - - Show call notification dialogs. - + + Show call notification dialogs. + - - Show call notifications - + + Show call notifications + - - Show server &notifications - + + Show server &notifications + - - Show sync folders in &Explorer's navigation + + Show sync folders in &Explorer's navigation pane - Sync-mappen weergeven in het navigatiedeelvenster van &Explorer + Sync-mappen weergeven in het navigatiedeelvenster van &Explorer - Show sync folders in &Explorer's Navigation Pane - Toon sync-mappen in het &Verkenner navigatievenster + Show sync folders in &Explorer's Navigation Pane + Toon sync-mappen in het &Verkenner navigatievenster - - stable - stabiel + + + stable + stabiel - - The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. + + The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly. Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version. - Het updatekanaal bepaalt welke clientupdates worden aangeboden voor installatie. Het "stabiele" kanaal bevat alleen upgrades die als betrouwbaar worden beschouwd, terwijl de versies in het "betakanaal" mogelijk nieuwere functies en bugfixes bevatten, die nog niet grondig zijn getest. + Het updatekanaal bepaalt welke clientupdates worden aangeboden voor installatie. Het "stabiele" kanaal bevat alleen upgrades die als betrouwbaar worden beschouwd, terwijl de versies in het "betakanaal" mogelijk nieuwere functies en bugfixes bevatten, die nog niet grondig zijn getest. Merk op dat dit alleen selecteert van welke pool upgrades worden overgenomen en dat er geen downgrades zijn: teruggaan van het betakanaal naar het stabiele kanaal kan meestal niet onmiddellijk worden gedaan en dat betekent wachten op een stabiele versie die nieuwer is dan de momenteel geïnstalleerde betaversie. - - Update channel - + + Update channel + - - Updates - Updates + + Updates + Updates - - Usage Documentation - + + Usage Documentation + - - Use &monochrome icons - + + Use &monochrome icons + - - You cannot disable autostart because system-wide autostart is enabled. - Je kunt autostart niet uitschakelen omdat systeem-brede autostart is ingeschakeld. + + You cannot disable autostart because system-wide autostart is enabled. + Je kunt autostart niet uitschakelen omdat systeem-brede autostart is ingeschakeld. - - Zip Archives - Zip Archieven + + Cancel + Annuleren - - + + + Zip Archives + Zip Archieven + + + OCC::GetOrCreatePublicLinkShare - - Could not retrieve or create the public link share. Error: + + Could not retrieve or create the public link share. Error: %1 - Kan de openbare deellink niet ophalen of creëren. Fout: + Kan de openbare deellink niet ophalen of creëren. Fout: %1 - - Password for share required - Wachtwoord voor deellink vereist + + Password for share required + Wachtwoord voor deellink vereist - - Please enter a password for your link share: - Voer het wachtwoord in voor je deellink: + + Please enter a password for your link share: + Voer het wachtwoord in voor je deellink: - - Sharing error - Fout bij delen + + Sharing error + Fout bij delen - - + + OCC::HttpCredentialsGui - - <a href="%1">Click here</a> to request an app password from the web interface. - <a href="%1">Klik hier</a> om een nieuw app wachtwoord via de web interface op te vragen. + + <a href="%1">Click here</a> to request an app password from the web interface. + <a href="%1">Klik hier</a> om een nieuw app wachtwoord via de web interface op te vragen. - - Enter Password - Vul het wachtwoord in + + Enter Password + Vul het wachtwoord in - - Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> - + + Please enter %1 password:<br><br>Username: %2<br>Account: %3<br> + - - Reading from keychain failed with error: "%1" - Het lezen van de sleutelketen is mislukt met fout: "%1" + + Reading from keychain failed with error: "%1" + Het lezen van de sleutelketen is mislukt met fout: "%1" - - + + OCC::IgnoreListEditor - - Files Ignored by Patterns - Bestanden volgens patroon genegeerd + + Files Ignored by Patterns + Bestanden volgens patroon genegeerd - - Global Ignore Settings - Algemene negeer-instellingen + + Global Ignore Settings + Algemene negeer-instellingen - - Ignored Files Editor - Genegeerde bestanden-editor + + Ignored Files Editor + Genegeerde bestanden-editor - - Sync hidden files - Synchroniseer verborgen bestanden + + Sync hidden files + Synchroniseer verborgen bestanden - - This entry is provided by the system at "%1" and cannot be modified in this view. - Dit gegeven is door het systeem vastgelegd op "%1" en kan niet worden aangepast in deze weergave. + + This entry is provided by the system at "%1" and cannot be modified in this view. + Dit gegeven is door het systeem vastgelegd op "%1" en kan niet worden aangepast in deze weergave. - - + + OCC::IgnoreListTableWidget - - Add - Toevoegen + + Add + Toevoegen - Add a new ignore pattern: - Voeg nieuw negeerpatroon toe: + Add a new ignore pattern: + Voeg nieuw negeerpatroon toe: - Add Ignore Pattern - Toevoegen negeerpatroon + Add Ignore Pattern + Toevoegen negeerpatroon - - Add New Ignore Pattern - Nieuw negeerpatroon toevoegen + + Add New Ignore Pattern + Nieuw negeerpatroon toevoegen - - Allow Deletion - Verwijderen toestaan + + Allow Deletion + Verwijderen toestaan - - Cannot write changes to "%1". - Kan geen wijzigingen wegschrijven naar "%1". + + Cannot write changes to "%1". + Kan geen wijzigingen wegschrijven naar "%1". - - Could not open file - Kan het bestand niet openen + + Could not open file + Kan het bestand niet openen - Files or folders matching a pattern will not be synchronized. + Files or folders matching a pattern will not be synchronized. Items where deletion is allowed will be deleted if they prevent a directory from being removed. This is useful for meta data. - Bestanden of mappen die overeenkomen met een patroon zullen niet worden gesynchroniseerd. + Bestanden of mappen die overeenkomen met een patroon zullen niet worden gesynchroniseerd. Onderdelen die gewist mogen worden, worden verwijderd als ze verhinderen dat een map verdwijnt. Dit is nuttig voor metadata. - - Files or folders that match this pattern will not be synchronized. + + Files or folders that match this pattern will not be synchronized. Objects that are allowed to be deleted will be deleted if they would prevent a folder from being deleted. This is useful for metadata. - Bestanden of mappen die overeenkomen met dit patroon worden niet gesynchroniseerd. + Bestanden of mappen die overeenkomen met dit patroon worden niet gesynchroniseerd. Objecten die verwijderd mogen worden, worden verwijderd als ze zouden verhinderen dat een map verwijderd wordt. Dit is nuttig voor metadata. - - Ignore Pattern - Patroon negeren + + Ignore Pattern + Patroon negeren - - Pattern - Patroon + + Pattern + Patroon - - Remove - Verwijderen + + Remove + Verwijderen - - Remove all - Alles verwijderen + + Remove all + Alles verwijderen - - + + OCC::InvalidFilenameDialog - - Cannot rename file because a file with the same name does already exist on the server. Please pick another name. - Kan het bestand niet hernoemen omdat er al een bestand met dezelfde naam op de server bestaat. Kies een andere naam. + + Cannot rename file because a file with the same name does already exist on the server. Please pick another name. + Kan het bestand niet hernoemen omdat er al een bestand met dezelfde naam op de server bestaat. Kies een andere naam. + + + + Checking rename permissions … + + + + + Rename file + Bestand hernoemen + + + + You don't have the permission to rename this file. Please ask the author of the file to rename it. + Je bent niet gemachtigd om dit bestand te hernoemen. Vraag de auteur van het bestand om het te hernoemen. + + + + Failed to fetch permissions with error %1 + + + + + Filename contains leading and trailing spaces. + De bestandsnaam bevat spaties vooraan en achteraan. + + + + Filename contains leading spaces. + De bestandsnaam bevat spaties vooraan. + + + + Filename contains trailing spaces. + De bestandsnaam bevat spaties achteraan. + + + + Use invalid name + Gebruik ongeldige naam + + + + Filename contains illegal characters: %1 + Bestandsnaam bevat ongeldige tekens: %1 + + + + Could not rename file. Please make sure you are connected to the server. + Kan het bestand niet hernoemen. Zorg ervoor dat je verbonden bent met de server. - - Checking rename permissions … - + + Could not rename local file. %1 + - - Could not rename local file. %1 - + + Invalid filename + Ongeldige bestandsnaam - - Invalid filename - Ongeldige bestandsnaam + + Error + Fout - - Please enter a new name for the file: - Voer alsjeblieft een nieuwe naam voor dit bestand in: + + Please enter a new name for the file: + Voer alsjeblieft een nieuwe naam voor dit bestand in: - - The file "%1" could not be synced because the name contains characters which are not allowed on this system. - Het bestand %1 kan niet worden gesynchroniseerd omdat de naam tekens bevat die niet zijn toegestaan op dit systeem. + + New filename + Nieuwe bestandsnaam - - The file could not be synced because it contains characters which are not allowed on this system. - Dit bestand kon niet worden gesynchroniseerd omdat het symbolen bevat die niet toegestaan zijn op dit systeem. + + The file "%1" could not be synced because the name contains characters which are not allowed on this system. + Het bestand %1 kan niet worden gesynchroniseerd omdat de naam tekens bevat die niet zijn toegestaan op dit systeem. - - The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces - + + The file could not be synced because it contains characters which are not allowed on this system. + Dit bestand kon niet worden gesynchroniseerd omdat het symbolen bevat die niet toegestaan zijn op dit systeem. - - + + + The following characters are not allowed on the system: * " | & ? , ; : \ / ~ < > leading/trailing spaces + + + + OCC::LegalNotice - - <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> - + + <p>Copyright 2017-2023 Nextcloud GmbH<br />Copyright 2012-2023 ownCloud GmbH</p> + + + + + <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> + <p>Gelicenseerd onder de GNU General Public License (GPL) Versie 2.0 of later</p> - - <p>Licensed under the GNU General Public License (GPL) Version 2.0 or any later version.</p> - <p>Gelicenseerd onder de GNU General Public License (GPL) Versie 2.0 of later</p> + + + Legal notice + Juridische bepalingen - Legal notice - Juridische bepalingen + + Close + Sluiten - - + + OCC::LogBrowser - - Enable logging to temporary folder - Inschakelen logging naar tijdelijke map + + Enable logging to temporary folder + Inschakelen logging naar tijdelijke map - - Log Output - Log Output + + Log Output + Log Output - - The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. + + The client can write debug logs to a temporary folder. These logs are very helpful for diagnosing problems. Since log files can get large, the client will start a new one for each sync run and compress older ones. It will also delete log files after a couple of hours to avoid consuming too much disk space. If enabled, logs will be written to %1 - De client kan debug-logboeken naar een tijdelijke map schrijven. Deze logboeken zijn erg handig bij het diagnosticeren van problemen. + De client kan debug-logboeken naar een tijdelijke map schrijven. Deze logboeken zijn erg handig bij het diagnosticeren van problemen. Omdat logbestanden groot kunnen worden, zal de client een nieuwe starten voor elke synchronisatierun en de oudere comprimeren. Het zal ook logbestanden na een paar uur verwijderen om te voorkomen dat er te veel schijfruimte wordt verbruikt. Indien ingeschakeld, worden logboeken naar % 1 geschreven - - This setting persists across client restarts. + + This setting persists across client restarts. Note that using any logging command line options will override this setting. - Deze instelling blijft bestaan tijdens het opnieuw opstarten van de client. + Deze instelling blijft bestaan tijdens het opnieuw opstarten van de client. Merk op dat het gebruik van logging-opdrachtregel opties deze instelling zal overschrijven. - - + + + Open folder + Map openen + + + OCC::Logger - - <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> - <nobr>Bestand "%1"<br/>kan niet voor schrijven worden geopend.<br/><br/>De log output kan <b>niet</b> opgeslagen worden!</nobr> + + Error + Fout + + + + <nobr>File "%1"<br/>cannot be opened for writing.<br/><br/>The log output <b>cannot</b> be saved!</nobr> + <nobr>Bestand "%1"<br/>kan niet voor schrijven worden geopend.<br/><br/>De log output kan <b>niet</b> opgeslagen worden!</nobr> - - + + OCC::NSISUpdater - - <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> - <p>Een nieuwe versie van de %1 Client is beschikbaar, maar het updaten is mislukt.</p><p><b>%2</b> is gedownload. De geïnstalleerde versie is %3. Als je herstarten en bijwerken bevestigt, kan je computer opnieuw opgestart worden om de installatie te voltooien.</p> + + <p>A new version of the %1 Client is available but the updating process failed.</p><p><b>%2</b> has been downloaded. The installed version is %3. If you confirm restart and update, your computer may reboot to complete the installation.</p> + <p>Een nieuwe versie van de %1 Client is beschikbaar, maar het updaten is mislukt.</p><p><b>%2</b> is gedownload. De geïnstalleerde versie is %3. Als je herstarten en bijwerken bevestigt, kan je computer opnieuw opgestart worden om de installatie te voltooien.</p> - - <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> - <p>Er is een nieuwe versie van de %1 Client beschikbaar.</p><p><b>%2</b> is beschikbaar voor download. De geïnstalleerde versie is %3.</p> + + <p>A new version of the %1 Client is available.</p><p><b>%2</b> is available for download. The installed version is %3.</p> + <p>Er is een nieuwe versie van de %1 Client beschikbaar.</p><p><b>%2</b> is beschikbaar voor download. De geïnstalleerde versie is %3.</p> - - Ask again later - Vraag later nogmaals + + Ask again later + Vraag later nogmaals - - Get update - Ophalen update + + Get update + Ophalen update - - New Version Available - Nieuwe versie beschikbaar + + New Version Available + Nieuwe versie beschikbaar - - Restart and update - Herstarten en bijwerken + + Restart and update + Herstarten en bijwerken - - Skip this time - Deze keer overslaan + + Skip this time + Deze keer overslaan - - Update Failed - Bijwerken mislukt + + Update Failed + Bijwerken mislukt - - Update manually - Handmatig bijwerken + + Update manually + Handmatig bijwerken - - + + OCC::NetworkSettings - - Download Bandwidth - Download bandbreedte + + Download Bandwidth + Download bandbreedte - - Host - Server + + Host + Server - - Hostname of proxy server - Hostnaam van proxyserver + + Hostname of proxy server + Hostnaam van proxyserver - - HTTP(S) proxy - HTTP(S) proxy + + HTTP(S) proxy + HTTP(S) proxy - - KBytes/s - KBytes/s + + + KBytes/s + KBytes/s - - Limit automatically - Beperk automatisch + + + Limit automatically + Beperk automatisch - - Limit to - Beperkt tot + + + Limit to + Beperkt tot - - Limit to 3/4 of estimated bandwidth - Beperk tot 3/4 van de geschatte bandbreedte + + + Limit to 3/4 of estimated bandwidth + Beperk tot 3/4 van de geschatte bandbreedte - - Manually specify proxy - + + Manually specify proxy + - - No limit - Geen beperking + + + No limit + Geen beperking - - No proxy - + + No proxy + - - Note: proxy settings have no effects for accounts on localhost - Let op: proxy-instellingen hebben geen effect voor accounts op localhost + + Note: proxy settings have no effects for accounts on localhost + Let op: proxy-instellingen hebben geen effect voor accounts op localhost - - Password for proxy server - Wachtwoord voor proxyserver + + Password for proxy server + Wachtwoord voor proxyserver - - Proxy server requires authentication - Proxyserver heeft verificatie nodig + + Proxy server requires authentication + Proxyserver heeft verificatie nodig - - Proxy Settings - Proxy Instellingen + + Proxy Settings + Proxy Instellingen - - SOCKS5 proxy - SOCKS5 proxy + + SOCKS5 proxy + SOCKS5 proxy - Specify proxy manually as - Specificeer proxy handmatig als + Specify proxy manually as + Specificeer proxy handmatig als - - Upload Bandwidth - Upload bandbreedte + + Upload Bandwidth + Upload bandbreedte - - Use system proxy - Gebruik systeem proxy + + Use system proxy + Gebruik systeem proxy - - Username for proxy server - Gebruikersnaam voor proxyserver + + Username for proxy server + Gebruikersnaam voor proxyserver - - + + OCC::OAuth - <h1>Login Error</h1><p>%1</p> - <h1>Inlog fout<p>%1</p> + <h1>Login Error</h1><p>%1</p> + <h1>Inlog fout<p>%1</p> - <h1>Wrong account</h1><p>You logged in with the account <em>%1</em>, but must log in with the account <em>%2</em>.<br>Please log out of %3 in another tab, then <a href='%4'>click here</a> and log in with %2.</p> - + Empty JSON from OAuth2 redirect + Lege JSON van OAuth2 redirect - - Empty JSON from OAuth2 redirect - Lege JSON van OAuth2 redirect - - - + + OCC::OCUpdater - - %1 available. Restart application to start the update. - %1 beschikbaar. Herstart de applicatie om de update te starten. + + %1 available. Restart application to start the update. + %1 beschikbaar. Herstart de applicatie om de update te starten. - - A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. - Een nieuwe update voor %1 wordt geïnstalleerd. De updater kan om extra privileges vragen tijdens het update proces. Je computer kan herstart worden om de installatie te voltooien. + + A new update for %1 is about to be installed. The updater may ask for additional privileges during the process. Your computer may reboot to complete the installation. + Een nieuwe update voor %1 wordt geïnstalleerd. De updater kan om extra privileges vragen tijdens het update proces. Je computer kan herstart worden om de installatie te voltooien. - - Checking update server … - Controleren updateserver ... + + Checking update server … + Controleren updateserver ... - - Could not check for new updates. - Kan niet controleren op nieuwe updates. + + Could not check for new updates. + Kan niet controleren op nieuwe updates. - - Could not download update. Please open %1 to download the update manually. - Kon de update niet downloaden. Open %1 om de update handmatig te downloaden. + + Could not download update. Please open %1 to download the update manually. + Kon de update niet downloaden. Open %1 om de update handmatig te downloaden. - - Could not download update. Please open <a href='%1'>%1</a> to download the update manually. - Kon de download niet bijwerken. Open <a href='%1'>%1</a> om de update handmatig te downloaden. + + Could not download update. Please open <a href='%1'>%1</a> to download the update manually. + Kon de download niet bijwerken. Open <a href='%1'>%1</a> om de update handmatig te downloaden. - - Downloading %1. Please wait … - Downloaden %1. Even geduld … + + Downloading %1. Please wait … + Downloaden %1. Even geduld … - - New %1 is available. Please open %2 to download the update. - Nieuwe %1 beschikbaar. Open %2 om de update te downloaden. + + New %1 is available. Please open %2 to download the update. + Nieuwe %1 beschikbaar. Open %2 om de update te downloaden. - - New %1 is available. Please open <a href='%2'>%2</a> to download the update. - Nieuwe %1 beschikbaar. Open <a href='%2'>%1</a> om de update te downloaden. + + New %1 is available. Please open <a href='%2'>%2</a> to download the update. + Nieuwe %1 beschikbaar. Open <a href='%2'>%1</a> om de update te downloaden. - - New %1 update ready - Nieuwe %1 update is klaar + + New %1 update ready + Nieuwe %1 update is klaar - - No updates available. Your installation is at the latest version. - Geen updates beschikbaar. Je installatie is al van de laatste versie. + + No updates available. Your installation is at the latest version. + Geen updates beschikbaar. Je installatie is al van de laatste versie. - - Update Check - Controle update + + Update Check + Controle update - - Update status is unknown: Did not check for new updates. - Update status is onbekend: niet gecontroleerd op nieuwe updates. + + Update status is unknown: Did not check for new updates. + Update status is onbekend: niet gecontroleerd op nieuwe updates. - - + + OCC::OwncloudAdvancedSetupPage - - (%1) - (%1) + + + (%1) + (%1) - - %1 folder "%2" is synced to local folder "%3" - %1 map "%2" is gesynchroniseerd naar de lokale map "%3" + + %1 folder "%2" is synced to local folder "%3" + %1 map "%2" is gesynchroniseerd naar de lokale map "%3" - - %1 free space - %1 vrije ruimte + %1 free space + %1 vrije ruimte - - Connect - Verbinden + + Connect + Verbinden - - Local Sync Folder - Lokale synchronisatiemap + + + (experimental) + (experimenteel) - - Sync the folder "%1" - Synchroniseer de map "%1" + + Virtual files are not supported for Windows partition roots as local folder. Please choose a valid subfolder under drive letter. + Virtuele bestanden worden niet ondersteund voor Windows-partitie-hoofdmappen als lokale map. Kies een geldige submap onder de stationsletter. - - There isn't enough free space in the local folder! - Er is niet genoeg ruimte beschikbaar in de lokale map! + + %1 free space + %1 gets replaced with the size and a matching unit. Example: 3 MB or 5 GB + %1 vrije ruimte - - Use &virtual files instead of downloading content immediately %1 - Gebruik &virtuele bestanden in plaats van direct downloaden content%1 + + Virtual files are not available for the selected folder + Virtuele bestanden zijn niet beschikbaar voor de geselecteerde map - - Warning: The local folder is not empty. Pick a resolution! - Waarschuwing: De lokale map is niet leeg. Maak een keuze! + + Local Sync Folder + Lokale synchronisatiemap - - + + + Sync the folder "%1" + Synchroniseer de map "%1" + + + + There isn't enough free space in the local folder! + Er is niet genoeg ruimte beschikbaar in de lokale map! + + + + + Use &virtual files instead of downloading content immediately %1 + Gebruik &virtuele bestanden in plaats van direct downloaden content%1 + + + + Warning: The local folder is not empty. Pick a resolution! + Waarschuwing: De lokale map is niet leeg. Maak een keuze! + + + OCC::OwncloudConnectionMethodDialog - - <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Kan niet verbinden met het opgegeven beveiligde serveradres <em>%1</em>.Hoe wilt u verder gaan?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address <em>%1</em>. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Kan niet verbinden met het opgegeven beveiligde serveradres <em>%1</em>.Hoe wilt u verder gaan?</p></body></html> - - <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> - <html><head/><body><p>Kan niet verbinden met het opgegeven beveiligde serveradres. Hoe wilt u verder gaan?</p></body></html> + + <html><head/><body><p>Failed to connect to the secure server address specified. How do you wish to proceed?</p></body></html> + <html><head/><body><p>Kan niet verbinden met het opgegeven beveiligde serveradres. Hoe wilt u verder gaan?</p></body></html> - - Configure client-side TLS certificate - Configureer het client-side TLS-certificaat + + Configure client-side TLS certificate + Configureer het client-side TLS-certificaat - - Connection failed - Verbinding mislukt + + Connection failed + Verbinding mislukt - - Retry unencrypted over HTTP (insecure) - Probeer onversleuteld over HTTP (onbeveiligd) + + Retry unencrypted over HTTP (insecure) + Probeer onversleuteld over HTTP (onbeveiligd) - - Select a different URL - Selecteer een andere URL + + Select a different URL + Selecteer een andere URL - - + + OCC::OwncloudHttpCredsPage - - &Email - &E-mail + + &Email + &E-mail - - Connect to %1 - Verbinden met %1 + + Connect to %1 + Verbinden met %1 - - Enter user credentials - Vul uw inloggegevens in + + Enter user credentials + Vul uw inloggegevens in - - + + OCC::OwncloudOAuthCredsPage - Login in your browser - Login in je browser + Login in your browser + Login in je browser - - + + OCC::OwncloudPropagator - Error with the metadata. Getting unexpected metadata format. - + + + Impossible to get modification time for file in conflict %1 + Onmogelijk om wijzigingstijd te krijgen voor bestand in conflict %1) + + + OCC::OwncloudSetupPage - - Impossible to get modification time for file in conflict %1 - Onmogelijk om wijzigingstijd te krijgen voor bestand in conflict %1) + + The link to your %1 web interface when you open it in the browser. + %1 will be replaced with the application name + De link naar je %1 web interface wanneer je die opent in de browser. - - - OCC::OwncloudSetupPage - - &Next > - &Volgende > + + &Next > + &Volgende > - - Could not load certificate. Maybe wrong password? - Kan certificaat niet laden. Misschien is het wachtwoord onjuist? + + Could not load certificate. Maybe wrong password? + Kan certificaat niet laden. Misschien is het wachtwoord onjuist? - - Server address does not seem to be valid - Het serveradres lijkt niet geldig + + Server address does not seem to be valid + Het serveradres lijkt niet geldig - - The link to your %1 web interface when you open it in the browser. - De link naar je %1 web interface wanneer je die opent in de browser. + The link to your %1 web interface when you open it in the browser. + De link naar je %1 web interface wanneer je die opent in de browser. - - + + OCC::OwncloudSetupWizard - - <font color="green"><b>Local sync folder %1 successfully created!</b></font> - <font color="green"><b>Lokale synch map %1 is succesvol aangemaakt!</b></font> + + <font color="green"><b>Local sync folder %1 successfully created!</b></font> + <font color="green"><b>Lokale synch map %1 is succesvol aangemaakt!</b></font> + + + + <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> + <font color="green">Succesvol verbonden met %1: %2 versie %3 (%4)</font><br/><br/> + + + + The authenticated request to the server was redirected to "%1". The URL is bad, the server is misconfigured. + De geauthentiseerde aanvraag voor de server werd omgeleid naar "%1". De URL is onjuist, de server is verkeerd geconfigureerd. - - <font color="green">Successfully connected to %1: %2 version %3 (%4)</font><br/><br/> - <font color="green">Succesvol verbonden met %1: %2 versie %3 (%4)</font><br/><br/> + + Access forbidden by server. To verify that you have proper access, <a href="%1">click here</a> to access the service with your browser. + Toegang door server verboden. Om te verifiëren dat je toegang mag hebben, <a href="%1">klik hier</a> om met je browser toegang tot de service te krijgen. - - <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> - <p><font color="red">Het aanmaken van de externe map is mislukt, waarschijnlijk omdat je inloggegevens fout waren.</font><br/>ga terug en controleer je inloggevens.</p> + + There was an invalid response to an authenticated WebDAV request + Er is een ongeldig antwoord ontvangen op een geauthenticeerde WebDAV opvraging - - A sync connection from %1 to remote directory %2 was set up. - Er is een synchronisatie verbinding van %1 naar externe map %2 opgezet. + + <p><font color="red">Remote folder creation failed probably because the provided credentials are wrong.</font><br/>Please go back and check your credentials.</p> + <p><font color="red">Het aanmaken van de externe map is mislukt, waarschijnlijk omdat je inloggegevens fout waren.</font><br/>ga terug en controleer je inloggevens.</p> - - Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. - Kan de map niet verwijderen en back-uppen, omdat de map of een bestand daarin, geopend is in een ander programma. Sluit de map of het bestand en drup op Opnieuw of annuleer de installatie. + + A sync connection from %1 to remote directory %2 was set up. + Er is een synchronisatie verbinding van %1 naar externe map %2 opgezet. - - Connection to %1 could not be established. Please check again. - Er kan geen verbinding worden gemaakt met %1. Probeer het nog eens. + + Cannot remove and back up the folder because the folder or a file in it is open in another program. Please close the folder or file and hit retry or cancel the setup. + Kan de map niet verwijderen en back-uppen, omdat de map of een bestand daarin, geopend is in een ander programma. Sluit de map of het bestand en drup op Opnieuw of annuleer de installatie. - - Could not create local folder %1 - Kan lokale map %1 niet aanmaken + + Connection to %1 could not be established. Please check again. + Er kan geen verbinding worden gemaakt met %1. Probeer het nog eens. - - creating folder on Nextcloud: %1 - aanmaken map op Nextcloud: %1 + + Could not create local folder %1 + Kan lokale map %1 niet aanmaken - - Creating local sync folder %1 … - Creëren lokale synchronisatie map %1 ... + + creating folder on Nextcloud: %1 + aanmaken map op Nextcloud: %1 - - Error: %1 - Fout: %1 + + Creating local sync folder %1 … + Creëren lokale synchronisatie map %1 ... - - Failed to connect to %1 at %2:<br/>%3 - Kon geen verbinding maken met %1 op %2:<br/>%3 + + Error: %1 + Fout: %1 - - failed. - mislukt. + + Failed to connect to %1 at %2:<br/>%3 + Kon geen verbinding maken met %1 op %2:<br/>%3 - - Folder rename failed - Hernoemen map mislukt + + failed. + mislukt. - - Invalid URL - Ongeldige URL + + Folder rename failed + Hernoemen map mislukt - - Local sync folder %1 already exists, setting it up for sync.<br/><br/> - Lokale synchronisatie map %1 bestaat al, deze wordt ingesteld voor synchronisatie.<br/><br/> + + Invalid URL + Ongeldige URL - - No remote folder specified! - Geen externe map opgegeven! + + Local sync folder %1 already exists, setting it up for sync.<br/><br/> + Lokale synchronisatie map %1 bestaat al, deze wordt ingesteld voor synchronisatie.<br/><br/> - - OK - OK + + No remote folder specified! + Geen externe map opgegeven! - - Remote folder %1 created successfully. - Externe map %1 succesvol gecreëerd. + + OK + OK - - Remote folder %1 creation failed with error <tt>%2</tt>. - Aanmaken van externe map %1 mislukt met fout <tt>%2</tt>. + + Remote folder %1 created successfully. + Externe map %1 succesvol gecreëerd. - - Successfully connected to %1! - Succesvol verbonden met %1! + + + Remote folder %1 creation failed with error <tt>%2</tt>. + Aanmaken van externe map %1 mislukt met fout <tt>%2</tt>. - - The folder creation resulted in HTTP error code %1 - Het aanmaken van de map resulteerde in HTTP foutcode %1 + + Successfully connected to %1! + Succesvol verbonden met %1! - - The remote folder %1 already exists. Connecting it for syncing. - De externe map %1 bestaat al. Verbinden voor synchroniseren. + + + The folder creation resulted in HTTP error code %1 + Het aanmaken van de map resulteerde in HTTP foutcode %1 - - The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> - Het aanmaken van de externe map is mislukt, waarschijnlijk omdat je inloggegevens fout waren.<br/>Ga terug en controleer je inloggegevens.</p> + + The remote folder %1 already exists. Connecting it for syncing. + De externe map %1 bestaat al. Verbinden voor synchroniseren. - - Timeout while trying to connect to %1 at %2. - Time-out bij verbinden met %1 op %2. + + The remote folder creation failed because the provided credentials are wrong!<br/>Please go back and check your credentials.</p> + Het aanmaken van de externe map is mislukt, waarschijnlijk omdat je inloggegevens fout waren.<br/>Ga terug en controleer je inloggegevens.</p> - - Trying to connect to %1 at %2 … - Probeer te verbinden met %1 om %2 ... + + Timeout while trying to connect to %1 at %2. + Time-out bij verbinden met %1 op %2. - - + + + Trying to connect to %1 at %2 … + Probeer te verbinden met %1 om %2 ... + + + OCC::OwncloudWizard - - Add %1 account - Toevoegen %1 account + + Add %1 account + Toevoegen %1 account + + + + Cancel + Annuleren - - Enable experimental feature? - Inschakelen experimentele functies? + + Enable experimental feature? + Inschakelen experimentele functies? - - Enable experimental placeholder mode - Inschakelen experimentele aanduider modus + + Enable experimental placeholder mode + Inschakelen experimentele aanduider modus - - Skip folders configuration - Sla configuratie van mappen over + + Skip folders configuration + Sla configuratie van mappen over - - Stay safe - Blijf veilig + + Stay safe + Blijf veilig - - When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. + + When the "virtual files" mode is enabled no files will be downloaded initially. Instead, a tiny "%1" file will be created for each file that exists on the server. The contents can be downloaded by running these files or by using their context menu. The virtual files mode is mutually exclusive with selective sync. Currently unselected folders will be translated to online-only folders and your selective sync settings will be reset. Switching to this mode will abort any currently running synchronization. This is a new, experimental mode. If you decide to use it, please report any issues that come up. - Als de "virtuele bestanden" modus is ingeschakeld, worden aanvankelijk geen bestanden gedownload. In plaats daarvan wordt een klein "% 1" -bestand gemaakt voor elk bestand dat op de server staat. De inhoud kan worden gedownload door deze bestanden uit te voeren of door hun contextmenu te gebruiken. + Als de "virtuele bestanden" modus is ingeschakeld, worden aanvankelijk geen bestanden gedownload. In plaats daarvan wordt een klein "% 1" -bestand gemaakt voor elk bestand dat op de server staat. De inhoud kan worden gedownload door deze bestanden uit te voeren of door hun contextmenu te gebruiken. De modus voor virtuele bestanden is wederzijds exclusief met selectieve synchronisatie. De op dit moment niet-geselecteerde mappen worden vertaald naar mappen die alleen online zijn en je instellingen voor selectieve synchronisatie worden opnieuw ingesteld. @@ -3730,2540 +4232,3191 @@ Als je naar deze modus overschakelt, wordt elke momenteel lopende synchronisatie Dit is een nieuwe, experimentele modus. Als je besluit het te gebruiken, vragen we je om eventuele problemen te melden. - - + + OCC::PasswordInputDialog - - Please enter a password for your share: - + + Password for share required + Wachtwoord voor deellink vereist - - + + + Please enter a password for your share: + + + + OCC::PollJob - - Invalid JSON reply from the poll URL - Ongeldig JSON antwoord van de opgegeven URL + + Invalid JSON reply from the poll URL + Ongeldig JSON antwoord van de opgegeven URL - - + + OCC::ProcessDirectoryJob - - Cannot sync due to invalid modification time - + + Cannot sync due to invalid modification time + - - Case Clash Conflict: Server file downloaded and renamed to avoid clash. - + + Case Clash Conflict: Server file downloaded and renamed to avoid clash. + - - Conflict when uploading a file. It's going to get removed! - Conflict bij het uploaden van een bestand. Het wordt verwijderd! + + Conflict when uploading a file. It's going to get removed! + Conflict bij het uploaden van een bestand. Het wordt verwijderd! - - Conflict when uploading a folder. It's going to get cleared! - Conflict bij het uploaden van een map. Het wordt opgeruimd! + + Conflict when uploading a folder. It's going to get cleared! + Conflict bij het uploaden van een map. Het wordt opgeruimd! - - Conflict: Server version downloaded, local copy renamed and not uploaded. - Bestandsconflict: serverversie is gedownload, de lokale kopie is hernoemd en niet geüpload + + Filename contains trailing spaces. + De bestandsnaam bevat spaties achteraan. - - Could not upload file, because it is open in "%1". - + + Filename contains leading spaces. + De bestandsnaam bevat spaties vooraan. - - Error while deleting file record %1 from the database - + + Filename contains leading and trailing spaces. + De bestandsnaam bevat spaties vooraan en achteraan. - - Error while reading the database - Fout bij lezen database + + Conflict: Server version downloaded, local copy renamed and not uploaded. + Bestandsconflict: serverversie is gedownload, de lokale kopie is hernoemd en niet geüpload - - File has extension reserved for virtual files. - Bestand heeft een extensie gereserveerd voor virtuele bestanden. + + Could not upload file, because it is open in "%1". + - - file id - bestand id + + Error while deleting file record %1 from the database + - - File is listed on the ignore list. - Het bestand is opgenomen op de negeerlijst. + + Error while reading the database + Fout bij lezen database - - File name contains at least one invalid character - De bestandsnaam bevat ten minste één ongeldig teken + + File has extension reserved for virtual files. + Bestand heeft een extensie gereserveerd voor virtuele bestanden. - - File names containing the character "%1" are not supported on this file system. - Bestandsnamen met een "%1" symbool worden niet ondersteund door het bestandssysteem. + + file id + bestand id - - File names ending with a period are not supported on this file system. - Bestandsnamen die eindigen met een punt worden niet ondersteund door het bestandssysteem. + + File is listed on the ignore list. + Het bestand is opgenomen op de negeerlijst. - - File/Folder is ignored because it's hidden. - Bestand/Map is genegeerd omdat het verborgen is. + + File name contains at least one invalid character + De bestandsnaam bevat ten minste één ongeldig teken - - Filename is too long. - De bestandsnaam is te lang. + + File names containing the character "%1" are not supported on this file system. + Bestandsnamen met een "%1" symbool worden niet ondersteund door het bestandssysteem. - - Ignored because of the "choose what to sync" blacklist - Genegeerd vanwege de "wat synchroniseren" negeerlijst + + File names ending with a period are not supported on this file system. + Bestandsnamen die eindigen met een punt worden niet ondersteund door het bestandssysteem. - - Moved to invalid target, restoring - Verplaatst naar ongeldig doel, herstellen + + File/Folder is ignored because it's hidden. + Bestand/Map is genegeerd omdat het verborgen is. - - Not allowed because you don't have permission to add files in that folder - Niet toegestaan omdat je geen machtiging hebt om bestanden in die map toe te voegen + + Filename is too long. + De bestandsnaam is te lang. - - Not allowed because you don't have permission to add subfolders to that folder - Niet toegestaan, omdat je geen machtiging hebt om submappen aan die map toe te voegen + + Ignored because of the "choose what to sync" blacklist + Genegeerd vanwege de "wat synchroniseren" negeerlijst - - Not allowed to remove, restoring - Niet toegestaan om te verwijderen, herstellen + + + Moved to invalid target, restoring + Verplaatst naar ongeldig doel, herstellen - - Not allowed to upload this file because it is read-only on the server, restoring - Niet toegestaan om dit bestand te uploaden, omdat het alleen-lezen is op de server, herstellen + + Not allowed because you don't have permission to add files in that folder + Niet toegestaan omdat je geen machtiging hebt om bestanden in die map toe te voegen - - permission - machtiging + + + Not allowed because you don't have permission to add subfolders to that folder + Niet toegestaan, omdat je geen machtiging hebt om submappen aan die map toe te voegen - - Server replied with an error while reading directory "%1" : %2 - Server gaf een foutmelding bij lezen directory "%1'": %2 + + Not allowed to remove, restoring + Niet toegestaan om te verwijderen, herstellen - - Server reported no %1 - Server rapporteerde nr %1 + + Not allowed to upload this file because it is read-only on the server, restoring + Niet toegestaan om dit bestand te uploaden, omdat het alleen-lezen is op de server, herstellen - - size - omvang + + permission + machtiging - - Stat failed. - Stat mislukt. + + Server replied with an error while reading directory "%1" : %2 + Server gaf een foutmelding bij lezen directory "%1'": %2 - - Symbolic links are not supported in syncing. - Symbolische links worden niet ondersteund bij het synchroniseren. + + Server reported no %1 + Server rapporteerde nr %1 - - The file name is a reserved name on this file system. - De bestandsnaam is een gereserveerde naam op dit bestandssysteem. + + size + omvang - - The filename cannot be encoded on your file system. - De bestandsnaam kan op je bestandssysteem niet worden gecodeerd. + + Stat failed. + Stat mislukt. - - The filename is blacklisted on the server. - De bestandsnaam staat op de negeerlijst van de server. + + Symbolic links are not supported in syncing. + Symbolische links worden niet ondersteund bij het synchroniseren. - - + + + The file name is a reserved name on this file system. + De bestandsnaam is een gereserveerde naam op dit bestandssysteem. + + + + The filename cannot be encoded on your file system. + De bestandsnaam kan op je bestandssysteem niet worden gecodeerd. + + + + The filename is blacklisted on the server. + De bestandsnaam staat op de negeerlijst van de server. + + + OCC::PropagateDirectory - - could not delete file %1 from local DB - + + could not delete file %1 from local DB + + + + + Error updating metadata due to invalid modification time + Fout bij bijwerken metadata door ongeldige laatste wijziging datum - - Error updating metadata due to invalid modification time - Fout bij bijwerken metadata door ongeldige laatste wijziging datum + + Error updating metadata: %1 + Fout bij bijwerken metadata: %1 - - File is currently in use - Bestand is al in gebruik + + File is currently in use + Bestand is al in gebruik - - The folder %1 cannot be made read-only: %2 - + + + The folder %1 cannot be made read-only: %2 + - - + + OCC::PropagateDownloadFile - - Could not delete file record %1 from local DB - + + + Could not delete file record %1 from local DB + + + + + could not get file %1 from local DB + - - could not get file %1 from local DB - + + File %1 can not be downloaded because of a local file name clash! + Bestand %1 kan niet worden gedownload, omdat de naam conflicteert met een lokaal bestand - - File %1 can not be downloaded because of a local file name clash! - Bestand %1 kan niet worden gedownload, omdat de naam conflicteert met een lokaal bestand + + File %1 cannot be downloaded because encryption information is missing. + Bestand %1 kan niet worden gedownload, omdat crypto informatie ontbreekt. - - File %1 cannot be downloaded because encryption information is missing. - Bestand %1 kan niet worden gedownload, omdat crypto informatie ontbreekt. + + File %1 downloaded but it resulted in a local file name clash! + - - File %1 downloaded but it resulted in a local file name clash! - + + + File %1 has invalid modified time reported by server. Do not save it. + Bestand %1 heeft een ongeldige wijzigingstijd gerapporteerd door de server. Bewaar het niet. - - File %1 has invalid modified time reported by server. Do not save it. - Bestand %1 heeft een ongeldige wijzigingstijd gerapporteerd door de server. Bewaar het niet. + + + File has changed since discovery + Het bestand is gewijzigd sinds het is gevonden - - File has changed since discovery - Het bestand is gewijzigd sinds het is gevonden + + File was deleted from server + Bestand was verwijderd van de server - - File was deleted from server - Bestand was verwijderd van de server + + Error updating metadata: %1 + Fout bij bijwerken metadata: %1 - - Free space on disk is less than %1 - Vrije schijfruimte is minder dan %1 + + The file %1 is currently in use + Bestand %1 is momenteel in gebruik - - The download would reduce free local disk space below the limit - De download zou de vrije lokale schijfruimte beperken tot onder de limiet + + Free space on disk is less than %1 + Vrije schijfruimte is minder dan %1 - - The downloaded file is empty, but the server said it should have been %1. - Het gedownloade bestand is leeg, maar de server meldde dat het %1 zou moeten zijn. + + The download would reduce free local disk space below the limit + De download zou de vrije lokale schijfruimte beperken tot onder de limiet - - The file could not be downloaded completely. - Het bestand kon niet volledig worden gedownload. + + The downloaded file is empty, but the server said it should have been %1. + Het gedownloade bestand is leeg, maar de server meldde dat het %1 zou moeten zijn. - - + + + The file could not be downloaded completely. + Het bestand kon niet volledig worden gedownload. + + + OCC::PropagateItemJob - - ; Restoration Failed: %1 - ; Herstellen mislukt: %1 + + ; Restoration Failed: %1 + ; Herstellen mislukt: %1 - - A file or folder was removed from a read only share, but restoring failed: %1 - Er is een bestand of map verwijderd van een alleen-lezen share, maar herstellen is mislukt: %1 + + A file or folder was removed from a read only share, but restoring failed: %1 + Er is een bestand of map verwijderd van een alleen-lezen share, maar herstellen is mislukt: %1 - - + + OCC::PropagateLocalMkdir - - Could not create folder %1 - Kon map %1 niet maken + + Could not create folder %1 + Kon map %1 niet maken + + + + could not delete file %1, error: %2 + kon bestand file %1 niet verwijderen, fout: %2 - - could not delete file %1, error: %2 - kon bestand file %1 niet verwijderen, fout: %2 + + Folder %1 cannot be created because of a local file or folder name clash! + - - Folder %1 cannot be created because of a local file or folder name clash! - + + The folder %1 cannot be made read-only: %2 + - - + + + Error updating metadata: %1 + Fout bij bijwerken metadata: %1 + + + + The file %1 is currently in use + Bestand %1 is momenteel in gebruik + + + OCC::PropagateLocalRemove - - Could not remove %1 because of a local file name clash - Bestand %1 kon niet worden verwijderd, omdat de naam conflicteert met een lokaal bestand + + Could not remove %1 because of a local file name clash + Bestand %1 kon niet worden verwijderd, omdat de naam conflicteert met een lokaal bestand + + + + Could not delete file record %1 from local DB + - - + + OCC::PropagateLocalRename - - Error setting pin state - Fout bij instellen pin status + + File %1 downloaded but it resulted in a local file name clash! + - - Failed to propagate directory rename in hierarchy - + + + + could not get file %1 from local DB + - - Failed to rename file - Kon bestand niet hernoemen + + + Error setting pin state + Fout bij instellen pin status - - Folder %1 cannot be renamed because of a local file or folder name clash! - Map %1 kan niet hernoemd worden vanwege een lokale bestands- of mapnaamclash! + + + Error updating metadata: %1 + Fout bij bijwerken metadata: %1 - - + + + The file %1 is currently in use + Bestand %1 is momenteel in gebruik + + + + + Could not delete file record %1 from local DB + + + + + Failed to propagate directory rename in hierarchy + + + + + Failed to rename file + Kon bestand niet hernoemen + + + + Folder %1 cannot be renamed because of a local file or folder name clash! + Map %1 kan niet hernoemd worden vanwege een lokale bestands- of mapnaamclash! + + + + OCC::PropagateRemoteDelete + + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". + + + + Could not delete file record %1 from local DB + + + + + OCC::PropagateRemoteDeleteEncryptedRootFolder + + + Wrong HTTP code returned by server. Expected 204, but received "%1 %2". + Foutieve HTTP code ontvangen van de server. Verwacht was 204, maar ontvangen "%1 %2". + + + OCC::PropagateRemoteMkdir - - Error writing metadata to the database: %1 - Fout bij schrijven van metadata naar de database: %1 + + Error writing metadata to the database: %1 + Fout bij schrijven van metadata naar de database: %1 + + + + Failed to encrypt a folder %1 + - - Failed to encrypt a folder %1 - + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Foutieve HTTP code ontvangen van de server. Verwacht was 201, maar ontvangen "%1 %2". - - Wrong HTTP code returned by server. Expected 201, but received "%1 %2". - Foutieve HTTP code ontvangen van de server. Verwacht was 201, maar ontvangen "%1 %2". + + The file %1 is currently in use + Bestand %1 is momenteel in gebruik - - + + OCC::PropagateRemoteMove - - Could not rename %1 to %2, error: %3 - Kon niet %1 hernoemen naar %2, fout: %3 + + Could not rename %1 to %2, error: %3 + Kon niet %1 hernoemen naar %2, fout: %3 - - + + + + Error updating metadata: %1 + Fout bij bijwerken metadata: %1 + + + + + The file %1 is currently in use + Bestand %1 is momenteel in gebruik + + + + Wrong HTTP code returned by server. Expected 201, but received "%1 %2". + Foutieve HTTP code ontvangen van de server. Verwacht was 201, maar ontvangen "%1 %2". + + + + could not get file %1 from local DB + + + + + Could not delete file record %1 from local DB + + + + + Error setting pin state + Fout bij instellen pin status + + + + Error writing metadata to the database + Fout bij schrijven van metadata naar de database + + + OCC::PropagateUploadFileCommon - - Failed to unlock encrypted folder. - Kon versleutelde map niet ontgrendelen. + + Failed to unlock encrypted folder. + Kon versleutelde map niet ontgrendelen. + + + + Failed to upload encrypted file. + Kon versleuteld bestand niet uploaden. + + + + File %1 cannot be uploaded because another file with the same name, differing only in case, exists + Bestand %1 kan niet worden geüpload omdat er al een ander bestand met dezelfde naam bestaat, al verschillen hoofd/kleine letters + + + + + + File %1 has invalid modification time. Do not upload to the server. + Bestand %1 heeft een ongeldige laatste wijziging datum. Upload niet naar de server. + + + + File Removed (start upload) %1 + Bestand verwijderd (start upload) %1 - - Failed to upload encrypted file. - Kon versleuteld bestand niet uploaden. + + Local file changed during syncing. It will be resumed. + Lokaal bestand gewijzigd gedurende synchronisatie. Wordt opnieuw meegenomen. - - Unable to upload an item with invalid characters - + + Local file changed during sync. + Lokaal bestand gewijzigd tijdens synchronisatie. - - Upload of %1 exceeds the quota for the folder - Upload van %1 overschrijdt het quotum voor de map + + Unable to upload an item with invalid characters + - - + + + Error updating metadata: %1 + Fout bij bijwerken metadata: %1 + + + + The file %1 is currently in use + Bestand %1 is momenteel in gebruik + + + + + Upload of %1 exceeds the quota for the folder + Upload van %1 overschrijdt het quotum voor de map + + + OCC::PropagateUploadFileNG - - Missing ETag from server - Ontbrekende ETag van de server + + Missing ETag from server + Ontbrekende ETag van de server - - Missing File ID from server - Ontbrekende File ID van de server + + Missing File ID from server + Ontbrekende File ID van de server - - Poll URL missing - Peilingen-URL ontbreekt + + The local file was removed during sync. + Het lokale bestand werd verwijderd tijdens synchronisatie. - - Unexpected return code from server (%1) - Onverwachte reactie van server (%1) + + Local file changed during sync. + Lokaal bestand gewijzigd tijdens synchronisatie. - - + + + Poll URL missing + Peilingen-URL ontbreekt + + + + Unexpected return code from server (%1) + Onverwachte reactie van server (%1) + + + OCC::PropagateUploadFileV1 - - The server did not acknowledge the last chunk. (No e-tag was present) - De server heeft het laatste deel niet bevestigd (er was geen e-tag aanwezig) + + Poll URL missing + Peilingen-URL ontbreekt + + + + The local file was removed during sync. + Het lokale bestand werd verwijderd tijdens synchronisatie. + + + + Local file changed during sync. + Lokaal bestand gewijzigd tijdens synchronisatie. + + + + The server did not acknowledge the last chunk. (No e-tag was present) + De server heeft het laatste deel niet bevestigd (er was geen e-tag aanwezig) - - + + OCC::ProxyAuthDialog - - Password: - Wachtwoord: + + Password: + Wachtwoord: - - Proxy authentication required - Proxy-authenticatie vereist + + Proxy authentication required + Proxy-authenticatie vereist - - Proxy: - Proxy: + + Proxy: + Proxy: - - The proxy server needs a username and password. - De proxyserver heeft een gebruikersnaam en wachtwoord nodig + + The proxy server needs a username and password. + De proxyserver heeft een gebruikersnaam en wachtwoord nodig - - Username: - Gebruikersnaam: + + Username: + Gebruikersnaam: - - + + OCC::SelectiveSyncDialog - - Choose What to Sync - Kies wat te synchroniseren + + Choose What to Sync + Kies wat te synchroniseren - - + + OCC::SelectiveSyncWidget - - An error occurred while loading the list of sub folders. - Er trad een fout op bij het laden van de lijst met submappen. + + An error occurred while loading the list of sub folders. + Er trad een fout op bij het laden van de lijst met submappen. - - Deselect remote folders you do not wish to synchronize. - Deselecteer de externe mappen die u niet wenst te synchroniseren. + + Deselect remote folders you do not wish to synchronize. + Deselecteer de externe mappen die u niet wenst te synchroniseren. - - Loading … - Laden ... + + Loading … + Laden ... - - Name - Naam + + Name + Naam - - No subfolders currently on the server. - Momenteel geen submappen op de server. + + + No subfolders currently on the server. + Momenteel geen submappen op de server. - - Size - Grootte + + Size + Grootte - - + + OCC::ServerNotificationHandler - - Reply - Antwoord + + Reply + Antwoord - - + + OCC::SettingsDialog - - %1 Settings - %1 Instellingen + + %1 Settings + This name refers to the application name e.g Nextcloud + %1 Instellingen - - Account - Account + + Account + Account - - General - Algemeen + + General + Algemeen - Network - Netwerk + Network + Netwerk - - New Account - Nieuw account + + New Account + Nieuw account - - - OCC::ShareModel - - Could not find local folder for %1 - + + Settings + Instellingen + + + OCC::ShareManager + + + Error + Fout + + + + OCC::ShareModel - Enter a note for the recipient - + + Could not find local folder for %1 + - - Internal link - + + Internal link + - - Link share - + + Link share + - - Secure file drop - + + Secure file drop + - - Secure file drop link - + + Secure file drop link + - - Share link - + + Share link + - - + + OCC::ShareUserLine - Can edit - Kan bewerken + Can edit + Kan bewerken - Expires: - Verloopt: + Expires: + Verloopt: - Note: - Opmerking: + Note: + Opmerking: - - + + OCC::ShareeModel - - Global search results - + + Global search results + - - No results found - + + No results found + - - Search globally - + + %1 (%2) + sharee (shareWithAdditionalInfo) + %1 (%2) - - + + + + Search globally + + + + OCC::SocketApi - Activity - Activiteit + + + Activity + Activiteit - - Context menu share - Contextmenu delen + + Context menu share + Contextmenu delen - - Copy internal link - Kopieer interne link + + Copy internal link + Kopieer interne link - - Copy private link to clipboard - Kopieer privé-link naar klembord + + Copy private link to clipboard + Kopieer privé-link naar klembord - - Copy public link - Kopieer openbare link + + + Copy public link + Kopieer openbare link - - Copy secure file drop link - + + Copy secure file drop link + - - Copy secure filedrop link - + + Copy secure filedrop link + - - Could not encrypt the following folder: "%1". + + Could not encrypt the following folder: "%1". Server replied with error: %2 - + - - Delete local changes - Verwijder lokale aanpassingen + + Delete local changes + Verwijder lokale aanpassingen - - Edit - Bewerken + + Edit + Bewerken - - - Expires in %1 minutes - - - - Verloopt in %1 minuten - + + + Failed to encrypt folder + - - Failed to encrypt folder - + + Failed to encrypt folder at "%1" + - - Failed to encrypt folder at "%1" - + + Folder encrypted successfully + - - Folder encrypted successfully - + + I shared something with you + Ik deelde iets met u - - I shared something with you - Ik deelde iets met u + + Leave this share + - - Leave this share - + + Encrypt + Versleutelen - - Lock file - + + Lock file + - - Locked by %1 - + + Locked by %1 + + + + + Expires in %1 minutes + remaining time before lock expires + + + + - - Move and rename … - Verplaatsen en hernoemen ... + + Move and rename … + Verplaatsen en hernoemen ... - - Move and upload … - Verplaatsen en uploaden ... + + Move and upload … + Verplaatsen en uploaden ... - - Move, rename and upload … - Verplaatsen, hernoemen en uploaden ... + + Delete + Verwijderen - - Open in browser - Openen in browser + + Move, rename and upload … + Verplaatsen, hernoemen en uploaden ... - - Resharing this file is not allowed - Verder delen van dit bestand is niet toegestaan + + Open in browser + Openen in browser - - Resharing this folder is not allowed - Verder delen van deze map is niet toegestaan + + Resharing this file is not allowed + Verder delen van dit bestand is niet toegestaan - - Resolve conflict … - Oplossen conflict ... + + Resharing this folder is not allowed + Verder delen van deze map is niet toegestaan - - Select new location … - Selecteer nieuwe locatie ... + + Resolve conflict … + Oplossen conflict ... - - Send private link by email … - Verstuur privélink per e-mail --- + + Select new location … + Selecteer nieuwe locatie ... - - Share options - Deelopties + + Send private link by email … + Verstuur privélink per e-mail --- - - The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. - + + + Share options + Deelopties - - The following folder was encrypted successfully: "%1" - + + The account %1 does not have end-to-end encryption configured. Please configure this in your account settings to enable folder encryption. + - - Unlock file - + + The following folder was encrypted successfully: "%1" + - - + + + Unlock file + + + + OCC::SslButton - - %1 (self-signed) - %1 (zelf ondertekend) + + %1 (self-signed) + %1 (zelf ondertekend) + + + + <h3>Certificate Details</h3> + <h3>Certificaat details</h3> + + + + <h3>Fingerprints</h3> + <h3>Vingerafdrukken</h3> + + + + <h3>Issuer</h3> + <h3>Uitgever</h3> - - <h3>Certificate Details</h3> - <h3>Certificaat details</h3> + + <p><b>Note:</b> This certificate was manually approved</p> + <p><b>Let op:</b> Dit certificaat werd handmatig goedgekeurd</p> - - <h3>Fingerprints</h3> - <h3>Vingerafdrukken</h3> + + Certificate information: + Certificaat informatie: - - <h3>Issuer</h3> - <h3>Uitgever</h3> + + Common Name (CN): + Common Name (CN): - - <p><b>Note:</b> This certificate was manually approved</p> - <p><b>Let op:</b> Dit certificaat werd handmatig goedgekeurd</p> + + Country: + Land: - - Certificate information: - Certificaat informatie: + + Expires on: + Vervalt op: - - Common Name (CN): - Common Name (CN): + + Issued on: + Uitgegeven op: - - Country: - Land: + + Issuer: + Uitgever: - - Expires on: - Vervalt op: + + No support for SSL session tickets/identifiers + Geen ondersteuning voor SSL-sessie tickets/identifiers - - Issued on: - Uitgegeven op: + + Organization (O): + Organisatie (O): - - Issuer: - Uitgever: + + Organizational Unit (OU): + Organisatie unit (OU): - - No support for SSL session tickets/identifiers - Geen ondersteuning voor SSL-sessie tickets/identifiers + + Serial: + Serienummer: - - Organization (O): - Organisatie (O): + + %1 + %1 - - Organizational Unit (OU): - Organisatie unit (OU): + + This connection is encrypted using %1 bit %2. + + - - Serial: - Serienummer: + + This connection is NOT secure as it is not encrypted. + + - - Server version: %1 - Serverversie: %1 + + Server version: %1 + Serverversie: %1 - - SHA-1: - SHA-1: + + SHA-1: + SHA-1: - - SHA-256: - SHA-256: + + SHA-256: + SHA-256: - - State/Province: - Land/Provincie: + + State/Province: + Land/Provincie: - - Subject Alternative Names: - Alternatieve subject namen: + + Subject Alternative Names: + Alternatieve subject namen: - - The connection is not secure - De verbinding is niet veilig + + The connection is not secure + De verbinding is niet veilig - - This connection is encrypted using %1 bit %2. - Deze verbinding is versleuteld via %1 bit %2. + This connection is encrypted using %1 bit %2. + Deze verbinding is versleuteld via %1 bit %2. - - This connection is NOT secure as it is not encrypted. - Deze verbinding is NIET veilig, omdat deze niet versleuteld is. + This connection is NOT secure as it is not encrypted. + Deze verbinding is NIET veilig, omdat deze niet versleuteld is. - - + + OCC::SslErrorDialog - - &lt;not specified&gt; - &lt;niet gespecificeerd&gt; + + + + &lt;not specified&gt; + &lt;niet gespecificeerd&gt; - - Additional errors: - Additionele fouten: + + Additional errors: + Additionele fouten: - - Cannot connect securely to <i>%1</i>: - Kan niet beveiligd verbinden met <i>%1</i>: + + Cannot connect securely to <i>%1</i>: + Kan niet beveiligd verbinden met <i>%1</i>: - - Country: %1 - Land: %1 + + + Country: %1 + Land: %1 - - Effective Date: %1 - Ingangsdatum: %1 + + Effective Date: %1 + Ingangsdatum: %1 - - Expiration Date: %1 - Vervaldatum: %1 + + Expiration Date: %1 + Vervaldatum: %1 - - Fingerprint (SHA-256): <tt>%1</tt> - Fingerprint (SHA-256): <tt>%1</tt> + + Fingerprint (SHA-256): <tt>%1</tt> + Fingerprint (SHA-256): <tt>%1</tt> - - Fingerprint (SHA-512): <tt>%1</tt> - Fingerprint (SHA-512): <tt>%1</tt> + + Fingerprint (SHA-512): <tt>%1</tt> + Fingerprint (SHA-512): <tt>%1</tt> - - Fingerprint (SHA1): <tt>%1</tt> - Fingerprint (SHA1): <tt>%1</tt> + + Fingerprint (SHA1): <tt>%1</tt> + Fingerprint (SHA1): <tt>%1</tt> - - Issuer: %1 - Uitgever: %1 + + Issuer: %1 + Uitgever: %1 - - Organization: %1 - Organisatie: %1 + + + Organization: %1 + Organisatie: %1 - - Trust this certificate anyway - Vertrouw dit certificaat alsnog + + Trust this certificate anyway + Vertrouw dit certificaat alsnog - - Unit: %1 - Unit: %1 + + + Unit: %1 + Unit: %1 - - Untrusted Certificate - Niet vertrouwd certificaat + + Untrusted Certificate + Niet vertrouwd certificaat - - with Certificate %1 - met certificaat %1 + + with Certificate %1 + met certificaat %1 - - + + OCC::SyncEngine - - %1 (skipped due to earlier error, trying again in %2) - %1 (overgeslagen wegens een eerdere fout, probeer opnieuw over %2) + + %1 (skipped due to earlier error, trying again in %2) + %1 (overgeslagen wegens een eerdere fout, probeer opnieuw over %2) - - Cannot open the sync journal - Kan het sync transactielog niet openen + + Cannot open the sync journal + Kan het sync transactielog niet openen - - Could not set file record to local DB: %1 - + + Could not set file record to local DB: %1 + - - Could not update file metadata: %1 - + + Could not update file metadata: %1 + - - Could not update file: %1 - Kon bestand niet bijwerken: %1 + + Could not update file: %1 + Kon bestand niet bijwerken: %1 - - Could not update virtual file metadata: %1 - Kon virtuele bestand metadata niet bijwerken: %1 + + Could not update virtual file metadata: %1 + Kon virtuele bestand metadata niet bijwerken: %1 - - Disk space is low: Downloads that would reduce free space below %1 were skipped. - Schijfruimte laag: Downloads die de vrije ruimte tot onder %1 zouden reduceren, zijn overgeslagen. + + Only %1 are available, need at least %2 to start + Placeholders are postfixed with file sizes using Utility::octetsToString() + Slechts %1 beschikbaar, maar heeft minimaal %2 nodig om te starten - - Only %1 are available, need at least %2 to start - Slechts %1 beschikbaar, maar heeft minimaal %2 nodig om te starten + + Disk space is low: Downloads that would reduce free space below %1 were skipped. + Schijfruimte laag: Downloads die de vrije ruimte tot onder %1 zouden reduceren, zijn overgeslagen. - - There is insufficient space available on the server for some uploads. - Onvoldoende schijfruimte op de server voor sommige uploads. + Only %1 are available, need at least %2 to start + Slechts %1 beschikbaar, maar heeft minimaal %2 nodig om te starten - - Unable to open or create the local sync database. Make sure you have write access in the sync folder. - Kon de lokale sync-database niet openen of aanmaken. Zorg ervoor dat je schrijf-toegang hebt in de sync-map + + There is insufficient space available on the server for some uploads. + Onvoldoende schijfruimte op de server voor sommige uploads. - - Unable to read from the sync journal. - Niet mogelijk om te lezen uit het synchronisatie verslag. + + Unable to open or create the local sync database. Make sure you have write access in the sync folder. + Kon de lokale sync-database niet openen of aanmaken. Zorg ervoor dat je schrijf-toegang hebt in de sync-map - - Unable to read the blacklist from the local database - Kan de blacklist niet lezen uit de lokale database + + Unable to read from the sync journal. + Niet mogelijk om te lezen uit het synchronisatie verslag. - - Unresolved conflict. - Bestandsconflict + + Unable to read the blacklist from the local database + Kan de blacklist niet lezen uit de lokale database - - Using virtual files with suffix, but suffix is not set - gebruik maken van virtuele bestanden met achtervoegsel, maar achtervoegsel niet ingesteld + + Unresolved conflict. + Bestandsconflict - - + + + Using virtual files with suffix, but suffix is not set + gebruik maken van virtuele bestanden met achtervoegsel, maar achtervoegsel niet ingesteld + + + OCC::SyncJournalDb - - Failed to connect database. - Kon niet verbinden met database. + + Failed to connect database. + Kon niet verbinden met database. - - + + OCC::SyncStatusSummary - - %1 of %2 - %1 van %2 + + %1 of %2 + %1 van %2 + + + + %1 of %2 · %3 left + %1 van %2 · %3 resterend + + + + + Offline + Offline - - %1 of %2 · %3 left - %1 van %2 · %3 resterend + + + + All synced! + Alles gesynchroniseerd! - - Offline - Offline + + Preparing sync + - - Preparing sync - + + See below for errors + Zie hieronder voor fouten - - See below for errors - Zie hieronder voor fouten + + See below for warnings + Zie hieronder voor waarschuwingen - - See below for warnings - Zie hieronder voor waarschuwingen + + Some files could not be synced! + Sommige bestanden konden niet gesynchroniseerd worden! - - Some files could not be synced! - Sommige bestanden konden niet gesynchroniseerd worden! + + Some files couldn't be synced! + Sommige bestanden konden niet gesynchroniseerd worden! - - Some files couldn't be synced! - Sommige bestanden konden niet gesynchroniseerd worden! + + + Syncing + Synchroniseren - - Syncing file %1 of %2 - Bestand %1 van %2 synchroniseren + + Sync paused + Synchroniseren gepauzeerd - - + + + Syncing file %1 of %2 + Bestand %1 van %2 synchroniseren + + + OCC::Systray - - %1: %2 - %1: %2 + + %1: %2 + %1: %2 + + + + Add account + Account toevoegen - - Add account - Account toevoegen + + Download + Download - - Download - Download + + + Pause sync + Synchronisatie pauzeren - - Exit %1 - Verlaat %1 + + + Resume sync + Synchronisatie hervatten - - Open main dialog - Open het hoofdvenster + + Settings + Instellingen - - Pause sync for all - Pauzeer sync voor iedereen + + Help + Help - - Resume sync for all - Vervolg sync voor iedereen + + Exit %1 + Verlaat %1 - - + + + Open main dialog + Open het hoofdvenster + + + + Pause sync for all + Pauzeer sync voor iedereen + + + + Resume sync for all + Vervolg sync voor iedereen + + + OCC::Theme - - <p>%1 desktop client %2</p> - + + <p>%1 desktop client %2</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + - <p>%1 Desktop Client</p> - <p>%1 Desktop Client</p> + <p>%1 Desktop Client</p> + <p>%1 Desktop Client</p> - - <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> - + + easy/0118 + Redirect URL Parameter + - - <p><small>Using virtual files plugin: %1</small></p> - <p><small>Gebruik makend van virtuele bestanden plugin: %1</small></p> + + <p>%1 Desktop Client</p><p>Version %1. For more information please click <a href='%2'>here</a>.</p> + Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) + - - <p>This release was supplied by %1.</p> - + + <p><small>Using virtual files plugin: %1</small></p> + <p><small>Gebruik makend van virtuele bestanden plugin: %1</small></p> - - <p>Version %1. For more information please click <a href='%2'>here</a>.</p> - <p>Versie %1. Voor meer informatie klik <a href='%2'>hier</a>.</p> + + <p>This release was supplied by %1.</p> + - - + + + <p>Version %1. For more information please click <a href='%2'>here</a>.</p> + <p>Versie %1. Voor meer informatie klik <a href='%2'>hier</a>.</p> + + + OCC::UnifiedSearchResultsListModel - - Failed to fetch providers. - Fout bij het laden van providers. + + Failed to fetch providers. + Fout bij het laden van providers. - - Failed to fetch search providers for '%1'. Error: %2 - Fout bij het zoeken van providers voor '%1'. Error: %2 + + Failed to fetch search providers for '%1'. Error: %2 + Fout bij het zoeken van providers voor '%1'. Error: %2 - - Search has failed for '%1'. Error: %2 - Fout bij het zoeken naar '%1'. Error: %2 + + Search has failed for '%1'. Error: %2 + Fout bij het zoeken naar '%1'. Error: %2 - - Search has failed for '%2'. - Fout bij het zoeken naar '%2'. + + Search has failed for '%2'. + Fout bij het zoeken naar '%2'. - - + + OCC::UpdateE2eeFolderMetadataJob - - Failed to finalize item. - + + Failed to unlock encrypted folder. + Kon versleutelde map niet ontgrendelen. - - Failed to update folder metadata. - + + Failed to finalize item. + - - - OCC::UpdateE2eeFolderUsersMetadataJob - Could not add or remove a folder user %1, for folder %2 - + + Failed to update folder metadata. + + + + OCC::UpdateE2eeFolderUsersMetadataJob - - Could not add or remove user %1 to access folder %2 - Kan gebruiker %1 niet toevoegen of verwijderen voor toegang tot map %2 + + Could not add or remove user %1 to access folder %2 + Kan gebruiker %1 niet toevoegen of verwijderen voor toegang tot map %2 - - Could not fetch public key for user %1 - + + Could not fetch public key for user %1 + - - Could not find root encrypted folder for folder %1 - + + Could not find root encrypted folder for folder %1 + - - Error updating metadata for a folder %1 - + + + + + + + + + + Error updating metadata for a folder %1 + - - Failed to unlock a folder. - + + Failed to unlock a folder. + - - + + OCC::User - - %1 notifications - %1 kennisgevingen + + %1 notifications + %1 kennisgevingen - - Resolve conflict - + + + Resolve conflict + - - Retry all uploads - Probeer alle uploads opnieuw + + Retry all uploads + Probeer alle uploads opnieuw - - + + OCC::UserModel - - <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> - <p>Wilt je echt de verbinding met het account <i>%1</i> verbreken?</p><p><b>Let op:</b> Hierdoor verwijder je <b>geen</b> bestanden.</p> + + <p>Do you really want to remove the connection to the account <i>%1</i>?</p><p><b>Note:</b> This will <b>not</b> delete any files.</p> + <p>Wilt je echt de verbinding met het account <i>%1</i> verbreken?</p><p><b>Let op:</b> Hierdoor verwijder je <b>geen</b> bestanden.</p> + + + + Confirm Account Removal + Bevestig verwijderen account - - Confirm Account Removal - Bevestig verwijderen account + + Cancel + Annuleren - - Remove connection - Verwijderen verbinding + + Remove connection + Verwijderen verbinding - - + + OCC::UserStatusSelectorModel - - %1 days - %1 dagen + + %1 days + %1 dagen - - %1 hours - %1 uren + + %1 hours + %1 uren - - %1 minutes - %1 minuten + + %1 minutes + %1 minuten - - 1 day - 1 dag + + 1 day + 1 dag - - 1 hour - 1 uur + + + 1 hour + 1 uur - - 1 minute - 1 minuut + + 1 minute + 1 minuut - - 30 minutes - 30 minuten + + 30 minutes + 30 minuten - - 4 hours - 4 uren + + 4 hours + 4 uren - - Could not clear status message. Make sure you are connected to the server. - + + Could not clear status message. Make sure you are connected to the server. + - - Could not fetch predefined statuses. Make sure you are connected to the server. - Kan vooraf gedefinieerde statussen niet ophalen. Zorg ervoor dat je verbonden bent met de server. + + Could not fetch predefined statuses. Make sure you are connected to the server. + Kan vooraf gedefinieerde statussen niet ophalen. Zorg ervoor dat je verbonden bent met de server. - - Could not fetch status. Make sure you are connected to the server. - + + Could not fetch status. Make sure you are connected to the server. + - - Could not set status. Make sure you are connected to the server. - + + Could not set status. Make sure you are connected to the server. + - - Don't clear - Niet wissen + + + Don't clear + Niet wissen - - Emojis are not supported. Some status functionality may not work. - + + Emojis are not supported. Some status functionality may not work. + - - Less than a minute - Minder dan een minuut + + Less than a minute + Minder dan een minuut - - Status feature is not supported. You will not be able to set your status. - + + Status feature is not supported. You will not be able to set your status. + - - This week - Deze week + + + This week + Deze week - - Today - Vandaag + + + Today + Vandaag - - + + OCC::ValidateChecksumHeader - - The checksum header contained an unknown checksum type "%1" - Het header controlegetal bevat een onbekend controlegetal type "%1" + + The checksum header contained an unknown checksum type "%1" + Het header controlegetal bevat een onbekend controlegetal type "%1" - - The checksum header is malformed. - De header van het controlegetal is misvormd. + + The checksum header is malformed. + De header van het controlegetal is misvormd. - - The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" - Het gedownloade bestand komt niet overeen met het controlegetal. Het wordt opnieuw verwerkt. "%1" != "%2" + + The downloaded file does not match the checksum, it will be resumed. "%1" != "%2" + Het gedownloade bestand komt niet overeen met het controlegetal. Het wordt opnieuw verwerkt. "%1" != "%2" - - + + OCC::Vfs - - The Virtual filesystem feature requires a NTFS file system, %1 is using %2 - De Virtuele bestandssysteemfunctie vereist een NTFS bestandssysteem, %1 gebruikt %2 + + The Virtual filesystem feature requires a NTFS file system, %1 is using %2 + De Virtuele bestandssysteemfunctie vereist een NTFS bestandssysteem, %1 gebruikt %2 - - + + OCC::VfsDownloadErrorDialog - - %1 could not be downloaded. - + + %1 could not be downloaded. + - - > More details - + + > More details + - - could not be downloaded - + + could not be downloaded + - - Download error - + + Download error + - - Error downloading - + + Error downloading + - - Error downloading %1 - + + Error downloading %1 + - - More details - + + More details + - - - OCC::WebEnginePage + + + OCC::VfsSuffix - - Invalid certificate detected - Ongeldig certificaat gedetecteerd + + + Error updating metadata due to invalid modification time + Fout bij bijwerken metadata door ongeldige laatste wijziging datum + + + OCC::VfsXAttr - - The host "%1" provided an invalid certificate. Continue? - De server "%1" heeft een ongeldig certificaat . Wilt u doorgaan? + + + Error updating metadata due to invalid modification time + Fout bij bijwerken metadata door ongeldige laatste wijziging datum - - - OCC::WebFlowCredentials + + + OCC::WebEnginePage - - <b>You have been logged out of your account %1 at %2. Please login again.</b> - <b>U bent afgemeld bij uw account %1 op %2. Log opnieuw in.</b> + + Invalid certificate detected + Ongeldig certificaat gedetecteerd - Please login with the account: %1 - + + The host "%1" provided an invalid certificate. Continue? + De server "%1" heeft een ongeldig certificaat . Wilt u doorgaan? + + + OCC::WebFlowCredentials - You have been logged out of your account %1 at %2. Please login again. - + + <b>You have been logged out of your account %1 at %2. Please login again.</b> + <b>U bent afgemeld bij uw account %1 op %2. Log opnieuw in.</b> - - + + OCC::WelcomePage - Easy-to-use web mail, calendaring & contacts - Eenvoudig te gebruiken webmail, agenda & contacten + Easy-to-use web mail, calendaring & contacts + Eenvoudig te gebruiken webmail, agenda & contacten - - Form - Formulier + + Form + Formulier - - Host your own server - Host je eigen server + + Host your own server + Host je eigen server - - Keep your data secure and under your control - Hou je gegevens veilig en in eigen beheer + + Keep your data secure and under your control + Hou je gegevens veilig en in eigen beheer - - Log in - Meld u aan + + Log in + Meld u aan - Screensharing, online meetings & web conferences - Schermdelen, online afspraken & web conferenties + Screensharing, online meetings & web conferences + Schermdelen, online afspraken & web conferenties - Secure collaboration & file exchange - Veilige samenwerking & bestandsuitwisseling + Secure collaboration & file exchange + Veilige samenwerking & bestandsuitwisseling - - Sign up with provider - + + Sign up with provider + - - + + OCC::ownCloudGui - - Account %1: %2 - Account %1: %2 + + Account %1: %2 + Account %1: %2 + + + + Account synchronization is disabled + Account synchronisatie is uitgeschakeld + + + + Disconnected from %1 + Losgekoppeld van %1 + + + + Disconnected from accounts: + Losgekoppeld van account: - - Account synchronization is disabled - Account synchronisatie is uitgeschakeld + + Disconnected from some accounts + Niet verbonden met sommige accounts - - Disconnected from %1 - Losgekoppeld van %1 + + Error during synchronization + Fout bij synchronisatie - - Disconnected from accounts: - Losgekoppeld van account: + + Folder %1: %2 + Map %1: %2 - - Disconnected from some accounts - Niet verbonden met sommige accounts + + No sync folders configured + Geen syncmappen geconfigureerd - - Error during synchronization - Fout bij synchronisatie + + Please sign in + Log alstublieft in - - Folder %1: %2 - Map %1: %2 + + Disconnected + Niet verbonden - - No sync folders configured - Geen syncmappen geconfigureerd + + Signed out + Afgemeld - - Please sign in - Log alstublieft in + + + Synchronization is paused + Synchronisatie is gepauzeerd - - Synchronization is paused - Synchronisatie is gepauzeerd + + Checking for changes in remote "%1" + Controleren op wijzigingen in externe "%1" - - Syncing %1 of %2 (%3 left) - Sync %1 van %2 (%3 over) + + Checking for changes in local "%1" + Controleren op wijzigingen in lokale "%1" - - The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. - De server van account %1 gebruikt een niet ondersteunde versie %2. Het gebruik van deze clientsoftware met niet-ondersteunde server versies is niet getest en mogelijk gevaarlijk. Verdergaan is op eigen risico. + + Syncing %1 of %2 (%3 left) + Sync %1 van %2 (%3 over) - - There are no sync folders configured. - Er zijn geen synchronisatie-mappen geconfigureerd. + + Syncing %1 of %2 + Synchroniseren %1 van %2 - - Unresolved conflicts - Niet opgeloste conflicten + + Syncing %1 (%2 left) + Synchroniseren %1 (%2 over) - - Unsupported Server Version - Niet-ondersteunde server versie + + Syncing %1 + Synchroniseren %1 - - Up to date - Bijgewerkt + + %1 (%2, %3) + %1 (%2, %3) - - + + + The server on account %1 runs an unsupported version %2. Using this client with unsupported server versions is untested and potentially dangerous. Proceed at your own risk. + De server van account %1 gebruikt een niet ondersteunde versie %2. Het gebruik van deze clientsoftware met niet-ondersteunde server versies is niet getest en mogelijk gevaarlijk. Verdergaan is op eigen risico. + + + + There are no sync folders configured. + Er zijn geen synchronisatie-mappen geconfigureerd. + + + + Unresolved conflicts + Niet opgeloste conflicten + + + + Unsupported Server Version + Niet-ondersteunde server versie + + + + Up to date + Bijgewerkt + + + OCC::sesSnackBar - - Success - Succes + + Error + Fout + + + + Warning + Waarschuwing + + + + Success + Succes - - + + OwncloudAdvancedSetupPage - - &Local Folder - &Lokale map + + &Local Folder + &Lokale map - - <html><head/><body><p>If this box is checked, + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Als dit selectievakje is ingeschakeld, + <html><head/><body><p>Als dit selectievakje is ingeschakeld, wordt de bestaande inhoud in de lokale map gewist om een schone synchronisatie vanaf de server te starten. vanaf de server.</p><p>Vink dit vakje niet aan als de lokale inhoud moet worden geüpload naar de servermap.</p></body></html> - <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> - <html><head/><body><p>Als deze checkbox is aangevinkt zullen bestaande bestanden in de lokale map worden gewist om een schone sync vanaf de server te starten.</p><p>Vink dit niet aan als de lokale bestanden naar de map op de server zouden moeten worden geüploadet.</p></body></html> + <html><head/><body><p>If this box is checked, existing content in the local folder will be erased to start a clean sync from the server.</p><p>Do not check this if the local content should be uploaded to the servers folder.</p></body></html> + <html><head/><body><p>Als deze checkbox is aangevinkt zullen bestaande bestanden in de lokale map worden gewist om een schone sync vanaf de server te starten.</p><p>Vink dit niet aan als de lokale bestanden naar de map op de server zouden moeten worden geüploadet.</p></body></html> - - Ask before syncing external storages - Vraag bevestiging voor synchronisatie externe opslag + + Ask before syncing external storages + Vraag bevestiging voor synchronisatie externe opslag - - Ask before syncing folders larger than - Vraag bevestiging voor synchronisatie van mappen groter dan + + Ask before syncing folders larger than + Vraag bevestiging voor synchronisatie van mappen groter dan - - Choose different folder - + + Choose different folder + - - Erase local folder and start a clean sync - Wis de map op je computer en start een schone sync + + + MB + + Trailing part of "Ask confirmation before syncing folder larger than" + - - Keep local data - Bewaar de lokale gegevens + + Choose what to sync + Kies wat je wilt synchroniseren - - Local Folder - Lokale map + + <html><head/><body><p>If this box is checked, + existing content in the local folder will be erased to start a clean sync + from the server.</p><p>Do not check this if the local content + should be uploaded to the servers folder.</p></body></html> + + + + + + Erase local folder and start a clean sync + Wis de map op je computer en start een schone sync - - Server address - Serveradres + + Keep local data + Bewaar de lokale gegevens - - Sync Logo - Sync Logo + + Local Folder + Lokale map - - Synchronize everything from server - Synchroniseer alles vanaf de server + + Server address + Serveradres - Username - Gebruikersnaam + + Sync Logo + Sync Logo - - + + + Synchronize everything from server + Synchroniseer alles vanaf de server + + + + Username + Gebruikersnaam + + + OwncloudHttpCredsPage - - &Password - &Wachtwoord + + &Password + &Wachtwoord - - &Username - &Gebruikersnaam + + &Username + &Gebruikersnaam - - + + OwncloudOAuthCredsPage - Please switch to your browser to proceed. - Schakel om naar je browser om door te gaan. + Please switch to your browser to proceed. + Schakel om naar je browser om door te gaan. - Re-open Browser - Heropen browser + Re-open Browser + Heropen browser - - + + OwncloudSetupPage - - TextLabel - TextLabel + + + TextLabel + TextLabel + + + + Server address + Serveradres - - This is the link to your %1 web interface when you open it in the browser. - De link naar je %1 web interface wanneer je die opent in de browser. + + This is the link to your %1 web interface when you open it in the browser. + De link naar je %1 web interface wanneer je die opent in de browser. - - + + QObject - - - %nd - - - - %nd - + + + Could not create debug archive in selected location! + Kon geen debug-archief aanmaken op geselecteerde locatie! - - - %nh - - - - %nh - + + + Failed to create debug archive + Debug-archief is niet aangemaakt - - %nm - - - - %nm - + + %nd + delay in days after an activity + + + + - - 1m - + + in the future + in de toekomst + + + + %nh + delay in hours after an activity + + + + - - Could not create debug archive in selected location! - Kon geen debug-archief aanmaken op geselecteerde locatie! + + 1m + one minute after activity date and time + + + + + %nm + delay in minutes after an activity + + + + - - Failed to create debug archive - Debug-archief is niet aangemaakt + + New folder + Nieuwe map - - in the future - in de toekomst + + now + nu - - New folder - Nieuwe map + + Paths beginning with '#' character are not supported in VFS mode. + - - now - nu + + Some time ago + Even geleden - - Paths beginning with '#' character are not supported in VFS mode. - + + Synced %1 + Gesynchroniseerd %1 - - Some time ago - Even geleden + + The directory %1 cannot be part of your sync directory. Please choose another folder. + De map %1 kan geen deel uitmaken van je synchronisatiemap. Kies een andere map. - - Synced %1 - Gesynchroniseerd %1 + + You changed %1 + Je wijzigde %1 - - The directory %1 cannot be part of your sync directory. Please choose another folder. - De map %1 kan geen deel uitmaken van je synchronisatiemap. Kies een andere map. + + You created %1 + Je creëerde %1 - - You changed %1 - Je wijzigde %1 + + You deleted %1 + Je verwijderde %1 - - You created %1 - Je creëerde %1 + + You renamed %1 + Je hernoemde %1 - - You deleted %1 - Je verwijderde %1 + + %1: %2 + this displays an error string (%2) for a file %1 + %1: %2 - - You renamed %1 - Je hernoemde %1 + + Reply + Antwoord - - + + ResolveConflictsDialog - - %1 files in conflict - - %1 bestand in conflict - %1 bestanden in conflict - %1 bestanden in conflict - + %1 files in conflict + + %1 bestand in conflict + %1 bestanden in conflict + - - All local versions - + + All local versions + - - All server versions - + + All server versions + - - Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. - + + Choose if you want to keep the local version, server version, or both. If you choose both, the local file will have a number added to its name. + + + + + %1 files in conflict + indicate the number of conflicts to resolve + + %1 bestand in conflict + %1 bestanden in conflict + - - Resolve conflicts - + + Resolve conflicts + - - Solve sync conflicts - + + Cancel + Annuleren - - + + + Solve sync conflicts + + + + + SesErrorBox + + + Error + Fout + + + SesTrayHeader - - Open local or group folders - + + Open local or group folders + - - Open Nextcloud in browser - HiDrive Next in browser openen + + Open Nextcloud in browser + HiDrive Next in browser openen - - Website - Website + + Website + Website - - + + ShareDelegate - - Copied! - + + Copied! + - - Copy share link location - + + Copy share link location + - - Create a new share link - + + Create a new share link + - - - ShareDetailsPage - - Add another link - + + Share options + Deelopties + + + ShareDetailsPage - - Allow resharing - + + Add another link + - - Allow upload and editing - + + Allow resharing + - - An error occurred setting the share password. - + + + Allow upload and editing + - - Copy share link - + + An error occurred setting the share password. + - - Custom Permissions - Aangepaste machtigingen + + Copy share link + - Edit share - + + Custom Permissions + Aangepaste machtigingen - - Enter the note to recipient - Voer de notitie aan de ontvanger in + + Enter the note to recipient + Voer de notitie aan de ontvanger in - - File drop (upload only) - + + File drop (upload only) + - - Hide download - + + Hide download + - - Note to recipient - + + Note to recipient + - - Password protect - Beveiligen met wachtwoord + + Dismiss + Negeren - - Set expiration date - + + Password protect + Beveiligen met wachtwoord - Share label - + + Set expiration date + - - Share link copied! - + + Share link copied! + - - Unshare - + + Unshare + - - View only - + + View only + - - + + ShareView - - Password required for new share - + + Password required for new share + - - Share password - + + Share password + - - Sharing is disabled - + + Sharing is disabled + - - Sharing is disabled. - + + Sharing is disabled. + - - This item cannot be shared. - + + This item cannot be shared. + - - + + ShareeSearchField - - Search for users or groups… - + + Search for users or groups… + - - Sharing is not available for this folder - + + Sharing is not available for this folder + - - + + SyncStatus - - Sync now - + + Sync now + - - + + + Resolve conflicts + + + + TalkReplyTextField - - Reply to … - Antwoord aan ... + + Reply to … + Antwoord aan ... - - Send reply to chat message - + + Send reply to chat message + - - + + TestSetUserStatusDialog - - 7 days - 7 dagen + + + 1 day + 1 dag + + + + + + + + Don't clear + Niet wissen + + + + + + + + 1 hour + 1 uur + + + + + + + 30 minutes + 30 minuten + + + + + + 4 hours + 4 uren + + + + + + Today + Vandaag + + + + + + This week + Deze week + + + + Less than a minute + Minder dan een minuut + + + + 1 minute + 1 minuut + + + + 7 days + 7 dagen - - + + + Could not fetch predefined statuses. Make sure you are connected to the server. + Kan vooraf gedefinieerde statussen niet ophalen. Zorg ervoor dat je verbonden bent met de server. + + + + Could not fetch status. Make sure you are connected to the server. + + + + + Status feature is not supported. You will not be able to set your status. + + + + + Could not set status. Make sure you are connected to the server. + + + + + Emojis are not supported. Some status functionality may not work. + + + + + Could not clear status message. Make sure you are connected to the server. + + + + TrayFoldersMenuButton - - Files - Bestanden + + Files + Bestanden + + + + Open %1 in file explorer + - Group folder button - + + Open group folder "%1" + - - Open %1 in file explorer - + + Open local folder + - - Open group folder "%1" - + + Open local or group folders + - - Open local folder - + + Connected + Verbonden - - Open local folder "%1" - + + Disconnected + Niet verbonden - - User group and local folders menu - + + Open local folder "%1" + - - + + + User group and local folders menu + + + + TrayWindowAccountMenu - - Account switcher and settings menu - Accountswitcher en instellingenmenu + + Account switcher and settings menu + Accountswitcher en instellingenmenu + + + + Current account + Huidige account + + + + Resume sync for all + Vervolg sync voor iedereen - - Current account - Huidige account + + Pause sync for all + Pauzeer sync voor iedereen - - Current account avatar - + + Add account + Account toevoegen - - Current account status is do not disturb - + + Settings + Instellingen - - Current account status is online - + + Current account avatar + - - Exit - Afsluiten + + Current account status is do not disturb + - - + + + Current account status is online + + + + + Exit + Afsluiten + + + TrayWindowHeaderBar - - More apps - Meer apps + + Website + Website - - Open %1 in browser - Open %1 in browser + + Open Nextcloud in browser + HiDrive Next in browser openen - - Open Nextcloud Talk in browser - Open Nextcloud Talk in browser + + Open local or group folders + - - + + + More apps + Meer apps + + + + Open %1 in browser + Open %1 in browser + + + + Open Nextcloud Talk in browser + Open Nextcloud Talk in browser + + + UnifiedSearchInputContainer - - Search files, messages, events … - Zoek in bestanden, berichten, afspraak ... + + Search files, messages, events … + Zoek in bestanden, berichten, afspraak ... - - + + UnifiedSearchResultFetchMoreTrigger - - Load more results - Laad meer resultaten + + Load more results + Laad meer resultaten - - + + UnifiedSearchResultItemSkeleton - - Search result skeleton. - Zoekresultaat skelet. + + Search result skeleton. + Zoekresultaat skelet. - - + + + UnifiedSearchResultListItem + + + Load more results + Laad meer resultaten + + + UnifiedSearchResultNothingFound - - No results for - + + No results for + - - + + UnifiedSearchResultSectionItem - - Search results section %1 - + + Search results section %1 + - - + + UserLine - - Account actions - Accountacties + + Account actions + Accountacties + + + + + Log out + Uitloggen + + + + + Log in + Meld u aan - - Remove account - Verwijder account + + Remove account + Verwijder account - - Set status - Status instellen + + Set status + Status instellen - - Switch to account - Omschakelen naar account + + Switch to account + Omschakelen naar account - - + + UserStatusSelector - - Appear offline - + + Appear offline + - - Away - Afwezig + + Away + Afwezig - - Clear status message - Statusbericht wissen + + Cancel + Annuleren - - Clear status message after - Statusbericht wissen na + + Clear status message + Statusbericht wissen - - Do not disturb - Niet storen + + Clear status message after + Statusbericht wissen na - - Invisible - Onzichtbaar + + Do not disturb + Niet storen - - Mute all notifications - + + Invisible + Onzichtbaar - - Online - Online + + Mute all notifications + - - Online status - Online status + + Online + Online - - Set status message - Statusbericht instellen + + Online status + Online status - - Status message - Statusbericht + + Set status message + Statusbericht instellen - - What is your status? - Wat is je status? + + Status message + Statusbericht - - + + + What is your status? + Wat is je status? + + + Utility - - %L1 B - %L1 B + + %L1 B + %L1 B - - %L1 GB - %L1 GB + + %L1 GB + %L1 GB - - %L1 KB - %L1 KB + + %L1 KB + %L1 KB - - %L1 MB - %L1 MB + + %L1 MB + %L1 MB - - %L1 TB - + + %L1 TB + - - %n day(s) - - - - - + + %n day(s) + + + + - - %n hour(s) - - - - - + + %n hour(s) + + + + - - %n minute(s) - - - - - + + %n minute(s) + + + + + + + + %1 %2 + %1 %2 - - %n month(s) - - - - - + + %n month(s) + + + + - - %n second(s) - - - - - + + %n second(s) + + + + - - %n year(s) - - - - - - - - + + %n year(s) + + + + + + + Window - Add new account - Nieuw account toevoegen + Add new account + Nieuw account toevoegen - - New activities - + + New activities + - - Nextcloud desktop main dialog - Nextcloud desktop hoofddialoog + + Nextcloud desktop main dialog + Nextcloud desktop hoofddialoog - - Unified search results list - Samengevoegde zoekresultaten lijst + + Unified search results list + Samengevoegde zoekresultaten lijst - - + + main.cpp - - %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. - %1 heeft een werkend systeemvak nodig. Als je XFCE draait volg je <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">deze instructies</a>. Installeer anders een systeemvak applicatie zoals "trayer" en probeer het opnieuw. + + %1 requires on a working system tray. If you are running XFCE, please follow <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">these instructions</a>. Otherwise, please install a system tray application such as "trayer" and try again. + %1 heeft een werkend systeemvak nodig. Als je XFCE draait volg je <a href="http://docs.xfce.org/xfce/xfce4-panel/systray">deze instructies</a>. Installeer anders een systeemvak applicatie zoals "trayer" en probeer het opnieuw. - - System Tray not available - Systeemvak niet beschikbaar + + System Tray not available + Systeemvak niet beschikbaar - - + + nextcloudTheme::aboutInfo() - <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> - <p><small>Gebouwd vanaf Git revisie <a href="%1">%2</a> op %3, %4 gebruik makend van Qt %5, %6</small></p> + + <p><small>Built from Git revision <a href="%1">%2</a> on %3, %4 using Qt %5, %6</small></p> + <p><small>Gebouwd vanaf Git revisie <a href="%1">%2</a> op %3, %4 gebruik makend van Qt %5, %6</small></p> - - + + progress - - Deleted - Verwijderd + + Deleted + Verwijderd + + + + Downloaded + Gedownload + + + + downloading + downloaden + + + + error + fout - - Downloaded - Gedownload + + Filesystem access error + Toegangsfout van het bestandssysteem - - downloading - downloaden + + Ignored + Genegeerd - - error - fout + + Moved to %1 + Verplaatst naar %1 - - Filesystem access error - Toegangsfout van het bestandssysteem + + moving + verplaatsen - - Ignored - Genegeerd + + Replaced by virtual file + Vervangen door virtueel bestand - - Moved to %1 - Verplaatst naar %1 + + Server version downloaded, copied changed local file into case conflict conflict file + - - moving - verplaatsen + + Server version downloaded, copied changed local file into conflict file + Serverversie gedownload, gewijzigde lokale bestand gekopieerd in conflictbestand - - Replaced by virtual file - Vervangen door virtueel bestand + + + Unknown + Onbekend - - Server version downloaded, copied changed local file into case conflict conflict file - + + Updated local metadata + Lokale metadata geüploaded - - Server version downloaded, copied changed local file into conflict file - Serverversie gedownload, gewijzigde lokale bestand gekopieerd in conflictbestand + + Error + Fout - - Unknown - Onbekend + + Updated local virtual files metadata + Metagegevens van lokale virtuele bestanden bijgewerkt - - Updated local metadata - Lokale metadata geüploaded + + deleting + verwijderen - - Updated local virtual files metadata - Metagegevens van lokale virtuele bestanden bijgewerkt + + ignoring + negerend - - updating local metadata - Bijwerken lokale metadata + + updating local metadata + Bijwerken lokale metadata - - updating local virtual files metadata - Metagegevens van lokale virtuele bestanden bijwerken + + updating local virtual files metadata + Metagegevens van lokale virtuele bestanden bijwerken - - Uploaded - Geüpload + + Uploaded + Geüpload - - uploading - uploaden + + uploading + uploaden - - Virtual file created - Virtueel bestand gecreëerd + + Virtual file created + Virtueel bestand gecreëerd - - + + theme - - Aborting … - Afbreken … + + Aborting … + Afbreken … - - Preparing to sync - Voorbereiden synchronisatie + + Preparing to sync + Voorbereiden synchronisatie - - Setup Error - Installatiefout + + Setup Error + Installatiefout - - Status undefined - Ongedefinieerde status + + Status undefined + Ongedefinieerde status - - Sync Error - Synchronisatiefout + + Sync Error + Synchronisatiefout - - Sync is paused - Synchronisatie is gepauzeerd + + Sync is paused + Synchronisatie is gepauzeerd - - Sync is running - Bezig met synchroniseren + + Sync is running + Bezig met synchroniseren - - Sync Success - Synchronisatie geslaagd + + Sync Success + Synchronisatie geslaagd - - Sync Success, some files were ignored. - Synchronisatie geslaagd, sommige bestanden werden genegeerd. + + Sync Success, some files were ignored. + Synchronisatie geslaagd, sommige bestanden werden genegeerd. - - Waiting to start sync - In afwachting van synchronisatie + + Waiting to start sync + In afwachting van synchronisatie - - + + utility - - Always available locally - Altijd lokaal beschikbaar + + Always available locally + Altijd lokaal beschikbaar - - Available online only - Alleen online beschikbaar + + Available online only + Alleen online beschikbaar - - Could not open browser - Kon browser niet openen + + Could not open browser + Kon browser niet openen - - Could not open email client - Kon e-mailclient niet openen + + Could not open email client + Kon e-mailclient niet openen - - Currently available locally - Momenteel lokaal beschikbaar + + Currently available locally + Momenteel lokaal beschikbaar - - Free up local space - Lokale ruimte vrijmaken + + Free up local space + Lokale ruimte vrijmaken - - Make always available locally - Maak altijd lokaal beschikbaar + + Make always available locally + Maak altijd lokaal beschikbaar - - Some available online only - Sommige alleen online beschikbaar + + Some available online only + Sommige alleen online beschikbaar - - There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? - Er trad een fout op bij het starten van de browser om naar URL %1 te gaan. Misschien is er geen standaardbrowser geconfigureerd? + + There was an error when launching the browser to go to URL %1. Maybe no default browser is configured? + Er trad een fout op bij het starten van de browser om naar URL %1 te gaan. Misschien is er geen standaardbrowser geconfigureerd? - - There was an error when launching the email client to create a new message. Maybe no default email client is configured? - Er trad een fout op bij het starten van de e-mailclient om een nieuw bericht te maken. Misschien is er geen e-mailclient gedefinieerd? + + There was an error when launching the email client to create a new message. Maybe no default email client is configured? + Er trad een fout op bij het starten van de e-mailclient om een nieuw bericht te maken. Misschien is er geen e-mailclient gedefinieerd? - + From fb89f8f53fc3932e50e8b156fa38912b6a7a850e Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Thu, 19 Dec 2024 10:46:02 +0100 Subject: [PATCH 050/104] SES-211 fix not translated key --- src/gui/generalsettings.ui | 2 +- translations/client_de.ts | 8 ++------ translations/client_en.ts | 8 ++------ translations/client_es.ts | 8 ++------ translations/client_fr.ts | 8 ++------ translations/client_nl.ts | 8 ++------ 6 files changed, 11 insertions(+), 31 deletions(-) diff --git a/src/gui/generalsettings.ui b/src/gui/generalsettings.ui index 59f3cbb8f3079..2816d9bb004fc 100644 --- a/src/gui/generalsettings.ui +++ b/src/gui/generalsettings.ui @@ -362,7 +362,7 @@ - &Analysis data collection for needs-based design + &Analysis data collection for needs-based design diff --git a/translations/client_de.ts b/translations/client_de.ts index 0e164c5769d06..9acad49c125f0 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -3097,8 +3097,9 @@ Dies bedeutet, dass der Synchronisierungs-Client lokale Änderungen möglicherwe OCC::GeneralSettings + &Analysis data collection for needs-based design - &Analyse der Datenerhebung für bedarfsgerechte Gestaltung + &Analyse der Datenerhebung für bedarfsgerechte Gestaltung @@ -3130,11 +3131,6 @@ Dies bedeutet, dass der Synchronisierungs-Client lokale Änderungen möglicherwe Trailing part of "Ask confirmation before syncing folder larger than" - - - &Analysis data collection for needs-based design - - &Restart && Update diff --git a/translations/client_en.ts b/translations/client_en.ts index 8a6cca5ae0f79..539ca1f4a52dd 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -2996,8 +2996,9 @@ This means that the synchronization client might not upload local changes immedi OCC::GeneralSettings + &Analysis data collection for needs-based design - &Analysis data collection for needs-based design + &Analysis data collection for needs-based design @@ -3029,11 +3030,6 @@ This means that the synchronization client might not upload local changes immedi Trailing part of "Ask confirmation before syncing folder larger than" - - - &Analysis data collection for needs-based design - - &Restart && Update diff --git a/translations/client_es.ts b/translations/client_es.ts index 042316c582923..42bef74acf9b9 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -3086,8 +3086,9 @@ Esto significa que el cliente de sincronización podría no subir inmediatamente OCC::GeneralSettings + &Analysis data collection for needs-based design - &Recogida de datos de análisis para un diseño basado en las necesidades + &Recogida de datos de análisis para un diseño basado en las necesidades @@ -3119,11 +3120,6 @@ Esto significa que el cliente de sincronización podría no subir inmediatamente Trailing part of "Ask confirmation before syncing folder larger than" - - - &Analysis data collection for needs-based design - - &Restart && Update diff --git a/translations/client_fr.ts b/translations/client_fr.ts index e03723a2cd555..ed45d68b55279 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -3096,8 +3096,9 @@ Cela signifie que le client de synchronisation ne va pas téléverser immédiate OCC::GeneralSettings + &Analysis data collection for needs-based design - &Collecte des données d’analyse pour une conception basée sur les besoins + &Collecte des données d’analyse pour une conception basée sur les besoins @@ -3129,11 +3130,6 @@ Cela signifie que le client de synchronisation ne va pas téléverser immédiate Trailing part of "Ask confirmation before syncing folder larger than" - - - &Analysis data collection for needs-based design - - &Restart && Update diff --git a/translations/client_nl.ts b/translations/client_nl.ts index f3b15071f5f69..02129f6f009b8 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -3062,8 +3062,9 @@ Dit betekent dat de synchronisatieclient misschien niet meteen lokale wijziginge OCC::GeneralSettings + &Analysis data collection for needs-based design - &Analyse van gegevensverzameling voor een op behoeften gebaseerd ontwerp + &Analyse van gegevensverzameling voor een op behoeften gebaseerd ontwerp @@ -3095,11 +3096,6 @@ Dit betekent dat de synchronisatieclient misschien niet meteen lokale wijziginge Trailing part of "Ask confirmation before syncing folder larger than" - - - &Analysis data collection for needs-based design - - &Restart && Update From 975695a28430d72a63215945e08d08e5e7c5afe4 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Thu, 19 Dec 2024 13:38:38 +0100 Subject: [PATCH 051/104] SES-211 remove "desktop client" from version info in general settings this was a request from a sprint review and was only done for french before --- src/libsync/theme.cpp | 2 +- translations/client_de.ts | 4 ++-- translations/client_en.ts | 2 +- translations/client_es.ts | 4 ++-- translations/client_fr.ts | 2 +- translations/client_nl.ts | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 2e416c2e81d92..c76e643d0b1a3 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -593,7 +593,7 @@ QString Theme::about() const QString osName = osStringList.at(0); //: Example text: "

      Nextcloud Desktop Client

      " (%1 is the application name) - const auto devString = tr("

      %1 desktop client %2

      ").arg(APPLICATION_NAME, QString::fromLatin1(MIRALL_STRINGIFY(MIRALL_VERSION))); + const auto devString = tr("

      %1 %2

      ").arg(APPLICATION_NAME, QString::fromLatin1(MIRALL_STRINGIFY(MIRALL_VERSION))); return devString; } diff --git a/translations/client_de.ts b/translations/client_de.ts index 9acad49c125f0..b56c3e5af3fc3 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -5715,9 +5715,9 @@ Server antwortete mit Fehler: %2 OCC::Theme - <p>%1 desktop client %2</p> + <p>%1 %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 Desktop-Client %2</p> + <p>%1 %2</p> <p>%1 Desktop Client</p> diff --git a/translations/client_en.ts b/translations/client_en.ts index 539ca1f4a52dd..601226a04edb4 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -5551,7 +5551,7 @@ Server replied with error: %2 OCC::Theme - <p>%1 desktop client %2</p> + <p>%1 %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) diff --git a/translations/client_es.ts b/translations/client_es.ts index 42bef74acf9b9..79d5a6b922020 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -5676,9 +5676,9 @@ El servidor respondió con el error: %2 OCC::Theme - <p>%1 desktop client %2</p> + <p>%1 %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) - <p>%1 cliente de escritorio %2</p> + <p>%1 %2</p> <p>%1 Desktop Client</p> diff --git a/translations/client_fr.ts b/translations/client_fr.ts index ed45d68b55279..dc7ae4c3c6e18 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -5713,7 +5713,7 @@ Le serveur a répondu avec l'erreur : %2 OCC::Theme - <p>%1 desktop client %2</p> + <p>%1 %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) <p>%1 %2</p> diff --git a/translations/client_nl.ts b/translations/client_nl.ts index 02129f6f009b8..015f55fce127b 100644 --- a/translations/client_nl.ts +++ b/translations/client_nl.ts @@ -5650,7 +5650,7 @@ Server replied with error: %2 OCC::Theme - <p>%1 desktop client %2</p> + <p>%1 %2</p> Example text: "<p>Nextcloud Desktop Client</p>" (%1 is the application name) From b13b2164886d28f0de3d7942b6ed4e7e258bbb6e Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Fri, 20 Dec 2024 11:16:07 +0100 Subject: [PATCH 052/104] SES-215 replace installer background for mac with empty image --- admin/osx/installer-background.png | Bin 4028 -> 794 bytes admin/osx/installer-background.svg | 35 +++++++++++++++++++++++++- admin/osx/installer-background_2x.png | Bin 7190 -> 1994 bytes 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/admin/osx/installer-background.png b/admin/osx/installer-background.png index ca273880b37aa34ff8fca33a53677cc779b6fa37..7833f187dcaa842b2795d45b0affbdec7cb19b6a 100644 GIT binary patch literal 794 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoPjIjS$(bw`tAP|}fk$L90|Vb-5N14{zaj-F zC|TkfQ4*Y=R#Ki=l*&+EUaps!mtCBkSdglhUz9%kosAR&1JiO(7srr_Id88RGBPOe z956Vr|G8qayD;nCs`O_JB75I5H0ZK%q(~}ENNsSK#>f;o${7s<`lo}hj8?2Hy-9+K R4Zw8G;OXk;vd$@?2>`qv&*cCB literal 4028 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 B2BiQ1 diff --git a/admin/osx/installer-background.svg b/admin/osx/installer-background.svg index 73af25b6d05d6..6a25f5f66f099 100644 --- a/admin/osx/installer-background.svg +++ b/admin/osx/installer-background.svg @@ -1,2 +1,35 @@ - + diff --git a/admin/osx/installer-background_2x.png b/admin/osx/installer-background_2x.png index 0117c4974989a1e4286f0490ce98e18e0f2d33b9..210f1b91845e5b56f5e2efc6533c8d4854f0e943 100644 GIT binary patch literal 1994 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV4T3g1{AUTd{GrhaTa()7Beu&wu3NZ|I?4D zKtah8*NBqf{Irtt#G+J&^73-M%)IR4;rvVPaVD_zxcg!vkGr4hDf_21bS?9t8%69!3_14nv?D4A}%2 z6pk@4F&vR_U}%sSRWup|qp4stBaD^>qs8F}uMwUxu?Voq?%WvwsN0z?s{1Q6*}X^IfKbcE1bD1jhVl->duq@xgu zG^x@NK?FhZ^3DAZ?yvVdvokw;X3xyoXJ+3y^CrMd^{Bz@U;qF>ZJ@7h0RRvo0RUh+ zIp`)sA;!xB0Du56W4O-E@!x;rzXblj5+GBhB>&GJcxGX02>=p-h)GDv$SJ^-RMa%I zbo93v7@3$^SlQS)IJqF)JiL6j`2_@ppu!@ecf`acB&DS9%E-#eD<~={tEj5oQ`gYc z($>+{(>E|QGBznub+Rw(`SJ} z!6Bi~Uxd93k3dF7MaRU(#lK2OOiE5kO-p~Bk%`L6&dJToFDNW3Ey?fu>(%RPE(b?7A(~IltANYVD{5Ui`GCDRsG5P89)HGpcc5eR5!s62M z%GcGk^^MJ~Z`(V&d;156N8gWsoSgnV`*nWt`||3~-|KzyFR}mt%bNo4c_GmV8x4v zpIm8<$Bk`Y+o)A)?cQ_f`38N(nSbhFY~_iQh7`_}7kmrb-c!(~>Bsm!@s-Mq_wmo^ zFIi@cAG+>5s4?6KRS@$jT1#-|Z8CfN=-NZ2M6W+_!kXJa%=dLo}vb&hpTgx44 zoAc?}FVC&%e3xy*)XH0$jxwcQ#ov->p>c~bk0=5E7_*Krt59Ul>7rkMT_Dm>VI4JV zrm5l|v4JFIKQ<>??;&HKhC4^7F`H)2bAa5Ms_$`82M;rJyLT8k2&@UVS8;huUe^#W z-ENh`h>`XHJ`S;w%zfhX_KniwKReZ2aPh{xTLp*uQyt#@_q}|LsJ&k7P-b1~p_xTQ z1G?Fxh@x{idcf^nr~@7$p@?~`J{s7;+>+7yWGa00pCL{+Ai$ub^y+?Nnu=mx{lj0u zoI$UhpVnfuZ0yJjhV06BvO^pCASW}1N>x*D8>0*1N#c9K0$x0=X{80s-DDdE2isZC z9t@W|$|+Xz+0CBwcH-rP22=vV7%rWL z@RBKo)A852K^$XzR>_rS%=c(Bhd@tvb7o2gI8R0bE(I?rE7OA?eAZG#kp2!3>xRqF zfQHV2s`nKWh74>jYaW2YRDBB>*D+> zCaf)c-@sH`1L828vMC>9cJy$}g#UuoF>}<_kJ9=~reDA{bzQFMCnUze^kDRGc+7|n zk|6&r_3?4Sen;m%4q7jky3xDL&mo{dK@+L>I^+43U-b(k1FmXb*@~m;TOtpI1FgXK zHq*Cx^6|b33Xo8aIh-|9~E8wzSr?}CQp%!6uVr1YMn#V@wdM7$gKUmUYU%V zJ;c6BE)Y>7MpRFZ^9XH(z!SZ@uciLzfY<{6XTp zi4UC96J|7NHowF^v-RPCPG3y}vgYM0#g_W+#?maFE?@#-_vu|#-WAh4;-V1XYj7|LjGBIq zqxPvRpH&H|C7U7q86*KJ?J7b)ttPyLdws$1O4?oVDY-6d9rBj1jZ=c286Vr~*Zd6u zay9gMwt%h`%&@Bwnr!zWkATxrOsWZc?;@)_9M!7l2@Z@Zu5-4xFi#JHb_Og zshzA}6+Qdw2M)gc=b7f`B=1t)zhu+9uL^kZcm3qKS}sCzg@eer(tjadVj2AZDk-6{ zT#q@sUrkVU-6CV?HarWW0ms`EKh3e|Zs?|?Q|(B$*<7I~-S|mk(fqTMZxuP6ZQkyP z?KusG70d_?NPb?dez;Ia?-#edE(@>a0nQK(?(S_yD1mj^w3-w3W{^)cNnK%e?GX4V zlOn;()0cJg@x844Y=A4CKL=L5Z%+MI!lHNe!Y{YKHBO{%7r5PAY>*YeUOJ-WTSfn% zIhq%O))b(OgzijrB#SWG(qtC4B^ef`fcG=BqFsWb1T(Aq ziy0iVpBrKO_vqlT1{L*Oogi|HeC^p@G;5# zm}yLM%^jQA)|5ObdPu1eHW3Y0hz55tk=~}JwOBdCA~k>=>c3smwM;ch?v!_JcS{li z!xN2?`swYM(V{3jfE0hGzqYI8$~y?_ev>qpC(2Z;)Cg5fEzH#E=O~58;2v)?TiSRq z(tO_x>(F%!9tMC66uMRz&w0jzOsl82`JW9{ByB>3Sb2;lagO6v@83!;>ufP*vnLF= zbtKg{RplX&W2%t&&#_a2{b46YZoYk`GmF|e)?A{jJkvCDr~jY_vb44c{q&}wn01)u z_UFJS@f4&(F7yhhR1LAtn4d4w`^E94$r#FRJ~p1OgQZ=%)}l_UG{y2zPhpxhkB+JF z3}671raoLs=Wj2?5}y~1OW>demzBPi$i6rm!djk_pv9P#Lw^3s&cxi(PtyP16lRK@ zl60tqeVwP@Qdrnee2JeoDdUfrKe|zep!-j^_;z?JknxOeX{!(*kn+}h`*1n~cp}B= zCLmyP-tPh_s~FQiXwXB7GppE1<4!Cado!W#dUkCo+s=j^>{r$8nf2MsH$>!h9q&oN zV8d_yN*2mu@AQYSl#RX=VdD{6{aW@^*o}V)+gTE|u;Gxg^E{d#L{%Ic(HDSMiESpYQlCjOprSuP2r%_i}WUSx6X`$5A71TqZR zOF524P09JS4soGwd5K@s=Y-E0knY@r^eSdL6-O=#n2#-A+&`qU;TL-#sV@Fw)vCeL zP*<#NMbpqa)*+?xzOE7JkQ!ihv=qhb*Si5iO%bWv0_!XY`qDUA`_GZu`E5k z02^+3t^%MbdNi=>SR^g+f)-FwOegsXH` z)p@x{U*;NQNtaVo`RPILNaw|ghHTgRaoXtT7+hf|U?31Du%J*glVtm6Qs3(f@mvdC zo!LAVgz25yrrg1k2tO*3O8f`DH=k$P07CuZR#Pw+iB?@aK4qi|?90xw>fdN|VbAXF zs0TM4XpKTy!513=Iel^)?r6d_1a33gj0%3|2&9SgzU5xr>TJ%`^AUtgiDr3K$R?#I^5V zT_)74bVg_7voox2H%`Bl8F&vP56zGAkrc!gAgVUpV|@8|@u!fjFfU_d9YSal!p>8p zxT)Pxo~u&A3-pPrTPX|gJLRo*rpN!3*3@9XvJQ1bIvvUL<30v>F>7)xJ{)aItDe$>GT*z)gY$0u zqD;V|#R9;ODXpckZ>$qiwQ;`C>ksK$$9f5pD*6=ZTJ8a=FF-bXJm zg7s%02+%{HyUiCgZ@Nu^)(fColF_$1T4AzR}CqMkd9=*;eo4umv_`R;@1kBK)RDEcH?x@Oq(+J( z>h-o1FK(sL3RR-S^ihlCYZ~f@tTFj9WWI*%j2*;8YB@xyORPZst0V1smXM}>Q8(k% z*H?gdDvh&L9xX#4e+di2D0*O%nAg^Dg^!iy0tHZv8wo4&bgcPB@G(;zI;lgWgyV=W z1ifTYmnP@x1Xh!rI#>~$_Rbj_wI2t+9bHB41{Fp6$3D{@6?Swj!=}uas{P1#@G_!KF)(MR5(l)*8+NH94&{)V?oMVB-H2@c_Bl-8l9_2KM_RA6wh#7>Wwca|E8q%wtTYQcw$DqYZbP zQ^5z6@?yB*#?d;NnGvIIY@_9No^(f2VwP;Ii3*2Xz4rhgjK27^SISkH>^=u|fvtKu zCPkS-FMx1+5j(<{%Yq1^y3>?ixp;y5!K+XaG>~IaYD7hqK7dHe+#&r^lA^$S>*_R+ z^-s7+*1|15*44sWBl8d<&oK2?@}vB_?jNWPTmzL$Pj?OGmQ;eiWe14JGe!Z6RgyF> z2bjJ8qF(3eP`YS?NfkI+VMDX9hwCrFp&Q{gI~wGq^OR!3TT1h#T1d@H!o1P`CV`&H zPYNl^*fdQhYFwIL=C)+8&#xtks|OULQM`?PZ#BSqq}rG%={#8yP$3XdBrMP^ct_Ic zr|ht#%{QMR5>^EW;6|qeNREPeF~sWt?SsnuQ{^O}Fs5EMGhqP=Kjp8?hSpII)TQ@* z;%t%a)ISPL8SgUr1e4*HVjN<_&5~*&zUZnLg_yjUbn6jmlZ zV(Kh#0y`g9J#tUb<6%LV8~r&9AF*a9n#u5Z1w*wgk0AkxPlCvZE)7;FbXm{9&c2OG}I` zvUL@vYdO0z>lgp30lNQ`v;T+Avr?ROI_0r9r^UN~5gRKGpVcBw$8LY<+^5*Mo0nkB z72dZ(4+_{NOSW~uk7Bi6WY^z?1OR<%(+1o)(2c)eORli$Z41SZSB!?S^RcX&iTORu z6!s2MpgNbt)Sa(O^09orpRK2L2UlC}AHo%l`en|V93+IdiyU~gew&=dJuB0@rpzo@9UQ)9wkz;_hRSru9(CQ{tiB=)}+@ z@PQlcDWTYm>248`kwa#wq0PaKf)A?^`d29$M!q2 zId8^1iI&R*NvenHq3~Hutc+>6gWGIR@|#Utitg0w$dR8KTU_rl^~C2NWX(I{cxCumVD6c&3A_j9R}!sr|D+l$IZiWkt;_^fmqk0$V{)cO@vb<$O}BF((Pl7 zN33<>B1M);&gx?N$3^E)Xo@VC=%>1@>Z_hd3MWV|TLYDJBDBTD=1?pdOyN_2libvLr%&$D?~2=?>YjkPnZUr%dwJW+W%l9OiUfgDLV zdOr8wSjpGb4my2NzYKT!jfS@AEJ60(x}Usc5e$I={i{;Kyj>KVp=vZDzw2|k(2YNZ z7I7vWIhG}VFqxKdg)=RrG=fb!laa%|;$vvtIgMt);D)NgrPj&QK9{4ia7?u)OZcDb zB#Bf50|U0d>q)-h3c)jJv4rpU6-qY-_MxSI0VU*ZX|5uNLcP5@4?2~5?l?DlK_VXT zF9|dS@388pO5*hL}b{3b3eOMdxu44(J%eHY}V^LRLc1z zM|7!`l>Xt`Y+?z2d({5t(yFN}A{O{Q8EO7WSnx+bJwv7Vip9|1EuX(ZgB8k`#V|6t z(8LGy#|bRD$1_F>r61j^?9!jDxK|bVX~xGnHf97%i}4|JsEnQNef6@@!nK6t;=|w8 ixKRMvyb<@z?}2y&u6u&J+co}U*&FDXYS(KbqW%ZzN7}pq From c6f2d9403b36fa8816ccf736e96f4768d9a2af08 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Fri, 20 Dec 2024 13:04:39 +0100 Subject: [PATCH 053/104] readd translations for redirect these got lost after importing the ressources from phrase --- translations/client_de.ts | 4 ++-- translations/client_en.ts | 2 +- translations/client_es.ts | 2 +- translations/client_fr.ts | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/client_de.ts b/translations/client_de.ts index b56c3e5af3fc3..8773b31fc31ad 100644 --- a/translations/client_de.ts +++ b/translations/client_de.ts @@ -1,6 +1,6 @@ - + @@ -5727,7 +5727,7 @@ Server antwortete mit Fehler: %2 easy/0118 Redirect URL Parameter - + easy/0108 diff --git a/translations/client_en.ts b/translations/client_en.ts index 601226a04edb4..ecf3842a59f0d 100644 --- a/translations/client_en.ts +++ b/translations/client_en.ts @@ -1,6 +1,6 @@ - + diff --git a/translations/client_es.ts b/translations/client_es.ts index 79d5a6b922020..85df830d3cfdd 100644 --- a/translations/client_es.ts +++ b/translations/client_es.ts @@ -5688,7 +5688,7 @@ El servidor respondió con el error: %2 easy/0118 Redirect URL Parameter - + easy/0138 diff --git a/translations/client_fr.ts b/translations/client_fr.ts index dc7ae4c3c6e18..ab15708b74dd8 100644 --- a/translations/client_fr.ts +++ b/translations/client_fr.ts @@ -5725,7 +5725,7 @@ Le serveur a répondu avec l'erreur : %2 easy/0118 Redirect URL Parameter - + easy/0128 From 84224beb83a34266749ffa625ef06fdc5959d5d1 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Fri, 20 Dec 2024 15:47:38 +0100 Subject: [PATCH 054/104] SES-216 adjust color of CustomButtons --- src/gui/tray/ActivityItemActions.qml | 12 ++++++------ src/gui/tray/SyncStatus.qml | 16 ++++++++-------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/gui/tray/ActivityItemActions.qml b/src/gui/tray/ActivityItemActions.qml index 91f57036a5e77..437c4bf731f81 100644 --- a/src/gui/tray/ActivityItemActions.qml +++ b/src/gui/tray/ActivityItemActions.qml @@ -26,15 +26,14 @@ Repeater { model: root.linksForActionButtons - CustomButton { + SesCustomButton { id: activityActionButton property string verb: model.modelData.verb property bool isTalkReplyButton: verb === "REPLY" Layout.alignment: Qt.AlignTop | Qt.AlignRight - - hoverEnabled: true + padding: Style.smallSpacing display: Button.TextOnly @@ -44,9 +43,10 @@ Repeater { onClicked: isTalkReplyButton ? root.showReplyField() : root.triggerAction(model.index) - textColor: Style.adjustedCurrentUserHeaderColor - textColorHovered: Style.currentUserHeaderTextColor - bgColor: Style.currentUserHeaderColor + textColor: palette.brightText + bgColor: Style.sesActionPressed + bgNormalOpacity: 1.0 + bgHoverOpacity: Style.hoverOpacity visible: verb !== "REPLY" || (verb === "REPLY" && root.talkReplyButtonVisible) } diff --git a/src/gui/tray/SyncStatus.qml b/src/gui/tray/SyncStatus.qml index 37a6b773f80da..eed3947e4cf2c 100644 --- a/src/gui/tray/SyncStatus.qml +++ b/src/gui/tray/SyncStatus.qml @@ -104,17 +104,17 @@ RowLayout { } } - CustomButton { - Layout.preferredWidth: syncNowFm.boundingRect(text).width + - leftPadding + - rightPadding + - Style.standardSpacing * 2 + SesCustomButton { Layout.rightMargin: Style.trayHorizontalMargin + font.pixelSize: pixelSize + font.weight: fontWeight + text: qsTr("Resolve conflicts") - textColor: Style.adjustedCurrentUserHeaderColor - textColorHovered: Style.currentUserHeaderTextColor - bgColor: Style.currentUserHeaderColor + textColor: palette.brightText + bgColor: Style.sesActionPressed + bgNormalOpacity: 1.0 + bgHoverOpacity: Style.hoverOpacity visible: activityModel.hasSyncConflicts && !syncStatus.syncing && From ec58ac3a61fbdf382f15700febd9c813de8667ab Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Tue, 7 Jan 2025 15:25:50 +0100 Subject: [PATCH 055/104] SES-256 replace nextcloud offline state icon --- theme/colored/state-offline.svg | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/theme/colored/state-offline.svg b/theme/colored/state-offline.svg index 60e6bd950d3fe..e768c954e7e46 100644 --- a/theme/colored/state-offline.svg +++ b/theme/colored/state-offline.svg @@ -1 +1,4 @@ - + + + + From 2cbb229863de9fe85a9cd1027402320fd29e60c6 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Thu, 9 Jan 2025 15:44:47 +0100 Subject: [PATCH 056/104] SES-256 replace app icon --- theme/black/hidrivenext-icon.svg | 6 +++--- theme/black/state-offline.svg | 5 ++++- theme/colored/hidrivenext-icon.svg | 6 +++--- theme/white/hidrivenext-icon.svg | 6 +++--- theme/white/state-offline.svg | 5 ++++- 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/theme/black/hidrivenext-icon.svg b/theme/black/hidrivenext-icon.svg index 8da01eec16cf2..e768c954e7e46 100644 --- a/theme/black/hidrivenext-icon.svg +++ b/theme/black/hidrivenext-icon.svg @@ -1,4 +1,4 @@ - - - + + + diff --git a/theme/black/state-offline.svg b/theme/black/state-offline.svg index a1336e59f4604..e768c954e7e46 100644 --- a/theme/black/state-offline.svg +++ b/theme/black/state-offline.svg @@ -1 +1,4 @@ - + + + + diff --git a/theme/colored/hidrivenext-icon.svg b/theme/colored/hidrivenext-icon.svg index 8da01eec16cf2..e768c954e7e46 100644 --- a/theme/colored/hidrivenext-icon.svg +++ b/theme/colored/hidrivenext-icon.svg @@ -1,4 +1,4 @@ - - - + + + diff --git a/theme/white/hidrivenext-icon.svg b/theme/white/hidrivenext-icon.svg index 8da01eec16cf2..e768c954e7e46 100644 --- a/theme/white/hidrivenext-icon.svg +++ b/theme/white/hidrivenext-icon.svg @@ -1,4 +1,4 @@ - - - + + + diff --git a/theme/white/state-offline.svg b/theme/white/state-offline.svg index 2462f939a3cf6..e768c954e7e46 100644 --- a/theme/white/state-offline.svg +++ b/theme/white/state-offline.svg @@ -1 +1,4 @@ - + + + + From 350180865ee86f5255ac9c19512e4ecca9b6d231 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Thu, 9 Jan 2025 17:22:55 +0100 Subject: [PATCH 057/104] SES-214 replace help URL --- src/libsync/theme.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index c76e643d0b1a3..ac76ebeeca9e9 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -428,7 +428,7 @@ QString Theme::helpUrl() const #ifdef APPLICATION_HELP_URL return QString::fromLatin1(APPLICATION_HELP_URL); #else - return QString::fromLatin1("https://www.ionos.fr/assistance/hidrive-next/%1").arg(tr("easy/0118", "Redirect URL Parameter")); + return QString::fromLatin1("https://wl.hidrive.com/%1").arg(tr("easy/0118", "Redirect URL Parameter")); #endif } From 094ea554bd2df3fc18c20a186da55bf821843912 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Fri, 10 Jan 2025 15:54:35 +0100 Subject: [PATCH 058/104] SES-256 change offline icon back to standord nextcloud icon --- theme/black/state-offline.svg | 5 +---- theme/colored/state-offline.svg | 5 +---- theme/white/state-offline.svg | 5 +---- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/theme/black/state-offline.svg b/theme/black/state-offline.svg index e768c954e7e46..a1336e59f4604 100644 --- a/theme/black/state-offline.svg +++ b/theme/black/state-offline.svg @@ -1,4 +1 @@ - - - - + diff --git a/theme/colored/state-offline.svg b/theme/colored/state-offline.svg index e768c954e7e46..60e6bd950d3fe 100644 --- a/theme/colored/state-offline.svg +++ b/theme/colored/state-offline.svg @@ -1,4 +1 @@ - - - - + diff --git a/theme/white/state-offline.svg b/theme/white/state-offline.svg index e768c954e7e46..2462f939a3cf6 100644 --- a/theme/white/state-offline.svg +++ b/theme/white/state-offline.svg @@ -1,4 +1 @@ - - - - + From 24fbf24149872ad77e4ea2b15413ed4afbaa8a0c Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Wed, 15 Jan 2025 09:54:48 +0100 Subject: [PATCH 059/104] SES-257 add macOS specific app icon --- theme/black/hidrivenext-macOS-icon.svg | 9 + theme/colored/Nextcloud-macOS-icon.svg | 287 ----------------------- theme/colored/hidrivenext-macOS-icon.svg | 9 + theme/white/hidrivenext-macOS-icon.svg | 9 + 4 files changed, 27 insertions(+), 287 deletions(-) create mode 100644 theme/black/hidrivenext-macOS-icon.svg delete mode 100644 theme/colored/Nextcloud-macOS-icon.svg create mode 100644 theme/colored/hidrivenext-macOS-icon.svg create mode 100644 theme/white/hidrivenext-macOS-icon.svg diff --git a/theme/black/hidrivenext-macOS-icon.svg b/theme/black/hidrivenext-macOS-icon.svg new file mode 100644 index 0000000000000..09456b02f9815 --- /dev/null +++ b/theme/black/hidrivenext-macOS-icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/theme/colored/Nextcloud-macOS-icon.svg b/theme/colored/Nextcloud-macOS-icon.svg deleted file mode 100644 index 571fcdf5b2623..0000000000000 --- a/theme/colored/Nextcloud-macOS-icon.svg +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/theme/colored/hidrivenext-macOS-icon.svg b/theme/colored/hidrivenext-macOS-icon.svg new file mode 100644 index 0000000000000..09456b02f9815 --- /dev/null +++ b/theme/colored/hidrivenext-macOS-icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/theme/white/hidrivenext-macOS-icon.svg b/theme/white/hidrivenext-macOS-icon.svg new file mode 100644 index 0000000000000..09456b02f9815 --- /dev/null +++ b/theme/white/hidrivenext-macOS-icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + From dd25a85e19e29b741a01e25e78667e698abd8637 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Wed, 15 Jan 2025 09:55:25 +0100 Subject: [PATCH 060/104] SES-257 set correct APPLICATION_ICON_NAME for macOS --- IONOS.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IONOS.cmake b/IONOS.cmake index 1ccf59eff473c..b0222d133a146 100644 --- a/IONOS.cmake +++ b/IONOS.cmake @@ -7,8 +7,8 @@ set( APPLICATION_VENDOR "IONOS SE" ) set( APPLICATION_UPDATE_URL "https://customerupdates.nextcloud.com/client/" CACHE STRING "URL for updater" ) set( APPLICATION_HELP_URL "" CACHE STRING "URL for the help menu" ) -if(APPLE AND APPLICATION_NAME STREQUAL "Nextcloud" AND EXISTS "${CMAKE_SOURCE_DIR}/theme/colored/Nextcloud-macOS-icon.svg") - set( APPLICATION_ICON_NAME "Nextcloud-macOS" ) +if(APPLE AND APPLICATION_NAME STREQUAL "HiDrive Next" AND EXISTS "${CMAKE_SOURCE_DIR}/theme/colored/hidrivenext-macOS-icon.svg") + set( APPLICATION_ICON_NAME "hidrivenext-macOS" ) message("Using macOS-specific application icon: ${APPLICATION_ICON_NAME}") else() set( APPLICATION_ICON_NAME "${APPLICATION_SHORTNAME}" ) From 93a32d4895e6c4f508558061ecd5de741e871911 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Wed, 15 Jan 2025 15:35:05 +0100 Subject: [PATCH 061/104] SES-224 set default value of 'promptDeleteAllFiles' to false --- src/libsync/configfile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsync/configfile.cpp b/src/libsync/configfile.cpp index 3ba0e61a77cd2..998bd395c683b 100644 --- a/src/libsync/configfile.cpp +++ b/src/libsync/configfile.cpp @@ -1031,7 +1031,7 @@ bool ConfigFile::showMainDialogAsNormalWindow() const { bool ConfigFile::promptDeleteFiles() const { QSettings settings(configFile(), QSettings::IniFormat); - return settings.value(QLatin1String(promptDeleteC), true).toBool(); + return settings.value(QLatin1String(promptDeleteC), false).toBool(); } void ConfigFile::setPromptDeleteFiles(bool promptDeleteFiles) From 98341276c1147839819fbc522b07a60808959bb8 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Fri, 17 Jan 2025 18:32:00 +0100 Subject: [PATCH 062/104] SES-248 replace sparkle key wich our new one --- cmake/modules/MacOSXBundleInfo.plist.in | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cmake/modules/MacOSXBundleInfo.plist.in b/cmake/modules/MacOSXBundleInfo.plist.in index 8327c22976671..ba9916d942c22 100644 --- a/cmake/modules/MacOSXBundleInfo.plist.in +++ b/cmake/modules/MacOSXBundleInfo.plist.in @@ -36,10 +36,8 @@ SUShowReleaseNotes - SUPublicDSAKeyFile - dsa_pub.pem SUPublicEDKey - c3RcfDWDayvsYSZW8FhZN1UOJhvPVN30zleb4zOqbtU= + FQ8Dq6AiSDDv4XpnyJ3b6mQBFYLPKgj9ziEg/+VNGHg= UTExportedTypeDeclarations From 00b67db534b631bbbdd4a878e6d0e8dfe3d7b811 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Fri, 17 Jan 2025 18:32:41 +0100 Subject: [PATCH 063/104] SES-248 set version build year to current --- VERSION.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.cmake b/VERSION.cmake index b36d622d7191e..e0aa2870d5f33 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -1,7 +1,7 @@ set( MIRALL_VERSION_MAJOR 3 ) set( MIRALL_VERSION_MINOR 13 ) set( MIRALL_VERSION_PATCH 4 ) -set( MIRALL_VERSION_YEAR 2024 ) +set( MIRALL_VERSION_YEAR 2025 ) set( MIRALL_SOVERSION 0 ) # Minimum supported server version according to https://docs.nextcloud.com/server/latest/admin_manual/release_schedule.html From 655b94b7d5f901b060fe14a2c0578ca2c87dfdae Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Fri, 17 Jan 2025 18:33:00 +0100 Subject: [PATCH 064/104] SES-248 make start.sh executable --- admin/osx/ionos_macmaker/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 admin/osx/ionos_macmaker/start.sh diff --git a/admin/osx/ionos_macmaker/start.sh b/admin/osx/ionos_macmaker/start.sh old mode 100644 new mode 100755 index 0eb9d9d405852..bcda940bb6c91 --- a/admin/osx/ionos_macmaker/start.sh +++ b/admin/osx/ionos_macmaker/start.sh @@ -72,7 +72,7 @@ cmake -S $REPO_ROOT_DIR/ -B $BUILD_DIR \ -DBUILD_TESTING=OFF \ -DBUILD_UPDATER=$(if [ $BUILD_UPDATER == true ]; then echo "ON"; else echo "OFF"; fi) \ -DMIRALL_VERSION_BUILD=`date +%Y%m%d` \ - -DMIRALL_VERSION_SUFFIX=increment \ + -DMIRALL_VERSION_SUFFIX="" \ -DBUILD_OWNCLOUD_OSX_BUNDLE=ON \ -DCMAKE_OSX_ARCHITECTURES=x86_64 \ -DBUILD_FILE_PROVIDER_MODULE=ON \ From b57af8d21c8b99dfabc20d13195ae4151b256257 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Fri, 17 Jan 2025 20:21:16 +0100 Subject: [PATCH 065/104] SES-275 set inactive tab text to black --- src/gui/accountsettings.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index b3cf5846a7181..22cebfb1b376d 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -212,6 +212,13 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent) fpSettingsLayout->setMargin(0); fpSettingsLayout->addWidget(fpSettingsWidget); fileProviderTab->setLayout(fpSettingsLayout); + + _ui->tabWidget->tabBar()->setStyleSheet("QTabBar::tab {\ + color: #000000;\ + }\ + QTabBar::tab:selected {\ + color: #ffffff;\ + }"); } else { disguiseTabWidget(); } From 88eebc3b8790ca9c09d6f0e8d62e7e391d1a193f Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Tue, 21 Jan 2025 11:38:22 +0100 Subject: [PATCH 066/104] SES-229 add new icons --- theme/colored/state-error.svg | 11 ++++++++++- theme/colored/state-offline.svg | 4 +++- theme/colored/state-ok.svg | 11 ++++++++++- theme/colored/state-pause.svg | 11 ++++++++++- theme/colored/state-sync.svg | 17 ++++++++++++++++- theme/colored/state-warning.svg | 11 ++++++++++- theme/ses/ses-accountDelete.svg | 3 +++ theme/ses/ses-accountLogout.svg | 10 ++++++++++ theme/ses/ses-accountPause.svg | 3 +++ theme/ses/ses-accountQuit.svg | 3 +++ theme/ses/ses-accountResume.svg | 3 +++ theme/ses/ses-activity.svg | 10 ++++++++++ theme/ses/ses-addlivebackup.svg | 10 ++++++++++ theme/ses/ses-chevron.svg | 3 +++ theme/ses/ses-clipboard.svg | 10 ++++++++++ theme/ses/ses-darkPlus.svg | 10 ++++++++++ theme/ses/ses-external.svg | 3 +++ theme/ses/ses-file.svg | 3 +++ theme/ses/ses-folderIcon.svg | 3 +++ theme/ses/ses-folderIconBright.svg | 3 +++ theme/ses/ses-info.svg | 10 ++++++++++ theme/ses/ses-link.svg | 4 ++++ theme/ses/ses-more.svg | 3 +++ theme/ses/ses-questionmark.svg | 3 +++ theme/ses/ses-refresh.svg | 10 ++++++++++ theme/ses/ses-settings.svg | 3 +++ theme/ses/ses-settingsAvatar.svg | 3 +++ theme/ses/ses-snackbar-error.svg | 10 ++++++++++ theme/ses/ses-snackbar-success.svg | 10 ++++++++++ theme/ses/ses-snackbar-warning.svg | 3 +++ theme/ses/ses-state-offline.svg | 3 +++ theme/ses/ses-syncArrows.svg | 3 +++ theme/ses/ses-syncstate-error.svg | 10 ++++++++++ theme/ses/ses-syncstate-paused.svg | 10 ++++++++++ theme/ses/ses-syncstate-success.svg | 10 ++++++++++ theme/ses/ses-syncstate-syncing.svg | 16 ++++++++++++++++ theme/ses/ses-syncstate-warning.svg | 10 ++++++++++ theme/ses/ses-website.svg | 10 ++++++++++ 38 files changed, 267 insertions(+), 6 deletions(-) create mode 100644 theme/ses/ses-accountDelete.svg create mode 100644 theme/ses/ses-accountLogout.svg create mode 100644 theme/ses/ses-accountPause.svg create mode 100644 theme/ses/ses-accountQuit.svg create mode 100644 theme/ses/ses-accountResume.svg create mode 100644 theme/ses/ses-activity.svg create mode 100644 theme/ses/ses-addlivebackup.svg create mode 100644 theme/ses/ses-chevron.svg create mode 100644 theme/ses/ses-clipboard.svg create mode 100644 theme/ses/ses-darkPlus.svg create mode 100644 theme/ses/ses-external.svg create mode 100644 theme/ses/ses-file.svg create mode 100644 theme/ses/ses-folderIcon.svg create mode 100644 theme/ses/ses-folderIconBright.svg create mode 100644 theme/ses/ses-info.svg create mode 100644 theme/ses/ses-link.svg create mode 100644 theme/ses/ses-more.svg create mode 100644 theme/ses/ses-questionmark.svg create mode 100644 theme/ses/ses-refresh.svg create mode 100644 theme/ses/ses-settings.svg create mode 100644 theme/ses/ses-settingsAvatar.svg create mode 100644 theme/ses/ses-snackbar-error.svg create mode 100644 theme/ses/ses-snackbar-success.svg create mode 100644 theme/ses/ses-snackbar-warning.svg create mode 100644 theme/ses/ses-state-offline.svg create mode 100644 theme/ses/ses-syncArrows.svg create mode 100644 theme/ses/ses-syncstate-error.svg create mode 100644 theme/ses/ses-syncstate-paused.svg create mode 100644 theme/ses/ses-syncstate-success.svg create mode 100644 theme/ses/ses-syncstate-syncing.svg create mode 100644 theme/ses/ses-syncstate-warning.svg create mode 100644 theme/ses/ses-website.svg diff --git a/theme/colored/state-error.svg b/theme/colored/state-error.svg index 224ce8626c4e0..4674cc8e2d4d4 100644 --- a/theme/colored/state-error.svg +++ b/theme/colored/state-error.svg @@ -1 +1,10 @@ - + + + + + + + + + + diff --git a/theme/colored/state-offline.svg b/theme/colored/state-offline.svg index 60e6bd950d3fe..eda854aac5306 100644 --- a/theme/colored/state-offline.svg +++ b/theme/colored/state-offline.svg @@ -1 +1,3 @@ - + + + diff --git a/theme/colored/state-ok.svg b/theme/colored/state-ok.svg index f7bfcbcce6d83..433f04a262429 100644 --- a/theme/colored/state-ok.svg +++ b/theme/colored/state-ok.svg @@ -1 +1,10 @@ - + + + + + + + + + + diff --git a/theme/colored/state-pause.svg b/theme/colored/state-pause.svg index f2edf258a15dc..5f91042e48073 100644 --- a/theme/colored/state-pause.svg +++ b/theme/colored/state-pause.svg @@ -1 +1,10 @@ - + + + + + + + + + + diff --git a/theme/colored/state-sync.svg b/theme/colored/state-sync.svg index 658d1b40e0c43..07aa6dda5c66c 100644 --- a/theme/colored/state-sync.svg +++ b/theme/colored/state-sync.svg @@ -1 +1,16 @@ - + + + + + + + + + + + + + + + + diff --git a/theme/colored/state-warning.svg b/theme/colored/state-warning.svg index a738cdbc8b1a5..32363111058db 100644 --- a/theme/colored/state-warning.svg +++ b/theme/colored/state-warning.svg @@ -1 +1,10 @@ - + + + + + + + + + + diff --git a/theme/ses/ses-accountDelete.svg b/theme/ses/ses-accountDelete.svg new file mode 100644 index 0000000000000..8b35ccf415249 --- /dev/null +++ b/theme/ses/ses-accountDelete.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-accountLogout.svg b/theme/ses/ses-accountLogout.svg new file mode 100644 index 0000000000000..60c5eacfcd135 --- /dev/null +++ b/theme/ses/ses-accountLogout.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-accountPause.svg b/theme/ses/ses-accountPause.svg new file mode 100644 index 0000000000000..6928b0a84ca1a --- /dev/null +++ b/theme/ses/ses-accountPause.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-accountQuit.svg b/theme/ses/ses-accountQuit.svg new file mode 100644 index 0000000000000..95554efad4428 --- /dev/null +++ b/theme/ses/ses-accountQuit.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-accountResume.svg b/theme/ses/ses-accountResume.svg new file mode 100644 index 0000000000000..fea95e07e255b --- /dev/null +++ b/theme/ses/ses-accountResume.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-activity.svg b/theme/ses/ses-activity.svg new file mode 100644 index 0000000000000..09d58a5868610 --- /dev/null +++ b/theme/ses/ses-activity.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-addlivebackup.svg b/theme/ses/ses-addlivebackup.svg new file mode 100644 index 0000000000000..c78a03471aa8f --- /dev/null +++ b/theme/ses/ses-addlivebackup.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-chevron.svg b/theme/ses/ses-chevron.svg new file mode 100644 index 0000000000000..0823e78819528 --- /dev/null +++ b/theme/ses/ses-chevron.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-clipboard.svg b/theme/ses/ses-clipboard.svg new file mode 100644 index 0000000000000..11e2a909d3851 --- /dev/null +++ b/theme/ses/ses-clipboard.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-darkPlus.svg b/theme/ses/ses-darkPlus.svg new file mode 100644 index 0000000000000..74f4f7eca5844 --- /dev/null +++ b/theme/ses/ses-darkPlus.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-external.svg b/theme/ses/ses-external.svg new file mode 100644 index 0000000000000..07f5a34f63f2f --- /dev/null +++ b/theme/ses/ses-external.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-file.svg b/theme/ses/ses-file.svg new file mode 100644 index 0000000000000..0a8d10cbb7694 --- /dev/null +++ b/theme/ses/ses-file.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-folderIcon.svg b/theme/ses/ses-folderIcon.svg new file mode 100644 index 0000000000000..b8fb4f1c7eebc --- /dev/null +++ b/theme/ses/ses-folderIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-folderIconBright.svg b/theme/ses/ses-folderIconBright.svg new file mode 100644 index 0000000000000..cec3690fe2544 --- /dev/null +++ b/theme/ses/ses-folderIconBright.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-info.svg b/theme/ses/ses-info.svg new file mode 100644 index 0000000000000..bb88fa20fa785 --- /dev/null +++ b/theme/ses/ses-info.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-link.svg b/theme/ses/ses-link.svg new file mode 100644 index 0000000000000..bcab7b7518f91 --- /dev/null +++ b/theme/ses/ses-link.svg @@ -0,0 +1,4 @@ + + + + diff --git a/theme/ses/ses-more.svg b/theme/ses/ses-more.svg new file mode 100644 index 0000000000000..87baffb082247 --- /dev/null +++ b/theme/ses/ses-more.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-questionmark.svg b/theme/ses/ses-questionmark.svg new file mode 100644 index 0000000000000..e6fe962b7a657 --- /dev/null +++ b/theme/ses/ses-questionmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-refresh.svg b/theme/ses/ses-refresh.svg new file mode 100644 index 0000000000000..1502d63212085 --- /dev/null +++ b/theme/ses/ses-refresh.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-settings.svg b/theme/ses/ses-settings.svg new file mode 100644 index 0000000000000..97cdc64e85eb9 --- /dev/null +++ b/theme/ses/ses-settings.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-settingsAvatar.svg b/theme/ses/ses-settingsAvatar.svg new file mode 100644 index 0000000000000..55c13ae34b0fd --- /dev/null +++ b/theme/ses/ses-settingsAvatar.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-snackbar-error.svg b/theme/ses/ses-snackbar-error.svg new file mode 100644 index 0000000000000..ddb015e7693c4 --- /dev/null +++ b/theme/ses/ses-snackbar-error.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-snackbar-success.svg b/theme/ses/ses-snackbar-success.svg new file mode 100644 index 0000000000000..cfabcb54ee292 --- /dev/null +++ b/theme/ses/ses-snackbar-success.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-snackbar-warning.svg b/theme/ses/ses-snackbar-warning.svg new file mode 100644 index 0000000000000..8dd360cd42c29 --- /dev/null +++ b/theme/ses/ses-snackbar-warning.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-state-offline.svg b/theme/ses/ses-state-offline.svg new file mode 100644 index 0000000000000..eda854aac5306 --- /dev/null +++ b/theme/ses/ses-state-offline.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-syncArrows.svg b/theme/ses/ses-syncArrows.svg new file mode 100644 index 0000000000000..88cd18033beb5 --- /dev/null +++ b/theme/ses/ses-syncArrows.svg @@ -0,0 +1,3 @@ + + + diff --git a/theme/ses/ses-syncstate-error.svg b/theme/ses/ses-syncstate-error.svg new file mode 100644 index 0000000000000..4674cc8e2d4d4 --- /dev/null +++ b/theme/ses/ses-syncstate-error.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-syncstate-paused.svg b/theme/ses/ses-syncstate-paused.svg new file mode 100644 index 0000000000000..5f91042e48073 --- /dev/null +++ b/theme/ses/ses-syncstate-paused.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-syncstate-success.svg b/theme/ses/ses-syncstate-success.svg new file mode 100644 index 0000000000000..433f04a262429 --- /dev/null +++ b/theme/ses/ses-syncstate-success.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-syncstate-syncing.svg b/theme/ses/ses-syncstate-syncing.svg new file mode 100644 index 0000000000000..07aa6dda5c66c --- /dev/null +++ b/theme/ses/ses-syncstate-syncing.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/theme/ses/ses-syncstate-warning.svg b/theme/ses/ses-syncstate-warning.svg new file mode 100644 index 0000000000000..32363111058db --- /dev/null +++ b/theme/ses/ses-syncstate-warning.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/ses/ses-website.svg b/theme/ses/ses-website.svg new file mode 100644 index 0000000000000..c909fa4d33aac --- /dev/null +++ b/theme/ses/ses-website.svg @@ -0,0 +1,10 @@ + + + + + + + + + + From 6d8407945fbf273384a26d78ba6837a67c588235 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Tue, 21 Jan 2025 11:39:05 +0100 Subject: [PATCH 067/104] SES-229 use icons in ionostheme.h and style.qml --- src/libsync/ionostheme.h | 40 ++++++++++++++++++++++++++++++++-------- theme.qrc.in | 31 +++++++++++++++++++++++++++++++ theme/Style/Style.qml | 38 +++++++++++++++++++------------------- 3 files changed, 82 insertions(+), 27 deletions(-) diff --git a/src/libsync/ionostheme.h b/src/libsync/ionostheme.h index bfb96b43e30aa..b5e45d137610d 100644 --- a/src/libsync/ionostheme.h +++ b/src/libsync/ionostheme.h @@ -12,35 +12,59 @@ class IonosTheme { //Icons static QString avatarIcon() { - return QString(Theme::themePrefix) + QStringLiteral("colored/wizard-groupware.svg"); + return QString(Theme::themePrefix) + QStringLiteral("ses/ses-settingsAvatar.svg"); } static QString folderIcon() { - return QString(Theme::themePrefix) + QStringLiteral("black/folder.svg"); + return QString(Theme::themePrefix) + QStringLiteral("ses/ses-folderIcon.svg"); } static QString syncArrows() { - return QString(Theme::themePrefix) + QStringLiteral("sync-arrow.svg"); + return QString(Theme::themePrefix) + QStringLiteral("ses/ses-syncArrows.svg"); } static QString questionCircleIcon() { - return QString(Theme::themePrefix) + QStringLiteral("black/state-info.svg"); + return QString(Theme::themePrefix) + QStringLiteral("ses/ses-questionMark.svg"); } static QString liveBackupPlusIcon() { - return QString(Theme::themePrefix) + QStringLiteral("black/add.svg"); + return QString(Theme::themePrefix) + QStringLiteral("ses/ses-addlivebackup.svg"); } static QString plusIcon() { - return QStringLiteral("qrc:///client/theme/black/add.svg"); + return QStringLiteral("qrc:///client/theme/ses/ses-darkPlus.svg"); } static QString deleteIcon() { - return QStringLiteral("qrc:///client/theme/black/clear.svg"); + return QStringLiteral("qrc:///client/theme/ses/ses-accountDelete.svg"); } static QString refreshIcon() { - return QStringLiteral("qrc:///client/theme/black/change.svg"); + return QStringLiteral("qrc:///client/theme/ses/ses-refresh.svg"); + } + + static QString syncSuccessIcon() { + return QStringLiteral("qrc:///client/theme/ses/ses-syncstatus-success.svg"); + } + + static QString syncWarnIcon() { + return QStringLiteral("qrc:///client/theme/ses/ses-syncstatus-warning.svg"); + } + + static QString syncErrorIcon() { + return QStringLiteral("qrc:///client/theme/ses/ses-syncstatus-error.svg"); + } + + static QString syncPausedIcon() { + return QStringLiteral("qrc:///client/theme/ses/ses-syncstatus-paused.svg"); + } + + static QString syncingIcon() { + return QStringLiteral("qrc:///client/theme/ses/ses-syncstatus-syncing.svg"); + } + + static QString syncOfflineIcon() { + return QStringLiteral("qrc:///client/theme/ses/ses-state-offline.svg"); } static int treeViewIconSize() { diff --git a/theme.qrc.in b/theme.qrc.in index 1f39b234c801b..00258fccb01cf 100644 --- a/theme.qrc.in +++ b/theme.qrc.in @@ -246,5 +246,36 @@ theme/colored/IONOS_logo_w_suffix_frontend.svg fonts/OpenSans-SemiBold.ttf fonts/OpenSans-Regular.ttf + theme/ses/ses-accountDelete.svg + theme/ses/ses-accountLogout.svg + theme/ses/ses-accountPause.svg + theme/ses/ses-accountQuit.svg + theme/ses/ses-accountResume.svg + theme/ses/ses-activity.svg + theme/ses/ses-chevron.svg + theme/ses/ses-clipboard.svg + theme/ses/ses-darkPlus.svg + theme/ses/ses-addlivebackup.svg + theme/ses/ses-file.svg + theme/ses/ses-folderIcon.svg + theme/ses/ses-folderIconBright.svg + theme/ses/ses-syncstate-success.svg + theme/ses/ses-syncstate-syncing.svg + theme/ses/ses-syncstate-paused.svg + theme/ses/ses-syncstate-warning.svg + theme/ses/ses-syncstate-error.svg + theme/ses/ses-state-offline.svg + theme/ses/ses-snackbar-success.svg + theme/ses/ses-snackbar-warning.svg + theme/ses/ses-snackbar-error.svg + theme/ses/ses-more.svg + theme/ses/ses-questionmark.svg + theme/ses/ses-refresh.svg + theme/ses/ses-settings.svg + theme/ses/ses-settingsAvatar.svg + theme/ses/ses-info.svg + theme/ses/ses-syncArrows.svg + theme/ses/ses-external.svg + theme/ses/ses-website.svg diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 5b4f9ef65bf65..c35b45fe793cb 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -204,25 +204,25 @@ QtObject { } // SES - readonly property string sesWebsiteIcon: "qrc:///client/theme/external.svg" - readonly property string sesFilesIcon: "qrc:///client/theme/files.svg" - readonly property string sesIonosLogoIcon: "qrc:///client/theme/ses/ses-IONOS-Logo.svg" - - readonly property string sesAvatar: "qrc:///client/theme/account.svg" - - readonly property string sesAccountQuit: "qrc:///client/theme/black/close.svg" - readonly property string sesAccountPause: "qrc:///client/theme/colored/state-pause.svg" - readonly property string sesDarkPlus: "qrc:///client/theme/black/add.svg" - readonly property string sesLightPlus: "qrc:///client/theme/white/add.svg" - readonly property string sesAccountSettings: "qrc:///client/theme/black/settings.svg" - readonly property string sesAccountResume: "qrc:///client/theme/black/state-sync.svg" - readonly property string sesLogout: "qrc:///client/theme/black/close.svg" - readonly property string sesDelete: "qrc:///client/theme/delete.svg" - readonly property string sesClipboard: "qrc:///client/theme/copy.svg" - readonly property string sesErrorIcon: "qrc:///client/theme/colored/state-error.svg" - readonly property string sesErrorBoxIcon: "qrc:///client/theme/colored/state-error.svg" - readonly property string sesGreenCheckmark: "qrc:///client/theme/colored/state-ok.svg" - readonly property string sesChevron: "qrc:///client/theme/black/caret-down.svg" + readonly property string sesWebsiteIcon: "qrc:///client/theme/ses/ses-website.svg" + readonly property string sesFolderIcon: "qrc:///client/theme/ses/ses-folderIcon.svg" + readonly property string sesIonosLogoIcon: "qrc:///client/theme/ses/ses-IONOS-Logo.svg" + + readonly property string sesAvatar: "qrc:///client/theme/ses/ses-settingsAvatar.svg" + + readonly property string sesAccountQuit: "qrc:///client/theme/ses/ses-accountQuit.svg" + readonly property string sesAccountPause: "qrc:///client/theme/ses/ses-accountPause.svg" + readonly property string sesDarkPlus: "qrc:///client/theme/ses/ses-darkPlus.svg" + readonly property string sesAccountSettings: "qrc:///client/theme/ses/ses-settings.svg" + readonly property string sesAccountResume: "qrc:///client/theme/ses/ses-accountResume.svg" + readonly property string sesLogout: "qrc:///client/theme/ses/ses-accountLogout.svg" + readonly property string sesDelete: "qrc:///client/theme/ses/ses-accountDelete.svg" + readonly property string sesClipboard: "qrc:///client/theme/ses/ses-clipboard.svg" + readonly property string sesSyncErrorIcon: "qrc:///client/theme/ses/ses-syncstate-error.svg" + readonly property string sesErrorBoxIcon: "qrc:///client/theme/ses/ses-snackbar-error.svg" + readonly property string sesSyncSuccessIcon: "qrc:///client/theme/ses/ses-syncstate-success.svg" + readonly property string sesOfflineIcon: "qrc:///client/theme/ses/ses-state-offline.svg" + readonly property string sesChevron: "qrc:///client/theme/ses/ses-chevron.svg" readonly property color sesIconDarkColor: "#001B41" readonly property color sesIconColor: "#1474C4" From ce17c8bc8056bbc03506105b6a55a4d64a702538 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Tue, 21 Jan 2025 11:40:22 +0100 Subject: [PATCH 068/104] SES-229 use new icons in UI Components --- src/gui/SesComponents/SesErrorBox.qml | 2 +- src/gui/filedetails/ShareDelegate.qml | 4 ++-- src/gui/filedetails/ShareDetailsPage.qml | 2 +- src/gui/folderstatusdelegate.cpp | 2 +- src/gui/owncloudgui.cpp | 3 ++- src/gui/sesFileIconProvider.cpp | 4 ++-- src/gui/sessnackbar.cpp | 6 +++--- src/gui/settingsdialog.cpp | 6 +++--- src/gui/tray/ActivityList.qml | 2 +- src/gui/tray/TrayFoldersMenuButton.qml | 2 +- src/gui/tray/TrayWindowAccountMenu.qml | 6 +++--- src/gui/tray/activitylistmodel.cpp | 6 +++--- src/gui/wizard/flow2authwidget.cpp | 2 +- 13 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/gui/SesComponents/SesErrorBox.qml b/src/gui/SesComponents/SesErrorBox.qml index 1c821caccde18..6a0d6ea2ba8a4 100644 --- a/src/gui/SesComponents/SesErrorBox.qml +++ b/src/gui/SesComponents/SesErrorBox.qml @@ -43,7 +43,7 @@ Item { columns: 2 Image { - source: Style.sesErrorIcon + source: Style.sesErrorBoxIcon width: 24 height: 24 Layout.rightMargin: Style.standardSpacing diff --git a/src/gui/filedetails/ShareDelegate.qml b/src/gui/filedetails/ShareDelegate.qml index 2560d55ffa3fb..b4983329d1ba9 100644 --- a/src/gui/filedetails/ShareDelegate.qml +++ b/src/gui/filedetails/ShareDelegate.qml @@ -165,7 +165,7 @@ GridLayout { bgColor: palette.highlight bgNormalOpacity: 0 - icon.source: Style.sesLightPlus + palette.buttonText + icon.source: Style.sesDarkPlus + palette.buttonText icon.width: Style.smallIconSize icon.height: Style.smallIconSize @@ -202,7 +202,7 @@ GridLayout { bgColor: palette.highlight bgNormalOpacity: 0 - icon.source: shareLinkCopied ? Style.sesGreenCheckmark + Style.positiveColor : + icon.source: shareLinkCopied ? Style.sesSyncSuccessIcon + Style.positiveColor : Style.sesClipboard + palette.brightText icon.width: Style.smallIconSize diff --git a/src/gui/filedetails/ShareDetailsPage.qml b/src/gui/filedetails/ShareDetailsPage.qml index 56676e7ff55d2..9a936b1e4d542 100644 --- a/src/gui/filedetails/ShareDetailsPage.qml +++ b/src/gui/filedetails/ShareDetailsPage.qml @@ -843,7 +843,7 @@ Page { SesCustomButton { Layout.columnSpan: buttonGrid.columns - icon.source: Style.sesLightPlus + icon.source: Style.sesDarkPlus font.pixelSize: pixelSize font.weight: fontWeight diff --git a/src/gui/folderstatusdelegate.cpp b/src/gui/folderstatusdelegate.cpp index fd91d5de54ef2..676fd5f5c1dca 100644 --- a/src/gui/folderstatusdelegate.cpp +++ b/src/gui/folderstatusdelegate.cpp @@ -513,7 +513,7 @@ void FolderStatusDelegate::slotStyleChanged() void FolderStatusDelegate::customizeStyle() { - _iconMore = Theme::createColorAwareIcon(QLatin1String(":/client/theme/more.svg"), QSize(128, 128)); + _iconMore = Theme::createColorAwareIcon(QLatin1String(":/client/theme/ses/ses-more.svg"), QSize(128, 128)); } } // namespace OCC diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp index 4f3c5ce8844b1..de3c5e5f69197 100644 --- a/src/gui/owncloudgui.cpp +++ b/src/gui/owncloudgui.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #ifdef WITH_LIBCLOUDPROVIDERS #include #include @@ -85,7 +86,7 @@ ownCloudGui::ownCloudGui(Application *parent) _tray = Systray::instance(); _tray->setTrayEngine(new QQmlApplicationEngine(this)); // for the beginning, set the offline icon until the account was verified - _tray->setIcon(Theme::instance()->folderOfflineIcon(/*systray?*/ true)); + _tray->setIcon(QIcon(IonosTheme::syncOfflineIcon())); _tray->show(); diff --git a/src/gui/sesFileIconProvider.cpp b/src/gui/sesFileIconProvider.cpp index 677c1491b0d27..569027980dfbb 100644 --- a/src/gui/sesFileIconProvider.cpp +++ b/src/gui/sesFileIconProvider.cpp @@ -9,12 +9,12 @@ QIcon SesFileIconProvider::icon(const QFileInfo &info) const if (info.isDir()) { - return QIcon(":/client/theme/black/folder.svg"); + return QIcon(":/client/theme/ses/ses-folderIconBright.svg"); } if (info.suffix().isEmpty()) { - return QIcon(":/client/theme/black/edit.svg"); + return QIcon(":/client/theme/ses/ses-file.svg"); } diff --git a/src/gui/sessnackbar.cpp b/src/gui/sessnackbar.cpp index c42c099b2ab4c..52c4883e990f9 100644 --- a/src/gui/sessnackbar.cpp +++ b/src/gui/sessnackbar.cpp @@ -101,7 +101,7 @@ namespace OCC { void sesSnackBar::successStyle() { - const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/black/state-ok.svg"); + const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/ses/ses-snackbar-success.svg"); m_iconLabel.setPixmap(logoIconFileName); updateStyleSheet(IonosTheme::successBorderColor(), IonosTheme::successColor(), IonosTheme::black(), IonosTheme::black()); @@ -109,7 +109,7 @@ namespace OCC { void sesSnackBar::warningStyle() { - const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/black/state-info.svg"); + const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/ses/ses-snackbar-warning.svg"); m_iconLabel.setPixmap(logoIconFileName); updateStyleSheet(IonosTheme::warningBorderColor(), IonosTheme::warningColor(), IonosTheme::black(), IonosTheme::black()); @@ -117,7 +117,7 @@ namespace OCC { void sesSnackBar::errorStyle() { - const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/black/state-error.svg"); + const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/ses/ses-snackbar-error.svg"); m_iconLabel.setPixmap(logoIconFileName); updateStyleSheet(IonosTheme::errorBorderColor(), IonosTheme::errorColor(), IonosTheme::black(), IonosTheme::black()); diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index 058f3634e8b2f..4eed10c7330ac 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -122,12 +122,12 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) _actionGroup->setExclusive(true); connect(_actionGroup, &QActionGroup::triggered, this, &SettingsDialog::slotSwitchPage); - QAction *newAccountAction = createColorAwareAction(QLatin1String(":/client/theme/black/add.svg"), tr("New Account")); + QAction *newAccountAction = createColorAwareAction(QLatin1String(":/client/theme/ses/ses-darkPlus.svg"), tr("New Account")); _actionGroup->addAction(newAccountAction); _toolBar->addAction(newAccountAction); connect(newAccountAction, &QAction::triggered, _gui, &ownCloudGui::slotNewAccountWizard); - QAction *generalAction = createColorAwareAction(QLatin1String(":/client/theme/settings.svg"), tr("General")); + QAction *generalAction = createColorAwareAction(QLatin1String(":/client/theme/ses/ses-settings.svg"), tr("General")); _actionGroup->addAction(generalAction); _toolBar->addAction(generalAction); auto *generalSettings = new GeneralSettings; @@ -245,7 +245,7 @@ void SettingsDialog::accountAdded(AccountState *s) bool brandingSingleAccount = !Theme::instance()->multiAccount(); const auto actionText = brandingSingleAccount ? tr("Account") : s->account()->displayName(); - const auto accountAction = createColorAwareAction(QLatin1String(":/client/theme/account.svg"), actionText); + const auto accountAction = createColorAwareAction(QLatin1String(":/client/theme/ses/ses-settingsAvatar.svg"), actionText); if (!brandingSingleAccount) { accountAction->setToolTip(s->account()->displayName()); diff --git a/src/gui/tray/ActivityList.qml b/src/gui/tray/ActivityList.qml index 034ffa794f910..498533a295bd0 100644 --- a/src/gui/tray/ActivityList.qml +++ b/src/gui/tray/ActivityList.qml @@ -126,7 +126,7 @@ ScrollView { verticalAlignment: Image.AlignVCenter horizontalAlignment: Image.AlignHCenter fillMode: Image.PreserveAspectFit - source: "image://svgimage-custom-color/activity.svg/" + source: "qrc:///client/theme/ses/ses-activity.svg" sourceSize.height: 32 sourceSize.width: 22 } diff --git a/src/gui/tray/TrayFoldersMenuButton.qml b/src/gui/tray/TrayFoldersMenuButton.qml index 3f34345f06a91..cb11db80b726f 100644 --- a/src/gui/tray/TrayFoldersMenuButton.qml +++ b/src/gui/tray/TrayFoldersMenuButton.qml @@ -27,7 +27,7 @@ HeaderButton { required property var currentUser property bool userHasGroupFolders: currentUser.groupFolders.length > 0 - icon.source: Style.sesFilesIcon + icon.source: Style.sesFolderIcon icon.color: Style.sesIconColor text: qsTr("Files") diff --git a/src/gui/tray/TrayWindowAccountMenu.qml b/src/gui/tray/TrayWindowAccountMenu.qml index 2d7d2367e8747..f1026fae58f73 100644 --- a/src/gui/tray/TrayWindowAccountMenu.qml +++ b/src/gui/tray/TrayWindowAccountMenu.qml @@ -273,10 +273,10 @@ Button { Layout.rightMargin: Style.sesAccountButtonRightMargin source: Image { Layout.alignment: Qt.AlignRight - verticalAlignment: Qt.AlignCenter + verticalAlignment: Qt.AlignBottom source: Style.sesChevron - sourceSize.width: 12 - sourceSize.height: 7 + sourceSize.width: 14 + sourceSize.height: 14 Accessible.role: Accessible.PopupMenu Accessible.name: qsTr("Account switcher and settings menu") } diff --git a/src/gui/tray/activitylistmodel.cpp b/src/gui/tray/activitylistmodel.cpp index 4880b077e2fe5..eb2639fb4aed4 100644 --- a/src/gui/tray/activitylistmodel.cpp +++ b/src/gui/tray/activitylistmodel.cpp @@ -232,7 +232,7 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const if (a._type == Activity::NotificationType && !a._talkNotificationData.userAvatar.isEmpty()) { return QStringLiteral("qrc:///client/theme/colored/talk-bordered.svg"); } else if (a._type == Activity::SyncResultType) { - colorIconPath.append("state-error.svg"); + colorIconPath.append("state-ok.svg"); return colorIconPath; } else if (a._type == Activity::SyncFileItemType) { if (a._syncFileItemStatus == SyncFileItem::NormalError @@ -248,10 +248,10 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const || a._syncFileItemStatus == SyncFileItem::FileNameInvalid || a._syncFileItemStatus == SyncFileItem::FileNameInvalidOnServer || a._syncFileItemStatus == SyncFileItem::FileNameClash) { - colorIconPath.append("state-info.svg"); + colorIconPath.append("state-warning.svg"); return colorIconPath; } else if (a._syncFileItemStatus == SyncFileItem::FileIgnored) { - colorIconPath.append("state-info.svg"); + colorIconPath = QStringLiteral("qrc:///client/theme/ses/ses-info.svg"); return colorIconPath; } else { // File sync successful diff --git a/src/gui/wizard/flow2authwidget.cpp b/src/gui/wizard/flow2authwidget.cpp index 4e47608bf1642..6db4af0fa810b 100644 --- a/src/gui/wizard/flow2authwidget.cpp +++ b/src/gui/wizard/flow2authwidget.cpp @@ -58,7 +58,7 @@ Flow2AuthWidget::Flow2AuthWidget(QWidget *parent) void Flow2AuthWidget::setLogo() { - const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/black/external.svg"); + const auto logoIconFileName = Theme::hidpiFileName(":/client/theme/ses/ses-external.svg"); _ui.logoLabel->setPixmap(logoIconFileName); } From fc5bb9a6917fe3b69ff882c7e7977abd675ac775 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Tue, 21 Jan 2025 15:50:33 +0100 Subject: [PATCH 069/104] SES-248 remove fileprovider param from updater call --- src/gui/updater/updater.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/updater/updater.cpp b/src/gui/updater/updater.cpp index 45bfe19847141..fb3f9a2660e53 100644 --- a/src/gui/updater/updater.cpp +++ b/src/gui/updater/updater.cpp @@ -60,9 +60,9 @@ QUrl Updater::updateUrl() if (SparkleUpdater::autoUpdaterAllowed()) { urlQuery.addQueryItem(QLatin1String("sparkle"), QLatin1String("true")); } -#ifdef BUILD_FILE_PROVIDER_MODULE - urlQuery.addQueryItem(QLatin1String("fileprovider"), QLatin1String("true")); -#endif +// #ifdef BUILD_FILE_PROVIDER_MODULE +// urlQuery.addQueryItem(QLatin1String("fileprovider"), QLatin1String("true")); +// #endif #endif #if defined(Q_OS_WIN) urlQuery.addQueryItem(QLatin1String("msi"), QLatin1String("true")); From 9c9c1c59065be5d23b5747f5671f996a6c713011 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Tue, 21 Jan 2025 15:51:29 +0100 Subject: [PATCH 070/104] SES-248 move sparkle sign up so it will be signed bevore integration into bundle --- admin/osx/ionos_macmaker/start.sh | 55 ++++++++++++++++--------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/admin/osx/ionos_macmaker/start.sh b/admin/osx/ionos_macmaker/start.sh index bcda940bb6c91..978a921c53138 100755 --- a/admin/osx/ionos_macmaker/start.sh +++ b/admin/osx/ionos_macmaker/start.sh @@ -1,5 +1,25 @@ #!/bin/bash +recursive_sign(){ + local path="$1" + local extension="${path##*.}" + if [[ "$extension" == "dylib" || "$extension" == "framework" || "$extension" == "appex" ]]; then + echo "Signing directory: $path" + codesign -s "$2" --force --preserve-metadata=entitlements --verbose=4 --deep --options=runtime --timestamp "${path}" + fi +} + +export -f recursive_sign + +sign_folder_content(){ + local folder="$1" + local identity="$2" + local entitlements="$3" + codesign -s "$identity" --force $entitlements --verbose=4 --deep --options=runtime --timestamp "${folder}" +} + +export -f sign_folder_content + # This script is used to build the Mac OS X version of the IONOS client. set -xe @@ -63,6 +83,13 @@ if [ "$CLEAN_REBUILD" == "true" ] && [ "$BUILD_UPDATER" == "true" ]; then mkdir -p $SPARKLE_DIR wget $SPARKLE_DOWNLOAD_URI -O $SPARKLE_DIR/Sparkle.tar.xz tar -xvf $SPARKLE_DIR/Sparkle.tar.xz -C $SPARKLE_DIR + + # Sign Sparkle + if [ -n "$CODE_SIGN_IDENTITY" ]; then + SPARKLE_FRAMEWORK_DIR=$SPARKLE_DIR/Sparkle.framework + find "$SPARKLE_FRAMEWORK_DIR/Resources/Autoupdate.app/Contents/MacOS" -mindepth 1 -print0 | xargs -0 -I {} bash -c 'sign_folder_content "$@" "$CODE_SIGN_IDENTITY"' _ {} "$CODE_SIGN_IDENTITY" + codesign -s "$CODE_SIGN_IDENTITY" --force --preserve-metadata=entitlements --verbose=4 --deep --options=runtime --timestamp "$SPARKLE_FRAMEWORK_DIR/Sparkle" + fi fi # Build the client @@ -72,7 +99,7 @@ cmake -S $REPO_ROOT_DIR/ -B $BUILD_DIR \ -DBUILD_TESTING=OFF \ -DBUILD_UPDATER=$(if [ $BUILD_UPDATER == true ]; then echo "ON"; else echo "OFF"; fi) \ -DMIRALL_VERSION_BUILD=`date +%Y%m%d` \ - -DMIRALL_VERSION_SUFFIX="" \ + -DMIRALL_VERSION_SUFFIX="release" \ -DBUILD_OWNCLOUD_OSX_BUNDLE=ON \ -DCMAKE_OSX_ARCHITECTURES=x86_64 \ -DBUILD_FILE_PROVIDER_MODULE=ON \ @@ -95,26 +122,6 @@ fi PRODUCT_PATH=$PRODUCT_DIR/$PRODUCT_NAME.app -recursive_sign(){ - local path="$1" - local extension="${path##*.}" - if [[ "$extension" == "dylib" || "$extension" == "framework" || "$extension" == "appex" ]]; then - echo "Signing directory: $path" - codesign -s "$2" --force --preserve-metadata=entitlements --verbose=4 --deep --options=runtime --timestamp "${path}" - fi -} - -export -f recursive_sign - -sign_folder_content(){ - local folder="$1" - local identity="$2" - local entitlements="$3" - codesign -s "$identity" --force $entitlements --verbose=4 --deep --options=runtime --timestamp "${folder}" -} - -export -f sign_folder_content - CLIENT_CONTENTS_DIR=$PRODUCT_PATH/Contents CLIENT_FRAMEWORKS_DIR=$CLIENT_CONTENTS_DIR/Frameworks CLIENT_PLUGINS_DIR=$CLIENT_CONTENTS_DIR/PlugIns @@ -126,12 +133,6 @@ find "$CLIENT_RESOURCES_DIR" -print0 | xargs -0 -I {} bash -c 'recursive_sign "$ codesign -s "$CODE_SIGN_IDENTITY" --force --preserve-metadata=entitlements --verbose=4 --deep --options=runtime --timestamp "$PRODUCT_PATH" -# Sign Sparkle -if [ $BUILD_UPDATER == true ]; then - SPARKLE_DIR=$CLIENT_FRAMEWORKS_DIR/Sparkle.framework - find "$SPARKLE_DIR/Resources/Autoupdate.app/Contents/MacOS" -mindepth 1 -print0 | xargs -0 -I {} bash -c 'sign_folder_content "$@" "$CODE_SIGN_IDENTITY"' _ {} "$CODE_SIGN_IDENTITY" - codesign -s "$CODE_SIGN_IDENTITY" --force --preserve-metadata=entitlements --verbose=4 --deep --options=runtime --timestamp "$SPARKLE_DIR/Sparkle" -fi # Sign the client find "$CLIENT_CONTENTS_DIR/MacOS" -mindepth 1 -print0 | xargs -0 -I {} bash -c 'sign_folder_content "$@" "$CODE_SIGN_IDENTITY" "$entitlements" ' _ {} "$CODE_SIGN_IDENTITY" "--preserve-metadata=entitlements" From eb29902ae8177c6ea6e2bf51eac65d104cbd9467 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Wed, 22 Jan 2025 15:51:56 +0100 Subject: [PATCH 071/104] SES-280 do not assign empty string to note when enabled this was done in 3cd6e826d113bbaa969a5bb176d811068b9370b2 and caused issues with the "note to recipient" --- src/gui/filedetails/sharemodel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/filedetails/sharemodel.cpp b/src/gui/filedetails/sharemodel.cpp index 82e7dffa5bcbd..75f8ed7be27b3 100644 --- a/src/gui/filedetails/sharemodel.cpp +++ b/src/gui/filedetails/sharemodel.cpp @@ -989,7 +989,7 @@ void ShareModel::toggleShareNoteToRecipient(const SharePtr &share, const bool en return; } - const QString note = QString(); + const QString note = enable ? tr(" ") : QString(); if (const auto linkShare = share.objectCast()) { linkShare->setNote(note); } else if (const auto userGroupShare = share.objectCast()) { From 2bbe84cd00421996e34fc8b156fd88b2a1ca2af0 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Fri, 24 Jan 2025 14:48:46 +0100 Subject: [PATCH 072/104] SES-282 remove External Storage checkbox from Setup Page --- src/gui/wizard/owncloudadvancedsetuppage.cpp | 44 ++++++++++---------- src/gui/wizard/owncloudadvancedsetuppage.ui | 8 ++-- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/gui/wizard/owncloudadvancedsetuppage.cpp b/src/gui/wizard/owncloudadvancedsetuppage.cpp index 9dc987fd0d462..a4b89c637d950 100644 --- a/src/gui/wizard/owncloudadvancedsetuppage.cpp +++ b/src/gui/wizard/owncloudadvancedsetuppage.cpp @@ -101,7 +101,7 @@ OwncloudAdvancedSetupPage::OwncloudAdvancedSetupPage(OwncloudWizard *wizard) _ui.lServerIcon->setPixmap(appIcon.pixmap(appIconSize)); if (theme->wizardHideExternalStorageConfirmationCheckbox()) { - _ui.confCheckBoxExternal->hide(); + //_ui.confCheckBoxExternal->hide(); } if (theme->wizardHideFolderSizeLimitCheckbox()) { _ui.confCheckBoxSize->hide(); @@ -196,7 +196,7 @@ void OwncloudAdvancedSetupPage::initializePage() auto newFolderLimit = cfgFile.newBigFolderSizeLimit(); _ui.confCheckBoxSize->setChecked(newFolderLimit.first); _ui.confSpinBox->setValue(newFolderLimit.second); - _ui.confCheckBoxExternal->setChecked(cfgFile.confirmExternalStorage()); + //_ui.confCheckBoxExternal->setChecked(cfgFile.confirmExternalStorage()); SetAvatarIcon(); setUserInformation(); @@ -425,7 +425,7 @@ bool OwncloudAdvancedSetupPage::validatePage() ConfigFile cfgFile; cfgFile.setNewBigFolderSizeLimit(_ui.confCheckBoxSize->isChecked(), _ui.confCheckBoxSize->isChecked() ? _ui.confSpinBox->value() : -1); - cfgFile.setConfirmExternalStorage(_ui.confCheckBoxExternal->isChecked()); + //cfgFile.setConfirmExternalStorage(_ui.confCheckBoxExternal->isChecked()); } else { @@ -511,12 +511,12 @@ void OwncloudAdvancedSetupPage::slotSelectiveSyncClicked() if (result == QDialog::Accepted) { _selectiveSyncBlacklist = dlg->createBlackList(); updateBlacklist = true; - _ui.confCheckBoxExternal->setStyleSheet(IonosTheme::fontConfigurationCss( - IonosTheme::settingsFont(), - IonosTheme::settingsTextSize(), - IonosTheme::settingsTextWeight(), - IonosTheme::loginWizardFontLightGrey() - )); + // _ui.confCheckBoxExternal->setStyleSheet(IonosTheme::fontConfigurationCss( + // IonosTheme::settingsFont(), + // IonosTheme::settingsTextSize(), + // IonosTheme::settingsTextWeight(), + // IonosTheme::loginWizardFontLightGrey() + // )); _ui.confCheckBoxSize->setDisabled(true); } else if (result == QDialog::Rejected && _selectiveSyncBlacklist == QStringList("/")) { @@ -560,12 +560,12 @@ void OwncloudAdvancedSetupPage::slotVirtualFileSyncClicked() }); } - _ui.confCheckBoxExternal->setStyleSheet(IonosTheme::fontConfigurationCss( - IonosTheme::settingsFont(), - IonosTheme::settingsTextSize(), - IonosTheme::settingsTextWeight(), - IonosTheme::loginWizardFontLightGrey() - )); + // _ui.confCheckBoxExternal->setStyleSheet(IonosTheme::fontConfigurationCss( + // IonosTheme::settingsFont(), + // IonosTheme::settingsTextSize(), + // IonosTheme::settingsTextWeight(), + // IonosTheme::loginWizardFontLightGrey() + // )); _ui.confCheckBoxSize->setDisabled(true); } @@ -579,12 +579,12 @@ void OwncloudAdvancedSetupPage::slotSyncEverythingClicked() QString errorStr = checkLocalSpace(_rSize); setErrorString(errorStr); - _ui.confCheckBoxExternal->setStyleSheet(IonosTheme::fontConfigurationCss( - IonosTheme::settingsFont(), - IonosTheme::settingsTextSize(), - IonosTheme::settingsTextWeight(), - IonosTheme::titleColor() - )); + // _ui.confCheckBoxExternal->setStyleSheet(IonosTheme::fontConfigurationCss( + // IonosTheme::settingsFont(), + // IonosTheme::settingsTextSize(), + // IonosTheme::settingsTextWeight(), + // IonosTheme::titleColor() + // )); } @@ -633,7 +633,7 @@ void OwncloudAdvancedSetupPage::customizeStyle() _ui.mainHBox->setContentsMargins(0, 0, 0, 0); _ui.wSyncStrategySynchronizeEverything->setContentsMargins(0, 0, 0, 0); _ui.lVirtualFileSync->setContentsMargins(0, 0, 0, 0); - _ui.horizontalLayout_8->setContentsMargins(32, 0, 0, 0); + //_ui.horizontalLayout_8->setContentsMargins(32, 0, 0, 0); _ui.horizontalLayout_10->setContentsMargins(0, 8, 0, 0); _ui.horizontalLayout_10->setMargin(1); diff --git a/src/gui/wizard/owncloudadvancedsetuppage.ui b/src/gui/wizard/owncloudadvancedsetuppage.ui index dc9eedfad6610..dcc7567201a4b 100644 --- a/src/gui/wizard/owncloudadvancedsetuppage.ui +++ b/src/gui/wizard/owncloudadvancedsetuppage.ui @@ -480,7 +480,7 @@ - + @@ -801,7 +801,7 @@ - +
      From 4262024d1b2f1e951bfe6187e367818c8628339c Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Mon, 27 Jan 2025 14:53:54 +0100 Subject: [PATCH 073/104] SES-282 add link to issue for commented out code --- src/gui/wizard/owncloudadvancedsetuppage.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/gui/wizard/owncloudadvancedsetuppage.cpp b/src/gui/wizard/owncloudadvancedsetuppage.cpp index a4b89c637d950..6e6ca6d1f95e4 100644 --- a/src/gui/wizard/owncloudadvancedsetuppage.cpp +++ b/src/gui/wizard/owncloudadvancedsetuppage.cpp @@ -101,7 +101,7 @@ OwncloudAdvancedSetupPage::OwncloudAdvancedSetupPage(OwncloudWizard *wizard) _ui.lServerIcon->setPixmap(appIcon.pixmap(appIconSize)); if (theme->wizardHideExternalStorageConfirmationCheckbox()) { - //_ui.confCheckBoxExternal->hide(); + //_ui.confCheckBoxExternal->hide(); // commented out for https://bmjira.atlassian.net/browse/SES-282 } if (theme->wizardHideFolderSizeLimitCheckbox()) { _ui.confCheckBoxSize->hide(); @@ -196,7 +196,7 @@ void OwncloudAdvancedSetupPage::initializePage() auto newFolderLimit = cfgFile.newBigFolderSizeLimit(); _ui.confCheckBoxSize->setChecked(newFolderLimit.first); _ui.confSpinBox->setValue(newFolderLimit.second); - //_ui.confCheckBoxExternal->setChecked(cfgFile.confirmExternalStorage()); + //_ui.confCheckBoxExternal->setChecked(cfgFile.confirmExternalStorage()); // commented out for https://bmjira.atlassian.net/browse/SES-282 SetAvatarIcon(); setUserInformation(); @@ -425,7 +425,7 @@ bool OwncloudAdvancedSetupPage::validatePage() ConfigFile cfgFile; cfgFile.setNewBigFolderSizeLimit(_ui.confCheckBoxSize->isChecked(), _ui.confCheckBoxSize->isChecked() ? _ui.confSpinBox->value() : -1); - //cfgFile.setConfirmExternalStorage(_ui.confCheckBoxExternal->isChecked()); + //cfgFile.setConfirmExternalStorage(_ui.confCheckBoxExternal->isChecked()); // commented out for https://bmjira.atlassian.net/browse/SES-282 } else { @@ -511,6 +511,7 @@ void OwncloudAdvancedSetupPage::slotSelectiveSyncClicked() if (result == QDialog::Accepted) { _selectiveSyncBlacklist = dlg->createBlackList(); updateBlacklist = true; + // commented out for https://bmjira.atlassian.net/browse/SES-282 // _ui.confCheckBoxExternal->setStyleSheet(IonosTheme::fontConfigurationCss( // IonosTheme::settingsFont(), // IonosTheme::settingsTextSize(), @@ -559,7 +560,7 @@ void OwncloudAdvancedSetupPage::slotVirtualFileSyncClicked() setRadioChecked(_ui.rVirtualFileSync); }); } - +// commented out for https://bmjira.atlassian.net/browse/SES-282 // _ui.confCheckBoxExternal->setStyleSheet(IonosTheme::fontConfigurationCss( // IonosTheme::settingsFont(), // IonosTheme::settingsTextSize(), @@ -579,6 +580,7 @@ void OwncloudAdvancedSetupPage::slotSyncEverythingClicked() QString errorStr = checkLocalSpace(_rSize); setErrorString(errorStr); +// commented out for https://bmjira.atlassian.net/browse/SES-282 // _ui.confCheckBoxExternal->setStyleSheet(IonosTheme::fontConfigurationCss( // IonosTheme::settingsFont(), // IonosTheme::settingsTextSize(), @@ -633,7 +635,7 @@ void OwncloudAdvancedSetupPage::customizeStyle() _ui.mainHBox->setContentsMargins(0, 0, 0, 0); _ui.wSyncStrategySynchronizeEverything->setContentsMargins(0, 0, 0, 0); _ui.lVirtualFileSync->setContentsMargins(0, 0, 0, 0); - //_ui.horizontalLayout_8->setContentsMargins(32, 0, 0, 0); + //_ui.horizontalLayout_8->setContentsMargins(32, 0, 0, 0); // commented out for https://bmjira.atlassian.net/browse/SES-282 _ui.horizontalLayout_10->setContentsMargins(0, 8, 0, 0); _ui.horizontalLayout_10->setMargin(1); From a2048202bee624a25c88b5cc07a268fd7d55f777 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Tue, 28 Jan 2025 13:55:28 +0100 Subject: [PATCH 074/104] SES-284 add icon for macOS Finder Sidebar --- theme/black/hidrivenext-macOS-sidebar.svg | 10 ++++++++++ theme/colored/hidrivenext-macOS-sidebar.svg | 10 ++++++++++ theme/white/hidrivenext-macOS-sidebar.svg | 10 ++++++++++ 3 files changed, 30 insertions(+) create mode 100644 theme/black/hidrivenext-macOS-sidebar.svg create mode 100644 theme/colored/hidrivenext-macOS-sidebar.svg create mode 100644 theme/white/hidrivenext-macOS-sidebar.svg diff --git a/theme/black/hidrivenext-macOS-sidebar.svg b/theme/black/hidrivenext-macOS-sidebar.svg new file mode 100644 index 0000000000000..4bb3ad7670764 --- /dev/null +++ b/theme/black/hidrivenext-macOS-sidebar.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/colored/hidrivenext-macOS-sidebar.svg b/theme/colored/hidrivenext-macOS-sidebar.svg new file mode 100644 index 0000000000000..4bb3ad7670764 --- /dev/null +++ b/theme/colored/hidrivenext-macOS-sidebar.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theme/white/hidrivenext-macOS-sidebar.svg b/theme/white/hidrivenext-macOS-sidebar.svg new file mode 100644 index 0000000000000..4bb3ad7670764 --- /dev/null +++ b/theme/white/hidrivenext-macOS-sidebar.svg @@ -0,0 +1,10 @@ + + + + + + + + + + From 4a955333ee14d83f991ac664690a308ee010dc05 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Tue, 28 Jan 2025 13:56:26 +0100 Subject: [PATCH 075/104] SES-284 add flag to cmake command to use custom sidebar icon on macOS --- admin/osx/ionos_macmaker/start.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/admin/osx/ionos_macmaker/start.sh b/admin/osx/ionos_macmaker/start.sh index 978a921c53138..8874a882d7f42 100755 --- a/admin/osx/ionos_macmaker/start.sh +++ b/admin/osx/ionos_macmaker/start.sh @@ -106,6 +106,7 @@ cmake -S $REPO_ROOT_DIR/ -B $BUILD_DIR \ -DCMAKE_PREFIX_PATH=$CRAFT_DIR \ -DSPARKLE_LIBRARY=$SPARKLE_DIR/Sparkle.framework \ -DSOCKETAPI_TEAM_IDENTIFIER_PREFIX="$TEAM_IDENTIFIER." \ + -DARG_SIDEBAR_ICONS=ON \ make install -C $BUILD_DIR -j4 From a9a59e5e136a3a8d689143a9d1ea1565b187d841 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Wed, 29 Jan 2025 11:57:48 +0100 Subject: [PATCH 076/104] SES-290 set release suffix to stable --- admin/osx/ionos_macmaker/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/osx/ionos_macmaker/start.sh b/admin/osx/ionos_macmaker/start.sh index 8874a882d7f42..18cd34c916ccf 100755 --- a/admin/osx/ionos_macmaker/start.sh +++ b/admin/osx/ionos_macmaker/start.sh @@ -99,7 +99,7 @@ cmake -S $REPO_ROOT_DIR/ -B $BUILD_DIR \ -DBUILD_TESTING=OFF \ -DBUILD_UPDATER=$(if [ $BUILD_UPDATER == true ]; then echo "ON"; else echo "OFF"; fi) \ -DMIRALL_VERSION_BUILD=`date +%Y%m%d` \ - -DMIRALL_VERSION_SUFFIX="release" \ + -DMIRALL_VERSION_SUFFIX="stable" \ -DBUILD_OWNCLOUD_OSX_BUNDLE=ON \ -DCMAKE_OSX_ARCHITECTURES=x86_64 \ -DBUILD_FILE_PROVIDER_MODULE=ON \ From 3e2c0b9b000865c51fb8d6777cd525c475945669 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Wed, 29 Jan 2025 12:11:47 +0100 Subject: [PATCH 077/104] SES-290 reset sparkle key back to the one from nextcloud --- cmake/modules/MacOSXBundleInfo.plist.in | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmake/modules/MacOSXBundleInfo.plist.in b/cmake/modules/MacOSXBundleInfo.plist.in index ba9916d942c22..8327c22976671 100644 --- a/cmake/modules/MacOSXBundleInfo.plist.in +++ b/cmake/modules/MacOSXBundleInfo.plist.in @@ -36,8 +36,10 @@ SUShowReleaseNotes + SUPublicDSAKeyFile + dsa_pub.pem SUPublicEDKey - FQ8Dq6AiSDDv4XpnyJ3b6mQBFYLPKgj9ziEg/+VNGHg= + c3RcfDWDayvsYSZW8FhZN1UOJhvPVN30zleb4zOqbtU= UTExportedTypeDeclarations From 5a7547a94c33e31ba80af970e15c1bed84c9a7d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 4 Feb 2025 14:48:20 +0100 Subject: [PATCH 078/104] SES-307 Hide FileDrop Checkbox --- src/gui/filedetails/ShareDetailsPage.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/filedetails/ShareDetailsPage.qml b/src/gui/filedetails/ShareDetailsPage.qml index 9a936b1e4d542..539f0ca207588 100644 --- a/src/gui/filedetails/ShareDetailsPage.qml +++ b/src/gui/filedetails/ShareDetailsPage.qml @@ -723,7 +723,7 @@ Page { spacing: scrollContentsColumn.indicatorSpacing padding: scrollContentsColumn.itemPadding onClicked: root.permissionModeChanged(permissionMode) - visible: customPermissionsCheckBox.checked + visible: customPermissionsCheckBox.checked & false // Removed SES-307 font.pixelSize: pixelSize font.weight: fontWeight } From 895faf9d850f0d7eb8369f3cc57b700521ced21e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Thu, 6 Feb 2025 14:21:40 +0100 Subject: [PATCH 079/104] SES-289 Modifed Q_LOGGING_CATEGORY --- src/common/checksumcalculator.cpp | 2 +- src/common/checksums.cpp | 2 +- src/common/filesystembase.cpp | 2 +- src/common/ownsql.cpp | 2 +- src/common/remotepermissions.cpp | 2 +- src/common/shellextensionutils.cpp | 2 +- src/common/syncjournaldb.cpp | 2 +- src/common/utility.cpp | 2 +- src/csync/vio/csync_vio_local_unix.cpp | 2 +- src/csync/vio/csync_vio_local_win.cpp | 2 +- src/gui/accountmanager.cpp | 2 +- src/gui/accountsettings.cpp | 2 +- src/gui/accountsetupcommandlinemanager.cpp | 2 +- src/gui/accountsetupfromcommandlinejob.cpp | 2 +- src/gui/accountstate.cpp | 2 +- src/gui/application.cpp | 2 +- src/gui/callstatechecker.cpp | 2 +- src/gui/caseclashfilenamedialog.cpp | 2 +- src/gui/conflictsolver.cpp | 2 +- src/gui/connectionvalidator.cpp | 2 +- src/gui/creds/credentialsfactory.cpp | 2 +- src/gui/creds/flow2auth.cpp | 2 +- src/gui/creds/httpcredentialsgui.cpp | 2 +- src/gui/creds/webflowcredentials.cpp | 2 +- src/gui/editlocallyjob.cpp | 2 +- src/gui/editlocallymanager.cpp | 2 +- src/gui/fileactivitylistmodel.cpp | 2 +- src/gui/filedetails/filedetails.cpp | 2 +- src/gui/filetagmodel.cpp | 2 +- src/gui/folder.cpp | 2 +- src/gui/foldercreationdialog.cpp | 2 +- src/gui/folderman.cpp | 2 +- src/gui/folderstatusmodel.cpp | 2 +- src/gui/folderwatcher.cpp | 2 +- src/gui/ga4/ganalytics_worker.cpp | 2 +- src/gui/guiutility.cpp | 2 +- src/gui/iconutils.cpp | 2 +- src/gui/lockwatcher.cpp | 2 +- src/gui/macOS/fileprovider_mac.mm | 2 +- .../macOS/fileproviderdomainmanager_mac.mm | 2 +- .../macOS/fileproviderdomainsyncstatus_mac.mm | 2 +- src/gui/macOS/fileprovideritemmetadata_mac.mm | 2 +- .../fileprovidermaterialiseditemsmodel_mac.mm | 2 +- .../fileprovidersettingscontroller_mac.mm | 2 +- .../macOS/fileprovidersocketcontroller.cpp | 2 +- src/gui/macOS/fileprovidersocketserver.cpp | 2 +- src/gui/macOS/fileproviderutils_mac.mm | 2 +- src/gui/macOS/fileproviderxpc_mac.mm | 2 +- src/gui/macOS/fileproviderxpc_mac_utils.mm | 2 +- src/gui/navigationpanehelper.cpp | 2 +- src/gui/notificationconfirmjob.cpp | 2 +- src/gui/ocsjob.cpp | 2 +- src/gui/proxyauthhandler.cpp | 2 +- src/gui/remotewipe.cpp | 2 +- src/gui/sharee.cpp | 2 +- src/gui/sharemanager.cpp | 2 +- src/gui/shellextensionsserver.cpp | 2 +- src/gui/socketapi/socketapi.cpp | 4 ++-- src/gui/sslbutton.cpp | 2 +- src/gui/sslerrordialog.cpp | 2 +- src/gui/syncconflictsmodel.cpp | 2 +- src/gui/systray.cpp | 2 +- src/gui/systray_mac_common.mm | 2 +- src/gui/systray_mac_usernotifications.mm | 2 +- src/gui/tray/activitylistmodel.cpp | 2 +- src/gui/tray/notificationhandler.cpp | 2 +- src/gui/tray/svgimageprovider.cpp | 2 +- src/gui/tray/syncstatussummary.cpp | 2 +- src/gui/tray/talkreply.cpp | 2 +- .../tray/unifiedsearchresultslistmodel.cpp | 2 +- src/gui/updater/updater.cpp | 2 +- src/gui/userstatusselectormodel.cpp | 2 +- src/gui/wizard/flow2authwidget.cpp | 2 +- src/gui/wizard/owncloudwizard.cpp | 2 +- src/gui/wizard/webview.cpp | 2 +- src/gui/wizard/webviewpage.cpp | 2 +- src/libsync/abstractnetworkjob.cpp | 2 +- src/libsync/accessmanager.cpp | 2 +- src/libsync/account.cpp | 2 +- src/libsync/bandwidthmanager.cpp | 2 +- .../basepropagateremotedeleteencrypted.cpp | 2 +- src/libsync/bulkpropagatorjob.cpp | 2 +- src/libsync/capabilities.cpp | 2 +- src/libsync/caseclashconflictsolver.cpp | 2 +- src/libsync/clientproxy.cpp | 2 +- src/libsync/clientsideencryption.cpp | 4 ++-- src/libsync/clientsideencryptionjobs.cpp | 6 ++--- src/libsync/clientstatusreporting.cpp | 2 +- src/libsync/clientstatusreportingcommon.cpp | 2 +- src/libsync/clientstatusreportingdatabase.cpp | 2 +- src/libsync/clientstatusreportingnetwork.cpp | 2 +- src/libsync/configfile.cpp | 2 +- src/libsync/cookiejar.cpp | 2 +- src/libsync/creds/abstractcredentials.cpp | 2 +- src/libsync/creds/httpcredentials.cpp | 2 +- src/libsync/creds/keychainchunk.cpp | 2 +- src/libsync/creds/tokencredentials.cpp | 2 +- src/libsync/deletejob.cpp | 2 +- src/libsync/discovery.cpp | 2 +- src/libsync/discoveryphase.cpp | 2 +- .../encryptedfoldermetadatahandler.cpp | 2 +- src/libsync/encryptfolderjob.cpp | 2 +- src/libsync/foldermetadata.cpp | 2 +- src/libsync/lockfilejobs.cpp | 2 +- src/libsync/networkjobs.cpp | 24 +++++++++---------- src/libsync/ocsprofileconnector.cpp | 2 +- src/libsync/ocsuserstatusconnector.cpp | 2 +- src/libsync/owncloudpropagator.cpp | 8 +++---- src/libsync/propagatedownload.cpp | 4 ++-- src/libsync/propagatedownloadencrypted.cpp | 2 +- src/libsync/propagateremotedelete.cpp | 2 +- .../propagateremotedeleteencrypted.cpp | 2 +- ...opagateremotedeleteencryptedrootfolder.cpp | 2 +- src/libsync/propagateremotemkdir.cpp | 2 +- src/libsync/propagateremotemove.cpp | 4 ++-- src/libsync/propagateupload.cpp | 10 ++++---- src/libsync/propagateuploadencrypted.cpp | 2 +- src/libsync/propagatorjobs.cpp | 6 ++--- src/libsync/pushnotifications.cpp | 2 +- src/libsync/putmultifilejob.cpp | 2 +- src/libsync/syncengine.cpp | 2 +- src/libsync/syncfileitem.cpp | 2 +- src/libsync/syncfilestatustracker.cpp | 2 +- src/libsync/updatee2eefoldermetadatajob.cpp | 2 +- .../updatee2eefolderusersmetadatajob.cpp | 2 +- src/libsync/updatemigratede2eemetadatajob.cpp | 2 +- src/libsync/vfs/cfapi/cfapiwrapper.cpp | 2 +- src/libsync/vfs/cfapi/hydrationjob.cpp | 2 +- src/libsync/vfs/cfapi/vfs_cfapi.cpp | 2 +- src/libsync/vfs/suffix/vfs_suffix.cpp | 2 +- src/libsync/vfs/xattr/vfs_xattr.cpp | 2 +- src/libsync/vfs/xattr/xattrwrapper_linux.cpp | 2 +- test/endtoendtestutils.cpp | 2 +- test/pushnotificationstestutils.cpp | 2 +- 134 files changed, 160 insertions(+), 160 deletions(-) diff --git a/src/common/checksumcalculator.cpp b/src/common/checksumcalculator.cpp index ec9faa2de8c5a..410097d7ea095 100644 --- a/src/common/checksumcalculator.cpp +++ b/src/common/checksumcalculator.cpp @@ -26,7 +26,7 @@ constexpr qint64 bufSize = 500 * 1024; namespace OCC { -Q_LOGGING_CATEGORY(lcChecksumCalculator, "nextcloud.common.checksumcalculator", QtInfoMsg) +Q_LOGGING_CATEGORY(lcChecksumCalculator, "hidrivenext.common.checksumcalculator", QtInfoMsg) static QCryptographicHash::Algorithm algorithmTypeToQCryptoHashAlgorithm(ChecksumCalculator::AlgorithmType algorithmType) { diff --git a/src/common/checksums.cpp b/src/common/checksums.cpp index 5787f2d26dd09..37f54738325ba 100644 --- a/src/common/checksums.cpp +++ b/src/common/checksums.cpp @@ -87,7 +87,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcChecksums, "nextcloud.sync.checksums", QtInfoMsg) +Q_LOGGING_CATEGORY(lcChecksums, "hidrivenext.sync.checksums", QtInfoMsg) #define BUFSIZE qint64(500 * 1024) // 500 KiB diff --git a/src/common/filesystembase.cpp b/src/common/filesystembase.cpp index ef9ba1efd6778..c7c87fafb88ce 100644 --- a/src/common/filesystembase.cpp +++ b/src/common/filesystembase.cpp @@ -39,7 +39,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcFileSystem, "nextcloud.sync.filesystem", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFileSystem, "hidrivenext.sync.filesystem", QtInfoMsg) QString FileSystem::longWinPath(const QString &inpath) { diff --git a/src/common/ownsql.cpp b/src/common/ownsql.cpp index 7b4fbd225dcfc..f0e937b4ac58d 100644 --- a/src/common/ownsql.cpp +++ b/src/common/ownsql.cpp @@ -41,7 +41,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcSql, "nextcloud.sync.database.sql", QtInfoMsg) +Q_LOGGING_CATEGORY(lcSql, "hidrivenext.sync.database.sql", QtInfoMsg) SqlDatabase::SqlDatabase() = default; diff --git a/src/common/remotepermissions.cpp b/src/common/remotepermissions.cpp index c1e6ebcd7d691..57570ca56dfbc 100644 --- a/src/common/remotepermissions.cpp +++ b/src/common/remotepermissions.cpp @@ -24,7 +24,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcRemotePermissions, "nextcloud.sync.remotepermissions", QtInfoMsg) +Q_LOGGING_CATEGORY(lcRemotePermissions, "hidrivenext.sync.remotepermissions", QtInfoMsg) static const char letters[] = " WDNVCKRSMm"; diff --git a/src/common/shellextensionutils.cpp b/src/common/shellextensionutils.cpp index b2b59be80f663..ce25508c697df 100644 --- a/src/common/shellextensionutils.cpp +++ b/src/common/shellextensionutils.cpp @@ -4,7 +4,7 @@ namespace VfsShellExtensions { -Q_LOGGING_CATEGORY(lcShellExtensionUtils, "nextcloud.gui.shellextensionutils", QtInfoMsg) +Q_LOGGING_CATEGORY(lcShellExtensionUtils, "hidrivenext.gui.shellextensionutils", QtInfoMsg) QString VfsShellExtensions::serverNameForApplicationName(const QString &applicationName) { diff --git a/src/common/syncjournaldb.cpp b/src/common/syncjournaldb.cpp index bbdf63346bab7..f534438a8c3cd 100644 --- a/src/common/syncjournaldb.cpp +++ b/src/common/syncjournaldb.cpp @@ -44,7 +44,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcDb, "nextcloud.sync.database", QtInfoMsg) +Q_LOGGING_CATEGORY(lcDb, "hidrivenext.sync.database", QtInfoMsg) #define GET_FILE_RECORD_QUERY \ "SELECT path, inode, modtime, type, md5, fileid, remotePerm, filesize," \ diff --git a/src/common/utility.cpp b/src/common/utility.cpp index b95d40db24ed3..782700c7bc893 100644 --- a/src/common/utility.cpp +++ b/src/common/utility.cpp @@ -59,7 +59,7 @@ constexpr qint64 terabytes = bytes * gigabytes; namespace OCC { -Q_LOGGING_CATEGORY(lcUtility, "nextcloud.sync.utility", QtInfoMsg) +Q_LOGGING_CATEGORY(lcUtility, "hidrivenext.sync.utility", QtInfoMsg) bool Utility::writeRandomFile(const QString &fname, int size) { diff --git a/src/csync/vio/csync_vio_local_unix.cpp b/src/csync/vio/csync_vio_local_unix.cpp index c5e22abb3c8b0..afd2e52dd781d 100644 --- a/src/csync/vio/csync_vio_local_unix.cpp +++ b/src/csync/vio/csync_vio_local_unix.cpp @@ -38,7 +38,7 @@ #include #include -Q_LOGGING_CATEGORY(lcCSyncVIOLocal, "nextcloud.sync.csync.vio_local", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCSyncVIOLocal, "hidrivenext.sync.csync.vio_local", QtInfoMsg) /* * directory functions diff --git a/src/csync/vio/csync_vio_local_win.cpp b/src/csync/vio/csync_vio_local_win.cpp index d0dec638a4791..df7a6532355ed 100644 --- a/src/csync/vio/csync_vio_local_win.cpp +++ b/src/csync/vio/csync_vio_local_win.cpp @@ -40,7 +40,7 @@ #include "common/vfs.h" -Q_LOGGING_CATEGORY(lcCSyncVIOLocal, "nextcloud.sync.csync.vio_local", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCSyncVIOLocal, "hidrivenext.sync.csync.vio_local", QtInfoMsg) /* * directory functions diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp index 8a2f3bb38f696..7ee0e7362e4d2 100644 --- a/src/gui/accountmanager.cpp +++ b/src/gui/accountmanager.cpp @@ -66,7 +66,7 @@ constexpr auto maxAccountVersion = 1; namespace OCC { -Q_LOGGING_CATEGORY(lcAccountManager, "nextcloud.gui.account.manager", QtInfoMsg) +Q_LOGGING_CATEGORY(lcAccountManager, "hidrivenext.gui.account.manager", QtInfoMsg) AccountManager *AccountManager::instance() { diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index 22cebfb1b376d..657946aabe751 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -83,7 +83,7 @@ namespace OCC class AccountSettings; -Q_LOGGING_CATEGORY(lcAccountSettings, "nextcloud.gui.account.settings", QtInfoMsg) +Q_LOGGING_CATEGORY(lcAccountSettings, "hidrivenext.gui.account.settings", QtInfoMsg) const QString progressBarStyle() { diff --git a/src/gui/accountsetupcommandlinemanager.cpp b/src/gui/accountsetupcommandlinemanager.cpp index 94388b7ea5f17..3a702bf6a08db 100644 --- a/src/gui/accountsetupcommandlinemanager.cpp +++ b/src/gui/accountsetupcommandlinemanager.cpp @@ -17,7 +17,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcAccountSetupCommandLineManager, "nextcloud.gui.accountsetupcommandlinemanager", QtInfoMsg) +Q_LOGGING_CATEGORY(lcAccountSetupCommandLineManager, "hidrivenext.gui.accountsetupcommandlinemanager", QtInfoMsg) AccountSetupCommandLineManager *AccountSetupCommandLineManager::_instance = nullptr; diff --git a/src/gui/accountsetupfromcommandlinejob.cpp b/src/gui/accountsetupfromcommandlinejob.cpp index eeff0cfb00a31..6163b2b07254e 100644 --- a/src/gui/accountsetupfromcommandlinejob.cpp +++ b/src/gui/accountsetupfromcommandlinejob.cpp @@ -29,7 +29,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcAccountSetupCommandLineJob, "nextcloud.gui.accountsetupcommandlinejob", QtInfoMsg) +Q_LOGGING_CATEGORY(lcAccountSetupCommandLineJob, "hidrivenext.gui.accountsetupcommandlinejob", QtInfoMsg) AccountSetupFromCommandLineJob::AccountSetupFromCommandLineJob(QString appPassword, QString userId, diff --git a/src/gui/accountstate.cpp b/src/gui/accountstate.cpp index fc18efbd09230..a3de1a8d09b03 100644 --- a/src/gui/accountstate.cpp +++ b/src/gui/accountstate.cpp @@ -37,7 +37,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcAccountState, "nextcloud.gui.account.state", QtInfoMsg) +Q_LOGGING_CATEGORY(lcAccountState, "hidrivenext.gui.account.state", QtInfoMsg) AccountState::AccountState(const AccountPtr &account) : QObject() diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 47dfca96c3e6a..ab5c7fc9115a2 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -73,7 +73,7 @@ class QSocket; namespace OCC { -Q_LOGGING_CATEGORY(lcApplication, "nextcloud.gui.application", QtInfoMsg) +Q_LOGGING_CATEGORY(lcApplication, "hidrivenext.gui.application", QtInfoMsg) namespace { diff --git a/src/gui/callstatechecker.cpp b/src/gui/callstatechecker.cpp index 242c5b0aba15b..875bf98033803 100644 --- a/src/gui/callstatechecker.cpp +++ b/src/gui/callstatechecker.cpp @@ -21,7 +21,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcCallStateChecker, "nextcloud.gui.callstatechecker", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCallStateChecker, "hidrivenext.gui.callstatechecker", QtInfoMsg) constexpr int successStatusCode = 200; diff --git a/src/gui/caseclashfilenamedialog.cpp b/src/gui/caseclashfilenamedialog.cpp index 553eaccf0432a..423902ee8366e 100644 --- a/src/gui/caseclashfilenamedialog.cpp +++ b/src/gui/caseclashfilenamedialog.cpp @@ -67,7 +67,7 @@ QString caseClashIllegalCharacterListToString(const QVector &illegalChara namespace OCC { -Q_LOGGING_CATEGORY(lcCaseClashConflictFialog, "nextcloud.sync.caseclash.dialog", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCaseClashConflictFialog, "hidrivenext.sync.caseclash.dialog", QtInfoMsg) CaseClashFilenameDialog::CaseClashFilenameDialog(AccountPtr account, Folder *folder, diff --git a/src/gui/conflictsolver.cpp b/src/gui/conflictsolver.cpp index 6a1de573c1e73..ed0ffd714dee4 100644 --- a/src/gui/conflictsolver.cpp +++ b/src/gui/conflictsolver.cpp @@ -22,7 +22,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcConflict, "nextcloud.gui.conflictsolver", QtInfoMsg) +Q_LOGGING_CATEGORY(lcConflict, "hidrivenext.gui.conflictsolver", QtInfoMsg) ConflictSolver::ConflictSolver(QWidget *parent) : QObject(parent) diff --git a/src/gui/connectionvalidator.cpp b/src/gui/connectionvalidator.cpp index 9cc24de4a7521..1a9610730d097 100644 --- a/src/gui/connectionvalidator.cpp +++ b/src/gui/connectionvalidator.cpp @@ -31,7 +31,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcConnectionValidator, "nextcloud.sync.connectionvalidator", QtInfoMsg) +Q_LOGGING_CATEGORY(lcConnectionValidator, "hidrivenext.sync.connectionvalidator", QtInfoMsg) // Make sure the timeout for this job is less than how often we get called // This makes sure we get tried often enough without "ConnectionValidator already running" diff --git a/src/gui/creds/credentialsfactory.cpp b/src/gui/creds/credentialsfactory.cpp index 894eaeee6a92f..2925e5a3ade75 100644 --- a/src/gui/creds/credentialsfactory.cpp +++ b/src/gui/creds/credentialsfactory.cpp @@ -22,7 +22,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcGuiCredentials, "nextcloud.gui.credentials", QtInfoMsg) +Q_LOGGING_CATEGORY(lcGuiCredentials, "hidrivenext.gui.credentials", QtInfoMsg) namespace CredentialsFactory { diff --git a/src/gui/creds/flow2auth.cpp b/src/gui/creds/flow2auth.cpp index f90873dbc6793..80817da4039be 100644 --- a/src/gui/creds/flow2auth.cpp +++ b/src/gui/creds/flow2auth.cpp @@ -29,7 +29,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcFlow2auth, "nextcloud.sync.credentials.flow2auth", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFlow2auth, "hidrivenext.sync.credentials.flow2auth", QtInfoMsg) Flow2Auth::Flow2Auth(Account *account, QObject *parent) diff --git a/src/gui/creds/httpcredentialsgui.cpp b/src/gui/creds/httpcredentialsgui.cpp index 4e1d8ef1e630e..ee04f787dc23f 100644 --- a/src/gui/creds/httpcredentialsgui.cpp +++ b/src/gui/creds/httpcredentialsgui.cpp @@ -30,7 +30,7 @@ using namespace QKeychain; namespace OCC { -Q_LOGGING_CATEGORY(lcHttpCredentialsGui, "nextcloud.sync.credentials.http.gui", QtInfoMsg) +Q_LOGGING_CATEGORY(lcHttpCredentialsGui, "hidrivenext.sync.credentials.http.gui", QtInfoMsg) void HttpCredentialsGui::askFromUser() { diff --git a/src/gui/creds/webflowcredentials.cpp b/src/gui/creds/webflowcredentials.cpp index a388fd86838d5..6d168f3cfbd05 100644 --- a/src/gui/creds/webflowcredentials.cpp +++ b/src/gui/creds/webflowcredentials.cpp @@ -25,7 +25,7 @@ using namespace QKeychain; namespace OCC { -Q_LOGGING_CATEGORY(lcWebFlowCredentials, "nextcloud.sync.credentials.webflow", QtInfoMsg) +Q_LOGGING_CATEGORY(lcWebFlowCredentials, "hidrivenext.sync.credentials.webflow", QtInfoMsg) namespace { const char userC[] = "user"; diff --git a/src/gui/editlocallyjob.cpp b/src/gui/editlocallyjob.cpp index f4109a970d8c4..5d14f0ec234ef 100644 --- a/src/gui/editlocallyjob.cpp +++ b/src/gui/editlocallyjob.cpp @@ -26,7 +26,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcEditLocallyJob, "nextcloud.gui.editlocallyjob", QtInfoMsg) +Q_LOGGING_CATEGORY(lcEditLocallyJob, "hidrivenext.gui.editlocallyjob", QtInfoMsg) EditLocallyJob::EditLocallyJob(const QString &userId, const QString &relPath, diff --git a/src/gui/editlocallymanager.cpp b/src/gui/editlocallymanager.cpp index cd6ade7d31874..54693d913f594 100644 --- a/src/gui/editlocallymanager.cpp +++ b/src/gui/editlocallymanager.cpp @@ -19,7 +19,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcEditLocallyManager, "nextcloud.gui.editlocallymanager", QtInfoMsg) +Q_LOGGING_CATEGORY(lcEditLocallyManager, "hidrivenext.gui.editlocallymanager", QtInfoMsg) EditLocallyManager *EditLocallyManager::_instance = nullptr; diff --git a/src/gui/fileactivitylistmodel.cpp b/src/gui/fileactivitylistmodel.cpp index 4e4c3c2203a00..5fcdec7267943 100644 --- a/src/gui/fileactivitylistmodel.cpp +++ b/src/gui/fileactivitylistmodel.cpp @@ -18,7 +18,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcFileActivityListModel, "nextcloud.gui.fileactivitylistmodel", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFileActivityListModel, "hidrivenext.gui.fileactivitylistmodel", QtInfoMsg) FileActivityListModel::FileActivityListModel(QObject *parent) : ActivityListModel(nullptr, parent) diff --git a/src/gui/filedetails/filedetails.cpp b/src/gui/filedetails/filedetails.cpp index 67ebb554cec29..7cb440179086b 100644 --- a/src/gui/filedetails/filedetails.cpp +++ b/src/gui/filedetails/filedetails.cpp @@ -20,7 +20,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcFileDetails, "nextcloud.gui.filedetails", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFileDetails, "hidrivenext.gui.filedetails", QtInfoMsg) FileDetails::FileDetails(QObject *parent) : QObject(parent) diff --git a/src/gui/filetagmodel.cpp b/src/gui/filetagmodel.cpp index 64cab4486a4f9..303c7436fe717 100644 --- a/src/gui/filetagmodel.cpp +++ b/src/gui/filetagmodel.cpp @@ -16,7 +16,7 @@ #include "libsync/networkjobs.h" -Q_LOGGING_CATEGORY(lcFileTagModel, "nextcloud.gui.filetagmodel", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFileTagModel, "hidrivenext.gui.filetagmodel", QtInfoMsg) namespace OCC { diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index e444ad5f81312..810110ab07e9d 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -57,7 +57,7 @@ constexpr auto versionC = "version"; namespace OCC { -Q_LOGGING_CATEGORY(lcFolder, "nextcloud.gui.folder", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFolder, "hidrivenext.gui.folder", QtInfoMsg) Folder::Folder(const FolderDefinition &definition, AccountState *accountState, std::unique_ptr vfs, diff --git a/src/gui/foldercreationdialog.cpp b/src/gui/foldercreationdialog.cpp index 1cfe53195b814..8cd44a51447a2 100644 --- a/src/gui/foldercreationdialog.cpp +++ b/src/gui/foldercreationdialog.cpp @@ -29,7 +29,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcFolderCreationDialog, "nextcloud.gui.foldercreationdialog", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFolderCreationDialog, "hidrivenext.gui.foldercreationdialog", QtInfoMsg) FolderCreationDialog::FolderCreationDialog(const QString &destination, QWidget *parent) : QDialog(parent) diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index ffced3a51ccc0..d1a5673a47d6d 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -48,7 +48,7 @@ constexpr auto maxFoldersVersion = 1; namespace OCC { -Q_LOGGING_CATEGORY(lcFolderMan, "nextcloud.gui.folder.manager", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFolderMan, "hidrivenext.gui.folder.manager", QtInfoMsg) FolderMan *FolderMan::_instance = nullptr; diff --git a/src/gui/folderstatusmodel.cpp b/src/gui/folderstatusmodel.cpp index 41d363490fd12..bfec5612871fa 100644 --- a/src/gui/folderstatusmodel.cpp +++ b/src/gui/folderstatusmodel.cpp @@ -29,7 +29,7 @@ Q_DECLARE_METATYPE(QPersistentModelIndex) namespace OCC { -Q_LOGGING_CATEGORY(lcFolderStatus, "nextcloud.gui.folder.model", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFolderStatus, "hidrivenext.gui.folder.model", QtInfoMsg) static const char propertyParentIndexC[] = "oc_parentIndex"; static const char propertyPermissionMap[] = "oc_permissionMap"; diff --git a/src/gui/folderwatcher.cpp b/src/gui/folderwatcher.cpp index 93c2334506a8f..e16ee14e02299 100644 --- a/src/gui/folderwatcher.cpp +++ b/src/gui/folderwatcher.cpp @@ -46,7 +46,7 @@ constexpr auto lockChangeDebouncingTimerIntervalMs = 500; namespace OCC { -Q_LOGGING_CATEGORY(lcFolderWatcher, "nextcloud.gui.folderwatcher", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFolderWatcher, "hidrivenext.gui.folderwatcher", QtInfoMsg) FolderWatcher::FolderWatcher(Folder *folder) : QObject(folder) diff --git a/src/gui/ga4/ganalytics_worker.cpp b/src/gui/ga4/ganalytics_worker.cpp index f3eb1351430c3..1df2a58498e84 100644 --- a/src/gui/ga4/ganalytics_worker.cpp +++ b/src/gui/ga4/ganalytics_worker.cpp @@ -35,7 +35,7 @@ const QLatin1String GAnalyticsWorker::dateTimeFormat("yyyy,MM,dd-hh:mm::ss:zzz"); -Q_LOGGING_CATEGORY(lcGAnalyticsWorker, "nextcloud.gui.ga4.ganalytics_worker", QtInfoMsg) +Q_LOGGING_CATEGORY(lcGAnalyticsWorker, "hidrivenext.gui.ga4.ganalytics_worker", QtInfoMsg) GAnalyticsWorker::GAnalyticsWorker(GAnalytics *parent) : QObject(parent), q(parent), m_logLevel(GAnalytics::Error) diff --git a/src/gui/guiutility.cpp b/src/gui/guiutility.cpp index 6e5fe203e5ef8..9a4c14a66b1fc 100644 --- a/src/gui/guiutility.cpp +++ b/src/gui/guiutility.cpp @@ -24,7 +24,7 @@ #include "common/asserts.h" using namespace OCC; -Q_LOGGING_CATEGORY(lcUtility, "nextcloud.gui.utility", QtInfoMsg) +Q_LOGGING_CATEGORY(lcUtility, "hidrivenext.gui.utility", QtInfoMsg) bool Utility::openBrowser(const QUrl &url, QWidget *errorWidgetParent) { diff --git a/src/gui/iconutils.cpp b/src/gui/iconutils.cpp index 22ce38f85aabb..dc980d01e6857 100644 --- a/src/gui/iconutils.cpp +++ b/src/gui/iconutils.cpp @@ -82,7 +82,7 @@ namespace OCC { namespace Ui { namespace IconUtils { -Q_LOGGING_CATEGORY(lcIconUtils, "nextcloud.gui.iconutils", QtInfoMsg) +Q_LOGGING_CATEGORY(lcIconUtils, "hidrivenext.gui.iconutils", QtInfoMsg) QPixmap pixmapForBackground(const QString &fileName, const QColor &backgroundColor) { diff --git a/src/gui/lockwatcher.cpp b/src/gui/lockwatcher.cpp index d3edc23522416..0ef90276eb09d 100644 --- a/src/gui/lockwatcher.cpp +++ b/src/gui/lockwatcher.cpp @@ -20,7 +20,7 @@ using namespace OCC; -Q_LOGGING_CATEGORY(lcLockWatcher, "nextcloud.gui.lockwatcher", QtInfoMsg) +Q_LOGGING_CATEGORY(lcLockWatcher, "hidrivenext.gui.lockwatcher", QtInfoMsg) static const int check_frequency = 20 * 1000; // ms diff --git a/src/gui/macOS/fileprovider_mac.mm b/src/gui/macOS/fileprovider_mac.mm index 807372b1acf65..916c64b59ccbe 100644 --- a/src/gui/macOS/fileprovider_mac.mm +++ b/src/gui/macOS/fileprovider_mac.mm @@ -24,7 +24,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcMacFileProvider, "nextcloud.gui.macfileprovider", QtInfoMsg) +Q_LOGGING_CATEGORY(lcMacFileProvider, "hidrivenext.gui.macfileprovider", QtInfoMsg) namespace Mac { diff --git a/src/gui/macOS/fileproviderdomainmanager_mac.mm b/src/gui/macOS/fileproviderdomainmanager_mac.mm index 64e49163dc94d..7f466fa0fe94c 100644 --- a/src/gui/macOS/fileproviderdomainmanager_mac.mm +++ b/src/gui/macOS/fileproviderdomainmanager_mac.mm @@ -72,7 +72,7 @@ QString accountIdFromDomain(NSFileProviderDomain * const domain) namespace OCC { -Q_LOGGING_CATEGORY(lcMacFileProviderDomainManager, "nextcloud.gui.macfileproviderdomainmanager", QtInfoMsg) +Q_LOGGING_CATEGORY(lcMacFileProviderDomainManager, "hidrivenext.gui.macfileproviderdomainmanager", QtInfoMsg) namespace Mac { diff --git a/src/gui/macOS/fileproviderdomainsyncstatus_mac.mm b/src/gui/macOS/fileproviderdomainsyncstatus_mac.mm index 6cc7efd42ae4c..578a78415bdef 100644 --- a/src/gui/macOS/fileproviderdomainsyncstatus_mac.mm +++ b/src/gui/macOS/fileproviderdomainsyncstatus_mac.mm @@ -26,7 +26,7 @@ namespace OCC::Mac { -Q_LOGGING_CATEGORY(lcMacFileProviderDomainSyncStatus, "nextcloud.gui.macfileproviderdomainsyncstatus", QtInfoMsg) +Q_LOGGING_CATEGORY(lcMacFileProviderDomainSyncStatus, "hidrivenext.gui.macfileproviderdomainsyncstatus", QtInfoMsg) class FileProviderDomainSyncStatus::MacImplementation { diff --git a/src/gui/macOS/fileprovideritemmetadata_mac.mm b/src/gui/macOS/fileprovideritemmetadata_mac.mm index d8e64abb68832..155e769c0efd4 100644 --- a/src/gui/macOS/fileprovideritemmetadata_mac.mm +++ b/src/gui/macOS/fileprovideritemmetadata_mac.mm @@ -51,7 +51,7 @@ QString nsNameComponentsToLocalisedQString(NSPersonNameComponents *const nameCom namespace Mac { -Q_LOGGING_CATEGORY(lcMacImplFileProviderItemMetadata, "nextcloud.gui.macfileprovideritemmetadatamacimpl", QtInfoMsg) +Q_LOGGING_CATEGORY(lcMacImplFileProviderItemMetadata, "hidrivenext.gui.macfileprovideritemmetadatamacimpl", QtInfoMsg) FileProviderItemMetadata FileProviderItemMetadata::fromNSFileProviderItem(const void *const nsFileProviderItem, const QString &domainIdentifier) { diff --git a/src/gui/macOS/fileprovidermaterialiseditemsmodel_mac.mm b/src/gui/macOS/fileprovidermaterialiseditemsmodel_mac.mm index ec1dd2ce0c98b..de173b0454aba 100644 --- a/src/gui/macOS/fileprovidermaterialiseditemsmodel_mac.mm +++ b/src/gui/macOS/fileprovidermaterialiseditemsmodel_mac.mm @@ -26,7 +26,7 @@ namespace Mac { -Q_LOGGING_CATEGORY(lcMacImplFileProviderMaterialisedItemsModelMac, "nextcloud.gui.macfileprovidermaterialiseditemsmodelmac", QtInfoMsg) +Q_LOGGING_CATEGORY(lcMacImplFileProviderMaterialisedItemsModelMac, "hidrivenext.gui.macfileprovidermaterialiseditemsmodelmac", QtInfoMsg) void FileProviderMaterialisedItemsModel::evictItem(const QString &identifier, const QString &domainIdentifier) { diff --git a/src/gui/macOS/fileprovidersettingscontroller_mac.mm b/src/gui/macOS/fileprovidersettingscontroller_mac.mm index 7e97c6b8ed8c9..eb5a597f744c7 100644 --- a/src/gui/macOS/fileprovidersettingscontroller_mac.mm +++ b/src/gui/macOS/fileprovidersettingscontroller_mac.mm @@ -52,7 +52,7 @@ float gbFromBytesWithOneDecimal(const unsigned long long bytes) namespace Mac { -Q_LOGGING_CATEGORY(lcFileProviderSettingsController, "nextcloud.gui.mac.fileprovider.settingscontroller") +Q_LOGGING_CATEGORY(lcFileProviderSettingsController, "hidrivenext.gui.mac.fileprovider.settingscontroller") class FileProviderSettingsController::MacImplementation : public QObject { diff --git a/src/gui/macOS/fileprovidersocketcontroller.cpp b/src/gui/macOS/fileprovidersocketcontroller.cpp index 0b34a9962ad61..38022c2556254 100644 --- a/src/gui/macOS/fileprovidersocketcontroller.cpp +++ b/src/gui/macOS/fileprovidersocketcontroller.cpp @@ -24,7 +24,7 @@ namespace OCC { namespace Mac { -Q_LOGGING_CATEGORY(lcFileProviderSocketController, "nextcloud.gui.macos.fileprovider.socketcontroller", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFileProviderSocketController, "hidrivenext.gui.macos.fileprovider.socketcontroller", QtInfoMsg) FileProviderSocketController::FileProviderSocketController(QLocalSocket * const socket, QObject * const parent) : QObject{parent} diff --git a/src/gui/macOS/fileprovidersocketserver.cpp b/src/gui/macOS/fileprovidersocketserver.cpp index 70b01615705fd..600c41cbb8fd9 100644 --- a/src/gui/macOS/fileprovidersocketserver.cpp +++ b/src/gui/macOS/fileprovidersocketserver.cpp @@ -23,7 +23,7 @@ namespace OCC { namespace Mac { -Q_LOGGING_CATEGORY(lcFileProviderSocketServer, "nextcloud.gui.macos.fileprovider.socketserver", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFileProviderSocketServer, "hidrivenext.gui.macos.fileprovider.socketserver", QtInfoMsg) FileProviderSocketServer::FileProviderSocketServer(QObject *parent) : QObject{parent} diff --git a/src/gui/macOS/fileproviderutils_mac.mm b/src/gui/macOS/fileproviderutils_mac.mm index 1f3d046d9fcf4..44be0a0090336 100644 --- a/src/gui/macOS/fileproviderutils_mac.mm +++ b/src/gui/macOS/fileproviderutils_mac.mm @@ -25,7 +25,7 @@ namespace FileProviderUtils { -Q_LOGGING_CATEGORY(lcMacFileProviderUtils, "nextcloud.gui.macfileproviderutils", QtInfoMsg) +Q_LOGGING_CATEGORY(lcMacFileProviderUtils, "hidrivenext.gui.macfileproviderutils", QtInfoMsg) NSFileProviderDomain *domainForIdentifier(const QString &domainIdentifier) { diff --git a/src/gui/macOS/fileproviderxpc_mac.mm b/src/gui/macOS/fileproviderxpc_mac.mm index cc0b7b4679230..bda40cf9eac5b 100644 --- a/src/gui/macOS/fileproviderxpc_mac.mm +++ b/src/gui/macOS/fileproviderxpc_mac.mm @@ -26,7 +26,7 @@ namespace OCC::Mac { -Q_LOGGING_CATEGORY(lcFileProviderXPC, "nextcloud.gui.macos.fileprovider.xpc", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFileProviderXPC, "hidrivenext.gui.macos.fileprovider.xpc", QtInfoMsg) FileProviderXPC::FileProviderXPC(QObject *parent) : QObject{parent} diff --git a/src/gui/macOS/fileproviderxpc_mac_utils.mm b/src/gui/macOS/fileproviderxpc_mac_utils.mm index 2451f7c9f3564..7bc6b3a200fc5 100644 --- a/src/gui/macOS/fileproviderxpc_mac_utils.mm +++ b/src/gui/macOS/fileproviderxpc_mac_utils.mm @@ -25,7 +25,7 @@ namespace OCC::Mac::FileProviderXPCUtils { -Q_LOGGING_CATEGORY(lcFileProviderXPCUtils, "nextcloud.gui.macos.fileprovider.xpc.utils", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFileProviderXPCUtils, "hidrivenext.gui.macos.fileprovider.xpc.utils", QtInfoMsg) NSArray *getDomainManagers() { diff --git a/src/gui/navigationpanehelper.cpp b/src/gui/navigationpanehelper.cpp index 3b2221f3c68d1..03ced7256a03b 100644 --- a/src/gui/navigationpanehelper.cpp +++ b/src/gui/navigationpanehelper.cpp @@ -22,7 +22,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcNavPane, "nextcloud.gui.folder.navigationpane", QtInfoMsg) +Q_LOGGING_CATEGORY(lcNavPane, "hidrivenext.gui.folder.navigationpane", QtInfoMsg) NavigationPaneHelper::NavigationPaneHelper(FolderMan *folderMan) : _folderMan(folderMan) diff --git a/src/gui/notificationconfirmjob.cpp b/src/gui/notificationconfirmjob.cpp index 8071aefddb4ef..1cc514b7c64bb 100644 --- a/src/gui/notificationconfirmjob.cpp +++ b/src/gui/notificationconfirmjob.cpp @@ -20,7 +20,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcNotificationsJob, "nextcloud.gui.notifications", QtInfoMsg) +Q_LOGGING_CATEGORY(lcNotificationsJob, "hidrivenext.gui.notifications", QtInfoMsg) NotificationConfirmJob::NotificationConfirmJob(AccountPtr account) : AbstractNetworkJob(account, "") diff --git a/src/gui/ocsjob.cpp b/src/gui/ocsjob.cpp index 09f7de00c0f1e..fe0c8f8827b15 100644 --- a/src/gui/ocsjob.cpp +++ b/src/gui/ocsjob.cpp @@ -22,7 +22,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcOcs, "nextcloud.gui.sharing.ocs", QtInfoMsg) +Q_LOGGING_CATEGORY(lcOcs, "hidrivenext.gui.sharing.ocs", QtInfoMsg) OcsJob::OcsJob(AccountPtr account) : AbstractNetworkJob(account, "") diff --git a/src/gui/proxyauthhandler.cpp b/src/gui/proxyauthhandler.cpp index aa7cb00dc2368..4edb8c703fd80 100644 --- a/src/gui/proxyauthhandler.cpp +++ b/src/gui/proxyauthhandler.cpp @@ -26,7 +26,7 @@ using namespace OCC; using namespace QKeychain; -Q_LOGGING_CATEGORY(lcProxy, "nextcloud.gui.credentials.proxy", QtInfoMsg) +Q_LOGGING_CATEGORY(lcProxy, "hidrivenext.gui.credentials.proxy", QtInfoMsg) ProxyAuthHandler *ProxyAuthHandler::instance() { diff --git a/src/gui/remotewipe.cpp b/src/gui/remotewipe.cpp index 3d285637fb497..13246322b7799 100644 --- a/src/gui/remotewipe.cpp +++ b/src/gui/remotewipe.cpp @@ -22,7 +22,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcRemoteWipe, "nextcloud.gui.remotewipe", QtInfoMsg) +Q_LOGGING_CATEGORY(lcRemoteWipe, "hidrivenext.gui.remotewipe", QtInfoMsg) RemoteWipe::RemoteWipe(AccountPtr account, QObject *parent) : QObject(parent), diff --git a/src/gui/sharee.cpp b/src/gui/sharee.cpp index 0a45a1e0a1a8e..ab0b48fcdebb1 100644 --- a/src/gui/sharee.cpp +++ b/src/gui/sharee.cpp @@ -22,7 +22,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcSharing, "nextcloud.gui.sharing", QtInfoMsg) +Q_LOGGING_CATEGORY(lcSharing, "hidrivenext.gui.sharing", QtInfoMsg) Sharee::Sharee(const QString &shareWith, const QString &displayName, const Type type, const QString &iconUrl) : _shareWith(shareWith) diff --git a/src/gui/sharemanager.cpp b/src/gui/sharemanager.cpp index 62c39b4cdc752..43d16064e9fc3 100644 --- a/src/gui/sharemanager.cpp +++ b/src/gui/sharemanager.cpp @@ -25,7 +25,7 @@ #include #include -Q_LOGGING_CATEGORY(lcUserGroupShare, "nextcloud.gui.usergroupshare", QtInfoMsg) +Q_LOGGING_CATEGORY(lcUserGroupShare, "hidrivenext.gui.usergroupshare", QtInfoMsg) namespace OCC { diff --git a/src/gui/shellextensionsserver.cpp b/src/gui/shellextensionsserver.cpp index 1150a3107b7a0..93dc031afa3ea 100644 --- a/src/gui/shellextensionsserver.cpp +++ b/src/gui/shellextensionsserver.cpp @@ -31,7 +31,7 @@ constexpr auto isSharedInvalidationInterval = 2 * 60 * 1000; // 2 minutes, so we namespace OCC { -Q_LOGGING_CATEGORY(lcShellExtServer, "nextcloud.gui.shellextensions.server", QtInfoMsg) +Q_LOGGING_CATEGORY(lcShellExtServer, "hidrivenext.gui.shellextensions.server", QtInfoMsg) ShellExtensionsServer::ShellExtensionsServer(QObject *parent) : QObject(parent) diff --git a/src/gui/socketapi/socketapi.cpp b/src/gui/socketapi/socketapi.cpp index 056ad804c2a10..502dc06d68350 100644 --- a/src/gui/socketapi/socketapi.cpp +++ b/src/gui/socketapi/socketapi.cpp @@ -214,8 +214,8 @@ void setClipboardText(const QString &text) namespace OCC { -Q_LOGGING_CATEGORY(lcSocketApi, "nextcloud.gui.socketapi", QtInfoMsg) -Q_LOGGING_CATEGORY(lcPublicLink, "nextcloud.gui.socketapi.publiclink", QtInfoMsg) +Q_LOGGING_CATEGORY(lcSocketApi, "hidrivenext.gui.socketapi", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPublicLink, "hidrivenext.gui.socketapi.publiclink", QtInfoMsg) void SocketListener::sendMessage(const QString &message, bool doWait) const diff --git a/src/gui/sslbutton.cpp b/src/gui/sslbutton.cpp index a2c56e5ef7232..98bb8d72c1345 100644 --- a/src/gui/sslbutton.cpp +++ b/src/gui/sslbutton.cpp @@ -26,7 +26,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcSsl, "nextcloud.gui.ssl", QtInfoMsg) +Q_LOGGING_CATEGORY(lcSsl, "hidrivenext.gui.ssl", QtInfoMsg) SslButton::SslButton(QWidget *parent) : QToolButton(parent) diff --git a/src/gui/sslerrordialog.cpp b/src/gui/sslerrordialog.cpp index bd3eee0b434b9..9659df565e875 100644 --- a/src/gui/sslerrordialog.cpp +++ b/src/gui/sslerrordialog.cpp @@ -24,7 +24,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcSslErrorDialog, "nextcloud.gui.sslerrordialog", QtInfoMsg) +Q_LOGGING_CATEGORY(lcSslErrorDialog, "hidrivenext.gui.sslerrordialog", QtInfoMsg) namespace Utility { // Used for QSSLCertificate::subjectInfo which returns a QStringList in Qt5, but a QString in Qt4 diff --git a/src/gui/syncconflictsmodel.cpp b/src/gui/syncconflictsmodel.cpp index 2ddbf0225786d..03d2effb45b97 100644 --- a/src/gui/syncconflictsmodel.cpp +++ b/src/gui/syncconflictsmodel.cpp @@ -20,7 +20,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcSyncConflictsModel, "nextcloud.syncconflictsmodel", QtInfoMsg) +Q_LOGGING_CATEGORY(lcSyncConflictsModel, "hidrivenext.syncconflictsmodel", QtInfoMsg) SyncConflictsModel::SyncConflictsModel(QObject *parent) : QAbstractListModel(parent) diff --git a/src/gui/systray.cpp b/src/gui/systray.cpp index d3fdb22a0a778..3dd5ef840bcc3 100644 --- a/src/gui/systray.cpp +++ b/src/gui/systray.cpp @@ -48,7 +48,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcSystray, "nextcloud.gui.systray") +Q_LOGGING_CATEGORY(lcSystray, "hidrivenext.gui.systray") Systray *Systray::_instance = nullptr; diff --git a/src/gui/systray_mac_common.mm b/src/gui/systray_mac_common.mm index 8189acd10951e..20c33a588cb05 100644 --- a/src/gui/systray_mac_common.mm +++ b/src/gui/systray_mac_common.mm @@ -18,7 +18,7 @@ #include "systray.h" -Q_LOGGING_CATEGORY(lcMacSystrayCommon, "nextcloud.gui.macsystraycommon") +Q_LOGGING_CATEGORY(lcMacSystrayCommon, "hidrivenext.gui.macsystraycommon") namespace OCC { diff --git a/src/gui/systray_mac_usernotifications.mm b/src/gui/systray_mac_usernotifications.mm index 3d02272c6b312..b1ccf269e5a71 100644 --- a/src/gui/systray_mac_usernotifications.mm +++ b/src/gui/systray_mac_usernotifications.mm @@ -26,7 +26,7 @@ #include "systray.h" #include "tray/talkreply.h" -Q_LOGGING_CATEGORY(lcMacSystrayUserNotifications, "nextcloud.gui.macsystrayusernotifications") +Q_LOGGING_CATEGORY(lcMacSystrayUserNotifications, "hidrivenext.gui.macsystrayusernotifications") /************************* Private utility functions *************************/ diff --git a/src/gui/tray/activitylistmodel.cpp b/src/gui/tray/activitylistmodel.cpp index eb2639fb4aed4..2835cec7850b5 100644 --- a/src/gui/tray/activitylistmodel.cpp +++ b/src/gui/tray/activitylistmodel.cpp @@ -38,7 +38,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcActivity, "nextcloud.gui.activity", QtInfoMsg) +Q_LOGGING_CATEGORY(lcActivity, "hidrivenext.gui.activity", QtInfoMsg) ActivityListModel::ActivityListModel(QObject *parent) : QAbstractListModel(parent) diff --git a/src/gui/tray/notificationhandler.cpp b/src/gui/tray/notificationhandler.cpp index 74db3cd33f141..7c2a379cd4673 100644 --- a/src/gui/tray/notificationhandler.cpp +++ b/src/gui/tray/notificationhandler.cpp @@ -11,7 +11,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcServerNotification, "nextcloud.gui.servernotification", QtInfoMsg) +Q_LOGGING_CATEGORY(lcServerNotification, "hidrivenext.gui.servernotification", QtInfoMsg) const QString notificationsPath = QLatin1String("ocs/v2.php/apps/notifications/api/v2/notifications"); const char propertyAccountStateC[] = "oc_account_state"; diff --git a/src/gui/tray/svgimageprovider.cpp b/src/gui/tray/svgimageprovider.cpp index b8297b27e6f91..7b45f30e43714 100644 --- a/src/gui/tray/svgimageprovider.cpp +++ b/src/gui/tray/svgimageprovider.cpp @@ -19,7 +19,7 @@ namespace OCC { namespace Ui { - Q_LOGGING_CATEGORY(lcSvgImageProvider, "nextcloud.gui.svgimageprovider", QtInfoMsg) + Q_LOGGING_CATEGORY(lcSvgImageProvider, "hidrivenext.gui.svgimageprovider", QtInfoMsg) SvgImageProvider::SvgImageProvider() : QQuickImageProvider(QQuickImageProvider::Image) diff --git a/src/gui/tray/syncstatussummary.cpp b/src/gui/tray/syncstatussummary.cpp index 987e725e9aef2..134d1d50f63b7 100644 --- a/src/gui/tray/syncstatussummary.cpp +++ b/src/gui/tray/syncstatussummary.cpp @@ -42,7 +42,7 @@ OCC::SyncResult::Status determineSyncStatus(const OCC::SyncResult &syncResult) namespace OCC { -Q_LOGGING_CATEGORY(lcSyncStatusModel, "nextcloud.gui.syncstatusmodel", QtInfoMsg) +Q_LOGGING_CATEGORY(lcSyncStatusModel, "hidrivenext.gui.syncstatusmodel", QtInfoMsg) SyncStatusSummary::SyncStatusSummary(QObject *parent) : QObject(parent) diff --git a/src/gui/tray/talkreply.cpp b/src/gui/tray/talkreply.cpp index 4819801cf8c2b..942747d9a642e 100644 --- a/src/gui/tray/talkreply.cpp +++ b/src/gui/tray/talkreply.cpp @@ -7,7 +7,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcTalkReply, "nextcloud.gui.talkreply", QtInfoMsg) +Q_LOGGING_CATEGORY(lcTalkReply, "hidrivenext.gui.talkreply", QtInfoMsg) TalkReply::TalkReply(AccountState *accountState, QObject *parent) : QObject(parent) diff --git a/src/gui/tray/unifiedsearchresultslistmodel.cpp b/src/gui/tray/unifiedsearchresultslistmodel.cpp index 6ec9a7a2a6382..7e11c60f15221 100644 --- a/src/gui/tray/unifiedsearchresultslistmodel.cpp +++ b/src/gui/tray/unifiedsearchresultslistmodel.cpp @@ -190,7 +190,7 @@ constexpr int searchTermEditingFinishedSearchStartDelay = 800; constexpr int minimumEntresNumberToShowLoadMore = 5; } namespace OCC { -Q_LOGGING_CATEGORY(lcUnifiedSearch, "nextcloud.gui.unifiedsearch", QtInfoMsg) +Q_LOGGING_CATEGORY(lcUnifiedSearch, "hidrivenext.gui.unifiedsearch", QtInfoMsg) UnifiedSearchResultsListModel::UnifiedSearchResultsListModel(AccountState *accountState, QObject *parent) : QAbstractListModel(parent) diff --git a/src/gui/updater/updater.cpp b/src/gui/updater/updater.cpp index fb3f9a2660e53..07112719e0ad6 100644 --- a/src/gui/updater/updater.cpp +++ b/src/gui/updater/updater.cpp @@ -32,7 +32,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcUpdater, "nextcloud.gui.updater", QtInfoMsg) +Q_LOGGING_CATEGORY(lcUpdater, "hidrivenext.gui.updater", QtInfoMsg) Updater *Updater::_instance = nullptr; diff --git a/src/gui/userstatusselectormodel.cpp b/src/gui/userstatusselectormodel.cpp index 778013eaea863..25564a731877d 100644 --- a/src/gui/userstatusselectormodel.cpp +++ b/src/gui/userstatusselectormodel.cpp @@ -27,7 +27,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcUserStatusDialogModel, "nextcloud.gui.userstatusdialogmodel", QtInfoMsg) +Q_LOGGING_CATEGORY(lcUserStatusDialogModel, "hidrivenext.gui.userstatusdialogmodel", QtInfoMsg) UserStatusSelectorModel::UserStatusSelectorModel(QObject *parent) : QObject(parent) diff --git a/src/gui/wizard/flow2authwidget.cpp b/src/gui/wizard/flow2authwidget.cpp index 6db4af0fa810b..d8c5b266442a1 100644 --- a/src/gui/wizard/flow2authwidget.cpp +++ b/src/gui/wizard/flow2authwidget.cpp @@ -32,7 +32,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcFlow2AuthWidget, "nextcloud.gui.wizard.flow2authwidget", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFlow2AuthWidget, "hidrivenext.gui.wizard.flow2authwidget", QtInfoMsg) Flow2AuthWidget::Flow2AuthWidget(QWidget *parent) diff --git a/src/gui/wizard/owncloudwizard.cpp b/src/gui/wizard/owncloudwizard.cpp index e8c31eec15a41..1d36b0585200e 100644 --- a/src/gui/wizard/owncloudwizard.cpp +++ b/src/gui/wizard/owncloudwizard.cpp @@ -42,7 +42,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcWizard, "nextcloud.gui.wizard", QtInfoMsg) +Q_LOGGING_CATEGORY(lcWizard, "hidrivenext.gui.wizard", QtInfoMsg) OwncloudWizard::OwncloudWizard(QWidget *parent) : QWizard(parent) diff --git a/src/gui/wizard/webview.cpp b/src/gui/wizard/webview.cpp index 325e7cd1013a5..0dffcbe4c5d84 100644 --- a/src/gui/wizard/webview.cpp +++ b/src/gui/wizard/webview.cpp @@ -21,7 +21,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcWizardWebiew, "nextcloud.gui.wizard.webview", QtInfoMsg) +Q_LOGGING_CATEGORY(lcWizardWebiew, "hidrivenext.gui.wizard.webview", QtInfoMsg) class WebViewPageUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor diff --git a/src/gui/wizard/webviewpage.cpp b/src/gui/wizard/webviewpage.cpp index 8e492ea276050..ebd8e573d8dde 100644 --- a/src/gui/wizard/webviewpage.cpp +++ b/src/gui/wizard/webviewpage.cpp @@ -14,7 +14,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcWizardWebiewPage, "nextcloud.gui.wizard.webviewpage", QtInfoMsg) +Q_LOGGING_CATEGORY(lcWizardWebiewPage, "hidrivenext.gui.wizard.webviewpage", QtInfoMsg) WebViewPage::WebViewPage(QWidget *parent) diff --git a/src/libsync/abstractnetworkjob.cpp b/src/libsync/abstractnetworkjob.cpp index 327080fc540a2..0e6fcc53d5985 100644 --- a/src/libsync/abstractnetworkjob.cpp +++ b/src/libsync/abstractnetworkjob.cpp @@ -42,7 +42,7 @@ Q_DECLARE_METATYPE(QTimer *) namespace OCC { -Q_LOGGING_CATEGORY(lcNetworkJob, "nextcloud.sync.networkjob", QtInfoMsg) +Q_LOGGING_CATEGORY(lcNetworkJob, "hidrivenext.sync.networkjob", QtInfoMsg) // If not set, it is overwritten by the Application constructor with the value from the config int AbstractNetworkJob::httpTimeout = qEnvironmentVariableIntValue("OWNCLOUD_TIMEOUT"); diff --git a/src/libsync/accessmanager.cpp b/src/libsync/accessmanager.cpp index 8a3c31c3ca04c..624b4ae0956d0 100644 --- a/src/libsync/accessmanager.cpp +++ b/src/libsync/accessmanager.cpp @@ -30,7 +30,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcAccessManager, "nextcloud.sync.accessmanager", QtInfoMsg) +Q_LOGGING_CATEGORY(lcAccessManager, "hidrivenext.sync.accessmanager", QtInfoMsg) AccessManager::AccessManager(QObject *parent) : QNetworkAccessManager(parent) diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index ee5b1f8c36bda..414aea0f54c34 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -67,7 +67,7 @@ constexpr auto isSkipE2eeMetadataChecksumValidationAllowedInClientVersion = MIRA } namespace OCC { -Q_LOGGING_CATEGORY(lcAccount, "nextcloud.sync.account", QtInfoMsg) +Q_LOGGING_CATEGORY(lcAccount, "hidrivenext.sync.account", QtInfoMsg) const char app_password[] = "_app-password"; Account::Account(QObject *parent) diff --git a/src/libsync/bandwidthmanager.cpp b/src/libsync/bandwidthmanager.cpp index 358822e6be443..98b8474ae565a 100644 --- a/src/libsync/bandwidthmanager.cpp +++ b/src/libsync/bandwidthmanager.cpp @@ -29,7 +29,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcBandwidthManager, "nextcloud.sync.bandwidthmanager", QtInfoMsg) +Q_LOGGING_CATEGORY(lcBandwidthManager, "hidrivenext.sync.bandwidthmanager", QtInfoMsg) // Because of the many layers of buffering inside Qt (and probably the OS and the network) // we cannot lower this value much more. If we do, the estimated bw will be very high diff --git a/src/libsync/basepropagateremotedeleteencrypted.cpp b/src/libsync/basepropagateremotedeleteencrypted.cpp index 4baf8fa8cae61..9cfc13bc14357 100644 --- a/src/libsync/basepropagateremotedeleteencrypted.cpp +++ b/src/libsync/basepropagateremotedeleteencrypted.cpp @@ -21,7 +21,7 @@ #include "deletejob.h" #include "owncloudpropagator.h" -Q_LOGGING_CATEGORY(ABSTRACT_PROPAGATE_REMOVE_ENCRYPTED, "nextcloud.sync.propagator.remove.encrypted") +Q_LOGGING_CATEGORY(ABSTRACT_PROPAGATE_REMOVE_ENCRYPTED, "hidrivenext.sync.propagator.remove.encrypted") namespace OCC { diff --git a/src/libsync/bulkpropagatorjob.cpp b/src/libsync/bulkpropagatorjob.cpp index 58e1ab82f0c95..648fb46e2deb2 100644 --- a/src/libsync/bulkpropagatorjob.cpp +++ b/src/libsync/bulkpropagatorjob.cpp @@ -65,7 +65,7 @@ constexpr auto parallelJobsMaximumCount = 1; namespace OCC { -Q_LOGGING_CATEGORY(lcBulkPropagatorJob, "nextcloud.sync.propagator.bulkupload", QtInfoMsg) +Q_LOGGING_CATEGORY(lcBulkPropagatorJob, "hidrivenext.sync.propagator.bulkupload", QtInfoMsg) BulkPropagatorJob::BulkPropagatorJob(OwncloudPropagator *propagator, const std::deque &items) : PropagatorJob(propagator) diff --git a/src/libsync/capabilities.cpp b/src/libsync/capabilities.cpp index a189da2ac3fba..7027ce7e5309b 100644 --- a/src/libsync/capabilities.cpp +++ b/src/libsync/capabilities.cpp @@ -22,7 +22,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcServerCapabilities, "nextcloud.sync.server.capabilities", QtInfoMsg) +Q_LOGGING_CATEGORY(lcServerCapabilities, "hidrivenext.sync.server.capabilities", QtInfoMsg) Capabilities::Capabilities(const QVariantMap &capabilities) diff --git a/src/libsync/caseclashconflictsolver.cpp b/src/libsync/caseclashconflictsolver.cpp index 753c2a7c0fc68..03f0184b9408d 100644 --- a/src/libsync/caseclashconflictsolver.cpp +++ b/src/libsync/caseclashconflictsolver.cpp @@ -27,7 +27,7 @@ using namespace OCC; -Q_LOGGING_CATEGORY(lcCaseClashConflictSolver, "nextcloud.sync.caseclash.solver", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCaseClashConflictSolver, "hidrivenext.sync.caseclash.solver", QtInfoMsg) CaseClashConflictSolver::CaseClashConflictSolver(const QString &targetFilePath, const QString &conflictFilePath, diff --git a/src/libsync/clientproxy.cpp b/src/libsync/clientproxy.cpp index 2deba9d546943..1477fc9a3b111 100644 --- a/src/libsync/clientproxy.cpp +++ b/src/libsync/clientproxy.cpp @@ -21,7 +21,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcClientProxy, "nextcloud.sync.clientproxy", QtInfoMsg) +Q_LOGGING_CATEGORY(lcClientProxy, "hidrivenext.sync.clientproxy", QtInfoMsg) ClientProxy::ClientProxy(QObject *parent) : QObject(parent) diff --git a/src/libsync/clientsideencryption.cpp b/src/libsync/clientsideencryption.cpp index ba34300420a16..99b0a1cd279b5 100644 --- a/src/libsync/clientsideencryption.cpp +++ b/src/libsync/clientsideencryption.cpp @@ -56,8 +56,8 @@ using namespace QKeychain; namespace OCC { -Q_LOGGING_CATEGORY(lcCse, "nextcloud.sync.clientsideencryption", QtInfoMsg) -Q_LOGGING_CATEGORY(lcCseDecryption, "nextcloud.e2e", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCse, "hidrivenext.sync.clientsideencryption", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCseDecryption, "hidrivenext.e2e", QtInfoMsg) QString e2eeBaseUrl(const OCC::AccountPtr &account) { diff --git a/src/libsync/clientsideencryptionjobs.cpp b/src/libsync/clientsideencryptionjobs.cpp index d39c393d1777b..8bdd2dbfc45c8 100644 --- a/src/libsync/clientsideencryptionjobs.cpp +++ b/src/libsync/clientsideencryptionjobs.cpp @@ -19,9 +19,9 @@ #include "creds/abstractcredentials.h" #include "common/syncjournaldb.h" -Q_LOGGING_CATEGORY(lcSignPublicKeyApiJob, "nextcloud.sync.networkjob.sendcsr", QtInfoMsg) -Q_LOGGING_CATEGORY(lcStorePrivateKeyApiJob, "nextcloud.sync.networkjob.storeprivatekey", QtInfoMsg) -Q_LOGGING_CATEGORY(lcCseJob, "nextcloud.sync.networkjob.clientsideencrypt", QtInfoMsg) +Q_LOGGING_CATEGORY(lcSignPublicKeyApiJob, "hidrivenext.sync.networkjob.sendcsr", QtInfoMsg) +Q_LOGGING_CATEGORY(lcStorePrivateKeyApiJob, "hidrivenext.sync.networkjob.storeprivatekey", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCseJob, "hidrivenext.sync.networkjob.clientsideencrypt", QtInfoMsg) namespace { diff --git a/src/libsync/clientstatusreporting.cpp b/src/libsync/clientstatusreporting.cpp index 682ff206e1c31..26fc2d5e22ac8 100644 --- a/src/libsync/clientstatusreporting.cpp +++ b/src/libsync/clientstatusreporting.cpp @@ -20,7 +20,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcClientStatusReporting, "nextcloud.sync.clientstatusreporting", QtInfoMsg) +Q_LOGGING_CATEGORY(lcClientStatusReporting, "hidrivenext.sync.clientstatusreporting", QtInfoMsg) ClientStatusReporting::ClientStatusReporting(Account *account) { diff --git a/src/libsync/clientstatusreportingcommon.cpp b/src/libsync/clientstatusreportingcommon.cpp index 16f0b0a1a8f8e..4268fabb1afc5 100644 --- a/src/libsync/clientstatusreportingcommon.cpp +++ b/src/libsync/clientstatusreportingcommon.cpp @@ -16,7 +16,7 @@ #include namespace OCC { -Q_LOGGING_CATEGORY(lcClientStatusReportingCommon, "nextcloud.sync.clientstatusreportingcommon", QtInfoMsg) +Q_LOGGING_CATEGORY(lcClientStatusReportingCommon, "hidrivenext.sync.clientstatusreportingcommon", QtInfoMsg) QByteArray clientStatusstatusStringFromNumber(const ClientStatusReportingStatus status) { diff --git a/src/libsync/clientstatusreportingdatabase.cpp b/src/libsync/clientstatusreportingdatabase.cpp index 169df5e13fffe..7a33a28f77c70 100644 --- a/src/libsync/clientstatusreportingdatabase.cpp +++ b/src/libsync/clientstatusreportingdatabase.cpp @@ -28,7 +28,7 @@ constexpr auto statusNamesHash = "statusNamesHash"; namespace OCC { -Q_LOGGING_CATEGORY(lcClientStatusReportingDatabase, "nextcloud.sync.clientstatusreportingdatabase", QtInfoMsg) +Q_LOGGING_CATEGORY(lcClientStatusReportingDatabase, "hidrivenext.sync.clientstatusreportingdatabase", QtInfoMsg) ClientStatusReportingDatabase::ClientStatusReportingDatabase(const Account *account) { diff --git a/src/libsync/clientstatusreportingnetwork.cpp b/src/libsync/clientstatusreportingnetwork.cpp index 08e6416fadb5d..1be91da8955e9 100644 --- a/src/libsync/clientstatusreportingnetwork.cpp +++ b/src/libsync/clientstatusreportingnetwork.cpp @@ -28,7 +28,7 @@ constexpr auto statusReportCategoryVirus = "virus_detected"; namespace OCC { -Q_LOGGING_CATEGORY(lcClientStatusReportingNetwork, "nextcloud.sync.clientstatusreportingnetwork", QtInfoMsg) +Q_LOGGING_CATEGORY(lcClientStatusReportingNetwork, "hidrivenext.sync.clientstatusreportingnetwork", QtInfoMsg) ClientStatusReportingNetwork::ClientStatusReportingNetwork(Account *account, const QSharedPointer database, QObject *parent) : QObject(parent) diff --git a/src/libsync/configfile.cpp b/src/libsync/configfile.cpp index 998bd395c683b..95e77309c0107 100644 --- a/src/libsync/configfile.cpp +++ b/src/libsync/configfile.cpp @@ -121,7 +121,7 @@ namespace OCC { namespace chrono = std::chrono; -Q_LOGGING_CATEGORY(lcConfigFile, "nextcloud.sync.configfile", QtInfoMsg) +Q_LOGGING_CATEGORY(lcConfigFile, "hidrivenext.sync.configfile", QtInfoMsg) QString ConfigFile::_confDir = {}; QString ConfigFile::_discoveredLegacyConfigPath = {}; diff --git a/src/libsync/cookiejar.cpp b/src/libsync/cookiejar.cpp index f0e3bca10ca53..dd2a705c03355 100644 --- a/src/libsync/cookiejar.cpp +++ b/src/libsync/cookiejar.cpp @@ -25,7 +25,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcCookieJar, "nextcloud.sync.cookiejar", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCookieJar, "hidrivenext.sync.cookiejar", QtInfoMsg) namespace { const unsigned int JAR_VERSION = 23; diff --git a/src/libsync/creds/abstractcredentials.cpp b/src/libsync/creds/abstractcredentials.cpp index 2f2b8b49b8c9d..e4f73dd908145 100644 --- a/src/libsync/creds/abstractcredentials.cpp +++ b/src/libsync/creds/abstractcredentials.cpp @@ -21,7 +21,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcCredentials, "nextcloud.sync.credentials", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCredentials, "hidrivenext.sync.credentials", QtInfoMsg) AbstractCredentials::AbstractCredentials() = default; diff --git a/src/libsync/creds/httpcredentials.cpp b/src/libsync/creds/httpcredentials.cpp index 407f515bac648..0ebd6a9465707 100644 --- a/src/libsync/creds/httpcredentials.cpp +++ b/src/libsync/creds/httpcredentials.cpp @@ -35,7 +35,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcHttpCredentials, "nextcloud.sync.credentials.http", QtInfoMsg) +Q_LOGGING_CATEGORY(lcHttpCredentials, "hidrivenext.sync.credentials.http", QtInfoMsg) namespace { const char userC[] = "user"; diff --git a/src/libsync/creds/keychainchunk.cpp b/src/libsync/creds/keychainchunk.cpp index dc2fff401dba6..13c440a617fa0 100644 --- a/src/libsync/creds/keychainchunk.cpp +++ b/src/libsync/creds/keychainchunk.cpp @@ -25,7 +25,7 @@ using namespace QKeychain; namespace OCC { -Q_LOGGING_CATEGORY(lcKeychainChunk, "nextcloud.sync.credentials.keychainchunk", QtInfoMsg) +Q_LOGGING_CATEGORY(lcKeychainChunk, "hidrivenext.sync.credentials.keychainchunk", QtInfoMsg) namespace KeychainChunk { diff --git a/src/libsync/creds/tokencredentials.cpp b/src/libsync/creds/tokencredentials.cpp index 85b5032ce5a24..d9dd78e90a088 100644 --- a/src/libsync/creds/tokencredentials.cpp +++ b/src/libsync/creds/tokencredentials.cpp @@ -29,7 +29,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcTokenCredentials, "nextcloud.sync.credentials.token", QtInfoMsg) +Q_LOGGING_CATEGORY(lcTokenCredentials, "hidrivenext.sync.credentials.token", QtInfoMsg) namespace { diff --git a/src/libsync/deletejob.cpp b/src/libsync/deletejob.cpp index 83666ba9f2939..87fb162058453 100644 --- a/src/libsync/deletejob.cpp +++ b/src/libsync/deletejob.cpp @@ -18,7 +18,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcDeleteJob, "nextcloud.sync.networkjob.delete", QtInfoMsg) +Q_LOGGING_CATEGORY(lcDeleteJob, "hidrivenext.sync.networkjob.delete", QtInfoMsg) DeleteJob::DeleteJob(AccountPtr account, const QString &path, QObject *parent) : SimpleFileJob(account, path, parent) diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index d29894abda104..bfa5e65ad23ed 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -43,7 +43,7 @@ constexpr auto delayIntervalForSyncRetryForOpenedForSigningFilesSeconds = 60; namespace OCC { -Q_LOGGING_CATEGORY(lcDisco, "nextcloud.sync.discovery", QtInfoMsg) +Q_LOGGING_CATEGORY(lcDisco, "hidrivenext.sync.discovery", QtInfoMsg) ProcessDirectoryJob::ProcessDirectoryJob(DiscoveryPhase *data, PinState basePinState, qint64 lastSyncTimestamp, QObject *parent) : QObject(parent) diff --git a/src/libsync/discoveryphase.cpp b/src/libsync/discoveryphase.cpp index cb7674ab40f0e..4993f3c1e9e8d 100644 --- a/src/libsync/discoveryphase.cpp +++ b/src/libsync/discoveryphase.cpp @@ -40,7 +40,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcDiscovery, "nextcloud.sync.discovery", QtInfoMsg) +Q_LOGGING_CATEGORY(lcDiscovery, "hidrivenext.sync.discovery", QtInfoMsg) bool DiscoveryPhase::isInSelectiveSyncBlackList(const QString &path) const { diff --git a/src/libsync/encryptedfoldermetadatahandler.cpp b/src/libsync/encryptedfoldermetadatahandler.cpp index 65a394646cc8c..f41e32ca6f8e7 100644 --- a/src/libsync/encryptedfoldermetadatahandler.cpp +++ b/src/libsync/encryptedfoldermetadatahandler.cpp @@ -25,7 +25,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcFetchAndUploadE2eeFolderMetadataJob, "nextcloud.sync.propagator.encryptedfoldermetadatahandler", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFetchAndUploadE2eeFolderMetadataJob, "hidrivenext.sync.propagator.encryptedfoldermetadatahandler", QtInfoMsg) } diff --git a/src/libsync/encryptfolderjob.cpp b/src/libsync/encryptfolderjob.cpp index 295e24dd0c60f..dd6d8e2dfbbef 100644 --- a/src/libsync/encryptfolderjob.cpp +++ b/src/libsync/encryptfolderjob.cpp @@ -21,7 +21,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcEncryptFolderJob, "nextcloud.sync.propagator.encryptfolder", QtInfoMsg) +Q_LOGGING_CATEGORY(lcEncryptFolderJob, "hidrivenext.sync.propagator.encryptfolder", QtInfoMsg) EncryptFolderJob::EncryptFolderJob(const AccountPtr &account, SyncJournalDb *journal, const QString &path, const QString &pathNonEncrypted, const QString &remoteSyncRootPath, const QByteArray &fileId, OwncloudPropagator *propagator, SyncFileItemPtr item, QObject * parent) diff --git a/src/libsync/foldermetadata.cpp b/src/libsync/foldermetadata.cpp index ba3294ed518d9..fa9434a6df513 100644 --- a/src/libsync/foldermetadata.cpp +++ b/src/libsync/foldermetadata.cpp @@ -24,7 +24,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcCseMetadata, "nextcloud.metadata", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCseMetadata, "hidrivenext.metadata", QtInfoMsg) namespace { diff --git a/src/libsync/lockfilejobs.cpp b/src/libsync/lockfilejobs.cpp index 77e48afcbc66f..1f2de0069dcd4 100644 --- a/src/libsync/lockfilejobs.cpp +++ b/src/libsync/lockfilejobs.cpp @@ -23,7 +23,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcLockFileJob, "nextcloud.sync.networkjob.lockfile", QtInfoMsg) +Q_LOGGING_CATEGORY(lcLockFileJob, "hidrivenext.sync.networkjob.lockfile", QtInfoMsg) LockFileJob::LockFileJob(const AccountPtr account, SyncJournalDb* const journal, diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp index 1a2fd4673c411..ea4a3caaca1b3 100644 --- a/src/libsync/networkjobs.cpp +++ b/src/libsync/networkjobs.cpp @@ -48,18 +48,18 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcEtagJob, "nextcloud.sync.networkjob.etag", QtInfoMsg) -Q_LOGGING_CATEGORY(lcLsColJob, "nextcloud.sync.networkjob.lscol", QtInfoMsg) -Q_LOGGING_CATEGORY(lcCheckServerJob, "nextcloud.sync.networkjob.checkserver", QtInfoMsg) -Q_LOGGING_CATEGORY(lcCheckRedirectCostFreeUrlJob, "nextcloud.sync.networkjob.checkredirectcostfreeurl", QtInfoMsg) -Q_LOGGING_CATEGORY(lcPropfindJob, "nextcloud.sync.networkjob.propfind", QtInfoMsg) -Q_LOGGING_CATEGORY(lcAvatarJob, "nextcloud.sync.networkjob.avatar", QtInfoMsg) -Q_LOGGING_CATEGORY(lcMkColJob, "nextcloud.sync.networkjob.mkcol", QtInfoMsg) -Q_LOGGING_CATEGORY(lcProppatchJob, "nextcloud.sync.networkjob.proppatch", QtInfoMsg) -Q_LOGGING_CATEGORY(lcJsonApiJob, "nextcloud.sync.networkjob.jsonapi", QtInfoMsg) -Q_LOGGING_CATEGORY(lcSimpleApiJob, "nextcloud.sync.networkjob.simpleapi", QtInfoMsg) -Q_LOGGING_CATEGORY(lcDetermineAuthTypeJob, "nextcloud.sync.networkjob.determineauthtype", QtInfoMsg) -Q_LOGGING_CATEGORY(lcSimpleFileJob, "nextcloud.sync.networkjob.simplefilejob", QtInfoMsg) +Q_LOGGING_CATEGORY(lcEtagJob, "hidrivenext.sync.networkjob.etag", QtInfoMsg) +Q_LOGGING_CATEGORY(lcLsColJob, "hidrivenext.sync.networkjob.lscol", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCheckServerJob, "hidrivenext.sync.networkjob.checkserver", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCheckRedirectCostFreeUrlJob, "hidrivenext.sync.networkjob.checkredirectcostfreeurl", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropfindJob, "hidrivenext.sync.networkjob.propfind", QtInfoMsg) +Q_LOGGING_CATEGORY(lcAvatarJob, "hidrivenext.sync.networkjob.avatar", QtInfoMsg) +Q_LOGGING_CATEGORY(lcMkColJob, "hidrivenext.sync.networkjob.mkcol", QtInfoMsg) +Q_LOGGING_CATEGORY(lcProppatchJob, "hidrivenext.sync.networkjob.proppatch", QtInfoMsg) +Q_LOGGING_CATEGORY(lcJsonApiJob, "hidrivenext.sync.networkjob.jsonapi", QtInfoMsg) +Q_LOGGING_CATEGORY(lcSimpleApiJob, "hidrivenext.sync.networkjob.simpleapi", QtInfoMsg) +Q_LOGGING_CATEGORY(lcDetermineAuthTypeJob, "hidrivenext.sync.networkjob.determineauthtype", QtInfoMsg) +Q_LOGGING_CATEGORY(lcSimpleFileJob, "hidrivenext.sync.networkjob.simplefilejob", QtInfoMsg) constexpr auto notModifiedStatusCode = 304; constexpr auto propfindPropElementTagName = "prop"; diff --git a/src/libsync/ocsprofileconnector.cpp b/src/libsync/ocsprofileconnector.cpp index c24d5f85f59ef..655bcdbb0e8e5 100644 --- a/src/libsync/ocsprofileconnector.cpp +++ b/src/libsync/ocsprofileconnector.cpp @@ -19,7 +19,7 @@ #include namespace { -Q_LOGGING_CATEGORY(lcOcsProfileConnector, "nextcloud.gui.ocsprofileconnector", QtInfoMsg) +Q_LOGGING_CATEGORY(lcOcsProfileConnector, "hidrivenext.gui.ocsprofileconnector", QtInfoMsg) OCC::HovercardAction jsonToAction(const QJsonObject &jsonActionObject) { diff --git a/src/libsync/ocsuserstatusconnector.cpp b/src/libsync/ocsuserstatusconnector.cpp index ac403d01d3895..0bf063fe35fcf 100644 --- a/src/libsync/ocsuserstatusconnector.cpp +++ b/src/libsync/ocsuserstatusconnector.cpp @@ -33,7 +33,7 @@ namespace { -Q_LOGGING_CATEGORY(lcOcsUserStatusConnector, "nextcloud.gui.ocsuserstatusconnector", QtInfoMsg) +Q_LOGGING_CATEGORY(lcOcsUserStatusConnector, "hidrivenext.gui.ocsuserstatusconnector", QtInfoMsg) OCC::UserStatus::OnlineStatus stringToUserOnlineStatus(const QString &status) { diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp index 6065530c63256..df823dd1caae6 100644 --- a/src/libsync/owncloudpropagator.cpp +++ b/src/libsync/owncloudpropagator.cpp @@ -50,10 +50,10 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcPropagator, "nextcloud.sync.propagator", QtInfoMsg) -Q_LOGGING_CATEGORY(lcDirectory, "nextcloud.sync.propagator.directory", QtInfoMsg) -Q_LOGGING_CATEGORY(lcRootDirectory, "nextcloud.sync.propagator.root.directory", QtInfoMsg) -Q_LOGGING_CATEGORY(lcCleanupPolls, "nextcloud.sync.propagator.cleanuppolls", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagator, "hidrivenext.sync.propagator", QtInfoMsg) +Q_LOGGING_CATEGORY(lcDirectory, "hidrivenext.sync.propagator.directory", QtInfoMsg) +Q_LOGGING_CATEGORY(lcRootDirectory, "hidrivenext.sync.propagator.root.directory", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCleanupPolls, "hidrivenext.sync.propagator.cleanuppolls", QtInfoMsg) qint64 criticalFreeSpaceLimit() { diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp index 7b2bd987c6222..af3c9f0c501ff 100644 --- a/src/libsync/propagatedownload.cpp +++ b/src/libsync/propagatedownload.cpp @@ -37,8 +37,8 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcGetJob, "nextcloud.sync.networkjob.get", QtInfoMsg) -Q_LOGGING_CATEGORY(lcPropagateDownload, "nextcloud.sync.propagator.download", QtInfoMsg) +Q_LOGGING_CATEGORY(lcGetJob, "hidrivenext.sync.networkjob.get", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagateDownload, "hidrivenext.sync.propagator.download", QtInfoMsg) // Always coming in with forward slashes. // In csync_excluded_no_ctx we ignore all files with longer than 254 chars diff --git a/src/libsync/propagatedownloadencrypted.cpp b/src/libsync/propagatedownloadencrypted.cpp index 568aa911a91fe..ffe82e53094c0 100644 --- a/src/libsync/propagatedownloadencrypted.cpp +++ b/src/libsync/propagatedownloadencrypted.cpp @@ -3,7 +3,7 @@ #include "encryptedfoldermetadatahandler.h" #include "foldermetadata.h" -Q_LOGGING_CATEGORY(lcPropagateDownloadEncrypted, "nextcloud.sync.propagator.download.encrypted", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagateDownloadEncrypted, "hidrivenext.sync.propagator.download.encrypted", QtInfoMsg) namespace OCC { diff --git a/src/libsync/propagateremotedelete.cpp b/src/libsync/propagateremotedelete.cpp index 7bc5be9528889..8ab4d56195ec0 100644 --- a/src/libsync/propagateremotedelete.cpp +++ b/src/libsync/propagateremotedelete.cpp @@ -24,7 +24,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcPropagateRemoteDelete, "nextcloud.sync.propagator.remotedelete", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagateRemoteDelete, "hidrivenext.sync.propagator.remotedelete", QtInfoMsg) void PropagateRemoteDelete::start() { diff --git a/src/libsync/propagateremotedeleteencrypted.cpp b/src/libsync/propagateremotedeleteencrypted.cpp index 0bb8c92e6a4b4..555c007516e52 100644 --- a/src/libsync/propagateremotedeleteencrypted.cpp +++ b/src/libsync/propagateremotedeleteencrypted.cpp @@ -22,7 +22,7 @@ using namespace OCC; -Q_LOGGING_CATEGORY(PROPAGATE_REMOVE_ENCRYPTED, "nextcloud.sync.propagator.remove.encrypted") +Q_LOGGING_CATEGORY(PROPAGATE_REMOVE_ENCRYPTED, "hidrivenext.sync.propagator.remove.encrypted") PropagateRemoteDeleteEncrypted::PropagateRemoteDeleteEncrypted(OwncloudPropagator *propagator, SyncFileItemPtr item, QObject *parent) : BasePropagateRemoteDeleteEncrypted(propagator, item, parent) diff --git a/src/libsync/propagateremotedeleteencryptedrootfolder.cpp b/src/libsync/propagateremotedeleteencryptedrootfolder.cpp index 849e5f2b27e21..d4d6196ac31c5 100644 --- a/src/libsync/propagateremotedeleteencryptedrootfolder.cpp +++ b/src/libsync/propagateremotedeleteencryptedrootfolder.cpp @@ -40,7 +40,7 @@ namespace { using namespace OCC; -Q_LOGGING_CATEGORY(PROPAGATE_REMOVE_ENCRYPTED_ROOTFOLDER, "nextcloud.sync.propagator.remove.encrypted.rootfolder") +Q_LOGGING_CATEGORY(PROPAGATE_REMOVE_ENCRYPTED_ROOTFOLDER, "hidrivenext.sync.propagator.remove.encrypted.rootfolder") PropagateRemoteDeleteEncryptedRootFolder::PropagateRemoteDeleteEncryptedRootFolder(OwncloudPropagator *propagator, SyncFileItemPtr item, QObject *parent) : BasePropagateRemoteDeleteEncrypted(propagator, item, parent) diff --git a/src/libsync/propagateremotemkdir.cpp b/src/libsync/propagateremotemkdir.cpp index e301beed5a723..776a4d47c2010 100644 --- a/src/libsync/propagateremotemkdir.cpp +++ b/src/libsync/propagateremotemkdir.cpp @@ -28,7 +28,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcPropagateRemoteMkdir, "nextcloud.sync.propagator.remotemkdir", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagateRemoteMkdir, "hidrivenext.sync.propagator.remotemkdir", QtInfoMsg) PropagateRemoteMkdir::PropagateRemoteMkdir(OwncloudPropagator *propagator, const SyncFileItemPtr &item) : PropagateItemJob(propagator, item) diff --git a/src/libsync/propagateremotemove.cpp b/src/libsync/propagateremotemove.cpp index ceeba7cf469b7..092c2303d95b9 100644 --- a/src/libsync/propagateremotemove.cpp +++ b/src/libsync/propagateremotemove.cpp @@ -26,8 +26,8 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcMoveJob, "nextcloud.sync.networkjob.move", QtInfoMsg) -Q_LOGGING_CATEGORY(lcPropagateRemoteMove, "nextcloud.sync.propagator.remotemove", QtInfoMsg) +Q_LOGGING_CATEGORY(lcMoveJob, "hidrivenext.sync.networkjob.move", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagateRemoteMove, "hidrivenext.sync.propagator.remotemove", QtInfoMsg) MoveJob::MoveJob(AccountPtr account, const QString &path, const QString &destination, QObject *parent) diff --git a/src/libsync/propagateupload.cpp b/src/libsync/propagateupload.cpp index b723e95858617..d9f7d55521d30 100644 --- a/src/libsync/propagateupload.cpp +++ b/src/libsync/propagateupload.cpp @@ -43,11 +43,11 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcPutJob, "nextcloud.sync.networkjob.put", QtInfoMsg) -Q_LOGGING_CATEGORY(lcPollJob, "nextcloud.sync.networkjob.poll", QtInfoMsg) -Q_LOGGING_CATEGORY(lcPropagateUpload, "nextcloud.sync.propagator.upload", QtInfoMsg) -Q_LOGGING_CATEGORY(lcPropagateUploadV1, "nextcloud.sync.propagator.upload.v1", QtInfoMsg) -Q_LOGGING_CATEGORY(lcPropagateUploadNG, "nextcloud.sync.propagator.upload.ng", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPutJob, "hidrivenext.sync.networkjob.put", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPollJob, "hidrivenext.sync.networkjob.poll", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagateUpload, "hidrivenext.sync.propagator.upload", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagateUploadV1, "hidrivenext.sync.propagator.upload.v1", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagateUploadNG, "hidrivenext.sync.propagator.upload.ng", QtInfoMsg) PUTFileJob::~PUTFileJob() { diff --git a/src/libsync/propagateuploadencrypted.cpp b/src/libsync/propagateuploadencrypted.cpp index c64483ed6f1ed..9183514ba7528 100644 --- a/src/libsync/propagateuploadencrypted.cpp +++ b/src/libsync/propagateuploadencrypted.cpp @@ -15,7 +15,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcPropagateUploadEncrypted, "nextcloud.sync.propagator.upload.encrypted", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagateUploadEncrypted, "hidrivenext.sync.propagator.upload.encrypted", QtInfoMsg) PropagateUploadEncrypted::PropagateUploadEncrypted(OwncloudPropagator *propagator, const QString &remoteParentPath, SyncFileItemPtr item, QObject *parent) : QObject(parent) diff --git a/src/libsync/propagatorjobs.cpp b/src/libsync/propagatorjobs.cpp index f165c523a815f..a3dd45e16cf35 100644 --- a/src/libsync/propagatorjobs.cpp +++ b/src/libsync/propagatorjobs.cpp @@ -40,9 +40,9 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcPropagateLocalRemove, "nextcloud.sync.propagator.localremove", QtInfoMsg) -Q_LOGGING_CATEGORY(lcPropagateLocalMkdir, "nextcloud.sync.propagator.localmkdir", QtInfoMsg) -Q_LOGGING_CATEGORY(lcPropagateLocalRename, "nextcloud.sync.propagator.localrename", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagateLocalRemove, "hidrivenext.sync.propagator.localremove", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagateLocalMkdir, "hidrivenext.sync.propagator.localmkdir", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPropagateLocalRename, "hidrivenext.sync.propagator.localrename", QtInfoMsg) QByteArray localFileIdFromFullId(const QByteArray &id) { diff --git a/src/libsync/pushnotifications.cpp b/src/libsync/pushnotifications.cpp index 89ca8221b75a8..19aee7dbb86df 100644 --- a/src/libsync/pushnotifications.cpp +++ b/src/libsync/pushnotifications.cpp @@ -23,7 +23,7 @@ static constexpr int PING_INTERVAL = 30 * 1000; namespace OCC { -Q_LOGGING_CATEGORY(lcPushNotifications, "nextcloud.sync.pushnotifications", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPushNotifications, "hidrivenext.sync.pushnotifications", QtInfoMsg) PushNotifications::PushNotifications(Account *account, QObject *parent) : QObject(parent) diff --git a/src/libsync/putmultifilejob.cpp b/src/libsync/putmultifilejob.cpp index 46b15f8b58ffa..5e76c1b8849b5 100644 --- a/src/libsync/putmultifilejob.cpp +++ b/src/libsync/putmultifilejob.cpp @@ -18,7 +18,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcPutMultiFileJob, "nextcloud.sync.networkjob.put.multi", QtInfoMsg) +Q_LOGGING_CATEGORY(lcPutMultiFileJob, "hidrivenext.sync.networkjob.put.multi", QtInfoMsg) PutMultiFileJob::PutMultiFileJob(AccountPtr account, const QUrl &url, diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index 682ff0fe40d77..9092a8cf2d818 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -61,7 +61,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcEngine, "nextcloud.sync.engine", QtInfoMsg) +Q_LOGGING_CATEGORY(lcEngine, "hidrivenext.sync.engine", QtInfoMsg) bool SyncEngine::s_anySyncRunning = false; diff --git a/src/libsync/syncfileitem.cpp b/src/libsync/syncfileitem.cpp index c21c930660506..b52b2e2037104 100644 --- a/src/libsync/syncfileitem.cpp +++ b/src/libsync/syncfileitem.cpp @@ -24,7 +24,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcFileItem, "nextcloud.sync.fileitem", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFileItem, "hidrivenext.sync.fileitem", QtInfoMsg) namespace EncryptionStatusEnums { diff --git a/src/libsync/syncfilestatustracker.cpp b/src/libsync/syncfilestatustracker.cpp index 67ad27ad0e59e..faf8fab37b67f 100644 --- a/src/libsync/syncfilestatustracker.cpp +++ b/src/libsync/syncfilestatustracker.cpp @@ -24,7 +24,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcStatusTracker, "nextcloud.sync.statustracker", QtInfoMsg) +Q_LOGGING_CATEGORY(lcStatusTracker, "hidrivenext.sync.statustracker", QtInfoMsg) static int pathCompare( const QString& lhs, const QString& rhs ) { diff --git a/src/libsync/updatee2eefoldermetadatajob.cpp b/src/libsync/updatee2eefoldermetadatajob.cpp index 5ea537c816261..6c34517edd7e7 100644 --- a/src/libsync/updatee2eefoldermetadatajob.cpp +++ b/src/libsync/updatee2eefoldermetadatajob.cpp @@ -23,7 +23,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcUpdateFileDropMetadataJob, "nextcloud.sync.propagator.updatee2eefoldermetadatajob", QtInfoMsg) +Q_LOGGING_CATEGORY(lcUpdateFileDropMetadataJob, "hidrivenext.sync.propagator.updatee2eefoldermetadatajob", QtInfoMsg) } diff --git a/src/libsync/updatee2eefolderusersmetadatajob.cpp b/src/libsync/updatee2eefolderusersmetadatajob.cpp index be4ab2610121e..5e03d48a729f4 100644 --- a/src/libsync/updatee2eefolderusersmetadatajob.cpp +++ b/src/libsync/updatee2eefolderusersmetadatajob.cpp @@ -22,7 +22,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcUpdateE2eeFolderUsersMetadataJob, "nextcloud.gui.updatee2eefolderusersmetadatajob", QtInfoMsg) +Q_LOGGING_CATEGORY(lcUpdateE2eeFolderUsersMetadataJob, "hidrivenext.gui.updatee2eefolderusersmetadatajob", QtInfoMsg) UpdateE2eeFolderUsersMetadataJob::UpdateE2eeFolderUsersMetadataJob(const AccountPtr &account, SyncJournalDb *journalDb, diff --git a/src/libsync/updatemigratede2eemetadatajob.cpp b/src/libsync/updatemigratede2eemetadatajob.cpp index 1dbf5bdddf45e..5e9c6252a414b 100644 --- a/src/libsync/updatemigratede2eemetadatajob.cpp +++ b/src/libsync/updatemigratede2eemetadatajob.cpp @@ -22,7 +22,7 @@ namespace OCC { -Q_LOGGING_CATEGORY(lcUpdateMigratedE2eeMetadataJob, "nextcloud.sync.propagator.updatemigratede2eemetadatajob", QtInfoMsg) +Q_LOGGING_CATEGORY(lcUpdateMigratedE2eeMetadataJob, "hidrivenext.sync.propagator.updatemigratede2eemetadatajob", QtInfoMsg) } diff --git a/src/libsync/vfs/cfapi/cfapiwrapper.cpp b/src/libsync/vfs/cfapi/cfapiwrapper.cpp index 645dcfc8015e4..f99a66ae1620e 100644 --- a/src/libsync/vfs/cfapi/cfapiwrapper.cpp +++ b/src/libsync/vfs/cfapi/cfapiwrapper.cpp @@ -35,7 +35,7 @@ #include "config.h" -Q_LOGGING_CATEGORY(lcCfApiWrapper, "nextcloud.sync.vfs.cfapi.wrapper", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCfApiWrapper, "hidrivenext.sync.vfs.cfapi.wrapper", QtInfoMsg) #define FIELD_SIZE( type, field ) ( sizeof( ( (type*)0 )->field ) ) #define CF_SIZE_OF_OP_PARAM( field ) \ diff --git a/src/libsync/vfs/cfapi/hydrationjob.cpp b/src/libsync/vfs/cfapi/hydrationjob.cpp index 32ef42ee1997a..58627eb100c92 100644 --- a/src/libsync/vfs/cfapi/hydrationjob.cpp +++ b/src/libsync/vfs/cfapi/hydrationjob.cpp @@ -26,7 +26,7 @@ #include #include -Q_LOGGING_CATEGORY(lcHydration, "nextcloud.sync.vfs.hydrationjob", QtInfoMsg) +Q_LOGGING_CATEGORY(lcHydration, "hidrivenext.sync.vfs.hydrationjob", QtInfoMsg) OCC::HydrationJob::HydrationJob(QObject *parent) : QObject(parent) diff --git a/src/libsync/vfs/cfapi/vfs_cfapi.cpp b/src/libsync/vfs/cfapi/vfs_cfapi.cpp index a81b6606f69a3..87e230b3022cd 100644 --- a/src/libsync/vfs/cfapi/vfs_cfapi.cpp +++ b/src/libsync/vfs/cfapi/vfs_cfapi.cpp @@ -29,7 +29,7 @@ #include -Q_LOGGING_CATEGORY(lcCfApi, "nextcloud.sync.vfs.cfapi", QtInfoMsg) +Q_LOGGING_CATEGORY(lcCfApi, "hidrivenext.sync.vfs.cfapi", QtInfoMsg) namespace cfapi { using namespace OCC::CfApiWrapper; diff --git a/src/libsync/vfs/suffix/vfs_suffix.cpp b/src/libsync/vfs/suffix/vfs_suffix.cpp index 71dd2b9774b37..c9c3a0d70a85c 100644 --- a/src/libsync/vfs/suffix/vfs_suffix.cpp +++ b/src/libsync/vfs/suffix/vfs_suffix.cpp @@ -21,7 +21,7 @@ #include #include -Q_LOGGING_CATEGORY(lcVfsSuffix, "nextcloud.sync.vfs.suffix", QtInfoMsg) +Q_LOGGING_CATEGORY(lcVfsSuffix, "hidrivenext.sync.vfs.suffix", QtInfoMsg) namespace OCC { diff --git a/src/libsync/vfs/xattr/vfs_xattr.cpp b/src/libsync/vfs/xattr/vfs_xattr.cpp index cf81294e9c247..e93857dafd40e 100644 --- a/src/libsync/vfs/xattr/vfs_xattr.cpp +++ b/src/libsync/vfs/xattr/vfs_xattr.cpp @@ -22,7 +22,7 @@ #include #include -Q_LOGGING_CATEGORY(lcVfsXAttr, "nextcloud.sync.vfs.xattr", QtInfoMsg) +Q_LOGGING_CATEGORY(lcVfsXAttr, "hidrivenext.sync.vfs.xattr", QtInfoMsg) namespace xattr { using namespace OCC::XAttrWrapper; diff --git a/src/libsync/vfs/xattr/xattrwrapper_linux.cpp b/src/libsync/vfs/xattr/xattrwrapper_linux.cpp index a9ddc46396daf..f595dfca91353 100644 --- a/src/libsync/vfs/xattr/xattrwrapper_linux.cpp +++ b/src/libsync/vfs/xattr/xattrwrapper_linux.cpp @@ -20,7 +20,7 @@ #include -Q_LOGGING_CATEGORY(lcXAttrWrapper, "nextcloud.sync.vfs.xattr.wrapper", QtInfoMsg) +Q_LOGGING_CATEGORY(lcXAttrWrapper, "hidrivenext.sync.vfs.xattr.wrapper", QtInfoMsg) namespace { constexpr auto hydrateExecAttributeName = "user.nextcloud.hydrate_exec"; diff --git a/test/endtoendtestutils.cpp b/test/endtoendtestutils.cpp index a25a7e145b9b4..cf3bf2c941be4 100644 --- a/test/endtoendtestutils.cpp +++ b/test/endtoendtestutils.cpp @@ -29,7 +29,7 @@ constexpr auto serverUrl = "https://server"; -Q_LOGGING_CATEGORY(lcEndToEndTestUtils, "nextcloud.gui.endtoendtestutils", QtInfoMsg) +Q_LOGGING_CATEGORY(lcEndToEndTestUtils, "hidrivenext.gui.endtoendtestutils", QtInfoMsg) /** End to end test credentials access manager class **/ diff --git a/test/pushnotificationstestutils.cpp b/test/pushnotificationstestutils.cpp index 389d41dd7f542..2b958594c648f 100644 --- a/test/pushnotificationstestutils.cpp +++ b/test/pushnotificationstestutils.cpp @@ -7,7 +7,7 @@ #include "pushnotificationstestutils.h" #include "pushnotifications.h" -Q_LOGGING_CATEGORY(lcFakeWebSocketServer, "nextcloud.test.fakewebserver", QtInfoMsg) +Q_LOGGING_CATEGORY(lcFakeWebSocketServer, "hidrivenext.test.fakewebserver", QtInfoMsg) FakeWebSocketServer::FakeWebSocketServer(quint16 port, QObject *parent) : QObject(parent) From 3dfbc1cbc16ac7200dcf76cfe8170bf928fa7c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 4 Feb 2025 13:47:00 +0100 Subject: [PATCH 080/104] SES-309 Increased Size to fixed clipped icon --- src/gui/sessnackbar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/sessnackbar.cpp b/src/gui/sessnackbar.cpp index 52c4883e990f9..00b22991e3589 100644 --- a/src/gui/sessnackbar.cpp +++ b/src/gui/sessnackbar.cpp @@ -34,7 +34,7 @@ namespace OCC { m_iconLabel.setObjectName("sesSnackBarIcon"); m_iconLabel.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - m_iconLabel.setFixedSize(16, 16); + m_iconLabel.setFixedSize(24, 24); layout->addWidget(&m_captionLabel); layout->addSpacerItem(new QSpacerItem(8, 0, QSizePolicy::Fixed, QSizePolicy::Fixed)); From 9bf35322fa2d7ed754d0b4397d2b3ed7eb00029e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Fri, 7 Feb 2025 09:41:58 +0100 Subject: [PATCH 081/104] SES-279 Fixed Sizeing and clipping of FolderCreationDialog --- src/gui/foldercreationdialog.cpp | 15 ++++++++++----- src/gui/foldercreationdialog.h | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/gui/foldercreationdialog.cpp b/src/gui/foldercreationdialog.cpp index 8cd44a51447a2..ba7c0d01b06b8 100644 --- a/src/gui/foldercreationdialog.cpp +++ b/src/gui/foldercreationdialog.cpp @@ -92,27 +92,31 @@ void FolderCreationDialog::slotNewFolderNameEditTextEdited() if (!ui->newFolderNameEdit->text().isEmpty() && QDir(_destination + "/" + ui->newFolderNameEdit->text()).exists()) { ui->errorSnackbar->setVisible(true); ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); + sizeDialog(); + } else { ui->errorSnackbar->setVisible(false); ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); + sizeDialog(); } } +void FolderCreationDialog::sizeDialog(){ + adjustSize(); + setFixedWidth(626); + setFixedHeight(sizeHint().height()); +} + void FolderCreationDialog::customizeStyle() { ui->buttonBox->setLayoutDirection(Qt::RightToLeft); - QDialog *dialog = qobject_cast(this); - dialog->setMinimumSize(626, 156); - QPushButton *okButton = ui->buttonBox->button(QDialogButtonBox::Ok); okButton->setProperty("buttonStyle", QVariant::fromValue(OCC::ButtonStyleName::Primary)); QHBoxLayout* buttonlayout = qobject_cast(ui->buttonBox->layout()); buttonlayout->setSpacing(16); - ui->errorSnackbar->setFixedHeight(46); - ui->newFolderNameEdit->setStyleSheet( QStringLiteral( "color: %1; font-family: %2; font-size: %3; font-weight: %4; border-radius: %5; border: 1px " @@ -131,5 +135,6 @@ void FolderCreationDialog::customizeStyle() buttonlayout->setSpacing(32); #endif + sizeDialog(); } } \ No newline at end of file diff --git a/src/gui/foldercreationdialog.h b/src/gui/foldercreationdialog.h index 78d582a41e24d..d03034028cd7b 100644 --- a/src/gui/foldercreationdialog.h +++ b/src/gui/foldercreationdialog.h @@ -45,6 +45,7 @@ private slots: QString _destination; void customizeStyle(); + void sizeDialog(); }; } From 01dce116e4dc74cfc71cd8b8b54ede0ff6ba2636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 11 Feb 2025 10:45:01 +0100 Subject: [PATCH 082/104] SES-316 Added CompilerFlag for IONOS-Builds to remove certain code without using comments --- .vscode/c_cpp_properties.json | 14 ++++++++++++++ CMakeLists.txt | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 .vscode/c_cpp_properties.json diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000000000..3f0c64ea209b8 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,14 @@ +{ + "configurations": [ + { + "name": "Linux", + "compileCommands": [ + "${workspaceFolder}/../build/win32-MSVC-x64/RelWithDebInfo/compile_commands.json" + ], + "intelliSenseMode": "linux-gcc-x64", + "cStandard": "c17", + "cppStandard": "c++17" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c3514557386b..d90aec29e8846 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,8 @@ cmake_policy(SET CMP0071 NEW) # Enable use of QtQuick compiler/generated code project(client) +add_compile_definitions(IONOS_BUILD) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) if(APPLE) set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0" CACHE STRING "Minimum OSX deployment version") endif() From 3ce79e33f4f147306fd3e313c741d7bc2c291b0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 11 Feb 2025 13:08:56 +0100 Subject: [PATCH 083/104] SES-316 switched some comments to #ifdef --- src/gui/accountsettings.cpp | 41 ++++++++++++++++++++----------------- src/gui/generalsettings.cpp | 2 ++ src/gui/settingsdialog.cpp | 13 +++++++----- 3 files changed, 32 insertions(+), 24 deletions(-) diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index 657946aabe751..5465895bda40e 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -1222,25 +1222,28 @@ void AccountSettings::disableEncryptionForAccount(const AccountPtr &account) con void AccountSettings::showConnectionLabel(const QString &message, QStringList errors) { - // SES-4 Removed - // const auto errStyle = QLatin1String("color:#ffffff; background-color:#bb4d4d;padding:5px;" - // "border-width: 1px; border-style: solid; border-color: #aaaaaa;" - // "border-radius:5px;"); - // if (errors.isEmpty()) { - // auto msg = message; - // Theme::replaceLinkColorStringBackgroundAware(msg); - // _ui->connectLabel->setText(msg); - // _ui->connectLabel->setToolTip({}); - // _ui->connectLabel->setStyleSheet({}); - // } else { - // errors.prepend(message); - // auto userFriendlyMsg = errors.join(QLatin1String("
      ")); - // qCDebug(lcAccountSettings) << userFriendlyMsg; - // Theme::replaceLinkColorString(userFriendlyMsg, QColor("#c1c8e6")); - // _ui->connectLabel->setText(userFriendlyMsg); - // _ui->connectLabel->setToolTip({}); - // _ui->connectLabel->setStyleSheet(errStyle); - // } + + #ifndef IONOS_BUILD + //SES-4 Removed + const auto errStyle = QLatin1String("color:#ffffff; background-color:#bb4d4d;padding:5px;" + "border-width: 1px; border-style: solid; border-color: #aaaaaa;" + "border-radius:5px;"); + if (errors.isEmpty()) { + auto msg = message; + Theme::replaceLinkColorStringBackgroundAware(msg); + _ui->connectLabel->setText(msg); + _ui->connectLabel->setToolTip({}); + _ui->connectLabel->setStyleSheet({}); + } else { + errors.prepend(message); + auto userFriendlyMsg = errors.join(QLatin1String("
      ")); + qCDebug(lcAccountSettings) << userFriendlyMsg; + Theme::replaceLinkColorString(userFriendlyMsg, QColor("#c1c8e6")); + _ui->connectLabel->setText(userFriendlyMsg); + _ui->connectLabel->setToolTip({}); + _ui->connectLabel->setStyleSheet(errStyle); + } + #endif _ui->accountStatus->setVisible(false); } diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index ae704227b75ef..12b4f66406178 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -673,11 +673,13 @@ void GeneralSettings::customizeStyle() _ui->dataProtectionBoxLayout->setMargin(16); #endif +#ifdef IONOS_BUILD // SES-4 removed _ui->monoIconsCheckBox->hide(); _ui->callNotificationsCheckBox->hide(); _ui->advanced_groupBox->hide(); _ui->updates_frame->hide(); +#endif #if defined(BUILD_UPDATER) // updater info diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index 4eed10c7330ac..2a14e7027c79b 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -136,12 +136,15 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) // Connect styleChanged events to our widgets, so they can adapt (Dark-/Light-Mode switching) connect(this, &SettingsDialog::styleChanged, generalSettings, &GeneralSettings::slotStyleChanged); + #ifndef IONOS_BUILD // SES-4 removed network settings - // QAction *networkAction = createColorAwareAction(QLatin1String(":/client/theme/network.svg"), tr("Network")); - // _actionGroup->addAction(networkAction); - // _toolBar->addAction(networkAction); - // auto *networkSettings = new NetworkSettings; - // _ui->stack->addWidget(networkSettings); + QAction *networkAction = createColorAwareAction(QLatin1String(":/client/theme/network.svg"), tr("Network")); + _actionGroup->addAction(networkAction); + _toolBar->addAction(networkAction); + auto *networkSettings = new NetworkSettings; + _ui->stack->addWidget(networkSettings); + + #endif _actionGroupWidgets.insert(generalAction, generalSettings); // _actionGroupWidgets.insert(networkAction, networkSettings); From 749de8f2b57f8f0eb5487bd4ca5d6883489d726c Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Tue, 11 Feb 2025 09:58:25 +0100 Subject: [PATCH 084/104] Add ApplicationName to friendlyUserAgentString --- src/common/utility.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/utility.cpp b/src/common/utility.cpp index 782700c7bc893..f93a1a4efa055 100644 --- a/src/common/utility.cpp +++ b/src/common/utility.cpp @@ -179,8 +179,8 @@ QByteArray Utility::userAgentString() QByteArray Utility::friendlyUserAgentString() { - const auto pattern = QStringLiteral("%1 (Desktop Client - %2)"); - const auto userAgent = pattern.arg(QSysInfo::machineHostName(), platform()); + const auto pattern = QStringLiteral("%1 (%2 Desktop Client - %3)"); + const auto userAgent = pattern.arg(QSysInfo::machineHostName(), qApp->applicationName(), platform()); return userAgent.toUtf8(); } From b4732cb35f3975808d3d96566fa547e3587306fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 11 Feb 2025 15:11:26 +0100 Subject: [PATCH 085/104] SES-307 Fixed Custom Permission Box Since one of the 2 (3) modes is alway selected, there is no case in which this checkbox should not be checked --- src/gui/filedetails/ShareDetailsPage.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gui/filedetails/ShareDetailsPage.qml b/src/gui/filedetails/ShareDetailsPage.qml index 539f0ca207588..a330bad890609 100644 --- a/src/gui/filedetails/ShareDetailsPage.qml +++ b/src/gui/filedetails/ShareDetailsPage.qml @@ -663,7 +663,8 @@ Page { id: customPermissionsCheckBox Layout.fillWidth: true enabled: !root.isSharePermissionChangeInProgress - checked: root.currentPermissionMode === permissionMode + checkable: false + checked: true text: qsTr("Custom Permissions") spacing: scrollContentsColumn.indicatorSpacing padding: scrollContentsColumn.itemPadding From 3cef5c0b16f346e93a882624e01c8a9782762457 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 11 Feb 2025 15:12:42 +0100 Subject: [PATCH 086/104] SES-307 Hide Checkbox for Filedrop only on "Internal Shares" https://docs.nextcloud.com/server/latest/user_manual/en/files/sharing.html --- src/gui/filedetails/ShareDetailsPage.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gui/filedetails/ShareDetailsPage.qml b/src/gui/filedetails/ShareDetailsPage.qml index a330bad890609..b694045ba1eba 100644 --- a/src/gui/filedetails/ShareDetailsPage.qml +++ b/src/gui/filedetails/ShareDetailsPage.qml @@ -86,6 +86,7 @@ Page { readonly property bool isHideDownloadInProgress: shareModelData.isHideDownloadInProgress readonly property int currentPermissionMode: shareModelData.currentPermissionMode + readonly property bool isInternalShare: shareModelData.shareType === ShareModel.ShareTypeUser || shareModelData.shareType === ShareModel.ShareTypeGroup || shareModelData.shareType === ShareModel.ShareTypeCircle readonly property bool isLinkShare: shareModelData.shareType === ShareModel.ShareTypeLink readonly property bool isEmailShare: shareModelData.shareType === ShareModel.ShareTypeEmail readonly property bool shareSupportsPassword: isLinkShare || isEmailShare @@ -724,7 +725,7 @@ Page { spacing: scrollContentsColumn.indicatorSpacing padding: scrollContentsColumn.itemPadding onClicked: root.permissionModeChanged(permissionMode) - visible: customPermissionsCheckBox.checked & false // Removed SES-307 + visible: customPermissionsCheckBox.checked && !root.isInternalShare // Removed SES-307 font.pixelSize: pixelSize font.weight: fontWeight } From 75a2ce8172ccb691e85c326736d9886b52ab9f13 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Wed, 12 Feb 2025 16:21:01 +0100 Subject: [PATCH 087/104] SES-209 add adr --- doc/ADR/20250212_UseCostomizationService.md | 69 +++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 doc/ADR/20250212_UseCostomizationService.md diff --git a/doc/ADR/20250212_UseCostomizationService.md b/doc/ADR/20250212_UseCostomizationService.md new file mode 100644 index 0000000000000..2131d2188ea8f --- /dev/null +++ b/doc/ADR/20250212_UseCostomizationService.md @@ -0,0 +1,69 @@ +# Use Customization Service + +## Status + +accepted + +## Context + +Nextcloud (NC) offers a customization service. The service is a Nextcloud white-labeling offering. It allows customers and their forks to be redesigned according to their own specifications. There are two levels. + +### Brander + +Here, the icons, names, and technical aspects are being adjusted to release a simply redesigned, color-enhanced Nextcloud. + +### Actual Customization Service + +This will integrate deeper changes into the branded client. This could be anything, in principle. + +For this to work we need to create Pull-Requests against the branches of the nextcloud repo. These pull requests can not depend on the same code line. + +More information can be read [here](https://portal.nextcloud.com/article/Branding/Customization-Service) + +### Workflow on the Repo + +A PR always has a source branch and a target branch. The target branch must be `master` in our case. Source branches can follow our established workflow. However, there are some conditions: + +- Concurrent work on different features must be possible. +- Local builds must be possible for testing purposes. +- A nightly/onPush build might be desirable. +- It must be ensured that everyone has an up-to-date status with all PRs. + +There are two possible Solutions: + +1. We use one Pull-Request containing all changes. +2. We use multiple Pull requests containing changes grouped by files. + +## Decision + +We will use only one PR containing all our changes. + +At this point in time, it would be too much work to split all Changes into separate branches/PRs. + +## Implementation Details + +### Branching + +- We use the master branch only for pulling the updated nc/master branch. +- We have a separate develop branch to develop changes. +- We create a PR to nc/masetr from develop. + +## Consequences + +### Positive + +- We can use our existing git-workflow +- We have a simple repo-structure with only 2 really needed branches +- It is easy to build locally, because all changes are on one branch +- Less Branches to backport +- We do not need to sort every change to a separate PR + +### Negative + +- Merge conflicts can be complex +- The PR will contain all the changes, this could be overwhelming to check + +### Further Thoughts + +- We need to see how this works in practice +- This is not final \ No newline at end of file From c4cdffd08bb4a80fced43323653dadf59620f8f6 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Wed, 12 Feb 2025 16:21:15 +0100 Subject: [PATCH 088/104] SES-207 lint other adr --- doc/ADR/20241007_TrackingWithGA4.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ADR/20241007_TrackingWithGA4.md b/doc/ADR/20241007_TrackingWithGA4.md index 522a6f3c87c79..8422656e3ddc1 100644 --- a/doc/ADR/20241007_TrackingWithGA4.md +++ b/doc/ADR/20241007_TrackingWithGA4.md @@ -28,4 +28,5 @@ GAnalytics acts as an intermediary between the outer layer (DataCollectionWrappe The GAnalyticsWorker contains a queue, a message loop, and a QNetworkAccessManager. At fixed intervals, the queue is checked for tracking calls, which are then sent to the GA4 interface. If multiple calls are present, the connection is kept alive until all tracking calls have been sent. ## Consequences + This approach allows client-side tracking using GA4, bridging the gap between web and desktop tracking. The modular design simplifies maintenance by separating tracking logic from communication handling. Usage is straightforward; the application simply calls the DataCollectionWrapper at points where tracking should occur, ensuring that actions and events are recorded seamlessly. However, relying on a reverse-engineered solution introduces risks of future incompatibility with GA4 updates. Managing a queue and network connection adds complexity, and there might be latency when batching tracking calls. Overall, the solution balances functionality with maintainability but carries some technical risks. From 783c2c36ed9bc53bd7ad212ff52a203aaeccbc61 Mon Sep 17 00:00:00 2001 From: Kevin Beraz Date: Thu, 13 Feb 2025 14:49:27 +0100 Subject: [PATCH 089/104] SES-323 hide share options for virtual files --- .../FileProviderUIExt/ShareViewController.xib | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareViewController.xib b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareViewController.xib index 7a61de7033656..f64580297a7d3 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareViewController.xib +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareViewController.xib @@ -242,6 +242,8 @@ + From b1b02da21c516a6644e8dcf6b8f8d91c73069c27 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Mon, 17 Feb 2025 12:05:30 +0100 Subject: [PATCH 090/104] SES-326 accept solutions instead of rejecting them --- src/gui/ResolveConflictsDialog.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/ResolveConflictsDialog.qml b/src/gui/ResolveConflictsDialog.qml index eb674d430cdce..2e77d1189b109 100644 --- a/src/gui/ResolveConflictsDialog.qml +++ b/src/gui/ResolveConflictsDialog.qml @@ -216,7 +216,7 @@ ApplicationWindow { bgNormalOpacity: 1.0 bgHoverOpacity: Style.hoverOpacity - onClicked: buttonBox.onRejected() + onClicked: buttonBox.onAccepted() } SesCustomButton { From f0a661eaa597ed679a62c1628dde4fd378f9589b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 18 Feb 2025 14:18:16 +0100 Subject: [PATCH 091/104] SES-209 CS compatibility changes --- .github/workflows/clang-tidy-review.yml | 3 +-- .../workflows/linux-clang-compile-tests.yml | 3 +-- .github/workflows/linux-gcc-compile-tests.yml | 3 +-- .github/workflows/sonarcloud.yml | 3 +-- .vscode/launch.json | 2 +- IONOS.cmake | 12 +++++++----- admin/win/msi/gui/banner.bmp | Bin 85978 -> 85894 bytes admin/win/msi/gui/dialog.bmp | Bin 619346 -> 464774 bytes theme/colored/ionos_hidrive_next-icon.svg | 4 ++++ theme/colored/ionoshidrivenext-icon.svg | 4 ++++ 10 files changed, 20 insertions(+), 14 deletions(-) create mode 100644 theme/colored/ionos_hidrive_next-icon.svg create mode 100644 theme/colored/ionoshidrivenext-icon.svg diff --git a/.github/workflows/clang-tidy-review.yml b/.github/workflows/clang-tidy-review.yml index d8b0b989cbc18..e522ce518c9c1 100644 --- a/.github/workflows/clang-tidy-review.yml +++ b/.github/workflows/clang-tidy-review.yml @@ -1,8 +1,7 @@ name: clang-tidy-review on: - pull_request: - types: [opened, synchronize, reopened] + workflow_dispatch: jobs: clang-tidy: diff --git a/.github/workflows/linux-clang-compile-tests.yml b/.github/workflows/linux-clang-compile-tests.yml index 9345c21e6f6b1..f7c4afdb0aeb8 100644 --- a/.github/workflows/linux-clang-compile-tests.yml +++ b/.github/workflows/linux-clang-compile-tests.yml @@ -1,7 +1,6 @@ name: Linux Clang compilation and tests on: - pull_request: - types: [opened, synchronize, reopened] + workflow_dispatch: jobs: build: name: Linux Clang compilation and tests diff --git a/.github/workflows/linux-gcc-compile-tests.yml b/.github/workflows/linux-gcc-compile-tests.yml index 2d556eea2ae99..a435d6baaff08 100644 --- a/.github/workflows/linux-gcc-compile-tests.yml +++ b/.github/workflows/linux-gcc-compile-tests.yml @@ -1,7 +1,6 @@ name: Linux GCC compilation and tests on: - pull_request: - types: [opened, synchronize, reopened] + workflow_dispatch: jobs: build: name: Linux GCC compilation and tests diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index 59ec83b32ce68..a064ee4bd8deb 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -1,7 +1,6 @@ name: SonarCloud analysis on: - pull_request: - types: [opened, synchronize, reopened] + workflow_dispatch: jobs: build: name: SonarCloud analysis diff --git a/.vscode/launch.json b/.vscode/launch.json index 9d21d2a933254..f123a092fbd16 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,7 +9,7 @@ "name": "(RelWithDebInfo) Launch HiDriveNext", "type": "cppvsdbg", "request": "launch", - "program": "${workspaceFolder}/../build/win32-MSVC-x64/RelWithDebInfo/bin/HiDriveNext.exe", + "program": "${workspaceFolder}/../build/win32-MSVC-x64/RelWithDebInfo/bin/ionos_hidrive_next.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", diff --git a/IONOS.cmake b/IONOS.cmake index b0222d133a146..53448ebc4d0fc 100644 --- a/IONOS.cmake +++ b/IONOS.cmake @@ -1,7 +1,8 @@ -set( APPLICATION_NAME "HiDrive Next" ) -set( APPLICATION_SHORTNAME "HiDriveNext" ) -set( APPLICATION_EXECUTABLE "HiDriveNext" ) -set( APPLICATION_CONFIG_NAME "${APPLICATION_EXECUTABLE}" ) +set( APPLICATION_NAME "IONOS HiDrive Next" ) +set( APPLICATION_SHORTNAME "IONOSHiDriveNext" ) +set( APPLICATION_EXECUTABLE "IONOS_HiDrive_Next" ) +# set( APPLICATION_CONFIG_NAME "${APPLICATION_EXECUTABLE}" ) +set( APPLICATION_CONFIG_NAME "IONOS-HiDrive-Next" ) set( APPLICATION_DOMAIN "ionos.com" ) set( APPLICATION_VENDOR "IONOS SE" ) set( APPLICATION_UPDATE_URL "https://customerupdates.nextcloud.com/client/" CACHE STRING "URL for updater" ) @@ -11,7 +12,8 @@ if(APPLE AND APPLICATION_NAME STREQUAL "HiDrive Next" AND EXISTS "${CMAKE_SOURCE set( APPLICATION_ICON_NAME "hidrivenext-macOS" ) message("Using macOS-specific application icon: ${APPLICATION_ICON_NAME}") else() - set( APPLICATION_ICON_NAME "${APPLICATION_SHORTNAME}" ) + # set( APPLICATION_ICON_NAME "${APPLICATION_SHORTNAME}" ) + set( APPLICATION_ICON_NAME "ionos_hidrive_next" ) endif() set( APPLICATION_ICON_SET "SVG" ) diff --git a/admin/win/msi/gui/banner.bmp b/admin/win/msi/gui/banner.bmp index 5270a99dea084175b16de1eb879f42cbc2d9bea2..7eba2ce1a7700f2010105784749f73ba19ef0247 100644 GIT binary patch literal 85894 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 Apa1{> delta 160 zcmZph&w6Vi!jg5_k)6&w^fS7IO%$c0FT-TX3V)~5``WYBlz?_XbTU{mwY}x#m^@$yRdLlOf DQ!g+p diff --git a/admin/win/msi/gui/dialog.bmp b/admin/win/msi/gui/dialog.bmp index b870b472556dfb47177bd600b204c1453d492fd6..f548941594d7772eb466a98a2a3b3e6e037548a0 100644 GIT binary patch literal 464774 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 literal 619346 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 F{C`t&OI82? diff --git a/theme/colored/ionos_hidrive_next-icon.svg b/theme/colored/ionos_hidrive_next-icon.svg new file mode 100644 index 0000000000000..e768c954e7e46 --- /dev/null +++ b/theme/colored/ionos_hidrive_next-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/theme/colored/ionoshidrivenext-icon.svg b/theme/colored/ionoshidrivenext-icon.svg new file mode 100644 index 0000000000000..e768c954e7e46 --- /dev/null +++ b/theme/colored/ionoshidrivenext-icon.svg @@ -0,0 +1,4 @@ + + + + From 0b70d0ee1dfbdf6d4156e99b2616ae44d8c7b926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Thu, 27 Feb 2025 09:13:41 +0100 Subject: [PATCH 092/104] SES-332 Removed trailing "/" and used localization for urls --- src/gui/generalsettings.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index 12b4f66406178..92085f4045ce1 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -304,22 +304,22 @@ void GeneralSettings::connectToTracking() void GeneralSettings::slotOpenMoreInformationLink() { - QDesktopServices::openUrl(QUrl("https://wl.hidrive.com/easy/0007/")); + QDesktopServices::openUrl(QUrl(tr("https://wl.hidrive.com/easy/0007"))); } void GeneralSettings::slotOpenLegalNoticeLink() { - QDesktopServices::openUrl(QUrl("https://wl.hidrive.com/easy/0004/")); + QDesktopServices::openUrl(QUrl(tr("https://wl.hidrive.com/easy/0004"))); } void GeneralSettings::slotOpenOpenSourceLink() { - QDesktopServices::openUrl(QUrl("https://wl.hidrive.com/easy/0006")); + QDesktopServices::openUrl(QUrl(tr("https://wl.hidrive.com/easy/0006"))); } void GeneralSettings::slotOpenPrivacyLink() { - QDesktopServices::openUrl(QUrl("https://wl.hidrive.com/easy/0005/")); + QDesktopServices::openUrl(QUrl(tr("https://wl.hidrive.com/easy/0005"))); } QSize GeneralSettings::sizeHint() const From d49670f9c7c0659cc35bacbfcd5912b73c6d2c82 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 27 Feb 2025 18:24:27 +0100 Subject: [PATCH 093/104] SES-209 use new naming scheme in start.sh --- admin/osx/ionos_macmaker/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/osx/ionos_macmaker/start.sh b/admin/osx/ionos_macmaker/start.sh index 18cd34c916ccf..09a6fb896f469 100755 --- a/admin/osx/ionos_macmaker/start.sh +++ b/admin/osx/ionos_macmaker/start.sh @@ -41,7 +41,7 @@ done export MACOSX_DEPLOYMENT_TARGET=10.15 # Some variables -PRODUCT_NAME="HiDrive Next" +PRODUCT_NAME="IONOS HiDrive Next" REPO_ROOT_DIR="../../.." CRAFT_DIR=~/Craft64 PRODUCT_DIR=$BUILD_DIR/product From e620d9795b7c63a6b4e360033877c2e41d51e0e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 4 Mar 2025 11:26:30 +0100 Subject: [PATCH 094/104] Reverted changes to Installer banner & dialog.bmp --- admin/win/msi/gui/banner.bmp | Bin 85894 -> 85978 bytes admin/win/msi/gui/dialog.bmp | Bin 464774 -> 619346 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/admin/win/msi/gui/banner.bmp b/admin/win/msi/gui/banner.bmp index 7eba2ce1a7700f2010105784749f73ba19ef0247..5270a99dea084175b16de1eb879f42cbc2d9bea2 100644 GIT binary patch delta 160 zcmZph&w6Vi!jg5_k)6&w^fS7IO%$c0FT-TX3V)~5``WYBlz?_XbTU{mwY}x#m^@$yRdLlOf DQ!g+p literal 85894 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 Apa1{> diff --git a/admin/win/msi/gui/dialog.bmp b/admin/win/msi/gui/dialog.bmp index f548941594d7772eb466a98a2a3b3e6e037548a0..b870b472556dfb47177bd600b204c1453d492fd6 100644 GIT binary patch literal 619346 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 F{C`t&OI82? literal 464774 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 From d67d3a058cd68fa20930d62cda148716055a7d60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 4 Mar 2025 14:04:11 +0100 Subject: [PATCH 095/104] SES-331 renamed VisualElementsManifest, it must have the same name as the application --- ...Manifest.xml => ionos_hidrive_next.VisualElementsManifest.xml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename theme/{hidrivenext.VisualElementsManifest.xml => ionos_hidrive_next.VisualElementsManifest.xml} (100%) diff --git a/theme/hidrivenext.VisualElementsManifest.xml b/theme/ionos_hidrive_next.VisualElementsManifest.xml similarity index 100% rename from theme/hidrivenext.VisualElementsManifest.xml rename to theme/ionos_hidrive_next.VisualElementsManifest.xml From a1397ed75187dc3a087a621a984207022e197452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 4 Mar 2025 14:04:57 +0100 Subject: [PATCH 096/104] SES-311 changed GUIDs to match Brander/CS GUIDs --- IONOS.cmake | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/IONOS.cmake b/IONOS.cmake index 53448ebc4d0fc..204ee3c4fa205 100644 --- a/IONOS.cmake +++ b/IONOS.cmake @@ -62,20 +62,20 @@ option( APPLICATION_WIZARD_USE_CUSTOM_LOGO "Use the logo from ':/client/theme/co # if(WIN32) # Context Menu - set( WIN_SHELLEXT_CONTEXT_MENU_GUID "{28F7B423-F04D-4035-9163-742ABAB2C09D}" ) + set( WIN_SHELLEXT_CONTEXT_MENU_GUID "{6B16FF7B-F242-4CE3-8FB9-F06EF127E0DC}" ) # Overlays - set( WIN_SHELLEXT_OVERLAY_GUID_ERROR "{69E48F56-3877-4D15-BE6C-148D20D9AD39}" ) - set( WIN_SHELLEXT_OVERLAY_GUID_OK "{66163328-2F7D-4727-8557-07AA1A4951D4}" ) - set( WIN_SHELLEXT_OVERLAY_GUID_OK_SHARED "{FE8E7808-F772-402A-96C5-5998ADAE34B7}" ) - set( WIN_SHELLEXT_OVERLAY_GUID_SYNC "{BE95EBD1-B334-4D70-8797-F3827DBA7884}" ) - set( WIN_SHELLEXT_OVERLAY_GUID_WARNING "{F5D52817-2813-4CF7-94E6-4D58D96E5EB3}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_ERROR "{243D887B-9F74-41DD-BACA-BC5501AF10AC}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_OK "{2D88D499-3272-4A76-84BF-D252254B40D6}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_OK_SHARED "{7BEF6B56-5B5B-4284-A70C-56D62254C97A}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_SYNC "{5F2F493D-A683-426F-925E-4CA25F17C4A9}" ) + set( WIN_SHELLEXT_OVERLAY_GUID_WARNING "{7F256BB6-29D2-4E40-A6C4-E5E756E64C82}" ) # MSI Upgrade Code (without brackets) - set( WIN_MSI_UPGRADE_CODE "DB5332BA-8B5B-43A9-8594-48263DE4E7EA" ) + set( WIN_MSI_UPGRADE_CODE "6C9E5670-E8A9-4BBD-9BDF-D003794AC177" ) # Windows build options - option( BUILD_WIN_MSI "Build MSI scripts and helper DLL" OFF ) + option( BUILD_WIN_MSI "Build MSI scripts and helper DLL" ON ) option( BUILD_WIN_TOOLS "Build Win32 migration tools" OFF ) endif() From b2a831e6c271787789320e76777503f6e6a4745b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Wed, 5 Mar 2025 09:35:02 +0100 Subject: [PATCH 097/104] Adjusted every icon to use the new correct name --- IONOS.cmake | 5 ++--- .../{hidrivenext-icon.svg => ionos_hidrive_next-icon.svg} | 0 ...next-macOS-icon.svg => ionos_hidrive_next-macOS-icon.svg} | 0 ...acOS-sidebar.svg => ionos_hidrive_next-macOS-sidebar.svg} | 0 ...next-macOS-icon.svg => ionos_hidrive_next-macOS-icon.svg} | 0 ...acOS-sidebar.svg => ionos_hidrive_next-macOS-sidebar.svg} | 0 theme/colored/ionoshidrivenext-icon.svg | 4 ---- theme/white/hidrivenext-icon.svg | 4 ---- .../ionos_hidrive_next-icon.svg} | 0 ...next-macOS-icon.svg => ionos_hidrive_next-macOS-icon.svg} | 0 ...acOS-sidebar.svg => ionos_hidrive_next-macOS-sidebar.svg} | 0 11 files changed, 2 insertions(+), 11 deletions(-) rename theme/black/{hidrivenext-icon.svg => ionos_hidrive_next-icon.svg} (100%) rename theme/black/{hidrivenext-macOS-icon.svg => ionos_hidrive_next-macOS-icon.svg} (100%) rename theme/black/{hidrivenext-macOS-sidebar.svg => ionos_hidrive_next-macOS-sidebar.svg} (100%) rename theme/colored/{hidrivenext-macOS-icon.svg => ionos_hidrive_next-macOS-icon.svg} (100%) rename theme/colored/{hidrivenext-macOS-sidebar.svg => ionos_hidrive_next-macOS-sidebar.svg} (100%) delete mode 100644 theme/colored/ionoshidrivenext-icon.svg delete mode 100644 theme/white/hidrivenext-icon.svg rename theme/{colored/hidrivenext-icon.svg => white/ionos_hidrive_next-icon.svg} (100%) rename theme/white/{hidrivenext-macOS-icon.svg => ionos_hidrive_next-macOS-icon.svg} (100%) rename theme/white/{hidrivenext-macOS-sidebar.svg => ionos_hidrive_next-macOS-sidebar.svg} (100%) diff --git a/IONOS.cmake b/IONOS.cmake index 204ee3c4fa205..843f9d28c074f 100644 --- a/IONOS.cmake +++ b/IONOS.cmake @@ -8,11 +8,10 @@ set( APPLICATION_VENDOR "IONOS SE" ) set( APPLICATION_UPDATE_URL "https://customerupdates.nextcloud.com/client/" CACHE STRING "URL for updater" ) set( APPLICATION_HELP_URL "" CACHE STRING "URL for the help menu" ) -if(APPLE AND APPLICATION_NAME STREQUAL "HiDrive Next" AND EXISTS "${CMAKE_SOURCE_DIR}/theme/colored/hidrivenext-macOS-icon.svg") - set( APPLICATION_ICON_NAME "hidrivenext-macOS" ) +if(APPLE AND APPLICATION_NAME STREQUAL "IONOS HiDrive Next") + set( APPLICATION_ICON_NAME "ionos_hidrive_next-macOS" ) message("Using macOS-specific application icon: ${APPLICATION_ICON_NAME}") else() - # set( APPLICATION_ICON_NAME "${APPLICATION_SHORTNAME}" ) set( APPLICATION_ICON_NAME "ionos_hidrive_next" ) endif() diff --git a/theme/black/hidrivenext-icon.svg b/theme/black/ionos_hidrive_next-icon.svg similarity index 100% rename from theme/black/hidrivenext-icon.svg rename to theme/black/ionos_hidrive_next-icon.svg diff --git a/theme/black/hidrivenext-macOS-icon.svg b/theme/black/ionos_hidrive_next-macOS-icon.svg similarity index 100% rename from theme/black/hidrivenext-macOS-icon.svg rename to theme/black/ionos_hidrive_next-macOS-icon.svg diff --git a/theme/black/hidrivenext-macOS-sidebar.svg b/theme/black/ionos_hidrive_next-macOS-sidebar.svg similarity index 100% rename from theme/black/hidrivenext-macOS-sidebar.svg rename to theme/black/ionos_hidrive_next-macOS-sidebar.svg diff --git a/theme/colored/hidrivenext-macOS-icon.svg b/theme/colored/ionos_hidrive_next-macOS-icon.svg similarity index 100% rename from theme/colored/hidrivenext-macOS-icon.svg rename to theme/colored/ionos_hidrive_next-macOS-icon.svg diff --git a/theme/colored/hidrivenext-macOS-sidebar.svg b/theme/colored/ionos_hidrive_next-macOS-sidebar.svg similarity index 100% rename from theme/colored/hidrivenext-macOS-sidebar.svg rename to theme/colored/ionos_hidrive_next-macOS-sidebar.svg diff --git a/theme/colored/ionoshidrivenext-icon.svg b/theme/colored/ionoshidrivenext-icon.svg deleted file mode 100644 index e768c954e7e46..0000000000000 --- a/theme/colored/ionoshidrivenext-icon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/theme/white/hidrivenext-icon.svg b/theme/white/hidrivenext-icon.svg deleted file mode 100644 index e768c954e7e46..0000000000000 --- a/theme/white/hidrivenext-icon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/theme/colored/hidrivenext-icon.svg b/theme/white/ionos_hidrive_next-icon.svg similarity index 100% rename from theme/colored/hidrivenext-icon.svg rename to theme/white/ionos_hidrive_next-icon.svg diff --git a/theme/white/hidrivenext-macOS-icon.svg b/theme/white/ionos_hidrive_next-macOS-icon.svg similarity index 100% rename from theme/white/hidrivenext-macOS-icon.svg rename to theme/white/ionos_hidrive_next-macOS-icon.svg diff --git a/theme/white/hidrivenext-macOS-sidebar.svg b/theme/white/ionos_hidrive_next-macOS-sidebar.svg similarity index 100% rename from theme/white/hidrivenext-macOS-sidebar.svg rename to theme/white/ionos_hidrive_next-macOS-sidebar.svg From e38f8386d3b9de9bc3ff61159090237df0ab7b53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Mon, 10 Mar 2025 12:11:50 +0100 Subject: [PATCH 098/104] Changed URL to pre-live-system --- IONOS.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IONOS.cmake b/IONOS.cmake index 843f9d28c074f..6914d2fe84b69 100644 --- a/IONOS.cmake +++ b/IONOS.cmake @@ -16,7 +16,7 @@ else() endif() set( APPLICATION_ICON_SET "SVG" ) -set( APPLICATION_SERVER_URL "https://easy-qa-1.nextcloud-ionos.com" CACHE STRING "URL for the server to use. If entered, the UI field will be pre-filled with it" ) +set( APPLICATION_SERVER_URL "https://storage.ionos.fr" CACHE STRING "URL for the server to use. If entered, the UI field will be pre-filled with it" ) set( APPLICATION_SERVER_URL_ENFORCE ON ) # If set and APPLICATION_SERVER_URL is defined, the server can only connect to the pre-defined URL set( APPLICATION_REV_DOMAIN "com.ionos.hidrivenext.desktopclient" ) # set( APPLICATION_VIRTUALFILE_SUFFIX "nextcloud" CACHE STRING "Virtual file suffix (not including the .)") @@ -74,7 +74,7 @@ if(WIN32) set( WIN_MSI_UPGRADE_CODE "6C9E5670-E8A9-4BBD-9BDF-D003794AC177" ) # Windows build options - option( BUILD_WIN_MSI "Build MSI scripts and helper DLL" ON ) + option( BUILD_WIN_MSI "Build MSI scripts and helper DLL" OFF ) option( BUILD_WIN_TOOLS "Build Win32 migration tools" OFF ) endif() From 3fd9f4df4d3db953bff741c32a0e71e5d1f85c2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Thu, 10 Apr 2025 15:11:16 +0200 Subject: [PATCH 099/104] SES-356 Set userAgent to correct Name --- .../FileProviderExt/FileProviderExtension+ClientInterface.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift index bc66d57f4bc1d..d32464f017cc4 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift @@ -99,7 +99,7 @@ extension FileProviderExtension: NSFileProviderServicing { userId: newNcAccount.username, password: newNcAccount.password, urlBase: newNcAccount.serverUrl, - userAgent: "Nextcloud-macOS/FileProviderExt", + userAgent: "IONOS HiDrive Next/FileProviderExt", nextcloudVersion: 25, delegate: nil) // TODO: add delegate methods for self From 703943e513efad921a5e4ff2181d8ad7472dccaa Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Thu, 10 Apr 2025 15:23:31 +0200 Subject: [PATCH 100/104] SES-356 use our sparkle key --- cmake/modules/MacOSXBundleInfo.plist.in | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cmake/modules/MacOSXBundleInfo.plist.in b/cmake/modules/MacOSXBundleInfo.plist.in index 8327c22976671..ba9916d942c22 100644 --- a/cmake/modules/MacOSXBundleInfo.plist.in +++ b/cmake/modules/MacOSXBundleInfo.plist.in @@ -36,10 +36,8 @@ SUShowReleaseNotes - SUPublicDSAKeyFile - dsa_pub.pem SUPublicEDKey - c3RcfDWDayvsYSZW8FhZN1UOJhvPVN30zleb4zOqbtU= + FQ8Dq6AiSDDv4XpnyJ3b6mQBFYLPKgj9ziEg/+VNGHg= UTExportedTypeDeclarations From 113cbdab7589710833441ad11d4eb3a424221998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Thu, 10 Apr 2025 16:41:54 +0200 Subject: [PATCH 101/104] SES-356 removed spaces --- .../FileProviderExt/FileProviderExtension+ClientInterface.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift index d32464f017cc4..dacfa2fec308f 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift @@ -99,7 +99,7 @@ extension FileProviderExtension: NSFileProviderServicing { userId: newNcAccount.username, password: newNcAccount.password, urlBase: newNcAccount.serverUrl, - userAgent: "IONOS HiDrive Next/FileProviderExt", + userAgent: "IONOS-HiDrive-Next/FileProviderExt", nextcloudVersion: 25, delegate: nil) // TODO: add delegate methods for self From 3ed76a2a894711f3eb32fdbae428483628df06c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 15 Apr 2025 13:25:02 +0200 Subject: [PATCH 102/104] SES-356 added user agent also for FileProviderUIExt --- .../FileProviderExtension+ClientInterface.swift | 2 +- .../FileProviderUIExt/ShareTableViewDataSource.swift | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift index dacfa2fec308f..d32464f017cc4 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift @@ -99,7 +99,7 @@ extension FileProviderExtension: NSFileProviderServicing { userId: newNcAccount.username, password: newNcAccount.password, urlBase: newNcAccount.serverUrl, - userAgent: "IONOS-HiDrive-Next/FileProviderExt", + userAgent: "IONOS HiDrive Next/FileProviderExt", nextcloudVersion: 25, delegate: nil) // TODO: add delegate methods for self diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareTableViewDataSource.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareTableViewDataSource.swift index 3cca1d1a9df51..7836b218da177 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareTableViewDataSource.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareTableViewDataSource.swift @@ -44,7 +44,8 @@ class ShareTableViewDataSource: NSObject, NSTableViewDataSource, NSTableViewDele user: account.username, userId: account.username, password: account.password, - urlBase: account.serverUrl + urlBase: account.serverUrl, + userAgent: "IONOS HiDrive Next/FileProviderUIExt", ) } } From 28739175a319a617b4bc8da7019c54d6ba94e975 Mon Sep 17 00:00:00 2001 From: Emil Bohleber Date: Wed, 16 Apr 2025 13:44:02 +0200 Subject: [PATCH 103/104] SES-356 adds user agent also for FileProviderUIExt, but better --- .../FileProviderUIExt/ShareTableViewDataSource.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareTableViewDataSource.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareTableViewDataSource.swift index 7836b218da177..b72c1d77614e4 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareTableViewDataSource.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareTableViewDataSource.swift @@ -46,6 +46,8 @@ class ShareTableViewDataSource: NSObject, NSTableViewDataSource, NSTableViewDele password: account.password, urlBase: account.serverUrl, userAgent: "IONOS HiDrive Next/FileProviderUIExt", + nextcloudVersion: 25, + delegate: nil ) } } From bfd305ec80392ecfc32e0fa8b4676860527e1810 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20H=C3=A4tty?= Date: Tue, 13 May 2025 07:33:57 +0200 Subject: [PATCH 104/104] NoIssue - Fixed Casing --- theme.qrc.in | 2 +- theme/Style/Style.qml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/theme.qrc.in b/theme.qrc.in index 00258fccb01cf..a4221ac7caa0e 100644 --- a/theme.qrc.in +++ b/theme.qrc.in @@ -240,7 +240,7 @@ theme/call-notification.wav theme/more-apps.svg theme/talk-app.svg - theme/ses/ses-IONOS-Logo.svg + theme/ses/ses-IONOS-logo.svg theme/colored/IONOS_logo_w_suffix_frontend.png theme/colored/IONOS_logo_w_suffix_frontend@2x.png theme/colored/IONOS_logo_w_suffix_frontend.svg diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index c35b45fe793cb..749843185ce51 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -206,7 +206,7 @@ QtObject { // SES readonly property string sesWebsiteIcon: "qrc:///client/theme/ses/ses-website.svg" readonly property string sesFolderIcon: "qrc:///client/theme/ses/ses-folderIcon.svg" - readonly property string sesIonosLogoIcon: "qrc:///client/theme/ses/ses-IONOS-Logo.svg" + readonly property string sesIonosLogoIcon: "qrc:///client/theme/ses/ses-IONOS-logo.svg" readonly property string sesAvatar: "qrc:///client/theme/ses/ses-settingsAvatar.svg"